Metadata Builder Helper
GitHub Link to Code.
Metadata builder helper for feature importance operations.
This module provides helper methods for building metadata dictionaries that describe feature importance analyses, extracting common logic from FeatureImportanceManager methods.
- class mdxplain.feature_importance.helper.metadata_builder_helper.MetadataBuilderHelper
Helper class for building feature importance analysis metadata.
Provides static methods for creating standardized metadata dictionaries that describe feature importance analyses. These dictionaries are stored alongside analysis results for documentation and debugging.
Examples
>>> # Build analysis metadata >>> metadata = MetadataBuilderHelper.build_analysis_metadata( ... sub_comp, analyzer_type, X, y, result ... )
>>> # Add group information >>> MetadataBuilderHelper.add_group_information(metadata, sub_comp)
- static add_group_information(metadata: Dict[str, Any], sub_comp: Dict[str, Any]) None
Add group information to metadata dictionary.
Adds information about the groups/selectors involved in the comparison to the metadata dictionary. Handles both binary and multiclass comparison modes.
Parameters
- metadataDict[str, Any]
Metadata dictionary to add group information to (modified in-place)
- sub_compDict[str, Any]
Sub-comparison dictionary containing group information
Returns
- None
Modifies metadata dictionary in-place
Examples
>>> metadata = {"comparison": "test"} >>> MetadataBuilderHelper.add_group_information(metadata, sub_comp) >>> print("group1" in metadata or "selectors" in metadata) # True
- static add_model_metadata(metadata: Dict[str, Any], result: Dict[str, Any]) None
Add model-specific metadata to metadata dictionary.
Extracts and adds model-specific metadata from the analysis result to the main metadata dictionary.
Parameters
- metadataDict[str, Any]
Metadata dictionary to add model metadata to (modified in-place)
- resultDict[str, Any]
Analysis result containing model metadata
Returns
- None
Modifies metadata dictionary in-place
Examples
>>> metadata = {"comparison": "test"} >>> MetadataBuilderHelper.add_model_metadata(metadata, analysis_result) >>> print("model_metadata" in metadata) # True
- static generate_sub_comparison_name(sub_comp: Dict[str, Any]) str
Generate sub-comparison name from data selector names.
Creates a descriptive name for the sub-comparison by joining data selector names with “_vs_” separator.
Parameters
- sub_compDict[str, Any]
Sub-comparison dictionary containing selector information
Returns
- str
Generated sub-comparison name
Examples
>>> # Binary comparison >>> sub_comp = { ... "group1_selectors": ["folded"], ... "group2_selectors": ["unfolded"] ... } >>> name = MetadataBuilderHelper.generate_sub_comparison_name(sub_comp) >>> print(name) folded_vs_unfolded
>>> # One-vs-rest comparison >>> sub_comp = { ... "group1_selectors": ["cluster_2"], ... "group2_selectors": ["cluster_0", "cluster_1", "cluster_3"] ... } >>> name = MetadataBuilderHelper.generate_sub_comparison_name(sub_comp) >>> print(name) cluster_2_vs_rest
>>> # Multiclass comparison >>> sub_comp = { ... "selectors": ["folded", "unfolded", "intermediate"] ... } >>> name = MetadataBuilderHelper.generate_sub_comparison_name(sub_comp) >>> print(name) folded_vs_unfolded_vs_intermediate
- static extract_class_names(sub_comp: Dict[str, Any]) list
Extract class names from sub-comparison data selectors.
Extracts the data selector names that represent the classes in the comparison for use as human-readable class labels. Handles one-vs-rest comparisons by using “all other” label and ensures correct label-to-name mapping.
Parameters
- sub_compDict[str, Any]
Sub-comparison dictionary containing selector information
Returns
- list
List of class names (data selector names) in correct label order
Examples
>>> # Binary comparison >>> sub_comp = { ... "group1_selectors": ["folded"], ... "group2_selectors": ["unfolded"], ... "labels": (0, 1) ... } >>> names = MetadataBuilderHelper.extract_class_names(sub_comp) >>> print(names) ['folded', 'unfolded']
>>> # One-vs-rest comparison >>> sub_comp = { ... "group1_selectors": ["cluster_0"], ... "group2_selectors": ["cluster_1", "cluster_2", "cluster_3"], ... "labels": (1, 0) ... } >>> names = MetadataBuilderHelper.extract_class_names(sub_comp) >>> print(names) ['all other', 'cluster_0']
>>> # Multiclass comparison >>> sub_comp = { ... "selectors": ["folded", "unfolded", "intermediate"] ... } >>> names = MetadataBuilderHelper.extract_class_names(sub_comp) >>> print(names) ['folded', 'unfolded', 'intermediate']