Example #1
0
def execute_script():
    # import the log
    log_path = os.path.join("..", "tests", "input_data", "receipt.xes")
    log = xes_importer.apply(log_path)
    # apply Inductive Miner
    net, initial_marking, final_marking = inductive_miner.apply(log)
    # get visualization
    variant = pn_vis.Variants.PERFORMANCE
    parameters_viz = {
        pn_vis.Variants.PERFORMANCE.value.Parameters.AGGREGATION_MEASURE:
        "mean",
        pn_vis.Variants.PERFORMANCE.value.Parameters.FORMAT: "svg"
    }
    gviz = pn_vis.apply(net,
                        initial_marking,
                        final_marking,
                        log=log,
                        variant=variant,
                        parameters=parameters_viz)
    pn_vis.view(gviz)
    # do another visualization with frequency
    variant = pn_vis.Variants.FREQUENCY
    parameters_viz = {pn_vis.Variants.FREQUENCY.value.Parameters.FORMAT: "svg"}
    gviz = pn_vis.apply(net,
                        initial_marking,
                        final_marking,
                        log=log,
                        variant=variant,
                        parameters=parameters_viz)
    pn_vis.view(gviz)
Example #2
0
    def test_52(self):
        # creating an empty Petri net
        from pm4py.objects.petri.petrinet import PetriNet, Marking
        net = PetriNet("new_petri_net")

        # creating source, p_1 and sink place
        source = PetriNet.Place("source")
        sink = PetriNet.Place("sink")
        p_1 = PetriNet.Place("p_1")
        # add the places to the Petri Net
        net.places.add(source)
        net.places.add(sink)
        net.places.add(p_1)

        # Create transitions
        t_1 = PetriNet.Transition("name_1", "label_1")
        t_2 = PetriNet.Transition("name_2", "label_2")
        # Add the transitions to the Petri Net
        net.transitions.add(t_1)
        net.transitions.add(t_2)

        # Add arcs
        from pm4py.objects.petri import utils
        utils.add_arc_from_to(source, t_1, net)
        utils.add_arc_from_to(t_1, p_1, net)
        utils.add_arc_from_to(p_1, t_2, net)
        utils.add_arc_from_to(t_2, sink, net)

        # Adding tokens
        initial_marking = Marking()
        initial_marking[source] = 1
        final_marking = Marking()
        final_marking[sink] = 1

        from pm4py.objects.petri.exporter import exporter as pnml_exporter
        pnml_exporter.apply(net, initial_marking, "createdPetriNet1.pnml", final_marking=final_marking)

        from pm4py.visualization.petrinet import visualizer as pn_visualizer
        gviz = pn_visualizer.apply(net, initial_marking, final_marking)

        from pm4py.visualization.petrinet import visualizer as pn_visualizer
        parameters = {pn_visualizer.Variants.WO_DECORATION.value.Parameters.FORMAT: "svg"}
        gviz = pn_visualizer.apply(net, initial_marking, final_marking, parameters=parameters)

        from pm4py.visualization.petrinet import visualizer as pn_visualizer
        parameters = {pn_visualizer.Variants.WO_DECORATION.value.Parameters.FORMAT: "svg"}
        gviz = pn_visualizer.apply(net, initial_marking, final_marking, parameters=parameters)
        pn_visualizer.save(gviz, "alpha.svg")

        os.remove("createdPetriNet1.pnml")
        os.remove("alpha.svg")
def execute_script():
    df = pm4py.read_csv("../tests/input_data/interval_event_log.csv")
    log = pm4py.read_xes("../tests/input_data/interval_event_log.xes")
    heu_net = plusplus.apply_heu(log, parameters={"heu_net_decoration": "performance"})
    heu_net_2 = plusplus.apply_heu_pandas(df, parameters={"heu_net_decoration": "performance"})
    gviz = visualizer.apply(heu_net, parameters={"format": "svg"})
    visualizer.view(gviz)
    gviz2 = visualizer.apply(heu_net_2, parameters={"format": "svg"})
    visualizer.view(gviz2)
    net1, im1, fm1 = plusplus.apply(log)
    net2, im2, fm2 = plusplus.apply(log)
    gviz3 = pn_visualizer.apply(net1, im1, fm1, parameters={"format": "svg"})
    pn_visualizer.view(gviz3)
    gviz4 = pn_visualizer.apply(net2, im2, fm2, parameters={"format": "svg"})
    pn_visualizer.view(gviz4)
Example #4
0
def view_petri_net(petri_net, initial_marking, final_marking, format="png"):
    """
    Views a (composite) Petri net

    Parameters
    -------------
    petri_net
        Petri net
    initial_marking
        Initial marking
    final marking
        Final marking
    format
        Format of the output picture (default: png)
    """
    from pm4py.visualization.petrinet import visualizer as pn_visualizer
    gviz = pn_visualizer.apply(
        petri_net,
        initial_marking,
        final_marking,
        parameters={
            pn_visualizer.Variants.WO_DECORATION.value.Parameters.FORMAT:
            format
        })
    pn_visualizer.view(gviz)
Example #5
0
def model_metrics(model_log_path, metric_log_path, gexp_name):
    start_time = time()
    model_log_csv = pd.read_csv(model_log_path, ',')
    metric_log_csv = pd.read_csv(metric_log_path, ',')
    parameters = {log_converter.Variants.TO_EVENT_LOG.value.Parameters.CASE_ID_KEY: 'number'}
    model_log = log_converter.apply(model_log_csv, parameters=parameters, variant=log_converter.Variants.TO_EVENT_LOG)
    metric_log = log_converter.apply(metric_log_csv, parameters=parameters, variant=log_converter.Variants.TO_EVENT_LOG)
    parameters = {inductive_miner.Variants.DFG_BASED.value.Parameters.CASE_ID_KEY: 'number',
                  inductive_miner.Variants.DFG_BASED.value.Parameters.ACTIVITY_KEY: 'incident_state',
                  inductive_miner.Variants.DFG_BASED.value.Parameters.TIMESTAMP_KEY: 'sys_updated_at',
                  alignments.Variants.VERSION_STATE_EQUATION_A_STAR.value.Parameters.ACTIVITY_KEY: 'incident_state'}
    petrinet, initial_marking, final_marking = inductive_miner.apply(model_log, parameters=parameters)
    gviz = pn_visualizer.apply(petrinet, initial_marking, final_marking)
    #gviz.render('petrinets\\'+gexp_name+'\\petri_' + model_base + '.png')
    gviz.render('test_time\\test.png')
    pn_visualizer.view(gviz)
    alignments_res = alignments.apply_log(metric_log, petrinet, initial_marking, final_marking, parameters=parameters)
    fitness = replay_fitness.evaluate(alignments_res, variant=replay_fitness.Variants.ALIGNMENT_BASED,
                                      parameters=parameters)
    precision = calc_precision.apply(metric_log, petrinet, initial_marking, final_marking, parameters=parameters)
    generaliz = calc_generaliz.apply(metric_log, petrinet, initial_marking, final_marking, parameters=parameters)
    #generaliz = 0
    simplic = calc_simplic.apply(petrinet)
    f_score = 2 * ((fitness['averageFitness'] * precision) / (fitness['averageFitness'] + precision))
    end_time = time()
    m, s = divmod(end_time - start_time, 60)
    h, m = divmod(m, 60)
    print('Fin %02d:%02d:%02d' % (h, m, s))
    print(' F:', '%.10f' % fitness['averageFitness'], ' P:', '%.10f' % precision,
          ' FS:', '%.10f' % f_score, ' G:', '%.10f' % generaliz, ' S:', '%.10f' % simplic, ' T:',
          '%02d:%02d:%02d' % (h, m, s))
    #metrics = pd.Series([model_base, metric_base, '%.10f' % fitness['averageFitness'],
    #                     '%.10f' % precision, '%.10f' % f_score, '%.10f' % generaliz, '%.10f' % simplic,
    #                     '%02d:%02d:%02d' % (h, m, s)])
    return model_base
Example #6
0
def save_vis_petri_net(petri_net, initial_marking, final_marking, file_path):
    """
    Saves a Petri net visualization to a file

    Parameters
    --------------
    petri_net
        Petri net
    initial_marking
        Initial marking
    final marking
        Final marking
    file_path
        Destination path
    """
    format = file_path[file_path.index(".") + 1:].lower()
    from pm4py.visualization.petrinet import visualizer as pn_visualizer
    gviz = pn_visualizer.apply(
        petri_net,
        initial_marking,
        final_marking,
        parameters={
            pn_visualizer.Variants.WO_DECORATION.value.Parameters.FORMAT:
            format
        })
    pn_visualizer.save(gviz, file_path)
Example #7
0
def apply(net, im, fm, parameters=None):
    """
    Transforms a WF-net to a process tree

    Parameters
    -------------
    net
        Petri net
    im
        Initial marking
    fm
        Final marking

    Returns
    -------------
    tree
        Process tree
    """
    if parameters is None:
        parameters = {}

    debug = exec_utils.get_param_value(Parameters.DEBUG, parameters, False)
    fold = exec_utils.get_param_value(Parameters.FOLD, parameters, True)

    grouped_net = group_blocks_in_net(net, parameters=parameters)

    if len(grouped_net.transitions) == 1:
        pt_str = list(grouped_net.transitions)[0].label
        pt = pt_util.parse(pt_str)
        return pt_util.fold(pt) if fold else pt
    else:
        if debug:
            from pm4py.visualization.petrinet import visualizer as pn_viz
            pn_viz.view(pn_viz.apply(grouped_net, parameters={"format": "svg"}))
        raise ValueError('Parsing of WF-net Failed')
Example #8
0
    def test_51(self):
        import os
        from pm4py.objects.petri.importer import importer as pnml_importer
        net, initial_marking, final_marking = pnml_importer.apply(
            os.path.join("input_data", "running-example.pnml"))

        from pm4py.visualization.petrinet import visualizer as pn_visualizer
        gviz = pn_visualizer.apply(net, initial_marking, final_marking)

        from pm4py.objects.petri.exporter import exporter as pnml_exporter
        pnml_exporter.apply(net, initial_marking, "petri.pnml")

        pnml_exporter.apply(net, initial_marking, "petri_final.pnml", final_marking=final_marking)

        os.remove("petri.pnml")
        os.remove("petri_final.pnml")

        from pm4py.objects.petri import semantics
        transitions = semantics.enabled_transitions(net, initial_marking)

        places = net.places
        transitions = net.transitions
        arcs = net.arcs

        for place in places:
            stru = "\nPLACE: " + place.name
            for arc in place.in_arcs:
                stru = str(arc.source.name) + " " + str(arc.source.label)
Example #9
0
def execute_script():
    log_path = os.path.join("..", "tests", "input_data",
                            "interval_event_log.xes")
    log = xes_importer.apply(log_path)
    parameters = {}
    parameters[
        constants.PARAMETER_CONSTANT_START_TIMESTAMP_KEY] = "start_timestamp"
    parameters[constants.PARAMETER_CONSTANT_TIMESTAMP_KEY] = "time:timestamp"
    parameters[constants.PARAMETER_CONSTANT_ACTIVITY_KEY] = "concept:name"
    parameters["format"] = "svg"
    start_activities = sa_get.get_start_activities(log, parameters=parameters)
    end_activities = ea_get.get_end_activities(log, parameters=parameters)
    parameters["start_activities"] = start_activities
    parameters["end_activities"] = end_activities
    dfg_freq = dfg_algorithm.apply(log,
                                   parameters=parameters,
                                   variant=dfg_algorithm.Variants.FREQUENCY)
    dfg_perf = dfg_algorithm.apply(log,
                                   parameters=parameters,
                                   variant=dfg_algorithm.Variants.PERFORMANCE)
    dfg_gv_freq = dfg_vis_fact.apply(dfg_freq,
                                     log=log,
                                     variant=dfg_vis_fact.Variants.FREQUENCY,
                                     parameters=parameters)
    dfg_vis_fact.view(dfg_gv_freq)
    dfg_gv_perf = dfg_vis_fact.apply(dfg_perf,
                                     log=log,
                                     variant=dfg_vis_fact.Variants.PERFORMANCE,
                                     parameters=parameters)
    dfg_vis_fact.view(dfg_gv_perf)
    net, im, fm = dfg_conv.apply(dfg_freq)
    gviz = pn_vis.apply(net, im, fm, parameters=parameters)
    pn_vis.view(gviz)
