coco_pipe.decoding.configs#

Comprehensive Pydantic models for strict validation of Decoding/ML experiments. These models ensure that all parameters are scientifically sound before any computation begins.

Attributes#

Classes#

BaseEstimatorConfig

Base configuration for any estimator.

ClassicalEstimatorConfig

Base for scikit-learn compatible classical estimators.

LinearMixin

Common parameters for linear models.

RegularizedLinearMixin

Parameters for regularized linear models.

TreeMixin

Common parameters for Tree-based models.

SupportVectorMixin

Common parameters for Support Vector Machines.

SGDMixin

Stochastic Gradient Descent parameters.

MLPMixin

Common parameters for Multi-layer Perceptron models.

GradientBoostingMixin

Common parameters for Gradient Boosting models.

LogisticRegressionConfig

Configuration for sklearn.linear_model.LogisticRegression.

RandomForestClassifierConfig

Configuration for sklearn.ensemble.RandomForestClassifier.

SVCConfig

Configuration for sklearn.svm.SVC.

LinearSVCConfig

Configuration for sklearn.svm.LinearSVC.

KNeighborsClassifierConfig

Configuration for sklearn.neighbors.KNeighborsClassifier.

GradientBoostingClassifierConfig

Configuration for sklearn.ensemble.GradientBoostingClassifier.

HistGradientBoostingClassifierConfig

Configuration for sklearn.ensemble.HistGradientBoostingClassifier.

SGDClassifierConfig

Configuration for sklearn.linear_model.SGDClassifier.

MLPClassifierConfig

Configuration for sklearn.neural_network.MLPClassifier.

GaussianNBConfig

Configuration for sklearn.naive_bayes.GaussianNB.

LDAConfig

Configuration for sklearn.discriminant_analysis.LinearDiscriminantAnalysis.

AdaBoostClassifierConfig

Configuration for sklearn.ensemble.AdaBoostClassifier.

DummyClassifierConfig

Configuration for sklearn.dummy.DummyClassifier.

LPFTConfig

Configuration for Linear-Probe Fine-Tuning (LP-FT).

SkorchClassifierConfig

Configuration for generic PyTorch wrappers via Skorch.

SlidingEstimatorConfig

Configuration for MNE-style SlidingEstimator.

GeneralizingEstimatorConfig

Configuration for MNE-style GeneralizingEstimator.

LinearRegressionConfig

Configuration for sklearn.linear_model.LinearRegression.

RidgeConfig

Configuration for sklearn.linear_model.Ridge.

LassoConfig

Configuration for sklearn.linear_model.Lasso.

ElasticNetConfig

Configuration for sklearn.linear_model.ElasticNet.

RandomForestRegressorConfig

Configuration for sklearn.ensemble.RandomForestRegressor.

SVRConfig

Configuration for sklearn.svm.SVR.

GradientBoostingRegressorConfig

Configuration for sklearn.ensemble.GradientBoostingRegressor.

SGDRegressorConfig

Configuration for sklearn.linear_model.SGDRegressor.

MLPRegressorConfig

Configuration for sklearn.neural_network.MLPRegressor.

DummyRegressorConfig

Configuration for sklearn.dummy.DummyRegressor.

DecisionTreeRegressorConfig

Configuration for sklearn.tree.DecisionTreeRegressor.

KNeighborsRegressorConfig

Configuration for sklearn.neighbors.KNeighborsRegressor.

ExtraTreesRegressorConfig

Configuration for sklearn.ensemble.ExtraTreesRegressor.

HistGradientBoostingRegressorConfig

Configuration for sklearn.ensemble.HistGradientBoostingRegressor.

AdaBoostRegressorConfig

Configuration for sklearn.ensemble.AdaBoostRegressor.

BayesianRidgeConfig

Configuration for sklearn.linear_model.BayesianRidge.

ARDRegressionConfig

Configuration for sklearn.linear_model.ARDRegression.

ClassicalModelConfig

Configuration for standard scikit-learn estimators.

FoundationEmbeddingModelConfig

Configuration for pretrained feature extraction backbones.

LoRAConfig

Low-Rank Adaptation (LoRA) configuration.

QuantizationConfig

Model quantization settings.

DeviceConfig

Compute device and precision policy.

CheckpointConfig

Neural training checkpoint policy.

TrainerConfig

Neural training loop configuration.

FrozenBackboneDecoderConfig

Config for a frozen backbone followed by a classical decoding head.

NeuralFineTuneConfig

Configuration for end-to-end neural fine-tuning.

TemporalDecoderConfig

