process_mining / pm4py /examples /align_decomposition_ex_paper.py
linpershey's picture
Add 'pm4py/' from commit '80970016c5e1e79af7c37df0dd88e17587fe7bcf'
b4ba3ec
raw
history blame
3.24 kB
from pm4py.objects.petri_net.obj import PetriNet, Marking
from pm4py.objects.petri_net.utils.petri_utils import add_arc_from_to
from pm4py.objects.petri_net.utils import decomposition
from examples import examples_conf
import importlib.util
def execute_script():
net = PetriNet("")
start = PetriNet.Place("start")
end = PetriNet.Place("end")
c1 = PetriNet.Place("c1")
c2 = PetriNet.Place("c2")
c3 = PetriNet.Place("c3")
c4 = PetriNet.Place("c4")
c5 = PetriNet.Place("c5")
c6 = PetriNet.Place("c6")
c7 = PetriNet.Place("c7")
c8 = PetriNet.Place("c8")
c9 = PetriNet.Place("c9")
net.places.add(c1)
net.places.add(c2)
net.places.add(c3)
net.places.add(c4)
net.places.add(c5)
net.places.add(c6)
net.places.add(c7)
net.places.add(c8)
net.places.add(c9)
net.places.add(start)
net.places.add(end)
t1 = PetriNet.Transition("t1", "a")
t2 = PetriNet.Transition("t2", None)
t3 = PetriNet.Transition("t3", "b")
t4 = PetriNet.Transition("t4", "c")
t5 = PetriNet.Transition("t5", "d")
t6 = PetriNet.Transition("t6", "e")
t7 = PetriNet.Transition("t7", None)
t8 = PetriNet.Transition("t8", "f")
t9 = PetriNet.Transition("t9", "g")
t10 = PetriNet.Transition("t10", "h")
t11 = PetriNet.Transition("t11", None)
net.transitions.add(t1)
net.transitions.add(t2)
net.transitions.add(t3)
net.transitions.add(t4)
net.transitions.add(t5)
net.transitions.add(t6)
net.transitions.add(t7)
net.transitions.add(t8)
net.transitions.add(t9)
net.transitions.add(t10)
net.transitions.add(t11)
add_arc_from_to(start, t1, net)
add_arc_from_to(t1, c1, net)
add_arc_from_to(t1, c2, net)
add_arc_from_to(c1, t2, net)
add_arc_from_to(c1, t3, net)
add_arc_from_to(c2, t4, net)
add_arc_from_to(t2, c3, net)
add_arc_from_to(t3, c3, net)
add_arc_from_to(t4, c4, net)
add_arc_from_to(c3, t5, net)
add_arc_from_to(c4, t5, net)
add_arc_from_to(t5, c5, net)
add_arc_from_to(c5, t6, net)
add_arc_from_to(t6, c1, net)
add_arc_from_to(t6, c2, net)
add_arc_from_to(c5, t7, net)
add_arc_from_to(t7, c7, net)
add_arc_from_to(t7, c6, net)
add_arc_from_to(c7, t8, net)
add_arc_from_to(c6, t9, net)
add_arc_from_to(t8, c8, net)
add_arc_from_to(t9, c9, net)
add_arc_from_to(c8, t11, net)
add_arc_from_to(c9, t11, net)
add_arc_from_to(t11, end, net)
add_arc_from_to(c5, t10, net)
add_arc_from_to(t10, end, net)
im = Marking()
im[start] = 1
fm = Marking()
fm[end] = 1
decomposed_net = decomposition.decompose(net, im, fm)
gvizs = []
if importlib.util.find_spec("graphviz"):
from pm4py.visualization.petri_net import visualizer
gvizs.append(visualizer.apply(net, im, final_marking=fm, parameters={"format": examples_conf.TARGET_IMG_FORMAT}))
visualizer.view(gvizs[len(gvizs) - 1])
for snet, sim, sfm in decomposed_net:
gvizs.append(visualizer.apply(snet, sim, final_marking=sfm, parameters={"format": examples_conf.TARGET_IMG_FORMAT}))
visualizer.view(gvizs[len(gvizs) - 1])
if __name__ == "__main__":
execute_script()