1.前期准备
构建贝叶斯树需要用到的软件有phylosuite(序列准备)、iqtree2(最适模型查找)、mrbayes(构建贝叶斯树)。
2.phylosuite准备序列
在phylosuite中进行的操作主要是序列下载、比对、修剪与串联,在最后一步串联(concatenate sequence)时选择输出文件为Nexus Format(sequential)。这个文件后期作为mrbayes的输入文件。
phylosuite具体使用方法请见:phylosuite软件使用 - 简书 (jianshu.com)
3.iqtree2查找最适模型
在使用iqtree2构建ML树时,其产生的日志文件(*.log)中有记录bayes最适模型,使用“Bayesian”为关键词查找即可找到。
iqtree2具体使用方法请见:ML树软件iqtree2的安装与使用 - 简书 (jianshu.com)
4.mrbayes的安装与使用
4.1mrbayes安装
mrbayes安装可通过配制安装和conda安装两种方式完成,但因为配置安装需要管理员权限,我没有权限故使用conda安装。
conda create -n mrbayes
conda activate mrbayes
conda install -c bioconda mrbayes=3.2.7a
#直接一个conda安装三件套
使用conda安装软件时最好都进行以上三步操作,确保每个软件都有自己的一个环境从而不会干扰到其他软件的安全。这个很比较重要。
遇到的问题
(mrbayes) [monkeyflower@localhost:~]$ mb
mb: error while loading shared libraries: libhmsbeagle.so.1: cannot open shared object file: No such file or directory
经典缺少依赖库,但是这回我变聪明了,缺少依赖库是吧,我直接给你找一个出来。
cd ~/miniconda3
find /home/monkeyflower/miniconda3/ -type f -name "libhmsbeagle*"
home/monkeyflower/miniconda3/pkgs/beagle-lib-3.1.2-h9f5acd7_4/lib/libhmsbeagle-cpu-sse.so.31.0.0
/home/monkeyflower/miniconda3/pkgs/beagle-lib-3.1.2-h9f5acd7_4/lib/libhmsbeagle-cpu.so.31.0.0
/home/monkeyflower/miniconda3/pkgs/beagle-lib-3.1.2-h9f5acd7_4/lib/libhmsbeagle-jni.so
/home/monkeyflower/miniconda3/pkgs/beagle-lib-3.1.2-h9f5acd7_4/lib/libhmsbeagle.so.1.3.2
/home/monkeyflower/miniconda3/pkgs/beagle-lib-4.0.0-h4ac6f70_2/lib/libhmsbeagle-jni.so
/home/monkeyflower/miniconda3/pkgs/beagle-lib-4.0.0-h4ac6f70_2/lib/libhmsbeagle.so
/home/monkeyflower/miniconda3/pkgs/beagle-lib-4.0.0-h4ac6f70_2/lib/libhmsbeagle-cpu-sse.so.40.0.0
/home/monkeyflower/miniconda3/pkgs/beagle-lib-4.0.0-h4ac6f70_2/lib/libhmsbeagle-cpu.so.40.0.0
/home/monkeyflower/miniconda3/envs/mrbayes/lib/libhmsbeagle-cpu-sse.so.40.0.0
/home/monkeyflower/miniconda3/envs/mrbayes/lib/libhmsbeagle-cpu.so.40.0.0
/home/monkeyflower/miniconda3/envs/mrbayes/lib/libhmsbeagle-jni.so
/home/monkeyflower/miniconda3/envs/mrbayes/lib/libhmsbeagle.so.40.0.0
/home/monkeyflower/miniconda3/envs/mrbayes/lib/libhmsbeagle.so
你这不有一个/home/monkeyflower/miniconda3/envs/mrbayes/lib/libhmsbeagle.so吗,好那你就是libhmsbeagle.so.1
mv /home/monkeyflower/miniconda3/envs/mrbayes/lib/libhmsbeagle.so /home/monkeyflower/miniconda3/envs/mrbayes/lib/libhmsbeagle.so.1
再次运行,完美解决。
4.2nex文件配置
在第一步中我们已经准备好了nex文件,在第二步中我们查到了最适模型。现在需要将这两部分组合起来。样本文件如下:
#NEXUS
begin data;
dimensions ntax=4 nchar=100;
format datatype=dna missing=? gap=-;
matrix
xxxxxx......
;
end;
begin mrbayes;
set autoclose=yes nowarn=yes;
lset nst=6 rates=gamma;
prset statefreqpr=fixed(equal);
mcmc ngen=1000000 samplefreq=1000;
end;
其实就是在nex文件后面加上
begin mrbayes;
set autoclose=yes nowarn=yes;
log start file=wukuitxt;
Outgroup Centaurium_erythraea_subsp__majus;
Outgroup Gentianopsis_grandis;
lset nst=6 rates=gamma;
prset statefreqpr=fixed(equal);
mcmc ngen=100000 samplefreq=1000 printfreq = 100 diagnfreq = 1000;
end;
这里需要更改的参数为”lset nst=6“,即指定最适模型,6代表的最适模型是GTR模型,如果是其他模型则分别为
1:JC69模型(Jukes-Cantor 69模型)
2:K80模型(Kimura 80模型)
3:F81模型(Felsenstein 81模型)
4:HKY模型(Hasegawa-Kishino-Yano模型)
6:GTR模型(通用时间可逆模型)
4.3运行mrbayes
具体操作步骤为
conda activate mrbayes
mb
exe yourfile.nex
将这个写入一个脚本,后台挂起运行就不会出现代码霸占整个屏幕的情况。