ETE3: Как получить разные атрибуты на дереве, сделанные.get_topology
Я создал филотрея, используя.get_topology в списке, но не могу добавить научные имена и ранги к узлам. В частности:
from ete3 import NCBITaxa, Tree, TreeStyle, NodeStyle
Ltax = [561863, 333367, 518636, 1262999, 657322, 550540, 44012, 748224, 518636, 1309411]
ncbi = NCBITaxa()
t = ncbi.get_topology(Ltax, intermediate_nodes=False)
Я пытался с помощью:
tax2names, tax2lineages, tax2rank = t.annotate_ncbi_taxa()
ncbi.annotate_tree(t, taxid_attr='name', tax2name=tax2names, tax2track=tax2lineages, tax2rank=tax2rank)
Но он возвращает пустые словари. Я хочу, чтобы узлы имели свои ранги, научные имена и налоговые идентификаторы под соответствующими атрибутами. Что я делаю неправильно?
Спасибо, Араш
1 ответ
Хорошо, я понял ответ методом проб и ошибок. из ete3 импорт NCBITaxa, Дерево
Ltax = [561863, 333367, 518636, 1262999, 657322, 550540, 44012, 748224, 518636, 1309411]
ncbi = NCBITaxa()
t = ncbi.get_topology(Ltax, intermediate_nodes=False)
ncbi.annotate_tree(t, taxid_attr='name')
Это аннотирует дерево, и вы можете проверить аннотации, пройдя через узлы:
for node in t.iter_descendants("postorder"):
#print(node.name)
#print(node.species)
#print(node.named_lineage)
#print(node.lineage)
#print(node.sci_name)
print(node.rank)