blueetl.config.analysis_model

Analysis Configuration Models.

Classes

BaseModel()

Custom BaseModel.

CacheConfig(*, path[, clear, readonly, ...])

CacheConfig Model.

ExtractionConfig(*, report[, ...])

ExtractionConfig Model.

FeaturesConfig(*[, id, name, ...])

FeaturesConfig Model.

MultiAnalysisConfig(*, version, ...[, ...])

MultiAnalysisConfig Model.

NeuronClassConfig(*[, query, population, ...])

NeuronClassConfig Model.

ReportConfig(*, type[, name])

ReportConfig Model.

SingleAnalysisConfig(*[, cache, ...])

SingleAnalysisConfig Model.

StoreTypeEnum(value[, names, module, ...])

StoreType Enumeration.

TrialStepsConfig(*, function, bounds[, ...])

TrialStepsConfig Model.

WindowConfig(*[, initial_offset, t_step, ...])

WindowConfig Model.

class blueetl.config.analysis_model.BaseModel

Bases: BaseModel

Custom BaseModel.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

checksum()

Calculate the checksum of the model.

dict(*args, by_alias=True, **kwargs)

Generate a dictionary representation of the model, using by_alias=True by default.

dump(path: Path) None

Dump the model to file in yaml format.

json(*args, sort_keys=False, **kwargs)

Generate a JSON representation of the model, using by_alias=True by default.

classmethod load(path: Path) BaseModelT

Load the model from file in yaml format.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

class blueetl.config.analysis_model.CacheConfig(*, path: Path, clear: bool = False, readonly: bool = False, skip_features: bool = False, store_type: StoreTypeEnum = StoreTypeEnum.parquet)

Bases: BaseModel

CacheConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'clear': FieldInfo(annotation=bool, required=False, default=False), 'path': FieldInfo(annotation=Path, required=True), 'readonly': FieldInfo(annotation=bool, required=False, default=False), 'skip_features': FieldInfo(annotation=bool, required=False, default=False), 'store_type': FieldInfo(annotation=StoreTypeEnum, required=False, default=<StoreTypeEnum.parquet: 'parquet'>)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

validate_values()

Validate the values after loading them.

class blueetl.config.analysis_model.ExtractionConfig(*, report: ReportConfig, neuron_classes: dict[str, NeuronClassConfig] = {}, windows: dict[str, str | WindowConfig] = {}, trial_steps: dict[str, TrialStepsConfig] = {})

Bases: BaseModel

ExtractionConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'neuron_classes': FieldInfo(annotation=dict[str, NeuronClassConfig], required=False, default={}), 'report': FieldInfo(annotation=ReportConfig, required=True), 'trial_steps': FieldInfo(annotation=dict[str, TrialStepsConfig], required=False, default={}), 'windows': FieldInfo(annotation=dict[str, Union[str, WindowConfig]], required=False, default={})}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

classmethod propagate_global_values(values)

Propagate global values to each dictionary in neuron_classes and trial_steps.

class blueetl.config.analysis_model.FeaturesConfig(*, id: int | None = None, type: str, name: str | None = None, groupby: list[str], function: str, neuron_classes: list[str] = [], windows: list[str] = [], params: dict[str, Any] = {}, params_product: dict[str, Any] = {}, params_zip: dict[str, Any] = {}, suffix: str = '', multi_index: bool = True)

Bases: BaseModel

FeaturesConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'function': FieldInfo(annotation=str, required=True), 'groupby': FieldInfo(annotation=list[str], required=True), 'id': FieldInfo(annotation=Union[int, NoneType], required=False, default=None, exclude=True), 'multi_index': FieldInfo(annotation=bool, required=False, default=True), 'name': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'neuron_classes': FieldInfo(annotation=list[str], required=False, default=[]), 'params': FieldInfo(annotation=dict[str, Any], required=False, default={}), 'params_product': FieldInfo(annotation=dict[str, Any], required=False, default={}), 'params_zip': FieldInfo(annotation=dict[str, Any], required=False, default={}), 'suffix': FieldInfo(annotation=str, required=False, default=''), 'type': FieldInfo(annotation=str, required=True), 'windows': FieldInfo(annotation=list[str], required=False, default=[])}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

class blueetl.config.analysis_model.MultiAnalysisConfig(*, version: int, simulation_campaign: Path, cache: CacheConfig, simulations_filter: dict[str, Any] = {}, simulations_filter_in_memory: dict[str, Any] = {}, analysis: dict[str, SingleAnalysisConfig], custom: dict[str, Any] = {})

Bases: BaseModel

MultiAnalysisConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

classmethod handle_deprecated_fields(data: Any) Any

