pm4py.algo.discovery.inductive.variants.im_clean.cuts package

Submodules

pm4py.algo.discovery.inductive.variants.im_clean.cuts.concurrency module

pm4py.algo.discovery.inductive.variants.im_clean.cuts.concurrency.detect(dfg, alphabet, start_activities, end_activities, msd=None)[source]
pm4py.algo.discovery.inductive.variants.im_clean.cuts.concurrency.project(log, groups, activity_key)[source]

pm4py.algo.discovery.inductive.variants.im_clean.cuts.loop module

pm4py.algo.discovery.inductive.variants.im_clean.cuts.loop.detect(dfg: Counter[Tuple[str, str]], alphabet: Dict[str, int], start_activities: Dict[str, int], end_activities: Dict[str, int]) → Optional[List[Set[str]]][source]

This method finds a loop cut in the dfg. Implementation follows function LoopCut on page 190 of “Robust Process Mining with Guarantees” by Sander J.J. Leemans (ISBN: 978-90-386-4257-4)

Basic Steps: 1. merge all start and end activities in one group (‘do’ group) 2. remove start/end activities from the dfg 3. detect connected components in (undirected representative) of the reduced graph 4. check if each component meets the start/end criteria of the loop cut definition (merge with the ‘do’ group if not) 5. return the cut if at least two groups remain

Parameters
  • dfg – directly follows graph

  • alphabet – alphabet of the dfg / log

  • start_activities – multiset of start activities of the dfg / log

  • end_activities – multiset of end activities of the dfg / log

Returns

  • A list of sets of activities, i.e., forming a maximal loop cut

  • None if no cut is found.

pm4py.algo.discovery.inductive.variants.im_clean.cuts.loop.project(log: pm4py.objects.log.obj.EventLog, cut: List[Set[str]], activity_key: str) → List[pm4py.objects.log.obj.EventLog][source]

pm4py.algo.discovery.inductive.variants.im_clean.cuts.sequence module

pm4py.algo.discovery.inductive.variants.im_clean.cuts.sequence.detect(alphabet, transitive_predecessors, transitive_successors)[source]

This method finds a xor cut in the dfg. Implementation follows function XorCut on page 188 of “Robust Process Mining with Guarantees” by Sander J.J. Leemans (ISBN: 978-90-386-4257-4)

Basic Steps: 1. create a group per activity 2. merge pairwise reachable nodes (based on transitive relations) 3. merge pairwise unreachable nodes (based on transitive relations) 4. sort the groups based on their reachability

Parameters
  • alphabet – characters occurring in the dfg

  • transitive_predecessors – dictionary mapping activities to their (transitive) predecessors, according to the DFG

  • transitive_successors – dictionary mapping activities to their (transitive) successors, according to the DFG

Returns

  • A list of sets of activities, i.e., forming a maximal sequence cut

  • None if no cut is found.

pm4py.algo.discovery.inductive.variants.im_clean.cuts.sequence.find_split_point(t, group, start, ignore, activity_key)[source]
pm4py.algo.discovery.inductive.variants.im_clean.cuts.sequence.project(log, groups, activity_key)[source]

This method projects the log based on a presumed sequence cut and a list of activity groups :Parameters: * log – original log

  • groups – list of activity sets to be used in projection (activities can only appear in one group)

  • activity_key – key to use in the event to derive the activity name

Returns

Return type

list of corresponding logs according to the sequence cut.

pm4py.algo.discovery.inductive.variants.im_clean.cuts.xor module

pm4py.algo.discovery.inductive.variants.im_clean.cuts.xor.detect(dfg: Counter[Tuple[str, str]], alphabet: Dict[str, int]) → Optional[List[Set[str]]][source]

This method finds a xor cut in the dfg. Implementation follows function XorCut on page 188 of “Robust Process Mining with Guarantees” by Sander J.J. Leemans (ISBN: 978-90-386-4257-4)

Basic Steps: 1.) the dfg is transformed to its undirected equivalent. 2.) we detect the connected components in the graph. 3.) if there are more than one connected components, the cut exists and is non-minimal.

Parameters
  • dfg – input directly follows graph

  • alphabet – alphabet of the dfg

Returns

  • A list of sets of activities, i.e., forming a maximal xor cut

  • None if no cut is found.

pm4py.algo.discovery.inductive.variants.im_clean.cuts.xor.project(log, groups, activity_key)[source]

Module contents