Bio.Phylo
我在导出带有引导值的 BioPython 树对象(来自 )时遇到问题。这些树是基于距离矩阵在我的 BioPython 脚本中直接创建的。
这些树基本上看起来不错,但是当我使用该Bio.Phylo.write()
函数将它们导出到文件(Newick、NEXUS 或 phyloXML 格式)时,引导支持值似乎以错误的格式导出。
树形拓扑可以很好地显示,例如使用 ITOL 或 Dendroscope,但无法显示引导值。
树对象的示例以及生成的 newick 和 phyloxml 文件如下所示。我可以做些什么来导出具有正确(可读)引导值的树?
例子:
这就是 BioPython 中树对象的样子(示例树有 5 个名为 AF 的“物种”):
Tree(rooted=False)
Clade(branch_length=0, confidence=100.0, name='Inner3')
Clade(branch_length=-0.0791666666667, name='A')
Clade(branch_length=0.0375, confidence=10.0, name='Inner2')
Clade(branch_length=0.0625, name='C')
Clade(branch_length=0.104166666667, confidence=40.0, name='Inner1')
Clade(branch_length=-0.15, name='D')
Clade(branch_length=0.15, name='B')
Clade(branch_length=0.0791666666667, name='E')
当我将其导出为 newick 格式 (--> Bio.Phylo.write(mytree,outfile,"newick")
) 时,文件最终如下所示:
(A:-0.07917,(C:0.06250,(D:-0.15000,B:0.15000)Inner140.00:0.10417)Inner210.00:0.03750,E:0.07917)Inner3100.00:0.00000;
如您所见,置信度值与内部分支标签连接在一起,因此不可读(例如,名称=“Inner1”和置信度=40.0 的“Inner140.00”)。
在 phyloXML 格式中,树文件如下所示:
<phyloxml xmlns="http://www.phyloxml.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.phyloxml.org http://www.phyloxml.org/1.10/phyloxml.xsd">
<phylogeny rooted="false">
<clade>
<name>Inner3</name>
<branch_length>0</branch_length>
<confidence type="unknown">100.0</confidence>
<clade>
<name>A</name>
<branch_length>-0.0791666666667</branch_length>
</clade>
<clade>
<name>Inner2</name>
<branch_length>0.0375</branch_length>
<confidence type="unknown">10.0</confidence>
<clade>
<name>C</name>
<branch_length>0.0625</branch_length>
</clade>
<clade>
<name>Inner1</name>
<branch_length>0.104166666667</branch_length>
<confidence type="unknown">40.0</confidence>
<clade>
<name>D</name>
<branch_length>-0.15</branch_length>
</clade>
<clade>
<name>B</name>
<branch_length>0.15</branch_length>
</clade>
</clade>
</clade>
<clade>
<name>E</name>
<branch_length>0.0791666666667</branch_length>
</clade>
</clade>
这看起来好多了,但树可视化工具(如 ITOL)仍然无法识别置信度值(可能是由于置信度类型 =“未知”标签?)
我能做些什么?修改最终结果文件似乎有风险(如果我真的想要带有“inner”等关键字的叶子标签怎么办?)
另外,我想限制自己使用 BioPython 模块,因为添加额外的外部 Python 模块作为依赖项会使合作伙伴的工具难以实施。