









(作者:玛瑙河,转载请注明作者或出处,
)
更新记录:
2010.06.23 svn r80
2010.06.01 svn r76
MrBayes 3.2版中加入了checkpoint功能,即可以保存检查点,在由于意外事件重启后仍可以从检查点处继续运行,以免白费功夫。
另外MrBays也支持并行计算,可以充分利用多核计算机乃至网络集群的计算能力,大大缩短计算时间。 并行版的效率相当不错。在我的双核(T7400)笔记本上,运行MrBayes examples目录中的脚本model_test.nex,并行版耗时13分半钟,非并行版耗时21分半钟;与非并行版相比,并行版效率提高了37%。在4核羿龙940上,运行时间比非并行版约缩短了2/3 。
本人编译了 MrBayes v3.2 32位并行版及单机版(下载)供大家使用,下面是安装及使用方法:
1. 以系统管理员身份安装MPICH2运行时。
下载后以系统管理员身份将其安装到某个目录,默认将安装到 C:\Program Files\MPICH2\, 你也可以安装到别的地方,如 C:\mpich2\。注意以系统管理员身份安装很重要,否则安装后不能正常使用。安装过程中会要求设置一个密码,请记住该密码,在以后会用得上(如果在集群上配置MPICH2,则在每台机器上都应用相同的密码安装)。当需要您选择为哪个用户安装时,最好选择“for Everyone"。如果安装成功,系统服务中会增加一个“MPICHE Process Manager”的服务。安装过程及以后运行mb的过程中如遇到防火墙警告,请选择同意。并行版的mrbayes需要通过网络端口实现进程通讯,如果被防火墙阻断则将不能正常运行。在vista/win7下如果遇到安装后不能正常运行并行版的MrBayes的问题,说明MPICH2没能正常安装,可以以管理员身份打开一个命令行窗口,在命令行中运行 mpich2-1.2.1p1-win-ia32.msi ,应当可以解决问题。
2.下载本人编译的MrBayes 3.2 并行版 (本人将根据源码库更新情况随时更新)
下载地址: https://files.cnblogs.com/agateriver/mrbayes_3.2_for_Windows_%E5%B9%B6%E8%A1%8C%E7%89%88.7z
将其中的并行版解压到某个目录,比如C:\mrbayes_3.2\。(解压时请使用支持7zip压缩格式的解压缩软件如7-Zip/winrar等)
3. 运行并行版的mb
下面只讲如何在多核的单机上运行。
打开命令行窗口。假设你的CPU有4个核,工作目录在c:\workdir,则根据下述情况输入相应的命令运行并行版的mb(其间如果需要账户名和密码,请输入您当前登录的账户名和密码,注意此密码与前面安装MPICH2时输入的密码不是一回事):
a. 交互式运行
1 cd c:\workdir
2 "C:\Program Files\MPICH2\bin\mpiexec" -n 4 C:\mrbayes_3.2\mb.exe
b. 运行脚本
如果用mb直接执行一个MrBayes脚本(假设这个脚本就是c:\workdir\demo.nex),则用如下命令:
1 cd c:\workdir
2 "C:\Program Files\MPICH2\bin\mpiexec" -n 4 C:\mrbayes_3.2\mb.exe demo.nex
4. 如果您想多机并行 MrBayes ,请网上搜索 MPICH2 windows 版的相关使用教程。
关于3.2版的checkpoint功能
MrBayes通过mcmc命令中的三个参数checkpoint、checkfreq、append来控制检查点的保存。具体大家可以在MrBayes中输入"help mcmc"命令然后查看"checkpoint"和"checkfreq"等节的说明:
Checkpoint -- 如果这个参数被设为 Yes(默认为Yes),则每隔Checkfreq参数所指定的代数,所有链的当前参数值都会被输出到检查点文件保存。检查点文件名形如 .ckp,当你重启分析时,分析过程可以从这个文件最后所记录的检查点的状态开始,而不必从头开始进行。这个功能的好处有二:第一就是延长分析过程,比如在设定的代数跑完以后你发现代数还不足够,需要继续;第二就是避免因硬件故障或其它不可控原因宕机而导致的风险,试想你运行了一个月,眼看就要出结果了,却碰上断电事故(很不幸笔者前不久就碰上了),如果没有检查点功能,恐怕眼睛都得急的蹦出来。
Checkfreq -- 保存检查点的频率,就是每隔多少代保存一次,默认100000。
Append -- 是否从最后保存检查点继续运行分析。
下面是一个Mrbayes脚本:
1 begin mrbayes;
2 exec example.nex;
3 lset nst=6 rates=invgamma;
4 mcmc ngen=20000000 stoprule=yes stopval=0.01 checkpoint=yes checkfreq=50000;
5 sump relburnin=yes burninfrac=0.25;
6 sumt relburnin=yes burninfrac=0.25;
7 end;
假设你有一个很大的数据集example.nex,并且运行这个脚本已经几个星期了,但是突然被某个毛头师兄弟碰掉了电源插头,这时你可以假装懊恼一下,好让那个毛头师兄稍微有点内疚感,:)。重新开机后,像下面一样将脚本的第四行末尾加上append=yes,然后重新运行,MrBayes就会从最后的检查点处继续运行你的分析了。
1 begin mrbayes;
2 exec example.nex;
3 lset nst=6 rates=invgamma;
4 mcmc ngen=20000000 stoprule=yes stopval=0.01 checkpoint=yes checkfreq=50000 append=yes;
5 sump relburnin=yes burninfrac=0.25;
6 sumt relburnin=yes burninfrac=0.25;
7 end;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。