Releases: PrincetonUniversity/PsyNeuLink
Releases · PrincetonUniversity/PsyNeuLink
v0.6.0.0
-
Component
- Parameters now have internal get and set methods
- All Components now take kwargs. These are passed all the way through the inheritance hierarchy. Exceptions are raised on illegal kwargs during instantiation of Component class
-
Condition
- AtTrialStart added as condition
-
Composition
- Node roles can now be specified when nodes are added to a Composition. This is done in the add_node method by passing a tuple in format (node, [required_roles]) (#1205)
- Users can now set scheduler_processing
- Added add_backpropgation_learning_pathway method that supports multilayer backpropagation learning, and can be combined to generate any pattern of feedforward networks.
- Learning components can now be shown by show_graph using show_learning argument.
- Parameters specified for control in the constructor of a Mechanism are now assigned ControlSignals on the controller of a Composition when the Mechanism is assigned to that Composition
- If a ControlMechanism is included in add_linear_processing_pathway, and neither the objective_mechanism nor monitor_for_control arguments of its constructor was specified, then it will receive projections to it in the same way as any other Mechanism.
- ControlProjections are now assigned as feedback by default if they form a loop.
- Controller now included in Composition.log (#1227)
- Execution id, execution context, and context now consolidated into a single Context class (#1300)
- show_graph: now displays Mechanisms that send a feedback projection in their own shape (septagon by default).
- show_graph: can now generate an animated gif of Composition execution (#1231)
- show_graph: added show_cim option to show Composition CIMs
- show_graph: ModulatoryProjections now use a distinct arrowhead (square by default)
- retain_old_simulation_data added as parameter
- Nodes with a reinitialize_when condition that is satisfied on current trial now reinitialize (#1250)
- Add_back_propagation_pathway now implemented for Compositions (#1260)
- Modulation of nested nodes implemented through the use of Parameter CIMs (#1269)
- Can now specify a ControlMechanism to be used as the controller for a Composition in the Composition’s constructor (#1304)
-
AutodiffComposition
- If learning_enabled is False but inputs are provided in format for learning (i.e. with key for targets), the targets are ignored and inputs key of input dict is used as inputs (allows same input_dict to be used for training and testing)
- Feedforward networks can now be run in compiled mode.
-
Function
- Concatenate Function added, allowing users to concatenate items of a variable (#1238)
- Rearrange Function added, allowing users to rearrange items of variable (#1238)
- TransferWithCosts added: has transfer_fct and associated cost functions that are computed based on the result of the transfer_fct
- Added function() method to Function_Base that handles boilerplate operations common to all Functions.
- Renamed method for individual Functions from function() to _function()
- Added _is_identity attribute, which indicates whether, given current parameters, function will return the same value as its variable (used by State: if it returns True during execution, function is skipped and its variable is returned as its result).
-
Scheduler
- Default Condition for nodes is now to run only when all nodes that it is dependent on have run. Previously, default Condition was to always run
-
ModulatoryMechanism
- Can now be assigned ControlSignals and/or GatingSignals
-
ControlMechanism
- Can now be used to modulate any parameter of the function of an InputState or OutputState, in addition (as previously) to ParameterStates
- Instantiation of objective_mechanism is now optional, and must be explicitly specified (either by setting argument = True, an existing ObjectiveMechanism or a constructor for one
-
ControlSignal
- Now uses TransferWithCosts as its default function; cost functions have been removed and replaced by aliases to cost functions of TransferWithCosts
-
State
- Projection keyword in ModulatorySignal constructor changed from projections to modulates (alias added so that if a user instantiates a ModulatorySignal using the projections keyword it will still work)
- In certain situations where it is possible to determine that a projection will not alter the value of its variable, it will not execute its full Function and instead simply pass its variable as its value (see _is_identity Function attribute above)
- Added full_name property that returns <owner.name>[<self.name>] (#1288)
- Renamed update method to _update
-
Documentation
- Basics and Sampler has been rewritten to reference Composition rather than System/Process, and sections added on Control, Learning and UserDefinedFunction
-
Tutorial
- Rewritten to reference Composition rather than System/Process
-
System/Process
- Now deprecated. Will be eliminated from codebase entirely in an upcoming version
-
Misc
- Abstract class check now uses abc module
- Many bug fixes, optimizations, updates to documentation, etc.
- Most instances of “execution_id” and “execution_context” have been replaced with just “context”, which supports the same types of arguments
v0.4.8.0
Mechanisms
- Add ContrastiveHebbianMechanism (but ContrastiveHebbian Function is not yet implemented)
- Add condition attribute; automatically assigned to scheduler of any System to which Mechanism belongs
- Add reinitialize_when Condition on Mechanisms that accumulate
Functions
- Add ReLU (rectified linear transformation) Function
- Distance Function: added MAX_ABS_DIFF metric
Compositions
-
Add pre-alpha/incomplete Composition
- intended to be more flexible than and eventually replace System/Process
-
System
- Add runtime parameters to Run
- Alternative parameter values that are used when their Condition is True
- show_graph: added show_process option to organize by Processes
- Add runtime parameters to Run
-
Process
- Add warning for (and ignore) duplicate projection specification
Models
- Add PCTC (Kalanthroff et al., 2018)
- Add Stroop GRAIN (Cohen & Huston, 1994)
- Add Conflict Monitoring and Cognitive Control (Botvinick et al., 2001)
Scheduling
- Add Time-based Conditions for TimeScale.TIME_STEP
Testing
- Add testing on Travis (OS X, Linux)
- Add testing on Appveyor (Windows)
- Add coverage testing (pytest-cov, Coveralls)
Misc
- Add support for python3.7
- Many assorted bug fixes and improvements (see commit log for full list)
- Assorted documentation improvements
v0.4.7.1
- Tests/projections/maskedmappingprojection (#779)
- Fix/docs/maskedmappingprojection (#778)
- handling array of DistributionFunctions case for new noise._execute rule
- adding replacing noise with noise._execute in function validation (to allow for noise=DistributionFunction())
- removing use of noise=DistributionFunction().function from constructors in pytests
- swapping .function with ._execute in noise validation to comply with the standard that functions are always executed through ._execute
v0.4.7.0
- README: fix formatting to appear properly on PyPI
- Feat/projections/masked mapping projection (#775)
- adding exceptions to get_current_function_param and get_current_mechanism_param - not intended for looking up 'variable'
- Feat/projections/masked mapping projection (#771)
- LCA (#770)
- LCA (#769)
- Refactor/mechanism/transfermechanism (#768)
- Fix default_variable bug (#767)
- Feat/inputstate/combine (#766)
- Refactor/context/source (#765)
- Defaults: ensure that function attr appears when examining Defaults
- Rewrite Function instantiation:
- Component: create fewer instances during init when function arg is a class
- LinearMatrix: make keyword method static to reflect how it is used
- refactor/rename _variable_not_specified to be more generic, using enum
- Defaults: add enum to denote flexibility of assignments
- Component: add class method to get new param class defaults
- Defaults: add ClassDefaults.function to several classes, and use it as fallback
- utilities: add function to detect if obj is an instance or a subclass of a class
- Component: override deepcopy method to use shared items
- parsing: add method to parse function variable from variable
- imports: pycharm-optimize to avoid unnecessary circularities
- Params: copy dict/ROODs nested in params arguments to avoid side effects
- Refactor/context/set and test (#762)
- fixing bug in looking up target values for learning which caused first target value to be repeated
- LinearCombination, Reduce: handle negative exponents during init (avoid zero division)
- Functions: simplify noise validation
- adding a note to the ddm plot() documentation to clarify that the plot does not correspond to the actual results of the mechanism
- fixing drift diffusion integrator bug - returned threshold even when it crossed the negative threshold
- Fix/misc/misc (#759)
- PredictionErrorMechanism: correct infinite recursion in _execute
- Docs/context/context (#757)
- Mechanism (#756)
- Refactor/mechanisms/ execute (#754)
- LearningAuxilliary: rename to LearningAuxiliary (correct double l typo)
- scheduling: decouple Scheduler and Condition, allow multiple execution_ids
- utilites: get method to prune unused args from a function from composition branch
- Feat/mechanism/input target lable dicts (#752)
- testing: Resolve leftover merge conflicts, fixes #747
- testing: correct pytest setup ovewrite, losing some settings
- Feat/mechanism/input target label dicts (#751)
- Scheduling: fix bug where termination conditions persisted across calls to run
- tests,function/LinearCombination: Add tests with absent parameters
- test,function/LinearCombination: Rename second test function to prevent overwriting results
- Context (#746)
- Refactor/context/deprecate init status (#745)
- Refactor/context/structured (#744)
- Fix/function/stability (#743)
- IntegratorMechanism (#742)
v0.4.4.0
- documentation typos
- documenting reinitialize on mechanism
- continuing to add tests and docs for reinitialize
- fixing bugs that prevented initialize method on system from ever executing, and adding pytests for it now that it works
- revising outdated TransferMechanism docs for reinitialize
- continuing to add tests to highlight differences between calling reinitialize on a mechanisms and on a function
- adding nparray_dictionary to docs and revising nparray to use the same helper methods as nparray_dictionary
- Time: fix bug where RUN counter would not be incremented on new runs
- fixing (temporarily) time_step bug in nparray_dictionary; reorganzing nparray_dictionary into methods that can be reused by nparray
- refactoring log to have a dictionary option and writing tests for it
- beginning to add a dictionary alternative to the options for whats returned by the log
- more calls to _dealias_owner_name required in order to create log.nparray
- fixing bug in log: needed to switch between 'value' and mechanism name in several loops in order to assemble log.nparray
- adding more pytests for reinitialize and fixing reinitialize bugs; beginning to update documentation
- adding pytests for reinitializing at both function and mechanism level; cleaning up mistakes in reinitialize() methods along the way
- adding a reinitialize method on mechanisms, which calls reinitialize on its function or integrator_function, then updates the mechanism's value and output states
- beginning to refactor reinitialize as a method on integrator functions
v0.4.0rc1
- (#561)
- Fix/component/default naming (#558)
- remove Scratch Pad
- clean up DDM examples with verified parameters from matlab
- skip NavarroAndFuss doctest because build server cannot access matlab
- update NavarroAndFuss to use the correct version of the MATLAB simulation
- convert DDM return_value for NavarroAndFuss function to be floats to allow NaN assignment
- fix bug in using the matlab engine to run a script outside of the current dir
- adding validation on NormalDist function in the case where some numpy versions throw an error
- • System (#556)
- Feat/system/show graph (#555)
- Fix/modulatory specifications (#554)
- clean imports in function.py
- cleanup Scheduler doc examples
- add parsing handler for Scheduler termination_conditions
- move static .svg files from docs build directory to source dir
- update docs to show 0.0.x versions instead of just 0.x (we use the former frequently)
- fix broken package link for AutoAssociativeMechanism that caused sphinx automodule to fail
- removing references to 'inhibition' and 'decay' in LCA docs
- removing gilzenrat transfer mechanism from the repo
- updating gilzenrat unit tests to use LCA mechanism in place of GilzenratTransferMechanism
- ...
v0.3.4-alpha: Merge pull request #481 from PrincetonUniversity/devel
RecurrentTransferMechanism Learning
v0.3.3-alpha: Merge pull request #474 from PrincetonUniversity/temp/merge-devel
Pre-release
- Core and Subsystems directories added
- Control mechanism refactored
- LC and AGT mechanisms implemented
- Show graph method repaired
- Bugs fixed in tutorial