Esempio n. 1
0
	def test_docmeasures11(self):
		from pm4py.log.importer import xes as xes_importer

		log = xes_importer.import_from_file_xes('inputData\\receipt.xes')

		from pm4py.algo.alpha import factory as alpha_miner
		from pm4py.algo.inductive import factory as inductive_miner

		alpha_petri, alpha_initial_marking, alpha_final_marking = alpha_miner.apply(log)
		inductive_petri, inductive_initial_marking, inductive_final_marking = inductive_miner.apply(log)


		from pm4py.evaluation.replay_fitness import factory as replay_factory

		fitness_alpha = replay_factory.apply(log, alpha_petri, alpha_initial_marking, alpha_final_marking)
		fitness_inductive = replay_factory.apply(log, inductive_petri, inductive_initial_marking, inductive_final_marking)
		# print("fitness_alpha=",fitness_alpha)
		# print("fitness_inductive=",fitness_inductive)

		from pm4py.evaluation.precision import factory as precision_factory

		precision_alpha = precision_factory.apply(log, alpha_petri, alpha_initial_marking, alpha_final_marking)
		precision_inductive = precision_factory.apply(log, inductive_petri, inductive_initial_marking, inductive_final_marking)

		# print("precision_alpha=",precision_alpha)
		# print("precision_inductive=",precision_inductive)

		from pm4py.evaluation.generalization import factory as generalization_factory

		generalization_alpha = generalization_factory.apply(log, alpha_petri, alpha_initial_marking, alpha_final_marking)
		generalization_inductive = generalization_factory.apply(log, inductive_petri, inductive_initial_marking,
																inductive_final_marking)

		# print("generalization_alpha=",generalization_alpha)
		# print("generalization_inductive=",generalization_inductive)

		from pm4py.evaluation.simplicity import factory as simplicity_factory

		simplicity_alpha = simplicity_factory.apply(alpha_petri)
		simplicity_inductive = simplicity_factory.apply(inductive_petri)

		# print("simplicity_alpha=",simplicity_alpha)
		# print("simplicity_inductive=",simplicity_inductive)


		from pm4py.evaluation import factory as evaluation_factory

		alpha_evaluation_result = evaluation_factory.apply(log, alpha_petri, alpha_initial_marking, alpha_final_marking)
		# print("alpha_evaluation_result=",alpha_evaluation_result)

		inductive_evaluation_result = evaluation_factory.apply(log, inductive_petri, inductive_initial_marking,
															   inductive_final_marking)
 def test_docmeasures11(self):
     # to avoid static method warnings in tests,
     # that by construction of the unittest package have to be expressed in such way
     self.dummy_variable = "dummy_value"
     from pm4py.objects.log.importer.xes import factory as xes_importer
     log = xes_importer.import_log(os.path.join("input_data",
                                                "receipt.xes"))
     from pm4py.algo.discovery.alpha import factory as alpha_miner
     from pm4py.algo.discovery.inductive import factory as inductive_miner
     alpha_petri, alpha_initial_marking, alpha_final_marking = alpha_miner.apply(
         log)
     inductive_petri, inductive_initial_marking, inductive_final_marking = inductive_miner.apply(
         log)
     from pm4py.evaluation.replay_fitness import factory as replay_factory
     fitness_alpha = replay_factory.apply(log, alpha_petri,
                                          alpha_initial_marking,
                                          alpha_final_marking)
     fitness_inductive = replay_factory.apply(log, inductive_petri,
                                              inductive_initial_marking,
                                              inductive_final_marking)
     del fitness_alpha
     del fitness_inductive
     from pm4py.evaluation.precision import factory as precision_factory
     precision_alpha = precision_factory.apply(log, alpha_petri,
                                               alpha_initial_marking,
                                               alpha_final_marking)
     precision_inductive = precision_factory.apply(
         log, inductive_petri, inductive_initial_marking,
         inductive_final_marking)
     del precision_alpha
     del precision_inductive
     from pm4py.evaluation.generalization import factory as generalization_factory
     generalization_alpha = generalization_factory.apply(
         log, alpha_petri, alpha_initial_marking, alpha_final_marking)
     generalization_inductive = generalization_factory.apply(
         log, inductive_petri, inductive_initial_marking,
         inductive_final_marking)
     del generalization_alpha
     del generalization_inductive
     from pm4py.evaluation.simplicity import factory as simplicity_factory
     simplicity_alpha = simplicity_factory.apply(alpha_petri)
     simplicity_inductive = simplicity_factory.apply(inductive_petri)
     del simplicity_alpha
     del simplicity_inductive
     from pm4py.evaluation import factory as evaluation_factory
     alpha_evaluation_result = evaluation_factory.apply(
         log, alpha_petri, alpha_initial_marking, alpha_final_marking)
     inductive_evaluation_result = evaluation_factory.apply(
         log, inductive_petri, inductive_initial_marking,
         inductive_final_marking)
     del alpha_evaluation_result
     del inductive_evaluation_result
