pythonpython-2.7treeattributesetetoolkit

python ete2 TreeNode check if it has attribute


I have a tree t which some of its nodes has an attribute 'a' I want to test if a given node has this attribute, what I did is

if not n.a:
   print "no a " 

but I'm getting an error treenode n has no attribute a

Any way to test it ?


Solution

  • You could just use the generic pythonic way

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

    If "a" is registered as a regular feature in your ETE tree, you could also use the following approach:

    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"])
    

    which would print something like this:

                         /-aaaaaaaaac
    -My annotation, NoName
                        |      /-aaaaaaaaad
                         \NoName
                               \-aaaaaaaaae