Residue Importance Calculator
GitHub Link to Code.
Residue importance calculator for feature importance visualization.
This module calculates importance scores for each residue based on their occurrence in top important features, weighted by feature importance scores.
- class mdxplain.structure_visualization.helper.residue_importance_calculator.ResidueImportanceCalculator
Calculator for residue importance scores.
Computes importance scores for residues based on their occurrence in top important features, weighted by feature importance scores.
Examples
>>> # Calculate residue importance from top features >>> top_features = [ ... {"residue_indices": [5, 10], "importance_score": 0.85}, ... {"residue_indices": [5], "importance_score": 0.72} ... ] >>> importance = ResidueImportanceCalculator.calculate_residue_importance( ... top_features ... ) >>> print(importance[5]) # 1.57 (0.85 + 0.72)
- static calculate_residue_importance(top_features: List[Dict[str, Any]]) Dict[int, float]
Calculate importance score for each residue.
Computes weighted importance scores based on occurrence in top features, where each occurrence is weighted by the feature’s importance score.
Parameters
- top_featuresList[Dict[str, Any]]
List of top feature dictionaries with keys:
“residue_indices”: List[int]
“importance_score”: float
Returns
- Dict[int, float]
Mapping from residue index to importance score
Examples
>>> top_features = [ ... {"residue_indices": [5, 10], "importance_score": 0.85}, ... {"residue_indices": [10], "importance_score": 0.60} ... ] >>> importance = ResidueImportanceCalculator.calculate_residue_importance( ... top_features ... ) >>> # Residue 5: 0.85, Residue 10: 0.85 + 0.60 = 1.45
Notes
Each residue occurrence is weighted by feature importance
Residues in multiple features accumulate scores
Only residues in top features receive non-zero scores
Uses residue_indices from feature metadata (no string parsing)
- static importance_to_beta_factors(residue_importance: Dict[int, float], topology: Topology) ndarray
Convert residue importance scores to beta factors.
Normalizes importance scores to 0-1 range and expands to per-atom beta factors (all atoms in a residue get the same beta factor).
Parameters
- residue_importanceDict[int, float]
Mapping from residue index to importance score
- topologymdtraj.Topology
Topology object for atom-residue mapping
Returns
- np.ndarray
Array of beta factors for all atoms, shape (n_atoms,)
Examples
>>> residue_importance = {5: 1.57, 10: 1.45, 15: 0.92} >>> topology = md.load("structure.pdb").topology >>> beta_factors = ResidueImportanceCalculator.importance_to_beta_factors( ... residue_importance, topology ... ) >>> print(beta_factors.shape) # (n_atoms,) >>> print(beta_factors.max()) # 1.0
Notes
Scores are normalized to 0-1 range for nglview visualization
All atoms in a residue receive the same beta factor
Residues not in importance dict receive beta factor 0.0
- static calculate_beta_factors_from_features(top_features: List[Dict[str, Any]], topology: Topology) ndarray
Calculate beta factors directly from top features.
Convenience method that combines calculate_residue_importance and importance_to_beta_factors in one call.
Parameters
- top_featuresList[Dict[str, Any]]
List of top feature dictionaries
- topologymdtraj.Topology
Topology object
Returns
- np.ndarray
Array of beta factors for all atoms
Examples
>>> top_features = pipeline.feature_importance.get_top_features( ... "dt_analysis", "cluster_0_vs_rest", n=10 ... ) >>> topology = pipeline.data.trajectory_data.get_topology() >>> beta_factors = ResidueImportanceCalculator.calculate_beta_factors_from_features( ... top_features, topology ... )