Handle the deprecated fields.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'analysis': FieldInfo(annotation=dict[str, SingleAnalysisConfig], required=True), 'cache': FieldInfo(annotation=CacheConfig, required=True), 'custom': FieldInfo(annotation=dict[str, Any], required=False, default={}, exclude=True), 'simulation_campaign': FieldInfo(annotation=Path, required=True), 'simulations_filter': FieldInfo(annotation=dict[str, Any], required=False, default={}), 'simulations_filter_in_memory': FieldInfo(annotation=dict[str, Any], required=False, default={}), 'version': FieldInfo(annotation=int, required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

classmethod version_match(version)

Verify that the config version is supported.

class blueetl.config.analysis_model.NeuronClassConfig(*, query: dict[str, Any] | list[dict[str, Any]] = {}, population: str | None = None, node_set: str | None = None, node_sets_file: Path | None = None, node_sets_checksum: str | None = None, limit: int | None = None, node_id: list[int] | None = None)

Bases: BaseModel

NeuronClassConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'limit': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'node_id': FieldInfo(annotation=Union[list[int], NoneType], required=False, default=None), 'node_set': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'node_sets_checksum': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'node_sets_file': FieldInfo(annotation=Union[Path, NoneType], required=False, default=None), 'population': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'query': FieldInfo(annotation=Union[dict[str, Any], list[dict[str, Any]]], required=False, default={})}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

class blueetl.config.analysis_model.ReportConfig(*, type: str, name: str = '')

Bases: BaseModel

ReportConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'name': FieldInfo(annotation=str, required=False, default=''), 'type': FieldInfo(annotation=str, required=True)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

class blueetl.config.analysis_model.SingleAnalysisConfig(*, cache: CacheConfig | None = None, simulations_filter: dict[str, Any] = {}, simulations_filter_in_memory: dict[str, Any] = {}, extraction: ExtractionConfig, features: list[FeaturesConfig] = [], custom: dict[str, Any] = {})

Bases: BaseModel

SingleAnalysisConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

classmethod assign_features_config_id(lst)

Assign an incremental id to each FeaturesConfig.

classmethod handle_deprecated_fields(data: Any) Any

Handle the deprecated fields.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'cache': FieldInfo(annotation=Union[CacheConfig, NoneType], required=False, default=None), 'custom': FieldInfo(annotation=dict[str, Any], required=False, default={}, exclude=True), 'extraction': FieldInfo(annotation=ExtractionConfig, required=True), 'features': FieldInfo(annotation=list[FeaturesConfig], required=False, default=[]), 'simulations_filter': FieldInfo(annotation=dict[str, Any], required=False, default={}), 'simulations_filter_in_memory': FieldInfo(annotation=dict[str, Any], required=False, default={})}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

property output: Path | None

Shortcut to the base output path of the analysis.

class blueetl.config.analysis_model.StoreTypeEnum(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)

Bases: str, Enum

StoreType Enumeration.

class blueetl.config.analysis_model.TrialStepsConfig(*, function: str, bounds: tuple[float, float], population: str | None = None, node_set: str | None = None, node_sets_file: Path | None = None, node_sets_checksum: str | None = None, limit: int | None = None, base_path: Path | None = None, **extra_data: Any)

Bases: BaseModel

TrialStepsConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

forbid_fields()

Verify that the forbidden extra fields have not been specified.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'allow', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'base_path': FieldInfo(annotation=Union[Path, NoneType], required=False, default=None), 'bounds': FieldInfo(annotation=tuple[float, float], required=True), 'function': FieldInfo(annotation=str, required=True), 'limit': FieldInfo(annotation=Union[int, NoneType], required=False, default=None), 'node_set': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'node_sets_checksum': FieldInfo(annotation=Union[str, NoneType], required=False, default=None), 'node_sets_file': FieldInfo(annotation=Union[Path, NoneType], required=False, default=None), 'population': FieldInfo(annotation=Union[str, NoneType], required=False, default=None)}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

model_post_init(__context: Any) None

This function is meant to behave like a BaseModel method to initialise private attributes.

It takes context as an argument since that’s what pydantic-core passes when calling it.

Parameters:
  • self – The BaseModel instance.

  • __context – The context.

class blueetl.config.analysis_model.WindowConfig(*, initial_offset: float = 0.0, bounds: tuple[float, float], t_step: float = 0.0, n_trials: int = 0, trial_steps_value: float = 0.0, trial_steps_list: list[float] = [], trial_steps_label: str = '', window_type: str = '')

Bases: BaseModel

WindowConfig Model.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_computed_fields: ClassVar[dict[str, ComputedFieldInfo]] = {}

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_config: ClassVar[ConfigDict] = {'allow_inf_nan': False, 'extra': 'forbid', 'validate_assignment': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_fields: ClassVar[dict[str, FieldInfo]] = {'bounds': FieldInfo(annotation=tuple[float, float], required=True), 'initial_offset': FieldInfo(annotation=float, required=False, default=0.0), 'n_trials': FieldInfo(annotation=int, required=False, default=0), 't_step': FieldInfo(annotation=float, required=False, default=0.0), 'trial_steps_label': FieldInfo(annotation=str, required=False, default=''), 'trial_steps_list': FieldInfo(annotation=list[float], required=False, default=[]), 'trial_steps_value': FieldInfo(annotation=float, required=False, default=0.0), 'window_type': FieldInfo(annotation=str, required=False, default='')}

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo].

This replaces Model.__fields__ from Pydantic V1.

validate_values()

Validate the values after loading them.