{"push_id":2461437524,"size":2,"distinct_size":2,"ref":"refs/heads/feat/composition/with-merged-devel","head":"07b31bfb833904e99b4c523d917aa8825e8bb983","before":"6d7e483e623018c63bd3e60a125f710a9be29e54","commits":[{"sha":"0c89ea547e456095fcc7cb47b830cb7b902d4e72","author":{"name":"kmantel","email":"203058e978e1fd101beebaea9bb62030a7c6e413@princeton.edu"},"message":"Merge branch 'devel' into feat/composition/with-merged-devel\n\n* devel:\n  Feat/mechanism/input target label dicts (#751)\n  Scheduling: fix bug where termination conditions persisted across calls to run\n  tests,function/LinearCombination: Add tests with absent parameters\n  test,function/LinearCombination: Rename second test function to prevent overwriting results\n  • Context (#746)\n  Refactor/context/deprecate init status (#745)\n  Refactor/context/structured (#744)\n  Fix/function/stability (#743)\n  • IntegratorMechanism (#742)\n  Feat/context/time (#740)\n  Feat/context/time (#739)\n  Image Fix (#738)\n  finally fixed image (#737)\n  Image Fix (#736)\n  Example Fix (#735)\n  Linear combination fix (#734)\n  Feat/component/execution count (#733)\n  jvesely/linear_combination_function_refactor (#732)\n  Refactor/project/context rev 2 (#731)\n  Refactor/system/show graph structure options (#730)\n  • System (#729)\n  Feat/mechanism/show structure (#728)\n  Feat/mechanism/show mechanism (#727)\n  jvesely/linear_combination (#724)\n  creating a property for TransferMechanism's integrator_mode so that the mechanism can switch integrator mode on and off\n  Fix/function/udf examples (#722)\n  • Function (#717)\n  Refactor/function/udf (#716)\n  Refactor/mechanism and output state/mech params dict added (#715)\n  Docs/output state/clean up (#714)\n  Clean up/function/softmax one hot (#713)\n  Name/project/replace assign index calculate (#711)\n  Fix/controlmechanism/assign as controller jdc (#705)\n  Feat/function/one hot cleanup (#704)\n  Feat/function/one hot (#703)\n  adding a pytest for the clear_log method\n  updating output of nparray_dictionary when there are no entries from None to an empty OrderedDict\n  Tests/llvm devel sync (#684)\n  removing show graph pdfs from tests folder\n  revising the show_graph pytests to call '_get_label' as a proxy for whether show_graph with dimensions is working\n  moving _get_label helper function outside of show_graph method, so that it can be accessed on its own\n  fixing bug in show_graph(show_dimensions=True) by taking np.atleast_1d of output_state.value\n  • LearningProjection   docstring rev (to include error_function)\n  Feat/process/learning objective mech (#698)\n  Feat/ddm/selected input array (#697)\n  Feat/ddm/selected input array (#695)\n  user_params and function_params now look at parameter state values (rather than param base values), and are updated whenever mechanisms update their parameter states\n  adding pytests that call show graph after creating various types of systems -- may refactor these to call the individual methods of show_graph\n  removing system graph pdfs\n  removing show_dimensions=True from call to show_graph in GilzenratModel because it generates an error\n  updating how valus are retrieved from log in Nieuwenhuis model (based on addition of Pass to log)\n  Fix/system/learning ends before terminal (#692)\n  Fix/system/learning ends before terminal (#691)\n  Revert \"Merge branch 'master' into fix/system/learning_ends_before_terminal\"\n  -\n  • ControlMechanism   _instantiate_control_signals:  debugged OWNER_VALUE assignment\n  • Scripts/Examples   Rumelhart Semantic Network: updated with step function\n  • System   _instantiate_learning_graph(): fixed bug in which learning failed to     be instantiated for a System in which the last Mechanism in a     learning sequence was not the TERMINAL Mechanism of the System.\n  • System   _instantiate_learning_graph(): fixed bug in which learning failed to     be instantiated for a System in which the last Mechanism in a     learning sequence was not the TERMINAL Mechanism of the System.\n  • OutputState   docstring revs\n  • OutputState   docstring revs\n  fixing documentation formatting mistake\n  continuing to add pytests and doc fixes for clip on transfer mechanism types\n  allowing lca to execute function over entire variable, not just first item\n  fixing documentation for clip\n  continuing to add error messages to reinitialize\n  allowing smoothing factor to be an integer (formerly 1.0 and 0.0 were allowed but 1 and 0 were not)\n  removing typecheck on learning mechanism's default_variable\n  adding exception in UDF so that function can be called without params and context\n  correcting error message for initial_value validation on transfer mechanism\n  fixing bug in reinitialize on arrays (needed np.atleast_2d when setting intial_value because it is compared to variable)\n  -\n  • OutputState   docstring revs\n  Refactoring of OutputState to support flexible assignment of its variable attribute.\n  Revert \"-\"\n  Revert \"-\"\n  Revert \"-\"\n  -\n  adding pytests for specific reinitialize cases that were not covered, and adding error messages that were missing for some of them\n  -\n  fixing documentation typo: integration_method was mistakenly called integration_method_FHN in docs\n  -\n  -\n  -\n  -\n  -\n  -\n  Reworking Montague, Dayan, and Sejnowski model documentation.\n  -\n  Merge branches 'bug/parsing/input_states-use-value' and 'feat/DDM/value_based_version_input_state' of https://github.com/PrincetonUniversity/PsyNeuLink into feat/DDM/value_based_version_input_state\n  Merge branches 'bug/parsing/input_states-use-value' and 'feat/DDM/value_based_version_input_state' of https://github.com/PrincetonUniversity/PsyNeuLink into feat/DDM/value_based_version_input_state\n  -\n  -\n  -\n  -\n  -\n  -\n  • Utilities   - recursive_update():  added non-destructive option that preserves                          any non-empty entries in destination dict\n  -\n  -\n  -\n  • OutputState   this version implements OutputState.variable as a property   that returns _parse_output_state_variable()\n  • OutputState   this version implements OutputState.variable as a property   that returns _parse_output_state_variable()\n  -\n  -\n  -\n  -\n  -\n  -\n  adding pytests for invalid target specifcation to confirm that the proper error messages are generated\n  • OutputState   assign function now expects dict as argument - WORKING\n  adding more pytests to confirm that convenience notations and combinations of function and list target specs all run\n  documenting targets and adding some checks to adjust targets: verify that num_targets = num_inputs, and ignore num_targets in the case of function specifications (because a new value is generated on each trial)\n  -\n  -\n  -\n  -\n  • OutputState   - implemented assign that takes assign_params_dict as arg\n  Fix/output state/assign backward compat (#676)\n  • OutputState   added backward compatibility   docstring: document replacement of calcuate/CACULATE with assign/ASSIGN\n  • Project, OutputState   replace calcuate/CACULATE with assign/ASSIGN\n  in progress: refactoring function specification of target spec to be an option within the dictionary specification, rather than on its own\n  • Project, OutputState   replace calcuate/CACULATE with assign/ASSIGN\n  • Project, OutputState   replace calcuate/CACULATE with assign/ASSIGN\n  Feat/ddm/input state as array (#674)\n  revising documentation for target specification\n  cleaning up a typo in target_spec_parsing (comparator mechanism was referenced where it should have been terminal mechanism)\n  moving call to _check_args in BackProp to before the error matrix is updated in order to avoid a validation bug\n  adding pytests for target spec convenience notations\n  adding run to rumelhart tests (previously only created systems)\n  Merge branches 'clean_up/function_and_system/backprop_and_show_graph' and 'devel' of https://github.com/PrincetonUniversity/PsyNeuLink into clean_up/function_and_system/backprop_and_show_graph\n  revising how target input state values are assigned in system's execute_learning\n  adding a simple multilayer learning pytest\n  refactor execute and _execute methods\n  defaults: remove post-hoc conversion of defaults variable\n  Component: don't convert defaults variable on calls to validate a variable\n  parsing: add initial_value parser\n  parsing: add generic argument parser used as default if none specified\n  Component: add method to parse user inputted variable to useable/standard form\n  utilities: handle nonuniform objects better when converting to numpy arrays\n  control: refactor handling of allocation*\n  projections: refactor sender instantiation to avoid directly setting instance default variable\n  clean up input_states handler\n  rename input_states arg parser to handler\n  maint: add comments to separate handler, parsing, and validation methods\n  maint: remove unused PROJECTION_SENDER_VALUE\n  TransferMechanism: use standard form of setting default variable\n  utilities: change number detection to accept any number, not just int and float\n  OutputState: when variable not specified to constructor, pass up another value\n  make self.variable read only (we should not be using it for logic)\n  replace calls to self.variable to proper self.instance_defaults.variable\n  validation: remove extraneous check for ClassDefaults.variable\n  ClassDefaults: make RecurrentTransferMechanism default require 2d variable because it takes an AutoAssociativeProjection that uses a LinearMatrix that requires 1D\n  Distance: fix validation assumption that items of passed variable are iterable\n  ClassDefaults: correct and consolidate\n  utilities: add method to produce a value for length calls when len() fails\n  utilities: add function to determine whether something is iterable\n  Integrators: handle initializer like variable in Components\n  Function: standardize default_variable assignments\n  ProcessingMechanism: use standard assignment of default variable\n  DDM: use standard assignment of default variable\n  ensure default_variable auto sets to dtype float\n  combine handling of default_variable/size to create instance_defaults.variable in Component.__init__\n  utilities: allow list->array element conversion to typecast internal items\n  validation: fix validate_variable crashes on certain variable types\n  utilities: add helper method to determine if an object contains a single value\n  rename variable->default_variable\n  Clean up/function and system/backprop and show graph (#671)\n  Clean up/learning/misc (#670)\n  Clean up/learning/misc (#669)\n  Clean up/learning/misc (#668)\n  Fix/transfermechanism/noise function (#667)\n  Fix/transfermechanism/clip (#666)\n  Refactor/modulatory signals/linear default function (#665)\n  Refactor/learning/heterovergent (#664)\n  in progress - refactoring adjust_target_dict method to validate all candidate targets and confirm that all mechanisms provided the same number of targets\n  Tests/mechanism/hebbian learning (#663)\n  Docs/function/hebbian (#662)\n  Docs/function/hebbian (#661)\n  updating pytest expected values based on changes to log output\n  adding Pass to log output and updating pytests accordingly\n  Fix/learning/hebbian (#659)\n  swapping all log references to 'simple_time' with the full 'time', and removing old code which handled time stamp duplicates\n  in progress - refactoring target spec/validation to work the same way as input spec/validation\n  renaming object --> component in _adjust_target_dict()\n  updating pytests to match RecurrentTransferMech switch from full matrix to hollow matrix; changed expected output or set auto = 1 to preserve old expected output, depending on type of test\n  setting default matrix of a RecurrentTransferMechanism to a hollow matrix, and updating docs to be clearer about how auto, hetero, and matrix combine/overwrite each other when multiple arguments are specified\n  renaming object --> component in _validate_targets method to avoid shadowing python built-in\n  updating pytest expected results to match increment change in log\n  log pytest for a mechanism that is scheduled to run many times in a row\n  changing increment size on log's time_step workaround\n  temporary workaround for timestep values: incrementing first decimal of timestep\n  revising log tests for new time_step notation\n  temporary workaround for timestep values: incrementing first decimal of timestep\n  revising parse_entries_for_time_values method on log so that it edits the time values in the log items directly, rather than maintaining a separate list of modified time values\n  setting axis=1 on calls to np.sum and np.product in Reduce function and adding tests for this function\n  documentation typos\n  documenting reinitialize on mechanism\n  continuing to add tests and docs for reinitialize\n  fixing bugs that prevented initialize method on system from ever executing, and adding pytests for it now that it works\n  revising outdated TransferMechanism docs for reinitialize\n  continuing to add tests to highlight differences between calling reinitialize on a mechanisms and on a function\n  adding nparray_dictionary to docs and revising nparray to use the same helper methods as nparray_dictionary\n  Time: fix bug where RUN counter would not be incremented on new runs\n  fixing (temporarily) time_step bug in nparray_dictionary; reorganzing nparray_dictionary into methods that can be reused by nparray\n  refactoring log to have a dictionary option and writing tests for it\n  beginning to add a dictionary alternative to the options for whats returned by the log\n  more calls to _dealias_owner_name required in order to create log.nparray\n  fixing bug in log: needed to switch between 'value' and mechanism name in several loops in order to assemble log.nparray\n  -\n  Feat/rl/for mads (#652)\n  Feat/rl/for mads (#651)\n  adding more pytests for reinitialize and fixing reinitialize bugs; beginning to update documentation\n  adding pytests for reinitializing at both function and mechanism level; cleaning up mistakes in reinitialize() methods along the way\n  Merge branch 'devel' of https://github.com/PrincetonUniversity/PsyNeuLink into refactor/Projection/Context_devel\n  adding a reinitialize method on mechanisms, which calls reinitialize on its function or integrator_function, then updates the mechanism's value and output states\n  beginning to refactor reinitialize as a method on integrator functions\n  Removed Print Statements (#650)\n  cleaning up documentation to match how LinearMatrix works in all cases\n  typo in linear matrix function validation\n  simplifying non-projection branch of validation on LinearMatrix function and adding more pytests\n  default_variable: let argument override input_states variable spec if compatible\n  adding pytests for possible combinations of variable and matrix specifications for LinearMatrix as a function of a mechanism\n  adding validation comparing matrix to variable when LinearMatrix function is called by a mechanism; creating square full connectivity matrix that matches variable when matrix is not specified\n  tutorial: reenable graph drawing; requires graphviz package\n  tutorial: clear outputs\n  Lena Program 1 Bugfix (#648)\n  Hebbian learning fix (#647)\n  User defined function updates (#646)\n  adding working version of LinearMatrix function pytest (only works because default_variable is specified on both the mechanism and the function)\n  fix input_states argparsing to not be dependent on default_variable or size args\n  tests: ensure leabra tests get skipped if module is not available\n  splitting linear matrix function's validation into two branches because matrix is handled differently when the function is called by a projection vs a receiver\n  docstring wording change\n  Docs/models/title changes (#645)\n  Docs/nieuwenhuis/edits (#644)\n  adding pytest for ProcessingMechanism with LinearMatrix function to begin debugging why this fn only works in Projections\n  removing unrestrictedtransfermechanism file because this mechanism is now called ProcessingMechanism and does not need its own file\n  adding parameter state docs examples back in with doctest SKIP\n  revising proccessing mechanism docs because it is not an executable mechanism (not just an ABC)\n  renaming UnrestrictedProcessingMechanism --> ProcessingMechanism and moving code into processingmechanism.py (which formerly only contained ProcessingMechanism_Base\n  Leabra Update (#642)\n  DDM: update is_finished to work on functions with any dimensional variable\n  skipping transfer mechanism doc tests\n  skipping transfer mechanism doc tests\n  minor documentation changes -typos and formatting mistakes\n  reorganizing integrator mechanism pytests for reinitialize\n  overwriting AGTUtilityIntegrator's reinitialize property - requires custom reinitialization of short term and long term utility\n  overwriting FHNIntegrator's reinitialize property - requires custom reinitialization of v, w, time, value\n  overwriting reinitialize property on DriftDiffusion Integrator so that time can also be reset\n  documenting reinitialize on all Integrator functions and fixing a typo in transfer mechanism docs (initial_value --> initializer)\n  continuing to add docs and examples for reinitialize, and cleaning up TransferMechanism docs along the way\n  fixing tutorial indexing bug\n  refactoring is_finished as a property so that it is always up to date, even when values change in between executions (i.e. if threshold was crossed and then reinitialize was used)\n  fixing bug in transfer mechanism documention examples (np.array typo)\n  renaming reset_intializer --> reinitialize\n  adding unrestricted mechanism pytests to confirm that mechanism can be constructed and executed with any function -- identified two exceptions (linear matrix and back prop)\n  adding a new mechanism that has no restrictions on which functions can be used\n  commenting out show graph lines in tutorial for now because graphviz is not imported on testing server\n  adding updated version of tutorial from Justin\n  Defaults*: fix class structure addressing bugs\n  revising transfer mechanism documentation -- 'creating' section\n  commenting out show_graph in EVC gratton pytest so that this line does not run on Jenkins\n  adding TransferMechanism pytests to verify previous_value persists over multiple runs/executions AND previous_value resets whenever reset_initializer is used\n  edited  NieuwenhuisModel docs\n  tutorial: remove old version - new version is in tutorial/ dir\n  tutorial: support execution on mybinder.org\n  tutorial: support execution on mybinder.org\n  tutorial: remove old version - new version is in tutorial/ dir\n  • Niewenhuis model   - docstring edits\n  -\n  adding integrator_mode and integrator_function attr documentation for all transfer mechanism types\n  revising outdated documentation for transfer mechanism noise\n  fixed bug in plotting Nieuwenhuis Model\n  updated Nieuwenhuis documentation\n  adding attrs that were missing from LCA mechanism docs and revising related documentation\n  Scripts: clean up\n  Functions: add UniformToNormalDist to top-level psyneulink module; update docs\n  revising explanation of user_params\n  revising explanation of user_params\n  revising parameter state documentation\n  adding Markus' Nieuwenhuis documentation, plus figures and some .rst formatting\n  Functions: replace internal calls to find owner's name with a property\n  Component: make string version of *defaults classes be sorted\n  removing parameter state example from file completely (tried commenting it out originally)\n  removing parameter states example from documentation because it may be the reason parameter state tests are failing\n  renaming 'Core Configurable Attributes' --> 'Core Structural Attributes' in Component documentation\n  Refactor/system/controller (#627)\n  Fix/controlmechanism/assign as controller (#625)\n  • Log (#624)\n  fixing typo in doctest (parameter state values)\n  adding a docs example which walks through how a mechanism parameter and a function parameter and their mod_ versions change in value\n  BogaczEtAl: use better numpy method for floating point warning handling\n  utilities: update compatibility checker to terminate earlier in some cases\n  updating modulation-related documentation to include mod_param and be more precise about what is updated by modulation (the parameter value used by a function changes, but the corresponding function attr does not change b/c it is the base value)\n  adding documentation for mod_param\n  allowing user to pass value into mod_param setter (even though setting is not allowed) in order to produce a more informative error message)\n  commenting out noise and smoothing factor properties in transfer mechanism because these replace the default properties, causing unexpected behavior\n  adding pytest to verify correct error message when user tries to set to mod_param_name\n  adding pytest to track changes in attr, _attr, mod_param_name, and userparams[param_name] values of Transfer Mechanism's configurable params when (1) param values are updated (2) mechanism is executed\n  adding an exception to make_mod_param as a temporary fix for function-specific mod_param properties that stay on mechanism class when function changes\n  fixing typo in AGTUtilityIntegrator\n  cleaning up function.py and verifying that self.get_current_function_param is used in all functions (skipped learning functions for now)\n  Fix/controlmechanism/assign as controller (#620)\n  Fix/controlmechanism/assign as controller (#619)\n  cleaning up recurrent transfer mechanism pytests and fixing bugs in asserts\n  updating matrix setter to also set the projection's matrix parameter state's function's previous value\n  uncommenting auto and hetero properties from auto associative projection so that setting auto and hetero directly on the projections works\n  adding auto and hetero properties to recurrent transfer mechanism. Auto, hetero, and matrix setters now all update recurrent_projection's matrix parameter state's function's previous_value\n  Fix/controlmechanism/assign as controller (#618)\n  executing projection individually in tranfer mechanism's matrix-change pytest\n  adding a matrix-change pytest for a mapping projection between two transfer mechanisms in order to isolate the matrix bug from auto/hetero properties\n  Defaults: clean up method organization\n  fixing shape typo in gilzenrat script\n  fixing overly strict rate param validation that caused bug in cases where mechanism looks up parameter state value\n  refactoring transfer mechanism to use get_current_mechanism_param()\n  refactoring LCA to use get_current_mechanism_param()\n  refactoring kwta's _kwta_scale() to rely on get_current_mechanism_param()\n  adding get_current_mechanism_param method on mechanism base to try to look up parameter state value\n  remove now-unused time_scale param from many objects (not in scheduling where it's still used)\n  log doctests: ignore tests with inconsistent whitespacing\n  removing auto and hetero assignments from params dict in recurrent transfer mechansim\n  removing unnecessary auto and hetero code in auto associative projection to clean up the relationship between the recurrent projection, its mechanism, and the auto, hetero, and  matrix, attrs\n  requiring _kwta_scale method to use k_value parameter state value when available\n  commenting out calssPreferences in transfer mechanism because they cause bugs in KWTA when classPreferences try to update\n  removing attempt to look up recurrent projection's matrix in matrix getter (because the recurrent projection looks up its owner's matrix)\n  refactoring matrix getter on auto associative projection to look up owner's matrix whenever possible\n  directly updating auto and hetero attrs at the same time that their parameter states are created in the auto specified, hetero = None and hetero specified, auto = None cases\n  beginning to refactor auto/hetero/matrix handling to fit with new parameter state value and make_property changes; beginning by removing obsolete code in recurrent transfer mechanism\n  removed CentralClock from MontagueDayanSejnowski96.py\n  fixed typo in owner attribute description\n  Fix/function/validate params (#616)\n  Defaults: set up structure to allow proper aliasing for *Defaults classes\n  - Renamed MontagueModel.py to MontagueDayanSejnowski96.py - Correct RST formatting in PredictionErrorMechanism docs - Added Arguments and Attributes to docs for PredictionErrorMechanism\n  LinearCombination: rework check for division by zero error to be more general\n  default_value: refactor into instance_defaults\n  Component: add metaclass for *Defaults to allow some user convenience functionality\n  Refactor/control signal/update to intensity (#613)\n  Fix/component/intensity and value (#612)\n  Fix/gilzenrat model/prefs bug (#611)\n  updating DDM mechanism to get threshold using get_current_function_param method when it uses threshold to determine decision variable\n  continuing to update how parameters are accessed in pytests (should be mod_ now in many cases)\n  replacing .matrix with .mod_matrix in learning pytests\n  adding a call to super in projection's _instantiate_attributes_after_function so that it calls make_property_mod (on component)\n  Fix/ddm/threshold validation (#610)\n  calling get_current_function_param in the remaining functions and fixing small bugs along the way (missing keyword for 'gamma', np.atleast_2d(rate) in lcaintegrator)\n  moving make_property_mod back to component.py (from parameterstate.py) -- it is now called for all parameter states during _instantiate_attributes_after_function rather than by individual parameter states\n  Docs/td learning/doc fixes (#609)\n  removed show graph call from test_reinforcement\n  resetting test_multilayer from devel and removing matplotlib from test_prediction_error_delta_function\n  specifying smoothing_factor=1.0 on pytests that used to use default smoothing_factor (1.0 --> 0.5)\n  changing smoothing factor (formerly time_constant) default value to 0.5 -- it was confusing to users that the default param value prevented integration\n  renaming 'time_constant' --> 'smoothing_factor' on TransferMechanism types that use AdaptiveIntegrator\n  Fix/log/trial and run (#607)\n  Feat/log/trial and run (#606)\n  Refactor/project/learning vs executing (#605)\n  correcting capitalization\n  cleaning up documentation\n  adding asserts to parameter states pytests in order to start tracking down bug where mod_noise looks up the parameter state value of the last instance created\n  Refactor/mechanism/value in execute 2 (#603)\n  predictionerrormechanism\n  docs: move gilzenrat svg files from build dir to source dir\n  Fix/log/tuple datum value (#601)\n  registry: handle case where default-named projection to a duplicate named mechanism would incorrectly detect the projection name as a duplicate\n  finished TD Learning documentation\n  Fix/state/matrix spec and learning (#600)\n  Fix/component preference set/class preferences (#598)\n  Fix/log/set log conditions bug (#596)\n  updating Transfer functions (Linear, Logistic, Exponential) to use get_current_params(KEYWORD) instead of paramsCurrent[KEYWORD]\n  adding get_current_param method which tries to return mod_param and returns param if that doesn't exist -- will eventually be added to all functions, starting here with DriftDiffusionIntegrator\n  Docs/log/hint (#595)\n  updating shape inconsistencies in DriftDiffusionIntegrator / DDM Mechanism related to time and threshold\n  removing special handling of DriftDiffusionIntegrator threshold in variable=array case (correct behavior is ambiguous)\n  docs: add extra sub-version number in version display\n  utilities: enhance method to recursively convert items to np.ndarray, handling hard cases for np.array\n  remove scratch pad and ignore\n  Docs/log/log clean up (#593)\n  Docs/log/log clean up (#592)\n  remove scratch pad\n  Docs/log/log clean up (#591)\n  Names/log/set log conditions (#590)\n  adding pytests to verify that threshold and is_finished work as expected; commenting out tests with DriftDiffusionIntegrator and len(default_variable) > 1 because correct behavior is ambiguous (for now)\n  adding 'threshold' param on DriftDiffusionIntegrator which stops accumulation at the threshold, and updated DDM's is_finished to look at this\n  updating shape of time computation in FHN integrator (was list, now float)\n  updating gilzenrat pytest which was checking _gain and gain to verify modulation to now use gain and mod_gain\n  updating pytests and adding comments to possibly fix shape of ddm time value, which changed from a list to a float after property refactoring\n  add realtime timestamps to Scheduler, for creation time and end of last RUN time\n  change usages of now defunct times attribute of Schedulers to new version\n  updating mod_param_name property creation to happen at the instance level in both cases (formerly created on mechanism classes)\n  unindenting misplaced setting of _param_name attributes\n  Bugfixes (#588)\n  setting _param_name for all param_names that go through _validate_params resolves SOME of the cases where getter looks for _param_name before setter creates an _ attr\n  Feat/log/add entry (#587)\n  Fix/log/log initialization (#586)\n  Feat/log/clean up (#585)\n  Feat/log/clean up (#584)\n  Feat/feat log with time (#583)\n  rename psyneulink.scheduling.timescale -> psyneulink.scheduling.time\n  create and integrate a new Clock class, and several new classes to keep time, used in Scheduler and Conditions\n  adding _param_name to script for better output comparison with older versions (when _ stored the base value)\n  solving bug where _param_name did not exist on TransferMechanism instances, but introduced new bug where last param value that was set is starting param value of next instance\n  remove old Clock/CentralClock\n  debugging make property execution\n  main documentation for PredictionErrorMechanism done\n  adding mod_slope to the current parameter state pytests\n  adding make_property_mod method to parameter states -- executed at the end of _instantiate_parameter_state method and creates a property called mod_param_name on each param that has a parameter state which looks up the current parameter state value\n  limiting make_property's resposibility to validation -- setter runs validation and then sets to _param_name, getter returns _param_name. mod_param_name property will handle getting parameter state value\n  Feat/log/log levels (#580)\n  test\n  beginning to separate make property into two methods\n  added PredictionErrorDeltaFunction and docs for PredictionErrorMechanism & Montague model\n  Refactor/log/entry management (#579)\n  montague models working!\n  Docs/log/docstring update (#578)\n  Add integrator function tests\n  Add transfer function tests\n  Add distance function tests\n  function: test for both 1d and 2d noise\n  setup.cfg: Use warmup if benchmarks are enabled\n  setup.cfg: Disable benchmarks by default\n  pytest: Add benchmarking plugin\n  Fix/log/logged items bug (#577)\n  using UniformToNormalDist pytest as a check of the scipy requirement error message\n  adding documentation for UniformToNormalDist\n  validating uniform-to-normal distribution function (matlab)\n  Docs/log/docstring update (#572)\n  adding gilzenrat figures in _build file\n  adding pytest file for parameter states\n  Name/log/numpy array to nparray (#571)\n  Feat/mechanism/additional props (#570)\n  Feat/log (#569)\n  EVCAuxiliary: replace kwargs function signatures with explicit arguments\n  add docstring explanation for processing and learning termination conditions\n  Feat/log (#568)\n  adding LC Control Mechanism test to verify that it is updating multiplicative param(s) of modulated mechanism(s) properly\n  fix incorrect construction of Process and System in Multitasking example script\n  Feat/log (#565)\n  Feat/log (#564)\n  almost working!\n  add travis config file\n  single source package requirements\n  fixed error message in LinearMatrix\n  adding a pytest for the new uniform --> normal distribution function\n  fixed sample input\n  updating recurrent transfer mechanism and transfer mechanism documentation\n  • State   - _validate_variable:  removed:         if not context:             context = kwAssign + ' Base Value'         else:             context = context + kwAssign + ' Base Value'\n  Fix/component/default naming (#558)\n  remove Scratch Pad\n  clean up DDM examples with verified parameters from matlab\n  skip NavarroAndFuss doctest because build server cannot access matlab\n  update NavarroAndFuss to use the correct version of the MATLAB simulation\n  convert DDM return_value for NavarroAndFuss function to be floats to allow NaN assignment\n  fix bug in using the matlab engine to run a script outside of the current dir\n  adding validation on NormalDist function in the case where some numpy versions throw an error\n  • System (#556)\n  adding new UniformToNormalDist function which allows for a direct comparison of random numbers between python and matlab\n  Feat/system/show graph (#555)\n  adding integration_method to FHNIntegrator docs and refining error message\n  Fix/modulatory specifications (#554)\n  clean imports in function.py\n  commenting out assertions in OU integrator pytests until its equation is validated\n  fixing mistake in implementation of OUIntegrator\n  adding LCAIntegrator docs to function docs page and continuing to touch up typos and incorrect info throughout function docs\n  continuing to add documentation for LC Control Mechanism params\n  adding matlab and psyneulink plot svgs\n  adding pnl and matlab plots plus some additional notes to the Gilzenrat Model page of the documentation\n  fixing typos in FHNIntegrator docs\n  documenting the LCControl mechanism parameters that hand values off to the FHNIntegrator as well as scaling_factor_gain and base_value_gain\n  cleaning up FHNIntegrator docs with tables for explaining parameters and latex equations\n  typos in run (input spec) docs\n  cleanup Scheduler doc examples\n  add parsing handler for Scheduler termination_conditions\n  move static .svg files from docs build directory to source dir\n  update docs to show 0.0.x versions instead of just 0.x (we use the former frequently)\n  fix broken package link for AutoAssociativeMechanism that caused sphinx automodule to fail\n  removing references to 'inhibition' and 'decay' in LCA docs\n  removing gilzenrat transfer mechanism from the repo\n  updating gilzenrat unit tests to use LCA mechanism in place of GilzenratTransferMechanism\n  fix bug where versioneer wasn't available at the correct time in building docs\n  adding a note about the recurrent matrix to LCA docs\n  rewriting gilzenrat model in terms of LCA rather than 'GilzenratTransferMechanism'\n  removing LCA pytest from recurrent transfer pytests file now that LCA has its own tests\n  updating LCA documentation -- removing beta & inhibition, adding leak, competition, and self_excitation.:\n  setting default values for new LCA params\n  adding pytest file for LCA and testing length 1 variable and length 2 variable cases\n  added output_states param to call of PredictionErrorMechanism constructor\n  added default variable param to call to LinearCombination in PredictionErrorMechanism\n  adding 'leak' parameter and renaming 'auto'-->'self_excitation' and 'hetero'-->'competition' on LCA mechanism\n  Refactor/state/doc test bugs (#551)\n  fix bug where invalid escape strings in docstrings would cause failure on python 3.6.x\n  fixing incorrect documentation of LCA (did not reflect new LCAIntegrator function)\n  continuing to clean up Gilzenrat model and its model-specific components -- verifying that all arguments are consistent and correctly documented\n  manually setting outputstate variable size\n  adding params for G and k to LCControl mechanism as a temporary solution for allowing the user to modify the equation that computes gain as a function of w\n  cleaning up gilzenrat script comments and labeling all params from the paper\n  tried manually setting OutputState value for PEM -- didn't work\n  Refactor/state/ parse state specs lots (#550)\n  use versioneer for single-source versioning\n  adding Gilzenrat changes from Markus\n  fixed target size for PredictionErrorMechanism\n  trying to fix tests\n  correct W293 instances\n  fix bug where intra-numpy-array list->array element conversion would fail on 0-d numpy array input\n  updating logistic function and its documentation to match the more standard form, with an optional 'offset' to take the place of original 'bias' param. Updating all pytests that used what was formerly 'bias' and is now 'offset'\n  trying more things to get td learning working\n  clean up leabra demo script\n  clean up leabramechanism\n  add __all__ to leabramechanism and update relevant package\n  rename certain leabra-specific functions to include \"leabra\" in preparation for adding to top-level namespace\n  remove unnecessary (and oddly expensive) logging in scheduler\n  fix bug where over/underflows in logistic functions would cause the result to be replaced with 0 (often incorrect format and destructive)\n  remove forced error on warnings\n  Leabra script cleaning (#547)\n  cleaned up Matlab scripts & EVC Gratton example script (#546)\n  Docs/project/more docstring fixes (#545)\n  Docs/project/more fixes (#544)\n  Docs/project/fixes (#543)\n  reformat Example scripts to new import style, and clean up\n  setup Scripts/Examples folder with desired scripts\n  remove old/undesired scripts\n  adding input spec figures to run documentation\n  rename _get_matrix to get_matrix\n  Revert \"Fix/scripts/cleanup (#539)\"\n  commenting out all clip (formerly range) code because it does not work as expected\n  fixing formatting typo in documentation\n  continuing to clean up input specification for (1) heterogenous variables and (2) a limited version of 'sequence' specification\n  Fix/scripts/cleanup (#539)\n  updating documentation example pytests to verify all inpt values against specified input values\n  updating documentation example typos\n  Feat/transfer mechanism/add std output states (#538)\n  refactoring system input state creation to create one system input state (and mapping projection) for each input state of each origin mechanism\n  Feat/transfer mechanism/add std output states (#537)\n  Fix/output states (#536)\n  Refactor/transfer mechanism/mutiple output states (#535)\n  updating transfer mech execute to check the type of its function and call it once or once per input state accordingly, plus Jon's instantiate_output_states\n  reclassifying softmax as a 'NormalizingFunction' instead of a 'TransferFunction' so that we can easily identify transfer mechanism functions that should be executed separately for each input state\n  use pytest fixture for registry reset in tests/naming to ensure it gets called\n  renaming  -->  on TransferMechanism types in order to not overwrite Python built-in range\n  Refactor/naming (#533)\n  add download link for GilzenratModel.py\n  updating kwta and recurrent transfer mech pytests to match new output shape\n  cleaning up imports so test will run\n  add values(), show(), and nice str/repr methods to InstanceDefaults\n  move name assignment (in registry call) to before input_states arg handling in mechanism\n  Revert \"Refactor/mechanism/preprocess variable (#531)\"\n  updating transfer mechanism pytests to match new shape of output\n  updating transfer mechanism to call its function separately for each input state (each element of variable); for now, integrator function still only executes once\n  add shell classes to top-level psyneulink namespace\n  correct bug that would cause specifying 3d arrays as default_variable to assign default_variable incorrectly\n  add method to np.array-ify all elements within a list/array\n  continuing to add pytests for input specification - stuck on verifying that the input specification worked via tools (e.g. call_after_trial) available to the user, because non primary input states are getting overwritten as None\n  updating documentation for input specification -- adding tables of inputs on each trial with code snippets\n  Fix/mechanism/ parse arg input states (#532)\n  Increment version to 0.4.0\n  add more input_state spec tests to handle currently known combinations for setting default_variable\n  Refactor/mechanism/preprocess variable (#531)\n  Refactor/mechanism/preprocess variable (#530)\n  Docs/state and projections/docstring revs (#529)\n  correct bug in _parse_arg_input_states where a non-list argument wouldn't be made into a list before processing\n  change behavior of _parse_state_spec to not populate the state dict with a variable if it's a ClassDefault\n  updating noise validation to compare against entire variable (possibly multiple input states) and updating error messages in pytests to reflect these changes\n  updating 'try_execute_param method to expect 2d variable and return 2d param\n  updating pytests for input specification documentation examples to match the new documentation examples\n  continuing to update docs for inputs to system\n  revising the input specification docs to describe the rules in terms of matching the mechanim's variable - also making the convenience cases clearer\n  removing references to timescale in run and system docs\n  Fixed/state/ parse state spec/projection spec (#528)\n  Refactor/distance metrics (#526)\n  Docs/latex math (#525)\n  Docs/intro materials (#524)\n  continuing to add pytests to test new input specification rules\n  updating some reporting statements to match the new form of inputs (dict)\n  continuing to clean up input specification; running inputs first through a new method called _input_matches_variable which catches some numpy mistakes specific to input validation that slip through iscompatible\n  Logo (#523)\n  make self.name return unnamed .__class__ in case no name was set\n  Docs/input state specs (#522)\n  Fix/input state specs (#521)\n  continuing to add pytests for testing input specifications\n  updating process and system to handle the new execution_inputs dict that they receive from run\n  consolidating and revamping input processing to get rid of any references to , repetitive code. still some clean up to do -- 5 pytests failing\n  Fix/input state specs (#520)\n  Fix/input state specs (#519)\n  beginning to consolidate input validation because we no longer have phases and don't need to handle systems and processes differently -- 22 pytests failing\n  Fix/input state specs (#518)\n  using new EULER option on the LCControlMechanism in GilzenratModel in order to match original model\n  adding validation requiring integration_method to either be RK4 or EULER\n  adding 'integration_method' to LCControlMechanism so that user can switch between euler and rk4 integration for the built-in FHN function\n  fixing some params to match matlab model; made it easier to swtich between high C and low C params\n  switching FHNIntegrator to use euler integration\n  scaling entire noise term by sqrt(dt) rather than scaling the standard deviation of the noise term by sqrt(dt)\n  Naming/registry/default name 0 (#516)\n  beginning to add in an exception which will allow the case where all mechanisms specify one input which is the same shape as their variable (i.e. no outer list for trials)\n  hack mechanism to be able to accept instance_defaults.variable setup via input_states argument\n  still trying to fix inputs\n  cleaning up sytem unit tests to match new input spec (outer set of brackets representing trials required)\n  cleaning up mechanism unit tests to match new input spec (outer set of brackets representing trials required\n  move input_states spec tests in test_transfer_mechanism to new file\n  update current input_state spec tests\n  make test_transfer_mechanism tests use instance_defaults.variable instead of incorrect .variable\n  Docs/state and projection (#515)\n  remove uses of self.variable. (it is vestigial and maintained only for user inspection)\n  rename duplicate transfer mech test to avoid overwrite\n  adding input specification pytests to test_system in order to verify which input spec formats already work and build on this\n  pull from devel\n  Refactor/control and gating signals (#514)\n  Import leabra and run leabra tests only if leabra module is available.\n  Leabra wrapper prototype (#513)\n  Fix/utilities/iscompatible final rev (#512)\n  Fix/utilities/iscompatible (#511)\n  rename System and Process to add _Base suffix in shellclasses.__all__ because of abf3e7e7c and 6b9e9a4e2\n  Clean up/registry/ register category (#508)\n  Refactor/projection/connection specs (#507)\n  Refactor/gating mechanism/ instantiate gating signal (#506)\n  • Projection (#505)\n  updating comments and error messages in _construct_stimulus_sets to reflect changes\n  updating 3 recurrent transfer mech unit tests which used 'sequence format' of input specification for a process to use 'mechanism format' instead\n  Refactor/projection/ instantiate sender (#504)\n  Refactor/state and projection/clean up (#503)\n  commenting out branch of _construct_stimulus_sets which parses inputs by the 'sequence format' rules -- seems safe to move entirely to mechanism format b/c all pytests use 'mechanism format' and new examples using 'sequence format' do not work\n  weird hybrid prediction error mechanism\n  fix typo in ObjectiveMechanism docstring causing weird documentation formatting\n  avoid using module-level Mechanisms in unit tests to avoid possible conflicts\n  Refactor/state and projection/unit tests bug fixes (#502)\n  Refactor/state and projections/unit tests (#501)\n  Refactor/state and projection/names and docs (#500)\n  requiring version 1.4 of toposort\n  moving imports to top of gilzenrat pytests file\n  adding full gilzenrat model to pytests -- no comparison data to assert yet, just verifying that model can run without errors\n  adding pytests that isolate the GilzenratTransferMechanism and moving FHNIntegrator test that recreates figure 2 from gilzenrat paper from integrator mechanism tests --> gilzenrat tests\n  fixing up a few model values in the gilzenrat model -- behavior is not quit right -- and switching number_of_trials back to 1\n  Optimize registry duplicate naming\n  adding progress statement ('% complete') to gilzenrat script\n  implementing noise on LCAIntegrator and cleaning up unnecessary integrator function code (removing GilzenratIntegrator)\n  replacing GilzenratIntegrator with LCAIntegrator (with rate=-1) in GilzenratTransferMechanism\n  Refactor/state and projection/specification bug fix 2 (#495)\n  Refactored instantiation of States and Projections (#494)\n  updating mechanism pytests to reflect integrator_function shape change and removing extraneous transfer mechanism tests which returned arrays of mixed types\n  indexing into the first element of the transfer mechanism's integrator_function result so that the shape passed to the transfer mechanism's function is the same as if integrator_mode were false\n  add component module to main psyneulink package\n  fold keywords into first level hierarchy, because some keywords aren't defined in Keywords.py and this is confusing\n  skip notebook checkpoints in running notebook tests\n  stop package-level __all__ assignments from accidentally overwriting the __all__ objects they used as bases\n  fixing bug in NormalDist() function which was shifting the mean of the distribution\n  fix link to the tutorial in docs that didn't get changed when tutorial/ directory was created\n  correcting LCAIntegrator function to match the papers (since it represents a rate of change, we need to integrate over timesteps) and relaxing integrator rate param validation which was blocking variables of lengths > 1\n  Devel (#490)\n  improving initial conditions by making first recurrent projections to recurrent mechanisms make sense given their starting values\n  make Function_Base inherit its paramClassDefaults from its parent class Function instead of Component\n  remove DefaultProcessingMechanism from component/__init__.py because it's an instantiation of a _Base class, and doesn't get used\n  removing and re-adding gilzenrat transfer mechanism because name change did not seem to work\n  updating value of LC control mechanism output before it runs to match initial previous value (had to do this in the gilzenrat script because of other LC control mechanism hacks, but left a placeholer in ControlMechanism for how to implement this more generally for any control mechanism that accumulates)\n  adding a new Integrator function that matches the decision and response layer functions in the Gilzenrat paper, and a new transfer mechanism which calls this integrator before its primary function\n  update README and docs index.rst to new PyPI installation instructions, and tutorial section, reorganize\n  reformat README into .rst format so pypi can format it nicely\n  update short description to match the title line in the long description\n  update setup.cfg for wheel creation and to include license file\n  update setup.py supported Python versions to include only 3.5 and 3.6 (does not work on < 3.4 due to numpy, does not work on 3.4)\n  update setup.py classifier for Apache license\n  add tutorial_requirements.txt mirroring setup.py requirements\n  add requirements.txt mirroring setup.py requirements\n  update setup.py packages\n  add MANIFEST.in\n  remove SOFTWARE ARCHITECTURE and TODO List\n  remove extraneous files\n  add docstrings to __init__.py files (for help command)\n  update tutorial to new easier import style\n  update docs to handle new module/package format\n  update package __init__.py files for simple importing\n  add __all__ lists to modules\n  rename globals/run.py to globals/environment.py to avoid namespace conflict with run method\n  clean up main package __init__.py\n  replace paramClassDefaults PROJECTION_SENDER with OutputState class instead of keyword to prevent error due to failed conversion\n  rework imports to avoid circularities due to packaging\n  make LearningMechanism get its paramClassDefaults from its parent and not Projection_Base\n  remove mechanism factory method\n  remove system factory in favor of just instantiating System class\n  remove process factory in favor of just instantiating Process class\n  switch name of Process and Process_Base\n  switch name of System and System_Base\n  move typecheck for _get_modulated_param inside to avoid circular import\n  remove old pyargs argument for pytest\n  relaxing validation on LCAIntegrator rate param in order to create an LCA example in integrator mode with an array input\n  cleaning up resolving merge conflicts\n  fixing merge conflicts\n  started mini montague model\n  adding comments\n  first preliminary test working\n  editing testing files and minor typos\n  removed unnecessary identity transform function\n  updating gitignore for new version of PyCharm\n  created PredictionErrorMechanism\n  started mini montague model\n  adding comments\n  first preliminary test working\n  editing testing files and minor typos\n  removed unnecessary identity transform function\n  updating gitignore for new version of PyCharm\n  created PredictionErrorMechanism\n  starting TDDelta Function -- very messy\n  2 of 3 test working\n  integrating td learning\n  cleaning up Function.py for pull request\n  tests working!\n  Q-matrix initialization working; mechanism does not\n  Added Q-learning and SARSA algorithm","distinct":true,"url":"https://api.github.com/repos/PrincetonUniversity/PsyNeuLink/commits/0c89ea547e456095fcc7cb47b830cb7b902d4e72"},{"sha":"07b31bfb833904e99b4c523d917aa8825e8bb983","author":{"name":"kmantel","email":"203058e978e1fd101beebaea9bb62030a7c6e413@princeton.edu"},"message":"imports: fix upper/lower case errors","distinct":true,"url":"https://api.github.com/repos/PrincetonUniversity/PsyNeuLink/commits/07b31bfb833904e99b4c523d917aa8825e8bb983"}]}
{"actor":{"display_login":"kmantel"}}