06进化树流程-分歧时间
1.构建常规的有根树
利用单拷贝基因的CDS,构建获得 newick格式的进化树,构建有根树
2.化石时间/生成phy文件
2.1 化石时间
获得fossil calibration time:
通过网站http://www.timetree.org/ ,该网站根据多篇文献支持提供两两物种间的分化时间,并给出置信度范围,单位是Mya(million years ago)。另外一个可以查询分化时间的网站是https://fossilcalibrations.org/ ,可以互相参考。
在已经构建好的树中添加化石时间,主要形式是 '>0.22<6.75','>'后接分化时间的最小值,'<'后接最大值,注意单位是100Mya
7 1
((((human, (chimpanzee, bonobo)) '>.06<.08', gorilla), (orangutan, sumatran)) '>.12<.16', gibbon);
(
(
(
(
(chimpanzee, bonobo)
,human
)'>.06<.08'
,gorilla
),
(orangutan, sumatran)
)'>.12<.16'
,gibbon
);
(chimpanzee, bonobo)) '>.06<.08', 表示human与这俩的分化时间
2.2 获取phy文件
perl -lane 'BEGIN{print "7 67364"};if(/>(.*)/){printf $1}else{print" $_"}' Single_gene_seq.aln > input.phy
7 67364为7个物种,比对后是65146个碱基,根据实际来更改
3.mcmctree运行
3.1 配置文件
cp /share/nas6/xul/project/chloroplast/GP-20200702-2068_henankejidaxue_nongxueyuan_2samples_zhiwu_yelvti/analysis1/28samples/ref/gene/phytree2/mcmctree.ctl ./
根据实际情况修改
* infile
seqfile = input.phy # 生成的phy文件
treefile = phytree.nwk # 修改的tree文件
* outfile
outfile = tmp1.out
mcmcfile = mcmc.txt
seqtype = 0 #数据类型;0,表示核酸数据;1,表示密码子比对数据;2,表示氨基酸数据。
ndata = 1 #设置输入的多序列比对的数据个数
usedata = 1 #设置是否利用多序列比对的数据:0,表示不使用多序列比对数据,则不会进行likelihood计算,虽然能得到mcmc树且计算速度飞快,但是其分歧时间结果是有问题的;1,表示使用多序列比对数据进行likelihood计算,正常进行MCMC,是一般使用的参数; 2,进行正常的approximation likelihood分析,此时不需要读取多序列比对数据,直接读取当前目录中的in.BV文件。该文件是使用usedata = 3参数生成的out.BV文件重命名而来的。
clock = 2 #设置分子钟方法:1,global clock方法,表示所有分支进化速率一致; 2,independent rates方法,各分支的进化速率独立且进化速率的对数log(r)符合正态分布; 3,correlated rates方法,和方法2类似,但是log(r)的方差和时间t相关。
RootAge = '<2' #设置root节点的分歧时间,一般设置一个最大值。
model = 4 #设置碱基替换模型:0,JC69;1,K80;2,F81;3,F84;4,HKY85。
noisy = 3
alpha = 0.5 #核酸序列中不同位点,其进化速率不一致,其变异速率服从GAMMA分布。一般设置GAMMA分布的alpha值为0.5。
ncatG = 5 #设置离散型GAMMA分布的categories值。
kappa_gamma = 6 2 #设置kappa(转换/颠换比率)的GAMMA分布参数。
alpha_gamma = 1 1 #设置GAMMA形状参数alpha的GAMMA分布参数.
rgene_gamma = 2 20 1 #设置序列中所所有位点平均[碱基/密码子/氨基酸]替换率的Dirichlet-GAMMA分布参数:alpha=2、beta=20、初始平均替换率为每100million年(取决于输入有根树文件中的时间单位)1个替换。若时间单位由100Myr变换为1Myr,则要设置成"2 2000 1"。
sigma2_gamma = 1 10 1 #设置所有位点进化速率取对数后方差(sigma的平方)的Dirichlet-GAMMA分布参数:alpha=1、beta=10、初始方差值为1。
print = 1 #设置打印mcmc的取样信息:
burnin = 20000 #将前20000次迭代burnin后,再进行取样(即打印出该次迭代计算的结果信息,各内部节点分歧时间、平均进化速率、sigma2值和各分支进化速率等)。
sampfreq = 2 #每10次迭代则取样一次。
nsample = 100000 #当取样次数达到该次数时,则取样结束(程序也将运行结束)。
finetune = 1: .1 .1 .1 .1 .1 .1 #冒号前的值设置是否自动进行finetune,一般设置成1,然后程序自动进行优化分析;
3.2 运行
/home/pub/biosoft/paml/paml-4.10.6/bin/mcmctree mcmctree.ctl
/share/nas6/zhouxy/biosoft/paml/4.9/bin/mcmctree mcmctree.ctl
比较耗时间的步骤主要在于取样的百分比进度:
第一列:取样的百分比进度。
第2~6列:参数的接受比例。一般,其值应该在30%左右。20~40%是很好的结果,15~70%是可以接受的范围。若这些值在开始时变动较大,则表示burnin数设置太小。
第7~x列:各内部节点的平均分歧时间,第7列则是root节点的平均分歧时间。若有y个物种,则总共有y-1个内部节点,从第7列开始后的y-1列对应这些内部节点。
倒数第3~x列:r_left值。若输入3各多序列比对结果,则有3列。x列的前一列是中划线 - 。
倒数第1~2列:likelihood值和时间消耗。
屏幕信息最后,给出各个内部节点的分歧时间(t)、平均变异速率(mu)、变异速率方差(sigma2)和r_left的Posterior信息:
均值(mean)、95%双侧置信区间(95% Equal-tail CI)和95% HPD置信区间(95% HPD CI)等信息。
此外,倒数第二列给出了各个内部节点的Posterior mean time信息,可以用于收敛分析。
在当前目录下,生成几个主要结果:
FigTree.tre 生成含有分歧时间的超度量树文件
mcmc.txt MCMC取样信息,包含各内部节点分歧时间、平均进化速率、sigma2值等信息,可以在Tracer软件中打开。
通过查看各参数的ESS值,若ESS值大于200,则从一定程度上表示MCMC过程能收敛,结果可靠。
out.txt 包含由较多信息的结果文件。例如,各碱基频率、节点命名信息、各节点分歧时间、进化速率和进化树等。
4.生成进化树图片
假设有根树为phytree.nwk,存在tmp1.out 文件
1.
sed -i '1d' phytree.nwk #删除phytree.nwk文件的第一行
cp phytree.nwk input.tree #替换tree里的名字
touch desc #生成一个名为desc的空文件
2.
perl /home/cp_basic/program/draw_time_tree.pl input.tree desc tmp1.out #测试环境中的程序位置,此命令会生成divtree.newick
perl /share/nas6/zhouxy/modules/MCMCtree/00.bin/03.divergence_time/bin/draw_time_tree.pl input.tree desc tmp1.out #生产环境中的程序位置
替换名字
sed -i '2d' divtree.newick #删除divtree.newick的第二行
3.
perl /home/cp_basic/program/draw_tree.pl divtree.newick desc -cali input.tree > divtree.svg #新服务器的程序位置
perl /share/nas6/liuyj/00.Reseq/Population_evolution/00.bin/Modules/08.MCMCtree/00.bin/03.divergence_time/bin/draw_tree.pl divtree.newick desc -cali input.tree > divtree.svg #日常用的程序位置
perl /share/nas6/xul/program/nuclear/tree/draw_time_tree.pl -i tmp1.out -cali input.tree -o divtree.svg #有点问题
生成的svg需要去改一下参数
修改最前面出现的两个width,改成1200
svg2xxx -t png -dpi 600 divtree.svg && svg2xxx -t pdf divtree.svg