Exemplo n.º 1
0
 def fn3(newickTree, i):
     if newickTree[i[0]] == '(':
         #subTree1 = None
         subTreeList = []
         i[0] += 1
         k = []
         while newickTree[i[0]] != ')':
             if newickTree[i[0]] == ',':
                 i[0] += 1
             subTreeList.append(fn3(newickTree, i))
         i[0] += 1
         def cmp(i, j):
             if i.distance < j.distance:
                 return -1
             if i.distance > j.distance:
                 return 1
             return 0
         if sortNonBinaryNodes:
             subTreeList.sort(cmp)
         subTree1 = subTreeList[0]
         if len(subTreeList) > 1:
             for subTree2 in subTreeList[1:]:
                 subTree1 = BinaryTree(0.0, True, subTree1, subTree2, None)
             subTree1.iD = fn2(newickTree, i)
             subTree1.distance += fn(newickTree, i)
         elif reportUnaryNodes:
             subTree1 = BinaryTree(0.0, True, subTree1, None, None)
             subTree1.iD = fn2(newickTree, i)
             subTree1.distance += fn(newickTree, i)
         else:
             fn2(newickTree, i)
             subTree1.distance += fn(newickTree, i)
         return subTree1
     leafID = fn2(newickTree, i)
     return BinaryTree(fn(newickTree, i), False, None, None, leafID)