通过dendroPy向树添加新节点

时间:2014-11-10 02:24:16

标签: python bioinformatics biopython phylogeny dendropy

我想通过动态添加节点来创建树 DendroPy中现有的树。所以这就是我的进展方式,

>>> t1 = dendropy.Tree(stream=StringIO("(8,3)"),schema="newick")

现在,这会创建一个小树,其中有两个孩子拥有分类标签8和3.现在 我想用一个带有分类标签3的节点添加一个新的叶子。为了做到这一点,我想要节点 宾语。

>>> cp = t1.find_node_with_taxon_label('3')

我想在那个点使用add child function,这是一个节点的属性。

>>> n = dendropy.Node(taxon='5',label='5')  
>>> cp.add_child(n)

但即使在我在t1中打印所有节点对象时添加节点,也就是 返回它初始化的唯一的孩子8和3。 请帮助我了解如何在dendropy中添加现有树中的节点。

现在如果我们打印t1,我们会看到树。但即使添加了元素 我找不到添加的对象。例如,如果我们做了

>>> cp1 = t1.find_node_with_taxon_label('5')

它没有返回与5相关的对象。

1 个答案:

答案 0 :(得分:1)

要添加分类,您必须明确创建并将其添加到树中:

t1 = dendropy.Tree(stream=StringIO("(8,3)"),schema="newick")

# Explicitly create and add the taxon to the taxon set
taxon_1 = dendropy.Taxon(label="5")
t1.taxon_set.add_taxon(taxon_1)

# Create a new node and assign a taxon OBJECT to it (not a label)
n = dendropy.Node(taxon=taxon_1, label='5')

# Now this works
print t1.find_node_with_taxon_label("5")

关键是find_node_with_taxon_labelt1.taxon_set分类列表中进行搜索。