WIP: premières explorations.
This commit is contained in:
parent
5751a6cd72
commit
75c63e8e24
|
@ -92,17 +92,22 @@
|
||||||
the neighbouring space unhit to East of the dimer is empty
|
the neighbouring space unhit to East of the dimer is empty
|
||||||
and the dimer identified by conditions (1,2) can be moved to East. -->
|
and the dimer identified by conditions (1,2) can be moved to East. -->
|
||||||
|
|
||||||
<condition site="2" weight="0" node_id="4" parent="2" x="-1"/>
|
<condition site="2" weight="0" node_id="4" parent="2" x="1"/>
|
||||||
<!-- as soon as condition 4 is satisfied,
|
<!-- as soon as condition 4 is satisfied,
|
||||||
the neighbouring space unit to West of the dimer is empty
|
the neighbouring space unit to West of the dimer is empty
|
||||||
and the dimer identified by conditions (1,2) can be moved to West. -->
|
and the dimer identified by conditions (1,2) can be moved to West. -->
|
||||||
|
|
||||||
|
<condition site="2" weight="1" node_id="5" parent="3" x="1"/>
|
||||||
|
<condition site="2" weight="0" node_id="6" parent="4" x="1"/>
|
||||||
|
<condition site="2" weight="2" node_id="7" parent="3" x="1"/>
|
||||||
|
<condition site="0" weight="3" node_id="8" parent="6" x="1"/>
|
||||||
|
<condition site="0" weight="4" node_id="9" parent="6" x="1"/>
|
||||||
</conditions>
|
</conditions>
|
||||||
|
|
||||||
<transitions>
|
<transitions>
|
||||||
|
|
||||||
<transition id="move_a_dimer_to_east" date="1630000000" author="Pas moi..."
|
<transition id="move_a_dimer_to_east" date="1630000000" author="Pas moi..."
|
||||||
parent="3" probability="1">
|
parent="7" probability="1">
|
||||||
|
|
||||||
<arrow site="1" weight="0" x="0"/>
|
<arrow site="1" weight="0" x="0"/>
|
||||||
<arrow site="2" weight="0" x="1"/>
|
<arrow site="2" weight="0" x="1"/>
|
||||||
|
@ -112,7 +117,27 @@
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<transition id="move_a_dimer_to_west" date="1630000000" author="Ni moi !"
|
<transition id="move_a_dimer_to_west" date="1630000000" author="Ni moi !"
|
||||||
parent="4" probability="1">
|
parent="8" probability="1">
|
||||||
|
|
||||||
|
<arrow site="1" weight="0" x="0"/>
|
||||||
|
<arrow site="2" weight="0" x="1"/>
|
||||||
|
<arrow site="2" weight="1" x="0"/>
|
||||||
|
<arrow site="1" weight="1" x="1"/>
|
||||||
|
|
||||||
|
</transition>
|
||||||
|
|
||||||
|
<transition id="do_anything_you_want" date="1630000000" author="Ni moi !"
|
||||||
|
parent="9" probability="1">
|
||||||
|
|
||||||
|
<arrow site="1" weight="0" x="0"/>
|
||||||
|
<arrow site="2" weight="0" x="1"/>
|
||||||
|
<arrow site="2" weight="1" x="0"/>
|
||||||
|
<arrow site="1" weight="1" x="1"/>
|
||||||
|
|
||||||
|
</transition>
|
||||||
|
|
||||||
|
<transition id="do_nothing" date="1630000000" author="Ni moi !"
|
||||||
|
parent="5" probability="1">
|
||||||
|
|
||||||
<arrow site="1" weight="0" x="0"/>
|
<arrow site="1" weight="0" x="0"/>
|
||||||
<arrow site="2" weight="0" x="1"/>
|
<arrow site="2" weight="0" x="1"/>
|
||||||
|
|
Binary file not shown.
|
@ -1,5 +1,5 @@
|
||||||
# https://anytree.readthedocs.io/en/latest/_modules/anytree/node/nodemixin.html
|
# https://anytree.readthedocs.io/en/latest/_modules/anytree/node/nodemixin.html
|
||||||
from anytree import NodeMixin, RenderTree, LevelOrderIter
|
from anytree import NodeMixin, LevelOrderIter # , RenderTree
|
||||||
import model
|
import model
|
||||||
|
|
||||||
# TODO Contrôles de cohérence des données
|
# TODO Contrôles de cohérence des données
|
||||||
|
@ -46,7 +46,7 @@ for i in range(0, len(model.testmodel.get_conditions().get_all())):
|
||||||
condition.get_site(),
|
condition.get_site(),
|
||||||
condition.get_weight())
|
condition.get_weight())
|
||||||
conditions_set.add(tmp)
|
conditions_set.add(tmp)
|
||||||
if (tmp.parent_id == 0):
|
if tmp.parent_id == 0:
|
||||||
root = tmp
|
root = tmp
|
||||||
|
|
||||||
for i in range(0, len(model.testmodel.get_transitions().get_all())):
|
for i in range(0, len(model.testmodel.get_transitions().get_all())):
|
||||||
|
@ -57,26 +57,33 @@ for i in range(0, len(model.testmodel.get_transitions().get_all())):
|
||||||
|
|
||||||
for i in conditions_set:
|
for i in conditions_set:
|
||||||
for j in conditions_set:
|
for j in conditions_set:
|
||||||
if ((i != j) & (i.parent_id == j.id)):
|
if (i != j) & (i.parent_id == j.id):
|
||||||
i.is_adopted_by(j)
|
i.is_adopted_by(j)
|
||||||
|
|
||||||
for condition_node in LevelOrderIter(root):
|
for condition_node in LevelOrderIter(root):
|
||||||
if condition_node.is_leaf:
|
if condition_node.is_leaf:
|
||||||
for transition_node in transitions_set:
|
for transition_node in transitions_set:
|
||||||
if (str(condition_node.id) == transition_node.parent_id):
|
if str(condition_node.id) == transition_node.parent_id:
|
||||||
transition_node.is_adopted_by(condition_node)
|
transition_node.is_adopted_by(condition_node)
|
||||||
|
|
||||||
|
"""
|
||||||
## print tree
|
## print tree
|
||||||
|
|
||||||
for pre, fill, node in RenderTree(root):
|
for pre, fill, node in RenderTree(root):
|
||||||
treestr = u"%s%s" % (pre, node.id)
|
treestr = u"%s%s" % (pre, node.id)
|
||||||
if (type(node) == CondTreeNode):
|
if type(node) == CondTreeNode:
|
||||||
print(treestr.ljust(16), node.weight, ' arrow(s) at [site', node.site,
|
print(treestr.ljust(19), node.weight, ' arrow(s) at [site', node.site,
|
||||||
'in cell', node.x, end='')
|
'in cell', node.x, end='')
|
||||||
if (not node.depth == 2): # tree.depth()
|
if not node.depth == 2: # tree.depth()
|
||||||
print(end=']\n')
|
print(end=']\n')
|
||||||
else:
|
else:
|
||||||
print('] > ', node.children[0].id, end='\n')
|
print('] --> ', node.children[0].id, end='\n')
|
||||||
|
|
||||||
|
"""
|
||||||
|
## get the tree
|
||||||
|
|
||||||
|
|
||||||
|
def get_tree():
|
||||||
|
return root
|
||||||
|
|
||||||
print('\nNext step: single rule extraction from tree. 😃️')
|
|
||||||
# print([node.id for node in LevelOrderIter(root) if node.is_leaf])
|
# print([node.id for node in LevelOrderIter(root) if node.is_leaf])
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
# from ete2 import Tree
|
||||||
|
from anytree import RenderTree
|
||||||
|
import rules_tree
|
||||||
|
|
||||||
|
tree = rules_tree.get_tree()
|
||||||
|
|
||||||
|
print('type: ', type(tree))
|
||||||
|
print(tree.depth, ' < depth')
|
||||||
|
print(tree.is_leaf, ' < is_leaf')
|
||||||
|
print(tree.is_root, ' < is_root')
|
||||||
|
print(tree.height, ' < height')
|
||||||
|
print(tree.parent, ' < parent')
|
||||||
|
print(tree.ancestors, ' < ancestors')
|
||||||
|
print(tree.anchestors, ' < anchestors')
|
||||||
|
print(tree.siblings, ' < siblings')
|
||||||
|
print(len(tree.leaves), ' < len(tree.leaves)')
|
||||||
|
print(len(tree.path), ' < len(tree.path)')
|
||||||
|
print('path: ', tree.path)
|
||||||
|
print('children: ', tree.children)
|
||||||
|
print('descendants[0]: ', tree.descendants[0])
|
||||||
|
|
||||||
|
print('\n to fix: (leaves)', end='\n\n')
|
||||||
|
for pre, fill, node in RenderTree(tree):
|
||||||
|
treestr = u"%s%s" % (pre, node.id)
|
||||||
|
if type(node) == rules_tree.CondTreeNode:
|
||||||
|
print(treestr.ljust(19), node.weight, ' arrow(s) at [site', node.site,
|
||||||
|
'in cell', node.x, end='')
|
||||||
|
if not node.depth == 2: # tree.depth()
|
||||||
|
print(end=']\n')
|
||||||
|
else:
|
||||||
|
print('] --> ', node.children[0].id, end='\n')
|
||||||
|
|
||||||
|
|
||||||
|
print('\nNext step: single rule extraction from tree. 😃️')
|
Loading…
Reference in New Issue