Наиболее близкородственные листья дерева (пакет ete3)

Здравствуйте, у меня есть дерево, такое как:

>>> print(tree)

   /-A
--|
  |   /-B
   \-|
     |   /-C
      \-|
        |   /-D
         \-|
            \-E

 tree=Tree("(A,(B,C,(D,E)));") (ete3 function)

И я ищу способ увидеть ближайшие листья к конкретному листу.

Здесь, например, листья, наиболее тесно связанные с C, — это D и E.. Лист, наиболее тесно связанный с D, — это E. Листья, наиболее тесно связанные с B, — это C, D и E..


person Grendel    schedule 28.02.2020    source источник


Ответы (1)


определение «ближайшего» в этом контексте сложно, но то, что вы описываете, может быть легко достигнуто с помощью следующего кода (обратите внимание, что в дереве в вашем коде отсутствовала скобка):

In [1]: from ete3 import Tree
   ...:
   ...: tree=Tree("(A,(B,(C,(D,E))));")
   ...: c_node  = tree & 'C'
   ...: for sister_node in c_node.get_sisters(): # there might be multifurcations therefore the loop
   ...:     print(sister_node.get_leaf_names())
   ...:
['D', 'E']
person jhc    schedule 29.03.2020