系统发育基因组分析系统发育与进化分析

Mrbayes构建贝叶斯树复习

2023-10-08  本文已影响0人  小黑采蘑菇

最近又重新构建多片段的贝叶斯树,对这些参数又有了新的理解,在此记录,以备查询。

多线程安装

以前倒是写过多线程的安装,不过都比较繁琐,参考贝叶斯法构建进化树:MrBayes | 陈连福的生信博客 (chenlianfu.com)MrBayes安装linux系统下2021-07-29 - 简书 (jianshu.com),并进行调整,更新了一下多线程的安装方法:

git clone --depth=1 https://github.com/NBISweden/MrBayes.git
cd MrBayes
./configure  --with-beagle=no --with-mpi=yes
make -j 8

这个安装就轻松多了。注意3.2.7a版本是--with-mpi=yes不是--enable-mpi

参数调试

这里以崔师姐的矩阵为例,一般来说,从fasta转换到nexus我都习惯使用网站ALTER (ALignment Transformation EnviRonment) (sing-group.org),这个转格式非常稳定,一直都可以用。然后需要在矩阵的后方填入自己需要的指令,以如下所示代码为例:

begin mrbayes;
log start file=4.txt;
Outgroup 150;
Outgroup 149;
Outgroup 148;
charset ITS=1-774;
charset LSU=775-1689;
partition favored = 2: ITS, LSU;
set partition = favored;
Lset applyto=(1,2) nst=6 rates=invgamma;
unlink statefreq=(all) revmat=(all) shape=(all) pinvar=(all);
Prset applyto=(all) ratepr=variable;
mcmc ngen=50000000 samplefreq=10000 printfreq=10000 nchains=4 stoprule=no;
log stop;
end;

开始运行和log文件命名

begin mrbayes;
log start file=cyy.txt

外群设置

Outgroup 150;
Outgroup 149;
Outgroup 148;

每行只能设置一个外群,如需多个外群需要多行设置

定义基因分区

charset ITS=1-774;
charset LSU=775-1689;
partition favored = 2: ITS, LSU;
set partition = favored;

模型参数选择

此部分摘选自:好好先生 —— MrBayes 操作说明 | Bin YE (bin-ye.com)
模型一般在MrModeltest等软件中进行计算筛选,这里就不展开讲了。
[站外图片上传中...(image-c82c19-1696821241551)]
跑完模型,把这里的两行粘贴到分区的下边就行,

Lset  nst=6  rates=invgamma;
Prset statefreqpr=fixed(equal);

需要注意的是,在多个基因片段中需要在Lset和Prset后填写该模型所属的基因顺序,例如ITS的模型就 Lset applyto=(1)...,若二者都适合这个模型,就填Lset applyto=(1,2),就比如我两个模型可以填成:

lset applyto=(1,2) nst=6 rates=invgamma;
Prset applyto=(1) statefreqpr=fixed(equal);
Prset applyto=(2) statefreqpr=dirichlet(1,1,1,1);
unlink revmat=(all) pinvar=(all) shape=(all) statefreq=(all);

另一个参数: unlink 命令是让每个分区序列所使用的模型都不连锁,每个分区单独应用各自的模型或参数。一般情况下,分区是根据形态或核酸等数据类型进行的,也可根据自定义的分区(如前述 set partion=<name/number>)。软件运行时,如果应用于不同分区的参数有相同的先验,那么软件将会将这些参数连锁起来,也就是说,软件将会使用同一个参数,软件默认运行就是这样“吝啬”。但是,如果你想对各个分区使用不同的参数,比如,设置不同分区有不同的转换或颠换比率,那么就需要使用这一 unlink 命令。可在 MrBayes 中输入命令行 help unlink 查看相应帮助文件及一系列参数。
更多与模型相关的信息可以去源博中查看,他写了挺多的,但是我这里都没用,也许读者可以用上。

运行参数

此部分摘选自:贝叶斯建树之 Mrbayes 篇 | Juse's Blog (biojuse.com)

mcmc ngen=2000000 samplefreq=100 printfreq=100 nchains=4 stoprule=yes stopvar=0.01;

链数跟 nchainsnruns 有关,所有的链会被平均分到各个核中,当每个分析中链数量大于 1 时(nchains > 1)会设置一条冷链(其他均为热链),热链的存在在某些情况下对于收敛来说是必要的。在一些大数据集中热链越多收敛越快。因此设置合理的链数和内核数对于分析来说也很重要。
在 Mrbayes 的屏幕输出中,以圆括号框起来的即为热链,方括号框起来的为冷链,星号分离不同的分析。

结束指标

此部分摘选自:贝叶斯建树之 Mrbayes 篇 | Juse's Blog (biojuse.com)
在运行中及结束以后,有几个判断分析收敛程度的指标:

sump burninfrac=0.25
sumt burninfrac=0.25

这样树就基本上计算完了,最终树*.con.tre可以通过Figtree等软件打开。

此外,对于不同的数据集 Mrbayes 也会存在不同的表现,以摘抄作者的经验来讲:

不收敛问题

此部分摘选自:贝叶斯建树之 Mrbayes 篇 | Juse's Blog (biojuse.com)

begin trees;  
tree usertree=这里输入你的树;
end;

需要注意的几点:

之后在执行时需输入以下命令:

mcmcp nperts=3 append=no ngen=100000 printfreq=1000 samplefreq=1000 nchains=xx nruns=x savebrlens=yes checkpoint=yes checkfreq=5000;
startvals tau=usertree;
mcmc;

因为在设定起始树后再重新设置 nrunsnchains 会使其失效,因此在 mcmcp 设置参数后再设定起始树,mcmcp 中新增的 nperts 会对起始树进行扰动从而让不同的链起始树具有略微差异,避免不同运行难以检测收敛问题。

多线程问题

可以参考查看:【学习笔记】MrBayes 多核心并行运算效率 (douban.com)
[图片上传失败...(image-90a43b-1696821241551)]
在我看来多线程还是会和单线程的结果有一些不同,但是如果树结构非常稳定,应该是问题不大的。

上一篇下一篇

猜你喜欢

热点阅读