pm4py.algo.discovery.inductive.cuts package#

PM4Py – A Process Mining Library for Python

Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

Submodules#

pm4py.algo.discovery.inductive.cuts.abc module#

PM4Py – A Process Mining Library for Python

Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

class pm4py.algo.discovery.inductive.cuts.abc.Cut[source]#

Bases: ABC, Generic[T]

abstract classmethod operator(parameters: Dict[str, Any] | None = None) ProcessTree[source]#
abstract classmethod holds(obj: T, parameters: Dict[str, Any] | None = None) List[Collection[Any]] | None[source]#
classmethod apply(obj: T, parameters: Dict[str, Any] | None = None) Tuple[ProcessTree, List[T]] | None[source]#
abstract classmethod project(obj: T, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[T][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object

pm4py.algo.discovery.inductive.cuts.concurrency module#

PM4Py – A Process Mining Library for Python

Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

class pm4py.algo.discovery.inductive.cuts.concurrency.ConcurrencyCut[source]#

Bases: Cut[T], ABC, Generic[T]

classmethod operator(parameters: Dict[str, Any] | None = None) ProcessTree[source]#
classmethod holds(obj: T, parameters: Dict[str, Any] | None = None) List[Collection[Any]] | None[source]#
class pm4py.algo.discovery.inductive.cuts.concurrency.ConcurrencyCutUVCL[source]#

Bases: ConcurrencyCut[IMDataStructureUVCL]

classmethod project(obj: IMDataStructureUVCL, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[IMDataStructureUVCL][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object

class pm4py.algo.discovery.inductive.cuts.concurrency.ConcurrencyCutDFG[source]#

Bases: ConcurrencyCut[IMDataStructureDFG]

classmethod project(obj: IMDataStructureDFG, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[IMDataStructureDFG][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object

pm4py.algo.discovery.inductive.cuts.factory module#

PM4Py – A Process Mining Library for Python

Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

class pm4py.algo.discovery.inductive.cuts.factory.Parameters(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Bases: Enum

DISABLE_STRICT_SEQUENCE_CUT = 'disable_strict_sequence_cut'#
class pm4py.algo.discovery.inductive.cuts.factory.CutFactory[source]#

Bases: object

classmethod get_cuts(obj: T, inst: IMInstance, parameters: Dict[str, Any] | None = None) List[S][source]#
classmethod find_cut(obj: IMDataStructure, inst: IMInstance, parameters: Dict[str, Any] | None = None) Tuple[ProcessTree, List[T]] | None[source]#

pm4py.algo.discovery.inductive.cuts.loop module#

PM4Py – A Process Mining Library for Python

Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

class pm4py.algo.discovery.inductive.cuts.loop.LoopCut[source]#

Bases: Cut[T], ABC, Generic[T]

classmethod operator(parameters: Dict[str, Any] | None = None) ProcessTree[source]#
classmethod holds(obj: T, parameters: Dict[str, Any] | None = None) List[Collection[Any]] | None[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

class pm4py.algo.discovery.inductive.cuts.loop.LoopCutUVCL[source]#

Bases: LoopCut[IMDataStructureUVCL]

classmethod project(obj: IMDataStructureUVCL, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[IMDataStructureUVCL][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object

class pm4py.algo.discovery.inductive.cuts.loop.LoopCutDFG[source]#

Bases: LoopCut[IMDataStructureDFG]

classmethod project(obj: IMDataStructureUVCL, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[IMDataStructureDFG][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object

pm4py.algo.discovery.inductive.cuts.sequence module#

PM4Py – A Process Mining Library for Python

Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

class pm4py.algo.discovery.inductive.cuts.sequence.SequenceCut[source]#

Bases: Cut[T], ABC, Generic[T]

classmethod operator(parameters: Dict[str, Any] | None = None) ProcessTree[source]#
static check_merge_condition(g1, g2, trans_succ)[source]#
static merge_groups(groups, trans_succ)[source]#
classmethod holds(obj: T, parameters: Dict[str, Any] | None = None) List[Collection[Any]] | None[source]#

This method finds a sequence cut in the dfg. Implementation follows function sequence 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

class pm4py.algo.discovery.inductive.cuts.sequence.StrictSequenceCut[source]#

Bases: SequenceCut[T], ABC, Generic[T]

classmethod holds(obj: T, parameters: Dict[str, Any] | None = None) List[Collection[Any]] | None[source]#

This method implements the strict sequence cut as defined on page 233 of “Robust Process Mining with Guarantees” by Sander J.J. Leemans (ISBN: 978-90-386-4257-4) The function merges groups that together can be skipped.

class pm4py.algo.discovery.inductive.cuts.sequence.SequenceCutUVCL[source]#

Bases: SequenceCut[IMDataStructureUVCL]

classmethod project(obj: IMDataStructureUVCL, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[IMDataStructureUVCL][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object

class pm4py.algo.discovery.inductive.cuts.sequence.StrictSequenceCutUVCL[source]#

Bases: StrictSequenceCut[IMDataStructureUVCL], SequenceCutUVCL

classmethod holds(obj: T, parameters: Dict[str, Any] | None = None) List[Collection[Any]] | None[source]#

This method implements the strict sequence cut as defined on page 233 of “Robust Process Mining with Guarantees” by Sander J.J. Leemans (ISBN: 978-90-386-4257-4) The function merges groups that together can be skipped.

class pm4py.algo.discovery.inductive.cuts.sequence.SequenceCutDFG[source]#

Bases: SequenceCut[IMDataStructureDFG]

classmethod project(obj: IMDataStructureDFG, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[IMDataStructureDFG][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object

class pm4py.algo.discovery.inductive.cuts.sequence.StrictSequenceCutDFG[source]#

Bases: StrictSequenceCut[IMDataStructureDFG], SequenceCutDFG

classmethod holds(obj: T, parameters: Dict[str, Any] | None = None) List[Collection[Any]] | None[source]#

This method implements the strict sequence cut as defined on page 233 of “Robust Process Mining with Guarantees” by Sander J.J. Leemans (ISBN: 978-90-386-4257-4) The function merges groups that together can be skipped.

pm4py.algo.discovery.inductive.cuts.utils module#

PM4Py – A Process Mining Library for Python

Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

pm4py.algo.discovery.inductive.cuts.utils.merge_groups_based_on_activities(a, b, groups)[source]#
pm4py.algo.discovery.inductive.cuts.utils.merge_lists_based_on_activities(a, b, groups)[source]#

pm4py.algo.discovery.inductive.cuts.xor module#

PM4Py – A Process Mining Library for Python

Copyright (C) 2024 Process Intelligence Solutions UG (haftungsbeschränkt)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version.

This program 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 Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see this software project’s root or visit <https://www.gnu.org/licenses/>.

Website: https://processintelligence.solutions Contact: info@processintelligence.solutions

class pm4py.algo.discovery.inductive.cuts.xor.ExclusiveChoiceCut[source]#

Bases: Cut[T], ABC, Generic[T]

classmethod operator(parameters: Dict[str, Any] | None = None) ProcessTree[source]#
classmethod holds(obj: T, parameters: Dict[str, Any] | None = None) List[Collection[Any]] | None[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.

class pm4py.algo.discovery.inductive.cuts.xor.ExclusiveChoiceCutUVCL[source]#

Bases: ExclusiveChoiceCut[IMDataStructureUVCL]

classmethod project(obj: IMDataStructureUVCL, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[IMDataStructureUVCL][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object

class pm4py.algo.discovery.inductive.cuts.xor.ExclusiveChoiceCutDFG[source]#

Bases: ExclusiveChoiceCut[IMDataStructureDFG]

classmethod project(obj: IMDataStructureDFG, groups: List[Collection[Any]], parameters: Dict[str, Any] | None = None) List[IMDataStructureDFG][source]#

Projection of the given data object (Generic type T). Returns a corresponding process tree and the projected sub logs according to the identified groups. A precondition of the project function is that it holds on the object for the given Object