coco_pipe.decoding.Experiment#
- class coco_pipe.decoding.Experiment(config)#
Bases:
objectMain executor for decoding experiments.
- Parameters:
config (ExperimentConfig) – The complete configuration for the experiment.
Examples
>>> from coco_pipe.decoding import Experiment, ExperimentConfig >>> config = ExperimentConfig( ... task="classification", models={"lr": {"kind": "classical"}} ... ) >>> exp = Experiment(config)
See also
ExperimentResultContainer for experiment outputs.
get_cv_splitterFactory for cross-validation splitters.
- run(X, y, groups=None, feature_names=None, sample_ids=None, sample_metadata=None, observation_level='sample', inferential_unit=None, time_axis=None, sample_weight=None)#
Execute the complete decoding experiment pipeline.
This method orchestrates the full scientific workflow: 1. Resolves and validates data hierarchy (metadata, groups, sample IDs). 2. Aligns temporal dimensions and feature names. 3. Performs model-by-model evaluation using stratified/grouped cross-validation. 4. Aggregates results into a unified ExperimentResult object. 5. Performs statistical assessment (permutations/bootstrapping) if enabled.
- Parameters:
X (np.ndarray) – The input data. Can be 2D (samples x features) or 3D temporal (samples x sensors x time).
y (Union[pd.Series, np.ndarray]) – The target labels or values.
groups (Union[pd.Series, np.ndarray], optional) – Grouping labels for grouped cross-validation (e.g., subject IDs).
feature_names (Sequence[str], optional) – Human-readable names for features. Auto-generated if None.
sample_ids (Sequence[Any], optional) – Unique identifiers for each sample. Auto-generated if None.
sample_metadata (Union[pd.DataFrame, Dict], optional) – Additional scientific context for each sample (BIDS-like).
observation_level (str, default='sample') – Level of the input rows (‘sample’ or ‘epoch’).
inferential_unit (str, optional) – The level of statistical independence (‘sample’ or ‘subject’).
time_axis (Sequence[Any], optional) – Scientific time points for 3D temporal data.
sample_weight (np.ndarray | None)
- Returns:
A container holding all raw results, metrics, and diagnostics.
- Return type:
- Raises:
ValueError – If input lengths mismatch, data is empty, or configuration is scientifically invalid (e.g. regression with stratification).
Examples
>>> from coco_pipe.decoding import Experiment, ExperimentConfig >>> config = ExperimentConfig( ... task="classification", models={"lr": {"kind": "classical"}} ... ) >>> result = Experiment(config).run(X, y)
See also
ExperimentResult.get_predictionsTidy prediction accessor.
Examples using coco_pipe.decoding.Experiment#
Basic Decoding: Classification and Model Verification