Package obitools :: Package tree :: Module unrooted
[hide private]
[frames] | no frames]

Source Code for Module obitools.tree.unrooted

 1  from obitools.tree.layout import TreeLayout 
 2  import math 
 3   
4 -def subtreeLayout(tree,node,layout,start,end,x,y,default):
5 nbotu = tree.subTreeSize(node) 6 delta = (end-start)/(nbotu+1) 7 8 layout.addNode(node) 9 layout.setAttribute(node,'x',x) 10 layout.setAttribute(node,'y',y) 11 layout.setAttribute(node,'color',(255,0,0)) 12 layout.setAttribute(node,'shape','circle') 13 14 for subnode in tree.childNodeIterator(node): 15 snbotu = tree.subTreeSize(subnode) 16 end = start + snbotu * delta 17 med = start + snbotu * delta /2 18 r = subnode._dist 19 if r is None or r <=0: 20 r=default 21 subx=math.cos(med) * r + x 22 suby=math.sin(med) * r + y 23 subtreeLayout(tree, subnode, layout, start, end, subx, suby, default) 24 start=end 25 26 return layout
27
28 -def treeLayout(tree):
29 layout = TreeLayout() 30 root = tree.getRoot() 31 dmin = min(n._dist for n in tree if n._dist is not None and n._dist > 0) 32 return subtreeLayout(tree,root,layout,0,2*math.pi,0,0,dmin / 100)
33