首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过dendroPy向树添加新节点

通过dendroPy向树添加新节点
EN

Stack Overflow用户
提问于 2014-11-10 02:24:15
回答 1查看 551关注 0票数 0

我希望通过向DendroPy中已经存在的树动态添加节点来创建树。所以我是这样进行的,

代码语言:javascript
复制
>>> t1 = dendropy.Tree(stream=StringIO("(8,3)"),schema="newick")

现在,这创建了一个小树,其中两个子树具有Taxon标签8和3。现在,我想要向带有taxon标签3的节点添加一个新的叶子。为了做到这一点,我需要节点对象。

代码语言:javascript
复制
>>> cp = t1.find_node_with_taxon_label('3')

我想在这一点上使用add子函数,这是一个节点的属性。

代码语言:javascript
复制
>>> n = dendropy.Node(taxon='5',label='5')  
>>> cp.add_child(n)

但是,即使在我在t1中打印所有节点对象时添加了该节点,它仍然返回它被初始化的唯一子节点8和3。请帮助我理解如何在树状树中添加节点。

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

代码语言:javascript
复制
>>> cp1 = t1.find_node_with_taxon_label('5')

它不返回与5相关的对象。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-12 07:52:11

要添加一个分类单元,您必须显式地创建它并将其添加到树中:

代码语言:javascript
复制
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分类单元列表中搜索。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26835804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档