def construct_reachability_graph_from_flow(incoming_transitions,
                                           outgoing_transitions,
                                           use_trans_name=False,
                                           parameters=None):
    """
    Construct the reachability graph from the marking flow

    Parameters
    ----------------
    incoming_transitions
        Incoming transitions
    outgoing_transitions
        Outgoing transitions
    use_trans_name
        Use the transition name

    Returns
    ----------------
    re_gr
        Transition system that represents the reachability graph of the input Petri net.
    """
    if parameters is None:
        parameters = {}

    re_gr = ts.TransitionSystem()

    map_states = {}
    for s in incoming_transitions:
        map_states[s] = ts.TransitionSystem.State(staterep(repr(s)))
        re_gr.states.add(map_states[s])

    for s1 in outgoing_transitions:
        for t in outgoing_transitions[s1]:
            s2 = outgoing_transitions[s1][t]
            if use_trans_name:
                utils.add_arc_from_to(t.name, map_states[s1], map_states[s2],
                                      re_gr)
            else:
                utils.add_arc_from_to(repr(t), map_states[s1], map_states[s2],
                                      re_gr)

    return re_gr
Exemple #2
0
def apply(log, parameters=None):
    if parameters is None:
        parameters = {}
    activity_key = exec_utils.get_param_value(Parameters.ACTIVITY_KEY,
                                              parameters, DEFAULT_NAME_KEY)
    include_data = exec_utils.get_param_value(Parameters.INCLUDE_DATA,
                                              parameters, False)

    transition_system = ts.TransitionSystem()
    control_flow_log = log_util.log.project_traces(log, activity_key)
    view_sequence = []
    for i in range(len(log)):
        view_sequence.append(
            __compute_view_sequence(control_flow_log[i],
                                    log[i],
                                    parameters=parameters))
    for vs in view_sequence:
        __construct_state_path(vs,
                               transition_system,
                               include_data=include_data)
    return transition_system