-
Notifications
You must be signed in to change notification settings - Fork 29
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/ocm/state features #2302
Merged
Merged
Feat/ocm/state features #2302
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
_instantiate_control_projections: weird requirement for double-call to controller._instantiate_control_signal
restored parameter spec that causes crash ('threshold',Decision2)
…trol specs - composition.py - _get_control_signals_for_composition: (see 11/20/21) - added (but commented out change) to "if node.controller" to "if not node.controller" - changed append to extend - _instantiation_control_projection: - got rid of try and except double-call to controller._instantiate_control_signals - outdented call to self.controller._activate_projections_for_composition at end - controlmechanism.py: - _check_for_duplicates: add warning and return duplicates - optimizationcontrolmechanism._instantiate_control_signals: - add call to self.agent_rep._get_control_signals_for_composition() to get local control specs (on mechs in comp) - eliminate duplicates with control_signal specs on OCM - instantiate local + ocm control_signals - parameterestimationcomposition.py - added context to various calls
- test_parameterestimationcomposition - test_composition/test_partially_overlapping_control_specs (ADDED IN THIS COMMINT) - All relevant changes to this branch are marked as "11/21/21." However, most are commented out as they break other things. - The tests above both involve local control specifications (on mechanism within a nested comp) and on the OCM for the outer composition, some of which are for the same nested mechs - Both tests fail with: "AttributeError: 'NoneType' object has no attribute '_get_by_time_scale'" (in component.py LINE 3276) This may be due to a problem with context setting, since the error is because the modulation Parameter of the ControlProjection is returning "None" rather than "multiplicative_param" (when called with get(context)), whereas "multiplicative_param" is returned with a call to get() (i.e., with no context specified) - Most of test_partially_overlapping_control_specs is passed if changes marked "11/21/21 NEW" in optimizationcontrolmechanism.py (LINE 1390) are implemented, but it does not properly route ControlProjections through parameter_CIMS (see last assert in test). Furthermore, test_parameterestimationcompsition fails with the mod param error, even though the model has similar structure (i.e., outer composition -- in this case a ParameterEstimationComposition) with an OCM that is given control specs that overlap with ones in a nested composition. - There are also several other things in composition I found puzzling and tried modifying, but that cuased failures: - _get_control_signals_for_composition(): - seems "if node.controller" should be "if **not** node.controller" (emphasis added just for comment) - "append" should be "extend" - _instantiate_control_projection(): - call to self.controller._activate_projections_for_composition (at end of method) should not be indented
- rename _check_projection_initialization_status -> _check_controller_initialization_status - add _check_nodes_initialization_status(context=context) (and calls it with _check_controller_initialization_status)
…thub.com/PrincetonUniversity/PsyNeuLink into refactor/ocm/state_input_ports_PROBE_FIX
retore append of control_signals in _instantiate_control_projections()
restore append of control_signals in _instantiate_control_projections() • test_composition.py: add test_partially_overlapping_local_and_control_mech_control_specs_in_unnested_and_nested_comp
…unnested_and_nested_comp(): - added clear_registry() to allow names to be reused in both runs of test
docstring: added projections entry to list of attributes - add_controller: added call to _add_node_aux_components() for controller
_add_node_aux_components(): added deletion of item from aux_components if instantiated
- comment out _add_node_aux_components() (causing new failures) - move _instantiate_control_projections to be with _instantiate_control_projections, after self.add_node(self.controller.objective_mechanism (to be more orderly)
…Link into feat/ocm/state_features
- _parse_state_feature_specs(): support port specification dictionary as spec
- _parse_state_feature_specs(): fix bug in which state_input_ports were not getting instantiated if objective_mechanism or monitor_for_control were not specifiied
- _parse_state_feature_specs(): fix bug in which state_input_ports were not getting instantiated if objective_mechanism or monitor_for_control were not specifiied
- test_ocm_state_feature_specs_and_warnings_and_errors(): - add test conditions for monitor_for_control instead of objective_mechanism and neither
- add _assign_state_feature_functions: support tuple format for state_features
…Link into feat/ocm/state_features � Conflicts: � psyneulink/core/components/mechanisms/modulatory/control/optimizationcontrolmechanism.py � tests/composition/test_control.py
- add test_state_feature_function_specs()
…nUniversity/PsyNeuLink into feat/ocm/state_features
- execute(): fix bug in which only primary input_port is tested for path_afferents to determine whether to update ports
- _assign_state_feature_function(): tuple overrides InputPort specification dict
This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):
See CI logs for the full diff. |
This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):
See CI logs for the full diff. |
This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):
See CI logs for the full diff. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
• mechanism.py:
to determine whether to update ports
• controlmechanism.py:
• optimizationcontrolmechanism.py:
if objective_mechanism or monitor_for_control were not specifiied
• test_control.py: