mtt_haum/code/pm_infos-clusters.py

39 lines
1.4 KiB
Python

%reset
import pm4py
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from python_helpers import eval_pm, pn_infos
###### Load data and create event logs ######
dat = pd.read_csv("results/haum/event_logfiles_pre-corona_with-clusters.csv", sep = ";")
log_path = pm4py.format_dataframe(dat, case_id = "path", activity_key = "event",
timestamp_key = "date.start")
###### Infos for clusters ######
# Merge clusters into data frame
mdc = pd.DataFrame(columns = ["fitness", "precision", "generalizability",
"simplicity", "sound", "narcs", "ntrans",
"nplaces", "nvariants", "mostfreq"])
for cluster in log_path.grp.unique().tolist():
mdc = pd.concat([mdc, pn_infos(log_path, "grp", cluster)])
mdc = mdc.sort_index()
# Export
mdc.to_csv("results/haum/pn_infos_clusters.csv", sep = ";")
###### Process maps for clusters ######
for cluster in log_path.grp.unique().tolist():
subdata = log_path[log_path.grp == cluster]
subnet, subim, subfm = pm4py.discover_petri_net_inductive(subdata)
pm4py.save_vis_petri_net(subnet, subim, subfm,
"results/processmaps/petrinet_cluster" + str(cluster).zfill(3) + ".png")
bpmn = pm4py.convert.convert_to_bpmn(subnet, subim, subfm)
pm4py.vis.save_vis_bpmn(bpmn, "results/processmaps/bpmn_cluster_" + str(cluster).zfill(3) + ".png")