Config for MNE-style temporal meta-estimators.

CVConfig

Cross-validation configuration settings.

TuningConfig

Hyperparameter Tuning Configuration.

FeatureSelectionConfig

Feature selection settings.

ReducerConfig

Fold-local dimensionality reduction for classical decoding.

CalibrationConfig

Probability calibration settings for classification estimators.

ConfidenceIntervalConfig

Analytical confidence interval settings.

ChanceAssessmentConfig

Null-hypothesis (chance level) assessment settings.

StatisticalAssessmentConfig

Settings for finite-sample statistical inference and uncertainty estimation.

Module Contents#

class coco_pipe.decoding.configs.BaseEstimatorConfig(/, **data)#

Bases: pydantic.BaseModel

Base configuration for any estimator.

Parameters:

data (Any)

class coco_pipe.decoding.configs.ClassicalEstimatorConfig(/, **data)#

Bases: BaseEstimatorConfig

Base for scikit-learn compatible classical estimators.

Parameters:

data (Any)

kind: Literal['classical'] = 'classical'#
class coco_pipe.decoding.configs.LinearMixin(/, **data)#

Bases: pydantic.BaseModel

Common parameters for linear models.

Parameters:

data (Any)

fit_intercept: bool = True#
copy_X: bool = True#
n_jobs: int | None = None#
class coco_pipe.decoding.configs.RegularizedLinearMixin(/, **data)#

Bases: pydantic.BaseModel

Parameters for regularized linear models.

Parameters:

data (Any)

fit_intercept: bool = True#
copy_X: bool = True#
tol: float = 0.001#
max_iter: int | None = None#
positive: bool = False#
random_state: int | None = None#
class coco_pipe.decoding.configs.TreeMixin(/, **data)#

Bases: pydantic.BaseModel

Common parameters for Tree-based models.

Parameters:

data (Any)

n_estimators: int = None#
max_depth: int | None = None#
min_samples_split: int | float = 2#
min_samples_leaf: int | float = 1#
min_weight_fraction_leaf: float = 0.0#
max_features: str | int | float | None = 'sqrt'#
max_leaf_nodes: int | None = None#
min_impurity_decrease: float = 0.0#
ccp_alpha: float = 0.0#
n_jobs: int | None = None#
random_state: int | None = None#
verbose: int = 0#
warm_start: bool = False#
class coco_pipe.decoding.configs.SupportVectorMixin(/, **data)#

Bases: pydantic.BaseModel

Common parameters for Support Vector Machines.

Parameters:

data (Any)

C: float = None#
kernel: Literal['linear', 'poly', 'rbf', 'sigmoid', 'precomputed'] = 'rbf'#
degree: int = 3#
gamma: str | float = 'scale'#
coef0: float = 0.0#
tol: float = 0.001#
verbose: bool = False#
max_iter: int = -1#
shrinking: bool = True#
cache_size: float = 200#
class coco_pipe.decoding.configs.SGDMixin(/, **data)#

Bases: pydantic.BaseModel

Stochastic Gradient Descent parameters.

Parameters:

data (Any)

loss: str = 'hinge'#
penalty: Literal['l2', 'l1', 'elasticnet'] | None = 'l2'#
alpha: float = 0.0001#
l1_ratio: float = 0.15#
fit_intercept: bool = True#
max_iter: int = 1000#
tol: float = 0.001#
shuffle: bool = True#
verbose: int = 0#
epsilon: float = 0.1#
learning_rate: str = 'optimal'#
eta0: float = 0.01#
power_t: float = 0.5#
early_stopping: bool = False#
class coco_pipe.decoding.configs.MLPMixin(/, **data)#

Bases: pydantic.BaseModel

Common parameters for Multi-layer Perceptron models.

Parameters:

data (Any)

hidden_layer_sizes: tuple = (100,)#
activation: Literal['identity', 'logistic', 'tanh', 'relu'] = 'relu'#
solver: Literal['lbfgs', 'sgd', 'adam'] = 'adam'#
alpha: float = 0.0001#
batch_size: int | str = 'auto'#
learning_rate: Literal['constant', 'invscaling', 'adaptive'] = 'constant'#
learning_rate_init: float = 0.001#
power_t: float = 0.5#
max_iter: int = 200#
shuffle: bool = True#
tol: float = 0.0001#
verbose: bool = False#
warm_start: bool = False#
momentum: float = 0.9#
nesterovs_momentum: bool = True#
early_stopping: bool = False#
validation_fraction: float = 0.1#
beta_1: float = 0.9#
beta_2: float = 0.999#
epsilon: float = 1e-08#
n_iter_no_change: int = 10#
max_fun: int = 15000#
random_state: int | None = None#
class coco_pipe.decoding.configs.GradientBoostingMixin(/, **data)#

