示例#1
0
 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})
示例#2
0
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
示例#4
0
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
示例#5
0
 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})
示例#6
0
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)