prfmodel.models.cf.canonical.CanonicalCFModel

class prfmodel.models.cf.canonical.CanonicalCFModel(cf_model: prfmodel.models.base.BaseTuning, encoding_model: prfmodel.models.base.BaseStimulusEncoder | type[prfmodel.models.base.BaseStimulusEncoder] = CFStimulusEncoder, scaling_model: prfmodel.scaling.base.BaseScaling | type[prfmodel.scaling.base.BaseScaling] | None = BaselineAmplitude, regressors_model: prfmodel.regressors.base.BaseRegressors | list[prfmodel.regressors.base.BaseRegressors] | None = None)

Canonical connective field model.

This class combines a connective field and scaling model response.

Parameters:
  • cf_model (BaseTuning) – A connective field tuning model instance.

  • encoding_model (BaseStimulusEncoder or type, default=CFStimulusEncoder) – An stimulus encoding model class or instance. Model classes will be instantiated during initialization. The default creates a CFStimulusEncoder instance.

  • scaling_model (BaseScaling or type or None, default=BaselineAmplitude, optional) – A scaling model class or instance. Model classes will be instantiated during initialization. The default creates a BaselineAmplitude instance.

  • regressors_model (BaseRegressors or list of BaseRegressors or RegressorsList or None, default=None, optional) – A regressor model instance, a list of regressor model instances, or None. When a list is provided, it is wrapped in a RegressorsList and its contributions are summed. The regressor contribution is added after the scaling model.

Notes

The canonical model follows the following steps:

  1. The connective field tuning model makes a prediction for the stimulus distance matrix.

  2. The connective field tuning profile is encoded with the source response.

  3. The scaling model modifies the encoded response.

  4. The regressors model (optional) adds a linear combination of fixed regressors to the scaled response.

In contrast to pRF models (e.g., CanonicalPRFModel), connective field models do not require an impulse model because it already contained in the signal of the source response.

__call__(stimulus: S, parameters: pandas.DataFrame, regressors: pandas.DataFrame | None = None, dtype: str | None = None) → numpy.ndarray

Predict a canonical model response to a stimulus.

This is the public entry point; subclasses implement call() instead. Use call() when a backend tensor is required, for example inside a fitter or another model’s call().

Parameters:
  • stimulus (Stimulus) – Stimulus object.

  • parameters (pandas.DataFrame) – Dataframe with columns containing different model parameters and rows containing parameter values for different units.

  • regressors (pandas.DataFrame, optional) – Regressor design data. Required when the canonical model has a regressors model configured. A single data frame with shape (num_frames, num_regressors) whose columns cover the names required by every configured regressor model. Extra columns are ignored.

  • dtype (str, optional) – The dtype of the prediction result. If None (the default), uses the dtype from prfmodel.utils.get_dtype().

Returns:

The predicted model response with shape (num_units, num_frames) and dtype dtype.

Return type:

numpy.ndarray

Raises:

ValueError – If parameters is missing one or more of parameter_names.

call(stimulus: prfmodel.stimuli.CFStimulusTensors, parameters: prfmodel.utils.TensorFrame, regressors: prfmodel.utils.TensorFrame | None = None) → prfmodel.typing.Tensor

Predict a canonical connective field model response to a stimulus.

Parameters:
Returns:

The predicted model response with shape (num_units, num_frames) and dtype dtype.

Return type:

Tensor

check_parameter_names(parameters: pandas.DataFrame) → None

Check that required parameter names are supplied.

Parameters:

parameters (pandas.DataFrame) – Dataframe with columns containing different model parameters and rows containing parameter values for different units.

Raises:

ValueError – When a parameter name in the parameter_names attribute is not a column in parameters.

check_parameter_values(parameters: pandas.DataFrame) → None

Check that the parameter values lie inside the domain the model is defined on.

Parameters:

parameters (pandas.DataFrame) – Dataframe with columns containing different model parameters and rows containing parameter values for different units.

Raises:

ValueError – When a parameter that must be > 0 is zero or negative.

get_consumed_parameter_names(parameters: pandas.DataFrame) → list[str]

Return the parameter names this model and its submodels read from parameters.

Parameters:

parameters (pandas.DataFrame) – Dataframe with columns containing different model parameters and rows containing parameter values for different units.

Returns:

Names of the parameters this model and its submodels read from parameters.

Return type:

list of str

property models: dict[str, ModelProtocol | None]

A dictionary with the named submodels.

Parameters:

models (dict of ModelProtocol) – Named submodels.

Raises:

TypeError – When a submodel does not inherit from ModelProtocol.

property parameter_names: list[str]

A list with names of unique parameters that are used by the submodels.