Bases: pydantic.BaseModel

Common parameters for Gradient Boosting models.

Parameters:

data (Any)

learning_rate: float = 0.1#
n_estimators: int = 100#
subsample: float = 1.0#
criterion: Literal['friedman_mse', 'squared_error'] = 'friedman_mse'#
min_samples_split: int | float = 2#
min_samples_leaf: int | float = 1#
min_weight_fraction_leaf: float = 0.0#
max_depth: int = 3#
min_impurity_decrease: float = 0.0#
init: str | None = None#
max_features: str | int | float | None = None#
verbose: int = 0#
max_leaf_nodes: int | None = None#
warm_start: bool = False#
validation_fraction: float = 0.1#
n_iter_no_change: int = 5#
tol: float = 0.0001#
ccp_alpha: float = 0.0#
random_state: int | None = None#
class coco_pipe.decoding.configs.LogisticRegressionConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.linear_model.LogisticRegression.

Parameters:

data (Any)

method: Literal['LogisticRegression'] = 'LogisticRegression'#
penalty: Literal['l1', 'l2', 'elasticnet', None] = 'l2'#
dual: bool = False#
tol: float = 0.0001#
C: float = None#
fit_intercept: bool = True#
intercept_scaling: float = 1.0#
class_weight: dict | str | None = None#
solver: Literal['newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga'] = 'lbfgs'#
max_iter: int = 100#
verbose: int = 0#
warm_start: bool = False#
n_jobs: int | None = None#
l1_ratio: float | None = None#
random_state: int | None = None#
class coco_pipe.decoding.configs.RandomForestClassifierConfig(/, **data)#

Bases: ClassicalEstimatorConfig, TreeMixin

Configuration for sklearn.ensemble.RandomForestClassifier.

Parameters:

data (Any)

method: Literal['RandomForestClassifier'] = 'RandomForestClassifier'#
criterion: Literal['gini', 'entropy', 'log_loss'] = 'gini'#
bootstrap: bool = True#
oob_score: bool = False#
class_weight: str | dict | list | None = None#
max_samples: int | float | None = None#
class coco_pipe.decoding.configs.SVCConfig(/, **data)#

Bases: ClassicalEstimatorConfig, SupportVectorMixin

Configuration for sklearn.svm.SVC.

Parameters:

data (Any)

method: Literal['SVC'] = 'SVC'#
probability: bool = True#
class_weight: dict | str | None = None#
decision_function_shape: Literal['ovo', 'ovr'] = 'ovr'#
break_ties: bool = False#
random_state: int | None = None#
class coco_pipe.decoding.configs.LinearSVCConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.svm.LinearSVC.

Parameters:

data (Any)

method: Literal['LinearSVC'] = 'LinearSVC'#
penalty: Literal['l1', 'l2'] = 'l2'#
loss: Literal['hinge', 'squared_hinge'] = 'squared_hinge'#
dual: bool | Literal['auto'] = 'auto'#
tol: float = 0.0001#
C: float = None#
multi_class: Literal['ovr', 'crammer_singer'] = 'ovr'#
fit_intercept: bool = True#
intercept_scaling: float = 1.0#
class_weight: dict | str | None = None#
verbose: int = 0#
max_iter: int = 1000#
random_state: int | None = None#
class coco_pipe.decoding.configs.KNeighborsClassifierConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.neighbors.KNeighborsClassifier.

Parameters:

data (Any)

method: Literal['KNeighborsClassifier'] = 'KNeighborsClassifier'#
n_neighbors: int = None#
weights: Literal['uniform', 'distance'] = 'uniform'#
algorithm: Literal['auto', 'ball_tree', 'kd_tree', 'brute'] = 'auto'#
leaf_size: int = 30#
p: int = 2#
metric: str = 'minkowski'#
metric_params: dict | None = None#
n_jobs: int | None = None#
class coco_pipe.decoding.configs.GradientBoostingClassifierConfig(/, **data)#

Bases: ClassicalEstimatorConfig, GradientBoostingMixin

Configuration for sklearn.ensemble.GradientBoostingClassifier.

Parameters:

data (Any)

method: Literal['GradientBoostingClassifier'] = 'GradientBoostingClassifier'#
loss: Literal['log_loss', 'exponential'] = 'log_loss'#
class coco_pipe.decoding.configs.HistGradientBoostingClassifierConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.ensemble.HistGradientBoostingClassifier.

