def build_sync_net(trace, petri_net, initial_marking, final_marking, parameters=None): """ Build the sync product net between the Petri net and the trace prefix Parameters --------------- trace Trace prefix petri_net Petri net initial_marking Initial marking final_marking Final marking parameters Possible parameters of the algorithm """ if parameters is None: parameters = {} activity_key = exec_utils.get_param_value(Parameters.ACTIVITY_KEY, parameters, xes_constants.DEFAULT_NAME_KEY) trace_net, trace_im, trace_fm = construct_trace_net(trace, activity_key=activity_key) sync_prod, sync_initial_marking, sync_final_marking = construct(trace_net, trace_im, trace_fm, petri_net, initial_marking, final_marking, utils.SKIP) return sync_prod, sync_initial_marking, sync_final_marking
def construct_synchronous_product_net( trace: Trace, petri_net: PetriNet, initial_marking: Marking, final_marking: Marking) -> Tuple[PetriNet, Marking, Marking]: """ constructs the synchronous product net between a trace and a Petri net process model. Parameters ---------------- trace Trace of an event log petri_net Petri net initial_marking Initial marking final_marking Final marking Returns ---------------- sync_net Synchronous product net sync_im Initial marking of the sync net sync_fm Final marking of the sync net """ from pm4py.objects.petri_net.utils.petri_utils import construct_trace_net from pm4py.objects.petri_net.utils.synchronous_product import construct from pm4py.objects.petri_net.utils.align_utils import SKIP trace_net, trace_im, trace_fm = construct_trace_net(trace) sync_net, sync_im, sync_fm = construct(trace_net, trace_im, trace_fm, petri_net, initial_marking, final_marking, SKIP) return sync_net, sync_im, sync_fm