pm4py.algo.conformance.tokenreplay.variants 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.conformance.tokenreplay.variants.backwards 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.conformance.tokenreplay.variants.backwards.Parameters(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Bases: Enum

CASE_ID_KEY = 'pm4py:param:case_id_key'#
ACTIVITY_KEY = 'pm4py:param:activity_key'#
PARAMETER_VARIANT_DELIMITER = 'variant_delimiter'#
VARIANTS = 'variants'#
PLACES_SHORTEST_PATH_BY_HIDDEN = 'places_shortest_path_by_hidden'#
THREAD_MAX_EX_TIME = 'thread_maximum_ex_time'#
DISABLE_VARIANTS = 'disable_variants'#
CLEANING_TOKEN_FLOOD = 'cleaning_token_flood'#
IS_REDUCTION = 'is_reduction'#
WALK_THROUGH_HIDDEN_TRANS = 'walk_through_hidden_trans'#
RETURN_NAMES = 'return_names'#
STOP_IMMEDIATELY_UNFIT = 'stop_immediately_unfit'#
TRY_TO_REACH_FINAL_MARKING_THROUGH_HIDDEN = 'try_to_reach_final_marking_through_hidden'#
CONSIDER_REMAINING_IN_FITNESS = 'consider_remaining_in_fitness'#
ENABLE_PLTR_FITNESS = 'enable_pltr_fitness'#
pm4py.algo.conformance.tokenreplay.variants.backwards.get_bmap(net, m, bmap)[source]#

Updates the B-map with the invisibles enabling marking m

Parameters#

net

Petri net

m

Marking

bmap

B-map

Returns#

trans_list

List of invisibles that enable m

pm4py.algo.conformance.tokenreplay.variants.backwards.diff_mark(m, t)[source]#

Subtract from a marking the postset of t and adds the preset

Parameters#

m

Marking

t

Transition

Returns#

diff_mark

Difference marking

pm4py.algo.conformance.tokenreplay.variants.backwards.explore_backwards(re_list, all_vis, net, m, bmap)[source]#

Do the backwards state space exploration

Parameters#

re_list

List of remaining markings to visit using the backwards approach

all_vis

Set of visited transitions

net

Petri net

m

Marking

bmap

B-map of the net

Returns#

list_tr

List of transitions to enable in order to enable a marking (otherwise None)

pm4py.algo.conformance.tokenreplay.variants.backwards.execute_tr(m, t, tokens_counter)[source]#
pm4py.algo.conformance.tokenreplay.variants.backwards.tr_vlist(vlist, net, im, fm, tmap, bmap, parameters=None)[source]#

Visit a variant using the backwards token basedr eplay

Parameters#

vlist

Variants list

net

Petri net

im

Initial marking

tmap

Transition map (labels to list of transitions)

bmap

B-map

parameters

Possible parameters of the execution

Returns#

visited_transitions

List of visited transitions during the replay

is_fit

Indicates if the replay was successful or not

pm4py.algo.conformance.tokenreplay.variants.backwards.apply(log: EventLog, net: PetriNet, initial_marking: Marking, final_marking: Marking, parameters: Dict[str | Parameters, Any] | None = None) List[Dict[str, Any]][source]#

Method to apply token-based replay

Parameters#

log

Log

net

Petri net

initial_marking

Initial marking

final_marking

Final marking

parameters

Parameters of the algorithm

pm4py.algo.conformance.tokenreplay.variants.backwards.get_diagnostics_dataframe(log: EventLog, tbr_output: List[Dict[str, Any]], parameters: Dict[str | Parameters, Any] | None = None) DataFrame[source]#

Gets the results of token-based replay in a dataframe

Parameters#

log

Event log

tbr_output

Output of the token-based replay technique

Returns#

dataframe

Diagnostics dataframe

pm4py.algo.conformance.tokenreplay.variants.token_replay 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.conformance.tokenreplay.variants.token_replay.Parameters(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Bases: Enum

CASE_ID_KEY = 'pm4py:param:case_id_key'#
ACTIVITY_KEY = 'pm4py:param:activity_key'#
PARAMETER_VARIANT_DELIMITER = 'variant_delimiter'#
VARIANTS = 'variants'#
PLACES_SHORTEST_PATH_BY_HIDDEN = 'places_shortest_path_by_hidden'#
THREAD_MAX_EX_TIME = 'thread_maximum_ex_time'#
DISABLE_VARIANTS = 'disable_variants'#
CLEANING_TOKEN_FLOOD = 'cleaning_token_flood'#
IS_REDUCTION = 'is_reduction'#
WALK_THROUGH_HIDDEN_TRANS = 'walk_through_hidden_trans'#
RETURN_NAMES = 'return_names'#
STOP_IMMEDIATELY_UNFIT = 'stop_immediately_unfit'#
TRY_TO_REACH_FINAL_MARKING_THROUGH_HIDDEN = 'try_to_reach_final_marking_through_hidden'#
CONSIDER_REMAINING_IN_FITNESS = 'consider_remaining_in_fitness'#
CONSIDER_ACTIVITIES_NOT_IN_MODEL_IN_FITNESS = 'consider_activities_not_in_model_in_fitness'#
ENABLE_PLTR_FITNESS = 'enable_pltr_fitness'#
SHOW_PROGRESS_BAR = 'show_progress_bar'#
class pm4py.algo.conformance.tokenreplay.variants.token_replay.TechnicalParameters(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]#

Bases: Enum

MAX_REC_DEPTH = 50#
MAX_IT_FINAL1 = 5#
MAX_IT_FINAL2 = 5#
MAX_REC_DEPTH_HIDTRANSENABL = 2#
MAX_POSTFIX_SUFFIX_LENGTH = 20#
MAX_NO_THREADS = 1024#
MAX_DEF_THR_EX_TIME = 10#
ENABLE_POSTFIX_CACHE = False#
ENABLE_MARKTOACT_CACHE = False#
class pm4py.algo.conformance.tokenreplay.variants.token_replay.DebugConst[source]#

Bases: object

REACH_MRH = -1#
REACH_ITF1 = -1#
REACH_ITF2 = -1#
exception pm4py.algo.conformance.tokenreplay.variants.token_replay.NoConceptNameException(message)[source]#

Bases: Exception

pm4py.algo.conformance.tokenreplay.variants.token_replay.add_missing_tokens(t, marking)[source]#

Adds missing tokens needed to activate a transition

Parameters#

t

Transition that should be enabled

marking

Current marking

pm4py.algo.conformance.tokenreplay.variants.token_replay.get_consumed_tokens(t)[source]#

Get tokens consumed firing a transition

Parameters#

t

Transition that should be enabled

pm4py.algo.conformance.tokenreplay.variants.token_replay.get_produced_tokens(t)[source]#

Get tokens produced firing a transition

Parameters#

t

Transition that should be enabled

pm4py.algo.conformance.tokenreplay.variants.token_replay.merge_dicts(x, y)[source]#

Merge two dictionaries keeping the least value

Parameters#

x

First map (string, integer)

y

Second map (string, integer)

pm4py.algo.conformance.tokenreplay.variants.token_replay.get_places_with_missing_tokens(t, marking)[source]#

Get places with missing tokens

Parameters#

t

Transition to enable

marking

Current marking

pm4py.algo.conformance.tokenreplay.variants.token_replay.get_hidden_transitions_to_enable(marking, places_with_missing, places_shortest_path_by_hidden)[source]#

Calculate an ordered list of transitions to visit in order to enable a given transition

Parameters#

marking

Current marking

places_with_missing

List of places with missing tokens

places_shortest_path_by_hidden

Minimal connection between places by hidden transitions

pm4py.algo.conformance.tokenreplay.variants.token_replay.get_req_transitions_for_final_marking(marking, final_marking, places_shortest_path_by_hidden)[source]#

Gets required transitions for final marking

Parameters#

marking

Current marking

final_marking

Final marking assigned to the Petri net

places_shortest_path_by_hidden

Minimal connection between places by hidden transitions

pm4py.algo.conformance.tokenreplay.variants.token_replay.enable_hidden_transitions(net, marking, activated_transitions, visited_transitions, all_visited_markings, hidden_transitions_to_enable, t)[source]#

Actually enable hidden transitions on the Petri net

Parameters#

net

Petri net

marking

Current marking

activated_transitions

All activated transitions during the replay

visited_transitions

All visited transitions by the recursion

all_visited_markings

All visited markings

hidden_transitions_to_enable

List of hidden transition to enable

t

Transition against we should check if they are enabled

pm4py.algo.conformance.tokenreplay.variants.token_replay.apply_hidden_trans(t, net, marking, places_shortest_paths_by_hidden, act_tr, rec_depth, visit_trans, vis_mark)[source]#

Apply hidden transitions in order to enable a given transition

Parameters#

t

Transition to eventually enable

net

Petri net

marking

Marking

places_shortest_paths_by_hidden

Shortest paths between places connected by hidden transitions

act_tr

All activated transitions

rec_depth

Current recursion depth

visit_trans

All visited transitions by hiddenTrans method

vis_mark

All visited markings

pm4py.algo.conformance.tokenreplay.variants.token_replay.break_condition_final_marking(marking, final_marking)[source]#

Verify break condition for final marking

Parameters#

marking

Current marking

final_marking

Target final marking

pm4py.algo.conformance.tokenreplay.variants.token_replay.apply_trace(trace, net, initial_marking, final_marking, trans_map, enable_pltr_fitness, place_fitness, transition_fitness, notexisting_activities_in_model, places_shortest_path_by_hidden, consider_remaining_in_fitness, activity_key='concept:name', try_to_reach_final_marking_through_hidden=True, stop_immediately_unfit=False, walk_through_hidden_trans=True, post_fix_caching=None, marking_to_activity_caching=None, is_reduction=False, thread_maximum_ex_time=10, enable_postfix_cache=False, enable_marktoact_cache=False, cleaning_token_flood=False, s_components=None, trace_occurrences=1, consider_activities_not_in_model_in_fitness=False)[source]#

Apply the token replaying algorithm to a trace

Parameters#

trace

Trace in the event log

net

Petri net

initial_marking

Initial marking

final_marking

Final marking

trans_map

Map between transitions labels and transitions

enable_pltr_fitness

Enable fitness retrieval at place/transition level

place_fitness

Current dictionary of places associated with unfit traces

transition_fitness

Current dictionary of transitions associated with unfit traces

notexisting_activities_in_model

Map that stores the notexisting activities in the model

places_shortest_path_by_hidden

Shortest paths between places by hidden transitions

consider_remaining_in_fitness

Boolean value telling if the remaining tokens should be considered in fitness evaluation

activity_key

Name of the attribute that contains the activity

try_to_reach_final_marking_through_hidden

Boolean value that decides if we shall try to reach the final marking through hidden transitions

stop_immediately_unfit

Boolean value that decides if we shall stop immediately when a non-conformance is detected

walk_through_hidden_trans

Boolean value that decides if we shall walk through hidden transitions in order to enable visible transitions

post_fix_caching

Stores the post fix caching object

marking_to_activity_caching

Stores the marking-to-activity cache

is_reduction

Expresses if the token-based replay is called in a reduction attempt

thread_maximum_ex_time

Alignment threads maximum allowed execution time

enable_postfix_cache

Enables postfix cache

enable_marktoact_cache

Enables marking to activity cache

cleaning_token_flood

Decides if a cleaning of the token flood shall be operated

s_components

S-components of the Petri net (if workflow net)

class pm4py.algo.conformance.tokenreplay.variants.token_replay.ApplyTraceTokenReplay(trace, net, initial_marking, final_marking, trans_map, enable_pltr_fitness, place_fitness, transition_fitness, notexisting_activities_in_model, places_shortest_path_by_hidden, consider_remaining_in_fitness, activity_key='concept:name', reach_mark_through_hidden=True, stop_immediately_when_unfit=False, walk_through_hidden_trans=True, post_fix_caching=None, marking_to_activity_caching=None, is_reduction=False, thread_maximum_ex_time=10, cleaning_token_flood=False, s_components=None, trace_occurrences=1, consider_activities_not_in_model_in_fitness=False)[source]#

Bases: object

run()[source]#

Runs the thread and stores the results

class pm4py.algo.conformance.tokenreplay.variants.token_replay.PostFixCaching[source]#

Bases: object

Post fix caching object

class pm4py.algo.conformance.tokenreplay.variants.token_replay.MarkingToActivityCaching[source]#

Bases: object

Marking to activity caching

pm4py.algo.conformance.tokenreplay.variants.token_replay.get_variant_from_trace(trace, activity_key, disable_variants=False)[source]#

Gets the variant from the trace (allow disabling)

Parameters#

trace

Trace

activity_key

Attribute that is the activity

disable_variants

Boolean value that disable variants

Returns#

variant

Variant describing the trace

pm4py.algo.conformance.tokenreplay.variants.token_replay.transcribe_result(t, return_object_names=True)[source]#
pm4py.algo.conformance.tokenreplay.variants.token_replay.apply_log(log, net, initial_marking, final_marking, enable_pltr_fitness=False, consider_remaining_in_fitness=False, activity_key='concept:name', reach_mark_through_hidden=True, stop_immediately_unfit=False, walk_through_hidden_trans=True, places_shortest_path_by_hidden=None, is_reduction=False, thread_maximum_ex_time=10, cleaning_token_flood=False, disable_variants=False, return_object_names=False, show_progress_bar=True, consider_activities_not_in_model_in_fitness=False, case_id_key='case:concept:name')[source]#

Apply token-based replay to a log

Parameters#

log

Trace log

net

Petri net

initial_marking

Initial marking

final_marking

Final marking

enable_pltr_fitness

Enable fitness retrieval at place level

consider_remaining_in_fitness

Boolean value telling if the remaining tokens should be considered in fitness evaluation

activity_key

Name of the attribute that contains the activity

reach_mark_through_hidden

Boolean value that decides if we shall try to reach the final marking through hidden transitions

stop_immediately_unfit

Boolean value that decides if we shall stop immediately when a non-conformance is detected

walk_through_hidden_trans

Boolean value that decides if we shall walk through hidden transitions in order to enable visible transitions

places_shortest_path_by_hidden

Shortest paths between places by hidden transitions

is_reduction

Expresses if the token-based replay is called in a reduction attempt

thread_maximum_ex_time

Alignment threads maximum allowed execution time

cleaning_token_flood

Decides if a cleaning of the token flood shall be operated

disable_variants

Disable variants grouping

return_object_names

Decides whether names instead of object pointers shall be returned

pm4py.algo.conformance.tokenreplay.variants.token_replay.apply(log: EventLog, net: PetriNet, initial_marking: Marking, final_marking: Marking, parameters: Dict[str | Parameters, Any] | None = None) List[Dict[str, Any]][source]#

Method to apply token-based replay

Parameters#

log

Log

net

Petri net

initial_marking

Initial marking

final_marking

Final marking

parameters

Parameters of the algorithm

pm4py.algo.conformance.tokenreplay.variants.token_replay.apply_variants_list(variants_list, net, initial_marking, final_marking, parameters=None)[source]#
pm4py.algo.conformance.tokenreplay.variants.token_replay.apply_variants_dictionary(variants, net, initial_marking, final_marking, parameters=None)[source]#
pm4py.algo.conformance.tokenreplay.variants.token_replay.apply_variants_list_petri_string(variants_list, petri_string, parameters=None)[source]#
pm4py.algo.conformance.tokenreplay.variants.token_replay.apply_variants_list_petri_string_multiprocessing(output, variants_list, petri_string, parameters=None)[source]#
pm4py.algo.conformance.tokenreplay.variants.token_replay.get_diagnostics_dataframe(log: EventLog, tbr_output: List[Dict[str, Any]], parameters: Dict[str | Parameters, Any] | None = None) DataFrame[source]#

Gets the results of token-based replay in a dataframe

Parameters#

log

Event log

tbr_output

Output of the token-based replay technique

Returns#

dataframe

Diagnostics dataframe