Parameters:

data (Any)

method: Literal['HistGradientBoostingClassifier'] = 'HistGradientBoostingClassifier'#
learning_rate: float = 0.1#
max_iter: int = 100#
max_leaf_nodes: int = 31#
max_depth: int | None = None#
min_samples_leaf: int = 20#
l2_regularization: float = 0.0#
max_bins: int = 255#
categorical_features: list[int] | list[str] | list[bool] | None = None#
monotonic_cst: Any | None = None#
interaction_cst: Any | None = None#
warm_start: bool = False#
early_stopping: bool | Literal['auto'] = 'auto'#
scoring: str | None = 'loss'#
validation_fraction: float = 0.1#
n_iter_no_change: int = 10#
tol: float = 1e-07#
verbose: int = 0#
random_state: int | None = None#
class coco_pipe.decoding.configs.SGDClassifierConfig(/, **data)#

Bases: ClassicalEstimatorConfig, SGDMixin

Configuration for sklearn.linear_model.SGDClassifier.

Parameters:

data (Any)

method: Literal['SGDClassifier'] = 'SGDClassifier'#
class_weight: dict | str | None = None#
class coco_pipe.decoding.configs.MLPClassifierConfig(/, **data)#

Bases: ClassicalEstimatorConfig, MLPMixin

Configuration for sklearn.neural_network.MLPClassifier.

Parameters:

data (Any)

method: Literal['MLPClassifier'] = 'MLPClassifier'#
class coco_pipe.decoding.configs.GaussianNBConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.naive_bayes.GaussianNB.

Parameters:

data (Any)

method: Literal['GaussianNB'] = 'GaussianNB'#
priors: list[float] | None = None#
var_smoothing: float = 1e-09#
class coco_pipe.decoding.configs.LDAConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.discriminant_analysis.LinearDiscriminantAnalysis.

Parameters:

data (Any)

method: Literal['LinearDiscriminantAnalysis'] = 'LinearDiscriminantAnalysis'#
solver: Literal['svd', 'lsqr', 'eigen'] = 'svd'#
shrinkage: str | float | None = None#
priors: list[float] | None = None#
n_components: int | None = None#
store_covariance: bool = False#
tol: float = 0.0001#
class coco_pipe.decoding.configs.AdaBoostClassifierConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.ensemble.AdaBoostClassifier.

Parameters:

data (Any)

method: Literal['AdaBoostClassifier'] = 'AdaBoostClassifier'#
n_estimators: int = 50#
learning_rate: float = 1.0#
random_state: int | None = None#
class coco_pipe.decoding.configs.DummyClassifierConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.dummy.DummyClassifier.

Parameters:

data (Any)

method: Literal['DummyClassifier'] = 'DummyClassifier'#
strategy: Literal['stratified', 'most_frequent', 'prior', 'uniform'] = 'prior'#
constant: Any | None = None#
random_state: int | None = None#
class coco_pipe.decoding.configs.LPFTConfig(/, **data)#

Bases: BaseEstimatorConfig

Configuration for Linear-Probe Fine-Tuning (LP-FT). Reference: Kumar et al. (2022).

Parameters:

data (Any)

method: Literal['LPFTClassifier'] = 'LPFTClassifier'#
backbone_name: str = 'gpt2'#
lp_lr: float = 0.001#
lp_epochs: int = 10#
ft_lr: float = 1e-05#
ft_epochs: int = 5#
batch_size: int = 32#
max_length: int = 128#
device: str = 'cpu'#
class coco_pipe.decoding.configs.SkorchClassifierConfig(/, **data)#

Bases: BaseEstimatorConfig

Configuration for generic PyTorch wrappers via Skorch.

Parameters:

data (Any)

method: Literal['SkorchClassifier'] = 'SkorchClassifier'#
module_name: str#
max_epochs: int = 10#
lr: float = 0.01#
batch_size: int = 64#
optimizer: str = 'Adam'#
device: str = 'cpu'#
class coco_pipe.decoding.configs.SlidingEstimatorConfig(/, **data)#

Bases: BaseEstimatorConfig

Configuration for MNE-style SlidingEstimator. Fits a separate estimator for each time point.

Parameters:

data (Any)

method: Literal['SlidingEstimator'] = 'SlidingEstimator'#
base_estimator: EstimatorConfigType#
scoring: str | collections.abc.Callable | None = None#
n_jobs: int | None = 1#
position: float | None = 0#
allow_2d: bool = False#
verbose: bool | str | int | None = None#
class coco_pipe.decoding.configs.GeneralizingEstimatorConfig(/, **data)#

