From 7eff903837d1000270d4911648215b59c6f4e51f Mon Sep 17 00:00:00 2001 From: nwickel Date: Sun, 10 Mar 2024 17:50:09 +0100 Subject: [PATCH] Added script to check on process models for case clusters; not sure this makes sense --- code/12_pm-case-clusters.py | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 code/12_pm-case-clusters.py diff --git a/code/12_pm-case-clusters.py b/code/12_pm-case-clusters.py new file mode 100644 index 0000000..1634a9a --- /dev/null +++ b/code/12_pm-case-clusters.py @@ -0,0 +1,45 @@ +# 12_pm-case-clusters.py +# +# content: (1) Load data and create event log +# (2) Infos for clusters +# (3) Process maps for clusters +# +# input: results/haum/eventlogs_pre-corona_item-clusters.csv +# output: results/haum/pn_infos_clusters.csv +# +# last mod: 2024-03-06 + +import pm4py +import pandas as pd + +from python_helpers import eval_pm, pn_infos + +#--------------- (1) Load data and create event logs --------------- + +dat = pd.read_csv("results/haum/eventlogs_2019_case-clusters.csv", sep = ";") + +event_log = pm4py.format_dataframe(dat, case_id = "case", activity_key = "item", + timestamp_key = "date.start") + +#--------------- (2) Infos for clusters --------------- + +# Merge clusters into data frame +eval = pd.DataFrame(columns = ["fitness", "precision", "generalizability", + "simplicity", "sound", "narcs", "ntrans", + "nplaces", "nvariants", "mostfreq"]) +for cluster in event_log.cluster.unique().tolist(): + eval = pd.concat([eval, pn_infos(event_log, "cluster", cluster)]) +eval = eval.sort_index() + +eval.to_csv("results/haum/pn_infos_clusters.csv", sep = ";") + +#--------------- (3) Process maps for clusters --------------- + +for cluster in event_log.cluster.unique().tolist(): + subdata = event_log[event_log.cluster == cluster] + subnet, subim, subfm = pm4py.discover_petri_net_inductive(subdata, noise_threshold=.3) + pm4py.save_vis_petri_net(subnet, subim, subfm, + "results/processmaps/petrinet_cluster" + str(cluster) + "_cases.png") + bpmn = pm4py.convert.convert_to_bpmn(subnet, subim, subfm) + pm4py.vis.save_vis_bpmn(bpmn, "results/processmaps/bpmn_cluster" + + str(cluster) + "_cases.png")