OrthoMCL介紹
1. OrthoMCL的用途
基於序列的相似性,OrthoMCL能將一組proteins(比如全基因組的proteins)歸類到ortholog groups、in-paralogs groups和co-orthologs。
2. OrthoMCL-DB
OrthoMCL-DB包含了很多proteins,這些proteins來自一些已經完全測序的真核或原核生物的基因組。
OrthoMCL-DB將這些proteins進行了聚類,分成很多的ortholog groups。
2010.5.31,發布了OrthoMCL-DB第4版,包含 116,536個ortholog groups、1,270,853個proteins、88個真核生物基因組、16個古菌基因組、34個細菌基因組。
2011.5.31,發布了OrthoMCL-DB第5版,包含 124,740個ortholog groups、1,398,546 個proteins、150個基因組。
2013年末即將發布OrthoMCL-DB第6版。
3. OrthoMCL的兩種使用方法
1. OrthoMCL-DB的官網已經將數據中的proteins進行了ortholog的聚類,其網站提供了一個工具,用於接收上傳的基因組proteins,再將這些proteins group到相應的ortholog groups中。官網提供的工具Assign your proteins to OrthoMCL Groups用於進行分析。
2. 如果要對多個基因組的proteomes進行聚類,則可以使用OrthoMCL單機版的軟件來進行運算。其用法詳見:OrthoMCL的使用。
4. OrthoMCL算法
1. 將多個proteomes轉換成orthomcl兼容的FASTA文件。
2. 移除低質量的序列。
3. All-versus-All BLASTP with 1e-5 cutoff。即使用這些proteomes的protein sequences構建blast數據庫,再將所有的這些序列和數據庫進行BLASTP比對,取evalue小於1e-5的比對結果。
4. Filter by percent match length。計算比對結果的percent match length ( 所有hsp中比對上序列的長度之和 / 兩條序列中短的那條序列的長度 )。取50%的cutoff值。
5. 尋找不同物種間potential ortholog pairs(兩兩物種的protein序列相互是best hits);尋找同一物種內in-paralog pairs(相互之間是better hits,即對於2個序列之中的任意一條序列,和其in-paralog序列之間的evalue值 <= 這條序列和其它物種比對的evalue值).
6. 根據上一步結果尋找co-ortholog pairs(pairs connected by orhthology and in-paralog,並且pairs之間的evalue值低於1e-5).
7. 對所有的pairs進行E-values的Normalization,以利於下一步MCL的計算。見下一部分內容,或參考OrthoMCL Algorithm Document。
8. 將所有的ortholog,in-paralog和co-ortholog pairs,以及它們的標准化后的weight值輸入到MCL程序中,來進行聚類分群。MCL documentation
All-v-all BLAST
這一步你必須自己做BLAST,即:將你上一步得到的goodProteins.fasta進行多對多的blast,參數建議設置
-m 8 -F F -b 1000 -v 1000 -a 2
EXAMPLE:blastall -p blastp -i goodProteins.fasta -d goodProteins.fasta -m 8 -F F -b 1000 -v 1000 -a 2 -o all_VS_all.out.tab
這一步事實上為MCL提供相似矩陣
mcl
這一步開始對上一步給出的輸出文件,進行mcl操作,開始聚類
EXAMPLE: orthomclSoftware/bin/orthomclDumpPairsFile my_orthomcl_dir/orthomcl.config
輸出文件為mclOutput文件
EXAMPLE: mcl my_orthomcl_dir/mclInput --abc -I 1.5 -o my_orthomcl_dir/mclOutput
這里比較重要的參數是-I 具體看mcl文檔
第7步Blast,是整個過程中最關鍵的一步。有以下2點需要注意:
1. 數據庫中的蛋白質序列數量:在OrthoMCL DB中選取和要分析的物種親緣關系較近的幾個物種的基因組,或下載其它公布的基因組,加上要分析的物種的基因組;使用這些基因組總體的蛋白質序列來構建Blast數據庫。如果只是使用要分析的物種的蛋白質序列建數據庫,則inparalogs文件中成對的序列實際上是paralogs,數目比真正的inparalogs要多很多。使用所有的OrthoMCL DB中的序列,第5版含150個基因組,信息量太大,不使用幾百個核的超算或計算機集群去運行,是很不現實的。
2. 對數據庫中所有的蛋白質序列來使用blast比對到該數據庫中得到結果。如果只是對要分析的物種進行Blast,則只能得到inparalogs的信息,而沒有orthologs和coorthologs。
4 分析過程
4.1 輸入文件格式轉化
orthomcl的輸入文件為fasta格式的基因或蛋白序列,fasta文件的序列名稱要求以樣品名開頭之后接’|’分隔,之后接每個樣品的序列名(如例1),而且樣品名和序列名不能有重復。
命令:orthomclAdjustFasta程序,將fasta文件轉換出兼容orthomcl的fasta文件使用命令:(1)orthomclAdjustFasta A(B,ref) X1(X2,X3).fa 1,結果輸出為A(B,ref).fasta。(單個跑完再合並)。本文生成樣品A,B和參考序列ref為例,在compliantFasta文件夾中的序列文件名分別為:A.fa,b.fa,ref.fa。
例1:
>A|gene1
ASSRKSKWQFMGARDAGAKDELRQVYGVSERTESDGAANLIHKLRAINYTLAELGQWCAYKVGQSFLSAL
>B|contig1
KDELRQVYGVSERTESD
4.2 輸入文件合並過濾
使用命令:orthomclFilterFasta compliantFasta/ 10 20。允許的最短的protein長度是10,stop codons最大比例為20%;生成了兩個文件(2)goodProteins.fasta和poorProteins.fasta兩個文
4.3 全序列比對
將上一步的goodProteins.fasta序列進行自身的多序列比對,比對使用軟件為blast+,輸出結果為all.m8.anno。文件太大可以拆分比對,最后合並
/share/nas2/genome/bin//blastall -b 1000 -v 1000 -a 2 -p blastp -e 1e-5 -F F -d goodProteins.fasta -i goodProteins.fasta.div1/goodProteins.fasta.f2.106.seq -o /goodProteins.fasta.div1/goodProteins.fasta.f2.106.seq.blast -m 8
cat goodProteins.fasta.f2.*.seq.blast >(3)all_VS_all.out.tab 還可以去除重復(一列,二列)最后獲得 (4)all_VS_all.result
4.4 導入比對結果
將比對結果導入mysql數據庫,包含以下幾個步驟:
A. 將比對結果轉化為規定格式,命名為similarSequences.txt,命令為:(5)orthomclBlastParser all_VS_all.result seq > similarSequences.txt
B. 將similarSequences.txt導入到數據庫中,命令為:orthomclLoadBlast orthomcl.config.template similarSequences.txt
4.5 尋找paired蛋白
輸入為數據庫中的表SimilarSequences,和數據庫的空表InParalog, Ortholog, CoOrtholog tables;輸出為對這些空表的操作,命令為:orthomclPairs orthomcl.config.template orthomcl_pairs.log cleanup=no。
4.6 將數據從mysql導出
生成(6)mcllnput文件和pairs目錄。這個目錄包含三個文件:
ortholog.txt, coortholog.txt, inparalog.txt。
每一個文件有三列: proteinA, protein B, their normalized score (See the Orthomcl Algorithm Document)。
命令為:orthomclDumpPairsFiles orthomcl.config.template。
4.7 使用mcl對paired蛋白聚類
命令為:mcl mclInput --abc -I 1.5 -o (7) mclOutput。
4.8 對結果編號
命令為:orthomclMclToGroups gf 1 < mclOutput > (8)groups.txt。家族名為gf_1,gf_2,gf_3...,格式如圖2 。
論到直系同源基因分析的時候,大部分教程都是介紹OrthoMCL,這是2003年發表的一個工具,目前的引用次數已經達到了3000多,但這個軟件似乎在2013年之后就不在更新,而且安裝時還需要用到MySQL(GitHub上有人嘗試從MySQL轉到sqlite)。
而OrthoFinder則是2015年出現的軟件,目前已有400多引用。該軟件持續更新,安裝更加友好,因此我決定使用它來做直系同源基因的相關分析。
OrthoFinder: solving fundamental biases in whole genome comparisons dramatically improves orthogroup inference accuracy提到,它的優點就是比其他的直系同源基因組的推斷軟件准確,並且速度還快。
此外他還能分析所提供物種的系統發育樹,將基因樹中的基因重復事件映射到物種樹的分支上,還提供了一些比較基因組學中的統計結果。
OrthoFinder的分析過程
OrthoFinder的分析過程分為如下幾步:
- BLAST all-vs-all搜索。使用BLASTP以evalue=10e-3進行搜索,尋找潛在的同源基因。(除了BLAST, 還可以選擇DIAMOND和MMSeq2)
- 基於基因長度和系統發育距離對BLAST bit得分進行標准化。
- 使用RBNHs確定同源組序列性相似度的閾值
- 構建直系同源組圖(orthogroup graph),用作MCL的輸入
- 使用MCL對基因進行聚類,划分直系同源組
來源:
http://www.chenlianfu.com/?p=1839
https://orthomcl.org/orthomcl/?rm=proteomeUploadForm
https://www.jianshu.com/p/16e0bbb2ba19
https://blog.csdn.net/ych99ych99/article/details/17436367?utm_source=blogxgwz0