Releases: PrincetonUniversity/PsyNeuLink
v0.18.0.0
What's Changed
- requirements: update pandas requirement from <2.2.4 to <2.3.1 by @dependabot[bot] in #3281
- requirements: update numpy requirement >=1.21.0,<2.2.7 to >=1.21.0,<2.3.1 by @jvesely in #3282
- requirements: update grpcio requirement from <1.73.0 to <1.74.0 by @jvesely in #3283
- requirements: update pytest-cov requirement from <6.1.2 to <6.2.1 by @dependabot[bot] in #3284
- requirements: update pytest-cov requirement from <6.2.1 to <6.2.2 by @dependabot[bot] in #3285
- requirements: update graphviz requirement from <0.21.0 to <0.22.0 by @dependabot[bot] in #3287
- requirements: update optuna requirement from <4.4.0 to <4.5.0 by @dependabot[bot] in #3288
- requirements: update pytest requirement from <8.4.1 to <8.4.2 by @dependabot[bot] in #3289
- broken_trans_deps: Restrict modec_mdf != 0.4.12 on Python 3.13 by @jvesely in #3292
- requirements: update fastkde requirement from <2.1.4,>=2.0.0 to >=2.0.0,<2.1.6 by @dependabot[bot] in #3291
- setup.cfg: Turn benchmark fixture warnings into errors by @jvesely in #3293
- Parameter: add bool_as_number flag by @kmantel in #3294
- tests/IntegratorFunction: Remove workaround for DriftDiffusionIntegrator by @jvesely in #3295
- requirements: update numpy requirement >=1.21.0,<2.3.1 to >=1.21.0,<2.3.2 by @jvesely in #3296
- Revert "broken_trans_deps: Restrict modec_mdf != 0.4.12 on Python 3.13 (#3292)" by @jvesely in #3297
- Fix math expression in IntegratorFunction by @younesStrittmatter in #3298
- docs: rename 'encoder' to 'feedforward network' by @younesStrittmatter in #3299
- requirements: update scipy requirement to >=1.7.3, <1.17 by @jvesely in #3301
- requirements: update pytest-xdist requirement from <3.8.0,>=3.2.0 to >=3.2.0,<3.9.0 by @dependabot[bot] in #3302
- requirements: update pillow requirement from <11.3.0 to <11.4.0 by @dependabot[bot] in #3303
- requirements: update pandas requirement from <2.3.1 to <2.3.2 by @dependabot[bot] in #3304
- Parameter: rework history/get_previous by @kmantel in #3300
- fixed EVC OCM by @younesStrittmatter in #3306
- llvm: Disambiguate seed data type by @jvesely in #3307
- Add Botvinick_conflict_monitoring_model to model folder by @younesStrittmatter in #3309
- requirements: update pytest-pycodestyle requirement from <2.5.0 to <2.6.0 by @dependabot[bot] in #3312
- log: correct missing entries in dictionary with time_values by @kmantel in #3311
- Add support for batched sequences in AutoDiff by @davidt0x in #3310
- requirements: update grpcio requirement from <1.74.0 to <1.75.0 by @dependabot[bot] in #3314
- requirements: update numpy requirement >=1.21.0,<2.3.2 to >=1.21.0,<2.3.3 by @jvesely in #3316
- requirements: update matplotlib requirement from >=3.7.0, <3.10.4 to >=3.7.0, <3.10.6 by @jvesely in #3317
- ci/ga: Add .python-version file by @jvesely in #3318
- requirements: update matplotlib requirement from <3.10.4,>=3.7.0 to >=3.7.0,<3.10.6 by @dependabot[bot] in #3320
- requirements: update sphinx-autodoc-typehints requirement from <1.16.0 to <3.3.0 by @dependabot[bot] in #3319
- github-actions(deps): bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #3321
- model: update cohen huston 1994 by @younesStrittmatter in #3322
- models: clean up model script by @younesStrittmatter in #3323
- Models update docs by @younesStrittmatter in #3324
- github-actions(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #3327
- requirements: update torch requirement from >=1.13.0,<2.8.0 to >=1.13.0,<2.9.0 by @jvesely in #3328
- requirements: update protobuf requirement from <6.31.2,>=3.20.2 to >=3.20.2,<6.32.1 by @dependabot[bot] in #3329
- requirements: update pint requirement from <0.25.0 to <0.26.0 by @dependabot[bot] in #3330
- torch_param_specific_lr by @jdcpni in #3326
- requirements: update optuna requirement from <4.5.0 to <4.6.0 by @dependabot[bot] in #3331
- setup.cfg: Revert forced serialization of tests by @jvesely in #3332
- requirements: update pandas requirement from <2.3.2 to <2.3.3 by @dependabot[bot] in #3333
- parameters: ParameterNoValueError: print execution_ids that exist by @kmantel in #3334
- github-actions(deps): bump actions/github-script from 7 to 8 by @dependabot[bot] in #3337
- github-actions(deps): bump actions/setup-python from 5 to 6 by @dependabot[bot] in #3338
- ci/ga: Fallback to macos-14 for python-3.13 by @jvesely in #3341
- requirements: update pytest requirement from <8.4.2 to <8.4.3 by @dependabot[bot] in #3339
- requirements: update matplotlib requirement from <3.10.6,>=3.7.0 to >=3.7.0,<3.10.7 by @dependabot[bot] in #3336
- deps: Remove python3.7 specific workaround by @jvesely in #3342
- ci/ga: Improve CI checks by @jvesely in #3343
- AutodiffComposition: rework synch_and_retain_args, LearningScale by @kmantel in #3335
- requirements: update pytest-cov requirement from <6.2.2 to <6.3.1 by @dependabot[bot] in #3344
- requirements: update numpy requirement from <2.3.3,>=1.21.0 to >=1.21.0,<2.3.4 by @dependabot[bot] in #3345
- tests: MDF: make DriftDiffusionIntegrator test ids same across platforms by @kmantel in #3347
- requirements: update protobuf requirement from <6.32.1,>=3.20.2 to >=3.20.2,<6.32.2 by @dependabot[bot] in #3346
- requirements: update grpcio requirement from <1.75.0 to <1.76.0 by @dependabot[bot] in #3348
- utilities: contains_type: check common numeric np array case fast by @kmantel in #3349
- treewide: expand use of function signature cache by @kmantel in #3352
- ObjectiveMechanism_NodeRole by @jdcpni in #3354
- Parameter optimizations by @kmantel in #3353
- Revert "ci/ga: Fallback to macos-14 for python-3.13 (#3341)" by @jvesely in #3356
- PsyNeuLink global thread configuration API by @davidt0x in #3357
- Devel by @kmantel in #3355
Full Changelog: v0.17.0.0...v0.18.0.0
v0.17.0.0
What's Changed
- compositions: allow setting feedback specification on a Projection by @kmantel in #3213
- tests/AutodiffComposition: Explicitly copy tensors to CPU before converting to numpy by @jvesely in #3217
- ci/ga: Use one line per uploaded artifact file by @jvesely in #3220
- requirements: update matplotlib requirement from <3.10.1,>=3.7.0 to >=3.7.0,<3.10.2 by @dependabot in #3221
- requirements: update pytest requirement from <8.3.5 to <8.3.6 by @dependabot in #3223
- MDF: Mechanism: fix multiple input ports with multiple afferents by @kmantel in #3218
- deps: Fix issues and enable Numpy 2+ by @jvesely in #3219
- requirements: update beartype requirement from <0.20.0 to <0.21.0 by @jvesely in #3225
- docs/composition_randomization by @jdcpni in #3226
- ci/ga: Restrict fastkde in x86 runs by @jvesely in #3228
- maint: update setup and build config, and release workflow by @kmantel in #3229
- requirements: update grpcio requirement from <1.71.0 to <1.72.0 by @jvesely in #3230
- broken_trans_deps: Restrict numpy to <2 on macos x86_64 by @jvesely in #3232
- requirements: update numpy requirement from <2.2.4,>=1.21.0 to >=1.21.0,<2.2.5 by @dependabot in #3233
- Feat/gru by @jdcpni in #3234
- requirements: update pytest-cov requirement from <6.0.1 to <6.1.1 by @dependabot in #3239
- Feat/autodiff/copy pytorch param to matrix by @jdcpni in #3240
- patch/emcomposition/forbid_add_projection by @jdcpni in #3241
- • autodiffcomposition.py by @jdcpni in #3242
- Fix/composition/target arg by @jdcpni in #3243
- patch_autodiff_retain_results by @jdcpni in #3244
- patch/grucomposition by @jdcpni in #3245
- patch/grucomposition by @jdcpni in #3247
- requirements: update pytest-cov requirement from <6.1.1 to <6.1.2 by @dependabot in #3246
- tests: Drop unused function arguments by @jvesely in #3248
- refactor/pytorchwrappers/execute_node by @jdcpni in #3249
- requirements: update optuna requirement from <4.3.0 to <4.4.0 by @dependabot in #3251
- requirements: update pillow requirement from <11.2.0 to <11.3.0 by @dependabot in #3250
- requirements: update dill requirement from <0.3.10 to <0.4.1 by @dependabot in #3252
- patch/transformfunctions/MatrixTransform by @jdcpni in #3253
- requirements: update packaging requirement from <25.0 to <26.0 by @dependabot in #3254
- tests: set fixed terminal width for report testing by @kmantel in #3255
- requirements: update torch requirement from >=1.13.0,<2.7.0 to >=1.13.0,<2.8.0 by @jvesely in #3256
- requirements: update numpy requirement >=1.21.0,<2.2.5 to >=1.21.0,<2.2.6 by @jvesely in #3257
- requirements: update psyneulink-sphinx-theme requirement from <1.2.6.0 to <1.2.8.0 by @dependabot in #3258
- docs: support (only) sphinx>=5 by @kmantel in #3259
- control: fix nested Composition context bug by @kmantel in #3262
- Add support for Python 3.13 by @jvesely in #3260
- LCAMechanism: do not assign default termination_threshold if evals False by @kmantel in #3265
- Parameter: rework fallback for missing values in a Context by @kmantel in #3263
- ci/ga: Stop 'msedge' at the end of windows jobs by @jvesely in #3266
- requirements: update numpy requirement from >=1.21.0,<2.2.6 to >=1.21.0,<2.2.7 by @jvesely in #3267
- requirements: update matplotlib requirement from >=3.7.0, <3.10.2 to >=3.7.0, <3.10.4 by @jvesely in #3268
- ci/ga: Install alternative pdf viewer on windows runners by @jvesely in #3270
- compositions: set default contexts on run, learn, execute by @kmantel in #3269
- requirements: update beartype requirement from <0.21.0 to <0.22.0 by @jvesely in #3272
- requirements: update pytest-xdist requirement from <3.7.0,>=3.2.0 to >=3.2.0,<3.8.0 by @dependabot in #3273
- rpc: Update protobuf python code by @jvesely in #3276
- requirements: update protobuf requirement from <3.20.4 to <6.31.2 by @dependabot in #3275
- requirements: update grpcio requirement from <1.72.0 to <1.73.0 by @dependabot in #3277
- requirements: update pytest requirement from <8.3.6 to <8.4.1 by @dependabot in #3278
- requirements: update networkx requirement from <3.5 to <3.6 by @jvesely in #3280
- Devel by @kmantel in #3271
Full Changelog: v0.16.1.0...v0.17.0.0
v0.16.1.0
[0.16.1.0] - 2025-02-24
ArgumentTherapy
- Fix Parameter, numeric errors on construction
Bug Fixes
-
Fix softmax in apply_softmax and pytorch
-
Fix test in softmax_choice
-
Fix softmax masking
-
Fix softmax masking
-
Fix softmax masking
-
Fix softmax masking
Composition
- Fix feedback_projections property (#3192)
- Set most_recent_context in execute (#3195)
- Fix incorrect target parsing due to input order (#3208)
InteractiveActivationIntegrator
- Handle 0d np arrays
OptimizationFunction
- Wrap itertools.product in a generator (#3191)
ParameterPort
- Handle more getter errors during enumeration
Refactor
- Refactor/transferfunction/scale_and_offset (#3184)
• transferfunctions.py:
- Add bounds to Linear (docs are wrong and code doesn't implement them)
- Refactor bounds to use getter, and to list dependencies on scale and offset, and to use "natural bounds" or the like
- rename bounds -> range
- add DeterministicTransferFunction subclass of TransferFunction:
- scale and offset Parameters used by all subclasses
- add _range_setter() that adjusts range based on scale and/or offset
Testing
- Cleanup use of per-node compilation mode
- Consolidate check for compiled execution of large test instances
- Re-enable TransferFunction tests
- Re-enable clip tests
- Re-enable TransferFunction related tests (#3186)
- Cleanup test_clip_with_respect_to_fct_bounds (#3187)
- Allow selecting variant for Function execution
- Move function specific params to test arguments
- Use more precise results for DriftOnASphereIntegrator
- Allow selecting variant of mechanism execution.
UserDefinedFunction
- Raise error on None custom_function
Ci/ga
- Setup.py generates sdist packages with .tar.gz extension (#3189)
Condition
- Simplify output for GraphStructureConditions
Llvm
- Rename ExecutionMode.PTX -> ExecutionMode._PTX
- Rename ExecutionMode.LLVMExec -> ExecutionMode._LLVMExec
- Add _LLVMPerNode mode
- Refactor ExecutionMode handling (#3182)
- Add debug output when invoking node reset (#3183)
- Return initialized values as output from "reset" function execution variants (#3188)
Llvm/ExecutionMode
- Add is_*_compiled helper functions
- Use identity comparisons
Llvm/SoftMax
- Enable MAX_VAL and MAX_INDICATOR output types
Requirements
- Update pycuda requirement from <2025,>2018 to >2018,<2026 (#3198)
Utilities
v0.16.0.0
[0.16.0.0] - 2025-01-30
Documentation
- State need for both python and system graphviz
Features
- Feat/add_bias_node (#3151)
test_composition.py:
- add TestBIAS and refactor tests
Mechanism
- Fix no-input execute causing shared default variable memory (#3148)
PytorchMechanismWrapper
- Throw function unavailable error more strictly
Refactor
- Refactor/transfermech_and_fct/clip_scale_offset (#3171)
• transferfunctions.py:
- TransferFunction: add _set_bounds() to be compatible with any assignments to scale and/or offset
- Logistic(): modify offset to be vertical vs. horizontal
• transfermechanism.py:
- clip: add setter, which checks against bounds of function
• test_transfer_mechanism.py:
- add test_clip_with_respect_to_fct_bounds()
SoftMax
- Use last dimension for pytorch softmax
Testing
- Models: find model script paths relative to psyneulink root (#3141)
- Mark as llvm
- Drop unnecessary use of np.asfarray
Ci/ga
- Remove Python3.7 CI jobs
Ga/install_pnl
- Restrict win32 pandas to < 2.1.0
- Restrict win32 llvmlite to < 0.42
Llvm
- Use np.asarray instead of asfarray if dtype is provided
- Add support for LLVM-15 typed pointers (#3167)
- Remove deprecated AST callbacks
- Use known operand type if available
- Cleanup (#3172)
Mdf
- Catch more pint parsing errors
Models/MontagueDayanSejnowski
- Use versioned seaborn style (#2808)
Pytorch
- Implement input port function execution
- Implement input port function execution (#3146)
Requirements
- Update pillow requirement from <11.1.0 to <11.2.0 (#3152)
- Update scipy requirement (#3154)
- Update grpcio requirement from <1.69.0 to <1.70.0 (#3156)
- Bump minimum rich version to >=10.2
- Update matplotlib requirement from <3.7.6 to <3.10.1 (#3145)
- Update optuna requirement from <4.2.0 to <4.3.0 (#3166)
- Update llvmlite requirement from <0.44 to <0.45 (#3165)
- Update pint requirement from <0.22.0 to <0.25.0
- Update pint requirement from <0.22.0 to <0.25.0 (#3162)
- Update grpcio requirement from <1.70.0 to <1.71.0 (#3168)
- Update psyneulink-sphinx-theme requirement (#3175)
Setup
- Drop support for Python3.7
Showgraph
- Give more information when system graphviz not found
Treewide
- Use asarray(dtype=float) instead of asfarray
- Don't use numpy asfarray (#3158)
Utilities
- Change seed type to unsigned integer
v0.15.3.0
[0.15.3.0] - 2024-12-05
Bug Fixes
-
Fix/standard_output_ports_calculate (#3114)
-
- recurrenttransfermechanism.py
- _instantiate_attributes_after_function(): fix assignment of StabilityFunction, and force update of default_variable for output_port
-
_instantiate_attributes_after_function:
revise call to _update_default_variable to use energy.variable instead of value -
- test_recurrent_transfer_mechanism.py
- TestStandardOutputPorts:
test_rtn_energy()
test_rtn_entropy()
-
- recurrenttransfermechanism.py
_instantiate_attributes_after_function():
refactor to assign functions for ENERGY and ENTROPY standard_output_ports before call to super()
- recurrenttransfermechanism.py
-
Fix/lccontrolmechanism_objectivemechanism (#3134)
-
- composition.py
- suppress warning about adding CONTROL_OBJECTIVE NodeRole if ObjectiveMechanism is already associated with a ControlMechanism
-
lccontrolmechanism.py
- _instantiate_objective_mechanism(): implement default ObjectiveMechanism with CombineMeans
- _instantiate_control_signals:
complete implementation of ALL
-
- test_control_mechanism.py
test_lc_control_monitored_and_modulated_mechanisms_composition(): augmented to test implementation of ObjectiveMechanism
- test_control_mechanism.py
Component
- Make deprecated arg error via illegal args; deprecate 'size' (#3123)
Functions/OneHot
- Fix "DETERMINISITC" typo
- Use local PRNG to randomly select extreme index
Mechanism
- If any port has default_input, get variable from input_ports
Parameter
- Correct .set post-initialization check (#3116)
Port
- Use default_input before checking projections
Refactor
-
Refactor/emcomposition_field_handling (#3122)
-
- emcomposition.py
_parse_fields: clean up assignment of self.num_fields
- emcomposition.py
-
test_emcomposition.py
add test_assign_field_weights_and_0_vs_None()
add test_field_weights_all_None_and_or_0 -
emcomposition.py
- revamp docstring to document new mods
- add fields arg to specify field_naes, field_weights, learn_field_weights
- implement fields arg to specify field_names, field_weights, learn_field_weights in dict format
- implement support for field-specific learn_field_weight specifications
- _identify_target_nodes():
refactor to use target_fields instead of learn_field_weights - add target_fields to fields specification dict
- add dict spec for entries in fields arg
- start adding field_idx to all components
- add self._field_index_map
-
pytorchEMcompositionwrapper.py
- store_memory(): use self._field_index_map to assign memories to fields
-
test_emcomposition.py
- test_backpropagation_of_error_in_learning(): use EGO model to test for error backpropagation through EMCompoistion
- test_field_args_and_map_assignments(): flesh out _field_index_map validation
-
- emcomposition.py
- update docstring figs
- add purge_by_field_weights Parameter
-
- autodiffcomposition.py
- infer_backpropagation_learning_pathways(): add NodeRole.BIAS to pathways consructed for learning
Testing
- Split softmax_choice test
- Add mode=DETERMINISTIC tests
- Test more int32 samples in MT builtin test
- Use array_equal to test integer results
Broken_trans_deps
- Block coverage==7.6.5 (#3118)
Ci
- Test-release: add matrix.dist to test result artifact
- Test-release: exclude macos-11 on py3.7
Ci/ga
- Use console_output_style=count (#3132)
Llvm
- Convert recursive array iterator into contextmanager
- Implement range integer generation to match Numpy's
- Implement range integer generation to match old Numpy's
Llvm/Component
- Allow 'indicator' and 'abs_val' parameters in OneHot DETERMINISTIC mode
Llvm/DictionaryMemory
- Remove OneHot mode workarounds
Llvm/Mechanism
- Reinit integrator_function in Mechanism reset if present (#3112)
Llvm/OneHot
- Isolate handling of PROB and PROB_INDICATOR modes
- Refactor to match Python behaviour for modes != DETERMINISTIC
- Add basic implementation of DETERMINISTIC mode
- Implement support for RANDOM tie resolution
- Simplify PROB/PROB_INDICATOR implementation
- Implement all modes (#3124)
Requirements
v0.15.2.0
[0.15.2.0] - 2024-11-11
Bug Fixes
-
Fix/ego_update_figs (#3108)
-
EGO CSW Model: update figures
CombineMeans
- Avoid creating unecessary object dtype for means
Component
- Only explicitly set new parameter defaults
- Check for existing parameter by name before getattr
- _initialize_parameters: allow creating Parameters dynamically
- _get_current_parameter_value: pass modulated=True to _get
- Always shallow copy owner
- Handle hybrid copy in deepcopy
- deepcopy remove no_shared in memo
- deepcopy add copy to memo
- Copy default variable if not passed to execute
- _validate_variable: copy default variable if used
- Copy matrix default value if used
- Store set of containing Compositions
- Rework size argument to accept and validate numpy shapes
Composition
- Inherit Parameters from parent class
- Fix bug storing results
- Do not delete value Parameter
- Remove compiled writeback of matrix during learning
CompositionInterfaceMechanism
- Use standard default_variable assignment
DDM
- Codestyle
DictionaryMemory
- Consolidate default entry creation
Documentation
- Fix table formatting
- Extend short title underlines
- Fix "strong" markup
- Fix literal markup
- Fix Inline emphasis markup
- Fix external links
- Fix inline interpreted markup
- Fix table vs. substitution conflict
- Fix basic rst formatting errors (#2958)
- Rename figure to match docstring reference (#3009)
- Add quotation to pip install (#3051)
- Use pattern rule to execute generator scripts (#3087)
DriftDiffusionAnalytical
- Specify dependence of bias on starting_value, threshold
DriftOnASphereIntegrator
- Fix initializer assignment
- Correct default initializer
EMComposition
- Reduce calls to memory_getter in init
EMStorageMechanism
- Add 'fields' as Parameter
- Do not set value in _execute
- Fix dot-notation access
- Explicitly update field_projection matrices
EMstorageMechanism
- Replace internal use of Parameter.get with _get
Function
- Copy variable on external .function call
- Do not process the value, or reset PRNG when syncing seed
Function_Base
- Don't catch and re-raise ValueError
IntegratorMechanism
- Correct broken size argument (#3046)
MDF
- Condition: handle np.number and np.array types as arguments
- Handle parameters/args in list and dict format
MaskedMappingProjection
- Also set matrix parameter port value
Mechanism
- Use np ones instead of list multiplication
- Copy defaults before executing with them
- Drop beartype decorator on internal function
OptimizationControlMechanism
- Correct non-stateful use of num_estimates
OptimizationFunction
- Make grid stateful
PECOptimizationFunction
- Make initial_seed shared and use context
Parameter
- Fix arg comment
- _set_default_value: add 'directly' to bypass parse/validate
- Bypass any setters when making uninherited
- deepcopy: always deepcopy non-inherited default_value
- Store source and final_source as self
- Faster contains
- getattr: call _parent fewer times
- Replace equivalent code with copy_parameter_value
- _set, _set_value: reformat arg list
- _set: make skip_delivery kwarg explicit
- On set, update compatible numpy arrays in place
ParameterEstimationComposition
- Make seed parameters shared
- Empty results on new run, not clear
ParameterPortList
- Reduce excess slow str formats
Parameters
- Clean up getter dev docs
- Check for alias using name
ParametersBase
- Cache names of attrs that do not exist
- Break throw_attr into separate method
- Do not getattr on parent for missing parameter attrs
ParametersTemplate
- Replace _children with WeakSet
- Add _params check in _is_parameter
Port
- Refactor is_modulated -> has_modulation
Projection_Base
- Copy sender default value if used as default
RecurrentTransferMechanism
- Make recurrent_projection a Parameter (#2940)
Refactor
-
Refactor/emcomposition_softmax_after_dot (#3095)
-
- emcomposition.py
- move softmax operation to after combining weighted dot products
- update use_gating_for_weighting and softmax CONTROL option to work with refactoring
- validate that use_gating_for_weighting is False when learn_field_weights is True
- docstring updates
-
Update Environment.py
-
test_emcomposition.py
- update test_execution
-
Refactor/linearmatrix_matrixtransform (#3101)
-
combinationfunctions(.py) -> transformfunctions(.py)
-
transferfunctions.py:
- rename LinearCombination as MatrixTransform and move to transformfunctions.py
-
transformfunctions:
- MatrixTransform: add operation parameter
-
recurrenttransfermechanism.py
- correct names for standard_outputports ENERGY and ENTROPY
-
lccontrolmechanism.py:
- add keywords for modulable fitzhugh-nagumo params
-
emcomposition.py:
- use MatrixTransform(operation=L0) w/o normalization for retrieval if len(key)==1
-
'EGO Model - CSW with Simple Integrator.py':
- Younes' script corrections, now functions propery!
Report
- Store report parameters on the instance instead of the class
SampleIterator
- Make generate_current_value instance-method-like
Scheduler
- Fix false add_condition replace warning (#3107)
StatefulFunction
- Correct previous_value shape with ragged variable
Testing
- Replace some assert == with numpy.testing.assert_array_equal
- Correct assert shape mismatch
- TestControlTimeScales: correct silent shape mismatch in results
- Check shape of results as well as the values
- Check shape of results as well as the values
- Use assert_array_equal to check array shape and values (#2922)
- Fix AVX512 detection on Numpy>=1.26 (#2932)
- Allow writeback on compiled tests.
- Remove result shape workaround
- Add test of dependency after DDM finished
- Control: split result assertions
- Auto test all numeric values wrapped in np array
- Add missing 'composition' marks (#2967)
- Narrow down the allowed exceptions in compilation fallback test
- Codestyle
- Use numpy prod instead of product
- Use fixture to preserve environment (#2987)
- Add leak check test (#2992)
- Remove leftover debug code
- Test show_graph in the leak test
- Fix show_graph leak and extend the leak test (#2997)
- Skip running ExecutionMode.LLVM instead of xfail
- Clarify failure in xfail test
- Cleanup some xfail tests (#2998)
- Adjust expected result based on scipy version
- Update OCM controller tests
- Use numpy arrays for fixed size arguments
- Use numpy arrays for fixed size arguments
- Use numpy arrays for fixed size arguments
- Use numpy arrays for fixed size arguments
- Cleanup
- Cleanup use of ExecutionMode.Python
- Cleanup
- Add llvm_not_implemented mark.
- Add llvm_not_implemented mark (#3075)
- Use issubclass to check Function class
- Convert dict test arguments to an immutable MappingProxyType
- Use MappingProxyType to pass dict test parameters (#3076)
- Drop unused ctypes import
- Use top level module import of ExecutionMode
- Drop unused import of core.llvm
- Comment out imports only used in commented out code
- Drop unused imports
- Drop unused imports (#3083)
- Move condition construction args to test parametrization
- Enable testing in per-node compiled mode
UserDefinedFunction
- Do not modify cust_fct_params attr on function call
- Rework creation of custom Parameters
- Use external Parameter.set for custom parameters
Broken_trans_deps
- Block beartype==0.17.1 (#2914)
Ci
- Split windows x86 job (#2943)
- Test-release: add --verbose to twine upload
- Test-release: use github cli to create github release
- Test-release: include python 3.10, 3.11, 3.12
Ci/ga
- Use native python architecture for macos python 3.8 job
- Use native python version on macos-arm64 runners (#2953)
- Simplify documentaitons ci jobs (#2957)
- Use single variable to check for self-hosted runners availability (#2965)
- Drop python-3.7 macos documentation build
- Require custom runners to have "enabled" flag (#2989)
Ci/ga/docs
- Use default python-architecture for each platform to build docs
- Represent correct os version in matrix.os
- Generate version matrix dimension based on GA event
Ci/github-actions
- Add python 3.12 docs building jobs
- Add python 3.12 jobs
Composition
- Create a copy of 'controller_condition'
Condition
- Add python interface from graph_scheduler
- Fix pnl-specific names in condition.py stub and all (#3089)
Conditions
- Add When alias for Condition
- Explicitly specify pnl Conditions in all
Conftest
- Clear graph scheduler cache in test teardown
- Inherit the original class of the benchmark fixture (#3093)
Dependabot
- Allow up to 25 open pull requests (#2944)
Deps/fastkde
- Bump minimum version to >=2.0.0
Fitfunctions
- Try using underscore name to construct fastKDE object
Function
- Replace FunctionOutputType.RAW_NUMBER with NP_0D_ARRAY
Functions
- Return numpy array as output for multi-item functions
Ga
- Move wheel/sdist creation to install-pnl action (#3085)
Llvm
- Move matrices of learnable projections to compiled state
- Move learnable matrices from RO params to RW params (#2933)
- Enable state writeback on all compiled Functions and Mechanisms (#2938)
- AutoassociativeProjection is a PNL param of the owning Mechanism (#2941)
- Add cleanup destruction check
- Consolidate construction and sync of compiled structures (#2973)
- Rearrange members of the Mersenne-Twister state structure
- Use int16 instead of int1 for flag in Philox state
- Use known type instead of...
v0.15.1.0
[0.15.1.0] - 2024-02-02
Functions/MemoryFunctions
- Do not use comparisons to empty list
Functions/UniformToNormalDist
- Do not check for scipy at runtime
MDF
- Write_mdf_file: clarify documentation on fmt arg
- Write_mdf_file: fix bug in detecting filename extension
- Add NodeRole.LEARNING as an exclusion for mechanisms
- Fix bug in detecting imported modules in script
PECOptimizationFunction
- Use opt_func instead of self.method to construct optuna study
Port/_parse_port_spec
- Convert value to string to compare to keyword
Security
- Only purge python cache if CODEQL_PYTHON is set (#2888)
Testing
- Use fixed seed for optuna sampler instances
- Seed optuna samplers (#2875)
- Check that running/executing with no inputs produces a warning
- Enable node_spec_types test.
- Add invocation wrapper to use in benchmark fixture
- Only consider first 10 values in checks
- Remove spurious return statement
- Don't use deprecated pytest.warns(None)
- Escape special characters in regexp
- MDF: correct implicit use of locals in exec
- MDF: test equivalence using np assert_array_equal
- MDF: standardize model_backprop object naming
- MDF: rework. share code. correct shared state
- MDF: replace use of json-named functions with mdf-named
- MDF: use tempfile instead of manually named files
- MDF: rename
- Use matrix.modulated or get_mod_matrix() instead of mod_matrix
- Do not apply marks to a fixture (#2901)
Broken_trans_deps
- Block sphinxcontrib-applehelp>=1.0.8
- Block sphinxcontrib-devhelp>=1.0.6
- Block sphinxcontrib-htmlhelp>=2.0.5
- Block sphinxcontrib-serializinghtml>=1.1.10
- Block sphinxcontrib-qthelp>=1.0.7
Ci/ga
- Upload pr_number only once
- Do not upload distfile for version restricted run
- Add version restriction to test artifact name
- Bump versions of actions/{download,upload}-artifact (#2893)
- Print additional CPU and memory info on all runners (#2898)
- Use all logical cores to run tests (#2900)
Ci/github-actions
- Make sure the uploaded artifacts are unique (#2892)
Deps
- Block sphinxcontrib-* that silently depend on sphinx >=5 (#2880)
Github-actions
Llvm
- Codestyle
- Use checked/universal API to access binary structures (#2873)
Requirements
- Update grpcio requirement from <1.60.0 to <1.61.0 (#2855)
- Bump pycuda to <2024 (#2869)
- Update pytest requirement from <7.4.4 to <7.4.5 (#2870)
- Update pillow requirement from <10.2.0 to <10.3.0 (#2872)
- Add scipy to requirements file
- Update beartype requirement from <0.16.0 to <0.17.0 (#2804)
- Update pandas requirement from <2.1.5 to <2.2.1 (#2890)
- Update dill requirement from <0.3.8 to <0.3.9 (#2891)
- Update pytest requirement from <7.4.5 to <8.0.1 (#2896)
Setup
- Remove stale warning filter.
- Error on SyntaxWarnings
Treewide
- Assign values to ".base" attribute of a modulated Parameter
v0.15.0.0
Features
- add handling of partial differentials ("covariates") for BackPropagation learning (#2766)
- support learning nested AutodiffCompositions (#2801)
- support graph-scheduler graph structure conditions (#2864)
- add form of episodic / external memory with EMComposition (#2735)
Fixes
- log: nparray, nparray_dictionary: add report_all_executions option that reports all executions for a given TIME_STEP (#2844)
v0.14.0.0
[0.14.0.0] - 2023-07-26
AutoAssociativeProjection
- Only pass initial_shared 'matrix' to function
Bug Fixes
- Fix for some tests that expect runtime type checks
- Fix some lgtm errors
Component
- Add prefix to autogenerated names in deferred init
- Add predefined prefix to autogenerated names in deferred init (#2664)
- _initialize_parameters: simplify user specified check
- Improve illegal argument detection
- Improve param_defaults
- Fix detecting constructor args during init
- Don't prune args to function init
- Don't try copying defaults with value None
- Fully disallow name when constructor arg present
- Rework constructor argument validation
- Parse to combine alt param specifications
- Skip assigning defaults of aliases
- Add unused learning parameters to compilation blocklist (#2642)
Composition
- Assert for non-nested Composition run without input
- Correct context passing of pathways/add_node
- Correct context passing through add_projection
- Remove non-user-added projections from processing graph
- Fix INPUT roles for ControlMechanism -> inner Composition
ContentAddressableMemory
- Allow specifying selection_function in constructor
- Remove extraneous function instantiation checks
- Correct _parse_distance_function_variable as used in _validate
- _validate: remove function instantiation and default setting
- _validate: check result of each combo of granularity and field_weights
- Make selection_function dependent on distance_function
- _parse_distance_function_variable: use variable argument
ControlMechanism
- Remove extraneous output_ports arg
- Fix control_allocation initialization
- Correct _parse_output_ports
- Remove init parsing of monitor_for_control
- Remove init parsing of control
ControlSignal
- Do not recalculate costs on Port._update (#2722)
CostFunctions
- Use Flags instead of IntFlags for cost function enum
DictionaryMemory
- Reset: handle empty previous_value
Documentation
- Doc fixes on OptimizationFunction
EpisodicMemoryMechanism
- Make memory (_memory_init) a FunctionParameter
GradientOptimization
- Fix potentially uninitialized local variable
- Fix error on default bounds
LCAMechanism
- _validate_competition: fix reference to component name
LearningMechanism
- Remove unused LEARNED_PARAM
MDF
- Function: handle param mdf names for initializers
- Implement FitzHughNagumoIntegrator
OrnsteinUhlenbeckIntegrator
- Avoid producing 3d value (#2590)
Parameters
- Don't suppress AttributeError in _parse/_validate methods
- Rework parse and validation method interface
- Handle Parameters as dependencies
PredictionErrorMechanism
- Pass up only sample and target
SampleIterator
- Fix incorrect use of curly brackets in error strings (#2690)
Testing
- Remove blank line at the end of file
- Correct transfer mech initial_value override test (#2557)
- Add helper to tests that include parallel compiled execution (#2591)
- Add missing composition tags. Remove redundant Scheduler instances. (#2611)
- Extra role tests for pathway ending in control mechanism
- Use np.testing.assert_allclose to check resutls (#2621)
- Use np.testing.assert_equal instead of assert np.all(==)
- Prefer np.testing.assert_equal to assert np.all(==)
- Use np.testing.assert_equal instead of np.all (#2628)
- Convert to use autodiff_mode
- FP32 should only be used in compiled tests
- Check for execution mode PyTorch in test_optimizer specs
- Add helper function to return the first set of learning results
- Test_documentation_models: reenable parametrizations
- Allclose changes
- Test_nested_composition_run_trials_inputs: undo disable test parametrizations
- Test_nested_transfer_mechanism_composition_parallel shape mismatch
- TestRunInputSpecifications test_run_2_mechanisms_reuse_input: fix allclose
- TestRun test_run_2_mechanisms_reuse_input: fix allclose
- TestInputSpecifications test_run_2_mechanisms_reuse_input: fix allclose
- Test_connect_compositions_with_simple_states: fix allclose
- Test_linear_combination_function_in_mechanism: fix allclose
- Test_user_def_func_numpy: match 2d output to 2d input
- Test_LCAMechanism_threshold: fix allclose
- Test_output_ports: fix allclose
- Tests_output_port_variable_spec_composition: fix allclose
- Test_integrator_multiple_input: fix allclose
- TestRunInputSpecifications::test_2_mechanisms_input_5: fix allclose
- Test_assign_value: fix allclose
- Test_buffer_standalone: fix allclose
- Test_example_11: fix allclose
- Test_input_not_provided_to_run: fix allclose
- Test_input_specification_multiple_nested_compositions: fix allclose
- Test_transfer_mech_func: fix allclose
- Test_target_dict_spec_single_trial_scalar_and_lists_rl: fix allclose
- Test_AGTUtility_valid: fix allclose
- Test_connect_outer_composition_to_only_input_node_in_inner_comp_option2: fix allclose
- Test_single_array: fix allclose
- Test_transfer_mech_array_var_normal_array_noise: fix allclose
- Test_reset_run_2darray: fix allclose
- Test_rpy.py test_multilayer: fix allclose
- Test_log: fix allclose shape
- Test_gating_with_composition: fix allclose
- Replace assert np.allclose with np.testing.assert_allclose where tolerance fails
- Replace all unaffected assert np.allclose with np.testing.assert_allclose
- Remove asserts using zip loops where possible
- Adjust expected shape based on execution type
- Adjust shape of expected results based on execution mode
- Assert on results in "heterogenous_variable" tests
- Convert more tests to np.testing.assert_allclose (#2633)
- Tighten tolerance for compiled results (#2653)
- Test_call_after_construction_with_learning_pathway: fix missing assert (#2647)
- Check expected learning results
- Use worksteal xdist balancer (#2670)
- Add a 3rd set of expected results for small drift rate
- Ensure seed change test uses new seed (#2675)
- Use pytest.param id instead of fake parameter
- Drop redundant return statements
- Use full precision expected result instead of changing tolerance
- Skip on CUDA
- Sanitize PEC tests (#2688)
- Don't check newline encoding in the printf test (#2691)
- Extract mechanism values to form homogeneous array
- Illegal kwargs: add missing asserts
- Integrator mech: fix variable->default_variable
- Remove duplicate 'const_data' debug flag
- Add a helper to generate power set
- Add helper to generate power set and use it to test compiler debug options (#2707)
- Style
- Add TransferWithCosts test with all combinations of costs
- Do not include CostFunctions.ALL when constructing power set (#2714)
- Enable GPU tests
- Add for invalid function_params
- Mark em_composition TestExecution as pytorch
- Mark test_import_composition as pytorch
- Use overlooked helper function
- Rename test Component
Autodiff
- Make sure inputs to cross entropy loss are at least 2d for torch<=1.11.x
Autodiff_composition
- Use torch 1.11 with python3.10 and Windows (#2667)
Broken_trans_deps
- Add all python3.10 win32 torch wheels >=1.12.0
- Add cattrs==23.1.1 to broken deps list (#2686)
Ci
- Run all tests using --fp-precision=fp32 (#2629)
- Add run using --benchmark-enable (#2630)
- Add ipython 8.13.0 to blocklist for python <3.9 (#2651)
- Add --forked run to test autogenerated names
- Don't build "base" version of docs using python 3.10 or 3.11
- Don't use latest python on macos for building docs
- Don't use python 3.7.17 on macos to build docs (#2703)
- Disable pytest-xdist in benchmark ci job (#2710)
Components
- Add methods to return/filter projections between components
Dependencies
- Update to numpy<1.24.4 (#2693)
Deps
- Add onnx==1.14.0 to broken_trans_deps (#2663)
- Add pytest-forked to 'dev' requirements
- Restrict contourpy to <1.1.0 on x86 (32-bit) (#2700)
- Restrict pillow to <10.0.0 on x86 (32-bit) (#2716)
Dev_requirements
- Use sharp inequality of pytest-profiling upper bound
Functions/MaxLikelihoodEstimator
- Add support for storing all simulated results
Functions/TransferFunction
- Add support for 'per-item' mode derivative
Github-actions
- Use constraints file instead of pre-installing packages on x86 (#2584)
- Constraint broken transitive dependencies (#2603)
- Add fp32 compilation only test job (#2612)
- Run all tests with --fp-precision=fp32
- Add job running --benchmark-enable
- Add python 3.11 to docs CI
- Bump top python version 3.10->3.11
Github-actions/pnl-ci
- Print numpy and CPU info before running tests
Integratorfunctions
- _parse_initializer: cast initializer to numpy array
Llvm
- Pass number of inputs to 'evaluate' function
- Convert shape mismatch warning to PNLCompilerWarning category
- Use WeakRefDictionary for node wrappers
- Add human readable name to _node_wrapper instances
- Use weak references and proxy objects in _node_wrapper objects (#2613)
- Remove unnecessary data shape checks and workarounds (#2634)
- Update and extend the collection of code generation statistics (#2687)
- Represent integer types as unsigned in ctype
- Only write back shareable data (#2718)
- Add more structure stat messages (#2729)
Llvm/CUDA/function
- Sync stateful params back to CPU at the end of cuda_execute
Llvm/builder_context
- Use proxy object for _node_wrapper owning composition
- Move stats printing to LLVMBuilderContext destructor
- Include 'function' in cache stats for generated LLVM functions
- Collect statistics for number of cached and generated struct types
- Calculate and print cache hit rates
- Clarify output of module scope stats
Llvm/codegen
- E713 test for membership should be 'not in'
Llvm/cuda
- Do not upload inputs to shared memory.
- Do n...
v0.13.0.0
[0.13.0.0] - 2023-01-13
Documentation
- Remove invalid escape sequences (#2531)
MDF
- OutputPort: include shape and type
- Improve handling of more complex Functions
- Set up stateful parameter index handling
- Implement DriftDiffusionIntegrator
Parameters
- Allow validate methods to reference other parameters (#2512)
Testing
- Use the correct execution mode in test_transfer_mech_integration_rate_0_8 (#2471)
- Tests, treewide: Add missing "composition" marks (#2472)
- MDF: make onnx noise generation more flexible
- Drop extra 'monitor' mechanism from the threshold modulation test
- Use numpy instead of python math module
- Use lambda function to get the name of tested function
- Consolidate Buffer Function test
- Use more than one iteration in test using stateful functions
- Run more than one iteration in tests that use stateful Functions
- Consolidate test of different input formats
- Consolidate testing of different mechanism functions
- Run more than one iteration in tests that use integrator mode
- Use 'num_trials' instead of manually calling 'execute'
- Overload 'benchmark' fixture with custom invocation
- Use the benchmark fixture unconditionally
- Use the benchmark fixture unconditionally
- Use the benchmark fixture unconditionally
- Use the benchmark fixture unconditionally
- Use custom benchmark fixture (#2529)
- Don't use the same position in default variable
- Add derivative test when using OUTPUT_MDOE=ALL
- Use keywords instead of hardcoded strings as parameters
- Add type of output to names of SoftMax tests
- Assert that func_mode is only one of the three valid options
- Tests, functions/SoftMax: Don't use nested 'params' dir to set parameters
- Use 'size' instead of 'content_size' in construction
- Check for compiled variant sooner
- Check for warning messages when there's a conflict between mech and function parameter
- Drop 'DECISION_TIME' output port
- Add custom name prefix to all components with default names generated during test collection
- Use custom name prefix for Components instantiated during test enumeration (#2542)
- Do not check for string value of numpy error embedded in MechanismError (#2569)
- Use mac/windows results for numpy>=1.22 and AVX512 CPUs
TransferFunction
- Add support for computing derivatives using base function output (#2538)
Function/SoftMax
- Use correct dimensionality when calculating full Jacobian (#2539)
Functions/DriftDiffusionAnalytical
- Re-associate floating point operations
Functions/ReLU,SoftMax
Functions/SoftMax
- Restore correct computation of derivation
- Add support for 2d inputs to SoftMax derivative (#2534)
- Use "ALL" results to calculate derivative directly
- Use 'squeezed' version of output when calculating Jacobian
Functions/Transfer
- Consider 'bias' parameter in 0 check in ReLU derivative function
Functions/TransferFunction/Angle
- Optimize python version
Functios/ReLU
- Rename 'variable' arguemnt to 'input'
Github-actions
- Add hash of requirements.txt to cache key of built pip packages (#2482)
- Restrict scipy to <1.9.2 on x86 (#2502)
- Use environment files to set outputs (#2506)
- Restrict scikit-learn to <1.1.3 on x86 (#2511)
- Fix setting of outputs
- Consider 'doc_requirements.txt' when generating cache key in doc CI jobs
- Consider 'dev_requirements.txt' when generating cache key in CI jobs
- Fix detection of wheel cache directory location (#2513)
- Restrict statsmodels to <0.13.3 on x86 (#2516)
- Run only the latest instance of the main CI workflows (#2537)
- Check env var to tag selected OSes to run on self-hosted runners (#2546)
- Generalize package name extraction from dependabot branch name (#2566)
Github-actions/codeql
- Skip CI job on pushes that only update documentation (#2560)
Github-actions/coedql
- Run codeql analysis on PRs to devel
Github-actions/install-pnl
- Only check version of a new package if it's in a requirements file
- Restrict jupyter-server to <2 (#2555)
Github-actions/install-pnl/dependabot_pr
- Cleanup installation of the bumped package before installing PNL (#2481)
- Skip package version check for not installed packages (#2483)
Library/AutodiffComposition
- Drop empty docstring (#2567)
Llvm
- Add sin, cos builtins
- Implement compiled Angle and SoftMax derivative Functions (#2528)
Llvm/builtins
- Implement binomial distribution for N==1 (#2552)
Llvm/codegen
- Use visit_Constant instead of visit_{Num,NamedConstant} if available
Maint
- Ignore mdf test autogenerated files (#2527)
Models/Botvinnick
- Use top level import
Registry
- Add configurable prefix to auto generated component names
Requirements
- Restrict modeci_mdf to 64bit cpython (#2473)
- Update pytest requirement from <7.1.3 to <7.1.4 (#2478)
- Update pandas requirement from <1.4.4 to <1.4.5 (#2477)
- Update matplotlib requirement from <3.5.4 to <3.6.1 (#2486)
- Update pandas requirement from <1.4.5 to <1.5.1 (#2488)
- Update autograd requirement from <1.5 to <1.6 (#2493)
- Update pytest-cov requirement from <3.0.1 to <4.0.1 (#2492)
- Update pandas requirement from <1.5.1 to <1.5.2 (#2503)
- Update matplotlib requirement from <3.6.1 to <3.6.2 (#2497)
- Update torch requirement from >=1.8.0,<1.12.0 to >=1.8.0,<1.13.0 (#2504)
- Update pytest-xdist requirement from <2.6.0 to <3.1.0 (#2510)
- Update pytest-benchmark requirement from <3.4.2 to <4.0.1 (#2507)
- Update pint requirement from <0.20.0 to <0.21.0 (#2509)
- Update pillow requirement from <9.3.0 to <9.4.0 (#2515)
- Update pytest requirement from <7.1.4 to <7.2.1 (#2508)
- Update matplotlib requirement from <3.6.2 to <3.6.3 (#2525)
- Update pandas requirement from <1.5.2 to <1.5.3 (#2548)
- Update torch requirement from >=1.8.0,<1.13.0 to >=1.8.0,<1.14.0
- Update torch requirement from >=1.8.0,<1.13.0 to >=1.8.0,<1.14.0 (#2553)
- Update pytest-xdist requirement from <3.1.0 to <3.2.0 (#2554)
- Use upper and lower bound for fastkde (#2561)
- Update pillow requirement from <9.4.0 to <9.5.0 (#2565)
- Bump fastkde from 1.0.19 to 1.0.20 (#2559)
- Update networkx requirement from <2.9 to <3.1 (#2570)
- Update toposort requirement from <1.8 to <1.9 (#2573)
- Update toposort requirement from <1.9 to <1.10 (#2575)
- Update matplotlib requirement from...