Python 使用ete3获取祖先节点编号

Python 使用ete3获取祖先节点编号,python,phylogeny,ete3,Python,Phylogeny,Ete3,我需要获取ete3中树中的节点号 下面是一个树的示例: rooted_tree = Tree( "((A,B),(C,D));" ) print rooted_tree # # /-A # /---| # | \-B #----| # | /-C # \---| # \-D 然后我从这棵树中计算出一些东西(对于这个问题来说并不重要),这些东西给我树中每个节点的值,然后我在ggplot树中绘制。

我需要获取ete3中树中的节点号

下面是一个树的示例:

rooted_tree = Tree( "((A,B),(C,D));" )

print rooted_tree
#
#          /-A
#     /---|
#    |     \-B
#----|
#    |     /-C
#     \---|
#          \-D
然后我从这棵树中计算出一些东西(对于这个问题来说并不重要),这些东西给我树中每个节点的值,然后我在ggplot树中绘制。但是ggplot tree需要节点号来绘制此信息,这里的问题是我无法找到代码以获取树的节点号
“根树”

假设我想要
A
B
的祖先节点号,我如何获得它?我只知道这样做:

ancestor = tree.get_common_ancestor("A","B")

但是类似于
祖先.node_number
祖先.num
不起作用…

ete树中的所有节点都是对象,它们没有数字,但它们有一个标记为拓扑透视图的哈希ID

您可以通过以下方式访问这些拓扑id:

ancestor = tree.get_common_ancestor("A","B")
print(ancestor.get_topology_id())
引用ete3文档:

在2.3版中获取新的拓扑id(attr='name')

返回表示当前树拓扑的唯一ID。 具有相同拓扑的两棵树将生成相同的id。如果 如果没有根,请确保根节点不是二进制的,或者使用 在生成拓扑id之前执行tree.unroot()函数

这有助于检测束上唯一拓扑的数量 对于树,不需要全距离方法

默认情况下,根据终端节点的名称计算id。 可以使用任何其他节点属性

进一步参考: