-
Notifications
You must be signed in to change notification settings - Fork 332
Allow Parameter subclasses to define and unpack their own implicit dependencies and inferences #7346
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
Open
samantha-ho
wants to merge
56
commits into
microsoft:main
Choose a base branch
from
samantha-ho:samanthaho/self_registering_parameters
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Allow Parameter subclasses to define and unpack their own implicit dependencies and inferences #7346
samantha-ho
wants to merge
56
commits into
microsoft:main
from
samantha-ho:samanthaho/self_registering_parameters
+1,562
−397
Conversation
This file contains hidden or 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
…tering_parameters
Change to sets in ParameterBase
…f._registered_parameters
…tering_parameters
Bugfix: _numeric_values_are_equal uses the ref_array.dtype Lookup Paramspecs from Interdeps instead of generated from Parameters
… ParameterBase with it
…by during registration
…tering_parameters
jenshnielsen
approved these changes
Sep 25, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work! This is a very nice improvement. Only left a few very minor suggestions
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.
In the
Measurement.register_parameter
andDataSaver.add_result
methods, the explicit Parameter type is used to register and unpack implicit dependencies for the ParameterWithSetpoints. This pattern requires that new sub-classes with different internal dependencies or inferences must exist within Qcodes and these method must be modified to handle them on a case-by-case basis.In order to support more complicated parameter interdependencies at higher-level abstractions, this PR modifies
register_parameter
andadd_result
to use new ParameterBase interfaces to perform registration and unpacking. New subclasses will then be able to use these new interfaces to register and unpack more complicated patterns.In detail:
ParameterBase now defines new properties and methods:
depends_on
is an order-preserving set, ParameterSet, of other ParameterBase objects it depends_on. These will be automatically added to the InterDependencies dependency tree upon registration. (Similar to the behavior of setpoints with ParameterWithSetpoints)is_controlled_by
is a set of parameters which use theinferred_from
orbasis
relationshiphas_control_of
is a set with the reverse direction of theis_controlled_by
relationship, used to find related parameters during registrationparam_spec
is a new property that returns theParamSpecBase
of a parameter. It infers theparamtype
from the associated Validators and defaults to "numeric"paramtype
is used byparam_spec
and its setter ensures that a Parameter's validators match its data representation in SQLiteMeasurement.register_parameter
has been refactored to add a new_self_register_parameter
method:dependency
andinference
links in the InterDependencies based on the associated ParameterBase properties_registered_parameters
attribute. This is then passed to the DataSaver via the Runnerparamtype
kwarg toregister_parameter
now modifies the Validator of the Parameter to matchDataSaver.add_result
has also been refactored:add_result
would use the explicit version. Now, an error is raised if the explicit values are not within some tolerance of the internal values (as with other duplication).