0

我想通过将节点动态添加到 DendroPy 中已经存在的树来创建树。所以这就是我的进展方式,

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

现在,这将创建一棵小树,其中有两个具有分类标签 8 和 3 的孩子。现在我想将一个新叶子添加到分类标签为 3 的节点。为此,我需要节点对象。

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

我想在那个时候使用 add child 函数,它是节点的一个属性。

>>> 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 相关的对象。

4

1 回答 1

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分类单元列表中搜索。

于 2014-11-12T07:52:11.417 回答