Exemple #1
0
 def test_changeFromParent(self):
     """TreeNode changeFromParent should record change from parent"""
     t = DndParser('(a,(c,b)x,d)')
     t.mapAttr({'a':5, 'c':3, 'b':7, 'x':2, 'd':1})
     self.assertEqual(t[1][0].changeFromParent('Data'), 1)
     self.assertEqual(t[1][1].changeFromParent('Data'), 5)
     f = lambda x: x.Data * 2
     self.assertEqual(t[1][0].changeFromParent(f), 2)
     self.assertEqual(t[1][1].changeFromParent(f), 10)
Exemple #2
0
 def test_removeDeleted(self):
     """removeDeleted should remove all nodes where is_deleted tests true."""
     tree = DndParser('((a:3,(b:2,(c:1,d:1):1):1):2,(e:3,f:3):2);',
         constructor=TreeNode)
     result_not_deleted = deepcopy(tree)
     tree.removeDeleted(lambda x: x.Data in [])
     self.assertEqual(str(tree),str(result_not_deleted))
     deleted = Set(['b','d','e','f'])
     result_tree = DndParser('((a:3,((c:1):1):1):2);',constructor=TreeNode)
     is_deleted = lambda x: x.Data in deleted
     tree.removeDeleted(is_deleted)
     self.assertEqual(str(tree),str(result_tree))
Exemple #3
0
 def test_nodedata(self):
     """DndParser should assign Data to internal nodes correctly"""
     t = DndParser(nodedata)
     self.assertEqual(len(t), 2)
     self.assertEqual(len(t[0]), 0)  # first child is terminal
     self.assertEqual(len(t[1]), 2)  # second child has two children
     self.assertEqual(str(t), "(abc:3.0,(def:4.0,ghi:5.0)jkl:6.0)")
     info_dict = {}
     for node in t.traverse():
         info_dict[node.Data] = node.BranchLength
     self.assertEqual(info_dict["abc"], 3.0)
     self.assertEqual(info_dict["def"], 4.0)
     self.assertEqual(info_dict["ghi"], 5.0)
     self.assertEqual(info_dict["jkl"], 6.0)
Exemple #4
0
 def test_mapAttr(self):
     """Tree mapattr should correctly change the attributes in-place"""
     t = DndParser('(a,(c,b)x,d)')
     t.mapAttr({'a':'aa','b':'bb','c':'cc','x':'xx'}) # d left out
     self.assertEqual(str(t), '(aa,(cc,bb)xx,d)')
     t = DndParser('(a,(c,b)x,d)')
     f = lambda x: x in list('abcx') and x*3 or x
     t.mapAttr(f) # d left out
     self.assertEqual(str(t), '(aaa,(ccc,bbb)xxx,d)')
     #check that it works if you set a different attribute than you read
     t = DndParser('(a,(c,b)x,d)')
     t.mapAttr(f, new_attr='xxx')
     for n in t.traverse(self_before=True, self_after=False):
         if n in list('abcx'):
             self.assertEqual(n.xxx, n.Data*3)
         else:
             self.assertEqual(n.xxx, n.Data)
Exemple #5
0
 def test_attrTable(self):
     """"TreeNode attrTable should return correct table of attributes"""
     t = DndParser('(a,(c,b)x,d)')
     f1 = lambda x: x in list('abcx') and x*2 or x
     f2 = lambda x: x in list('abcx') and x*3 or x
     f3 = lambda x: x in list('abcx') and x*4 or x
     t.mapAttr(f1, new_attr='xx')
     t.mapAttr(f2, new_attr='xxx')
     t.mapAttr(f3, new_attr='xxxx')
     table = t.attrTable(['xx','xxxx'])
     self.assertEqual(table, [[None, None], ['aa','aaaa'],['xx','xxxx'],\
         ['cc','cccc'],['bb','bbbb'],['d','d']])
Exemple #6
0
def GSC_weightnode_dependent(tree):
    """GSC method depending on the NodeWeight object implemented by Micah Hamady
    """
    weight_node = DndParser(str(tree),constructor=WeightNode)
    weight_node.setWeights()
    return weight_node.leafWeights()
Exemple #7
0
        """
        mean_name = prop_name+'WeightedMean'
        stdev_name = prop_name+'WeightedStdev'
        for n in self.traverse(self_before=False, self_after=True):
            if not n.Children:
                setattr(n, mean_name, f(n))
                setattr(n, stdev_name, 0)
            else:
                num = 0
                den = 0
                branchlengths = [max(c.BranchLength, branch_delta) \
                    for c in n.Children]
                child_vals = [getattr(c, mean_name) for c in n.Children]

                num = sum([(1.0*i)/j for i, j in zip(child_vals, branchlengths)])
                den = sum([1.0/j for j in branchlengths])
                result = num/den
                setattr(n, mean_name, result)
                std = sqrt(sum([(c-result)**2 for c in child_vals])\
                    /len(child_vals))
                setattr(n, stdev_name, std)

    
if __name__ == '__main__':
    from old_cogent.parse.tree import DndParser
    s = '((a:7.9,((b:0.1,c:0.1):0.1,d:0.2):7.7):0.1,e:8.0)'
    t = DndParser(s)
    print t
    t.scaleBranchLengths(8, ultrametric=True)
    print t
Exemple #8
0
 def test_prune(self):
     """prune should recconstruct correct topology of tree."""
     tree = DndParser('((a:3,((c:1):1):1):2);',constructor=TreeNode)
     tree.prune()
     result_tree = DndParser('((a:3,c:1));',constructor=TreeNode)
     self.assertEqual(str(tree),str(result_tree))