Releases: PrincetonUniversity/PsyNeuLink
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...
v0.12.1.0
[0.12.1.0] - 2022-08-17
Testing
- Use np.where instead of opencoding it using map
- Refactor for better code reuse
Functions/UDF
- Use 'dir(builtins)' instead of 'builtins'
Llvm
- Switch compiled 'evaluate' to use composition simulation input (#2466)
Llvm/OptimizationControlMechanism
- Move construction of simulation input out of "evaluate" function
Llvm/cuda/execution
- Use bytes instead of bytearray for RO access to ctype structures
Llvm/execution
- Fix typo "variale" -> "variable"
- Use 'evaluate' function params when constructing simulation input (#2467)
Llvm/helpers
- Reuse type of index variable
Requirements
- Update matplotlib requirement from <3.5.3 to <3.5.4 (#2463)
v0.12.0.1
v0.12.0.0
[0.12.0.0] - 2022-07-27
Component
- Don't exclude _init_args from deepcopy (#2380)
- Set correct Parameter owner on Component deepcopy
Composition
ControlMechanism
- Set function default to Identity
- Set monitor_for_control default to []
DriftOnASphereIntegrator
- Change default dimension to 3 (#2428)
JSON/MDF
- Determine fixed onnx noise values at test time (#2441)
KWTAMechanism
- Set matrix according to tests (#2398)
MDF
- Support v0.3.4; import from MDF classes
- Update interface methods
- Add yaml_summary
- Rename JSONDumpable to MDFSerializable
- Update all documentation from JSON to MDF
- Rename json files to mdf
- Remove manual arg substitution in expressions
MemoryFunction
- Use Buffer _update_default_variable fix
- _update_default_variable: handle ragged arrays
Parameter
- Remove delivery_condition from _additional_param_attr_properties
- Add specify_none flag
Parameters
- Fix Parameter inheritance when setting attributes (#2402)
- Allow specification in inner class or init
Testing
- Add checks for ControlMechanism allocation parameter
- Make sure all 'cuda' marked tests are also marked 'llvm'
- Add cmdline option to select compiler fp precision
- Add fp32 variant
- Consolidate matrix ops tests
- Drop fixed dimension vector matrix multiply
- Use pnlvm.ir instead of importing llvmlite ir again
- Convert arguments to the correct fp precision
- Consolidate spelling of 'Philox' to easily identify philox tests
- Convert parameters to correct type in PTX tests
- Parameters: add check for _additional_param_attr_properties
- Make sure inputs are representable in fp32
- Use higher tolerance when running in fp32 mode
- Refactor test parameters
- Add fp32 expected values
- Add Philox fp32 results
- Remove dead code
- Add fp32 results
- Add testing for fp32 results and fp32 precision
- Adjust probabilities for storage/retrieve
- Pass PRNG type as explicit test parameter
- Add special case result for PTX fp32 test
- Refactor tests to use pytest.param(id=)
- MDF: correct os-specific filepaths
Components
- Add default_variable as constructor_argument where missing
- Add check_user_specified decorator for _user_specified
Function/OptimizationFunction
- Allow array based SampleIterator in compiled code path
- Move Python specific code to non-compiled else branch
Functions/GridSearch
- Rename '_run_grid' -> '_search_grid'
- Refactor parallel compiled path to reuse existing '_evaluate' implementation
- Refactor parallel compiled path to reuse existing '_evaluate' implementation (#2445)
Functions/OptimizationFunction
- Disable aggregation in compiled mode
Github-actions
- Use v0.0.0.0 as dummy tag to compare documentation on pull requests (#2376)
- Bump actions/github-script from 5 to 6 (#2317)
- Bump actions/download-artifact from 2 to 3 (#2378)
- Bump actions/setup-python from 3 to 4 (#2425)
- Install latest pip and wheel when testing new dependencies (#2444)
- Drop python3.7 macos job (#2453)
Github-actions/install-pnl
- Fix lookup of dep packages (#2392)
Github-actions/pnl-ci-docs
- Skip removing zero tag if the tag creation was skipped (#2393)
Github-actions/pnl-install
- Check if a newly bumped dependency is rolled back during installation (#2390)
Llvm
- Split allocating new space in params with history from populating it
- Add support for different floating point precision conversions
- Add option to use 32bit floating point representation (#2400)
- Add support for more SoftMax output types (#2418)
- Always emit debuginfo with LLVM IR
- Cleanup codegen of mechanisms that modify function return value (#2421)
- Improve parallel execution handling (#2443)
Llvm/ConditionGenerator
- Refactor structure/initializer methods to not use type to detect composition
Llvm/UDF
- Reuse metadata from variable builder in codegen builder
- Update debug code location for every parsed AST node
- Add detailed line debugging information to generated IR (#2419)
Llvm/builder_context
- Use llvm.ir module directly
- Simplify debug info handling
- Use load_extract_scalar_array_one helper to load PRNG seed
Llvm/builtins
- Split 'is_close' builtin implementation by type
- Change 'tanh' formula to better handle large input
- Change 'coth' formula to better handle large input
- Change 'csch' formula to better handle large input
- Drop dead code
Llvm/debug
- Print parallel execution time when "time_stat" is set
Llvm/execution
- Add support for structs to _element_dtype
- Check for errors in jobs submitted to thread pool executor
Mechanism/ControlMechanism
- Drop DefaultAllocationFunction
- Remove obsolete workaround
Mechanisms/ControlMechanism
- Drop unused import of psyneulink.llvm
Requirements
- Update pillow requirement from <9.1.0 to <9.2.0 (#2370)
- Update pandas requirement from <=1.4.1 to <1.4.3 (#2373)
- Update autograd requirement from <=1.3 to <1.5 (#2379)
- Update graphviz requirement from <0.20.0 to <0.21.0 (#2389)
- Update networkx requirement from <2.8 to <2.9 (#2383)
- Update pytest requirement from <7.1.2 to <7.1.3 (#2396)
- Update psyneulink-sphinx-theme requirement (#2426)
- Update graph-scheduler requirement (#2391)
- Update pillow requirement from <9.2.0 to <9.3.0 (#2436)
- Update pandas requirement from <1.4.3 to <1.4.4 (#2434)
- Update elfi requirement from <0.8.4 to <0.8.5 (#2427)
- Update matplotlib requirement from <3.5.2 to <3.5.3 (#2403)
- Update torch requirement from <1.9.0 to <1.12.0 (#2446)
- Update pint requirement from <0.18 to <0.20 (#2447)
- Update llvmlite requirement from <0.39 to <0.40 (#2451)
- Bump pycuda to <2023 (#2452)
- Update numpy requirement from <1.21.4 to <1.21.7 (#2454)
Utilities
- Combine signature caches
Release v0.11.0.0
What's Changed
- requirements: update grpcio requirement from <1.35.0 to <1.41.0 by @dependabot in #2115
- requirements: update grpcio-tools requirement from <1.35.0 to <1.41.0 by @dependabot in #2116
- requirements: update rich requirement from <10.10,>=10.1 to >=10.1,<10.11 by @dependabot in #2123
- requirements: update pytest-xdist requirement from <2.4.0 to <2.5.0 by @dependabot in #2124
- tests/models/Predator-Prey: Use attractor/repeller forces to select the next move by @jvesely in #2121
- github-actions(deps): bump actions/github-script from 4.1 to 5 by @dependabot in #2125
- requirements: update toposort requirement from <1.7 to <1.8 by @dependabot in #2129
- treewide: codestyle fixes by @jvesely in #2131
- requirements: update rich requirement from <10.11,>=10.1 to >=10.1,<10.12 by @dependabot in #2126
- Reset random state on seed change by @jvesely in #2130
- Use IntFlag for cost functions by @jvesely in #2133
- Parameters: exclude more types from copying by @kmantel in #2134
- requirements: update pytest-cov requirement from <2.12.2 to <3.0.1 by @dependabot in #2135
- UDF improvements by @kmantel in #2132
- llvm: Add missing functionality to OCM by @jvesely in #2137
- llvm: Add helper function to retrieve and optionally reseed random state by @jvesely in #2138
- github-actions: Restrict main CI run to macos-10.15 by @jvesely in #2139
- functions: _is_identity: add option for defaults by @kmantel in #2136
- llvm, mechanism: Use Parameter class to build a list of needed parameter ports by @jvesely in #2140
- requirements: update rich requirement from <10.12,>=10.1 to >=10.1,<10.13 by @dependabot in #2141
- SharedParameter: improve source detection by @kmantel in #2142
- requirements: update grpcio requirement from <1.41.0 to <1.42.0 by @dependabot in #2127
- requirements: update grpcio-tools requirement from <1.41.0 to <1.42.0 by @dependabot in #2128
- SharedParameter: direct get_previous, get_delta to source Parameter by @kmantel in #2143
- llvm, ports/ControlSignal: Always call 'combine_costs' when calculating costs by @jvesely in #2146
- LCAMechanism: allow user-input integrator_function by @kmantel in #2148
- requirements: update sphinx requirement from <4.1.3 to <4.2.1 by @dependabot in #2120
- github-actions(deps): bump actions/checkout from 2.3.4 to 2.3.5 by @dependabot in #2149
- requirements: update pillow requirement from <8.4.0 to <8.5.0 by @dependabot in #2150
- requirements: update elfi requirement from <0.8.1 to <0.8.3 by @dependabot in #2147
- github-actions: Bump python-3.{8,9} to macos-latest. by @jvesely in #2151
- requirements: update graph-scheduler requirement from <=1.0.0rc2 to <1.0.1 by @kmantel in #2153
- requirements: update numpy requirement from <1.21.3 to <1.21.4 by @dependabot in #2152
- functions/TransferWithCosts: Change default cost options to CostFunctions.NONE by @jvesely in #2156
- github-actions: Drop maxprocesses settings by @jvesely in #2158
- github-actions: Add code coverage job by @jvesely in #2159
- github-actions: Do not check for GITHUB_TOKEN env var when uploading coveralls result by @jvesely in #2163
- github-actions: Allow RW permissions for jobs updating the online docs by @jvesely in #2160
- Component: add all_dependent_parameters by @kmantel in #2162
- github-actions(deps): bump actions/checkout from 2.3.5 to 2.4.0 by @dependabot in #2165
- Refactor/pec by @jdcpni in #2166
- github-actions/install-pnl: Support persistent runners by @jvesely in #2167
- maint: remove freeze.txt by @kmantel in #2182
- github-actions/release: Consolidate by @jvesely in #2185
- Refactor/controlmech and ocm by @jdcpni in #2186
- Docs/comp ctlmech ocm pec by @jdcpni in #2187
- llvm: Initialize builder context and jit engines on demand by @jvesely in #2188
- github-actions/pnl-ci-docs: Force creation of temporary version tag by @jvesely in #2192
- llvm: Add support for Philox PRNG by @jvesely in #2194
- tests/ddm: Disable Bogacz test with Philox prng by @jvesely in #2195
- github-actions/comment: Add PR write permission and use github.rest.* for rest API by @jvesely in #2196
- llvm: Check for correct use of get_{param,state}_ptr helpers by @jvesely in #2198
- tests/models/predator-prey: Restore checks of results by @jvesely in #2202
- llvm, ports/ControlSignal: Add support for CostFunctions.NONE by @jvesely in #2203
- tests/predator-prey: Mark the 101 level test instance as 'stress' test by @jvesely in #2204
- tests/llvm: Add Philox PRNG tests with different seeds by @jvesely in #2205
- pnl-ci: build docs-only branches by @kmantel in #2206
- requirements: update psyneulink-sphinx-theme requirement from <1.2.2.2 to <1.2.3.1 by @dependabot in #2201
- GatingMechanism: properly set gating_allocation as value alias by @kmantel in #2191
- ControlProjection: correct control_signal to SharedParameter by @kmantel in #2212
- github-actions(deps): bump actions/setup-python from 2.2.2 to 2.3.0 by @dependabot in #2209
- llvm: Cleanup execution of compiled functions by @jvesely in #2214
- github-actions(deps): bump actions/cache from 2.1.6 to 2.1.7 by @dependabot in #2213
- setup/coverage: Correct option name multiprocess -> multiprocessing by @jvesely in #2219
- github-actions(deps): bump actions/setup-python from 2.3.0 to 2.3.1 by @dependabot in #2215
- tests/show_graph: Strip whitespace before comparing expected dot output by @jvesely in #2220
- requirements: update graphviz requirement from <0.18.0 to <0.20.0 by @dependabot in #2218
- Refactor/ocm/state input ports by @jdcpni in #2221
- Misc/ocm/docs and tests by @jdcpni in #2223
- requirements: update grpcio-tools requirement from <1.42.0 to <1.43.0 by @dependabot in #2210
- Docs/ocm/revs by @jdcpni in #2225
- Docs/ocm/revs by @jdcpni in #2227
- tests/report: cleanup by @jvesely in #2228
- Feat/ocm/random params by @jdcpni in #2231
- github-actions(deps): bump actions/upload-artifact from 2.2.4 to 2.3.0 by @dependabot in https://github....