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