Esempio n. 3
0
 def test_tokenreplay(self):
     log = xes_importer.apply(
         os.path.join("input_data", "running-example.xes"))
     from pm4py.algo.discovery.alpha import factory as alpha_miner
     net, im, fm = alpha_miner.apply(log)
     from pm4py.algo.conformance.tokenreplay import factory as token_replay
     replayed_traces = token_replay.apply(log,
                                          net,
                                          im,
                                          fm,
                                          variant="token_replay")
     replayed_traces = token_replay.apply(log,
                                          net,
                                          im,
                                          fm,
                                          variant="backwards")
     from pm4py.evaluation.replay_fitness import factory as rp_fitness_evaluator
     fitness = rp_fitness_evaluator.apply(
         log, net, im, fm, variant=rp_fitness_evaluator.TOKEN_BASED)
     evaluation = rp_fitness_evaluator.evaluate(
         replayed_traces, variant=rp_fitness_evaluator.TOKEN_BASED)
     from pm4py.evaluation.precision import factory as precision_evaluator
     precision = precision_evaluator.apply(
         log, net, im, fm, variant=precision_evaluator.ETCONFORMANCE_TOKEN)
     from pm4py.evaluation.generalization import factory as generalization_evaluation
     generalization = generalization_evaluation.apply(
         log,
         net,
         im,
         fm,
         variant=generalization_evaluation.GENERALIZATION_TOKEN)
Esempio n. 4
0
 def test_etc1(self):
     # to avoid static method warnings in tests,
     # that by construction of the unittest package have to be expressed in such way
     self.dummy_variable = "dummy_value"
     log = xes_importer.import_log(
         os.path.join(INPUT_DATA_DIR, "running-example.xes"))
     net, marking, final_marking = dfg_only.apply(log, None)
     precision = etc_factory.apply(log, net, marking, final_marking)
     del precision
 def test_evaluation_pm1(self):
     log = xes_importer.import_from_file_xes(
         os.path.join(INPUT_DATA_DIR, "running-example.xes"))
     net, marking, final_marking = dfg_only.apply(log, None)
     fitness = fitness_factory.apply(log, net, marking, final_marking)
     precision = precision_factory.apply(log, net, marking, final_marking)
     generalization = generalization_factory.apply(log, net, marking,
                                                   final_marking)
     simplicity = simplicity_factory.apply(net)
Esempio n. 6
0
 def test_heu_log(self):
     log = xes_importer.apply(
         os.path.join("input_data", "running-example.xes"))
     net, im, fm = heuristics_miner.apply(log)
     aligned_traces_tr = tr_factory.apply(log, net, im, fm)
     aligned_traces_alignments = align_factory.apply(log, net, im, fm)
     evaluation = eval_factory.apply(log, net, im, fm)
     fitness = rp_fit_factory.apply(log, net, im, fm)
     precision = precision_factory.apply(log, net, im, fm)
     generalization = generalization_factory.apply(log, net, im, fm)
     simplicity = simplicity_factory.apply(net)
Esempio n. 7
0
 def test_inductiveminer_df(self):
     log = csv_import_adapter.import_dataframe_from_path(
         os.path.join("input_data", "running-example.csv"))
     net, im, fm = inductive_miner.apply(log)
     aligned_traces_tr = tr_factory.apply(log, net, im, fm)
     aligned_traces_alignments = align_factory.apply(log, net, im, fm)
     evaluation = eval_factory.apply(log, net, im, fm)
     fitness = rp_fit_factory.apply(log, net, im, fm)
     precision = precision_factory.apply(log, net, im, fm)
     generalization = generalization_factory.apply(log, net, im, fm)
     simplicity = simplicity_factory.apply(net)
