pm4py.objects.process_tree.utils 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.objects.process_tree.utils.bottomup 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.objects.process_tree.utils.bottomup.get_max_trace_length(tree, parameters=None)[source]#

Get the maximum length of a trace allowed by the process tree (can be infty)

Parameters#

tree

Process tree

parameters

Possible parameters of the algorithm

Returns#

max_trace_length

The maximum length of a trace

pm4py.objects.process_tree.utils.bottomup.get_min_trace_length(tree, parameters=None)[source]#

Get the minimum length of a trace allowed by the process tree

Parameters#

tree

Process tree

parameters

Possible parameters of the algorithm

Returns#

min_trace_length

The minimum length of a trace

pm4py.objects.process_tree.utils.bottomup.get_max_rem_dict(tree, parameters=None)[source]#

Gets for each node of the tree the maximum number of activities that are inserted to ‘complete’ a trace of the overall tree

Parameters#

tree

Process tree

parameters

Parameters of the algorithm

Returns#

max_rem_dict

Dictionary described in the docstring

pm4py.objects.process_tree.utils.bottomup.get_min_rem_dict(tree, parameters=None)[source]#

Gets for each node of the tree the minimum number of activities that are inserted to ‘complete’ a trace of the overall tree

Parameters#

tree

Process tree

parameters

Parameters of the algorithm

Returns#

min_rem_dict

Dictionary described in the docstring

pm4py.objects.process_tree.utils.bottomup.get_max_length_dict(node, max_length_dict, num_nodes)[source]#

Populates, given the nodes of a tree in a bottom-up order, the maximum length dictionary (every trace generated from that point of the tree has at most length N)

Parameters#

node

Node

max_length_dict

Dictionary that is populated in-place

num_nodes

Number of nodes in the process tree

pm4py.objects.process_tree.utils.bottomup.get_min_length_dict(node, min_length_dict)[source]#

Populates, given the nodes of a tree in a bottom-up order, the minimum length dictionary (every trace generated from that point of the tree has at least length N)

Parameters#

node

Node

min_length_dict

Dictionary that is populated in-place

pm4py.objects.process_tree.utils.bottomup.get_bottomup_nodes(tree, parameters=None)[source]#

Gets the nodes of a tree in a bottomup order (leafs come first, the master node comes after)

Parameters#

tree

Process tree

parameters

Parameters of the algorithm

Returns#

bottomup_nodes

Nodes of the tree in a bottomup order

pm4py.objects.process_tree.utils.generic 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.objects.process_tree.utils.generic.fold(tree)[source]#

This method reduces a process tree by merging nodes of the form N(N(a,b),c) into N(a,b,c), i.e., where N = || or X. For example X(X(a,b),c) == X(a,b,c). Furthermore, meaningless parts, e.g., internal nodes without children, or, operators with one child are removed as well.

Parameters:

tree

Returns:

pm4py.objects.process_tree.utils.generic.reduce_tau_leafs(tree)[source]#

This method reduces tau leaves that are not meaningful. For example tree ->(a, au,b) is reduced to ->(a,b). In some cases this results in constructs such as ->(a), i.e., a sequence with a single child. Such constructs are not further reduced.

Parameters:

tree

Returns:

pm4py.objects.process_tree.utils.generic.is_tau_leaf(tree)[source]#
pm4py.objects.process_tree.utils.generic.is_leaf(tree)[source]#
pm4py.objects.process_tree.utils.generic.project_execution_sequence_to_leafs(execution_sequence)[source]#

Project an execution sequence to the set of leafs of the tree.

Parameters#

execution_sequence

Execution sequence on the process tree

Returns#

list_leafs

Leafs nodes of the process tree

pm4py.objects.process_tree.utils.generic.project_execution_sequence_to_labels(execution_sequence)[source]#

Project an execution sequence to a set of labels

Parameters#

execution_sequence

Execution sequence on the process tree

Returns#

list_labels

List of labels contained in the process tree

pm4py.objects.process_tree.utils.generic.parse(string_rep)[source]#

Parse a string provided by the user to a process tree (initialization method)

Parameters#

string_rep

String representation of the process tree

Returns#

node

Process tree object

pm4py.objects.process_tree.utils.generic.parse_recursive(string_rep, depth_cache, depth)[source]#

Parse a string provided by the user to a process tree (recursive method)

Parameters#

string_rep

String representation of the process tree

depth_cache

Depth cache of the algorithm

depth

Current step depth

Returns#

node

Process tree object

pm4py.objects.process_tree.utils.generic.tree_sort(tree)[source]#

Sort a tree in such way that the order of the nodes in AND/XOR children is always the same. This is a recursive function

Parameters#

tree

Process tree

pm4py.objects.process_tree.utils.generic.structurally_language_equal(tree1, tree2)[source]#

this function checks if two given process trees are structurally equal, modulo, shuffling of children (if allowed), i.e., in the parallel, or and xor operators, the order does not matter.

Parameters:
  • tree1

  • tree2

Returns:

pm4py.objects.process_tree.utils.generic.get_process_tree_height(pt: ProcessTree) int[source]#

calculates from the given node the max height downwards :rtype: int :type pt: ProcessTree :param pt: process tree node :return: height

pm4py.objects.process_tree.utils.generic.process_tree_to_binary_process_tree(tree: ProcessTree) ProcessTree[source]#
pm4py.objects.process_tree.utils.generic.common_ancestor(t1: ProcessTree, t2: ProcessTree) ProcessTree | None[source]#
pm4py.objects.process_tree.utils.generic.get_ancestors_until(t: ProcessTree, until: ProcessTree, include_until: bool = True) List[ProcessTree] | None[source]#
pm4py.objects.process_tree.utils.generic.get_leaves(t: ProcessTree, leaves=None)[source]#
pm4py.objects.process_tree.utils.generic.get_leaves_as_tuples(t: ProcessTree, leaves=None)[source]#
pm4py.objects.process_tree.utils.generic.is_operator(tree: ProcessTree, operator: Operator) bool[source]#
pm4py.objects.process_tree.utils.generic.is_any_operator_of(tree: ProcessTree, operators: List[Operator]) bool[source]#
pm4py.objects.process_tree.utils.generic.is_in_state(tree: ProcessTree, target_state: OperatorState, tree_state: Dict[Tuple[int, ProcessTree], OperatorState]) bool[source]#
pm4py.objects.process_tree.utils.generic.is_root(tree: ProcessTree) bool[source]#

pm4py.objects.process_tree.utils.regex 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.objects.process_tree.utils.regex.pt_to_regex(tree, rec_depth=0, shared_obj=None, parameters=None)[source]#

Transforms a process tree to a regular expression

NB: The conversion is not yet working with trees containing an AND and/or an OR operator!

Parameters#

tree

Process tree

parameters

Possible parameters of the algorithm