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"))
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)
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
In [143]:
In [136]:
Out[136]:
In [ ]: