MrBayes
2016 年 2 月 15 日 改訂
井上 潤

MrBayes はベイズ法に基づいて系統樹探索を行うソフトウェアです.塩基およびアミノ酸配列に対応しており,partition の設定やガンマ補正など,系統樹探索の解析に必要なオプションはほぼ整っているだけでなく,解析速度も従来の最尤法に基づくプログラムに比べると非常に速いです (but see RAxML).さらに得られる系統樹も,リーズナブルな解答であることが多いように思えます.高次系統の分子分析では,現時点で最も広く用いられているプログラムの一つだと思います.

Mac, Win, Unix バージョンがあります.Nexus 形式の下にベイズブロックというコマンドを作成して解析を走らせます.ベイズブロックの作成は最初はわかりにくいですが,プログラムに添付されている例題や「help」コマンドなどを参照すれば,次第に慣れてくると思います.


気づいた点
  • AWTYTracer はアウトファイルの解析に便利です.

  • Mac G5 2.5x4 で,並列解析に成功したという話を聞きました (2005 年 11 月 30 日)

  • Mac や Unix バージョンでは sumt コマンドがうまく動かないことがあります.こちら をご覧下さい.
    「sumt nrun=2 burnin=500」のように「nrun=2」を追加すればよいとのことですが,それでも私はうまく動かせませんでした.Mac で解析したファイルを Win に持っていって sumt することができました.Unix では「sumt burnin=5000」のように,nrun=2 が無くても問題なく consensus tree が作成されます

Unix version のコンパイル

Mac でしか試していませんが,インストールが難しくなりました.はやく改善されるといいです (2016 年 2 月).


mrbayes-3.2.6
Mac 版はうまく動かなかったので,source code からインストールしました.src/CompileInstructions.txt の「Troubleshooting for Mac」を参照してください (2016 年 2 月).

1.
Xcode が必要です.こちらに従ってインストールしてください.

2.
Homebrew をインストールしてください.

3.

> brew tap homebrew/science
> brew install mrbayes


mrbayes_3.2.2
iMac ではインストールできたのですが,Air ではできませんでした.ともに OS 10.8.5 です (2013 年 10 月).


mrbayes-3.1.2
*かつては以下の手順で簡単にインストールができましたが,mrbayes_3.2.2 では,Mac および Unix 版の両方とも,MacBook Air OS 10.8.5 にインストールがうまくいきませんでした .かろうじて Unix 版はインストールできましたが,わかりにくいです [2013 年 10 月].
mrbayes-3.1.2.tar をダウンロードし,

tar -xf mrbayes-3.1.2.tar

と入力して解凍します.

作成された mrbayes-3.1.2 フォルダに入り,

make

と入力すれば終わりです.コンパイルには数分かかります.


Mac version は,ダウンロードして得られた MrBayes-3.2.0_installer_MACx64.pkg をダブルクリックしてください.指示に従えば,インストールが完了します.

which mb

とターミナルに打てば,どこにインストールされたわかります.マニュアルと例題はアプリケーションフォルダに入っていました [2011 年 12 月].


例題: DNA 配列の解析

充分な結果が得られるか判断はしていませんが,一通りの解析手法を解説します (2016 年 2 月).
primates1.tar.gz をダウンロードしてください.


mcmc 解析

ターミナルから

mb primates1.nex

と入力してください.解析が始まるはずです.解析が長引く場合は,

nohup mb primates1.nex &

と入力し,バックブファウンドで動かしましょう.log ファイルを cat で見ることで,解析の進み具合を確認できます.



事後確率 (尤度) の確認

解析が終了したら,q コマンでによって,一度 MrBayes を終了してください.ディレクトリには,

primates1.nex.ckp
primates1.nex.ckp~
primates1.nex.mcmc
primates1.nex.run1.p
primates1.nex.run1.t
primates1.nex.run2.p
primates1.nex.run2.t

というファイルが新たに作成されています.burnin の範囲を見るために Tracerで .p ファイルを解析します.

Tracer で書いた図を見る限り,30000 generation には事後確率として表される尤度が収束したようです.



コンセンサス tree の作成

充分な尤度が得られた generation の tree を用いて,consensus tree を作成します.尤度が不十分な generation は (ここでは,30000 まで),burnin によって削除します.

エディタで primates1.nex を開いて,以下のように 32 行目にある mcmc を mcmcp に変更してください.

mcmcp gen =

その後,

mb

と入力し,MrBayes を立ち上げます (この操作を行わないと,mcmc 解析が始まってしまって,上記のステップで得られたアウトファイルが上書きされてしまうので注意してください).
mb のプロンプトに,

MrBayes > execute primates1.nex

と入力し (「>」 以降がコマンド),配列データを読み込みます.

