冷凝的phyloxml系统发育树

时间:2016-04-15 10:24:25

标签: tree biopython phylogeny

我试图压缩(简化所有叶子具有相同标签的进化枝)系统发育树,采用phyloxml格式。一个名为Newick Utils的程序对于使用newick格式树执行此操作非常有用,它会缩小这个树:

Original Tree

进入这一个:

Condensed tree

由于我最终试图将我的基因树拆分成每个复制节点的所有子树,这是减少子树数量而不丢失信息的有用方法。

有没有人知道用phyloxml树做这个的方法? Newick Utils只接受Newick格式,所以我需要一种方法来使用Biopython解析phyloxml格式。感谢。

1 个答案:

答案 0 :(得分:2)

作为一个快速回答,您可以非常轻松地将phyloxml转换为newick:

from Bio import Phylo

Phylo.convert("original.xml", "phyloxml", "converted.newick", "newick")

现在,您可以调用Newick Utils来压缩树。

如果要删除具有相同名称的叶子:

for clade in tree.find_clades():
    if clade.count_terminals() > 1:
        leafs = clade.get_terminals()
        if len(set([t.name for t in leafs])) == 1:
            # All the leafs in this clade have the same name.
            #  Cut them all except the first one.
            for leaf in leafs[1:]:                               
                tree.prune(leaf)

理想情况下,您将上面的代码放在一个返回新修剪树的函数中,并在每次修剪叶子时调用该函数。