Releases: microsoft/Qcodes
QCoDeS 0.50.1
QCoDeS 0.50.1 (2024-11-28)
Improved:
- Fix a regression introduced in 0.50.0 where a DelegateParameter initialized with a None source
would not correctly call get/set on the source parameter when this has been set. #6671
QCoDeS 0.50.0
QCoDeS 0.50.0 (2024-11-22)
Breaking Changes:
- QCoDeS no longer attempts to automatically disable Sypders User module reloader (UMR).
The code was no longer working correctly with the latest version of Spyder and is not
maintainable since Spyder does not have a public api to disable UMR. If you use
QCoDeS from an editable install it is strongly recommended to disable UMR for QCoDeS.
See :ref:gettingstarted
for more details. (#6647)
Improved:
- Improves the DataSetDefinition class to allow users to specify metadata to be added to the resulting dataset (#6643)
- DelegateParameter now reads delegated properties from source rather than setting them at source change.
This resolves an issue when delegating from another delegate parameter may result in incorrect attributes. (#6648)
New:
QCoDeS 0.49.0
QCoDeS 0.49.0 (2024-10-15)
Breaking Changes:
- The methods
get
,set
,call
and__getitem__
on theInstrumentBase
class have been deprecated.
Parameters can be looked up by name using theInstrument.parameters
dict and functions usinginstrument.functions
which is cleaner and fully equivalent. #6086 - The deprecated
qcodes.tests
module has been removed. Mock instruments can be found inqcodes.instrument_drivers.mock_instruments
and
DriverTestCase asqcodes.extensions.DriverTestCase
. #6480
Improved:
- The deprecated support for enabling OpenCensus based telemetry has been removed.
QCoDeS will now warn if you try to enable OpenCensus based telemetry in the config.
Users are encouraged to roll out their own telemetry solution if they need it based
on OpenTelemetry. This also means that theqcodes[opencensus]
install target has been removed.
The unused methodfilter_out_telemetry_log_records
has been deprecated and will be removed in a future release. #6439 - Parameters registered in a qcodes Measurement are now snapshotted and stored in the resulting dataset under
dataset.snapshot["parameters"]
#6487 - Group parmeter now accepts a callable that returns a string command as its
get_cmd
.
This is useful for the cases where the command string is dynamic; for example,
lambda: f"CMD {get_id_that_specifies_the_command()} ?"
. #6520
Improved Drivers:
- LakeShore335: Fix typo in setpoint_ramp parameter group #6430
- Add curve header parameters to Lakeshore model 336 that allows query of the input channel curve header.
This is useful to verify remotely if the correct temperature calibration curve is selected. #6520 - Fix Rigol DG4000 value mappings for
output_polarity
parameters. #6345
QCoDeS 0.48.0
QCoDeS 0.48.0 (2024-09-09)
Improved:
- Improve handling of corner cases where
Instrument.remove_parameter
could raise an exception. #6394 dond
now takes an optionalsqueeze
flag as input. Inspired by Matplotlib'splt.subplots
argument
of the same name, this allows the user to always get the same type returned from the function if set to False.
This makes it easier to write type checked code that usesdond
as a function. #6422
QCoDeS 0.47.0
QCoDeS 0.47.0 (2024-08-07)
Breaking Changes:
This release supports Python 3.10 and later.
Improved Drivers:
- Fixed the Harvard DecaDAC range not including the highest bit. #6076
- Fixed Keysight 34465A DMM firmware version parsing. #6076
- Fixed Oxford Instruments Triton section parsing. #6076
- The long deprecated aliases to channels on MiniCircuits UsbSPDT drivers have been removed. This means that
channel_a
should be replaced bya
and so on in any call to this driver. #6207 - Added power output parameters to LakeShore335 driver, allowing configuration of the maximum heater current. #6248
- Added input coupling and impedance parameters for channels in the Keysight Infiniium oscilloscope driver. #6293
- Added 'offset' parameter to Tektronix AWG Channels. #6303
- The
qcodes.instrument_drivers.american_magnetics.AMIModel430
driver can now be snapshotted with the heater missing or not enabled
without triggering warnings. Furthermore confusing aliases for parameters on the switch module have been deprecated since use of these would
lead to incorrect state of the parameters.
The aliasesqcodes.instrument_drivers.american_magnetics.AMI_430_visa.AMI430_3D
andqcodes.instrument_drivers.american_magnetics.AMI_430_visa.AMI430
have been deprecated. #6306 - Add setpoint ramp rate parameters to LakeShore335 driver,
this allows to configure the setpoint ramp rate. #6322 - Add setpoint ramp status parameter to LakeShore335 driver,
this allows to monitor a ongoing setpoint ramp. #6322
Other Changes:
- Improved error handling when checking experiment IDs in the experiment list. #6305
QCoDeS 0.46.0
QCoDeS 0.46.0 (2024-06-27)
Breaking Changes:
-
This will be the last version of QCoDeS to support Python 3.9
-
The keyword arguments expected to be passed to
InstrumentBase
andVisaInstrument
subclasses are now
documented as TypedDics classes that can be used to type**kwargs
in the subclass constructors.
SeeCreating QCoDeS instrument drivers
for usage examples.This also means that the these arguments must be passed as keyword arguments, and not as positional arguments.
This specifically includeds passinglabel
andmetadata
to direct subclasses ofInstrument
as well as
terminator
to subclasses ofVisaInstrument
.All drivers shipping with qcodes for Vendors from A-K have been updated in this pr.
The remaining drivers were updated in #6087. #6012 -
It is now considered unsupported to modify the
parameters
attribute of an instrument or instrument module after it has been created.
To remove a parameter from an instrument use theremove_parameter
method. #6174 -
InstrumentBase.add_parameter will now error if an attribute of the same name as the parameter added already exists and
this attribute is an instance ofParameterBase
. This is to prevent issues where a parameter is partially
overwritten by a new parameter. To remove the existing Parameter use the new `instrument.remove_parameter`` method.
If the attribute is not a ParameterBase this will instead warn. It is the intention that this becomes an error in the future.
#6174 #6211 -
Updated dond functions to to re-raise KeyboardInterrupt for better interrupt handling making it easier to stop long-running measurement
loops and reducing the need for kernel restarts. This meas that if you interrupt a `dond`` function with a keyboard interrupt not only
the measurement but any pending code to execute will be interrupted. In the process logging for interrupted measurements has been improved. #6192
Improved:
-
InstrumentBase.add_parameter
now returns the created parameter.
This allows explicitly assigning the parameter as an attribute on
the instrument class. This in turn enables type checkers and
documentation tools to detect the existence and type of the
parameter statically.QCoDeS ships with a tool to automatically refactor instruments in this way. To use
this tool qcodes should be installed with the refactor option e.g.pip install qcodes[refactor]
See
Creating-Instrument-Drivers <../examples/writing_drivers/Creating-Instrument-Drivers.ipynb>
__
for more details.It is the plan to transform all drivers shipping with QCoDeS in this way
as soon as possible. #4412 -
Accept sequences of values for setting
MultiChannelInstrumentParameter
s. Previously, the behavior was inconsistent sinceparam.set(param.get())
would error. #6073 -
Add update_snapshot argument to Station.load_instrument() #6075
-
Measurement.register_parameter() now tests for correct types of arguments setpoints and basis. #6084
Improved Drivers:
- The Agilent drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the Agilent drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. It is the plan to make the same change to all drivers shipping
with QCoDeS in the near future. #6089 - The Aim TTi drivers shipping with QCoDeS have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the Aim TTi drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6105 - Fix AlazarTech ATS drivers trying to create an instrument with invalid identifier as name #6106
- The Alazar Tech, American Magnetics, Basel, Cryomagnetics and Galil drivers shipping with QCoDeS
have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the same drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6113 - The HP, Harvard and Ithaco drivers shipping with QCoDeS
have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the same drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6114 - The Keithley drivers shipping with QCoDeS
have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the same drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6115 - The Keysight drivers shipping with QCoDeS
have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the same drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6125 - The Lakeshore drivers shipping with QCoDeS
have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the same drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6128 - The Minicircuits, Oxford, QDev, QuantumDesign, Rigol and Rohde & Schwarz drivers shipping with QCoDeS
have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the same drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6160 - The SignalHound, SRS, Stahl, Weinschel and Yokogawa drivers shipping with QCoDeS
have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the same drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6163 - The Tektronix drivers shipping with QCoDeS
have been updated to ensure all Parameters are set as static
attributes that are documented and can be type checked. The docs for the same drivers have been
updated to not document inherited members. This makes the documentation significantly more readable
as it focuses on specific members for a given instrument. The documentation now also links superclasses.
Please consult these for inherited members. #6164
QCoDeS 0.45.0
QCoDeS 0.45.0 (2024-05-03)
Breaking Changes:
-
The AMI drivers in
qcodes.instrument_drivers.american_magnetics.AMI430
and their submodules has been deprecated. Use theAMIModel430
and
AMIModel4303D
drivers fromqcodes.instrument_drivers.american_magnetics
instead. (#5712) -
QCoDeS is now type checked to ensure that subclasses are implemented in a way consistent with the parent class.
This has resulted in a number of changes to the API. The following is a list of the changes that have been made
to the API to make subclasses match their parent class. These changes are not expected to break any existing code, since they are
primarily in positional arguments or unused arguments.- The first argument to
NumpyJSONEncoder.default
has changed fromobj
too
to match the naming in the std libraryjson.JSONEncoder.default
. - Unused args
idn_part
andbeing_time
toQDevQDac.connect_message
have been changed toidn_param
andbegin_time
respectively to match the parent class. - Unused arguments to stub methods
DSOTraceParam.setpoints
,DSOTraceParam.unit
andFormattedSweep.setpoints
have been changed to match the parent class. - Alazar
DemodulationAcquisitionController.handle_buffer
the first argument has been renamed fromdata
tobuffer
to match the parent class. (#5721)
- The first argument to
-
The
qcodes.tests
module has been deprecated and will be removed in a future release. Please import mock instruments from
qcodes.instrument_drivers.mock_instruments
andDriverTestCase
fromqcodes.extensions
instead. If you make use of
any other part of the tests module please open an issue on GitHub. (#5732) -
Fix spelling of the 2 incorrectly spelled classes
qcodes.instrument_drivers.tektronix.TekronixDPOTrigger
and
qcodes.instrument_drivers.tektronix.TekronixDPOWaveform
to
qcodes.instrument_drivers.tektronix.TektronixDPOTrigger
andqcodes.instrument_drivers.tektronix.TektronixDPOWaveform
.
The old names have been deprecated and will be removed in a future release. (#5932) -
QCoDeS no longer installs opencensus and opencensus-ext-azure are no longer installed by default and opencensus integration is deprecated.
This means that the optionqcodes.config.telemetry.enabled
toTrue
is deprecated. For the time being opencensus and opencensus-ext-azure
can be installed by installing QCoDeS with the opencensus option e.g.pip install qcodes[opencensus]
. We however, recommend that any use
of this telemetry integration is replaced by the use of OpenTelemetry. QCoDeS will not include any telemetry integration but the codebase
has been instrumented using OpenTelemetry spans and python log messages enabling any user to collect telemetry if they should so wish. (#5991)
Improved:
- An issue where simulated instruments powered by pyvisa-sim could raise an error during the teardown has been resolved. (#5737)
- Add support for integer indexing in parameter paths in Station Files,
e.gchannel[0].voltage
orsigouts[0].enables[1].value
. (#5887) - Station.get_component and Instrument.get_component has gained the ability to lookup a component
on an instrument that is only added as a member of a chanellist/tuple and not added as an individual component. (#6009)
Improved Drivers:
-
Improved Stahl BS Voltage Source driver:
- accepts more floating-point formats in response from instrument
- allows connection to serial instrument over TCP/IP connection (#5888)
-
The driver for
Rohde&Schwarz SG100A
has been extendend with parameters
controlling the optional pulse modulation and trigger modules. (#5889) -
The drivers for
TektronixAWG5208
,TektronixAWG70001A
,TektronixAWG70001B
,TektronixAWG70002A
andTektronixAWG70002B
have gained the parameterall_output_off
to disable / enable all outputs as well as the methodchannel.clear_asset
to clear all asserts on a channel. (#5900) -
A number of new parameters are added to the Keysight N9030B Spectrum Analyzer to allow for Noise Spectral Density measurements.
In particular we add various parameters for switching the detectors into the appropriate modes, as well as allowing for
instrument parameters required for unit conversions to be saved in the snapshot.In addition, we use binary readout of the data and the ability to read data from the instrument buffer
(without taking a new trace), and to read averaged data. (#5963) -
Adds trace manipulation commands to the Keysight PNA driver. (#6035)
New:
-
Add a do2d_retrace function (#5780)
-
Added a new QCoDeS driver for the Cryomagnetics Model 4G superconducting magnet power supply.
The
CryomagneticsModel4G
driver provides an interface to control and communicate with the Cryomagnetics Model 4G
superconducting magnet power supply using the VISA protocol. It allows setting and reading the magnetic field, ramp rate,
and various other parameters of the instrument.Key features of the driver include:
-
Setting and reading the magnetic field in Tesla, considering the coil constant and current limits.
-
Controlling the ramp rate in Tesla per minute.
-
Checking the operating state of the magnet and handling quench conditions and power module failures.
-
Blocking and non-blocking ramping of the magnetic field.
-
Handling communication errors and retrying failed operations.
The driver is located in
qcodes/instrument_drivers/cryomagnetics/_cryomagnetics_4g.py
.For more details and usage examples, please refer to the driver's documentation:
https://microsoft.github.io/Qcodes/examples/driver_examples/Qcodes_example_with_cryomagnetics4g.html (#5968) -
-
Add methods to recursively search a chain of DelegateParameters and return either all the parameters in the chain or the 'root' parameter
These methods may also be used with custom Parameters which link to other parameters via different attribute namesAlso add infer_channel and infer_instrument methods to find the InstrumentModule or Instrument of the root parameter (#5998)
QCoDeS 0.44.1
QCoDeS 0.44.0
QCoDeS 0.44.0 (2024-01-24)
Breaking Changes:
-
The deprecated method
DataSetProtocol.cache.to_pandas
has been removed. Use the to_pandas_dataframe or to_pandas_dataframe_dict methods as an alternative. (#5626) -
The following long deprecated functions and methods and functionalities have been removed.
Here ordered by top level module for clarity.-
qcodes.dataset
-
flatten_1D_data_for_plot
-
get_shaped_data_by_runid
-
get_guids_from_run_spec
-
dataset.get_data_as_pandas_dataframe
-
dataset.export_path
-
_conditional_parameter_set
-
_make_nested_setpoints
-
_select_active_actions_delays
-
_create_measurements
-
_extract_paramters_by_type_and_group
-
_build_data_query
-
get_data
-
get_interdeps_from_result_table_name
-
get_values
-
get_setpoints
-
get_guids_from_run_spec
-
data_sets
-
modify_values
-
modify_many_values
-
-
qcodes.instrument_drivers.devices
/codes.parameters
VoltageDivider
-
qcodes.station
-
Support for driver kwarg in yaml config
-
Support for limits as a string.
-
-
qcodes.utils
get_qcodes_version
(#5651)
-
-
The following deprecated instrument drivers have been removed:
-
QDevil.QDac
Use driver from qcodes_contrib_drivers instead. -
Agilent_34400A
Use Keysight 344xxA drivers or Agilent34401A, Agilent34410A, Agilent34411A instead. -
E8267
useAgilentE8267C
instead. -
Agilent_E8527D
use AgilentE8257D instead.
The following deprecated instrument driver methods have been removed:
-
KeysightInfiniium
DSOTimeAxisParam.prepare_curvedata
-
KeysightB1517A.measure_config
replaced byv_measure_range_config
andi_measure_range_config
-
RohdeSchwarz ZNB
RohdeSchwarzZNBChannel.update_traces
useupdate_lin_traces
qcodes.utils.deprecate
decorator has been soft deprecated. In the future qcodes will use thedeprecated
decorator from
thetyping_extensions
package (to be part of the std library warnings module from Python 3.13). We recommend anyone else to
do the same. (#5655) -
Improved:
load_by_run_spec
andload_by_id
may now optionally load the dataset as a DataSetInMem from an exported netcdf file. This avoids reading
from the database potentially resulting in better performance. This option is off by default at the moment but can be turned on by setting
qcodes.config.dataset.load_from_exported_file
to True. (:pr:5320
)- When loading a QCoDeS dataset from a netcdf file using load_from_netcdf and converted to a Xarray dataset using
to_xarray_dataset
orcache.to_xarray_dataset
we avoid converting the data to QCoDeS format and back to Xarray format.
This should save time and avoid any potential corner cases when roundtripping the data. (:pr:5627
) - Fixed an issue where datasets with categorical setpoints could fail to correctly export to Pandas dataframes or Xarray dataset. (#5641)
Improved Drivers:
- Lakeshore 335: Add parameter mapping for thermocouple input when using 3060-H option (#5652)
QCoDeS 0.43.0
QCoDeS 0.43.0 (2024-01-04)
Improved:
- qcodes.Monitor now runs as a daemon thread, resolving issues with closing python or ipython with a running qcodes.Monitor. (#5565)
- The use of multi index when exporting to xarray (and netcdf files) has been made smarter
such that any dataset with a known shape (such as those measured by doNd etc) will
never be automatically exported using multi index even in the case of incomplete datasets (i.e. due to an interrupted measurement).
Furthermoreto_xarray_dataset
andto_xarray_dataarray_dict
have gained a key word argumentuse_multi_index
to allow the user
to control the use of multi indexes. (#5589) - The feature of exporting large DataSets to netcdf by writing individual small files and combining them, introduced in QCoDeS 0.41.0 has been made configurable
and turned off by default due to a number of corner cases where the export did not work correctly. The
feature can be enabled when required by setting the config variableqcodes.config.dataset.export_chunked_export_of_large_files_enabled
to True and the threshold controlled usingqcodes.config.dataset.export_chunked_threshold
(#5618)
Improved Drivers:
- Keithley 2450s by default don't block when setting their output level, differing in behavior from the keithley 2400.
I added a manual boolian parameter 'block_during_ramp' which forces a check that the ramp command has been completed when True. (#5547) - Previously, the keithley 2450 driver had an initial value for the output. This is particularly dangerous when reinitializing/recovering from a kernal crash.
Initializing the instrument should leave all parameters unchanged. This PR removes the initial value for the output. (#5572)
Under the hood:
- Fix typo: instrument_drivers.mock_instruments.DummyInstrument::get_idn() now returns dict containing key "serial" instead of "seral" (#5579)