Esempio n. 8
0
 def test_inductiveminer_stream(self):
     stream = csv_importer.apply(
         os.path.join("input_data", "running-example.csv"))
     net, im, fm = inductive_miner.apply(stream)
     aligned_traces_tr = tr_factory.apply(stream, net, im, fm)
     aligned_traces_alignments = align_factory.apply(stream, net, im, fm)
     evaluation = eval_factory.apply(stream, net, im, fm)
     fitness = rp_fit_factory.apply(stream, net, im, fm)
     precision = precision_factory.apply(stream, net, im, fm)
     generalization = generalization_factory.apply(stream, net, im, fm)
     simplicity = simplicity_factory.apply(net)
Esempio n. 9
0
 def test_evaluation_pm1(self):
     # to avoid static method warnings in tests,
     # that by construction of the unittest package have to be expressed in such way
     self.dummy_variable = "dummy_value"
     log = xes_importer.import_log(
         os.path.join(INPUT_DATA_DIR, "running-example.xes"))
     net, marking, final_marking = inductive_miner.apply(log)
     fitness = fitness_factory.apply(log, net, marking, final_marking)
     precision = precision_factory.apply(log, net, marking, final_marking)
     generalization = generalization_factory.apply(log, net, marking,
                                                   final_marking)
     simplicity = simplicity_factory.apply(net)
     del fitness
     del precision
     del generalization
     del simplicity
Esempio n. 10
0
 def test_alignment(self):
     log = xes_importer.apply(
         os.path.join("input_data", "running-example.xes"))
     from pm4py.algo.discovery.alpha import factory as alpha_miner
     net, im, fm = alpha_miner.apply(log)
     from pm4py.algo.conformance.alignments import factory as alignments
     aligned_traces = alignments.apply(
         log, net, im, fm, version=alignments.VERSION_STATE_EQUATION_A_STAR)
     aligned_traces = alignments.apply(
         log,
         net,
         im,
         fm,
         version=alignments.VERSION_DIJKSTRA_NO_HEURISTICS)
     from pm4py.evaluation.replay_fitness import factory as rp_fitness_evaluator
     fitness = rp_fitness_evaluator.apply(
         log, net, im, fm, variant=rp_fitness_evaluator.ALIGNMENT_BASED)
     evaluation = rp_fitness_evaluator.evaluate(
         aligned_traces, variant=rp_fitness_evaluator.ALIGNMENT_BASED)
     from pm4py.evaluation.precision import factory as precision_evaluator
     precision = precision_evaluator.apply(
         log, net, im, fm, variant=precision_evaluator.ALIGN_ETCONFORMANCE)
Esempio n. 11
0
                                      variant="token_replay")[
                    'perc_fit_traces']
            t2 = time.time()
            times_tokenreplay_imdf[logName] = t2 - t1

            if ENABLE_ALIGNMENTS:
                t1 = time.time()
                fitness_align_imdf[logName] = \
                    fitness_factory.apply(log, inductive_model, inductive_im, inductive_fm,
                                          variant="alignments", parameters=parameters)['percFitTraces']
                t2 = time.time()
                times_alignments_imdf[logName] = t2 - t1

            precision_alpha[logName] = precision_factory.apply(
                log,
                alpha_model,
                alpha_initial_marking,
                alpha_final_marking,
                parameters=parameters)
            generalization_alpha[logName] = generalization_factory.apply(
                log,
                alpha_model,
                alpha_initial_marking,
                alpha_final_marking,
                parameters=parameters)
            simplicity_alpha[logName] = simplicity_factory.apply(
                alpha_model, parameters=parameters)

            precision_imdf[logName] = precision_factory.apply(
                log,
                inductive_model,
                inductive_im,
#---------------------------
from pm4py.objects.log.importer.xes import factory as xes_import_factory
log = xes_import_factory.apply("running-example.xes")
from pm4py.algo.discovery.alpha import factory as alpha_miner
from pm4py.algo.discovery.inductive import factory as inductive_miner

from pm4py.evaluation.precision import factory as precision_factory

alpha_petri, alpha_initial_marking, alpha_final_marking = alpha_miner.apply(
    log)
inductive_petri, inductive_initial_marking, inductive_final_marking = inductive_miner.apply(
    log)

precision_alpha = precision_factory.apply(log, alpha_petri,
                                          alpha_initial_marking,
                                          alpha_final_marking)
precision_inductive = precision_factory.apply(log, inductive_petri,
                                              inductive_initial_marking,
                                              inductive_final_marking)

print("precision_alpha=", precision_alpha)
print("precision_inductive=", precision_inductive)

from pm4py.algo.discovery.dfg import factory as dfg_factory
dfg = dfg_factory.apply(log)
#-----------------------------
from collections import Counter
dfg1 = Counter({
    ('scroll', 'blur'): 1,
    ('selection', 'blur'): 1,
Esempio n. 13
0
 def test_etc1(self):
     log = xes_importer.import_from_file_xes(os.path.join(INPUT_DATA_DIR, "running-example.xes"))
     net, marking, final_marking = dfg_only.apply(log, None)
     precision = etc_factory.apply(log, net, marking, final_marking)
Esempio n. 14
0
def main(system, miner):
    if DATA_PATH is None:
        log = xes_importer.import_log(
            os.path.join(WORK_PATH, "data", "variants",
                         str(system) + "_train.xes"))
    else:
        log = xes_importer.import_log(
            os.path.join(DATA_PATH, "variants",
                         str(system) + "_train.xes"))

    bestmodel = None
    bestfit = None
    bestPrec = None
    bestGen = 0
    bestfittraces = 0

    gen_bestmodel = None
    gen_bestfit = None
    gen_bestPrec = None
    gen_bestGen = 0

    if DATA_PATH is None:
        dir = os.listdir(os.path.join(WORK_PATH, "data", "pns", str(system)))
    else:
        dir = os.listdir(os.path.join(DATA_PATH, "pns", str(system)))

    for file in dir:
        if system in file and miner in file:
            if DATA_PATH is None:
                path = os.path.join(WORK_PATH, "data", "pns", str(system),
                                    file)
            else:
                path = os.path.join(DATA_PATH, "pns", str(system), file)

            print("Checking conformance of file:", path)

            net, initial_marking, final_marking = pnml_importer.import_net(
                path)

            fitness = replay_factory.apply(log, net, initial_marking,
                                           final_marking)
            precision = precision_factory.apply(log, net, initial_marking,
                                                final_marking)
            generalization = generalization_factory.apply(
                log, net, initial_marking, final_marking)

            if fitness['perc_fit_traces'] > bestfittraces:
                bestfittraces = fitness['perc_fit_traces']
                bestmodel = path
                bestfit = fitness
                bestPrec = precision
                bestGen = generalization

            elif generalization > bestGen and fitness[
                    'perc_fit_traces'] == bestfittraces:
                bestmodel = path
                bestfit = fitness
                bestPrec = precision
                bestGen = generalization

            if generalization > gen_bestGen:
                gen_bestmodel = path
                gen_bestfit = fitness
                gen_bestPrec = precision
                gen_bestGen = generalization

    net, initial_marking, final_marking = pnml_importer.import_net(
        gen_bestmodel)
    try:
        align_fitness = replay_factory.apply(log,
                                             net,
                                             initial_marking,
                                             final_marking,
                                             variant="alignments")
    except:
        align_fitness = {"averageFitness": "N/A"}
    try:
        align_precision = precision_factory.apply(
            log,
            net,
            initial_marking,
            final_marking,
            variant="align_etconformance")
    except:
        align_precision = "N/A"
    print("")
    print("")
    print(
        "*********** Petri net w/ highest ratio of fitting traces and high generalization *************** "
    )
    print("Petri net file:", gen_bestmodel)
    print("Token-based Fitness=", gen_bestfit['average_trace_fitness'])
    print("Token-based Precision=", gen_bestPrec)
    print("Alignment-based Fitness=", align_fitness['averageFitness'])
    print("Alignment-based Precision=", align_precision)
    print("Generalization=", gen_bestGen)

    net, initial_marking, final_marking = pnml_importer.import_net(bestmodel)
    try:
        align_fitness = replay_factory.apply(log,
                                             net,
                                             initial_marking,
                                             final_marking,
                                             variant="alignments")
    except:
        align_fitness = {"averageFitness": "N/A"}

    try:
        align_precision = precision_factory.apply(
            log,
            net,
            initial_marking,
            final_marking,
            variant="align_etconformance")
    except:
        align_precision = "N/A"
    print("")
    print(
        "*********** Petri net w/ highest ratio of fitting traces and high generalization *************** "
    )
    print("Petri net file:", bestmodel)
    print("Token-based Fitness=", bestfit['average_trace_fitness'])
    print("Token-based Precision=", bestPrec)
    print("Alignment-based Fitness=", align_fitness['averageFitness'])
    print("Alignment-based Precision=", align_precision)
    print("Generalization=", bestGen)