Bases: BaseEstimatorConfig

Configuration for MNE-style GeneralizingEstimator. Fits an estimator on each time point and tests on all other time points.

Parameters:

data (Any)

method: Literal['GeneralizingEstimator'] = 'GeneralizingEstimator'#
base_estimator: EstimatorConfigType#
scoring: str | collections.abc.Callable | None = None#
n_jobs: int | None = 1#
position: float | None = 0#
allow_2d: bool = False#
verbose: bool | str | int | None = None#
class coco_pipe.decoding.configs.LinearRegressionConfig(/, **data)#

Bases: ClassicalEstimatorConfig, LinearMixin

Configuration for sklearn.linear_model.LinearRegression.

Parameters:

data (Any)

method: Literal['LinearRegression'] = 'LinearRegression'#
positive: bool = False#
class coco_pipe.decoding.configs.RidgeConfig(/, **data)#

Bases: ClassicalEstimatorConfig, RegularizedLinearMixin

Configuration for sklearn.linear_model.Ridge.

Parameters:

data (Any)

method: Literal['Ridge'] = 'Ridge'#
alpha: float = 1.0#
fit_intercept: bool = True#
copy_X: bool = True#
solver: str = 'auto'#
class coco_pipe.decoding.configs.LassoConfig(/, **data)#

Bases: ClassicalEstimatorConfig, RegularizedLinearMixin

Configuration for sklearn.linear_model.Lasso.

Parameters:

data (Any)

method: Literal['Lasso'] = 'Lasso'#
alpha: float = 1.0#
precompute: bool | list = False#
fit_intercept: bool = True#
copy_X: bool = True#
selection: Literal['cyclic', 'random'] = 'cyclic'#
warm_start: bool = False#
class coco_pipe.decoding.configs.ElasticNetConfig(/, **data)#

Bases: ClassicalEstimatorConfig, RegularizedLinearMixin

Configuration for sklearn.linear_model.ElasticNet.

Parameters:

data (Any)

method: Literal['ElasticNet'] = 'ElasticNet'#
alpha: float = 1.0#
l1_ratio: float = 0.5#
precompute: bool | list = False#
fit_intercept: bool = True#
copy_X: bool = True#
selection: Literal['cyclic', 'random'] = 'cyclic'#
warm_start: bool = False#
class coco_pipe.decoding.configs.RandomForestRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig, TreeMixin

Configuration for sklearn.ensemble.RandomForestRegressor.

Parameters:

data (Any)

method: Literal['RandomForestRegressor'] = 'RandomForestRegressor'#
criterion: Literal['squared_error', 'absolute_error', 'friedman_mse', 'poisson'] = 'squared_error'#
bootstrap: bool = True#
oob_score: bool = False#
max_samples: int | float | None = None#
class coco_pipe.decoding.configs.SVRConfig(/, **data)#

Bases: ClassicalEstimatorConfig, SupportVectorMixin

Configuration for sklearn.svm.SVR.

Parameters:

data (Any)

method: Literal['SVR'] = 'SVR'#
epsilon: float = 0.1#
class coco_pipe.decoding.configs.GradientBoostingRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig, GradientBoostingMixin

Configuration for sklearn.ensemble.GradientBoostingRegressor.

Parameters:

data (Any)

method: Literal['GradientBoostingRegressor'] = 'GradientBoostingRegressor'#
loss: Literal['squared_error', 'absolute_error', 'huber', 'quantile'] = 'squared_error'#
alpha: float = 0.9#
class coco_pipe.decoding.configs.SGDRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig, SGDMixin

Configuration for sklearn.linear_model.SGDRegressor.

Parameters:

data (Any)

method: Literal['SGDRegressor'] = 'SGDRegressor'#
loss: str = 'squared_error'#
class coco_pipe.decoding.configs.MLPRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig, MLPMixin

Configuration for sklearn.neural_network.MLPRegressor.

Parameters:

data (Any)

method: Literal['MLPRegressor'] = 'MLPRegressor'#
class coco_pipe.decoding.configs.DummyRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.dummy.DummyRegressor.

Parameters:

data (Any)

method: Literal['DummyRegressor'] = 'DummyRegressor'#
strategy: Literal['mean', 'median', 'quantile', 'constant'] = 'mean'#
constant: int | float | list | None = None#
quantile: float | None = None#
class coco_pipe.decoding.configs.DecisionTreeRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.tree.DecisionTreeRegressor.

