Beispiel #1
0
def apply(log, parameters=None):
    """
    Discovers a Petri net using Heuristics Miner

    Parameters
    ------------
    log
        Event log
    parameters
        Possible parameters of the algorithm,
        including: activity_key, case_id_glue, timestamp_key,
        dependency_thresh, and_measure_thresh, min_act_count, min_dfg_occurrences, dfg_pre_cleaning_noise_thresh

    Returns
    ------------
    net
        Petri net
    im
        Initial marking
    fm
        Final marking
    """
    if parameters is None:
        parameters = {}

    heu_net = apply_heu(log, parameters=parameters)
    net, im, fm = hn_conv_factory.apply(heu_net, parameters=parameters)

    return net, im, fm
Beispiel #2
0
def apply_dfg(dfg,
              activities=None,
              activities_occurrences=None,
              start_activities=None,
              end_activities=None,
              parameters=None):
    """
    Discovers a Petri net using Heuristics Miner

    Parameters
    ------------
    dfg
        Directly-Follows Graph
    activities
        (If provided) list of activities of the log
    activities_occurrences
        (If provided) dictionary of activities occurrences
    start_activities
        (If provided) dictionary of start activities occurrences
    end_activities
        (If provided) dictionary of end activities occurrences
    parameters
        Possible parameters of the algorithm,
        including: activity_key, case_id_glue, timestamp_key,
        dependency_thresh, and_measure_thresh, min_act_count, min_dfg_occurrences, dfg_pre_cleaning_noise_thresh,
        loops_length_two_thresh

    Returns
    ------------
    net
        Petri net
    im
        Initial marking
    fm
        Final marking
    """
    if parameters is None:
        parameters = {}

    heu_net = apply_heu_dfg(dfg,
                            activities=activities,
                            activities_occurrences=activities_occurrences,
                            start_activities=start_activities,
                            end_activities=end_activities,
                            parameters=parameters)
    net, im, fm = hn_conv_factory.apply(heu_net, parameters=parameters)

    return net, im, fm
Beispiel #3
0
def apply_pandas(df, parameters=None):
    """
    Discovers a Petri net using Heuristics Miner

    Parameters
    ------------
    df
        Pandas dataframe
    parameters
        Possible parameters of the algorithm,
        including: activity_key, case_id_glue, timestamp_key,
        dependency_thresh, and_measure_thresh, min_act_count, min_dfg_occurrences, dfg_pre_cleaning_noise_thresh,
        loops_length_two_thresh

    Returns
    ------------
    net
        Petri net
    im
        Initial marking
    fm
        Final marking
    """
    if parameters is None:
        parameters = {}

    activity_key = parameters[
        constants.
        PARAMETER_CONSTANT_ACTIVITY_KEY] if constants.PARAMETER_CONSTANT_ACTIVITY_KEY in parameters else xes.DEFAULT_NAME_KEY
    case_id_glue = parameters[
        constants.
        PARAMETER_CONSTANT_CASEID_KEY] if constants.PARAMETER_CONSTANT_CASEID_KEY in parameters else CASE_CONCEPT_NAME
    timestamp_key = parameters[
        constants.
        PARAMETER_CONSTANT_TIMESTAMP_KEY] if constants.PARAMETER_CONSTANT_TIMESTAMP_KEY in parameters else xes.DEFAULT_TIMESTAMP_KEY

    start_activities = pd_sa_filter.get_start_activities(df,
                                                         parameters=parameters)
    end_activities = pd_ea_filter.get_end_activities(df, parameters=parameters)
    activities_occurrences = pd_attributes.get_attribute_values(
        df, activity_key, parameters=parameters)
    activities = list(activities_occurrences.keys())
    if timestamp_key in df:
        dfg = df_statistics.get_dfg_graph(df,
                                          case_id_glue=case_id_glue,
                                          activity_key=activity_key,
                                          timestamp_key=timestamp_key)
        dfg_window_2 = df_statistics.get_dfg_graph(df,
                                                   case_id_glue=case_id_glue,
                                                   activity_key=activity_key,
                                                   timestamp_key=timestamp_key,
                                                   window=2)
        frequency_triples = get_freq_triples.get_freq_triples(
            df,
            case_id_glue=case_id_glue,
            activity_key=activity_key,
            timestamp_key=timestamp_key)

    else:
        dfg = df_statistics.get_dfg_graph(df,
                                          case_id_glue=case_id_glue,
                                          activity_key=activity_key,
                                          sort_timestamp_along_case_id=False)
        dfg_window_2 = df_statistics.get_dfg_graph(
            df,
            case_id_glue=case_id_glue,
            activity_key=activity_key,
            sort_timestamp_along_case_id=False,
            window=2)
        frequency_triples = get_freq_triples.get_freq_triples(
            df,
            case_id_glue=case_id_glue,
            activity_key=activity_key,
            timestamp_key=timestamp_key,
            sort_timestamp_along_case_id=False)

    heu_net = apply_heu_dfg(dfg,
                            activities=activities,
                            activities_occurrences=activities_occurrences,
                            start_activities=start_activities,
                            end_activities=end_activities,
                            dfg_window_2=dfg_window_2,
                            freq_triples=frequency_triples,
                            parameters=parameters)
    net, im, fm = hn_conv_factory.apply(heu_net, parameters=parameters)

    return net, im, fm