PROPERTY_MAPPING Configuration
Overview
PROPERTY_MAPPING defines parameter validation and classification for modern feature groups using the unified parser approach.
Basic Structure
from mloda_plugins.feature_group.experimental.default_options_key import DefaultOptionKeys
PROPERTY_MAPPING = {
"parameter_name": {
"value1": "Description of value1",
"value2": "Description of value2",
DefaultOptionKeys.mloda_context: True, # Parameter classification
DefaultOptionKeys.mloda_strict_validation: True, # Validation mode
},
DefaultOptionKeys.mloda_source_feature: {
"explanation": "Source feature description",
DefaultOptionKeys.mloda_context: True,
DefaultOptionKeys.mloda_strict_validation: False, # Flexible validation
},
}
Parameter Classification
# Context parameter (doesn't affect Feature Group splitting)
"aggregation_type": {
"sum": "Sum aggregation",
DefaultOptionKeys.mloda_context: True,
}
# Group parameter (affects Feature Group splitting)
"data_source": {
"production": "Production data",
DefaultOptionKeys.mloda_group: True,
}
Validation Modes
Strict Validation (Default: False)
"algorithm_type": {
"kmeans": "K-means clustering",
"dbscan": "DBSCAN clustering",
DefaultOptionKeys.mloda_strict_validation: True, # Only listed values allowed
}
Custom Validation Functions
"window_size": {
"explanation": "Size of time window",
DefaultOptionKeys.mloda_validation_function: lambda x: isinstance(x, int) and x > 0,
DefaultOptionKeys.mloda_strict_validation: True,
}
Default Values
"method": {
"linear": "Linear interpolation",
"cubic": "Cubic interpolation",
DefaultOptionKeys.mloda_default: "linear", # Default if not specified
}
Usage in Feature Groups
class MyFeatureGroup(AbstractFeatureGroup):
PROPERTY_MAPPING = {
"operation_type": {
"sum": "Sum operation",
"avg": "Average operation",
DefaultOptionKeys.mloda_context: True,
DefaultOptionKeys.mloda_strict_validation: True,
},
DefaultOptionKeys.mloda_source_feature: {
"explanation": "Source feature",
DefaultOptionKeys.mloda_context: True,
},
}
@classmethod
def match_feature_group_criteria(cls, feature_name, options, data_access_collection=None):
return FeatureChainParser.match_configuration_feature_chain_parser(
feature_name, options, property_mapping=cls.PROPERTY_MAPPING
)
Validation Examples
# Valid - "sum" is in mapping
Options(context={"operation_type": "sum"})
# Invalid with strict validation - "custom" not in mapping
Options(context={"operation_type": "custom"}) # Raises ValueError
# Valid with flexible validation - any value allowed
Options(context={"mloda_source_feature": "any_feature_name"})