A ModulatoryProjection is a subclass of Projection that takes the value of a ModulatorySignal belonging to a ModulatoryMechanism, and uses that to modulate the function of the Port to which it projects. There are three types of ModulatoryProjections, that modulate different types of Components and their Ports:
See ModulatoryMechanism for conventions used for the names of Modulatory components.
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 Ports to or from which they project (Projections in Port, and Specifying a Projection), or are created automatically, the details of which are described in the documentation for each type of ModulatoryProjection.
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
Port are listed in the Port’s
A ModulatoryProjection, like any Projection, cannot be executed directly. It is executed when the Port to
which it projects — its
receiver — is updated; that occurs when the Port’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 Port that receives the Projection. The Port assigns the value to
the parameter of the Port’s
function specified by the
modulation attribute, and then calls
function to determine the
value of the Port.
The change made to the parameter of the Port’s Function in response to the execution of a ModulatoryProjection are not applied until the Port is updated which, in turn, does not occur until the Mechanism to which the Port belongs is next executed; see Lazy Evaluation for an explanation of “lazy” updating).
ModulatoryProjection is an abstract class and should never be instantiated by a call to its constructor. It should be instantiated using the constructor for a subclass.
the name of the ModulatoryProjection. If the ModulatoryProjection’s initialization has been deferred, it is assigned a temporary name (indicating its deferred initialization status) until initialization is completed, at which time it is assigned its designated name. If that is the name of an existing ModulatoryProjection, it is appended with an indexed suffix, incremented for each ModulatoryProjection with the same base name (see Naming). If the name is not specified in the name argument of its constructor, a default name is assigned using the following format: ‘<ModualatorySignal type> for <receiver owner Mechanism’s name>[<receiver’s name>]’ (for example,
'GatingSignal for my_mech[InputPort-0]').