步驟一:數據清洗
將ID重復的進行篩除,經過初步計算進化速率為0.9E-3,將同年序列差異<=3的進行隨機篩選,保留一個。最后得到147條VP7序列。我為啥做這一步,我在N多文獻里就看到個MERS的做了一點這個。其實我想想也可以不做,計算資源夠也沒關系吧。
步驟二:了解一些基礎知識
進化模型:
基于距離有:
? UPGMA(類平均法)
? ME(Minimum Evolution,最小進化法)
? NJ(Neighbor-Joining,鄰接法)
基于特征有:
? MP(Maximum parsimony,最大簡約法,認為進化歷程中發生堿基替代次數最少的系統發育樹為最優樹)
? ML(Maximum likelihood,最大似然法,基于堿基替代模型,認為似然值最大的系統發育樹為最優樹)
? Bayesian Inference (BI,貝葉斯方法,在馬爾可夫鏈(Monte Carlo MarkoChain, MCMC)中取樣,選取出現頻率最高的系統發育樹為最優樹;BI法通過后驗概率(posterior probability, PP)來評估拓撲結構的可靠性,一般PP > 95%的分支可信度較高)
而ML、BI對堿基/氨基酸替代模型敏感,需要對堿基替代模型做評估。通過modelfinder(iqtree內置)、jModeltest2測試,通過似然率(LRT)檢驗、BIC、AIC、DT指標篩選模型。最終選擇GTR+I+G4。
其實各個模型的差異也就那么幾個地方:堿基替代頻率是否相等、堿基出現的概率是否相等、transition rate (alpha) 、transversion rate (beta)、(PAUP* rate classification)等。有文獻表明,模型選擇這一步可以不做,直接上GTR+G+I,或者其他模型,最后得出的差異很小的 [Model selection may not be a mandatory step for phylogeny reconstruction]。我可太謝謝這個文章了,因為前期在模型選擇上費了好多時間,整理模型之間的差異。所以最后直接選擇GTR+I+G和HKY+I+G。因為看到很多文獻也蠻喜歡用這2個的,還有用JC的。但沒有太多文獻具體說明為啥選擇這個模型,最多就是說經過jmodeltest篩出BIC最小的。
步驟三:配置文件
BEAST是用的比較多的一個軟件,先要配置好xml文件,其實就是模型標記文件(我記得python的pickle包存模型也是這個格式,于是我測試下是否pickle也識別,哈哈哈,當然不能啦!笨笨笨!)。BEAST是一個軟件集,先用BEAUTi進行配置。將比對好的fa文件拖入:
Tips選項,可以把時間自動識別。因為我的ID最末是時間,根據自己的格式處理:
Sites選項:這個其實就是位點的意思,每一個堿基/氨基酸:替代模型我這選擇的GTR,base freq選擇est、G4、codon那選擇的(1+2),3? 。因為密碼子的第三個堿基相對前2個變化要大。可以設置為off、1,2,3看看xml文件里是怎么描述模型的:
Trees選項:種群增長模型,我選擇的貝葉斯天際線BS????
clocks 選項:看你想用什么分子鐘,我選擇的嚴格分子鐘。如何判斷自己的數據適合寬松的分子鐘還是嚴格的分子鐘?(此處復制From高芳鑾教授QQ空間日志教程)
方法一:可以先用uncorrelated relaxed lognormal clock配合默認參數配置個xml文件,MCMC鏈長不需要很大,運行結束后,將xx.log文件通過Tracer導入查看coefficientOfVariation(或ucld.stdev)值,如果該值接近0,說明數據適合嚴格分子鐘,反之說明數據適合寬松分子鐘。
方法二:通過貝葉斯因子法(Bayes Factor, BF)來比較分子鐘模型和樹先驗(tree prior)模型之間的組合的邊際似然值(Marginal Likelihood),通過BF法分析后,哪個模型對應的LnL值越大,相對更優,此方法既可以確定分子鐘模型,也可以用于確定哪種樹先驗模型更加適合自己的數據。具體也可以通過以下操作來確定:在Tracer 中同時導入兩個模型的xx.log 文件,選中所有要比較的模型后,依次點擊菜單Analysis--->Model Comparation,Analysistype改為Harmonic mean,Reps=100,最后根據獲得的BF值(BF=Pr(D|M1)/Pr(D|M2)至少大于3,則說明M1>M2)范圍判斷模型間的優劣程度。
?方法三(更新):?同樣是采用比較分子鐘模型和樹先驗(tree prior)模型之間的組合的邊際似然值(Marginal Likelihood),但是不使用BF法,而是采用path sampling(路徑采樣)分析,相比BF法,path sampling更加精準。(參考文獻:Improving the accuracy of demographic and molecular clock model comparison while accommodating phylogenetic uncertainty)。
priors 選項:我理解的就是對模型初始的分布函數進行設置,比如函數形狀、mean、sd等。主要是對你前面進行設置的做模型先驗函數預估。
MCMC選項:length of chain ,看資料說是不小于1000*序列數**2。我是147條,我直接設置的200000000,跑了我一天,ESS全部>200,開森!因為前面有設置小一點,有group的ESS<200。所以遇到有的參數不收斂的時候,可以嘗試把chain長度設置大一點!另外的參數自己看字面也能理解,不多說。
r然后生成xml文件。再丟到服務器上,跑beast。
one thousand years later......
得到了以下4個文件:待tree是樹文件啦,自己找個軟件/包去美化下,工具很多,在線的也有:
把log文件拖到tracer里看看:可以看到進化速率mean值是1.0021E-3/site/year。跟我看的文獻里的差不多。
當然,除了BEAST還有iqtree、MEGA都可以做。文獻里基本是這幾個。iqtree采用極大似然法構建進化樹,很快,但我為了準確,-b 1000,然后從昨天跑到我現在寫這個文章還沒跑完。有manual,可以看看,反正我的命令是:/project/baowenjuan/APP/iqtree/iqtree-1.6.12-Linux/bin/iqtree -s merged_seq_y.mafft.fa -pre iqtree_K3PuFG4_RV -b 1000 -nt AUTO -m K3Pu+F+G4 (這里的模型是iqtree前期評估的最優模型)
jModelTest對模型評估以及構建進化樹,自行看manual,都不難。我的命令是:java -jar /project/baowenjuan/APP/jmodeltest-2.1.10/jModelTest.jar -d merged_seq_ymafft.nex -f -g 4 -AIC -AICc -BIC -DT -i -s 11 -a -w -p >jModelTest.o
結果里有它自己根據BIC值選擇的模型構建的進化樹。
一個禮拜,從0走到現在,一套流程走完啦。具體發現了什么,就需要后續的分析啦!
PS. 今年流年不利,幾個項目被砍。腫瘤玩厭了,又搞早篩,現在又“被迫”琢磨了病毒進化。所以接下來我要玩啥呢?逼著我變全能嗎?我不想啊,我想專一一點,我想往大數據、建模方向發展呢!加油!