linpershey/process_mining
0
1import inspect2import os3import sys4 5from pm4py.algo.discovery.dfg import algorithm as dfg_algorithm6from pm4py.objects.conversion.log import converter as log_conversion7from pm4py.objects.log.exporter.xes import exporter as xes_exporter8from pm4py.objects.log.importer.xes import importer as xes_importer9from pm4py.objects.log.util import insert_classifier10from pm4py.util import constants, pandas_utils11from pm4py.visualization.dfg import visualizer as dfg_vis12 13currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))14parentdir = os.path.dirname(currentdir)15sys.path.insert(0, parentdir)16 17 18def execute_script():19 log_input_directory = "xesinput"20 all_logs_names = os.listdir(log_input_directory)21 all_logs_names = [log for log in all_logs_names if ".xe" in log]22 23 for logName in all_logs_names:24 # logPath = os.path.join("..", "tests", "inputData", logName)25 log_path = log_input_directory + "\\" + logName26 log = xes_importer.apply(log_path)27 print("\n\n")28 print("log loaded")29 print("Number of traces - ", len(log))30 event_log = log_conversion.apply(log, variant=log_conversion.TO_EVENT_STREAM)31 print("Number of events - ", len(event_log))32 print("Classifiers ", log.classifiers)33 exp_log_name = "xescert_exportlogs" + "\\" + "exp_" + logName34 print("exporting log", exp_log_name)35 xes_exporter.apply(log, exp_log_name)36 print("exported log", exp_log_name)37 38 log, classifier_attr_key = insert_classifier.search_act_class_attr(log)39 40 classifiers = list(log.classifiers.keys())41 if classifier_attr_key is None and classifiers:42 try:43 print(classifiers)44 log, classifier_attr_key = insert_classifier.insert_activity_classifier_attribute(log, classifiers[0])45 print(classifier_attr_key)46 except:47 print("exception in handling classifier")48 49 if classifier_attr_key is None:50 classifier_attr_key = "concept:name"51 52 if len(event_log) > 0 and classifier_attr_key in event_log[0]:53 parameters = {constants.PARAMETER_CONSTANT_ACTIVITY_KEY: classifier_attr_key}54 55 dfg = dfg_algorithm.apply(log, parameters=parameters)56 gviz = dfg_vis.apply(dfg, log=log, variant="frequency", parameters=parameters)57 # dfg_vis.view(gviz)58 59 dfg_vis.save(gviz, "xescert_images\\" + logName.replace("xes", "png"))60 61 print("Reimporting log file just exported - ", exp_log_name)62 63 log = xes_importer.apply(exp_log_name)64 print("log loaded", exp_log_name)65 print("Number of traces - ", len(log))66 event_log = log_conversion.apply(log, variant=log_conversion.TO_EVENT_STREAM)67 print("Number of events - ", len(event_log))68 print("Classifiers ", log.classifiers)69 70 71if __name__ == "__main__":72 execute_script()73 