%reset import pm4py import pandas as pd import numpy as np import matplotlib.pyplot as plt from pm4py.visualization.petri_net import visualizer as pn_visualizer parameters = {pn_visualizer.Variants.FREQUENCY.value.Parameters.FORMAT: "png"} ###### Load data and create event logs ###### dat = pd.read_csv("results/haum/event_logfiles_2024-01-02_19-44-50.csv", sep = ";") dat = dat[dat["date.start"] < "2020-03-13"] dat = dat[dat["path"] != 81621] # exclude broken trace # --> only pre corona (before artworks were updated) event_log = pm4py.format_dataframe(dat, case_id='case', activity_key='event', timestamp_key='date.start') event_log.event.value_counts() event_log.event.value_counts(normalize=True) dfg, start_activities, end_activities = pm4py.discover_dfg(event_log) pm4py.view_dfg(dfg, start_activities, end_activities) #filtered_log = pm4py.filter_event_attribute_values(event_log, 'item', [80]) i_net, im, fm = pm4py.discover_petri_net_inductive(event_log) pm4py.vis.view_petri_net(i_net, im, fm) gviz = pn_visualizer.apply(i_net, im, fm, parameters=parameters, variant=pn_visualizer.Variants.FREQUENCY, log=event_log) pn_visualizer.view(gviz) len(i_net.places) len(i_net.transitions) len(i_net.arcs) a_net, im, fm = pm4py.discover_petri_net_alpha(event_log) pm4py.vis.view_petri_net(a_net, im, fm) gviz = pn_visualizer.apply(a_net, im, fm, parameters=parameters, variant=pn_visualizer.Variants.FREQUENCY, log=event_log) pn_visualizer.view(gviz) len(a_net.places) len(a_net.transitions) len(a_net.arcs) h_net, im, fm = pm4py.discover_petri_net_heuristics(filtered_log) pm4py.vis.view_petri_net(h_net, im, fm) len(h_net.places) len(h_net.transitions) len(h_net.arcs)