Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/mechanism/lc and itc #460

Merged
merged 114 commits into from
Sep 17, 2017
Merged

Feat/mechanism/lc and itc #460

merged 114 commits into from
Sep 17, 2017

Conversation

jdcpni
Copy link
Collaborator

@jdcpni jdcpni commented Sep 17, 2017

• LCMechanism
  - simplified, fully implemented

• ITCMechanism
  - implemented fully implemented

• Component
  - _assign_args_to_param_dicts:
        identification of arg defaults;
           replaced lambda function with function def for clarity
           added exception handling

  - main title changed to "Welcome to PsyNeuLink"
  monitor_for_control argument and attribute changed to objective_mechanism
…PrincetonUniversity/PsyNeuLink into feat/Mechanism/LC

# Conflicts:
#	PsyNeuLink/Components/Mechanisms/AdaptiveMechanisms/ControlMechanism/ControlMechanism.py
#	PsyNeuLink/Library/Mechanisms/AdaptiveMechanisms/ControlMechanisms/LCMechanism.py
#	Scripts/DEBUGGING SCRIPTS/LCMechanism Test Script.py
…PrincetonUniversity/PsyNeuLink into feat/Mechanism/LC

# Conflicts:
#	PsyNeuLink/Components/Mechanisms/AdaptiveMechanisms/ControlMechanism/ControlMechanism.py
#	PsyNeuLink/Library/Mechanisms/AdaptiveMechanisms/ControlMechanisms/LCMechanism.py
#	Scripts/DEBUGGING SCRIPTS/LCMechanism Test Script.py
…PrincetonUniversity/PsyNeuLink into feat/Mechanism/LC

# Conflicts:
#	PsyNeuLink/Components/Mechanisms/AdaptiveMechanisms/ControlMechanism/ControlMechanism.py
#	PsyNeuLink/Library/Mechanisms/AdaptiveMechanisms/ControlMechanisms/LCMechanism.py
#	Scripts/DEBUGGING SCRIPTS/LCMechanism Test Script.py
…e_mechanism' of https://github.com/PrincetonUniversity/PsyNeuLink into refac/ControlMechanisms/monitor_for_control_to_objective_mechanism

# Conflicts:
#	PsyNeuLink/Library/Mechanisms/AdaptiveMechanisms/ControlMechanisms/EVC/EVCMechanism.py
…e_mechanism' of https://github.com/PrincetonUniversity/PsyNeuLink into refac/ControlMechanisms/monitor_for_control_to_objective_mechanism

# Conflicts:
#	PsyNeuLink/Library/Mechanisms/AdaptiveMechanisms/ControlMechanisms/EVC/EVCMechanism.py
…e_mechanism' of https://github.com/PrincetonUniversity/PsyNeuLink into refac/ControlMechanisms/monitor_for_control_to_objective_mechanism

# Conflicts:
#	PsyNeuLink/Library/Mechanisms/AdaptiveMechanisms/ControlMechanisms/EVC/EVCMechanism.py
…e_mechanism' of https://github.com/PrincetonUniversity/PsyNeuLink into refac/ControlMechanisms/monitor_for_control_to_objective_mechanism

# Conflicts:
#	PsyNeuLink/Library/Mechanisms/AdaptiveMechanisms/ControlMechanisms/EVC/EVCMechanism.py
…Link into devel

# Conflicts:
#	.idea/runConfigurations/_Multilayer_Learning_Test_Script.xml
…and_monitored_values' of https://github.com/PrincetonUniversity/PsyNeuLink into refactor/ObjectiveMechanism/input_states_and_monitored_values
  - refactored to consolidate _instantiate_input_states and _instantiate_monitored_output_states
  - monitored_values -> monitored_output_states
  - implement MONITOR_FOR_CONTROL option at the Mechanism level
  - complete its implementation
  - complete its implementation
  - complete its implementation
  - simplified

• ITCMechanism
  - implemented
  - simplified

• ITCMechanism
  - implemented

• Component
  - _assign_args_to_param_dicts:
        identification of arg defaults;
           replaced lambda function with function def for clarity
           added exception handling
@jdcpni jdcpni merged commit c034145 into devel Sep 17, 2017
kmantel added a commit that referenced this pull request Apr 5, 2018
…position/start

