Skip to content

Releases: microsoft/Qcodes

QCoDeS 0.54.1

02 Oct 17:53
724add7
Compare
Choose a tag to compare

QCoDeS 0.54.1 (2025-10-02)

New:

  • Exporting of data using xarray directly bypassing Pandas introduced in 0.54.0 has been temporarily disabled
    due to changes in output format with parameters measured in decreasing order. This will be revisited in a future release. (:pr:7546)

QCoDeS 0.54.0

01 Oct 17:47
97c0459
Compare
Choose a tag to compare

QCoDeS 0.54.0 (2025-10-01)

Breaking Changes:

  • Removal of deprecated code

    Removed modules:

    • Removed the deprecated qcodes.instrument_drivers.american_magnetics.AMI430 module. Use AMIModel4303D from qcodes.instrument_drivers.american_magnetics instead.
    • Removed the deprecated qcodes.utils.spyder_utils module containing the add_to_spyder_UMR_excludelist function. This utility was known to not work with latest Spyder versions and was unused in QCoDeS.

    Removed classes:

    • Removed the deprecated AMI430_3D and AMI430 classes from qcodes.instrument_drivers.american_magnetics.AMI430. Use AMIModel4303D and AMIModel430 from qcodes.instrument_drivers.american_magnetics instead.
    • Removed deprecated methods from AMI430SwitchHeater
    • Removed deprecated AMI430_VISA class from ip_to_visa.py.
    • Removed the deprecated ConnectionPlus class from qcodes.dataset.sqlite.connection. Use AtomicConnection class instead.
    • Removed the deprecated AlazarTech_ATS class. Use AlazarTechATS instead.
    • Removed the deprecated WaveformGenerator_33XXX class. Use Keysight33xxx instead.
    • Removed the following deprecated Keysight classes:
      • Keysight_34410A, use Keysight34410A instead
      • Keysight_34411A, use Keysight34411A instead
      • Keysight_34460A, use Keysight34460A instead
      • Keysight_34461A, use Keysight344xxA instead
      • Keysight_34465A, use Keysight34465A instead
      • Keysight_34470A, use Keysight34470A instead
      • N51x1, use KeysightN51x1 instead
      • PNABase, use KeysightPNABase instead
      • PNAxBase, use KeysightPNAxBase instead
      • KeysightSubModule, use Keysight34980ASwitchMatrixSubModule instead
      • KeysightSwitchMatrixSubModule, use Keysight34980ASwitchMatrixSubModule instead
      • B1500Module, use KeysightB1500Module instead
      • _Keysight_344xxA, use Keysight344xxA instead
    • Removed the deprecated Keysight submodules:
      • Trigger, use Keysight344xxATrigger instead
      • Sample, use Keysight344xxASample instead
      • Display, use Keysight344xxADisplay instead
    • Removed the deprecated MiniCircuits classes:
      • SwitchChannelBase, use MiniCircuitsSPDTSwitchChannelBase instead
      • SPDT_Base, use MiniCircuitsSPDTBase instead
    • Removed the deprecated USBHIDMixin class

    Removed functions:

    • Removed from qcodes.utils.deprecate:
      • deprecation_message
      • issue_deprecation_warning
      • deprecate decorator (use typing_extensions.deprecated instead)
      • _catch_deprecation_warnings
      • assert_not_deprecated
      • assert_deprecated
    • Removed make_connection_plus_from function from qcodes.dataset.sqlite.connection (:pr:7122)
  • The following modules have been deprecated in this release and will be removed in a future version:

    • qcodes.instrument.delegate.grouped_parameter
    • qcodes.instrument.function
    • qcodes.instrument.group_parameter
    • qcodes.instrument.specialized_parameters
    • qcodes.instrument.sweep_values
    • qcodes.instrument.base
    • qcodes.instrument.parameter
    • qcodes.utils.command
    • qcodes.utils.dataset
    • qcodes.utils.installation
    • qcodes.utils.helpers
    • qcodes.utils.metadata
    • qcodes.utils.plotting
    • qcodes.utils.threading
    • qcodes.utils.validators

    Please consult the API documentation at :ref:Api for alternatives and migration paths. (:pr:7262)

  • The methods InstrumentBase.__getitem__, InstrumentBase.get, InstrumentBase.set, InstrumentBase.call are now deprecated
    with a PendingDeprecationWarning rather than a QCoDeSDeprecationWarning. This better reflects the state where there is no plan to remove
    them but usage is discouraged. The PendingDeprecationWarning is not printed to console by default. (:pr:7318)

  • Registration and Unpacking interfaces created in ParameterBse

    ParameterBase now implements new `depends_on, is_controlled_by``, and ``has_control_of``properties that allow subclasses to define ``InterDependencies_`` relationships directly
    ``ParameterBase.unpack_self`` allows subclasses to unpack themselves during ``DataSaver.add_result``, which removes the requirement for users to add pre-defined ``InterDependencies_`` results explicitly
    ``Measurement.register_parameter`` has been refactored to follow the relationship links defined in parameter subclasses and automatically register related parameters with the appropriate relationships
    ``DataSaver.add_result`` has been refactored to take advantage of the new ``unpack_self`` method

    Breaking Changes

    • A dependent parameter registered with an independent parameter as its setpoints no longer requires that the independent parameter be registered first, if the independent parameter is ParameterBase subclass and not a str
    • Previously, a ParameterWithSetpoints whose setpoints values were explicitly added in add_result would use the explicit version. Now, an error is raised if the explicit values are not within some tolerance of the internal values (as with other duplication).
    • DataSaver.add_result signature has changed from *res_tuple to *result_tuples (:pr:7346)
  • The method to_xarray_dataarray_dict on the classes DataSet and DataSetInMem
    have been deprecated and replaced by to_xarray_dataset_dict. This new method allows
    export of datasets that still only contain one measured parameter but can contain
    related coordinates such as these given by an inferred relationship. (:pr:7432)

  • ChannelTuple/ChannelList.get_channel_by_name support for getting more than one channel has been deprecated. To get more than one channel use get_channels_by_name.
    get_channels_by_name is guaranteed to always return an instance of the class it was called on independently of the number of channels supplied. In the future
    get_channel_by_name will be updated to ensure that it always returns a single channel. The Exception raised when
    no argument is given to get_channel_by_name has changed from Exception to TypeError in line with how functions behave when an argument is missing. (:pr:7486)

Improved:

  • Add a read-only option to sqlite connection (:pr:4783)

  • Fix load_from_netcdf failing for non-completed datasets due to missing completed_timestamp_raw or run_timestamp_raw attribute. (:pr:7221)

  • The QCoDeS dataset now correctly captures data for inferred parameters when added via datasaver.add_result. Previously these were discarded due to an oversight.
    Any parameters added in this way are available via DataSetProtocol.get_parameter_data but not exported to xarray or pandas.
    Future improvements to these parameters are planned and tracked here <https://github.com/microsoft/Qcodes/issues/7060>_.

    The property InterDependencies_.non_dependencies has been deprecated and replaced by InterDependencies_.top_level_parameters that correctly includes inferred parameters.
    The InterDependencies_ object has gained two additional methods find_all_parameters_in_tree and all_parameters_in_tree_by_group.

    The not documented but publicly importable functions qcodes.dataset.exporters.export_to_pandas.load_to_concatenated_dataframe and qcodes.dataset.exporters.export_to_pandas.load_to_dataframe_dict
    now require an extra argument in the form of an InterDependencies_ object. Users are discouraged from using anything not documented in the QCoDeS API documentation <https://microsoft.github.io/Qcodes/api/index.html>_ outside QCoDeS. (:pr:7240)

  • Fix NetCDF export for datasets with None timestamp_raw values by using sentinel values (-1) during export and converting them back to None on import. This ensures NetCDF compatibility while preserving the original None values through round-trip export/import operations. (:pr:7333)

  • When exporting Datasets to xarray where the shape is known, either by the use
    of utilities such as dond or manually specified, inferred parameters related
    to the setpoints and measured parameters are now included in the XArray Dataset. (:pr:7432)

  • Exporting datasets to XArray no longer warns if two or more variables are exported with different setpoint names and/or values.
    No functionality of the export has changed.
    If the setpoints for different measured parameters have the same name, missing values will be replaced by NaN such that the
    measured parameters have the same coordinates in XArray. If different setpoint names
    are used, the exporter will automatically handle merging coordinates so each data variable is assigned its own coordinates. (:pr:7442)

  • Fixed a bug where omitting data for one or more variables could result in an inconsistent dataset cache. Missing data is now filled with appropriate empty values (0, "" or NaN depending on the data type) (:pr:7502)

  • ChannelList and AutoLoadableChannelList can now correctly infer the type of channels in the list
    when indexed using __get_item e.g. mychannellist[0] For consistency with the base classes the parent type
    in AutoLoadableChannelList has changed from Instrument to InstrumentBase which may require downstream
    changes for type checking to work correctly. (:pr:7520)

Improved Drivers:

  • Added operation mode in the SGS100A instrument to be able to change between NORMal and BBBYpass operation modes. Defaults to NORMal. (:pr:7344)

  • Corrected power range for Keysight P5004B (:pr:7360)

  • Changes to Cryomagnetics 4G Driver

    1. Added missing ...
Read more

QCoDeS 0.53.0

17 Jun 12:53
1365c3a
Compare
Choose a tag to compare

QCoDeS 0.53.0 (2025-06-16)

Breaking Changes:

  • QCoDeS has dropped support for python 3.10. QCoDeS now supports Python 3.11, 3.12 and 3.13. #7038
  • The deprecated aliases to Lakeshore modules in qcodes.instrument_drivers.Lakeshore.lakeshore_base have been removed.
    The aliases to lakeshore drivers in qcodes.instrument_drivers.Lakeshore.Model_325, qcodes.instrument_drivers.Lakeshore.Model_336 and qcodes.instrument_drivers.Lakeshore.Model_372
    have been removed. Please make sure that all Lakeshore related imports are from qcodes.instrument_drivers.Lakeshore avoiding any submodules. #7187

Improved:

  • The implementation of do0d and do1d have been replaced with a wrapper around dond.
    This aligns the keyword arguments with dond and ensures that these function support
    the same features as dond. The same change is planned for do2d in the future. #7065

  • InstrumentLoggerAdapter now merges the extra dict from the log record with information
    inserted by the LoggerAdapter. This makes it possible to add additional information to a
    log message logged via the instruments log attribute e.g. myinst.visa_log.info("message", extra={"this": "that"}) #7186

  • qcodes.dataset.descriptions.detect_shapes and qcodes.dataset.dond.do_nd_utils have been updated
    to use parameter.register_name when creating shape dictionaries for storage in the dataset

    Previously, these methods used parameter.full_name which could result in shapes not being stored
    or used correctly for parameters that use parameter.register_name

    closes #7198 #7199

Improved Drivers:

  • The Keysight 344xxA drivers have been updated to ensure that NPLC, autorange, autozero, apature_time and ```apature_modeparameters use the correct instrument commends for the sense mode selected by thesense_function`` parameter. #6723

New:

  • InstrumentBase.add_submodule now returns the added submodule. This similar to changes made in add_parameter earlier.
    This makes it possible to assign this to an attribute which enables static code checkers, IDEs and documentation to
    discover submodules. The Galil drivers have been updated to make use of this. Consult the Galil driver or Creating-Instrument-Drivers
    notebook for examples of how to use this. It is planed that QCoDeS in the future will ship with a tool to automatically perform this refactor
    and updates to all included drivers. #7017

QCoDeS 0.52.0

04 Apr 07:32
77789ec
Compare
Choose a tag to compare

QCoDeS 0.52.0 (2025-04-03)

Note This will be the last version of QCoDeS to support Python 3.10.

Breaking Changes:

  • QCoDeS no longer ships a setup.py script and all package config is done in pyproject.toml
    A version of pip or other package manager supporting PEP621 is required to build from source. #6919
  • The QCoDeS dataset sqlite connection class ConnectionPlus has been deprecated and replace with AtomicConnection.
    Unlike ConnectionPlus AtomicConnection is a direct subclass of sqlite3.Connection which enables better type checking
    and will allow QCoDeS to drop the dependency on wrapt. The function make_connection_plus_from is also deprecated and
    it is no longer supported to convert a connection from a sqlite3 connection to a QCoDeS specific connection. #6942
  • The QCoDeS deprecation utils including qcodes.utils.deprecate.deprecation_message,
    qcodes.utils.deprecate.issue_deprecation_warning, qcodes.utils.deprecate.deprecate qcodes.utils.deprecate.assert_not_deprecated
    and qcodes.utils.deprecate.assert_deprecated along with their reexports in qcodes, qcodes.utils and qcodes.utils.helpers
    are all deprecated and will be removed in QCoDeS 0.54.0. We recommend using typing_extensions.deprecate as an alternative. #6946

