MCScanX安裝與使用 (2022)

為什么要寫這篇文章:
最近因為需要用到MCScanX畫兩個物種的共線性點圖,但是發(fā)現(xiàn)搜到的blog中所提供的安裝方法都不太相同巍实,且在都會出現(xiàn)或多或少的問題轿钠,另外搜到的所有blog安裝鏈接http://chibba.pgml.uga.edu/mcscan2/MCScanX.zip其實都已經(jīng)不維護了剪芍。總體安裝的很艱難剪菱,所以想把自己的經(jīng)歷和大家分享一下摩瞎,以便其他人少走彎路。

下載安裝包以及需要的環(huán)境

需要我們自行下載并解壓安裝的主要有三個文件 Zlib庫文件孝常、libpng文件旗们、MCScanX以及一些依賴環(huán)境。

  • 依賴環(huán)境:
    以下依賴環(huán)境有的話就不用再裝了构灸,不知道有沒有的話可以試著輸入以下上渴,有的話會彈出用法。
    例如:

    (base) ght@DESKTOP-TU3M5B7:~$ makeblastdb  # 如果沒有的話會彈出安裝方法
    
    Command 'makeblastdb' not found, but can be installed with:
    sudo apt install ncbi-blast+
    
    (base) ght@DESKTOP-TU3M5B7:~$ makeblastdb  # 如果安裝了的話會彈出用法
    
    USAGE
        makeblastdb [-h] [-help] [-in input_file] [-input_type type]
        -dbtype molecule_type [-title database_title] [-parse_seqids]
        [-hash_index] [-mask_data mask_data_files] [-mask_id mask_algo_ids]
        [-mask_desc mask_algo_descriptions] [-gi_mask]
        [-gi_mask_name gi_based_mask_names] [-out database_name]
        [-blastdb_version version] [-max_file_sz number_of_bytes]
        [-logfile File_Name] [-taxid TaxID] [-taxid_map TaxIDMapFile] [-version]
    

    安裝以下環(huán)境:java喜颁、javac稠氮、blast、make半开。命令如下隔披,根據(jù)自己系統(tǒng)的情況選擇安裝哪一個:

    sudo apt update
    sudo apt upgrade # 這兩步比較玄學,但是還是建議升級一下
    sudo apt install openjdk-11-jre-headless # java
    sudo apt install openjdk-11-jdk-headless # javac
    sudo apt install ncbi-blast+ # blast
    sudo apt install make #  make
    
  • Zlib庫:
    建議先去官網(wǎng)看看現(xiàn)在的版本是什么稿茉,然后以官網(wǎng)的下載鏈接為準锹锰,這里代碼只做參考

    • 下載并解壓:
    wget http://www.zlib.net/zlib-1.2.12.tar.gz  # 下載Zlib
    tar -zxvf zlib-1.2.12.tar.gz  # 解壓
    cd zlib-1.2.12/ 
    
    • 安裝:
    ./configure
    make
    make install
    
  • libpng庫
    與Zlib類似,但是libpng依賴于Zlib漓库,所以需要先下載安裝Zlib恃慧。

    • 下載并解壓:
    wget https://cfhcable.dl.sourceforge.net/project/libpng/libpng16/1.6.37/libpng-1.6.37.tar.gz
    tar -zxvf libpng-1.6.37.tar.gz
    cd libpng-1.6.37/
    
    • 安裝:
    ./configure
    make
    make install
    

下載并安裝MCScanX

如上所述,MCScanX官網(wǎng)已經(jīng)不維護了渺蒿,但是可以從github上下載痢士。

  • 下載:
    wget https://codeload.github.com/wyp1125/MCScanX/zip/refs/heads/master
    unzip master 
    cd MCScanX-master # master解壓出來文件名是MCScanX-master
    
  • 安裝:
    由于現(xiàn)在大都是64位系統(tǒng),所以需要給以下三個文件msa.h,dissect_multiple_alignment.h, and detect_collinear_tandem_arrays.h添加庫文件:#include <unistd.h>茂装。我用的是vim
    vim msa.h  #然后把這三個頭問題就修改了
    
    make #然后安裝
    
  • 將MCScanX以及他的下游分析添加到環(huán)境變量:
    • MCScanX
    echo 'PATH=$PATH:~/yourPath/MCScanX-master/ ' >> ~/.bashrc  #此處的yourPath指你裝MCScanX的路徑
    
    
    MCScanX # 這樣就可以直接命令行調用MCScanX了
    
    • 下游分析程序
    export CLASSPATH='.:/yourPath/MCScanX-master/downstream_analyses'  # 將繪圖等需要的類添加至java的類路徑
    
    
    java dot_plotter -g os_sb.gff -s os_sb.collinearity -c dot.ctl -o dot.PNG  # 這樣就可以直接調用下游java分析程序了
    

舉例說明

