python ete2 TreeNode检查它是否具有属性

时间:2014-11-25 17:22:58

标签: python python-2.7 tree attributes etetoolkit

我有一个树,其中一些节点有一个属性' a' 我想测试给定节点是否具有此属性,我所做的是

if not n.a:
   print "no a " 

但我收到错误treenode n没有属性

有什么方法可以测试吗?

1 个答案:

答案 0 :(得分:2)

你可以使用通用的pythonic方式

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

如果在您的ETE tree中将“a”注册为常规功能,您还可以使用以下方法:

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