Architecture¶
This page contains information about the package architecture.
prfmodel contains different submodules that contain different types of (sub-) models.
The main model classes that users interact with are in prfmodel.models, prfmodel.impulse,
and prfmodel.scaling. We distinguish between three user profiles:
Entry-level users will interact with high-level canonical model classes such as
prfmodel.models.prf.Gaussian2DPRFModel. These classes have good defaults and require very little adjustment.Advanced users will interact with submodel classes in
prfmodel.impulseandprfmodel.scaling. For example, they might customize the parameters of impulse submodel in a canonicalprfmodel.models.prf.Gaussian2DPRFModel.Expert uses will interact with all available public classes, potentially defining their own custom submodels or canonical models.
Inhertitance diagrams¶
To facilitate the development of the package and the creation of custom models, we provide an overview of the inhertiance structure of the three modules containing model classes.
The inheritance diagram for prfmodel.models:

The inheritance diagram for prfmodel.impulse:

The inheritance diagram for prfmodel.scaling:

API¶
The API uses a “public facade” design pattern where most complex model classes are defined in private submodules and exported as public in the next ancestor module in the hierarchy. This prevents the API docs from overflowing with submodules while keeping class definitions in separate files.