- Compilation
• Added support for the following scheduler conditions in Compiled mode: Not, WhenFinished, WhenFinishedAll, WhenFinishedAny, AfterNCalls, AtNCalls, BeforeNCalls
• Added support for the DDM is_finished condition
- Composition
• Added Mechanisms property that returns a MechanismList containing all mechanisms in a Composition
• Added pathways attribute that stores the set of all Pathway instances associated with a Composition
• Added feedback_projections property that lists Projections assigned as feedback
• Added pathways argument to class constructor, allowing user to specify Pathways to be added to the Composition during initialization
• Instances of new Pathway class can now be used to add nodes to a composition with the following methods: add_pathway, add_backpropagation_learning_pathway, add_linear_learning_pathway, add_linear_processing_pathway, add_reinforcement_learning_pathway, and add_td_learning_pathway. Previously, these methods required lists of nodes (which are still allowed as well).
• output_values property now returns the values of the OutputPorts of a Composition in the most recent context instead of the context with the None execution id
• Added the runtime_params argument to Composition.run, allowing users to specify a set of Composition parameters to use for that specific call to run
• Users can now pass None or {} as the inputs argument to Composition.run or Composition.execute. When doing so, the Composition will use its input nodes’ default variables as inputs
• If input or target mechanisms of Compositions have input or output labels associated with them, then these labels can be used in place of specifying numerical values for inputs and targets, respectively, in a Composition’s input and target specifications
• Renamed the following (item types in parentheses):
◦ (Method) Composition.reinitialize -> Composition.reset
◦ (Method) Mechanism.reinitialize -> Mechanism.reset
◦ (Attribute) Mechanism.reinitialize_when -> Mechanism.reset_stateful_function_when
◦ (Argument of Composition.run) reinitialize_nodes_when -> reset_stateful_functions_when
◦ (Argument of Composition.run) reinitialize_values -> reset_stateful_functions_to
• The reset_stateful_functions_when argument of Composition.run can now accept a dict of {Node:Condition} pairs as its argument
- Control
• When a Composition without a controller is added as a node to a Composition with a controller, and the inner Composition has nodes with parameters that have Control specifications, the outer Composition’s controller will use the Control specifications to create projections to those nodes’ parameters.
- Execution Graph
• Previously, the algorithm used for flattening cyclic compositions traversed the graph and flattened cycles as they were encountered. Now, the largest cycles present within compositions are prioritized for flattening. This may change the results of Compositions containing certain types of cyclic structures (see version 0.7.5.4 for last release with previous cycle-flattening algorithm)
- Learning
• The API for learning in Standard PsyNeuLink Compositions has changed. Previously, methods that added learning pathways to standard Compositions returned a target Mechanism that needed to be maintained by the user or otherwise retrieved in order to call the Composition.learn method. With the addition of the Pathway class (detailed above), these methods now return the instantiated Pathway instead of the target Mechanism. Because the set of all Pathways belonging to a Composition are stored on the Composition instance as an attribute, this frees the user of some of the burden of maintaining the target Mechanism instance (see version 0.7.5.4 for last release with previous API)
- Process
• The Process class has been removed entirely from the codebase (see version 0.7.5.4 for last release including Process)
- Pathway
• implemented the Pathway class, which is used to represent a series of Nodes and Projections connected linearly within a Composition. This change interacts with learning in ways that change the API, as specified below (see version 0.7.5.4 for last release with previous API)
- System
• The System class has been removed entirely from the codebase (see version 0.7.5.4 for last release including System)
- Misc
• Various bugfixes, improvements to documentation, internal refactoring, etc.
• All remaining tests using `System` and `Process` have been converted to use `Composition` or removed