physioex.explain — class diagram#
The explainability toolkit: post-hoc attribution (time / frequency / time-
frequency), foundational concept analysis (CSD), and prototype discovery.
Source: physioex/explain/.
Post-hoc attribution#
classDiagram
class Module { <<torch.nn>> }
class Saliency {
+__init__(f, target, ...)
+forward(x)
}
class InputXGradient
class IntegratedGradients {
+forward(x, baseline, steps)
}
class ExpectedGradients {
+forward(x, n_samples)
+set_baselines(baselines)
}
class SpectralGradients {
+__init__(f, fs, freq_step, steps, ...)
+band_frequencies(len)
+forward(x)
}
Module <|-- Saliency
Saliency <|-- InputXGradient
Saliency <|-- IntegratedGradients
Saliency <|-- ExpectedGradients
Module <|-- SpectralGradients
Saliency <|-- FreqSpectralGradients
Frequency- and time-frequency-domain variants wrap the same four gradient methods around differentiable DFT/STFT layers:
classDiagram
class DFTLayer
class IDFTLayer
class STFTLayer
class ISTFTLayer
Saliency <|-- DFTSaliency
InputXGradient <|-- DFTInputXGradient
IntegratedGradients <|-- DFTIntegratedGradients
ExpectedGradients <|-- DFTExpectedGradients
Saliency <|-- STFTSaliency
InputXGradient <|-- STFTInputXGradient
IntegratedGradients <|-- STFTIntegratedGradients
ExpectedGradients <|-- STFTExpectedGradients
DFTSaliency ..> DFTLayer
STFTSaliency ..> STFTLayer
Support: functionizer.py (Funct, SeqFunct — wrap a classifier into a scalar
target function), filters.py (filtfilt, lowpass_filter, highpass_filter),
metrics/ (complexity, localization, infidelity, tfle, tf_concentration,
resolution_product).
Foundational (Conceptual Spectral Decomposition)#
classDiagram
class Module { <<torch.nn>> }
class ConceptualSpectralDecomposition {
+__init__(model, probe_weights, fs, bands, specificity, ...)
+explain(x, target_class, embeddings, labels)
}
class MultiChannelSpectralGradients {
+forward(x, skip_ig)
}
class CSDResult {
+concepts
+class_attribution
+top_band_hz(dim)
}
class ConceptAttribution {
+weighted_attribution
+band_energy
+top_band_idx
}
class SpecificityStrategy {
<<strategy>>
+str name
+compute_mask(W, embeddings, labels, x, target_class)
}
Module <|-- ConceptualSpectralDecomposition
Module <|-- MultiChannelSpectralGradients
ConceptualSpectralDecomposition ..> CSDResult : returns
CSDResult o-- ConceptAttribution
ConceptualSpectralDecomposition ..> SpecificityStrategy
SpecificityStrategy <|-- CohenDSpecificity
SpecificityStrategy <|-- MarginSpecificity
SpecificityStrategy <|-- SoftmaxSpecificity
SpecificityStrategy <|-- TopKSpecificity
SpecificityStrategy <|-- NoFilter
Support: sleep_bands.py (FrequencyBand, bands_to_bin_ranges,
band_center_frequencies, band_names), report.py (spectral_class_profile,
concept_atlas).
Prototypes#
classDiagram
class IntegratedGradients
class PrototypeRelevance {
+__init__(model, index, steps, ...)
+forward(x, index, baseline, steps)
}
class VQBottleneck {
+__init__(codebook_init, commitment_weight)
+forward(z)
}
IntegratedGradients <|-- PrototypeRelevance
Module <|-- VQBottleneck
Module-level: local.py (proj_fn, get_prototypes), reconstruct.py
(data_driven_reconstruction, model_driven_reconstructions), posthoc/nmf.py
(discover_prototypes_nmf), posthoc/vq.py (learn_codebook_kmeans,
quantize_embeddings, train_codebook), posthoc/utils.py
(load_epoch_embeddings*, nearest_prototype_classify, evaluate_metrics).
Class reference (responsibilities)#
Saliencyfamily — Captum-style attributors over a scalar target functionf(built withFunct/SeqFunct);IntegratedGradients/ExpectedGradientsadd baselines/paths.DFT/STFT variants — attribute relevance in frequency / time-frequency space via differentiable (I)DFT/(I)STFT layers, subclassing the corresponding time-domain method.
SpectralGradients— path-integral attribution across frequency bands.ConceptualSpectralDecomposition— decomposes foundation-model embeddings into interpretable spectral concepts; a pluggableSpecificityStrategyselects the concepts most specific to a class; returns aCSDResult(list ofConceptAttribution).PrototypeRelevance/VQBottleneck— prototype relevance (IG-based) and vector-quantized codebook prototypes for concept-level explanation.