Package obitools :: Package graph :: Module rootedtree
[hide private]
[frames] | no frames]

Source Code for Module obitools.graph.rootedtree

 1  from obitools.graph.dag import DAG,DAGNode 
 2   
3 -class RootedTree(DAG):
4
5 - def addEdge(self,parent=None,node=None,indexp=None,index=None,**data):
6 indexp=self.addNode(parent, indexp) 7 index =self.addNode(node , index) 8 9 assert index not in self._parents,'Child node cannot have more than one parent node' 10 11 return DAG.addEdge(self,indexp=indexp,index=index,**data)
12
13 - def getNode(self,node=None,index=None):
14 if index is None: 15 index = self._index.getIndex(node, True) 16 return RootedTreeNode(index,self)
17
18 -class RootedTreeNode(DAGNode):
19
20 - def subTreeSize(self,node):
21 n=1 22 for subnode in self: 23 n+=self.subTreeSize(subnode) 24 return n
25