【问题标题】:Condensing phyloxml phylogenetic trees浓缩phyloxml系统发育树
【发布时间】:2016-04-15 10:24:25
【问题描述】:

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

Original Tree

进入这个:

Condensed tree

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

有谁知道用phyloxml树做这件事的方法吗? Newick Utils 只接受 Newick 格式,所以我需要一种使用 Biopython 解析 phyloxml 格式的方法。谢谢。

【问题讨论】:

    标签: tree biopython phylogeny


    【解决方案1】:

    作为一个快速的答案,您可以非常轻松地将 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)
    

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

    【讨论】:

    • 我确实尝试过转换为 Newick(诚然使用始祖鸟而不是 biopython),但当我转换回 phyloxml(我需要我的树用于子树拆分过程)时,最终丢失了很多信息。最重要的是,我丢失了“事件”标签,这些标签表明是否发生了物种形成或重复。由于这是我如何拆分树的基础(使用 if clades.events.duplication),我认为在这种情况下这不是一个理想的解决方案?
    • @spiral01,查看答案的补充。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多