我希望通过向DendroPy中已经存在的树动态添加节点来创建树。所以我是这样进行的,
>>> t1 = dendropy.Tree(stream=StringIO("(8,3)"),schema="newick")现在,这创建了一个小树,其中两个子树具有Taxon标签8和3。现在,我想要向带有taxon标签3的节点添加一个新的叶子。为了做到这一点,我需要节点对象。
>>> cp = t1.find_node_with_taxon_label('3')我想在这一点上使用add子函数,这是一个节点的属性。
>>> n = dendropy.Node(taxon='5',label='5')
>>> cp.add_child(n)但是,即使在我在t1中打印所有节点对象时添加了该节点,它仍然返回它被初始化的唯一子节点8和3。请帮助我理解如何在树状树中添加节点。
现在,如果我们打印t1,我们就会看到树。但是即使在添加元素之后,我也找不到添加的对象。例如,如果我们做了一个
>>> cp1 = t1.find_node_with_taxon_label('5')它不返回与5相关的对象。
发布于 2014-11-12 07:52:11
要添加一个分类单元,您必须显式地创建它并将其添加到树中:
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分类单元列表中搜索。
https://stackoverflow.com/questions/26835804
复制相似问题