Parameters:

data (Any)

method: Literal['DecisionTreeRegressor'] = 'DecisionTreeRegressor'#
criterion: Literal['squared_error', 'friedman_mse', 'absolute_error', 'poisson'] = 'squared_error'#
splitter: Literal['best', 'random'] = 'best'#
max_depth: int | None = None#
min_samples_split: int | float = 2#
min_samples_leaf: int | float = 1#
min_weight_fraction_leaf: float = 0.0#
max_features: str | int | float | None = None#
random_state: int | None = None#
max_leaf_nodes: int | None = None#
min_impurity_decrease: float = 0.0#
ccp_alpha: float = 0.0#
class coco_pipe.decoding.configs.KNeighborsRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.neighbors.KNeighborsRegressor.

Parameters:

data (Any)

method: Literal['KNeighborsRegressor'] = 'KNeighborsRegressor'#
n_neighbors: int = None#
weights: Literal['uniform', 'distance'] = 'uniform'#
algorithm: Literal['auto', 'ball_tree', 'kd_tree', 'brute'] = 'auto'#
leaf_size: int = 30#
p: int = 2#
metric: str = 'minkowski'#
metric_params: dict | None = None#
n_jobs: int | None = None#
class coco_pipe.decoding.configs.ExtraTreesRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig, TreeMixin

Configuration for sklearn.ensemble.ExtraTreesRegressor.

Parameters:

data (Any)

method: Literal['ExtraTreesRegressor'] = 'ExtraTreesRegressor'#
bootstrap: bool = False#
oob_score: bool = False#
max_samples: int | float | None = None#
class coco_pipe.decoding.configs.HistGradientBoostingRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.ensemble.HistGradientBoostingRegressor.

Parameters:

data (Any)

method: Literal['HistGradientBoostingRegressor'] = 'HistGradientBoostingRegressor'#
loss: Literal['squared_error', 'absolute_error', 'poisson', 'quantile'] = 'squared_error'#
learning_rate: float = 0.1#
max_iter: int = 100#
max_leaf_nodes: int = 31#
max_depth: int | None = None#
min_samples_leaf: int = 20#
l2_regularization: float = 0.0#
max_bins: int = 255#
categorical_features: list[int] | list[str] | list[bool] | None = None#
monotonic_cst: Any | None = None#
interaction_cst: Any | None = None#
warm_start: bool = False#
early_stopping: bool | Literal['auto'] = 'auto'#
scoring: str | None = 'loss'#
validation_fraction: float = 0.1#
n_iter_no_change: int = 10#
tol: float = 1e-07#
verbose: int = 0#
random_state: int | None = None#
class coco_pipe.decoding.configs.AdaBoostRegressorConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.ensemble.AdaBoostRegressor.

Parameters:

data (Any)

method: Literal['AdaBoostRegressor'] = 'AdaBoostRegressor'#
n_estimators: int = 50#
learning_rate: float = 1.0#
loss: Literal['linear', 'square', 'exponential'] = 'linear'#
random_state: int | None = None#
class coco_pipe.decoding.configs.BayesianRidgeConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.linear_model.BayesianRidge.

Parameters:

data (Any)

method: Literal['BayesianRidge'] = 'BayesianRidge'#
max_iter: int = 300#
tol: float = 0.001#
alpha_1: float = 1e-06#
alpha_2: float = 1e-06#
lambda_1: float = 1e-06#
lambda_2: float = 1e-06#
alpha_init: float | None = None#
lambda_init: float | None = None#
compute_score: bool = False#
fit_intercept: bool = True#
copy_X: bool = True#
verbose: bool = False#
class coco_pipe.decoding.configs.ARDRegressionConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for sklearn.linear_model.ARDRegression.

Parameters:

data (Any)

method: Literal['ARDRegression'] = 'ARDRegression'#
max_iter: int = 300#
tol: float = 0.001#
alpha_1: float = 1e-06#
alpha_2: float = 1e-06#
lambda_1: float = 1e-06#
lambda_2: float = 1e-06#
compute_score: bool = False#
threshold_lambda: float = 10000.0#
fit_intercept: bool = True#
copy_X: bool = True#
verbose: bool = False#
class coco_pipe.decoding.configs.ClassicalModelConfig(/, **data)#

Bases: ClassicalEstimatorConfig

Configuration for standard scikit-learn estimators.

Parameters:

data (Any)

