寫在前面
我知道IQ-tree已經(jīng)有很長(zhǎng)一段時(shí)間了揪罕。不過我一直并沒有使用它记餐。主要原因是译隘,常用的快速構(gòu)建ML樹的軟件是FastTree,如果要求準(zhǔn)確梆造,我會(huì)在服務(wù)器上使用RaxML缴守。所以是用不到。不過镇辉,使用IQ-tree可能最大的好處是屡穗,他支持直接估算替代模型。確實(shí)會(huì)省事許多忽肛。由于最近相對(duì)有多一點(diǎn)時(shí)間村砂,那么我就查閱并記錄一下IQ-tree的文檔。
程序下載位置
IQ-tree官方現(xiàn)在似乎只提供多線程版本....
http://www.iqtree.org/#download
如果你趕時(shí)間屹逛,那么直接翻到最后础废。
簡(jiǎn)單構(gòu)建進(jìn)化樹
iqtree -s example.phy
其中-s
參數(shù)跟的是輸入的多序列比對(duì)結(jié)果。運(yùn)行這個(gè)命令會(huì)產(chǎn)生兩個(gè)輸出文件
example.phy.iqtree
記錄相對(duì)具體的進(jìn)化樹構(gòu)建信息罕模。
example.phy.treefile
記錄構(gòu)建成的進(jìn)化樹的newick文本评腺,這個(gè)應(yīng)該是最重要的輸出文件
example.phy.log
主要用于給軟件作者debug。
作者在文檔里提到
從版本1.5.4開始淑掌,默認(rèn)自動(dòng)估算最優(yōu)替代模型
這是一個(gè)非常機(jī)智的操作....
IQ-tree運(yùn)行過程會(huì)保存每一步成功運(yùn)行的結(jié)果蒿讥,或者說他是運(yùn)行中斷并從斷點(diǎn)重新開始的。這個(gè)對(duì)于大數(shù)據(jù)集是有很大好處的抛腕。不過有時(shí)候芋绸,我們就是想從頭開始,那么需要加上參數(shù)-redo
担敌。
iqtree -s example.phy -redo
默認(rèn)情況下IQ-tree的輸出文件名字以輸入的alignment文件為前綴摔敛。我們可以對(duì)其進(jìn)行修改,使用-pre
參數(shù)
iqtree -s example.phy -pre myprefix
不過事實(shí)上柄错,我覺得完全沒必要舷夺。除非你要不斷的調(diào)整建樹的參數(shù)苦酱。
選擇合適的替代模型
IQ-tree支持多種不同輸入數(shù)據(jù)的替代模型選擇售貌,包括
- DNA
- protein
- codon
- binary
- morphological
通過設(shè)置參數(shù)-m MFP
使其自動(dòng)測(cè)試并選擇最優(yōu)替代模型
iqtree -s example.phy -m MFP
這個(gè)參數(shù)其實(shí)已經(jīng)可以不用給了给猾,上述說過,會(huì)默認(rèn)執(zhí)行颂跨。
一旦執(zhí)行最優(yōu)替代模型的預(yù)測(cè)敢伸,那么就會(huì)多輸出一個(gè)文件,
example.phy.model
記錄了所有模型的似然信息恒削。
事實(shí)上池颈,最優(yōu)替代模型的信息會(huì)記錄 example.phy.iqtree
中。如果是完全相同的多序列比對(duì)結(jié)果钓丰,那么最優(yōu)替代模型也是相同的躯砰。如果并沒有改變過,那么完全可以指定替代模型携丁,比如已知最優(yōu)替代模型為TIM2+I+G
琢歇。那么可以執(zhí)行下述命令
iqtree -s example.phy -m TIM2+I+G
當(dāng)然,有時(shí)候梦鉴,你只是想看看最優(yōu)替代模型是啥李茫,而不想構(gòu)建進(jìn)化樹,畢竟后者相對(duì)耗時(shí)肥橙。那么可以執(zhí)行
iqtree -s example.phy -m MF
如果計(jì)算資源允許魄宏,那么最好的方式是增加參數(shù)-mtree
,這樣會(huì)檢查所有可用模型
iqtree -s example.phy -m MF -mtree
如果你的輸入數(shù)據(jù)是SNP數(shù)據(jù)存筏,那么需要加上+ASC
iqtree -s SNP_data.phy -m MFP+ASC
當(dāng)然宠互,基于傳言和個(gè)人經(jīng)驗(yàn),在SNP數(shù)據(jù)上椭坚,似乎NJ法的表現(xiàn)就是由于ML法予跌。
使用超快bootstrap法評(píng)估分支支持度
真實(shí)的進(jìn)化信息只有一個(gè),而我們總是拿著有限的序列信息藕溅,希望去獲得他匕得。能否獲得他,是一個(gè)問題巾表。而我們使用的序列信息是否能真實(shí)且穩(wěn)定地反應(yīng)一個(gè)進(jìn)化信息汁掠,那么是另外一個(gè)事情。bootstrap法常用的集币,尤其是ML法構(gòu)建進(jìn)化樹上考阱,分支可靠性檢驗(yàn)方法。但是這個(gè)計(jì)算邏輯最大的問題在于鞠苟,抽樣重新跑乞榨,抽樣再重新跑秽之,不斷重復(fù),直到收斂或者是到指定的比如1000次吃既。計(jì)算量大考榨,耗時(shí)長(zhǎng)。IQ-tree的作者團(tuán)隊(duì)在前述提出了一個(gè)快速的BS方法鹦倚,最后整合到IQ-tree中河质。使用的方式是
iqtree -s example.phy -m TIM2+I+G -bb 1000
注意到:
-
-m TIM2+I+G
是因?yàn)橐呀?jīng)指定了替代模型 -
-bb 1000
指定了要用快速BS法做1000次
在這些參數(shù)下,輸出文件example.phy.iqtree
中會(huì)增加一個(gè)MAXIMUM LIKELIHOOD TREE
部分震叙,其中記錄了具體BS結(jié)果掀鹅。對(duì)應(yīng)的newick文本則可以在example.phy.treefile
中找到。
此外媒楼,會(huì)增加三個(gè)輸出文件
-
example.phy.contree
記錄了一致樹乐尊,我個(gè)人認(rèn)為這個(gè)用處不到,事實(shí)上划址,一致樹我覺得主要是好看.... -
example.phy.splits
.... -
example.phy.splits.nex
... 與第2個(gè)文件具體信息類同
作者提醒到
快速BS法的具體解讀與常規(guī)的BS法有不同扔嵌,用戶需要知曉。
我個(gè)人事實(shí)上在很早的時(shí)候猴鲫,其實(shí)試過IQ-tree对人,但是兩三套數(shù)據(jù)下來,自認(rèn)為其表現(xiàn)不如RaxML拂共,于是沒有使用牺弄。作者在文檔中提到,模型沖突的情況下宜狐,快速BS會(huì)高估BS值势告,推薦加上參數(shù)-bnni
。于是抚恒,命令是
iqtree -s example.phy -m TIM2+I+G -bb 1000 -bnni
當(dāng)然咱台,作者仍然提供正常的BS參數(shù),也就是不要-bb
俭驮,而只用-b
回溺。或許我們不趕時(shí)間的情況下混萝,可以使用
iqtree -s example.phy -m TIM2+I+G -b 100
此外遗遵,IQ-tree還支持其他的支持度估算方法
SH-like
iqtree -s example.phy -m TIM2+I+G -alrt 1000
你甚至可以同時(shí)進(jìn)行兩種分支支持度的計(jì)算,
iqtree -s example.phy -m TIM2+I+G -alrt 1000 -bb 1000
嗯逸嘀,作為一個(gè)基本不怎么做進(jìn)化分析的车要,我似乎覺得有BS就足夠了,畢竟這個(gè)似乎才是最多人care的崭倘。
使用多線程
Emm... 我以為iqtree本身是直接支持多線程翼岁,但是似乎從文檔來看类垫,是需要另外的一個(gè)iqtree版本,iqtree-omp
琅坡。
iqtree -omp -s example.phy -m TIM2+I+G -nt 2
注意到悉患,只有在長(zhǎng)的比對(duì)結(jié)果下,使用多線程才會(huì)更有效脑蠕。最好的方式是讓IQtree自行定奪
iqtree -omp -s example.phy -m TIM2+I+G -nt AUTO
不過目前應(yīng)該是官方就有編譯的支持多線程的购撼。
寫在后面
總結(jié)跪削,使用IQ-tree構(gòu)建進(jìn)化樹的一步法谴仙,可能是
iqtree -s example.phy -m MFP -bb 1000 -bnni -redo
最后查看結(jié)果文件example.phy.treefile
。
如果你擔(dān)心快速BS效果不好碾盐,那么考慮使用
iqtree -s example.phy -m MFP -b 1000 -redo
如果你的序列足夠長(zhǎng)晃跺,那么文檔建議增加-cmax,默認(rèn)是10毫玖,這主要是計(jì)算資源的問題掀虎。
iqtree -s example.phy -m MFP -bb 1000 -bnni -cmax 15 -redo
當(dāng)然,很多時(shí)候是需要增加多線程支持參數(shù)付枫,如下
iqtree -s example.phy -m MFP -bb 1000 -bnni -nt AUTO -cmax 15 -redo
# 或者
iqtree -s example.phy -m MFP -b 1000 -nt AUTO -cmax 15 -redo