PhyML31使用手册

前言PhyML是一款ML法建树的老牌软件,相比RaxML针对核苷酸替换模型只支持GTR模型而言,PhyML在支持的核苷酸模型上可谓是比较多(因为可以自定义模型),本文重点介绍PhyML单线程版本的使用及各参数含义,掌握了单线程版本的使用,多线程版本就变得轻而易举了。

注意:PhyML3.1和3.3有点不同,后面会提到,本文以3.1版本示例。

参考文献:《P h y M L - M a n u a l》PhyML-3.1_manual.pdf

一.建树前先选进化模型

1.jmodeltest(核苷酸)/prottest(氨基酸)

假定我们的数据是核苷酸序列,并通过jmodeltest依照AICc标准计算得到的最佳模型如下:

2.上述结果解读

核苷酸替换模型TrNef

替换模型代号010020

变异速率模型Gamma(G)

R(a)即Rate [AC];R(b)即Rate [AG];R(c)即Rate [AT];R(d)即Rate [CG];R(e)即Rate [CT];R(f)即Rate [GT]

Gamma变异速率的shape值(或叫alpha值):0.2900

这里需要注意的是,在不同软件里,模型的名字有时会不一样,但是其实是同一个模型,需要互相比对不同软件里的模型叫法,最好的方法是去了解该模型的“别称”,然后读你所使用的建树软件的说明书,找到对应模型的代号。

二.PhyML参数设置

1.如何定义外群(outgroup)

在需要设定为外群的序列的名称后面加上符号“*”,软件会将它自动设定为外群序列。

2.输入文件

运行PhyML后,输入序列文件(.phylip格式的文件)所在的路径。

3. 按“Enter”键进入参数设置

4.首先进入的是第一页的参数设置

这一页我们常需要调节的是序列的类型排列方式,默认是DNA和交叉式(interleaved)排列。本文示例由于我使用的数据是顺序排列式(sequential),故需要进行调整。

调整的方法为在鼠标光标处输入参数前[ ]里的字母(大小写都行),如下:

之后按回车键,可见[I]部分的参数改变了,会发现[I]项后的interleaved变为sequential。

5.输入“+”进入下一页

同样再按回车键,第二页参数如下:

(1)设置进化模型

由于我们示例数据的最佳替换模型是TrNef,我们通过多次在鼠标光标处输入“M”再按“回车键”不断调整模型,会发现没有我们想要的TrNef模型。因为PhyML默认的模型只有HKY85、F84、TN93和GTR,其他的需要我们手动输入。怎么手动设置替换模型?

在光标处不断输入M,直到转换模型为Custom,如下图:

在光标处输入K(设置[K]项,即模型设置

按回车键后会出现下面:

模型代号输入完毕后,再按回车键,进入模型的参数设置

根据给出的提示,依次输入上述jmodeltest测得的三个Rate值(每输一个按一次回车键)

输入结束后按回车键,如下:

(2)设置Gamma

注意,本文中的示例数据因为通过jmodeltest测得变异速率为Gamma,所以才进行Gamma的设置,如果没有则将[G]后的参数设置为no。

(3)设置Gamma的shape(alpha)值

同样,只有当你的数据测得为Gamma变异速率时,才进行shape的设置(请注意这句话)。

光标处输入“a”,按回车键

选择“N”

输入alpha值

关于[C]选项“Number of substitution rate categories”(nCat值)的确定,请参考我的另外一篇文章“Mybayes使用要点”这里不再重复。

6.再次输入“+”进入下一页

这一页的参数基本不需要调节,如果为了追求准确性,可以输入“s”将[S]后的参数设置为Best of NNI and SPR,需要注意的是,后期软件运行速度也会变慢。

同样,按“+”进入下一页。

7.最后一页的参数设置

(1)光标输入处输入b,可设置分析的bootstrap值,一般设置为1000.

此时你会发现[A]选择自动设置为no,需要注意的是[B]和[A]两者只能选择一种。

如果你需要选择[A],可以通过在光标处输入a来进行调节。

8.开始运行

(1)所以参数设置完毕后,光标处输入y,开始构建ML树。

(2) 最终结果生成4个文件,其中cesi_zzj.phy_phyml_tree.txt是最终的最佳ML树,文件cesi_zzj.phy_phyml_stats.txt是运行的日志记录。

二.多线程运行PhyML3.1(适合服务器linux系统)

1.最简单的代码示例

需要注意的是,先要进入phyml执行程序所在的目录,再在命令终端敲代码。

上图这条代码意思是:以2个线程运行phyml,并设置自举值为100,其他所有参数选择默认值。

bootstrap replicates的数量必须是mpirun命令所需CPU数量的倍数。

2.各参数速查

注意:下面这些参数对于单线程版Phyml同样适用,意思是单线程版本的Phyml也可以不按照上面的一步步输入参数,可以像使用多线程版本一样用一条命令代码一次性搞定。

注:以下所有图片点击放大更清晰。

特别注意事项:PhyML版本3.0和版本3.1无法构建祖先序列, 即--ancestral这个参数选项无法用。输出的树文件有自举值。

PhyML版本3.3可以构建祖先序列,但是输出的树文件没有自举值,这是该版本最大的bug。

以上笔者已经亲自调试过,希望大家不要再踩坑。

故推荐使用phyml3.1,软件压缩包见下:(windows版本+linux版本)

PhyML-3.1.zip

服务器多线程运行phyml3.1调用命令示例:(前提是服务器有安装mpi程序)

$mpirun-np 10./PhyML-3.1_linux64-i /home/gong/桌面/zzj.phy-q-m GTR-b 1000-a 0.4110-s SPR --rand_start 5--print_site_lnl --print_trace

服务器单线程运行phyml3.1调用命令示例:

$./PhyML-3.1_linux64-i /home/gong/桌面/zzj.phy-q-m GTR-b 1000-a 0.4110-s SPR --rand_start 5--print_site_lnl --print_trace

这些参数的含义上面图片都有,不再复述,比如模型以及GAMMA的alpha值等取决于你的序列。

另外附上phyml版本3.3的linux版本包:

phyml3.3-master.zip

如果你想预测你的这些序列的祖先序列,这个版本还是用得到的。

转载请注明出处,如有错误欢迎您及时反馈,一起交流学习。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190914A067F800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券