Source code for pm4py.objects.transition_system.obj
'''
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 pm4py.objects.transition_system import constants
[docs]
class TransitionSystem(object):
[docs]
class State(object):
def __init__(self, name, incoming=None, outgoing=None, data=None):
self.__name = name
self.__incoming = set() if incoming is None else incoming
self.__outgoing = set() if outgoing is None else outgoing
self.__data = (
{constants.INGOING_EVENTS: [], constants.OUTGOING_EVENTS: []}
if data is None
else data
)
def __get_name(self):
return self.__name
def __set_name(self, name):
self.__name = name
def __get_outgoing(self):
return self.__outgoing
def __set_outgoing(self, outgoing):
self.__outgoing = outgoing
def __get_incoming(self):
return self.__incoming
def __set_incoming(self, incoming):
self.__incoming = incoming
def __get_data(self):
return self.__data
def __set_data(self, data):
self.__data = data
def __repr__(self):
return str(self.name)
def __eq__(self, other):
if isinstance(other, TransitionSystem.State):
return self.__name == other.__name
return False
def __hash__(self):
return hash(str(self.__name))
name = property(__get_name, __set_name)
incoming = property(__get_incoming, __set_incoming)
outgoing = property(__get_outgoing, __set_outgoing)
data = property(__get_data, __set_data)
[docs]
class Transition(object):
def __init__(self, name, from_state, to_state, data=None):
self.__name = name
self.__from_state = from_state
self.__to_state = to_state
self.__data = {constants.EVENTS: []} if data is None else data
def __get_name(self):
return self.__name
def __get_to_state(self):
return self.__to_state
def __set_to_state(self, to_state):
self.__to_state = to_state
def __get_from_state(self):
return self.__from_state
def __set_from_state(self, from_state):
self.__from_state = from_state
def __get_data(self):
return self.__data
def __set_data(self, data):
self.__data = data
def __repr__(self):
return str(self.name)
def __eq__(self, other):
if isinstance(other, TransitionSystem.Transition):
return (
self.__name == other.__name
and self.__from_state == other.__from_state
and self.__to_state == other.__to_state
)
return False
def __hash__(self):
return hash((str(self.__name), self.__from_state, self.__to_state))
name = property(__get_name)
from_state = property(__get_from_state, __set_from_state)
to_state = property(__get_to_state, __set_to_state)
data = property(__get_data, __set_data)
def __init__(self, name=None, states=None, transitions=None):
self.__name = "" if name is None else name
self.__states = set() if states is None else states
self.__transitions = set() if transitions is None else transitions
def __get_name(self):
return self.__name
def __set_name(self, name):
self.__name = name
def __get_states(self):
return self.__states
def __get_transitions(self):
return self.__transitions
def __set_transitions(self, transitions):
self.__transitions = transitions
def __eq__(self, other):
if isinstance(other, TransitionSystem):
return (
self.__name == other.__name
and self.__states == other.__states
and self.__transitions == other.__transitions
)
return False
def __hash__(self):
return hash(
(
str(self.__name),
frozenset(self.__states),
frozenset(self.__transitions),
)
)
name = property(__get_name, __set_name)
states = property(__get_states)
transitions = property(__get_transitions, __set_transitions)