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

Submodules

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

This file is part of PM4Py (More Info: https://pm4py.fit.fraunhofer.de).

PM4Py is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

PM4Py is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with PM4Py. If not, see <https://www.gnu.org/licenses/>.

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.concurrency.project_dfg(dfg_sa_ea_actcount, groups)[source]

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

This file is part of PM4Py (More Info: https://pm4py.fit.fraunhofer.de).

PM4Py is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

PM4Py is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with PM4Py. If not, see <https://www.gnu.org/licenses/>.

pm4py.algo.discovery.inductive.variants.im_clean.cuts.loop.detect(dfg: Dict[Tuple[str, str], int], 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.loop.project_dfg(dfg_sa_ea_actcount, groups)[source]

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

This file is part of PM4Py (More Info: https://pm4py.fit.fraunhofer.de).

PM4Py is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

PM4Py is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with PM4Py. If not, see <https://www.gnu.org/licenses/>.

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.sequence.project_dfg(dfg_sa_ea_actcount, groups)[source]

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

This file is part of PM4Py (More Info: https://pm4py.fit.fraunhofer.de).

PM4Py is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

PM4Py is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with PM4Py. If not, see <https://www.gnu.org/licenses/>.

pm4py.algo.discovery.inductive.variants.im_clean.cuts.xor.detect(dfg: Dict[Tuple[str, str], int], 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]
pm4py.algo.discovery.inductive.variants.im_clean.cuts.xor.project_dfg(dfg_sa_ea_actcount, groups)[source]

Module contents

This file is part of PM4Py (More Info: https://pm4py.fit.fraunhofer.de).

PM4Py is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

PM4Py is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with PM4Py. If not, see <https://www.gnu.org/licenses/>.