* commit 'c782f0fb2f0cf9a8f1f31d5cb3ed18ea88b8ed45':
  remove mechanismGenerator
  updating execute method of LCA to call LCAIntegrator and renaming time_constant --> beta to match the new function
  adding a new function called 'LCAIntegrator' which computes rate*previous_value + variable
  test_recurrent_transfer_mechanism.py PEP8 format
  replace crude assertions with numpy assert_allclose in test_recurrent_transfer_mechanism
  cleanup test_recurrent_mechanism.py imports
  make TransferMechanism.paramClassDefaults copy its parent instead of Mechanism_Base
  replace calls to numpy typechecking from 64 bit to 64 or 32bit versions
  temporary fix: changing LCControlMechanism output to (gain(w_t), gain(w_t), v_t, w_t, t) so that both modulated mechanisms receive gain. Should be refactored so that this is handled by selecting output states/control signals
  define undefined default values in MechanismPreferenceSet
  ensure that MechanismPreferenceSet imports its parent class
  Update Project_Default.xml
  revising FHN integrator docs comparisons to other models (Gilzenrat, Modified FHN) to be easier to follow and have all correct signs
  adding Project_Default.xml to gitignore
  removing toposort from ignoredPackages
  fixing Project Defaults
  adding ipykernel>=4.6.1 to dev_requirements.txt
  adding pytest to verify FHNIntegrator function against Gilzenrat paper figure 2
  refactoring rk helper method to compute the two variables (v and w) concurrently and update their approximations of each other throughout the timestep
  make IntegratorMechanism get its paramClassDefaults from its parent ProcessingMechanism_Base rather than a more distant ancestor Mechanism_Base
  optimize imports via pycharm
  replace nonexistence ControlMechanism_Base uses with the real ControlMechanism
  import ShellClass System directly instead of implicitly importing it through the System.py module
  import ShellClass Process directly instead of implicitly importing it through the Process.py module
  import ShellClass State directly instead of implicitly importing it through the State.py module
  import ShellClass Projection directly instead of implicitly importing it through the Projection.py module
  import ShellClass Mechanism directly instead of implicitly importing it through the Mechanism.py module
  replace Adpative with Adaptive
  change test_notebooks to only test the notebooks in the tutorial folder (if more notebooks are added in the future, add them to be run by this test
  move tutorial notebook to its own dedicated folder
  passed in all arguments to the FHNIntegrator where the LCControlMechanism specifies FHN as its function in super().__init__
  adding all params of FHNIntegrator Function to the LCControlMechanism. Appended '_FHN' to each param name b/c Mechanism cannot have params of the same name as params of its function
  Docs/mechanism/updated states fig (#484)
  Org/library/models (#483)
  update version to 0.3.4 in setup.py
  Refactor/objective mechanism/monitored output state tuple (#480)
  Library/gilzenrat et al (#479)
  Unit tests for RecurrentTransferMechanism learning (#478)
  Docs/learning/various docstrings (#477)
  Feat/recurrent transfer mechanism/add learning (#476)
  Feat/recurrent transfer mechanism/add learning (#475)
  update version to 0.3.3 in setup.py
  Feat/system/show graph origin and terminal colors (#472)
  Refactor/mechanism/parameter states property (#471)
  Renamed ControlMechanisms, created Core & Subsystem directories (#470)
  ensure AccumulatorIntegrator passes its default_variable parameter up the constructor hierarchy; modify test random number offset (tests in this commit were +6 numpy.random calls relative to 6a65ba4 )
  Refactor/system/non controller control mechanisms (#469)
  Update dev requirements to include matplotlib as required by PR #452
  Fix/utilities/iscompatible/recursive check for numeric (#468)
  Feat/itc mechanism/add params for fct (#467)
  fixing bugs in FHN integrator -- now uses variable (instead of self.variable)
  adding option to swap out different operations [ (1-S)*L , (1-S)-L,  (1-S)+L] in the UtilityIntegrator
  add sphinx, jupyter to dev_requirements.txt
  fix tutorial notebook, add tests for notebooks
  remove ignored files
  cleaning up and testing UtilityIntegrator to confirm that it produces correct output
  adjusting utility integrator to match AGT paper -- no outer level EWMA filter
  renaming EWMA filter helper function
  misspelling in logistic helper function
  Merge branch 'devel' of https://github.com/PrincetonUniversity/PsyNeuLink into devel (#463)
  Feat/mechanism/lc and itc (#462)
  Feat/function/show params (#461)
  Feat/mechanism/lc and itc (#460)
  correct renaming bug from 7053408
  continuing to document UtilityIntegrator function
  cleaning up the new UtilityIntegrator function, and adding summary documentation'
  adding a UtilityIntegrator function which relies on helper functions '_EWMAFilter' and '_take_logistic' to integrate and take the logistic of a variable using two sets of params: short term and long term, then combining the results
  adding documenation to describe the most general form of the FHNIntegrator function, and then 3 FHN formulations that it intends to support
  adding 'threshold' param to FHN function on top of all exisiting params
  Refactor/objective mechanism/input states and monitored values (#457)
  remove extraneous call to self._update_variable
  Docs/control/post refactor cleanup (#456)
  Feat/objective mechanism/monitored values dict (#455)
  Refactor/control/clean up (#454)
  Refactor control mech merged devel (#453)
  Docs/master/learning note (#450)
  renaming electrotonic_coupling to mode in FHN integrator function
  adding documentation of arguments of FHN function and adding FHN function to the Functions page
  removing typos and updating language in DDM docs (not linking to TIME_STEP and TRIAL anymore as these have different meanings in the scheduler)
  FHN pytests still not matching gilzenrat - commenting out
  adding 'uncorellated_activity' and 'electrotonic_coupling' arguments to be used by the dw_dt equation - this allows for a more direct comparison with the gilzenrat paper
  cleaning up argument/param names in FHN function, tried adding a pytest to test how it translates to the form in the Gilzenrat paper, but it's not working
  correct bug where keyword is named paramsInstanceDefaults and in some cases would search for attr by the same name (instead of correct nonplural)
  cleaning up and documenting FHN integrator
  parameterizing dw/dt and setting defaults; adding scale and offset to both return values
  fully parameterizing the dv_dt equation in the FHNMechanism so that it accomodates the gilzenrat formulation
  cleaning up FHN integrator mechanism and adding a pytest to verify it
  adding pytest for FHN integrator function -- not working yet because we need to grab w value, not just v, from mechanism
  adding implementation of FHN as a function which calls the rk4 helper function
  adding _euler and _runge_kutta_4 as helper functions on the integrator class so that any integrator function can implement this solvers
  • ObjectiveMechanism (#445)
  Feat/mechanism/lc (#444)
  Feat/mechanism/lc (#443)
  • Functions (#441)
  - (#439)
  updating tests to match ddm -- random seeds were disrupted by changes
  more documentation changes
  one more typo in cleaning up validation that overwrote 'function' built-in name
  moving DDM plotting functions out of validation; cleaning up validation that overwrote 'function' built-in name
  updating OU pytests to match recent changes to OU integrator function
  removing any references to TimeScale in Mechanism documentation in order to not confuse readers (at the moment, TimeScale still gets passed throughout component heirarchy, but it is not used)
  removing last reference to TimeScale in validation
  small typos and clarifications in TransferMechanism docs
  more DDM mechanism documentation cleanup
  continuing to clean up DDM mechanism documention - added a table that shows that categorizes functions based on type (analytic vs integrator) and output state options
  cleaning up documentation for the rest of the integrator functions, and modifying OU function to match the expression in the DDM paper
  adding previous_time and t0 attribs to OrnsteinUhlenbeckIntegrator as well + pytest
  finishing cleaning up documentation on DriftDiffusionIntegrator
  fixing small numpy bugs in DDM pytests
  DDM's RESPONSE_TIME output state is now working with DriftDiffusionIntegrator bc the DDM looks at its functions previous_time attrib; + pytest for this
  cleaning up docs for DriftDiffusionIntegrator & adding 'previous_time' and 't0' to the function for tracking response time; added pytest for the new attribs
  cleaning up docs - Integrator (base), Adaptive, Simple, Constant
  cleaning up docs - verifying that TransferMechanism docs match the code
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant