python ete2 TreeNode проверяет наличие атрибута

У меня есть дерево t, у некоторых из его узлов есть атрибут "а". Я хочу проверить, есть ли у данного узла этот атрибут.

if not n.a:
   print "no a " 

но я получаю ошибку Treenode N не имеет атрибута

Есть ли способ проверить это?

1 ответ

Решение

Вы можете просто использовать общий питонический способ

if not hasattr(node, "a"): 
   print "a attribute not found in node:", node

Если "a" зарегистрировано как обычная функция в вашем дереве ETE, вы также можете использовать следующий подход:

from ete2 import Tree
t = Tree()
t.populate(5)
t.children[0].add_features(a = "My annotation")

for node in t.traverse():
    if "a" in node.features:
        print node.get_ascii(attributes=["a", "name"])

который напечатал бы что-то вроде этого:

                     /-aaaaaaaaac
-My annotation, NoName
                    |      /-aaaaaaaaad
                     \NoName
                           \-aaaaaaaaae
Другие вопросы по тегам