semi_cr.core.lab.instrument package¶
Submodules¶
semi_cr.core.lab.instrument.chip module¶
- class semi_cr.core.lab.instrument.chip.Chip(*args: Any, **kwargs: Any)[source]¶
Bases:
Instrument- get_idn() dict[str, str | None][source]¶
Override Instrument.get_idn so QCoDeS never calls self.ask(’*IDN?’).
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- ask(cmd: str) str¶
Write a command string to the hardware and return a response.
Subclasses that transform
cmdshould override this method, and in it callsuper().ask(new_cmd). Subclasses that define a new hardware communication should instead overrideask_raw.- Parameters:
cmd – The string to send to the instrument.
- Returns:
response
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- ask_raw(cmd: str) str¶
Low level method to write to the hardware and return a response.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overrideask.- Parameters:
cmd – The string to send to the instrument.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- close() None¶
Irreversibly stop this instrument and free its resources.
Subclasses should override this if they have other specific resources to close.
- classmethod close_all() None¶
Try to close all instruments registered in
_all_instrumentsThis is handy for use with atexit to ensure that all instruments are closed when a python session is closed.Examples
>>> atexit.register(qc.Instrument.close_all())
- connect_message(idn_param: str = 'IDN', begin_time: float | None = None) None¶
Print a standard message on initial connection to an instrument.
- Parameters:
idn_param – Name of parameter that returns ID dict. Default
IDN.begin_time –
time.time()when init started. Default isself._t0, set at start ofInstrument.__init__.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- static exist(name: str, instrument_class: type[Instrument] | None = None) bool¶
Check if an instrument with a given names exists (i.e. is already instantiated).
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- classmethod find_instrument(name: str, instrument_class: type[T] | None = None) T | Instrument¶
Find an existing instrument by name.
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- Returns:
The instrument found.
- Raises:
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- classmethod instances() list[Self]¶
Get all currently defined instances of this instrument class.
You can use this to get the objects back if you lose track of them, and it’s also used by the test system to find objects to test against.
- Returns:
A list of instances.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- static is_valid(instr_instance: Instrument) bool¶
Check if a given instance of an instrument is valid: if an instrument has been closed, its instance is not longer a “valid” instrument.
- Parameters:
instr_instance – Instance of an Instrument class or its subclass.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: InstrumentBase | None¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- classmethod record_instance(instance: Instrument) None¶
Record (a weak ref to) an instance in a class’s instance list.
Also records the instance in list of all instruments, and verifies that there are no other instruments with the same name.
This method is called after initialization of the instrument is completed.
- Parameters:
instance – Instance to record.
- Raises:
KeyError – If another instance with the same name is already present.
- classmethod remove_instance(instance: Instrument) None¶
Remove a particular instance from the record.
- Parameters:
instance – The instance to remove
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- write(cmd: str) None¶
Write a command string with NO response to the hardware.
Subclasses that transform
cmdshould override this method, and in it callsuper().write(new_cmd). Subclasses that define a new hardware communication should instead overridewrite_raw.- Parameters:
cmd – The string to send to the instrument.
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- write_raw(cmd: str) None¶
Low level method to write a command string to the hardware.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overridewrite.- Parameters:
cmd – The string to send to the instrument.
- IDN¶
Standard IDN parameter, which queries the instrument for its ID
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
semi_cr.core.lab.instrument.connector module¶
- class semi_cr.core.lab.instrument.connector.ConnectorRouteNode(parameter: Parameter, node: Node)[source]¶
Bases:
MultiSourceForwardingNode
- semi_cr.core.lab.instrument.connector.substitute_non_identifier_characters(node_name: str, valid_character: str = '_') str[source]¶
- class semi_cr.core.lab.instrument.connector.Connections[source]¶
Bases:
TypedDict- clear() None. Remove all items from D.¶
- copy() a shallow copy of D¶
- classmethod fromkeys(iterable, value=None, /)¶
Create a new dictionary with keys from iterable and values set to value.
- get(key, default=None, /)¶
Return the value for key if key is in the dictionary, else default.
- items() a set-like object providing a view on D's items¶
- keys() a set-like object providing a view on D's keys¶
- pop(k[, d]) v, remove specified key and return the corresponding value.¶
If the key is not found, return the default if given; otherwise, raise a KeyError.
- popitem()¶
Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
- setdefault(key, default=None, /)¶
Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
- update([E, ]**F) None. Update D from dict/iterable E and F.¶
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
- values() an object providing a view on D's values¶
- class semi_cr.core.lab.instrument.connector.Connector(*args: Any, **kwargs: Any)[source]¶
Bases:
Instrument,Routable- get_idn() dict[str, str | None][source]¶
Override Instrument.get_idn so QCoDeS never calls self.ask(’*IDN?’).
- property graph: MultiDiGraph¶
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- ask(cmd: str) str¶
Write a command string to the hardware and return a response.
Subclasses that transform
cmdshould override this method, and in it callsuper().ask(new_cmd). Subclasses that define a new hardware communication should instead overrideask_raw.- Parameters:
cmd – The string to send to the instrument.
- Returns:
response
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- ask_raw(cmd: str) str¶
Low level method to write to the hardware and return a response.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overrideask.- Parameters:
cmd – The string to send to the instrument.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- close() None¶
Irreversibly stop this instrument and free its resources.
Subclasses should override this if they have other specific resources to close.
- classmethod close_all() None¶
Try to close all instruments registered in
_all_instrumentsThis is handy for use with atexit to ensure that all instruments are closed when a python session is closed.Examples
>>> atexit.register(qc.Instrument.close_all())
- connect_message(idn_param: str = 'IDN', begin_time: float | None = None) None¶
Print a standard message on initial connection to an instrument.
- Parameters:
idn_param – Name of parameter that returns ID dict. Default
IDN.begin_time –
time.time()when init started. Default isself._t0, set at start ofInstrument.__init__.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- static exist(name: str, instrument_class: type[Instrument] | None = None) bool¶
Check if an instrument with a given names exists (i.e. is already instantiated).
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- classmethod find_instrument(name: str, instrument_class: type[T] | None = None) T | Instrument¶
Find an existing instrument by name.
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- Returns:
The instrument found.
- Raises:
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- classmethod instances() list[Self]¶
Get all currently defined instances of this instrument class.
You can use this to get the objects back if you lose track of them, and it’s also used by the test system to find objects to test against.
- Returns:
A list of instances.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- static is_valid(instr_instance: Instrument) bool¶
Check if a given instance of an instrument is valid: if an instrument has been closed, its instance is not longer a “valid” instrument.
- Parameters:
instr_instance – Instance of an Instrument class or its subclass.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: InstrumentBase | None¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- classmethod record_instance(instance: Instrument) None¶
Record (a weak ref to) an instance in a class’s instance list.
Also records the instance in list of all instruments, and verifies that there are no other instruments with the same name.
This method is called after initialization of the instrument is completed.
- Parameters:
instance – Instance to record.
- Raises:
KeyError – If another instance with the same name is already present.
- classmethod remove_instance(instance: Instrument) None¶
Remove a particular instance from the record.
- Parameters:
instance – The instance to remove
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- write(cmd: str) None¶
Write a command string with NO response to the hardware.
Subclasses that transform
cmdshould override this method, and in it callsuper().write(new_cmd). Subclasses that define a new hardware communication should instead overridewrite_raw.- Parameters:
cmd – The string to send to the instrument.
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- write_raw(cmd: str) None¶
Low level method to write a command string to the hardware.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overridewrite.- Parameters:
cmd – The string to send to the instrument.
- IDN¶
Standard IDN parameter, which queries the instrument for its ID
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
semi_cr.core.lab.instrument.dummy_d5a module¶
- class semi_cr.core.lab.instrument.dummy_d5a.DummyD5a(*args: Any, **kwargs: Any)[source]¶
Bases:
InstrumentDummy stand-in for the SPI Rack D5a 16-channel DAC module.
Mirrors the interface of QCoDesD5a: channels and spans are accessed as QCoDeS parameters on
driver(which returns self):driver.dac1 … driver.dac16 — voltage parameters (V) driver.span1 … driver.span16 — span parameters (‘4v uni’, ‘4v bi’, ‘2v bi’)
Changing a span updates the corresponding dac validator, matching the behaviour of the real driver.
Example
>>> d = DummyD5a("d5a_1") >>> d.driver.dac1(1.5) >>> d.driver.dac1() 1.5 >>> d.driver.span1("2v bi") # restrict channel 1 to ±2 V >>> d.driver.span1() '2v bi'
- get_idn() dict[source]¶
Parse a standard VISA
*IDN?response into an ID dict.Even though this is the VISA standard, it applies to various other types as well, such as IPInstruments, so it is included here in the Instrument base class.
Override this if your instrument does not support
*IDN?or returns a nonstandard IDN string. This string is supposed to be a comma-separated list of vendor, model, serial, and firmware, but semicolon and colon are also common separators so we accept them here as well.- Returns:
A dict containing vendor, model, serial, and firmware.
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- ask(cmd: str) str¶
Write a command string to the hardware and return a response.
Subclasses that transform
cmdshould override this method, and in it callsuper().ask(new_cmd). Subclasses that define a new hardware communication should instead overrideask_raw.- Parameters:
cmd – The string to send to the instrument.
- Returns:
response
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- ask_raw(cmd: str) str¶
Low level method to write to the hardware and return a response.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overrideask.- Parameters:
cmd – The string to send to the instrument.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- close() None¶
Irreversibly stop this instrument and free its resources.
Subclasses should override this if they have other specific resources to close.
- classmethod close_all() None¶
Try to close all instruments registered in
_all_instrumentsThis is handy for use with atexit to ensure that all instruments are closed when a python session is closed.Examples
>>> atexit.register(qc.Instrument.close_all())
- connect_message(idn_param: str = 'IDN', begin_time: float | None = None) None¶
Print a standard message on initial connection to an instrument.
- Parameters:
idn_param – Name of parameter that returns ID dict. Default
IDN.begin_time –
time.time()when init started. Default isself._t0, set at start ofInstrument.__init__.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- static exist(name: str, instrument_class: type[Instrument] | None = None) bool¶
Check if an instrument with a given names exists (i.e. is already instantiated).
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- classmethod find_instrument(name: str, instrument_class: type[T] | None = None) T | Instrument¶
Find an existing instrument by name.
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- Returns:
The instrument found.
- Raises:
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- classmethod instances() list[Self]¶
Get all currently defined instances of this instrument class.
You can use this to get the objects back if you lose track of them, and it’s also used by the test system to find objects to test against.
- Returns:
A list of instances.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- static is_valid(instr_instance: Instrument) bool¶
Check if a given instance of an instrument is valid: if an instrument has been closed, its instance is not longer a “valid” instrument.
- Parameters:
instr_instance – Instance of an Instrument class or its subclass.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: InstrumentBase | None¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- classmethod record_instance(instance: Instrument) None¶
Record (a weak ref to) an instance in a class’s instance list.
Also records the instance in list of all instruments, and verifies that there are no other instruments with the same name.
This method is called after initialization of the instrument is completed.
- Parameters:
instance – Instance to record.
- Raises:
KeyError – If another instance with the same name is already present.
- classmethod remove_instance(instance: Instrument) None¶
Remove a particular instance from the record.
- Parameters:
instance – The instance to remove
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- write(cmd: str) None¶
Write a command string with NO response to the hardware.
Subclasses that transform
cmdshould override this method, and in it callsuper().write(new_cmd). Subclasses that define a new hardware communication should instead overridewrite_raw.- Parameters:
cmd – The string to send to the instrument.
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- write_raw(cmd: str) None¶
Low level method to write a command string to the hardware.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overridewrite.- Parameters:
cmd – The string to send to the instrument.
- IDN¶
Standard IDN parameter, which queries the instrument for its ID
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
semi_cr.core.lab.instrument.dummy_oscilloscope module¶
- class semi_cr.core.lab.instrument.dummy_oscilloscope.DummyOscilloscope(*args: Any, **kwargs: Any)[source]¶
Bases:
InstrumentDummy oscilloscope that samples voltage parameters from other instruments in the station. Intended to be paired with its GUI counterpart which live-plots the readings.
Attach voltage Parameter objects to watch via add_channel().
Example
>>> osc = DummyOscilloscope("osc") >>> osc.add_channel("d5a_1.ch0", d5a.ch0.voltage) >>> osc.read_all() {'d5a_1.ch0': 0.0}
- add_channel(label: str, parameter)[source]¶
Register a voltage Parameter to monitor under the given label.
- get_idn()[source]¶
Parse a standard VISA
*IDN?response into an ID dict.Even though this is the VISA standard, it applies to various other types as well, such as IPInstruments, so it is included here in the Instrument base class.
Override this if your instrument does not support
*IDN?or returns a nonstandard IDN string. This string is supposed to be a comma-separated list of vendor, model, serial, and firmware, but semicolon and colon are also common separators so we accept them here as well.- Returns:
A dict containing vendor, model, serial, and firmware.
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- ask(cmd: str) str¶
Write a command string to the hardware and return a response.
Subclasses that transform
cmdshould override this method, and in it callsuper().ask(new_cmd). Subclasses that define a new hardware communication should instead overrideask_raw.- Parameters:
cmd – The string to send to the instrument.
- Returns:
response
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- ask_raw(cmd: str) str¶
Low level method to write to the hardware and return a response.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overrideask.- Parameters:
cmd – The string to send to the instrument.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- close() None¶
Irreversibly stop this instrument and free its resources.
Subclasses should override this if they have other specific resources to close.
- classmethod close_all() None¶
Try to close all instruments registered in
_all_instrumentsThis is handy for use with atexit to ensure that all instruments are closed when a python session is closed.Examples
>>> atexit.register(qc.Instrument.close_all())
- connect_message(idn_param: str = 'IDN', begin_time: float | None = None) None¶
Print a standard message on initial connection to an instrument.
- Parameters:
idn_param – Name of parameter that returns ID dict. Default
IDN.begin_time –
time.time()when init started. Default isself._t0, set at start ofInstrument.__init__.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- static exist(name: str, instrument_class: type[Instrument] | None = None) bool¶
Check if an instrument with a given names exists (i.e. is already instantiated).
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- classmethod find_instrument(name: str, instrument_class: type[T] | None = None) T | Instrument¶
Find an existing instrument by name.
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- Returns:
The instrument found.
- Raises:
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- classmethod instances() list[Self]¶
Get all currently defined instances of this instrument class.
You can use this to get the objects back if you lose track of them, and it’s also used by the test system to find objects to test against.
- Returns:
A list of instances.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- static is_valid(instr_instance: Instrument) bool¶
Check if a given instance of an instrument is valid: if an instrument has been closed, its instance is not longer a “valid” instrument.
- Parameters:
instr_instance – Instance of an Instrument class or its subclass.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: InstrumentBase | None¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- classmethod record_instance(instance: Instrument) None¶
Record (a weak ref to) an instance in a class’s instance list.
Also records the instance in list of all instruments, and verifies that there are no other instruments with the same name.
This method is called after initialization of the instrument is completed.
- Parameters:
instance – Instance to record.
- Raises:
KeyError – If another instance with the same name is already present.
- classmethod remove_instance(instance: Instrument) None¶
Remove a particular instance from the record.
- Parameters:
instance – The instance to remove
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- write(cmd: str) None¶
Write a command string with NO response to the hardware.
Subclasses that transform
cmdshould override this method, and in it callsuper().write(new_cmd). Subclasses that define a new hardware communication should instead overridewrite_raw.- Parameters:
cmd – The string to send to the instrument.
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- write_raw(cmd: str) None¶
Low level method to write a command string to the hardware.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overridewrite.- Parameters:
cmd – The string to send to the instrument.
- IDN¶
Standard IDN parameter, which queries the instrument for its ID
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
semi_cr.core.lab.instrument.pcb module¶
- class semi_cr.core.lab.instrument.pcb.PCBLine(name: str, kind: Literal['dc', 'rf', 'ac'], pin_type: str | None = None, pads: list[str] = <factory>)[source]¶
Bases:
object- kind: Literal['dc', 'rf', 'ac']¶
- class semi_cr.core.lab.instrument.pcb.PCB(*args: Any, **kwargs: Any)[source]¶
Bases:
InstrumentGeneric passive PCB / daughterboard with named electrical lines.
- get_idn() dict[str, str | None][source]¶
Override Instrument.get_idn so QCoDeS never calls self.ask(’*IDN?’).
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- ask(cmd: str) str¶
Write a command string to the hardware and return a response.
Subclasses that transform
cmdshould override this method, and in it callsuper().ask(new_cmd). Subclasses that define a new hardware communication should instead overrideask_raw.- Parameters:
cmd – The string to send to the instrument.
- Returns:
response
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- ask_raw(cmd: str) str¶
Low level method to write to the hardware and return a response.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overrideask.- Parameters:
cmd – The string to send to the instrument.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- close() None¶
Irreversibly stop this instrument and free its resources.
Subclasses should override this if they have other specific resources to close.
- classmethod close_all() None¶
Try to close all instruments registered in
_all_instrumentsThis is handy for use with atexit to ensure that all instruments are closed when a python session is closed.Examples
>>> atexit.register(qc.Instrument.close_all())
- connect_message(idn_param: str = 'IDN', begin_time: float | None = None) None¶
Print a standard message on initial connection to an instrument.
- Parameters:
idn_param – Name of parameter that returns ID dict. Default
IDN.begin_time –
time.time()when init started. Default isself._t0, set at start ofInstrument.__init__.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- static exist(name: str, instrument_class: type[Instrument] | None = None) bool¶
Check if an instrument with a given names exists (i.e. is already instantiated).
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- classmethod find_instrument(name: str, instrument_class: type[T] | None = None) T | Instrument¶
Find an existing instrument by name.
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- Returns:
The instrument found.
- Raises:
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- classmethod instances() list[Self]¶
Get all currently defined instances of this instrument class.
You can use this to get the objects back if you lose track of them, and it’s also used by the test system to find objects to test against.
- Returns:
A list of instances.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- static is_valid(instr_instance: Instrument) bool¶
Check if a given instance of an instrument is valid: if an instrument has been closed, its instance is not longer a “valid” instrument.
- Parameters:
instr_instance – Instance of an Instrument class or its subclass.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: InstrumentBase | None¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- classmethod record_instance(instance: Instrument) None¶
Record (a weak ref to) an instance in a class’s instance list.
Also records the instance in list of all instruments, and verifies that there are no other instruments with the same name.
This method is called after initialization of the instrument is completed.
- Parameters:
instance – Instance to record.
- Raises:
KeyError – If another instance with the same name is already present.
- classmethod remove_instance(instance: Instrument) None¶
Remove a particular instance from the record.
- Parameters:
instance – The instance to remove
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- write(cmd: str) None¶
Write a command string with NO response to the hardware.
Subclasses that transform
cmdshould override this method, and in it callsuper().write(new_cmd). Subclasses that define a new hardware communication should instead overridewrite_raw.- Parameters:
cmd – The string to send to the instrument.
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- write_raw(cmd: str) None¶
Low level method to write a command string to the hardware.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overridewrite.- Parameters:
cmd – The string to send to the instrument.
- IDN¶
Standard IDN parameter, which queries the instrument for its ID
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
- class semi_cr.core.lab.instrument.pcb.RoutedPCB(*args: Any, **kwargs: Any)[source]¶
Bases:
PCB- property graph: MultiDiGraph¶
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- ask(cmd: str) str¶
Write a command string to the hardware and return a response.
Subclasses that transform
cmdshould override this method, and in it callsuper().ask(new_cmd). Subclasses that define a new hardware communication should instead overrideask_raw.- Parameters:
cmd – The string to send to the instrument.
- Returns:
response
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- ask_raw(cmd: str) str¶
Low level method to write to the hardware and return a response.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overrideask.- Parameters:
cmd – The string to send to the instrument.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- close() None¶
Irreversibly stop this instrument and free its resources.
Subclasses should override this if they have other specific resources to close.
- classmethod close_all() None¶
Try to close all instruments registered in
_all_instrumentsThis is handy for use with atexit to ensure that all instruments are closed when a python session is closed.Examples
>>> atexit.register(qc.Instrument.close_all())
- connect_message(idn_param: str = 'IDN', begin_time: float | None = None) None¶
Print a standard message on initial connection to an instrument.
- Parameters:
idn_param – Name of parameter that returns ID dict. Default
IDN.begin_time –
time.time()when init started. Default isself._t0, set at start ofInstrument.__init__.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- static exist(name: str, instrument_class: type[Instrument] | None = None) bool¶
Check if an instrument with a given names exists (i.e. is already instantiated).
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- classmethod find_instrument(name: str, instrument_class: type[T] | None = None) T | Instrument¶
Find an existing instrument by name.
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- Returns:
The instrument found.
- Raises:
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- get_idn() dict[str, str | None]¶
Override Instrument.get_idn so QCoDeS never calls self.ask(’*IDN?’).
- classmethod instances() list[Self]¶
Get all currently defined instances of this instrument class.
You can use this to get the objects back if you lose track of them, and it’s also used by the test system to find objects to test against.
- Returns:
A list of instances.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- static is_valid(instr_instance: Instrument) bool¶
Check if a given instance of an instrument is valid: if an instrument has been closed, its instance is not longer a “valid” instrument.
- Parameters:
instr_instance – Instance of an Instrument class or its subclass.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: InstrumentBase | None¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- classmethod record_instance(instance: Instrument) None¶
Record (a weak ref to) an instance in a class’s instance list.
Also records the instance in list of all instruments, and verifies that there are no other instruments with the same name.
This method is called after initialization of the instrument is completed.
- Parameters:
instance – Instance to record.
- Raises:
KeyError – If another instance with the same name is already present.
- classmethod remove_instance(instance: Instrument) None¶
Remove a particular instance from the record.
- Parameters:
instance – The instance to remove
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- write(cmd: str) None¶
Write a command string with NO response to the hardware.
Subclasses that transform
cmdshould override this method, and in it callsuper().write(new_cmd). Subclasses that define a new hardware communication should instead overridewrite_raw.- Parameters:
cmd – The string to send to the instrument.
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- write_raw(cmd: str) None¶
Low level method to write a command string to the hardware.
Subclasses that define a new hardware communication should override this method. Subclasses that transform
cmdshould instead overridewrite.- Parameters:
cmd – The string to send to the instrument.
- IDN¶
Standard IDN parameter, which queries the instrument for its ID
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
semi_cr.core.lab.instrument.qcodes_d5a module¶
- class semi_cr.core.lab.instrument.qcodes_d5a.QCoDesD5a(name: str, port: str, module: int, reset_voltages: bool = False)[source]¶
Bases:
objectD5a 16-channel DAC backed by the QCoDeS contrib driver.
A thin wrapper that opens the SPI rack connection and exposes the underlying QCoDeS instrument as
driver. Channels and spans are accessed directly via QCoDeS parameters ondriver:driver.dac1 … driver.dac16 — voltage parameters (V) driver.span1 … driver.span16 — span parameters (‘4v uni’, ‘4v bi’, ‘2v bi’)
Changing a span parameter updates the corresponding dac validator automatically.
- Example (hardware connected on /dev/ttyACM0, module slot 2):
>>> supply = QCoDesD5a("d5a_0", port="/dev/ttyACM0", module=2) >>> supply.driver.dac1(1.5) >>> supply.driver.dac1() 1.5 >>> supply.driver.span1() '4v bi' >>> supply.driver.span1('2v bi') # restrict channel 1 to ±2 V
Connect to a D5a module inside an SPI rack.
- Parameters:
name – Unique QCoDeS instrument name (e.g. “d5a_0”).
port – Serial port of the SPI rack (e.g. “/dev/ttyACM0”).
module – Module slot number of the D5a inside the SPI rack.
reset_voltages – If True, zero all DAC outputs on connect.
semi_cr.core.lab.instrument.routable_cqcc module¶
semi_cr.core.lab.instrument.routable_dmm module¶
- class semi_cr.core.lab.instrument.routable_dmm.DMMVoltageInput(parent, name: str, role: str | None = None)[source]¶
Bases:
InstrumentModule,Routable- property graph: MultiDiGraph¶
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: _TIB_co¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
- class semi_cr.core.lab.instrument.routable_dmm.QcodesDMM(*args: Any, **kwargs: Any)[source]¶
Bases:
Keysight34465A,ConnectionRoutableCreate an instance of the instrument.
- Parameters:
name – Name used by QCoDeS. Appears in the DataSet
address – Visa-resolvable instrument address.
silent – If True, the connect_message of the instrument is suppressed. Default: False
**kwargs – kwargs are forwarded to base class.
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- abort_measurement() None¶
Abort a measurement in progress, returning the instrument to the trigger idle state.
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property address: str | None¶
The VISA resource name used to connect to this instrument. Note that pyvisa normalizes the resource name when connecting, so this may not be exactly the same as the address that was passed in when creating the instrument.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- ask(cmd: str) str¶
Write a command string to the hardware and return a response.
Subclasses that transform
cmdshould override this method, and in it callsuper().ask(new_cmd). Subclasses that define a new hardware communication should instead overrideask_raw.- Parameters:
cmd – The string to send to the instrument.
- Returns:
response
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- ask_raw(cmd: str) str¶
Low-level interface to
visa_handle.ask.- Parameters:
cmd – The command to send to the instrument.
- Returns:
The instrument’s response.
- Return type:
- autorange_once() None¶
Performs immediate autorange and then turns autoranging off.
The value of the range parameter is also updated.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- classmethod close_all() None¶
Try to close all instruments registered in
_all_instrumentsThis is handy for use with atexit to ensure that all instruments are closed when a python session is closed.Examples
>>> atexit.register(qc.Instrument.close_all())
- connect_message(idn_param: str = 'IDN', begin_time: float | None = None) None¶
Print a standard message on initial connection to an instrument.
- Parameters:
idn_param – Name of parameter that returns ID dict. Default
IDN.begin_time –
time.time()when init started. Default isself._t0, set at start ofInstrument.__init__.
- decrease_range(range_value: float | None = None, decrease_by: int = -1) None¶
Decrease the voltage range by a certain amount with default of -1. If limit is reached, the min range is used.
- Parameters:
range_value – The desired voltage range needed. Expressed by power of 10^x range from -3 to 10
decrease_by – How much to decrease range by, default behavior is by a step of one.
- default_terminator = '\n'¶
The default terminator to use if the terminator is not specified when creating the instrument. None means use the default terminator from PyVisa.
- default_timeout = 5¶
The default timeout in seconds if the timeout is not specified when creating the instrument. None means no timeout e.g. wait forever.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- error() tuple[int, str]¶
Return the first error message in the queue. It also clears it from the error queue.
Up to 20 errors can be stored in the instrument’s error queue. Error retrieval is first-in-first-out (FIFO).
If more than 20 errors have occurred, the most recent error stored in the queue is replaced with -350,”Queue overflow”. No additional errors are stored until you remove errors from the queue. If no errors have occurred when you read the error queue, the instrument responds with +0,”No error”.
- Returns:
The error code and the error message.
- static exist(name: str, instrument_class: type[Instrument] | None = None) bool¶
Check if an instrument with a given names exists (i.e. is already instantiated).
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- fetch() ndarray[tuple[int, ...], dtype[float64]]¶
Waits for measurements to complete and copies all available measurements to the instrument’s output buffer. The readings remain in reading memory.
This query does not erase measurements from the reading memory. You can call this method multiple times to retrieve the same data.
- Returns:
a 1D numpy array of all measured values that are currently in the reading memory
- classmethod find_instrument(name: str, instrument_class: type[T] | None = None) T | Instrument¶
Find an existing instrument by name.
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- Returns:
The instrument found.
- Raises:
- flush_error_queue(verbose: bool = True) None¶
Clear the instrument error queue, and prints it.
- Parameters:
verbose – If true, the error messages are printed. Default: True.
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- get_idn() dict[str, str | None]¶
Parse a standard VISA
*IDN?response into an ID dict.Even though this is the VISA standard, it applies to various other types as well, such as IPInstruments, so it is included here in the Instrument base class.
Override this if your instrument does not support
*IDN?or returns a nonstandard IDN string. This string is supposed to be a comma-separated list of vendor, model, serial, and firmware, but semicolon and colon are also common separators so we accept them here as well.- Returns:
A dict containing vendor, model, serial, and firmware.
- property graph: MultiDiGraph¶
- increase_range(range_value: float | None = None, increase_by: int = 1) None¶
Increases the voltage range by a certain amount with default of 1. If limit is reached, the max range is used.
- Parameters:
range_value – The desired voltage range needed. Expressed by power of 10^x range from -3 to 10
increase_by – How much to increase range by, default behavior is by a step of one.
- init_measurement() None¶
Change the state of the triggering system from “idle” to “wait-for-trigger”, and clear the previous set of measurements from reading memory.
This method is an “overlapped” command. This means that after executing it, you can send other commands that do not affect the measurements.
Storing measurements in reading memory with this method is faster than sending measurements to the instrument’s output buffer using read method (“READ?” command) (provided you do not fetch, “FETCh?” command, until done).
- classmethod instances() list[Self]¶
Get all currently defined instances of this instrument class.
You can use this to get the objects back if you lose track of them, and it’s also used by the test system to find objects to test against.
- Returns:
A list of instances.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- static is_valid(instr_instance: Instrument) bool¶
Check if a given instance of an instrument is valid: if an instrument has been closed, its instance is not longer a “valid” instrument.
- Parameters:
instr_instance – Instance of an Instrument class or its subclass.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: InstrumentBase | None¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- read() ndarray[tuple[int, ...], dtype[float64]]¶
Starts a new set of measurements, waits for all measurements to complete, and transfers all available measurements.
This method is similar to calling
init_measurement()followed immediately byfetch().- Returns:
a 1D numpy array of all measured values
- classmethod record_instance(instance: Instrument) None¶
Record (a weak ref to) an instance in a class’s instance list.
Also records the instance in list of all instruments, and verifies that there are no other instruments with the same name.
This method is called after initialization of the instrument is completed.
- Parameters:
instance – Instance to record.
- Raises:
KeyError – If another instance with the same name is already present.
- classmethod remove_instance(instance: Instrument) None¶
Remove a particular instance from the record.
- Parameters:
instance – The instance to remove
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- reset() None¶
Reset the instrument to factory defaults. Also updates the snapshot to reflect the new (default) values of parameters.
- property resource_manager: ResourceManager | None¶
The VISA resource manager used by this instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- set_address(address: str, visalib: str | None) None¶
Set the address for this instrument. Note in most cases this method is not recommended and it is better to close the instrument and create a new instance of the instrument with the new address.
- Parameters:
address – The visa resource name to use to connect. The address should be the actual address and just that. If you wish to change the backend for VISA, use the visalib argument
visalib – Visa backend to use when connecting to this instrument. If not supplied use the default backend.
- set_terminator(terminator: str | None) None¶
Change the read terminator to use.
- Parameters:
terminator – Character(s) to look for at the end of a read and to end each write command with. eg.
\r\n. If None the terminator will not be set.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = True, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If True, update the state by querying the instrument. If None only update if the state is known to be invalid. If False, just use the latest values in memory and never update.
params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- property visa_handle: MessageBasedResource¶
The VISA resource used by this instrument.
- write(cmd: str) None¶
Write a command string with NO response to the hardware.
Subclasses that transform
cmdshould override this method, and in it callsuper().write(new_cmd). Subclasses that define a new hardware communication should instead overridewrite_raw.- Parameters:
cmd – The string to send to the instrument.
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- write_raw(cmd: str) None¶
Low-level interface to
visa_handle.write.- Parameters:
cmd – The command to send to the instrument.
- model¶
The model number of the instrument
- ranges¶
A list of the available voltage ranges
- NPLC_list¶
A list of the available Power Line Cycle settings
- sense_function¶
Parameter sense_function
- line_frequency¶
The frequency of the power line where the instrument is plugged
- NPLC¶
Sets the integration time in number of power line cycles (PLC) for DC voltage and ratio measurements. Integration time is the period that the instrument’s analog-to-digital (A/D) converter samples the input signal for a measurement. A longer integration time gives better measurement resolution but slower measurement speed.
Only integration times of 1, 10, or 100 PLC provide normal mode (line frequency noise) rejection.
Setting the integration time also sets the measurement resolution.
- range¶
Parameter range
- resolution¶
Selects the measurement resolution for DC voltage and ratio measurements. The resolution is specified in the same units as the selected measurement function, not in number of digits.
You can also specify MIN (best resolution) or MAX (worst resolution).
To achieve normal mode (line frequency noise) rejection, use a resolution that corresponds to an integration time that is an integral number of power line cycles.
Refer to “Resolution Table” or “Range, Resolution and NPLC” sections of the instrument’s manual for the available ranges for the resolution values.
- autorange¶
Parameter autorange
- autozero¶
Disables or enables the autozero mode for DC voltage and ratio measurements.
- ON:
the DMM internally measures the offset following each measurement. It then subtracts that measurement from the preceding reading. This prevents offset voltages present on the DMM’s input circuitry from affecting measurement accuracy.
- OFF:
the instrument uses the last measured zero measurement and subtracts it from each measurement. It takes a new zero measurement each time you change the function, range or integration time.
- ONCE:
the instrument takes one zero measurement and sets autozero OFF. The zero measurement taken is used for all subsequent measurements until the next change to the function, range or integration time. If the specified integration time is less than 1 PLC, the zero measurement is taken at 1 PLC to optimize noise rejection. Subsequent measurements are taken at the specified fast (< 1 PLC) integration time.
- aperture_mode¶
Enables the setting of integration time in seconds (called aperture time) for DC voltage measurements. If aperture time mode is disabled (default), the integration time is set in PLC (power-line cycles).
- aperture_time¶
Specifies the integration time in seconds (called aperture time) with 2 µs resolution for DC voltage measurements.
Use this command for precise control of the DMM’s integration time. Use NPLC for better power-line noise rejection characteristics (NPLC > 1).
Setting the aperture time automatically enables the aperture mode.
- display¶
Instrument module display
- trigger¶
Instrument module trigger
- sample¶
Instrument module sample
- volt¶
Parameter volt
- curr¶
Parameter curr
- ac_volt¶
Parameter ac_volt
- ac_curr¶
Parameter ac_curr
- res¶
Parameter res
- four_wire_res¶
Parameter four_wire_res
- timetrace_npts¶
Parameter timetrace_npts
- timetrace_dt¶
Parameter timetrace_dt
- time_axis¶
Parameter time_axis
- timetrace¶
Parameter timetrace
- timeout¶
- IDN¶
Standard IDN parameter, which queries the instrument for its ID
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
semi_cr.core.lab.instrument.routable_keithley module¶
- class semi_cr.core.lab.instrument.routable_keithley.RoutableSMUChannel(parent: Keithley2600, name: str, channel: str)[source]¶
Bases:
Keithley2600Channel,Routable- Parameters:
parent – The Instrument instance to which the channel is to be attached.
name – The ‘colloquial’ name of the channel
channel – The name used by the Keithley, i.e. either ‘smua’ or ‘smub’
- property graph: MultiDiGraph¶
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: _TIB_co¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- setup_fastsweep(inner: _LinSweepLike, outer: _LinSweepLike | None = None, mode: Literal['IV', 'VI', 'VIfourprobe'] = 'IV', measure_inner_channel: bool = True) None¶
Configure a 1D or 2D fastsweep using sweep objects.
Accepts any object implementing the
_LinSweepLikeprotocol. The canonical example isqcodes.dataset.LinSweep.Both 1D and 2D sweeps execute entirely on the instrument via Lua scripts, minimizing communication overhead.
For 1D sweeps, provide only the inner sweep. For 2D sweeps, provide both inner and outer sweeps. The inner sweep runs to completion for each step of the outer sweep.
The channels are determined by the sweep parameters you provide. After calling setup_fastsweep, call
fastsweepon the inner channel (the channel from the first sweep object) to execute the measurement.- Parameters:
inner – Sweep object for the inner (fast) axis. Must have
param,delay,num_pointsattributes and aget_setpoints()method. Seeqcodes.dataset.LinSweepfor an example. The channel is determined fromparam.instrument.channel.outer – Optional sweep object for the outer (slow) axis. If provided, performs a 2D sweep.
mode – Sweep mode - ‘IV’ (sweep voltage, measure current), ‘VI’ (sweep current, measure voltage), or ‘VIfourprobe’ (four-probe VI measurement).
measure_inner_channel – If True (default), measure on the inner sweep channel. If False, measure on the opposite sweep channel as inner. This allows measuring a response on a different channel than the one being swept. For example, sweep voltage on smua while measuring current on smub.
Example 1D:
>>> from qcodes.dataset import LinSweep >>> keith.smua.setup_fastsweep(LinSweep(keith.smua.volt, 0, 1, 100)) >>> ds, _, _ = do0d(keith.smua.fastsweep)
Example 2D (inner=smua, outer=smub):
>>> keith.smua.setup_fastsweep( ... LinSweep(keith.smua.volt, 0, 1, 100), # inner ... LinSweep(keith.smub.volt, 0, 0.5, 20), # outer ... ) >>> ds, _, _ = do0d(keith.smua.fastsweep) # call on inner channel
Example 2D (inner=smub, outer=smua):
>>> keith.smua.setup_fastsweep( ... LinSweep(keith.smub.volt, 0, 1, 100), # inner ... LinSweep(keith.smua.volt, 0, 0.5, 20), # outer ... ) >>> ds, _, _ = do0d(keith.smub.fastsweep) # call on inner channel
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- volt¶
Parameter volt
- curr¶
Parameter curr
- res¶
Parameter res
- mode¶
Selects the output source type. Can be either voltage or current.
- output¶
Parameter output
- linefreq¶
Parameter linefreq
- nplc¶
Number of power line cycles, used to perform measurements
- four_wire_measurement¶
Enable or disables four-wire (remote) sense mode.
- sourcerange_v¶
The range used when sourcing voltage This affects the range and the precision of the source.
- source_autorange_v_enabled¶
Set autorange on/off for source voltage.
- measurerange_v¶
The range to perform voltage measurements in. This affects the range and the precision of the measurement. Note that if you both measure and source current this will have no effect, set sourcerange_v instead
- measure_autorange_v_enabled¶
Set autorange on/off for measure voltage.
- sourcerange_i¶
The range used when sourcing current This affects the range and the precision of the source.
- source_autorange_i_enabled¶
Set autorange on/off for source current.
- measurerange_i¶
The range to perform current measurements in. This affects the range and the precision of the measurement. Note that if you both measure and source current this will have no effect, set sourcerange_i instead
- measure_autorange_i_enabled¶
Set autorange on/off for measure current.
- limitv¶
Voltage limit e.g. the maximum voltage allowed in current mode. If exceeded the current will be clipped.
- limiti¶
Current limit e.g. the maximum current allowed in voltage mode. If exceeded the voltage will be clipped.
- fastsweep¶
Performs a fast sweep. Configure with setup_fastsweep() before use.
Call
fastsweepon the inner channel (the one from the firstLinSweep). Calling this parameter (or using.get()) returns the fast sweep data as a NumPyndarraywith shape determined by the configured sweep(s).Direct usage (returns ndarray)
Example 1D:
>>> from qcodes.dataset import LinSweep >>> keith.smua.setup_fastsweep(LinSweep(keith.smua.volt, 0, 1, 100)) >>> data = keith.smua.fastsweep() # or: keith.smua.fastsweep.get() >>> data.shape (100,)
Example 2D (inner=smub, outer=smua):
>>> from qcodes.dataset import LinSweep >>> keith.smua.setup_fastsweep( ... LinSweep(keith.smub.volt, 0, 1, 100), # inner ... LinSweep(keith.smua.volt, 0, 0.5, 20), # outer ... ) >>> data = keith.smub.fastsweep() # call on inner channel >>> data.shape (20, 100)
Dataset logging with do0d
To log the fast sweep into a QCoDeS dataset, use
do0d()with thefastsweepparameter:>>> from qcodes.dataset import LinSweep, do0d >>> keith.smua.setup_fastsweep(LinSweep(keith.smua.volt, 0, 1, 100)) >>> ds, _, _ = do0d(keith.smua.fastsweep)
For a 2D sweep (inner=smub, outer=smua):
>>> from qcodes.dataset import LinSweep, do0d >>> keith.smua.setup_fastsweep( ... LinSweep(keith.smub.volt, 0, 1, 100), # inner ... LinSweep(keith.smua.volt, 0, 0.5, 20), # outer ... )
- timetrace_npts¶
Parameter timetrace_npts
- timetrace_dt¶
Parameter timetrace_dt
- time_axis¶
Parameter time_axis
- timetrace¶
Parameter timetrace
- timetrace_mode¶
Parameter timetrace_mode
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
- class semi_cr.core.lab.instrument.routable_keithley.SMUTerminal(parent: RoutableSMUChannel, name: str, terminal_type: Literal['force_hi', 'force_lo', 'sense_hi', 'sense_lo'])[source]¶
Bases:
InstrumentModule,Routable- property graph: MultiDiGraph¶
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: _TIB_co¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = False, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If
True, update the state by querying the instrument. If None update the state if known to be invalid. IfFalse, just use the latest values in memory and never update state.params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶
- class semi_cr.core.lab.instrument.routable_keithley.QcodesSMU(*args: Any, **kwargs: Any)[source]¶
Bases:
Keithley2636B,ConnectionRoutable- Parameters:
name – Name to use internally in QCoDeS
address – VISA resource address
**kwargs – kwargs are forwarded to base class.
- __getitem__(key: str) Callable[[...], Any] | Parameter¶
Delegate instrument[‘name’] to parameter or function ‘name’.
Note
This is deprecated. Use attributes directly or if dynamic attribute required look up via .parameters or .functions dictionaries
- add_function(name: str, **kwargs: Any) None¶
Bind one
Functionto this instrument.Instrument subclasses can call this repeatedly in their
__init__for every real function of the instrument.This functionality is meant for simple cases, principally things that map to simple commands like
*RST(reset) or those with just a few arguments. It requires a fixed argument count, and positional args only.Note
We do not recommend the usage of Function for any new driver. Function does not add any significant features over a method defined on the class.
- Parameters:
name – How the Function will be stored within
instrument.Functionsand also how you address it using the shortcut methods:instrument.call(func_name, *args)etc.**kwargs – constructor kwargs for
Function
- Raises:
KeyError – If this instrument already has a function with this name.
- add_parameter(name: str, parameter_class: type[TParameter] | None = None, **kwargs: Any) TParameter¶
Bind one Parameter to this instrument.
Instrument subclasses can call this repeatedly in their
__init__for every real parameter of the instrument.In this sense, parameters are the state variables of the instrument, anything the user can set and/or get.
- Parameters:
name – How the parameter will be stored within
parametersand also how you address it using the shortcut methods:instrument.set(param_name, value)etc.parameter_class – You can construct the parameter out of any class. Default
parameters.Parameter.**kwargs – Constructor arguments for
parameter_class.
- Raises:
KeyError – If this instrument already has a parameter with this name and the parameter being replaced is not an abstract parameter.
ValueError – If there is an existing abstract parameter and the unit of the new parameter is inconsistent with the existing one.
- Returns:
The created Parameter.
- add_submodule(name: str, submodule: TSubmodule) TSubmodule¶
Bind one submodule to this instrument.
Instrument subclasses can call this repeatedly in their
__init__method for every submodule of the instrument.Submodules can effectively be considered as instruments within the main instrument, and should at minimum be snapshottable. For example, they can be used to either store logical groupings of parameters, which may or may not be repeated, or channel lists. They should either be an instance of an
InstrumentModuleor aChannelTuple.- Parameters:
name – How the submodule will be stored within
instrument.submodulesand also how it can be addressed.submodule – The submodule to be stored.
- Raises:
- Returns:
The submodule.
- property address: str | None¶
The VISA resource name used to connect to this instrument. Note that pyvisa normalizes the resource name when connecting, so this may not be exactly the same as the address that was passed in when creating the instrument.
- property ancestors: tuple[InstrumentBase, ...]¶
Ancestors in the form of a list of
InstrumentBaseThe list starts with the current module then the parent and the parents parent until the root instrument is reached.
- ask(cmd: str) str¶
Override of normal ask. This is important, since queries to the instrument must be wrapped in ‘print()’
- ask_raw(cmd: str) str¶
Low-level interface to
visa_handle.ask.- Parameters:
cmd – The command to send to the instrument.
- Returns:
The instrument’s response.
- Return type:
- call(func_name: str, *args: Any) Any¶
Shortcut for calling a function from its name.
- Parameters:
func_name – The name of a function of this instrument.
*args – any arguments to the function.
- Returns:
The return value of the function.
Note
This is deprecated. Call the function directly.
- classmethod close_all() None¶
Try to close all instruments registered in
_all_instrumentsThis is handy for use with atexit to ensure that all instruments are closed when a python session is closed.Examples
>>> atexit.register(qc.Instrument.close_all())
- connect_message(idn_param: str = 'IDN', begin_time: float | None = None) None¶
Print a standard message on initial connection to an instrument.
- Parameters:
idn_param – Name of parameter that returns ID dict. Default
IDN.begin_time –
time.time()when init started. Default isself._t0, set at start ofInstrument.__init__.
- default_terminator = '\n'¶
The default terminator to use if the terminator is not specified when creating the instrument. None means use the default terminator from PyVisa.
- default_timeout = 5¶
The default timeout in seconds if the timeout is not specified when creating the instrument. None means no timeout e.g. wait forever.
- delegate_attr_dicts = ['parameters', 'functions', 'submodules']¶
A list of names (strings) of dictionaries which are (or will be) attributes of
self, whose keys should be treated as attributes ofself.
- delegate_attr_objects = []¶
A list of names (strings) of objects which are (or will be) attributes of
self, whose attributes should be passed through toself.
- static exist(name: str, instrument_class: type[Instrument] | None = None) bool¶
Check if an instrument with a given names exists (i.e. is already instantiated).
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- classmethod find_instrument(name: str, instrument_class: type[T] | None = None) T | Instrument¶
Find an existing instrument by name.
- Parameters:
name – Name of the instrument.
instrument_class – The type of instrument you are looking for.
- Returns:
The instrument found.
- Raises:
- property full_name: str¶
Full name of the instrument.
For an
InstrumentModulethis includes all parents separated by_
- get(param_name: str) Any¶
Shortcut for getting a parameter from its name.
- Parameters:
param_name – The name of a parameter of this instrument.
- Returns:
The current value of the parameter.
Note
This is deprecated. Call get directly on the parameter.
- get_component(full_name: str) MetadatableWithName¶
Recursively get a component of the instrument by full_name.
- Parameters:
full_name – The name of the component to get.
- Returns:
The component with the given name.
- Raises:
KeyError – If the component does not exist.
- get_idn() dict[str, str | None]¶
Parse a standard VISA
*IDN?response into an ID dict.Even though this is the VISA standard, it applies to various other types as well, such as IPInstruments, so it is included here in the Instrument base class.
Override this if your instrument does not support
*IDN?or returns a nonstandard IDN string. This string is supposed to be a comma-separated list of vendor, model, serial, and firmware, but semicolon and colon are also common separators so we accept them here as well.- Returns:
A dict containing vendor, model, serial, and firmware.
- property graph: MultiDiGraph¶
- classmethod instances() list[Self]¶
Get all currently defined instances of this instrument class.
You can use this to get the objects back if you lose track of them, and it’s also used by the test system to find objects to test against.
- Returns:
A list of instances.
- invalidate_cache() None¶
Invalidate the cache of all parameters on the instrument. Calling this method will recursively mark the cache of all parameters on the instrument and any parameter on instrument modules as invalid.
This is useful if you have performed manual operations (e.g. using the frontpanel) which changes the state of the instrument outside QCoDeS.
This in turn means that the next snapshot of the instrument will trigger a (potentially slow) reread of all parameters of the instrument if you pass update=None to snapshot.
- static is_valid(instr_instance: Instrument) bool¶
Check if a given instance of an instrument is valid: if an instrument has been closed, its instance is not longer a “valid” instrument.
- Parameters:
instr_instance – Instance of an Instrument class or its subclass.
- load_metadata(metadata: Mapping[str, Any]) None¶
Load metadata into this classes metadata dictionary.
- Parameters:
metadata – Metadata to load.
- property name: str¶
Full name of the instrument
This is equivalent to
full_name()for backwards compatibility.
- property name_parts: list[str]¶
A list of all the parts of the instrument name from
root_instrument()to the currentInstrumentModule.
- omit_delegate_attrs = []¶
A list of attribute names (strings) to not delegate to any other dictionary or object.
- property parent: InstrumentBase | None¶
The parent instrument. By default, this is
None. Any SubInstrument should subclass this to return the parent instrument.
- print_readable_snapshot(update: bool = False, max_chars: int = 80) None¶
Prints a readable version of the snapshot. The readable snapshot includes the name, value and unit of each parameter. A convenience function to quickly get an overview of the status of an instrument.
- Parameters:
update – If
True, update the state by querying the instrument. IfFalse, just use the latest values in memory. This argument gets passed to the snapshot function.max_chars – the maximum number of characters per line. The readable snapshot will be cropped if this value is exceeded. Defaults to 80 to be consistent with default terminal width.
- classmethod record_instance(instance: Instrument) None¶
Record (a weak ref to) an instance in a class’s instance list.
Also records the instance in list of all instruments, and verifies that there are no other instruments with the same name.
This method is called after initialization of the instrument is completed.
- Parameters:
instance – Instance to record.
- Raises:
KeyError – If another instance with the same name is already present.
- classmethod remove_instance(instance: Instrument) None¶
Remove a particular instance from the record.
- Parameters:
instance – The instance to remove
- remove_parameter(name: str) None¶
Remove a Parameter from this instrument.
Unlike modifying the parameters dict directly, this method will make sure that the parameter is properly unbound from the instrument if the parameter is added as a real attribute to the instrument. If a property of the same name exists it will not be modified. If name is an attribute but not a parameter, it will not be modified.
- Parameters:
name – The name of the parameter to remove.
- Raises:
KeyError – If the parameter does not exist on the instrument.
- property resource_manager: ResourceManager | None¶
The VISA resource manager used by this instrument.
- property root_instrument: InstrumentBase¶
The topmost parent of this module.
For the
root_instrumentthis isself.
- set(param_name: str, value: Any) None¶
Shortcut for setting a parameter from its name and new value.
- Parameters:
param_name – The name of a parameter of this instrument.
value – The new value to set.
Note
This is deprecated. Call set directly on the parameter.
- set_address(address: str, visalib: str | None) None¶
Set the address for this instrument. Note in most cases this method is not recommended and it is better to close the instrument and create a new instance of the instrument with the new address.
- Parameters:
address – The visa resource name to use to connect. The address should be the actual address and just that. If you wish to change the backend for VISA, use the visalib argument
visalib – Visa backend to use when connecting to this instrument. If not supplied use the default backend.
- set_terminator(terminator: str | None) None¶
Change the read terminator to use.
- Parameters:
terminator – Character(s) to look for at the end of a read and to end each write command with. eg.
\r\n. If None the terminator will not be set.
- property short_name: str¶
Short name of the instrument.
For an
InstrumentModulethis does not include any parent names.
- snapshot(update: bool | None = False) dict[str, Any]¶
Decorate a snapshot dictionary with metadata. DO NOT override this method if you want metadata in the snapshot instead, override
snapshot_base().- Parameters:
update – Passed to snapshot_base.
- Returns:
Base snapshot.
- snapshot_base(update: bool | None = True, params_to_skip_update: Sequence[str] | None = None) dict[Any, Any]¶
State of the instrument as a JSON-compatible dict (everything that the custom JSON encoder class
NumpyJSONEncodersupports).- Parameters:
update – If True, update the state by querying the instrument. If None only update if the state is known to be invalid. If False, just use the latest values in memory and never update.
params_to_skip_update – List of parameter names that will be skipped in update even if update is True. This is useful if you have parameters that are slow to update but can be updated in a different way (as in the qdac). If you want to skip the update of certain parameters in all snapshots, use the
snapshot_getattribute of those parameters instead.
- Returns:
base snapshot
- Return type:
- validate_status(verbose: bool = False) None¶
Validate the values of all gettable parameters
The validation is done for all parameters that have both a get and set method.
- Parameters:
verbose – If
True, then information about the parameters that are being check is printed.
- property visa_handle: MessageBasedResource¶
The VISA resource used by this instrument.
- write(cmd: str) None¶
Write a command string with NO response to the hardware.
Subclasses that transform
cmdshould override this method, and in it callsuper().write(new_cmd). Subclasses that define a new hardware communication should instead overridewrite_raw.- Parameters:
cmd – The string to send to the instrument.
- Raises:
Exception – Wraps any underlying exception with extra context, including the command and the instrument.
- write_raw(cmd: str) None¶
Low-level interface to
visa_handle.write.- Parameters:
cmd – The command to send to the instrument.
- channels¶
- display_settext¶
Parameter display_settext
- timeout¶
- IDN¶
Standard IDN parameter, which queries the instrument for its ID
- parameters¶
All the parameters supported by this instrument. Usually populated via
add_parameter().
- functions¶
All the functions supported by this instrument. Usually populated via
add_function().
- submodules¶
All the submodules of this instrument such as channel lists or logical groupings of parameters. Usually populated via
add_submodule().
- instrument_modules¶
All the
InstrumentModuleof this instrument Usually populated viaadd_submodule().
- log¶
- metadata¶