In [1]:
import numpy as np
import pandas as pd
import json
import os
import copy
from itertools import chain

In [89]:
tree = [{"name":"A",
        "children":[{"name":"B","children":[{"name":"E","children":[{"name":"Q","children":None},
                                                                    {"name":"R","children":[{"name":"S","children":None},
                                                                                            {"name":"T","children":[{"name":"U","children":None},
                                                                                                                    {"name":"V","children":None}]}]}]},
                                            {"name":"F","children":None},
                                            {"name":"G","children":[{"name":"O","children":None},{"name":"P","children":None}]}]},
                    {"name":"C","children":[{"name":"H","children":[{"name":"M","children":None},
                                                                    {"name":"N","children":None}]},
                                            {"name":"I","children":[{"name":"K","children":None},
                                                                    {"name":"L","children":None}]},
                                            {"name":"J","children":None}]},
                   {"name":"D","children":None}]}]
json.dump(tree[0],open("../visualization/myTree.json","w"))

Store All Branches


In [128]:
class myTree:
    def __init__(self,name,children=None,childrenSet=False):
        self.name = name
        self.children = children
        self.myBranch = []
        self.childrenSet = childrenSet

In [171]:
def myDf(nodes,Leaves):
    if nodes is not None:
        for node in nodes:
            print "node name ", node["name"]
            if(node["children"] == None):
                Leaves.append(node["name"])
            yield node
            for child in myDf(node['children'],Leaves):
                yield child
Nodes = []
def setObjects(nodes):
    if nodes is not None:
        for node in nodes:
            if(node["children"]==None):
                Nodes.append(myTree(node["name"],childrenSet=True))
            else:
                Nodes.append(myTree(node["name"]))
            yield node
            for child in setObjects(node['children']):
                yield child
                
def startNodes(Nodes):
    toIntegrate = [node for node in Nodes if node.childrenSet==True]
    return toIntegrate

In [179]:
Nodes = []
for a in setObjects(tree):
    pass

Leaves0 = startNodes(Nodes)
readyNodes = [n.name for n in startNodes(Nodes)]
print len(Nodes)


22

In [180]:
Leaves = []
def setChildren(nodes):
    if nodes is not None:
        for node in nodes:
            
            
            #CHECKING IF ALL CHILDRENS ARE READY
            childrensReady = []
            l = []
            if node["children"] is not None:
                for cN in node["children"]:
                    if cN["name"] in readyNodes:
                        childrensReady.append(True)
                        for a in Leaves0:
                            l.append(a)
                    else:
                        childrensReady.append(False)
            
            if(False not in childrensReady and childrensReady != []):
                print node["name"]
                
            for child in setChildren(node['children']):
                yield child

In [169]:
for a in setChildren(tree):
    pass


T
G
H
I

In [143]:


In [136]:



Out[136]:
['Q', 'S', 'U', 'V', 'F', 'O', 'P', 'M', 'N', 'K', 'L', 'J', 'D']

In [ ]: