Spaces:
Sleeping
Sleeping
import os | |
from pm4py import util | |
from pm4py.algo.conformance import alignments as ali | |
from pm4py.algo.conformance.alignments.petri_net.variants.state_equation_a_star import Parameters | |
from pm4py.objects import log as log_lib | |
from pm4py.objects.log.importer.xes import importer as xes_importer | |
from pm4py.objects.petri_net.importer import importer as petri_importer | |
from pm4py.objects.petri_net.utils.align_utils import pretty_print_alignments | |
def align(trace, net, im, fm, model_cost_function, sync_cost_function): | |
trace_costs = list(map(lambda e: 1000, trace)) | |
params = dict() | |
params[util.constants.PARAMETER_CONSTANT_ACTIVITY_KEY] = log_lib.util.xes.DEFAULT_NAME_KEY | |
params[Parameters.PARAM_MODEL_COST_FUNCTION] = model_cost_function | |
params[Parameters.PARAM_TRACE_COST_FUNCTION] = trace_costs | |
params[Parameters.PARAM_SYNC_COST_FUNCTION] = sync_cost_function | |
return ali.petri_net.algorithm.apply_trace(trace, net, im, fm, parameters=params, | |
variant=ali.petri_net.algorithm.VERSION_STATE_EQUATION_A_STAR) | |
def execute_script(): | |
log_path = os.path.join("..", "tests", "input_data", "running-example.xes") | |
pnml_path = os.path.join("..", "tests", "input_data", "running-example.pnml") | |
# log_path = 'C:/Users/bas/Documents/tue/svn/private/logs/a32_logs/a32f0n05.xes' | |
# pnml_path = 'C:/Users/bas/Documents/tue/svn/private/logs/a32_logs/a32.pnml' | |
log = xes_importer.apply(log_path) | |
net, marking, fmarking = petri_importer.apply(pnml_path) | |
model_cost_function = dict() | |
sync_cost_function = dict() | |
for t in net.transitions: | |
if t.label is not None: | |
model_cost_function[t] = 1000 | |
sync_cost_function[t] = 0 | |
else: | |
model_cost_function[t] = 1 | |
alignments = [] | |
for trace in log: | |
alignments.append(align(trace, net, marking, fmarking, model_cost_function, sync_cost_function)) | |
pretty_print_alignments(alignments) | |
if __name__ == '__main__': | |
execute_script() | |