压缩系统发育树
Condensing phyloxml phylogenetic trees
我正在尝试压缩(简化所有叶子都具有相同标签的进化枝)phyloxml 格式的系统发育树。一个叫做 Newick Utils 的程序对于用 newick 格式树做这个非常有用,压缩这棵树:
进入这个:
因为我最终试图在每个复制节点将我的基因树拆分成它的所有子树,这是在不丢失信息的情况下减少子树数量的有用方法。
有谁知道用 phyloxml 树做这个的方法吗? Newick Utils 只接受 Newick 格式,所以我需要一种使用 Biopython 解析 phyloxml 格式的方法。谢谢
作为快速回答,您可以非常轻松地将 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)
理想情况下,您会将上述代码放在 returns 新修剪树的函数中,并在每次修剪叶子时调用该函数。
我正在尝试压缩(简化所有叶子都具有相同标签的进化枝)phyloxml 格式的系统发育树。一个叫做 Newick Utils 的程序对于用 newick 格式树做这个非常有用,压缩这棵树:
进入这个:
因为我最终试图在每个复制节点将我的基因树拆分成它的所有子树,这是在不丢失信息的情况下减少子树数量的有用方法。
有谁知道用 phyloxml 树做这个的方法吗? Newick Utils 只接受 Newick 格式,所以我需要一种使用 Biopython 解析 phyloxml 格式的方法。谢谢
作为快速回答,您可以非常轻松地将 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)
理想情况下,您会将上述代码放在 returns 新修剪树的函数中,并在每次修剪叶子时调用该函数。