A ModulatoryProjection is a subclass of Projection that takes the value of a ModulatorySignal belonging to an AdaptiveMechanism, and uses that to modulate the function of the State to which it projects. There are three types of ModulatoryProjections, that modulate different types of Components and their States:
Creating a ModulatoryProjection¶
A ModulatoryProjection is a base class, and cannot be instantiated directly. However, the three types of
ModulatoryProjections listed above can be created directly, by calling the constructor for the desired type.
More commonly, however, ModulatoryProjections are either specified in the context of the States to or from
which they project (Projections in State, and
Projection_Specification>), or are created automatically, the details of which are described in the documentation for each type of
A ModulatoryProjection has the same basic structure as a Projection, augmented by type-specific
attributes and methods described under each type of ModulatoryProjection. The ModulatoryProjections received by a
State are listed in the State’s
A ModulatoryProjection, like any Projection, cannot be executed directly. It is executed when the State to
which it projects — its
receiver — is updated; that occurs when the State’s owner
Mechanism is executed. When a ModulatoryProjection executes, it conveys both the
the ModulatorySignal from which it projects, and the ModulatorySignal’s
modulation attribute, to the State that receives the Projection. The State assigns the value to
the parameter of the State’s
function specified by the
modulation attribute, and then calls
function to determine the
value of the State.
The change made to the parameter of the State’s Function in response to the execution of a ModulatoryProjection are not applied until the State is updated which, in turn, does not occur until the Mechanism to which the State belongs is next executed; see Lazy Evaluation for an explanation of “lazy” updating).