>1
CAGACAGTTTATAGCAACACTGCCAACTCAGCTCCCGCCACAGAAATCGGAGGGAGGGTT
CTGGAAAACACGAGTTCAAACTGGGAGCACCCCAGATGTGGG
>2
AGTTTATAGCAACACTACCAACTCAGCTCCCGCCACAGAAATCGGAGGGAGGGTTCTGGA
AAACACAGGTTCAAACTGGGAGCACCCCAGATGTGGG
>3
CAGGCAGTTTATAGTAACACTACCAACTCAGCTCCCGCCACAGGACCGGAGGGAGGATTC
TGGGAAAAACACGGATTCAAACTGGGAGCACCCCAGATGTGGG
>4
AGTTTATAGCAACACTACCAACTCAGCTCCCGCCACAGAAACCGGAGGGAGGGTTCTGGA
AAACACAGGTTCAAACTGGGAGCACCCCAGATGTGGG
>5
AGTTTATAGCAACACTACCAACTCAGCTCCCGCCACAGAAATCGGAGGGAGGGTTCTGGA
AAACACAGGTTCAAACTGGGAGCACCCCAGATGTGGG
2.1 多序列比对
运行命令:$ muscle -in test.fa -out test-aligned.fa
输出结果"test-aligned.fa"为:>3
CAGGCAGTTTATAGTAACACTACCAACTCAGCTCCCGCCACAG-GACCGGAGGGAGGATT
CTGGGAAAAACACGGATTCAAACTGGGAGCACCCCAGATGTGGG
>1
CAGACAGTTTATAGCAACACTGCCAACTCAGCTCCCGCCACAGAAATCGGAGGGAGGGTT
CTGG--AAAACACGAGTTCAAACTGGGAGCACCCCAGATGTGGG
>2
-----AGTTTATAGCAACACTACCAACTCAGCTCCCGCCACAGAAATCGGAGGGAGGGTT
CTGG--AAAACACAGGTTCAAACTGGGAGCACCCCAGATGTGGG
>5
-----AGTTTATAGCAACACTACCAACTCAGCTCCCGCCACAGAAATCGGAGGGAGGGTT
CTGG--AAAACACAGGTTCAAACTGGGAGCACCCCAGATGTGGG
>4
-----AGTTTATAGCAACACTACCAACTCAGCTCCCGCCACAGAAACCGGAGGGAGGGTT
CTGG--AAAACACAGGTTCAAACTGGGAGCACCCCAGATGTGGG
2.2 构建进化树
运行命令:
注:这里的输入是已经比对好的结果文件test-aligned.fa$ muscle -maketree -in test-aligned.fa -out test.newick
这里默认是使用"UPGMA"方法来构建的,如果要使用"NJ"方法可以这样:$ muscle -maketree -in test-aligned.fa -out test.newick -cluster neighborjoining
输出结果"test.newick"("newick"格式):(
3:0.0280448
,
(
1:0.0160781
,
(
(
2:-0
,
5:-0
):0.00519213
,
4:0.00519213
):0.010886
):0.0119667
)
;
2.3 "newick"格式说明
"newick"格式由英国着名数学家`Arthur Cayley于1857年提出,目的是用数学的方法表示树形结构。标准的"newick"格式使用一对小括号表示一个"interior node",可打印的字符(不能包含:空格、冒号、分号、小括号、中括号)表示节点,最后以一个分号结束。
例如:(B,(A,C,E),D);
表示:
另外需要注意几点:
1. 节点名称可以为空,例如:(Alpha,Beta,Gamma,Delta,,Epsilon,,,);
2. 可以在节点名称后面加上分号和一个数字来表示分支长度,例如:(B:6.0,(A:5.0,C:3.0,E:4.0):5.0,D:11.0);
3. 除了节点名称和分支长度之外的任何地方都可以加入空白,例如:(
B:6.0,
(
A:5.0,
C:3.0,
E:4.0
):5.0,
D:11.0
);
2.4 使用"biopython"画图
注:需要安装biopython和matplotlib,本次操作使用的版本为:biopython==1.72、matplotlib==3.0.0
有了muscle输出的newick格式的结果文件,我们就可以可视化了,可视化的方法非常多,这里使用biopython可视化:from Bio import Phylo
tree = Phylo.read("test.newick", "newick") # 如果有test.newick里面有多个树,则使用Phylo.parse方法读取
Phylo.draw(tree)结果为: