Example #1
0
def execute_script():
    log = pm4py.read_xes("../tests/input_data/running-example.xes")
    dfg, sa, ea = pm4py.discover_dfg(log)
    tree = pm4py.discover_process_tree_inductive(log)
    heu_net = pm4py.discover_heuristics_net(log)
    net, im, fm = pm4py.discover_petri_net_alpha(log)
    bpmn = pm4py.convert_to_bpmn(tree)
    ts = ts_discovery.apply(log)
    x_cases, y_cases = case_statistics.get_kde_caseduration(log)

    gviz1 = dfg_visualizer.apply(dfg)
    gviz2 = tree_visualizer.apply(tree)
    gviz3 = hn_visualizer.apply(heu_net)
    gviz4 = pn_visualizer.apply(net, im, fm)
    gviz5 = bpmn_visualizer.apply(bpmn)
    gviz6 = ts_visualizer.apply(ts)
    gviz7 = graphs_visualizer.apply(x_cases, y_cases, variant=graphs_visualizer.Variants.CASES,
                                          parameters={graphs_visualizer.Variants.CASES.value.Parameters.FORMAT: "svg"})

    print("1", len(dfg_visualizer.serialize_dot(gviz1)))
    print("1", len(dfg_visualizer.serialize(gviz1)))
    print("2", len(tree_visualizer.serialize_dot(gviz2)))
    print("2", len(tree_visualizer.serialize(gviz2)))
    print("3", len(hn_visualizer.serialize(gviz3)))
    print("4", len(pn_visualizer.serialize_dot(gviz4)))
    print("4", len(pn_visualizer.serialize(gviz4)))
    print("5", len(bpmn_visualizer.serialize_dot(gviz5)))
    print("5", len(bpmn_visualizer.serialize(gviz5)))
    print("6", len(ts_visualizer.serialize_dot(gviz6)))
    print("6", len(ts_visualizer.serialize(gviz6)))
    print("7", len(graphs_visualizer.serialize(gviz7)))
def execute_script():
    # log_path = "C:/Users/bas/Documents/tue/svn/private/logs/ilp_test_2_abcd_acbd.xes"
    log_path = os.path.join("..", "tests", "input_data", "running-example.xes")
    log = xes_importer.apply(log_path)
    ts = ts_discovery.apply(log)
    viz = ts_vis.apply(
        ts,
        parameters={ts_vis.Variants.VIEW_BASED.value.Parameters.FORMAT: "svg"})
    ts_vis.view(viz)
def execute_script():
    log = pm4py.read_xes(
        os.path.join("..", "tests", "input_data", "running-example.xes"))
    ts = transition_system_discovery.apply(log,
                                           parameters={
                                               "include_data": True,
                                               "direction": "forward"
                                           })
    gviz = trans_frequency.apply(ts, parameters={"format": "svg"})
    transition_system_visualizer.view(gviz)
Example #4
0
 def test_transitionsystem1(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"
     input_log = os.path.join(INPUT_DATA_DIR, "running-example.xes")
     log = xes_importer.apply(input_log)
     ts = ts_alg.apply(log, parameters={
         ts_alg.Variants.VIEW_BASED.value.Parameters.PARAM_KEY_VIEW: ts_alg.Variants.VIEW_BASED.value.Parameters.VIEW_SEQUENCE,
         ts_alg.Variants.VIEW_BASED.value.Parameters.PARAM_KEY_WINDOW: 3,
         ts_alg.Variants.VIEW_BASED.value.Parameters.PARAM_KEY_DIRECTION: ts_alg.Variants.VIEW_BASED.value.Parameters.DIRECTION_FORWARD})
     viz = pm4py.visualization.transition_system.util.visualize_graphviz.visualize(ts)
     del viz
Example #5
0
def execute_script():
    # log_path = "C:/Users/bas/Documents/tue/svn/private/logs/ilp_test_2_abcd_acbd.xes"
    log_path = os.path.join("..", "tests", "input_data", "running-example.xes")
    log = xes_importer.apply(log_path)
    ts = ts_discovery.apply(log, parameters={"include_data": True})
    viz = ts_vis.apply(
        ts,
        parameters={ts_vis.Variants.VIEW_BASED.value.Parameters.FORMAT: "svg"})
    ts_vis.view(viz)
    for state in ts.states:
        print(state.name, "ingoing=", len(state.data["ingoing_events"]),
              "outgoing=", len(state.data["outgoing_events"]))
    for trans in ts.transitions:
        print(trans.name, trans.from_state.name, trans.to_state.name,
              "frequency=", len(trans.data["events"]))
Example #6
0
 def test_tsystem(self):
     log = xes_importer.apply(
         os.path.join("input_data", "running-example.xes"))
     from pm4py.algo.discovery.transition_system import algorithm as ts_system
     tsystem = ts_system.apply(log, variant=ts_system.Variants.VIEW_BASED)
Example #7
0
def apply(df0, classifier_function=None, parameters=None):
    if parameters is None:
        parameters = {}

    if classifier_function is None:
        classifier_function = lambda x: x["event_activity"]

    min_acti_freq = parameters[
        "min_acti_freq"] if "min_acti_freq" in parameters else 0
    min_edge_freq = parameters[
        "min_edge_freq"] if "min_edge_freq" in parameters else 0

    df = df0.copy()
    df = general.preprocess(df, parameters=parameters)

    df = clean_frequency.apply(df, min_acti_freq=min_acti_freq)
    df = clean_arc_frequency.apply(df, min_freq=min_edge_freq)

    models = {}

    obj_types = [x for x in df.columns if not x.startswith("event_")]
    activities = set()
    activities_repeated = Counter()
    edges = Counter()
    start_activities = dict()
    end_activities = dict()
    acti_spec = Counter()

    for ot in obj_types:
        start_activities[ot] = set()
        end_activities[ot] = set()

        new_df = df[["event_id", "event_activity", "event_timestamp",
                     ot]].dropna(subset=[ot])
        new_df = new_df.rename(columns={
            ot: "case:concept:name",
            "event_timestamp": "time:timestamp"
        })
        log = new_df.to_dict("r")
        for ev in log:
            ev["event_objtype"] = ot
            ev["concept:name"] = classifier_function(ev)
            del ev["event_objtype"]
            del ev["event_activity"]
            activities.add((ev["event_id"], ev["concept:name"]))

        log = EventStream(log)
        this_activities = set(x["concept:name"] for x in log)
        for act in this_activities:
            activities_repeated[act] += 1
        log = log_conv_factory.apply(log,
                                     variant=log_conv_factory.TO_EVENT_LOG)

        for trace in log:
            if trace:
                start_activities[ot].add(trace[0]["concept:name"])
                end_activities[ot].add(trace[-1]["concept:name"])
                for i in range(len(trace) - 1):
                    ev0 = trace[i]
                    ev1 = trace[i + 1]
                    edges[(ot, ev0["concept:name"], ev1["concept:name"],
                           ev0["event_id"], ev1["event_id"],
                           trace.attributes["concept:name"],
                           ev0["time:timestamp"], ev1["time:timestamp"])] += 1
                    acti_spec[(ot, trace[i]["concept:name"],
                               trace[i]["event_id"],
                               trace.attributes["concept:name"],
                               trace[i]["time:timestamp"])] += 1
                if len(trace) > 0:
                    acti_spec[(ot, trace[-1]["concept:name"],
                               trace[-1]["event_id"],
                               trace.attributes["concept:name"],
                               trace[-1]["time:timestamp"])] += 1

        models[ot] = tsystem.apply(log)

    activities = dict(Counter(list(x[1] for x in activities)))
    activities_repeated = set(x for x in activities_repeated
                              if activities_repeated[x] > 1)

    return {
        "type": "trans_system",
        "models": models,
        "activities": activities,
        "activities_repeated": activities_repeated,
        "edges": edges,
        "acti_spec": acti_spec
    }
Example #8
0
 def test_ts_df(self):
     df = pd.read_csv(os.path.join("input_data", "running-example.csv"))
     df = dataframe_utils.convert_timestamp_columns_in_df(df)
     ts = ts_disc.apply(df)
Example #9
0
 def test_ts_stream(self):
     df = pd.read_csv(os.path.join("input_data", "running-example.csv"))
     df = dataframe_utils.convert_timestamp_columns_in_df(df)
     stream = log_conversion.apply(df, variant=log_conversion.TO_EVENT_STREAM)
     ts = ts_disc.apply(stream)
Example #10
0
 def test_ts_log(self):
     log = xes_importer.apply(os.path.join("input_data", "running-example.xes"))
     ts = ts_disc.apply(log)