def test_37(self): from pm4py.algo.filtering.pandas.attributes import attributes_filter df = self.load_running_example_df() filtered_df = attributes_filter.apply_auto_filter(df, parameters={ attributes_filter.Parameters.CASE_ID_KEY: "case:concept:name", attributes_filter.Parameters.ATTRIBUTE_KEY: "concept:name", attributes_filter.Parameters.DECREASING_FACTOR: 0.6})
def apply_auto_filter(log, parameters=None): """ Apply some filters in battery to the log_skeleton in order to get a simplified log_skeleton Parameters ---------- log Log parameters Eventual parameters applied to the algorithms: Parameters.DECREASING_FACTOR -> Decreasing factor (provided to all algorithms) Parameters.ACTIVITY_KEY -> Activity key (must be specified if different from concept:name) Returns --------- filtered_log Filtered log_skeleton """ # the following filters are applied: # - activity filter (keep only attributes with a reasonable number of occurrences) (if enabled) # - variant filter (keep only variants with a reasonable number of occurrences) (if enabled) # - start attributes filter (keep only variants that starts with a plausible start activity) (if enabled) # - end attributes filter (keep only variants that starts with a plausible end activity) (if enabled) if parameters is None: parameters = {} enable_activities_filter = exec_utils.get_param_value(Parameters.ENABLE_ACTIVITES_FILTER, parameters, True) enable_variants_filter = exec_utils.get_param_value(Parameters.ENABLE_VARIANTS_FILTER, parameters, False) enable_start_activities_filter = exec_utils.get_param_value(Parameters.ENABLE_START_ACTIVITIES_FILTER, parameters, False) enable_end_activities_filter = exec_utils.get_param_value(Parameters.ENABLE_END_ACTIVITIES_FILTER, parameters, True) attribute_key = exec_utils.get_param_value(Parameters.ATTRIBUTE_KEY, parameters, xes.DEFAULT_NAME_KEY) parameters[Parameters.ATTRIBUTE_KEY] = attribute_key parameters[Parameters.ACTIVITY_KEY] = attribute_key variants = variants_module.get_variants(log, parameters=parameters) filtered_log = log if enable_activities_filter: filtered_log = attributes_filter.apply_auto_filter(log, variants=variants, parameters=parameters) variants = variants_module.get_variants(filtered_log, parameters=parameters) if enable_variants_filter: filtered_log = variants_module.apply_auto_filter(filtered_log, variants=variants, parameters=parameters) variants = variants_module.get_variants(filtered_log, parameters=parameters) if enable_start_activities_filter: filtered_log = start_activities_filter.apply_auto_filter(filtered_log, variants=variants, parameters=parameters) if enable_end_activities_filter: filtered_log = end_activities_filter.apply_auto_filter(filtered_log, variants=variants, parameters=parameters) return filtered_log
def test_logfiltering_filtering1(self): # to avoid static method warnings in tests, # that by construction of the unittest package have to be expressed in such way self.dummy_variable = "dummy_value" input_log = os.path.join(INPUT_DATA_DIR, "running-example.xes") log = xes_importer.import_log(input_log) log = attributes_filter.apply_auto_filter(log) log = variants_module.apply_auto_filter(log) log = start_activities_filter.apply_auto_filter(log) log = end_activities_filter.apply_auto_filter(log) log = paths_filter.apply_auto_filter(log) del log
def apply_auto_filter(log, parameters=None): """ Apply some filters in battery to the log in order to get a simplified log Parameters ---------- log Log parameters Eventual parameters applied to the algorithms: decreasingFactor -> Decreasing factor (provided to all algorithms) activity_key -> Activity key (must be specified if different from concept:name) Returns --------- filtered_log Filtered log """ # the following filters are applied: # - activity filter (keep only attributes with a reasonable number of occurrences) (if enabled) # - variant filter (keep only variants with a reasonable number of occurrences) (if enabled) # - start attributes filter (keep only variants that starts with a plausible start activity) (if enabled) # - end attributes filter (keep only variants that starts with a plausible end activity) (if enabled) if parameters is None: parameters = {} attribute_key = parameters[ PARAMETER_CONSTANT_ACTIVITY_KEY] if PARAMETER_CONSTANT_ACTIVITY_KEY in parameters else xes.DEFAULT_NAME_KEY decreasing_factor = parameters[ "decreasingFactor"] if "decreasingFactor" in parameters else filtering_constants.DECREASING_FACTOR parameters_child = { "decreasingFactor": decreasing_factor, constants.PARAMETER_CONSTANT_ACTIVITY_KEY: attribute_key, constants.PARAMETER_CONSTANT_ATTRIBUTE_KEY: attribute_key } enable_activities_filter = parameters[ "enable_activities_filter"] if "enable_activities_filter" in parameters else True enable_variants_filter = parameters[ "enable_variants_filter"] if "enable_variants_filter" in parameters else False enable_start_activities_filter = parameters[ "enable_start_activities_filter"] if "enable_start_activities_filter" in parameters else False enable_end_activities_filter = parameters[ "enable_end_activities_filter"] if "enable_end_activities_filter" in parameters else True variants = variants_module.get_variants(log, parameters=parameters_child) filtered_log = log if enable_activities_filter: filtered_log = attributes_filter.apply_auto_filter( log, variants=variants, parameters=parameters_child) variants = variants_module.get_variants(filtered_log, parameters=parameters_child) if enable_variants_filter: filtered_log = variants_module.apply_auto_filter( filtered_log, variants=variants, parameters=parameters_child) variants = variants_module.get_variants(filtered_log, parameters=parameters_child) if enable_start_activities_filter: filtered_log = start_activities_filter.apply_auto_filter( filtered_log, variants=variants, parameters=parameters_child) if enable_end_activities_filter: filtered_log = end_activities_filter.apply_auto_filter( filtered_log, variants=variants, parameters=parameters_child) return filtered_log
def test_36(self): from pm4py.algo.filtering.log.attributes import attributes_filter log = self.load_running_example_xes() filtered_log = attributes_filter.apply_auto_filter(log, parameters={ attributes_filter.Parameters.ATTRIBUTE_KEY: "concept:name", attributes_filter.Parameters.DECREASING_FACTOR: 0.6})
from pm4py.algo.filtering.log.end_activities import end_activities_filter log_end = end_activities_filter.get_end_activities(log) log_af_ea = end_activities_filter.apply_auto_filter( log, parameters={"decreasingFactor": 0.6}) print(end_activities_filter.get_end_activities(log_af_ea)) ## Other Events from pm4py.algo.filtering.log.attributes import attributes_filter from pm4py.util import constants log = attributes_filter.apply_auto_filter( log, parameters={ constants.PARAMETER_CONSTANT_ATTRIBUTE_KEY: "concept:name", "decreasingFactor": 0.6 }) activities = attributes_filter.get_attribute_values(log, "concept:name") auto_filtered_activities = attributes_filter.get_attribute_values( log, "concept:name") # Entire variants from pm4py.algo.filtering.log.variants import variants_filter variants = variants_filter.get_variants(log) log = variants_filter.apply_auto_filter(log)