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:

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:

Inheritance diagram of prfmodel.models.base, prfmodel.models.prf, prfmodel.models.cf, prfmodel.models.compression

The inheritance diagram for prfmodel.impulse:

Inheritance diagram of prfmodel.impulse.base

The inheritance diagram for prfmodel.scaling:

Inheritance diagram of prfmodel.scaling.base

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.