pm4py.algo.discovery.alpha.variants.plus module#

class pm4py.algo.discovery.alpha.variants.plus.Parameters(*values)[source]#

Bases: Enum

ACTIVITY_KEY = 'pm4py:param:activity_key'#
REMOVE_UNCONNECTED = 'remove_unconnected'#
pm4py.algo.discovery.alpha.variants.plus.preprocessing(log: EventLog, parameters: Dict[str | Parameters, Any] | None = None) Any[source]#

Preprocessing step for the Aplha+ algorithm. Removing all transitions from the log with a loop of length one.

Parameters:
  • log – Event log

  • parameters – Parameters of the algorithm

Returns:

  • log – filtered log and a list of the filtered transitions

  • loop_one_list – Loop one list

  • A_filtered – Dictionary: activity before the loop-length-one activity

  • B_filtered – Dictionary: activity after the loop-length-one activity

  • loops_in_first_place – Loops in source place

  • loops_in_last_place – Loops in sink place

pm4py.algo.discovery.alpha.variants.plus.get_relations(log: EventLog)[source]#

Applying the classic Alpha Algorithm

Parameters:

log – Filtered log

Returns:

  • causal – Causal relations

  • parallel – Parallel relations

  • follows – Follows relations

pm4py.algo.discovery.alpha.variants.plus.processing(log: EventLog, causal: Tuple[str, str], follows: Tuple[str, str])[source]#

Applying the Alpha Miner with the new relations

Parameters:
  • log – Filtered log

  • causal – Pairs that have a causal relation (->)

  • follows – Pairs that have a follow relation (>)

Returns:

  • net – Petri net

  • im – Initial marking

  • fm – Final marking

pm4py.algo.discovery.alpha.variants.plus.get_sharp_relation(follows, instance_one, instance_two)[source]#

Returns true if sharp relations holds

Parameters:
  • follows – Follows relations

  • instance_one – Instance one

  • instance_two – Instance two

Returns:

Boolean (sharp relation holds?)

Return type:

bool

pm4py.algo.discovery.alpha.variants.plus.get_sharp_relations_for_sets(follows, set_1, set_2)[source]#

Returns sharp relations for sets

Parameters:
  • follows – Follows relations

  • set_1 – First set to consider

  • set_2 – Second set to consider

Returns:

Boolean (sharp relation holds?)

Return type:

bool

pm4py.algo.discovery.alpha.variants.plus.postprocessing(net: PetriNet, initial_marking: Marking, final_marking: Marking, A, B, pairs, loop_one_list) Tuple[PetriNet, Marking, Marking][source]#

Adding the filtered transitions to the Petri net

Parameters:
  • loop_list – List of looped activities

  • classical_alpha_result – Result after applying the classic alpha algorithm to the filtered log

  • A – See Paper for definition

  • B – See Paper for definition

Returns:

  • net – Petri net

  • im – Initial marking

  • fm – Final marking

pm4py.algo.discovery.alpha.variants.plus.apply(trace_log: EventLog, parameters: Dict[str | Parameters, Any] | None = None) Tuple[PetriNet, Marking, Marking][source]#

Apply the Alpha Algorithm to a given log

Parameters:
  • trace_log – Log

  • parameters – Possible parameters of the algorithm

Returns:

  • net – Petri net

  • im – Initial marking

  • fm – Final marking

pm4py.algo.discovery.alpha.variants.plus.add_source(net, start_activities, label_transition_dict)[source]#

Adding source pe

pm4py.algo.discovery.alpha.variants.plus.add_sink(net, end_activities, label_transition_dict)[source]#

Adding sink pe

pm4py.algo.discovery.alpha.variants.plus.remove_initial_hidden_if_possible(net: PetriNet, im: Marking)[source]#

Remove initial hidden transition if possible

Parameters:
  • net – Petri net

  • im – Initial marking

Returns:

  • net – Petri net

  • im – Possibly different initial marking

pm4py.algo.discovery.alpha.variants.plus.remove_final_hidden_if_possible(net: PetriNet, fm: Marking)[source]#

Remove final hidden transition if possible

Parameters:
  • net – Petri net

  • fm – Final marking

Returns:

Petri net

Return type:

net

pm4py.algo.discovery.alpha.variants.plus.remove_unconnected_transitions(net: PetriNet)[source]#

Remove unconnected transitions if any

Parameters:

net – Petri net

Returns:

Petri net without unconnected transitions

Return type:

net