我想通过动态添加节点来创建树 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相关的对象。
答案 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_label
在t1.taxon_set
分类列表中进行搜索。