談?wù)摰街毕低椿蚍治龅臅r候,大部分教程都是介紹OrthoMCL,這是2003年發(fā)表的一個工具,目前的引用次數(shù)已經(jīng)達到了3000多,但這個軟件似乎在2013年之后就不在更新,而且安裝時還需要用到MySQL(GitHub上有人嘗試從MySQL轉(zhuǎn)到sqlite)。
而OrthoFinder則是2015年出現(xiàn)的軟件,目前已有400多引用。該軟件持續(xù)更新,安裝更加友好,因此我決定使用它來做直系同源基因的相關(guān)分析。
OrthoFinder能做什么?
OrthoFinder: solving fundamental biases in whole genome comparisons dramatically improves orthogroup inference accuracy提到,它的優(yōu)點就是比其他的直系同源基因組的推斷軟件準確,并且速度還快。
此外他還能分析所提供物種的系統(tǒng)發(fā)育樹,將基因樹中的基因重復事件映射到物種樹的分支上,還提供了一些比較基因組學中的統(tǒng)計結(jié)果。
OrthoFinder的分析過程
OrthoFinder的分析過程分為如下幾步:
- BLAST all-vs-all搜索。使用BLASTP以evalue=10e-3進行搜索,尋找潛在的同源基因。(除了BLAST, 還可以選擇DIAMOND和MMSeq2)
- 基于基因長度和系統(tǒng)發(fā)育距離對BLAST bit得分進行標準化。
- 使用RBNHs確定同源組序列性相似度的閾值
- 構(gòu)建直系同源組圖(orthogroup graph),用作MCL的輸入
- 使用MCL對基因進行聚類,劃分直系同源組
OrthoFinder2在OrthoFinder的基礎(chǔ)上增加了物種系統(tǒng)發(fā)育樹的構(gòu)建,流程如下
- 為每個直系同源組構(gòu)建基因系統(tǒng)發(fā)育樹
- 使用STAG算法從無根基因樹上構(gòu)建無根物種樹
- 使用STRIDE算法構(gòu)建有根物種樹
- 有根物種樹進一步輔助構(gòu)建有根基因樹
基于Duplication-Loss-Coalescent 模型,有根基因樹可以用來推斷物種形成和基因復制事件,最后記錄在統(tǒng)計信息中。
軟件使用
在解壓縮的OrthoFinder文件目錄下(安裝見最后)有一個 ExampleData
, 里面就是用于測試的數(shù)據(jù)集。
orthofinder -f ExampleData -S mmseqs
# -f 指定文件夾
# -S 指定序列搜索程序,有blast, mmseqs, blast_gz, diamond可用
OrthoFinder的基本使用就是如此簡單,而且最終效果也基本符合需求。
如果你想根據(jù)多序列聯(lián)配(MSA)結(jié)果按照極大似然法構(gòu)建系統(tǒng)發(fā)育樹,那么你需要加上-M msa
。這樣結(jié)果會更加準確,但是代價就是運行時間會更久,這是因為OrthoFinder
要做10,000 - 20,000個基因樹的推斷。
OrthoFinder默認用mafft進行多序列聯(lián)配,用fasttree進行進化樹推斷。多序列聯(lián)配軟件還支持muscle, 進化樹推斷軟件還支持iqtree, raxml-ng, raxml。例如參數(shù)可以設(shè)置為-M msa -A mafft -T raxml
.
并行化參數(shù): -t
參數(shù)指定序列搜索時的線程數(shù),-a
指的是序列搜索后分析的CPU數(shù)。
軟件細節(jié)
OrthoFinder提供了config.json
可以調(diào)整不同軟件的參數(shù),如下是BLASTP。
OrthoFinder默認使用DendroBLAST
發(fā)育樹,也就是根據(jù)序列相似度推斷進化關(guān)系。這是作者推薦的方法,在損失部分準確性的前提下提高了運算效率。當然你可以用-M msa
從多序列比對的基礎(chǔ)上進行基因樹構(gòu)建。如果你先用了默認的DendroBLAST
,想測試下傳統(tǒng)的MSA方法,那么也不需要重頭運行,因為有一個-b
參數(shù)可以在復用之前的比對結(jié)果。
在物種發(fā)育樹的推斷上,OrthoFinder使用STAG算法,利用所有進行構(gòu)建系統(tǒng)發(fā)育樹,而非單拷貝基因。此外當使用MSA方法進行系統(tǒng)發(fā)育樹推斷時,OrthoFinder為了保證有足夠多的基因(大于100)用于分析,除了使用單拷貝基因外,還會挑選大部分是單拷貝基因的直系同源組。這些直系同源組的基因前后相連,用空缺字符表示缺失的基因,如果某一列存在多余50%的空缺字符,那么該列被剔除。最后基于用戶指定的建樹軟件進行系統(tǒng)發(fā)育樹構(gòu)建。結(jié)果在"WorkingDirectory/SpeciesTree_unrooted.txt"
使用STRIDE算法從無根樹中推斷出有根樹, 結(jié)果就是"SpeciesTree_rooted.txt".
結(jié)果文件
運行結(jié)束后,會在ExampleData
里多出一個文件夾,Results_Feb14
, 其中Feb14是我運行的日期
直系同源組相關(guān)結(jié)果文件,將不同的直系同源基因進行分組
- Orthogroups.csv:用制表符分隔的文件,每一行是直系同源基因組對應(yīng)的基因。
- Orthogroups.txt: 類似于Orthogroups.csv,只不過是OrhtoMCL的輸出格式
- Orthogroups_UnassignedGenes.csv: 格式同Orthogroups.csv,只不過是物種特異性的基因
- Orthogroups.GeneCount.csv:格式同Orthogroups.csv, 只不過不再是基因名信息,而是以基因數(shù)。
直系同源相關(guān)文件,分析每個直系同源基因組里的直系同源基因之間關(guān)系,結(jié)果會在Orthologues_Feb14
文件夾下,其中Feb14
是日期
- Gene_Trees: 每個直系同源基因基因組里的基因樹
- Recon_Gene_Trees:使用OrthoFinder duplication-loss coalescent 模型進行發(fā)育樹推斷
- Potential_Rooted_Species_Trees: 可能的有根物種樹
- SpeciesTree_rooted.txt: 從所有包含STAG支持的直系同源組推斷的STAG物種樹
- SpeciesTree_rooted_node_labels.txt: 同上,只不過多了一個標簽信息,用于解釋基因重復數(shù)據(jù)。
比較基因組學的相關(guān)結(jié)果文件:
- Orthogroups_SpeciesOverlaps.csv: 不同物種間的同源基因的交集
- SingleCopyOrthogroups.txt: 單基因拷貝組的編號
- Statistics_Overall.csv:總體統(tǒng)計信息
- Statistics_PerSpecies.csv:分物種統(tǒng)計信息
STAG是一種從所有基因推測物種樹的算法,不同于使用單拷貝的直系同源基因進行進化樹構(gòu)建。
一些重要概念:
- Species-specific orthogroup: 一個僅來源于一個物種的直系同源組
- Single-copy orthogroup: 在直系同源組中,每個物種里面只有一個基因。我們會用單拷貝直系同源組里的基因推斷物種樹以及其他數(shù)據(jù)分析。
- Unassigned gene: 無法和其他基因進行聚類的基因。
- G50和O50,指的是當你直系同源組按照基因數(shù)從大到小進行排列,然后累加,當加入某個組后,累計基因數(shù)大于50%的總基因數(shù),那么所需要的直系同源組的數(shù)目就是O50,該組的基因樹就是G50.
Orthogroups, Orthologs 和 Paralogs 這三個概念推薦看圖理解。
如何安裝?
最快的方法
OrthoFinder可以通過conda安裝,建議為它新建一個虛擬環(huán)境
conda create -n orthofinder orthofinder=2.2.7
如果你愿意折騰
你先得安裝它的三個依賴工具: MCL, FastME, DIAMOND/MMseqs2/BLAST+
MCL有兩種安裝方式,最簡單的就是用sudo pat-get install mcl
, 但是對于大部分人可能沒有root權(quán)限,因此這里用源代碼編譯。http://micans.org/mcl/
wget https://www.micans.org/mcl/src/mcl-latest.tar.gz
tar xf mcl-latest.tar.gz
cd mcl-14.137
./configure --prefix=~/opt/biosoft/mcl-14.137
make -j 20 && make install
之后是MMseqs2, 一個蛋白搜索和聚類工具集,相關(guān)文章發(fā)表在NBT, NC上。GitHub地址為https://github.com/soedinglab/MMseqs2
wget https://github.com/soedinglab/MMseqs2/releases/download/3-be8f6/MMseqs2-Linux-AVX2.tar.gz
tar xzf MMseqs2-Linux-AVX2.tar.gz
mv mmseqs2 ~/opt/biosoft/
最后安裝FastME, 這是一個基于距離的系統(tǒng)發(fā)育樹推斷軟件。在http://www.atgc-montpellier.fr/fastme/binaries.php下載,上傳到服務(wù)器
tar xf fastme-2.1.5.tar.gz
cd fastme-2.1.5
./configure --prefix=/opt/biosoft/fastme-2.1.5
make && make install
BLAST+可裝可不裝,推薦閱讀這或許是我寫的最全的BLAST教程
以上軟件安裝之后,都需要將其添加到環(huán)境變量中,才能被OrthoFinder調(diào)用。
之后在https://github.com/davidemms/OrthoFinder/releases 尋找最近的穩(wěn)定版本下載到本地,例如OrthoFinder v2.2.7
tar xzf OrthoFinder-2.2.7.tar.gz
OrthoFinder-2.2.7/orthofinder -h