初次记录时间:2021.2.5
3.12更新说明:ML建树对与模型的替代选择比较敏感,因此增加了第四部分推测最佳模型的方法:jModeltest和ProtTest。
3.16更新说明:增加了第五部分内容,IQtree可以帮助用户选择最佳的进化模型,速度也较快,有文献报道准确度比传统的RAxML高。
3.20更新说明:意外又看到一个推测最佳建树模型的软件:modeltest-ng。目前用不到,就暂时不用它了。另外,为啥我用IQtree建树,那么慢!!!
1. 系统发生树
1.1 简述
系统发生树(Phylogenetic tree)是从分子层面研究物种进化的手段,是通过构建分子树来推断物种树,并不一定是绝对的真实情况。随着越来越多物种的基因序列的获得,是一种快捷、准确的研究物种间关系的方法。构建好的系统发生树由四部分组成:根、枝、节、叶
1.2 特点
- 由系统发育树推断出的进化关系,并不一定是物种间绝对的进化关系。
- 系统发育树的分支聚类情况,在一定程度上反映了物种间的亲缘关系。
- 系统发育树分支绕节点转动不会改变物种间的亲缘关系。
FastTree和RAxML均是用最大似然法构建系统发育树的工具,前者速度快,后者准确度高。
2. FastTtree
FastTtree采用的是SH检验来判断每个节点的可信度。该值的范围在0~1之间,与一般用的bootstrap值高度相关。
2.1 安装
conda install fasttree
2.2 使用
2.2.1 核酸建树
fasttree -nt <nucleotide_alignment_file> > <tree_file>
注:核酸建树默认
JC+CAT
模型,可以用参数-gtr -nt
切换成GTR+CAT
模型
2.2.2 蛋白建树
fasttree <protein_alignment_file> > <tree_file>
注:蛋白建树默认
JTT+CAT
模型,还可以用参数-wag
或者-lg
切换成LG+CAT
或者WAG+CAT
模型
3. RAxML-NG
3.1 安装
conda install -c bioconda raxml-ng
3.2 使用
第一步:检查比对后的序列MSA是否可以读取(MSA可以使用FASTA
、PHYLIP
格式)
raxml-ng --check --msa prim.phy --model GTR --prefix T1
注:这一步骤还会给出哪些序列是相同序列(推荐执行)
第二步:构建核苷酸树(模型GTR
,1000次自检值抽样)
raxml-ng --all --msa prim.phy --model GTR --prefix T15 --threads 10 --bs-trees 1000
注:蛋白树可用
LG
模型
4. 模型的选择
目前常用的构建系统发育树的方法有:邻位归并法(Neighbor joining, NJ)、最大似然法(Maximum likelihood method, ML) 以及贝叶斯法(BI)。综合速度和准确度,ML用得较多。
ML对替代模型非常敏感,因此利用ML法构建系统发育树之前,选择合适的替代模型是必不可少的过程。(如果序列的相似度较高,每种方法和模型构建的系统发育树差别不大)
4.1 jModeltest
jModeltest用于核苷酸最佳替代模型的计算,一共有88种模型。
4.1.1 安装
从github上下载最新版本(jModelTest v2.1.10)。
4.1.2 使用
tar -zxvf jmodeltest-2.1.10.tar.gz
cd jmodeltest-2.1.10
java -jar jModelTest.jar -d <输入文件.fa> -f -i -g 4 -s 11 -BIC -AIC -v -a -tr 40 -o <输出结果.txt>
注:输入文件为比对之后的fasta格式文件
4.2 ProtTest
ProTest用于最佳氨基酸替代模型的计算,一共有120中模型。
4.2.1 安装
从github下载最新版本(ProtTest 3.4.2)
4.2.2 使用
1. 查看帮助信息
tar -zxvf prottest-3.4.2-20160508.tar.gz
cd prottest-3.4.2
java -jar prottest-3.4.2.jar -h
2. 模型预测
java -jar prottest-3.4.jar -i <输入蛋白序列.phy> -all-distributions -F -AIC -BIC -tc 0.5 -threads 24 -o <输出结果>
5. IQtree
5.1 安装
conda install iqtree
5.2 使用
1. 只选择合适的模型并输出最佳的模型(类似于jModelTest)
iqtree -s example.phy -m MF -mtree -T AUTO
mtree:会检查所有的模型,会占用很多的电脑资源。
2. 使用GTR+I+G模型建系统发育树
iqtree -s example.phy -m GTR+I+G
3. 选择合适的模型,并直接构建系统发育树(常用)
- 普通数量和序列大小建树(用标准的bootstraps进行检验):
iqtree -s example.phy -m MFP -b 1000 -T AUTO
- 数量较多或序列较长(用UFBoot进行检验):
iqtree -s example.phy -m MFP -B 1000 --bnni -T AUTO
常用参数说明:
1. -s:指定输入比对后的序列文件名
2. -m:选择模型(设置MFP会自动检测最佳模型并建树,从v1.54版本开始,MFP已经是默认的参数了)
2. -b:bootstrap次数
3. -B:超快速bootstrap次数,大于等于1000
4. --bnni:使用NNI优化超快速bootstrap的树,搭配-B使用
5. -T:程序运行使用的核数,可设置具体数字或者AUTO(推荐),默认是1
6. -cmax:默认是10,如果序列很长,可以适当增加该数值
7. -alrt 1000:进行SH-aLRT检验。
注意事项:
- ultrafast bootstrap(UFBoot)和一般的bootstrap值的区别是,前者更加公正 (unbiased)。同时,两者表示的意义也有区别。UFBoot=95%,表示的是该分支的真实性是95%。一般来说,一个分支的BS(bootstrap)>80%,或者UFBoot>95%为可信的。
- 为了进一步增加可信度,还在建树的过程中可以增加SH-aLRT检验,(添加参数:
-alrt 1000
)。SH-aLRT ≥ 80%,且UFBoot ≥ 95%时为可信的。