Beispiel #1
0
    def __init__(self, net, im, fm, parameters=None):
        """
        Initialize the token-based replay streaming conformance

        Parameters
        --------------
        net
            Petri net
        im
            Initial marking
        fm
            Final marking
        """
        if parameters is None:
            parameters = {}
        self.case_id_key = exec_utils.get_param_value(Parameters.CASE_ID_KEY, parameters, constants.CASE_CONCEPT_NAME)
        self.activity_key = exec_utils.get_param_value(Parameters.ACTIVITY_KEY, parameters,
                                                       xes_constants.DEFAULT_NAME_KEY)
        self.maximum_iterations_invisibles = exec_utils.get_param_value(Parameters.MAXIMUM_ITERATIONS_INVISIBLES,
                                                                        parameters, 10)
        self.net = net
        self.im = im
        self.fm = fm
        self.places_inv_dict = {x.name: x for x in net.places}
        self.activities = list(set(x.label for x in self.net.transitions))
        self.dictio_spaths = self.get_paths_net()
        self.build_dictionaries(parameters=parameters)
        StreamingAlgorithm.__init__(self)
Beispiel #2
0
    def __init__(self,
                 temporal_profile: typing.TemporalProfile,
                 parameters: Optional[Dict[Any, Any]] = None):
        """
        Initialize the streaming conformance checking.

        Implements the approach described in:
        Stertz, Florian, Jürgen Mangler, and Stefanie Rinderle-Ma. "Temporal Conformance Checking at Runtime based on Time-infused Process Models." arXiv preprint arXiv:2008.07262 (2020).

        Parameters
        ---------------
        temporal_profile
            Temporal profile
        parameters
            Parameters of the algorithm, including:
             - Parameters.ACTIVITY_KEY => the attribute to use as activity
             - Parameters.START_TIMESTAMP_KEY => the attribute to use as start timestamp
             - Parameters.TIMESTAMP_KEY => the attribute to use as timestamp
             - Parameters.ZETA => multiplier for the standard deviation
             - Parameters.CASE_ID_KEY => column to use as case identifier
             - Parameters.DICT_VARIANT => the variant of dictionary to use
             - Parameters.CASE_DICT_ID => the identifier of the case dictionary
             - Parameters.DEV_DICT_ID => the identifier of the deviations dictionary
        """
        if parameters is None:
            parameters = {}

        self.temporal_profile = temporal_profile
        self.activity_key = exec_utils.get_param_value(
            Parameters.ACTIVITY_KEY, parameters,
            xes_constants.DEFAULT_NAME_KEY)
        self.timestamp_key = exec_utils.get_param_value(
            Parameters.TIMESTAMP_KEY, parameters,
            xes_constants.DEFAULT_TIMESTAMP_KEY)
        self.start_timestamp_key = exec_utils.get_param_value(
            Parameters.START_TIMESTAMP_KEY, parameters,
            xes_constants.DEFAULT_TIMESTAMP_KEY)
        self.case_id_key = exec_utils.get_param_value(
            Parameters.CASE_ID_KEY, parameters, constants.CASE_CONCEPT_NAME)
        self.zeta = exec_utils.get_param_value(Parameters.ZETA, parameters,
                                               6.0)
        parameters_gen = copy(parameters)
        dict_variant = exec_utils.get_param_value(
            Parameters.DICT_VARIANT, parameters,
            generator.Variants.THREAD_SAFE)
        case_dict_id = exec_utils.get_param_value(Parameters.CASE_DICT_ID,
                                                  parameters, 0)
        parameters_gen[Parameters.DICT_ID] = case_dict_id
        self.case_dictionary = generator.apply(variant=dict_variant,
                                               parameters=parameters_gen)
        parameters_dev = copy(parameters)
        dev_dict_id = exec_utils.get_param_value(Parameters.DEV_DICT_ID,
                                                 parameters, 1)
        parameters_dev[Parameters.DICT_ID] = dev_dict_id
        self.deviations_dict = generator.apply(variant=dict_variant,
                                               parameters=parameters_dev)
        StreamingAlgorithm.__init__(self)
Beispiel #3
0
 def __init__(self, log, parameters=None):
     if parameters is None:
         parameters = {}
     self.case_id_key = exec_utils.get_param_value(
         Parameters.CASE_ID_KEY, parameters, constants.CASE_CONCEPT_NAME)
     self.activity_key = exec_utils.get_param_value(
         Parameters.ACTIVITY_KEY, parameters,
         xes_constants.DEFAULT_NAME_KEY)
     self.log = log
     self.build_dictionary()
     StreamingAlgorithm.__init__(self)
    def __init__(self, parameters=None):
        """
        Initialize the StreamingDFGDiscovery object

        Parameters
        ---------------
        parameters of the algorithm, including:
         - Parameters.ACTIVITY_KEY: the key of the event to use as activity
         - Parameters.CASE_ID_KEY: the key of the event to use as case identifier
        """
        if parameters is None:
            parameters = {}

        self.parameters = parameters
        self.activity_key = exec_utils.get_param_value(
            Parameters.ACTIVITY_KEY, parameters,
            xes_constants.DEFAULT_NAME_KEY)
        self.case_id_key = exec_utils.get_param_value(
            Parameters.CASE_ID_KEY, parameters, constants.CASE_CONCEPT_NAME)
        self.build_dictionaries(parameters)
        StreamingAlgorithm.__init__(self)
Beispiel #5
0
    def __init__(self, footprints, parameters=None):
        """
        Initialize the footprints streaming conformance object

        Parameters
        ---------------
        footprints
            Footprints
        parameters
            Parameters of the algorithm
        """
        self.footprints = footprints
        self.case_id_key = exec_utils.get_param_value(
            Parameters.CASE_ID_KEY, parameters, constants.CASE_CONCEPT_NAME)
        self.activity_key = exec_utils.get_param_value(
            Parameters.ACTIVITY_KEY, parameters,
            xes_constants.DEFAULT_NAME_KEY)
        self.start_activities = footprints[START_ACTIVITIES]
        self.end_activities = footprints[END_ACTIVITIES]
        self.activities = footprints[ACTIVITIES]
        self.all_fps = set(footprints[SEQUENCE]).union(
            set(footprints[PARALLEL]))
        self.build_dictionaries(parameters=parameters)
        StreamingAlgorithm.__init__(self)
 def __init__(self):
     StreamingAlgorithm.__init__(self)