MrBayes

Revision as of 16:57, 21 June 2024 by Coulombc (talk | contribs) (Marked this version for translation)
Other languages:

MrBayes is a program for Bayesian inference and model choice across a wide range of phylogenetic and evolutionary models. MrBayes uses Markov chain Monte Carlo (MCMC) methods to estimate the posterior distribution of model parameters.

Finding available modules

Question.png
[name@server ~]$ module spider mrbayes

Example

Sequential

1. Write the submission script

File : submit-mrbayes-seq.sh

#!/bin/bash
#SBATCH --account=def-someuser  # replace with your PI account
#SBATCH --cpus-per-task=1 
#SBATCH --mem-per-cpu=3G        # increase as needed
#SBATCH --time=1:00:00          # increase as needed

module load mrbayes/3.2.7

cd $SCRATCH 

# Copy one of the example locally on the local storage
cp -v $EBROOTMRBAYES/share/examples/mrbayes/primates.nex .

# Run using 1 core
mb primates.nex


2. Submit the sequential job

Question.png
[name@server ~]$ sbatch submit-mrbayes-seq.sh

Parallel

MrBayes support running on multi-cores and multi-nodes, and GPU.

MPI

1. Write the submission script

File : submit-mrbayes-parallel.sh

#!/bin/bash
#SBATCH --account=def-someuser  # replace with your PI account
#SBATCH --ntasks=8 				# increase as needed
#SBATCH --mem-per-cpu=3G        # increase as needed
#SBATCH --time=1:00:00          # increase as needed

module load mrbayes/3.2.7

cd $SCRATCH 

# Copy one of the example locally on the local storage
cp -v $EBROOTMRBAYES/share/examples/mrbayes/primates.nex .

# Run using $SLURM_NTASKS
srun mb primates.nex


2. Submit the sequential job

Question.png
[name@server ~]$ sbatch submit-mrbayes-parallel.sh

GPU

1. Write the submission script

File : submit-mrbayes-gpu.sh

#!/bin/bash
#SBATCH --account=def-someuser  # replace with your PI account
#SBATCH --cpus-per-task=1
#SBATCH --gpus=1
#SBATCH --mem-per-cpu=3G        # increase as needed
#SBATCH --time=1:00:00          # increase as needed

module load gcc cuda/12 mrbayes/3.2.7

cd $SCRATCH 

# Copy one of the example locally on the local storage
cp -v $EBROOTMRBAYES/share/examples/mrbayes/primates.nex .

# Run using $SLURM_NTASKS
srun mb primates.nex


2. Submit the sequential job

Question.png
[name@server ~]$ sbatch submit-mrbayes-gpu.sh

Checkpointing

For users needing very long runs of MrBayes, it is suggested to break up the work into several small jobs rather than one very long job. Long jobs have a higher probably of being interrupted by maintenance windows or unforeseen problems. Fortunately, MrBayes has a built in mechanism for creating checkpoints, where progress can be saved from one job and continued in a subsequent job.

1. Create the first script (job).

File : job1.nex

execute primates.nex;

mcmc ngen=10000000 nruns=2 temp=0.02 mcmcdiag=yes samplefreq=1000 
stoprule=yes stopval=0.005 relburnin=yes burninfrac=0.1 printfreq=1000 
checkfreq=1000;


2. Create a second script (job).

File : job2.nex

execute primates.nex;

mcmc ngen=20000000 nruns=2 temp=0.02 mcmcdiag=yes samplefreq=1000
stoprule=yes stopval=0.005 relburnin=yes burninfrac=0.1 printfreq=1000
append=yes checkfreq=1000;


3. Submit the jobs

File : submit-mrbayes-cp.sh

#!/bin/bash
#SBATCH --account=def-someuser  # replace with your PI account
#SBATCH --ntasks=8 				# increase as needed
#SBATCH --mem-per-cpu=3G        # increase as needed
#SBATCH --time=1:00:00          # increase as needed
#SBATCH --array=1-2%1           # match the number of sub-jobs, only 1 at a time

module load gcc mrbayes/3.2.7

cd $SCRATCH 

# Copy one of the example locally on the local storage
cp -v $EBROOTMRBAYES/share/examples/mrbayes/primates.nex .

# Run using $SLURM_NTASKS
srun mb job${SLURM_ARRAY_TASK_ID}.nex


2. Submit the jobs

Question.png
[name@server ~]$ sbatch submit-mrbayes-cp.sh