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 not use shared memory for inputs (#2731)
Llvm/execution
- Generalize parameter writeback function (#2643)
- Improve writeback handling of history and empty structures
- Do not write back "random_state" parameter
- Do not construct numpy arrays of empty structures
- Use "state" instead of context/CTX in debug print
- Print information about composition input struct if enabled
- Print information about "evaluate" output structure if enabled
Registry
- Apply prefix to autogenerated names for the first instance (#2640)
Requirements
- Bump minimum numpy version to 1.19.0 (#2583)
- Update pytest requirement from <7.2.1 to <7.2.2 (#2586)
- Update pandas requirement from <1.5.3 to <1.5.4 (#2588)
- Update pytest-xdist requirement from <3.2.0 to <3.3.0 (#2599)
- Update matplotlib requirement from <3.6.4 to <3.7.1 (#2602)
- Update toposort requirement from <1.10 to <1.11 (#2605)
- Update pytest requirement from <7.2.2 to <7.2.3 (#2606)
- Update matplotlib requirement from <3.7.1 to <3.7.2 (#2607)
- Update elfi requirement from <0.8.5 to <0.8.7 (#2608)
- Update networkx requirement from <3.1 to <3.2 (#2620)
- Update pillow requirement from <9.5.0 to <9.6.0 (#2618)
- Update pandas requirement from <1.5.4 to <2.0.1 (#2619)
- Use sharp inequality for bear type upper bound
- Fix dill dependency upper bound
- Use sharp inequality for leabra-psyneulink upper bound
- Sort alphabetically
- Add protobuf to dependency list
- Drop grpcio-tools
- Use sharp upper bounds and maintain alphabetical order (#2624)
- Update pytest requirement from <7.2.3 to <7.3.1 (#2627)
- Update beartype requirement from <0.13.0 to <0.14.0 (#2625)
- Update pytest requirement from <7.3.1 to <7.3.2 (#2635)
- Update pandas requirement from <2.0.1 to <2.0.2 (#2646)
- Update graph-scheduler requirement (#2638)
- Update fastkde requirement (#2649)
- Update torch requirement from >=1.8.0,<1.14.0 to >=1.8.0,<2.1.0 (#2652)
- Update beartype requirement from <0.14.0 to <0.15.0 (#2658)
- Update llvmlite requirement from <0.40 to <0.41 (#2657)
- Use exclusive upper bound for optuna (#2661)
- Update pint requirement from <0.21.0 to <0.22.0 (#2655)
- Update pytest-xdist requirement from <3.3.0 to <3.4.0 (#2669)
- Update numpy requirement from <1.22.5 to <1.23.6
- Update numpy requirement from <1.22.5 to <1.23.6 (#2672)
- Update pytest-cov requirement from <4.0.1 to <4.1.1 (#2678)
- Update pandas requirement from <2.0.2 to <2.0.3 (#2682)
- Update numpy requirement
- Update optuna requirement from <3.2.0 to <3.3.0 (#2683)
- Update grpcio requirement from <1.43.0 to <1.56.0 (#2676)
- Update pytest requirement from <7.3.2 to <7.3.3 (#2696)
- Update autograd requirement from <1.6 to <1.7 (#2704)
- Update grpcio requirement from <1.56.0 to <1.57.0 (#2705)
- Update pytest requirement from <7.3.3 to <7.4.1 (#2706)
- Update pandas requirement from <2.0.3 to <2.0.4 (#2708)
- Update pillow requirement from <9.6.0 to <10.1.0 (#2715)
- Update matplotlib requirement from <3.7.2 to <3.7.3 (#2719)
- Update fastkde requirement (#2747)
Setup
- Add Python 3.11 to the list of supported versions
Torch
- Check status of torch numpy bindings instead of specific version
Treewide
- Inherit all component Exceptions from ComponentError (#2595)
Utilities
- Handle numpy 1.24 rugged arrays
Warnings
- Ignore PNLInternalWarning by default
Wip
- Fit evaluate
{dev,tutorial}_requirements
- Use sharp inequality for jupyter upper bound