Skip to content

Releases: PrincetonUniversity/PsyNeuLink

v0.15.3.0

10 Dec 05:42
1ea4407
Compare
Choose a tag to compare

[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()
  • 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

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
  • 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

  • Update optuna requirement from <4.1.0 to <4.2.0 (#3110)
  • Update grpcio requirement from <1.68.0 to <1.69.0 (#3120)
  • Update pytest-profiling requirement from <1.8.1 to <1.8.2 (#3135)
  • Update pytest requirement from <8.3.4 to <8.3.5 (#3138)

v0.15.2.0

10 Dec 05:38
cc0a663
Compare
Choose a tag to compare

[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...
Read more

v0.15.1.0

03 Feb 01:35
9b68ab8
Compare
Choose a tag to compare

[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

  • Bump actions/download-artifact from 3 to 4 (#2865)
  • Bump actions/cache from 3 to 4 (#2879)

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

16 Dec 02:07
f062be4
Compare
Choose a tag to compare

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

27 Jul 03:06
b8cd10e
Compare
Choose a tag to compare

[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...
Read more

v0.13.0.0

14 Jan 04:04
06f3006
Compare
Choose a tag to compare

[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...
Read more

v0.12.1.0

18 Aug 05:34
86c70a9
Compare
Choose a tag to compare

[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

06 Aug 03:06
dbdba04
Compare
Choose a tag to compare

[0.12.0.1] - 2022-08-05

Github-actions/install-pnl

  • Move upgrade of pip+wheel to its own step (#2461)

Requirements

  • Update modelspec requirement from <0.2.6 to <0.2.7 (#2458)

Treewide

  • Add missing whitespace after keyword (#2460)

v0.12.0.0

28 Jul 04:04
d1c854d
Compare
Choose a tag to compare

[0.12.0.0] - 2022-07-27

Component

  • Don't exclude _init_args from deepcopy (#2380)
  • Set correct Parameter owner on Component deepcopy

Composition

  • Fix TERMINAL node detection (#2384)
  • Add_projection: also detect feedback from node roles (#2429)

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

02 Apr 00:11
7072684
Compare
Choose a tag to compare

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....
Read more