Improved:

  • Added 'parameters' argument to the 'plot_dataset' (and 'plot_by_id')
    functions. This enables a choice of which dependent parameters to plot
    (in the case that the plotting of all dependent parameters is not
    desired). #6931
  • Save the parameter snapshot under the register_name key in the parameters snapshot in datasets (not the station snapshot), to avoid overwritting the snapshot multiple parameters have identical short_names.
    The parameter snapshot saved under the short name key is kept for backwards compatibility, but will be removed at a later time. #7012

Improved Drivers:

  • Added several parameters into the oxford MercuryiPS driver,
    enabling the control of the heaters and the sensing of internal temperatures
    (magnet, PT1, and PT2 stage of cryogenic system).
    Added heater_switch parameter to manage the heater switch status and settings.
    The heater switch control is bound to each WorkerPS, accepting "ON" and "OFF" as inputs.
    Added magnet_temp, pt1_temp, and pt2_temp parameters for reading temperatures
    from different sensors, utilizing the new _temp_parser function.
    Currently, the addresses of temperature sensors are written statically in the driver. #6889

New:

  • Added a global callback mechanism to ParameterBase that enables users to
    supply custom callback functions to handle parameter changes. This new feature
    allows for flexible integrations—such as logging changes, updating dashboards, or
    other custom processing—without modifying full snapshot behavior.
    See the PR for details on a usage example. #6934
  • A new Validator LiteralValidator was added. This allows validating against the members of a typing.Literal. #7009

QCoDeS 0.51.0

17 Feb 09:41
aa0ab2a
Compare
Choose a tag to compare

QCoDeS 0.51.0 (2025-02-14)

Breaking Changes:

  • The deprecated and non functional function qcodes.test() has been removed. (#6665)

Improved:

  • DelegateParameter now includes validators of its source Parameter into its validators. This ensures that a DelegateParameter
    with a non numeric source parameter is registered correctly in a measurement when the DelegateParameter it self does not
    set a validator. (#6585)
  • 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)
  • When passing bind_to_instrument=False to InstrumentBase.add_parameter a warning that
    recommends not doing this is now raised suggesting a better alternative.
    This replaces an existing inconsistent warning which was misleading. (#6722)
  • Only add magnet parameters if a magnet is detected in the Oxford Triton driver. (#6792)

Improved Drivers:

  • Enabled use of ZNLE R&S VNA by recognizing the model name in RohdeSchwarzZNBBase, and creating an ZNLE## class as an alias (#6796)

QCoDeS 0.50.1

28 Nov 10:34
6b8c257
Compare
Choose a tag to compare

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

25 Nov 09:33
4ad5c78
Compare
Choose a tag to compare

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:

  • Added a new feature to find links in a parameter chain by parameter type (#6599)
  • Added new methods to find instruments in a parameter chain by parameter type (#6616)

QCoDeS 0.49.0

15 Oct 13:01
ef66ccc
Compare
Choose a tag to compare

QCoDeS 0.49.0 (2024-10-15)

Breaking Changes:

  • The methods get, set, call and __getitem__ on the InstrumentBase class have been deprecated.
    Parameters can be looked up by name using the Instrument.parameters dict and functions using instrument.functions
    which is cleaner and fully equivalent. #6086
  • The deprecated qcodes.tests module has been removed. Mock instruments can be found in qcodes.instrument_drivers.mock_instruments and
    DriverTestCase as qcodes.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 the qcodes[opencensus] install target has been removed.
    The unused method filter_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

09 Sep 09:33
3e4c608
Compare
Choose a tag to compare

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 optional squeeze flag as input. Inspired by Matplotlib's plt.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 uses dond as a function. #6422

QCoDeS 0.47.0

09 Aug 08:18
b630e2c
Compare
Choose a tag to compare

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 by a 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 aliases qcodes.instrument_drivers.american_magnetics.AMI_430_visa.AMI430_3D and qcodes.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