![13.gif](https://www.cnblogs.com/Emoticons/QQ/13.gif)
另外MrBays也支持并行计算,可以充分利用多核计算机乃至网络集群的计算能力,大大缩短计算时间。 并行版的效率相当不错。在我的双核(T7400)笔记本上,运行MrBayes examples目录中的脚本model_test.nex,并行版耗时13分半钟,非并行版耗时21分半钟;与非并行版相比,并行版效率提高了37%。在4核羿龙940上,运行时间比非并行版约缩短了2/3 。
本人编译了 MrBayes v3.2 32位并行版及单机版(下载)供大家使用,下面是安装及使用方法:
1. 以系统管理员身份安装MPICH2运行时。
http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.2.1p1/mpich2-1.2.1p1-win-ia32.msi
下载地址: http://files.cnblogs.com/agateriver/mrbayes_3.2_for_Windows_%E5%B9%B6%E8%A1%8C%E7%89%88.7z
a. 交互式运行
2 " C:\Program Files\MPICH2\bin\mpiexec " -n 4 C: \ mrbayes_3 . 2 \ mb . exe
b. 运行脚本
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脚本:
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就会从最后的检查点处继续运行你的分析了。
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 ;