MrBayes
MrBayes is a program for the Bayesian estimation of phylogeny.
It’s documented at http://mrbayes.csit.fsu.edu/ and http://mrbayes.csit.fsu.edu/wiki/index.php/Advanced_Topics_3.2.
There are several different modules available for using mrbayes on odyssey. In all cases the executable is named mb.
Software Modules
mrbayes-3.1.2-patched
This is a simple installation, designed to be used interactively or for serial jobs. It has the same patches applied as the mrbayes-3.1.2-patched_openmpi-1.3.2_intel-11.0.083 version.
mrbayes-3.1.2-patched_openmpi-1.3.2_intel-11.0.083
This is version built to run in parallel across many nodes. See the LSF: Running MPI Jobs on Odyssey page in the FAQ for running openmpi jobs on Odyssey. Here, the optimal number of processors (bsub‘s -n parameter) is equal to the total number of chains (the number of runs (nruns) times the number of chains per run (nchains); the default is 2 x 4 = 8).
For increased stability and options, it also has following patches applied:
- a path to run on 64-bit systems such as ours: Mb_64bit-safe.patch
- a patch to fix a minor issue in mcmcdiagn param print: Mrbayes-3.1.2-fix-mcmcdiagnparamprint.patch
- a patch for SumP hanging when using MPI, Mrbayes-3.1.2-fix-sump-mpi.patch
- a custom FAS IT Research Computing patch to allow input redirection (needed for some commands that can only be entered over stdin): mrbayes-3.1.2_no_tty_no_readline.patch
However, this version does not support checkpointing.
mrbayes-090909_openmpi-1.3.2_intel-11.0.083
This is a version built from the very latest source code checked out from the CVS repository (Sept 9, 2009 at the time of writing). This version supports checkpointing (see below), in addition to the same parallelization support that mrbayes-3.1.2-patched_openmpi-1.3.2_intel-11.0.083 has. However, due to significant differences in the code, the patches that the 3.1.2 versions have not been applied here.
Checkpointing
The very latest versions of MyBayes checked out from CVS (i.e. newer than the official 3.1.2 release) support checkpointing. With checkpointing, your job will write out a file every X generations that can be used to restart the job from that point in the computation in the event that the original job crashes or is otherwise aborted. (Note that this works for parallel jobs, too.)
To enable checkpointing, add lines similar to the following to the mcmcp section:
checkpoint=yes
checkfreq=20000
(checkfreq is in units of generations.) When the job runs it will update a file with the suffix .ckp with the current job state. If the job fails, you can restart from this ckp file by adding the following to the mcmcp section:
append=yes
Note that this option cannot be there in the original file, when there is no ckp to start from, and it’s probably best to make a backup of the failed job’s working directory before resubmitting the job.
Older Software Modules
hpc/mrbayes
Like mrbayes-3.1.2-patched, but with only a subset of the patches.
hpc/mrbayes-openmpi
Like mrbayes-3.1.2-patched_openmpi-1.3.2_intel-11.0.083 but with only a subset of the patches and compiled with an older openmpi/intel combination (openmpi-1.2.5-intel-10.1.015).
hpc/mrbayes-serial-intel
Like mrbayes-3.1.2-patched, but with only a subset of the patches, and compiled with Intel compilers instead of GNU.
Feedback
From Mark Beilstein regarding running parallel jobs:
“One thing to keep in mind is that there are several versions of MrBayes available on Odyssey and you must have only a single version loaded and it must be the parallel version (all the versions execute using the command mb). One other idea is that you may want to try fewer nodes – the general rule I use for MrBayes is “# of independent runs X # of chains = # of processors”. It isn’t clear to me how MrBayes would parse the chains to 100 processors and then integrate the results, so this might be hanging up your analysis as well.”
From Sarah Mathews:
- I modified my .bashrc file so that the hpc/mrbayes-openmpi module would load when I log on (based on the fact that the mpi version of raxml doesn’t run when the module is loaded from the command line);
- the number of cores requested for the job needs to equal the number of chains that MrBayes is being asked to run in the analysis.