Example #10
0
 def test_petrinet_running_example(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.apply(os.path.join(INPUT_DATA_DIR, "running-example.xes"))
     net, im, fm = heuristics_miner.apply(log)
     gviz = pn_vis.apply(net, im, fm)
     del gviz
Example #11
0
 def test_petrinet_receipt_df(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"
     df = pd.read_csv(os.path.join(INPUT_DATA_DIR, "receipt.csv"))
     df = dataframe_utils.convert_timestamp_columns_in_df(df)
     net, im, fm = heuristics_miner.apply(df)
     gviz = pn_vis.apply(net, im, fm)
     del gviz
Example #12
0
def execute_script():
    log = xes_importer.apply(os.path.join("..", "tests", "compressed_input_data", "09_a32f0n00.xes.gz"))
    heu_net = heuristics_miner.apply_heu(log, parameters={
        heuristics_miner.Variants.CLASSIC.value.Parameters.DEPENDENCY_THRESH: 0.99})
    gviz = hn_vis.apply(heu_net, parameters={hn_vis.Variants.PYDOTPLUS.value.Parameters.FORMAT: "svg"})
    hn_vis.view(gviz)
    net, im, fm = heuristics_miner.apply(log, parameters={
        heuristics_miner.Variants.CLASSIC.value.Parameters.DEPENDENCY_THRESH: 0.99})
    gviz2 = petri_vis.apply(net, im, fm, parameters={petri_vis.Variants.WO_DECORATION.value.Parameters.FORMAT: "svg"})
    petri_vis.view(gviz2)
Example #13
0
def petrinet_visualizer(net,
                        initial_marking,
                        final_marking,
                        parameters=
                            {pn_visualizer.Variants.WO_DECORATION.\
                                value.Parameters.FORMAT:"png"}):
    gviz = pn_visualizer.apply(net,
                               initial_marking,
                               final_marking,
                               parameters=parameters)
    pn_visualizer.view(gviz)
Example #14
0
def visualization(log, C, petrinet=True, heu_net=False):
    if petrinet:
        # net, im, fm = inductive_miner.apply(variants_filter.apply(log, C))
        net, im, fm = heuristics_miner.apply(variants_filter.apply(log, C))
        gviz = pn_visualizer.apply(net, im, fm)
        pn_visualizer.view(gviz)

    if heu_net:
        heu_net = inductive_miner.apply_heu(variants_filter.apply(log, C))
        gviz = hn_vis_factory.apply(heu_net)
        hn_vis_factory.view(gviz)
Example #15
0
def svg(net_im_fm, kwargs0):
    kwargs = copy(kwargs0)
    gviz = pn_visualizer.apply(net_im_fm[0],
                               net_im_fm[1],
                               net_im_fm[2],
                               parameters={"format": "svg"})
    temp_file = NamedTemporaryFile(suffix=".svg")
    temp_file.close()
    pn_visualizer.save(gviz, temp_file.name)
    F = open(temp_file.name, "r")
    content = F.read()
    F.close()
    return content
Example #16
0
def inductive_miner_petri_net(log):
    # create the process tree
    tree = inductive_miner.apply_tree(log)
    # convert the process tree to a petri net
    net, initial_marking, final_marking = pt_converter.apply(tree)
    find_fitness('induct', log, net, initial_marking, final_marking)
    parameters = {
        pn_visualizer.Variants.FREQUENCY.value.Parameters.FORMAT: "png"}
    gviz = pn_visualizer.apply(net, initial_marking, final_marking,
                               parameters=parameters,
                               variant=pn_visualizer.Variants.FREQUENCY,
                               log=log)
    return gviz, None
Example #17
0
    def test_54(self):
        from pm4py.objects.log.importer.xes import importer as xes_importer
        import os
        log = xes_importer.apply(os.path.join("input_data", "running-example.xes"))

        from pm4py.algo.discovery.inductive import algorithm as inductive_miner
        net, initial_marking, final_marking = inductive_miner.apply(log)

        from pm4py.objects.petri import utils
        scc = utils.get_strongly_connected_subnets(net)

        from pm4py.visualization.petrinet import visualizer as pn_visualizer
        gviz = pn_visualizer.apply(scc[0][0], scc[0][1], scc[0][2])
def print_statistics(net, name):
    gviz = pn_visualizer.apply(net)
    gviz.render('petrinets/simple-' + name, cleanup=True, format='png')

    places = net.places
    transitions = net.transitions
    arcs = net.arcs

    print('Lugares:', len(places), 'Arcos:', len(arcs), 'Transições:',
          len(transitions))

    print('Transição Inputs Outputs')

    for transition in transitions:
        i = len(transition.in_arcs)
        o = len(transition.out_arcs)

        if (i < 1) or (o < 1):
            print(transition.name, i, o)

    sP = ''

    for place in places:

        if (sP != ''):
            sP = sP + ','

        sP = sP + place.name

    sT = ''

    for transition in transitions:

        if (sT != ''):
            sT = sT + ','

        sT = sT + transition.name

    sF = ''

    for arc in arcs:

        if (sF != ''):
            sF = sF + ','

        sF = sF + '(' + arc.source.name + ',' + arc.target.name + ')'

    print('Definição')
    print('P = {' + sP + '}')
    print('T = {' + sT + '}')
    print('F = {' + sF + '}')
Example #19
0
        def function_before_get(b_click):
            if b_click == 1:
                pn_visualizer.save(before_gviz, "clean_process.png")
                messagebox.showinfo("Message", "Downloaded in 'output' folder")

            else:
                before = self.before

                if self.a == 1:
                    before = before[[
                        'Case', 'Activity', "Timestamp", "Resource"
                    ]]
                    before.rename(
                        columns={
                            "Case": "case:concept:name",
                            "Activity": "concept:name",
                            "Timestamp": "time:timestamp",
                            "Resource": "Resource"
                        })
                    before.columns = [
                        'case:concept:name', 'concept:name', "time:timestamp",
                        "Resource"
                    ]
                elif self.a == 0 and self.b == 1:
                    before = before[[
                        'Case', 'Activity', "Timestamp", "System"
                    ]]
                    before.rename(
                        columns={
                            "Case": "case:concept:name",
                            "Activity": "concept:name",
                            "Timestamp": "time:timestamp",
                            "System": "Resource"
                        })

                    before.columns = [
                        'case:concept:name', 'concept:name', "time:timestamp",
                        "Resource"
                    ]

                before_log = log_converter.apply(before)
                b_net, b_initial_marking, b_final_marking = inductive_miner.apply(
                    before_log)
                before_gviz = pn_visualizer.apply(b_net, b_initial_marking,
                                                  b_final_marking)
                b_click = 1
                pn_visualizer.save(
                    before_gviz, "{}_clean_process.png".format(self.dat_name))
                messagebox.showinfo("Message", "Downloaded in 'output' folder")

            return b_click
Example #20
0
    def test_47(self):
        log = self.load_running_example_xes()

        import os
        from pm4py.algo.discovery.inductive import algorithm as inductive_miner
        net, initial_marking, final_marking = inductive_miner.apply(log)

        from pm4py.visualization.petrinet import visualizer as pn_visualizer
        parameters = {pn_visualizer.Variants.WO_DECORATION.value.Parameters.FORMAT: "png"}
        gviz = pn_visualizer.apply(net, initial_marking, final_marking, parameters=parameters,
                                   variant=pn_visualizer.Variants.FREQUENCY, log=log)
        pn_visualizer.save(gviz, os.path.join("test_output_data", "inductive_frequency.png"))

        os.remove(os.path.join("test_output_data", "inductive_frequency.png"))
Example #21
0
def visualize_as_petri_net(net, initial_marking, final_marking, path=''):
    if len(path) > 0:
        parameters = {
            pn_visualizer.Variants.WO_DECORATION.value.Parameters.FORMAT: "svg"
        }
        gviz = pn_visualizer.apply(net,
                                   initial_marking,
                                   final_marking,
                                   parameters=parameters)
        pn_visualizer.save(gviz, path)
    else:
        gviz = pn_vis_factory.apply(net, initial_marking, final_marking)
        pn_vis_factory.view(gviz)
    return net, initial_marking, final_marking
Example #22
0
        def function_after_get(a_click):
            if a_click == 1:
                pn_visualizer.save(after_gviz, "anomaly_process.png")
                messagebox.showinfo("Message", "Downloaded in 'output' folder")

            else:
                after = self.after

                if self.a == 1:
                    after = after[[
                        'Case', 'Activity', "Timestamp", "Resource"
                    ]]
                    after.rename(
                        columns={
                            "Case": "case:concept:name",
                            "Activity": "concept:name",
                            "Timestamp": "time:timestamp",
                            "Resource": "Resource"
                        })
                    after.columns = [
                        'case:concept:name', 'concept:name', "time:timestamp",
                        "Resource"
                    ]
                elif self.a == 0 and self.b == 1:
                    after = after[['Case', 'Activity', "Timestamp", "System"]]
                    after.rename(
                        columns={
                            "Case": "case:concept:name",
                            "Activity": "concept:name",
                            "Timestamp": "time:timestamp",
                            "System": "Resource"
                        })

                    after.columns = [
                        'case:concept:name', 'concept:name', "time:timestamp",
                        "Resource"
                    ]

                after_log = log_converter.apply(after)
                a_net, a_initial_marking, a_final_marking = inductive_miner.apply(
                    after_log)
                after_gviz = pn_visualizer.apply(a_net, a_initial_marking,
                                                 a_final_marking)
                a_click = 1
                pn_visualizer.save(
                    after_gviz, "{}_anomaly_process.png".format(self.dat_name))
                messagebox.showinfo("Message", "Downloaded in 'output' folder")

            return a_click
Example #23
0
def execute_script():
    log_path = os.path.join("..", "tests", "input_data",
                            "interval_event_log.csv")
    dataframe = pm4py.read_csv(log_path)
    log_path = os.path.join("..", "tests", "input_data", "reviewing.xes")
    log = pm4py.read_xes(log_path)
    dataframe = pm4py.convert_to_dataframe(log)
    parameters = {}
    #parameters[constants.PARAMETER_CONSTANT_START_TIMESTAMP_KEY] = "start_timestamp"
    parameters[constants.PARAMETER_CONSTANT_TIMESTAMP_KEY] = "time:timestamp"
    parameters[constants.PARAMETER_CONSTANT_ACTIVITY_KEY] = "concept:name"
    parameters[constants.PARAMETER_CONSTANT_CASEID_KEY] = "case:concept:name"
    parameters["strict"] = True
    parameters["format"] = "svg"
    start_activities = sa_get.get_start_activities(dataframe,
                                                   parameters=parameters)
    end_activities = ea_get.get_end_activities(dataframe,
                                               parameters=parameters)
    att_count = att_get.get_attribute_values(dataframe,
                                             "concept:name",
                                             parameters=parameters)
    parameters["start_activities"] = start_activities
    parameters["end_activities"] = end_activities
    soj_time = soj_time_get.apply(dataframe, parameters=parameters)
    print("soj_time")
    print(soj_time)
    conc_act = conc_act_get.apply(dataframe, parameters=parameters)
    print("conc_act")
    print(conc_act)
    efg = efg_get.apply(dataframe, parameters=parameters)
    print("efg")
    print(efg)
    dfg_freq, dfg_perf = df_statistics.get_dfg_graph(
        dataframe, measure="both", start_timestamp_key="start_timestamp")
    dfg_gv_freq = dfg_vis_fact.apply(dfg_freq,
                                     activities_count=att_count,
                                     variant=dfg_vis_fact.Variants.FREQUENCY,
                                     soj_time=soj_time,
                                     parameters=parameters)
    dfg_vis_fact.view(dfg_gv_freq)
    dfg_gv_perf = dfg_vis_fact.apply(dfg_perf,
                                     activities_count=att_count,
                                     variant=dfg_vis_fact.Variants.PERFORMANCE,
                                     soj_time=soj_time,
                                     parameters=parameters)
    dfg_vis_fact.view(dfg_gv_perf)
    net, im, fm = dfg_conv.apply(dfg_freq)
    gviz = pn_vis.apply(net, im, fm, parameters=parameters)
    pn_vis.view(gviz)
Example #24
0
def execute_script():
    log_path = os.path.join("..", "tests", "input_data", "running-example.xes")
    log = xes_import.apply(log_path)

    net, i_m, f_m = alpha_miner.apply(log)

    gviz = pn_vis.apply(
        net,
        i_m,
        f_m,
        parameters={
            pn_vis.Variants.WO_DECORATION.value.Parameters.FORMAT: "svg",
            pn_vis.Variants.WO_DECORATION.value.Parameters.DEBUG: False
        })
    pn_vis.view(gviz)
Example #25
0
        def function_before_see(b_click):
            if b_click == 1:
                before_gviz.view()
            else:
                before = self.before

                if self.a == 1:
                    before = before[[
                        'Case', 'Activity', "Timestamp", "Resource"
                    ]]
                    before.rename(
                        columns={
                            "Case": "case:concept:name",
                            "Activity": "concept:name",
                            "Timestamp": "time:timestamp",
                            "Resource": "Resource"
                        })
                    before.columns = [
                        'case:concept:name', 'concept:name', "time:timestamp",
                        "Resource"
                    ]
                elif self.a == 0 and self.b == 1:
                    before = before[[
                        'Case', 'Activity', "Timestamp", "System"
                    ]]
                    before.rename(
                        columns={
                            "Case": "case:concept:name",
                            "Activity": "concept:name",
                            "Timestamp": "time:timestamp",
                            "System": "Resource"
                        })

                    before.columns = [
                        'case:concept:name', 'concept:name', "time:timestamp",
                        "Resource"
                    ]

                before_log = log_converter.apply(before)
                b_net, b_initial_marking, b_final_marking = inductive_miner.apply(
                    before_log)
                before_gviz = pn_visualizer.apply(b_net, b_initial_marking,
                                                  b_final_marking)
                b_click = 1
                before_gviz.view()

            return b_click
def execute_script():
    # import csv & create log
    dataframe = csv_import_adapter.import_dataframe_from_path(
        datasourceMockdata(), sep=";")
    dataframe = dataframe.rename(columns={
        'coID': 'case:concept:name',
        'Activity': 'concept:name'
    })
    log = conversion_factory.apply(dataframe)

    # option 1: Directly-Follows Graph, represent frequency or performance
    parameters = {constants.PARAMETER_CONSTANT_ACTIVITY_KEY: "concept:name"}
    variant = 'frequency'
    dfg = dfg_factory.apply(log, variant=variant, parameters=parameters)
    gviz1 = dfg_vis_factory.apply(dfg,
                                  log=log,
                                  variant=variant,
                                  parameters=parameters)
    dfg_vis_factory.view(gviz1)

    # option 2: Heuristics Miner, acts on the Directly-Follows Graph, find common structures, output: Heuristic Net (.svg)
    heu_net = heuristics_miner.apply_heu(
        log,
        parameters={
            heuristics_miner.Variants.CLASSIC.value.Parameters.DEPENDENCY_THRESH:
            0.00
        })
    gviz2 = hn_vis.apply(
        heu_net,
        parameters={hn_vis.Variants.PYDOTPLUS.value.Parameters.FORMAT: "svg"})
    hn_vis.view(gviz2)

    # option 3: Petri Net based on Heuristic Miner (.png)
    net, im, fm = heuristics_miner.apply(
        log,
        parameters={
            heuristics_miner.Variants.CLASSIC.value.Parameters.DEPENDENCY_THRESH:
            0.00
        })
    gviz3 = petri_vis.apply(
        net,
        im,
        fm,
        parameters={
            petri_vis.Variants.WO_DECORATION.value.Parameters.FORMAT: "png"
        })
    petri_vis.view(gviz3)
def execute_script():
    log = xes_importer.apply(
        os.path.join("..", "tests", "input_data", "receipt.xes"))
    log = sorting.sort_timestamp(log)
    net, im, fm = inductive_miner.apply(log)
    log1 = EventLog(log[:500])
    log2 = EventLog(log[len(log) - 500:])
    statistics = element_usage_comparison.compare_element_usage_two_logs(
        net, im, fm, log1, log2)
    gviz = pn_vis.apply(
        net,
        im,
        fm,
        variant=pn_vis.Variants.FREQUENCY,
        aggregated_statistics=statistics,
        parameters={pn_vis.Variants.FREQUENCY.value.Parameters.FORMAT: "svg"})
    pn_vis.view(gviz)
Example #28
0
def execute_script():
    log_path = os.path.join("..", "tests", "input_data", "running-example.xes")

    log = xes_importer.apply(log_path)
    net, marking, final_marking = inductive.apply(
        log, variant=inductive.Variants.IM)
    for place in marking:
        print("initial marking " + place.name)
    for place in final_marking:
        print("final marking " + place.name)
    gviz = pn_vis.apply(
        net,
        marking,
        final_marking,
        parameters={
            pn_vis.Variants.WO_DECORATION.value.Parameters.FORMAT: "svg",
            pn_vis.Variants.WO_DECORATION.value.Parameters.DEBUG: True
        })
    pn_vis.view(gviz)

    if True:
        fit_traces = []

        for i in range(0, len(log)):
            try:
                print("\n", i, [x["concept:name"] for x in log[i]])
                cf_result = pm4py.algo.conformance.alignments.variants.state_equation_a_star.apply(
                    log[i], net, marking, final_marking)['alignment']
                if cf_result is None:
                    print("alignment is none!")
                else:
                    is_fit = True
                    for couple in cf_result:
                        print(couple)
                        if not (couple[0] == couple[1]
                                or couple[0] == ">>" and couple[1] is None):
                            is_fit = False
                    print("isFit = " + str(is_fit))

                    if is_fit:
                        fit_traces.append(log[i])
            except TypeError:
                print("EXCEPTION ", i)
                traceback.print_exc()
        print(fit_traces)
        print(len(fit_traces))
Example #29
0
        def function_after_see(a_click):
            if a_click == 1:
                after_gviz.view()
            else:
                after = self.after

                if self.a == 1:
                    after = after[[
                        'Case', 'Activity', "Timestamp", "Resource"
                    ]]
                    after.rename(
                        columns={
                            "Case": "case:concept:name",
                            "Activity": "concept:name",
                            "Timestamp": "time:timestamp",
                            "Resource": "Resource"
                        })
                    after.columns = [
                        'case:concept:name', 'concept:name', "time:timestamp",
                        "Resource"
                    ]
                elif self.a == 0 and self.b == 1:
                    after = after[['Case', 'Activity', "Timestamp", "System"]]
                    after.rename(
                        columns={
                            "Case": "case:concept:name",
                            "Activity": "concept:name",
                            "Timestamp": "time:timestamp",
                            "System": "Resource"
                        })

                    after.columns = [
                        'case:concept:name', 'concept:name', "time:timestamp",
                        "Resource"
                    ]

                after_log = log_converter.apply(after)
                a_net, a_initial_marking, a_final_marking = inductive_miner.apply(
                    after_log)
                after_gviz = pn_visualizer.apply(a_net, a_initial_marking,
                                                 a_final_marking)
                a_click = 1
                after_gviz.view()

            return a_click
Example #30
0
def execute_script():
    log_path = os.path.join("..", "tests", "input_data", "running-example.xes")
    log = xes_importer.apply(log_path)
    net, marking, final_marking = alpha_miner.apply(log)
    for place in marking:
        print("initial marking " + place.name)
    for place in final_marking:
        print("final marking " + place.name)
    gviz = pn_vis.apply(net, marking, final_marking,
                        parameters={pn_vis.Variants.WO_DECORATION.value.Parameters.FORMAT: "svg"})
    pn_vis.view(gviz)
    print("started token replay")
    aligned_traces = token_replay.apply(log, net, marking, final_marking)
    fit_traces = [x for x in aligned_traces if x['trace_is_fit']]
    perc_fitness = 0.00
    if len(aligned_traces) > 0:
        perc_fitness = len(fit_traces) / len(aligned_traces)
    print("perc_fitness=", perc_fitness)