我需要在ete3中获取树中的节点号。
下面是一个树的示例:
rooted_tree = Tree( "((A,B),(C,D));" )
print rooted_tree
#
# /-A
# /---|
# | \-B
#----|
# | /-C
# \---|
# \-D假设我想要A和B的祖先的节点号,我如何获得它?我只知道这么做:
ancestor = tree.get_common_ancestor("A","B")但是像ancestor.node_number的ancestor.num这样的东西不起作用..。
发布于 2021-01-10 22:39:03
ete树中的所有节点都是对象,它们没有编号,但它们有一个标记为拓扑透视的哈希ID
您可以通过以下方式访问这些拓扑id
ancestor = tree.get_common_ancestor("A","B")
print(ancestor.get_topology_id())引用自ete3文档:
get_topology_id(attr='name') 2.3版中的新功能。
返回表示当前树的拓扑的唯一ID。具有相同拓扑的两个树将产生相同的id。如果树是无根的,请确保根节点不是二进制的,或者在生成拓扑id之前使用tree.unroot()函数。
这对于检测一组树上的独特拓扑的数量很有用,而不需要全距离方法。
缺省情况下,id是根据终端节点的名称计算的。可以使用任何其他节点属性来代替。
进一步参考:http://etetoolkit.org/docs/latest/reference/reference_tree.html#get_topology_id
https://stackoverflow.com/questions/64916000
复制相似问题