method: Literal['ClassicalModel'] = 'ClassicalModel'#
estimator: str#
params: dict[str, Any] = None#
input_kind: Literal['tabular', 'embeddings'] = 'tabular'#
class coco_pipe.decoding.configs.FoundationEmbeddingModelConfig(/, **data)#

Bases: BaseEstimatorConfig

Configuration for pretrained feature extraction backbones.

Parameters:

data (Any)

kind: Literal['foundation_embedding'] = 'foundation_embedding'#
backend: str = 'auto'#
n_outputs: int | None = None#
train_mode: Literal['frozen', 'full', 'lora', 'qlora'] = 'frozen'#
pooling: Literal['mean', 'flatten'] = 'mean'#
normalize_embeddings: bool = True#
cache_embeddings: bool = True#
sfreq: float | None = None#
ch_names: list[str] | None = None#
backend_kwargs: dict[str, Any] = None#
class coco_pipe.decoding.configs.LoRAConfig(/, **data)#

Bases: pydantic.BaseModel

Low-Rank Adaptation (LoRA) configuration.

Parameters:

data (Any)

r: int = None#
alpha: int = None#
dropout: float = None#
target_modules: str | list[str] = 'all-linear'#
class coco_pipe.decoding.configs.QuantizationConfig(/, **data)#

Bases: pydantic.BaseModel

Model quantization settings.

Parameters:

data (Any)

enabled: bool = False#
load_in_4bit: bool = True#
quant_type: Literal['nf4', 'fp4'] = 'nf4'#
compute_dtype: Literal['bf16', 'fp16', 'fp32'] = 'bf16'#
class coco_pipe.decoding.configs.DeviceConfig(/, **data)#

Bases: pydantic.BaseModel

Compute device and precision policy.

Parameters:

data (Any)

device: Literal['auto', 'cpu', 'cuda', 'mps'] = 'auto'#
precision: Literal['fp32', 'fp16', 'bf16'] = 'fp32'#
class coco_pipe.decoding.configs.CheckpointConfig(/, **data)#

Bases: pydantic.BaseModel

Neural training checkpoint policy.

Parameters:

data (Any)

save: Literal['none', 'best', 'last', 'all'] = 'best'#
monitor: str = 'val_loss'#
output_dir: pathlib.Path | None = None#
class coco_pipe.decoding.configs.TrainerConfig(/, **data)#

Bases: pydantic.BaseModel

Neural training loop configuration.

Parameters:

data (Any)

max_epochs: int = None#
early_stopping_patience: int | None = None#
batch_size: int = None#
validation_fraction: float = None#
class coco_pipe.decoding.configs.FrozenBackboneDecoderConfig(/, **data)#

Bases: BaseEstimatorConfig

Config for a frozen backbone followed by a classical decoding head.

Parameters:

data (Any)

kind: Literal['frozen_backbone'] = 'frozen_backbone'#
backbone: FoundationEmbeddingModelConfig#
head: ClassicalModelConfig#
class coco_pipe.decoding.configs.NeuralFineTuneConfig(/, **data)#

Bases: BaseEstimatorConfig

Configuration for end-to-end neural fine-tuning.

Parameters:

data (Any)

kind: Literal['neural_finetune'] = 'neural_finetune'#
backend: str = 'auto'#
n_outputs: int | None = None#
input_kind: Literal['temporal', 'epoched', 'tokens'] = 'epoched'#
train_mode: Literal['full', 'frozen', 'linear_probe', 'lora', 'qlora'] = 'full'#
optimizer: dict[str, Any] = None#
trainer: TrainerConfig = None#
device: DeviceConfig = None#
checkpoints: CheckpointConfig = None#
lora: LoRAConfig | None = None#
quantization: QuantizationConfig | None = None#
sfreq: float | None = None#
ch_names: list[str] | None = None#
backend_kwargs: dict[str, Any] = None#
class_weight: str | dict[Any, float] | None = 'balanced'#
class coco_pipe.decoding.configs.TemporalDecoderConfig(/, **data)#

Bases: BaseEstimatorConfig

Config for MNE-style temporal meta-estimators.

Parameters:

data (Any)

kind: Literal['temporal'] = 'temporal'#
wrapper: Literal['sliding', 'generalizing'] = 'sliding'#
base: ClassicalModelConfig#
scoring: str | collections.abc.Callable | None = None#
n_jobs: int | None = 1#
position: float | None = 0#
allow_2d: bool = False#
verbose: bool | str | int | None = None#
coco_pipe.decoding.configs.AtomicEstimator#
coco_pipe.decoding.configs.EstimatorConfigType#
coco_pipe.decoding.configs.ClassicalModelType#
class coco_pipe.decoding.configs.CVConfig(/, **data)#

