基因家族树构建最常用的方法是 NJ 法和 ML 方法,构建进化树之前,需要进行多序列比对。
多序列比对
多序列比对的作用是将核酸或者氨基酸序列对齐,使得相同残基的位点位于同一列,这样以便于发现不同的序列之间的相似部分。
这里使用 muscle 进行多序列比对。
准备文件:构建进化树的蛋白文件
# 使用muscle进行多序列比对
muscle -in pep.fasta -out pep.mfa
# 结果转为phylip格式
trimal -in pep.mfa -out pep.phylip -phylip_paml
# 转mega格式
trimal -in pep.mfa -out pep.meg -mega
# 还可以对比对结果进行trimal处理
trimal -in pep.mfa -out pep.trim.phylip -phylip_paml -gt 0.6 -cons 60
#多序列比对结果图绘制
Rscript ./msa_figure.R pep.fasta pep.msa
多序列比对结果有多种软件可以可视化,Jalview、mega等等
构建进化树
可以使用 MEGA 软件在个人电脑上完成多序列比对及构建进化树如果序列条数较多或者使用 ML 方法建树,由于个人电脑的性能限制,MEGA软件可能会停止分析,这时建议使用服务器进行多序列比对及建树操作。
treebest构建NJ树
treebest 是一款 linux 服务器构建进化树的软件,可以用来构建 NJ 树。
# 使用treebest软件构建NJ树
treebest nj -W -t jtt -b 1000 ./pep.mfa > treebest.out
## -w 去除根节点;-t 指定模型;-b 进行1000次bootstrap分析
fastatree构建进化树
fasttree 使用 ML 方法构建进化树,默认使用 JJT 模型,运行速度快。
#默认模型为JTT,可以使用 - lg 和 - wag更换氨基酸替代模型
fasttree -out fasttree.nwk ./pep.mfa
fasttree 的进化树上已经有 SH 检验得到的可信度信息,可以直接使用。
如果需要进行传统的 bootstrap 分析,需要使用 seqboot 生成 bootstrap数据集。
#使用phylip软件包seqboot程序,生成bootstrap数据集
#需要注意的是seqboot软件只接受phylip格式,且基因ID长度要求小于10
# 生成seqboot 配置文件, 其中1000表示生成bootstrap数据集个数
echo -e "pep.phylip_new\nR\n1000\nY\n1\n" > seqboot.cfg
# 运行seqboot生成bootstrap数据集
seqboot < seqboot.cfg > seqboot.log
mv outfile seqboot.phylip
# 运行fasttree 对bootstrap数据集建树,其中1000为数据集个数
fasttree -n 1000 -out fasttree.nwk.bootstrap seqboot.phylip
# 运行fasttree 对原始数据集建树
fasttree -out fasttree.nwk.tmp pep.phylip_new
#整合bootstrap到进化树上
perl ./CompareToBootstrap.pl -tree fasttree.nwk.tmp -boot fasttree.nwk.bootstrap > fasttree.bs.nwk
使用iqtree构建进化树
iqtree 使用 ML 方法构建进化树,可以自动估算替代模型构树。
iqtree -s ./pep.mfa -m MFP -bb 1000 -nt 4 -pre pep.iqtree
# -s 输入文件;-m 自动选择模型; -bb bootstrap分析次数; -nt 线程数; -pre 输出文件前缀
最终iqtree建树的结果为pep.iqtree.treefile
进化树美化
进化树美化可以使用 mega,Figtree 等软件进行,这里介绍 iTOL(Inter�active Tree Of Life), 一款在线的进化树美化软件。
首先导入进化树文件
基本设置
control 面板可以调整树的形状(圈图、辐射图或者常见的 normal 格式)、字体大小及颜色、是否显示 bootstrap 值等信息。
添加注释
如果想在图中添加更多的信息,就需要自己准备好配置文件,将每个
dataset 配置信息单独写到文本文件中,注意指定分隔符,准备好文件后,将文件拖拽到进化树美化页面。然后微调这些 dataset,得到最终的进化树图片。
例如:
label颜色调整(写到文本文件中)
#指定dataset的类型
TREE_COLORS
#指定文件分隔符
SEPARATOR TAB
#指定数据,第一列为label
#第二列固定为label
#第三列为颜色
DATA
id1 label #EE82EE
id2 label #EE82EE
id3 label #EE82EE
label背景颜色调整
#指定dataset的类型
TREE_COLORS
#指定文件分隔符
SEPARATOR TAB
#指定数据,第一列为label
#第二列固定为range
#第三列为颜色
#第四列为亚家族分类
在label前面添加形状
在ITOL中不同的数字代表不同的符号
symbol示例文件
第一列为id,第二列为symbol,第三列为大小,第四列为颜色,第五列为是否填充,第六列为位置
效果图