Source code for pm4py.objects.log.util.log_regex

'''
    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
'''

from typing import Dict

from pm4py.objects.log.obj import EventLog
from pm4py.util import xes_constants as xes
from pm4py.util.constants import PARAMETER_CONSTANT_ACTIVITY_KEY
from pm4py.util.regex import SharedObj, get_new_char


[docs] def get_encoded_trace(trace, mapping, parameters=None): """ Gets the encoding of the provided trace Parameters ------------- trace Trace of the event log mapping Mapping (activity to symbol) Returns ------------- trace_str Trace string """ if parameters is None: parameters = {} activity_key = ( parameters[PARAMETER_CONSTANT_ACTIVITY_KEY] if PARAMETER_CONSTANT_ACTIVITY_KEY in parameters else xes.DEFAULT_NAME_KEY ) trace_str = "".join( [mapping[x[activity_key]] for x in trace if x[activity_key] in mapping] ) return trace_str
[docs] def get_encoded_log(log, mapping, parameters=None): """ Gets the encoding of the provided log Parameters ------------- log Event log mapping Mapping (activity to symbol) Returns ------------- list_str List of encoded strings """ if parameters is None: parameters = {} list_str = list() for trace in log: list_str.append( get_encoded_trace(trace, mapping, parameters=parameters) ) return list_str
[docs] def form_encoding_dictio_from_log(log, parameters=None): """ Forms the encoding dictionary from the current log Parameters ------------- log Event log parameters Parameters of the algorithm Returns ------------- encoding_dictio Encoding dictionary """ from pm4py.statistics.attributes.log import get as attributes_get if parameters is None: parameters = {} activity_key = ( parameters[PARAMETER_CONSTANT_ACTIVITY_KEY] if PARAMETER_CONSTANT_ACTIVITY_KEY in parameters else xes.DEFAULT_NAME_KEY ) shared_obj = SharedObj() activities = attributes_get.get_attribute_values( log, activity_key, parameters=parameters ) mapping = {} for act in activities: get_new_char(act, shared_obj) mapping[act] = shared_obj.mapping_dictio[act] return mapping
[docs] def form_encoding_dictio_from_two_logs( log1: EventLog, log2: EventLog, parameters=None ) -> Dict[str, str]: """ Forms the encoding dictionary from a couple of logs Parameters ---------------- log1 First log log2 Second log parameters Parameters of the algorithm Returns ---------------- encoding_dictio Encoding dictionary """ from pm4py.statistics.attributes.log import get as attributes_get if parameters is None: parameters = {} activity_key = ( parameters[PARAMETER_CONSTANT_ACTIVITY_KEY] if PARAMETER_CONSTANT_ACTIVITY_KEY in parameters else xes.DEFAULT_NAME_KEY ) shared_obj = SharedObj() activities_log_1 = attributes_get.get_attribute_values( log1, activity_key, parameters=parameters ) activities_log_2 = attributes_get.get_attribute_values( log2, activity_key, parameters=parameters ) mapping = {} for act in activities_log_1: if act not in mapping: get_new_char(act, shared_obj) mapping[act] = shared_obj.mapping_dictio[act] for act in activities_log_2: if act not in mapping: get_new_char(act, shared_obj) mapping[act] = shared_obj.mapping_dictio[act] return mapping