Bases: pydantic.BaseModel

Cross-validation configuration settings.

Parameters:
  • strategy (str, default="stratified") – The splitting strategy. Note that ‘stratified’ strategies require classification tasks.

  • n_splits (int, default=5) – Number of folds. Must be at least 2.

  • shuffle (bool, default=True) – Whether to shuffle data before splitting.

  • random_state (int, default=42) – Random seed for the splitter.

  • test_size (float, default=0.2) – The proportion of the dataset to include in the test split for strategy=’split’.

  • stratify (bool, default=False) – Whether to use stratified sampling for strategy=’split’.

  • group_key (str, optional) – The column name in sample_metadata to use for group-aware strategies.

  • data (Any)

strategy: Literal['stratified', 'kfold', 'group_kfold', 'stratified_group_kfold', 'leave_p_out', 'leave_one_group_out', 'timeseries', 'split', 'group_shuffle_split'] = 'stratified'#
n_splits: int = None#
shuffle: bool = True#
random_state: int = 42#
test_size: float = None#
stratify: bool = None#
group_key: str | None = None#
auto_reduce_n_splits: bool = None#
class coco_pipe.decoding.configs.TuningConfig(/, **data)#

Bases: pydantic.BaseModel

Hyperparameter Tuning Configuration.

Parameters:

data (Any)

enabled: bool = False#
search_type: Literal['grid', 'random'] = 'grid'#
n_iter: int = None#
scoring: str | None = None#
n_jobs: int = -1#
random_state: int | None = None#
cv: CVConfig | None = None#
allow_nongroup_inner_cv: bool = None#
class coco_pipe.decoding.configs.FeatureSelectionConfig(/, **data)#

Bases: pydantic.BaseModel

Feature selection settings.

Parameters:

data (Any)

enabled: bool = False#
method: Literal['k_best', 'sfs'] = 'sfs'#
n_features: int | None = None#
direction: Literal['forward', 'backward'] = 'forward'#
tol: float | None = None#
cv: CVConfig | None = None#
scoring: str | None = None#
allow_nongroup_inner_cv: bool = None#
class coco_pipe.decoding.configs.ReducerConfig(/, **data)#

Bases: pydantic.BaseModel

Fold-local dimensionality reduction for classical decoding.

Parameters:

data (Any)

enabled: bool = False#
method: Literal['pca'] = 'pca'#
n_components: int | float | None = None#
whiten: bool = False#
svd_solver: Literal['auto', 'full', 'covariance_eigh', 'arpack', 'randomized'] = 'auto'#
random_state: int | None = 42#
class coco_pipe.decoding.configs.CalibrationConfig(/, **data)#

Bases: pydantic.BaseModel

Probability calibration settings for classification estimators.

Parameters:

data (Any)

enabled: bool = False#
method: Literal['sigmoid', 'isotonic'] = 'sigmoid'#
cv: CVConfig | None = None#
n_jobs: int | None = None#
allow_nongroup_inner_cv: bool = None#
class coco_pipe.decoding.configs.ConfidenceIntervalConfig(/, **data)#

Bases: pydantic.BaseModel

Analytical confidence interval settings.

Parameters:

data (Any)

alpha: float = None#
method: Literal['wilson', 'clopper_pearson'] = 'wilson'#
class coco_pipe.decoding.configs.ChanceAssessmentConfig(/, **data)#

Bases: pydantic.BaseModel

Null-hypothesis (chance level) assessment settings.

Parameters:

data (Any)

method: Literal['permutation', 'binomial', 'auto'] = 'permutation'#
n_permutations: int = None#
p0: float | Literal['auto'] | None = None#
temporal_correction: Literal['max_stat', 'fdr_bh', 'none'] = None#
store_null_distribution: bool = False#
class coco_pipe.decoding.configs.StatisticalAssessmentConfig(/, **data)#

Bases: pydantic.BaseModel

Settings for finite-sample statistical inference and uncertainty estimation.

Parameters:

data (Any)

enabled: bool = False#
random_state: int | None = 42#
metrics: list[str] | None = None#
chance: ChanceAssessmentConfig = None#
confidence_intervals: ConfidenceIntervalConfig = None#
unit_of_inference: Literal['sample', 'group_mean', 'group_majority', 'custom'] | None = None#
custom_unit_column: str | None = None#
custom_aggregation: Literal['mean', 'majority'] = 'mean'#
coco_pipe.decoding.configs.ModelConfigType#