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.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: 9789038642574)
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: 9789038642574)
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: 9789038642574)
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 nonminimal.
 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.