MrBayes > sumt filename = primates1.nex burnin = 30000

によって,コンセンサス tree が primates1.nex.con.tre に保存されます.これを FigTree で開くと,以下のような tree が得られます.





例題: アミノ酸の解析

mb avian_ovomucoids.nex

で解析が始まるはずです (2012 年 8 月).
avian_ovomucoids.nex.tar.gz


Outgroup
外群は 1 OTU だけ設定可能です.

begin mrbayes;
outgroup atha_gbk;
prset aamodelpr=mixed;
mcmc ngen=1000000 stoprule=yes nchain=2 nrun=2;
end;



Starting tree の利用

Version 3.1 からは starting tree が利用できます.バージョンによっては設定の仕方が異なるようなので,マニュアルを参照して下さい.ベイズブロックに以下のボールドの部分を付け足してください (usertree と startingtree).user tree の root node は 3 分岐にします.根幹が 2 分岐だと error message が出ます.

BEGIN mrbayes;
charset 1st_pos = 1-758\2;
charset 2nd_pos = 2-758\2;
partition region = 2:1st_pos,2nd_pos;
set partition=region;
prset ratepr=variable;
lset nst=6 rates=invgamma;
usertree = (A,B,(C,D));
unlink shape=(all) pinvar=(all) statefreq=(all) revmat=(all);
log start filename=log;
mcmc startingtree=user ngen = 3000000 printfreq = 1000 samplefreq = 100 nchains = 4;
END;


制約付きの解析

Monophyly の制約を掛けて系統樹を推定することも可能です.以下のようにボールドの行をベイズブロックに付け足してください (Constraint と Prset).ここでは 2 種類の Monophyly を制約としています.

BEGIN mrbayes;
charset 1st_pos = 1-3716;
charset 2nd_pos = 3717-7432;
charset tRNA = 7433-8865;
charset rRNA = 8866-11681;
partition region =4:1st_pos,2nd_pos,tRNA,rRNA;
set partition=region;
lset nst=6 rates=invgamma;
Constraint SarMono 100= CoeLaChTa CoeLatMen;
Constraint ActMono 100= PolErpCal EloGymKid EloAngJap EloConMyr SalSalSal;
PrSet ApplyTo=(all) TopologyPr=Constraints(SarMono,ActMono) ratepr=variable;
unlink shape=(all) pinvar=(all) statefreq=(all) revmat=(all);
log start filename=log;
mcmc ngen=3000000 printfreq =1000 samplefreq= 100 nchains=4
savebrlens=yes;
END;


アミノ酸のパーティションがある場合は以下のように設定が少し異なります.

BEGIN mrbayes;
charset Protein = 1-3716;
charset tRNA = 3717-5149;
charset rRNA = 5150-7965;
partition region =3:Protein,tRNA,rRNA;
set partition=region;
lset applyto=(1) rates=invgamma;
lset applyto=(2,3) nst=6 rates=invgamma;
Constraint ActMono 100= PolErpCal EloGymKid EloAngJap EloConMyr SalSalSal;
prset ApplyTo=(all) TopologyPr=Constraints(ActMono) ratepr=variable;
prset applyto=(1) aamodelpr=fixed (mtrev);
unlink shape=(2,3) pinvar=(2,3) statefreq=(2,3) revmat=(2,3);
log start filename=log;
mcmc ngen =3000000 printfreq =1000 samplefreq= 100 nchains=4
savebrlens=yes;
END;


* どうも usertree と Constraint を一緒に用いることはできないようです.

MrBayes は「help usertree」や「help prset」と入力することで,関連した部分のマニュアルが出てきます.よく読んでいるマニュアルと操作しているソフトの version が異なることがあるので,usertree のように最近になって導入された解析方法は注意した方が良いです.

系統関係の constrain は出来ないと開発者の一人である Paul が言っていました [2007 年 7 月].

RY 解析
BEGIN mrbayes;
charset 1st_pos = 1-3236;
charset 2nd_pos = 3237-6472;
charset 3rd_pos = 6473-9708;
charset tRNA = 9709-10623;
charset rRNA = 10624-12255;
partition region =5:1st_pos,2nd_pos,3rd_pos,tRNA,rRNA;
set partition=region;
prset ratepr=variable;
lset applyto=(1,2,4,5) nst=6 rates=invgamma;
lset applyto=(3) nst=1 rates=invgamma;
unlink shape=(all) pinvar=(all) statefreq=(all) revmat=(all);
log start filename=log;
mcmcp ngen=1000000 printfreq=1000 samplefreq=1000 nchains=4 savebrlens=yes;



リンク
MrBayes lab Workshop on Molecular Evolution で作成された解説.