WIP: plus simple, plus propre. ( ;- ))
This commit is contained in:
parent
a78e3f7bb6
commit
29c8d0c127
Binary file not shown.
|
@ -331,16 +331,16 @@ class Condition:
|
|||
def set_weight(self, weight):
|
||||
self.node.attrib["weight"] = str(weight)
|
||||
|
||||
def get_node_self_id(self):
|
||||
def get_self_id(self):
|
||||
return int(self.node.get("node_id"))
|
||||
|
||||
def set_node_self_id(self, node_id):
|
||||
def set_self_id(self, node_id):
|
||||
self.node.attrib["node_id"] = str(node_id)
|
||||
|
||||
def get_node_parent_id(self):
|
||||
def get_parent_id(self):
|
||||
return int(self.node.get("parent"))
|
||||
|
||||
def set_node_parent_id(self, parent):
|
||||
def set_parent_id(self, parent):
|
||||
self.node.attrib["parent"] = str(parent)
|
||||
|
||||
|
||||
|
|
|
@ -8,44 +8,46 @@ import model
|
|||
|
||||
|
||||
class CondTreeNode(NodeMixin):
|
||||
def __init__(self, id, x, site, weight, parent_node_id):
|
||||
def __init__(self, id, parent_id, x, site, weight):
|
||||
super(CondTreeNode, self).__init__()
|
||||
self.id = id
|
||||
self.parent_node_id = parent_node_id
|
||||
self.parent_id = parent_id
|
||||
self.parent = None
|
||||
self.x = x # TODO self.y = y,z...
|
||||
self.site = site
|
||||
self.weight = weight
|
||||
|
||||
def add_parent_node(self, parent_node):
|
||||
print('orphan node ', self.id, ' is adopted by node ', parent_node.id)
|
||||
# print('orphan node ', self.id, ' is adopted by node ', parent_node.id)
|
||||
self.parent = parent_node
|
||||
|
||||
|
||||
class TransTreeNode(NodeMixin):
|
||||
def __init__(self, parent_node_id, id):
|
||||
def __init__(self, id, parent_id):
|
||||
super(TransTreeNode, self).__init__()
|
||||
self.parent_node_id = parent_node_id
|
||||
self.parent_id = parent_id
|
||||
self.parent = None
|
||||
self.id = id
|
||||
|
||||
def add_parent_leaf_node(self, parent_node):
|
||||
# print('orphan transition is adopted by leaf node', parent_node.id)
|
||||
# print('orphan transition is adopted by leaf node', parent_node.id)
|
||||
self.parent = parent_node
|
||||
|
||||
|
||||
conditions_set = set()
|
||||
transitions_set = set()
|
||||
root = 0
|
||||
root = None
|
||||
|
||||
for i in range(0, len(model.testmodel.get_conditions().get_all())):
|
||||
condition = model.testmodel.get_conditions().get_one(i)
|
||||
conditions_set.add(CondTreeNode(
|
||||
condition.get_node_self_id(),
|
||||
condition.get_node_parent_id(),
|
||||
tmp = CondTreeNode(condition.get_self_id(),
|
||||
condition.get_parent_id(),
|
||||
condition.get_coord("x"),
|
||||
condition.get_site(),
|
||||
condition.get_weight()))
|
||||
condition.get_weight())
|
||||
conditions_set.add(tmp)
|
||||
if (tmp.parent_id == 0):
|
||||
root = tmp
|
||||
|
||||
for i in range(0, len(model.testmodel.get_transitions().get_all())):
|
||||
transition = model.testmodel.get_transitions().get_one(i)
|
||||
|
@ -53,22 +55,15 @@ for i in range(0, len(model.testmodel.get_transitions().get_all())):
|
|||
transition.get_id(),
|
||||
transition.get_parent()))
|
||||
|
||||
# 0 1 2 3 4
|
||||
# <condition site="1" weight="0" node_id="3" parent="2" x="2"/>
|
||||
|
||||
for i in conditions_set:
|
||||
if (i.parent_node_id == 0):
|
||||
root = i
|
||||
|
||||
for i in conditions_set:
|
||||
for j in conditions_set:
|
||||
if ((i != j) & (i.parent_node_id == j.id)):
|
||||
if ((i != j) & (i.parent_id == j.id)):
|
||||
i.add_parent_node(j)
|
||||
|
||||
for condition_node in LevelOrderIter(root):
|
||||
if condition_node.is_leaf:
|
||||
for transition_node in transitions_set:
|
||||
if (str(condition_node.id) == transition_node.parent):
|
||||
if (str(condition_node.id) == transition_node.parent_id):
|
||||
transition_node.add_parent_leaf_node(condition_node)
|
||||
|
||||
for pre, fill, node in RenderTree(root):
|
||||
|
@ -76,7 +71,7 @@ for pre, fill, node in RenderTree(root):
|
|||
if (type(node) == CondTreeNode):
|
||||
print(treestr.ljust(16), node.weight, ' arrow(s) at [site', node.site,
|
||||
'in cell', node.x, end='')
|
||||
if (not node.depth == 2):
|
||||
if (not node.depth == 2): # tree.depth()
|
||||
print(end=']\n')
|
||||
else:
|
||||
print('] > ', node.children[0].id, end='\n')
|
||||
|
|
Loading…
Reference in New Issue