我主要用MCScanX做共線分析并畫圖怠蹂,這里用我自己的流程作為示例。其他的我也不太會哈哈

  • 處理輸入文件:

    下載兩個物種的se.pep.faso.pep.fa文件少态,以及其se.gff3so.gff3文件城侧。但是MCScanX需要的gff文件與標準版的gff3文件有所區(qū)別,只有四列彼妻,分別是染色體名稱嫌佑、基因名、基因起始坐標侨歉、基因結束坐標屋摇,所以需要先進行處理。

    注意:染色體格式為sp_name1幽邓。

    sp_name  gene_name  starting_position  ending_position
    # gff文件的格式
    

    這是我處理gff3文件的python代碼炮温,大家可以參考:

    import os
    import pandas as pd
    
    def main(path):
        gff3_files = []
        files = os.listdir(path)
        for file in files:
            if file.split('.')[-1] == 'gff3':
                gff3_files.append(file)
        x = path
        for gff3_file in gff3_files:
            with open(x+gff3_file, "r") as file:
                temp = pd.read_csv(file, sep='\t',comment='#', header=None)
                # 只保留基因
                temp = temp.drop(temp[temp[2] != 'gene'].index)
                temp = temp[[0,8,3,4]]
                temp[8] = temp[8].map(lambda x: x.split(';')[0].split('=')[1])
                # 丟掉ups
                temp = temp.drop(temp[temp[0].str.contains('ups')].index)
                dataFrame = temp.drop(temp[temp[0].str.contains('unplaced-scaffold')].index)
                dataFrame = dataFrame.reset_index(drop = True)
                # 排序并輸出
                name = dataFrame.at[0, 0]
                number_index = 0
                for j in range(len(name) - 1, -1, -1):
                    if name[j].isdigit():
                        continue
                    else:
                        number_index = j + 1
                        break
                dataFrame[0] = dataFrame[0].map(lambda x: int(x[number_index:]))
    
                dataFrame = dataFrame.sort_values(by=[0, 3], ascending=[True, True])
                dataFrame[0] = dataFrame[0].map(lambda x: name[:number_index] + str(x))
                dataFrame.to_csv(x+gff3_file[:-1], header=None, index=None, sep='\t')
                # 最終有幾個gff3文件,就會生成幾個gff文件
    
    # 按間距中的綠色按鈕以運行腳本牵舵。
    if __name__ == '__main__':
        path = 'C/gff_file_path/'
        main(path)
    
  • blastp 比對

    makeblastdb -in se.pep.fa -dbtype prot -parse_seqids -out se.pep.db  # 因為我畫的是se和so之間的共線性點圖柒啤,所以使用se建庫倦挂,再和so進行比對。
    
    
    blastp -query so.pep.fa -db se.pep.db -out se_so.blast -evalue 1e-10 -num_threads 12 -outfmt 6 -num_alignments 5
    
  • 運行MCScanX
    運行MCScanX之前白修,我們需要將gff文件妒峦、blast文件放入同一個文件夾,且gff文件是兩個物種gff文件合并的gff兵睛。另外兩個文件的名字需要相同肯骇,我這里是se_so.gffse_so.blast

    MCScanX se_so
    

    得到三個文件:se_so.html祖很、se_so.collinearity笛丙、se_so.tandem

  • 繪制共線性點圖

    • 控制文件
      繪制共線性點圖需要dot.ctl文件假颇。文件格式為:
    800
    800
    so1,so2,so3,so4,so5,so6,so7,so8,so9,so10,so11
    se22,se21,se20,se19,se18,se17,se16,se15,se14,se13,se12,se11,se10,se9,se8,se7,se6,se5,se4,se3,se2,se1
    # 從上往下分別為X軸胚鸯、Y軸的像素大小,X軸笨鸡、Y軸染色體順序(染色體格式需要為物種名+條數(shù)姜钳,eg:so1 )
    
    • 繪圖命令:
    java dot_plotter -g se_so.gff -s se_so.collinearity -c dot.ctl -o dot.PNG
    
    dot.PNG

參考過的blog

基因組共線性工具MCScanX使用說明
生物信息學共線性分析軟件MCScanX的小白安裝教程
MCScanX ‖ 安裝、報錯解決方法及簡單使用
基因組共線性工具MCScanX使用說明

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末形耗,一起剝皮案震驚了整個濱河市哥桥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌激涤,老刑警劉巖拟糕,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異倦踢,居然都是意外死亡送滞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門辱挥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犁嗅,“玉大人,你說我怎么就攤上這事晤碘±⒂矗” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵哼蛆,是天一觀的道長。 經(jīng)常有香客問我霞赫,道長腮介,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任端衰,我火速辦了婚禮叠洗,結果婚禮上甘改,老公的妹妹穿的比我還像新娘。我一直安慰自己灭抑,他們只是感情好十艾,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著腾节,像睡著了一般忘嫉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上案腺,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天庆冕,我揣著相機與錄音,去河邊找鬼劈榨。 笑死访递,一個胖子當著我的面吹牛,可吹牛的內容都是我干的同辣。 我是一名探鬼主播链沼,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼敢订!你這毒婦竟也來了泄朴?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤陡舅,失蹤者是張志新(化名)和其女友劉穎抵乓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體靶衍,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡灾炭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了颅眶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜈出。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖涛酗,靈堂內的尸體忽然破棺而出铡原,到底是詐尸還是另有隱情,我是刑警寧澤商叹,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布燕刻,位于F島的核電站,受9級特大地震影響剖笙,放射性物質發(fā)生泄漏卵洗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一弥咪、第九天 我趴在偏房一處隱蔽的房頂上張望过蹂。 院中可真熱鬧十绑,春花似錦、人聲如沸酷勺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽脆诉。三九已至甚亭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間库说,已是汗流浹背狂鞋。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留潜的,地道東北人骚揍。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像啰挪,于是被迫代替她去往敵國和親信不。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容