Наиболее тесно связанные листья на дереве (пакет ete3) - PullRequest
0 голосов
/ 28 февраля 2020

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

>>> 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.

1 Ответ

0 голосов
/ 29 марта 2020

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

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']
...