Skip to content

Releases: microsoft/Qcodes

QCoDeS 0.41.0

18 Oct 11:18
b65a797
Compare
Choose a tag to compare

QCoDeS 0.41.0 (2023-10-18)

Breaking Changes:

  • The deprecated modules
    qcodes.data, qcodes.loop, qcodes.actions, qcodes.plots,
    qcodes.measure, qcodes.extensions.slack, qcodes.utils.magic, qcodes.utils.qt_helpers
    qcodes.utils.slack has been removed.
    The modules can be found in qcodes_loop <https://github.com/qcodes/qcodes_loop>_ (#5367)
  • Update QCoDeS to work with the upcoming release of numpy 2.0.
    The unused attributes qcodes.utils.types.numpy_non_concrete_floats_instantiable and
    qcodes.utils.types.numpy_non_concrete_complex_instantiable have been removed from QCoDeS. (#5399)
  • The extra install targets qcodes[slack] and qcodes[qtplot] have been removed.
    All dependencies on slack and pyqtgraph have moved to qcodes_loop. (#5425)

New:

  • QCoDeS now exports data that isn't measured on a grid to a XArray using MultiIndex.
    Support for exporting these datasets to NetCDF has also been implemented.
    See this notebook <../examples/DataSet/Working-With-Pandas-and-XArray.ipynb>__ for additional details. (#5334)
  • Add a register_name keyword to the ParameterBase constructor. If supplied, this value
    will be used to register parameters in datasets instead of the default full_name.
    Note that the MultiParameter and ArrayParameter classes do not currently support use
    of the register_name. (#5381)
  • Large datasets are now exported to NetCDF4 using Dask delayed writer.
    This avoids allocating a large amount of memory to process the whole dataset at the same time.
    Size threshold at the moment is set to approximately 1 GB. (#5391)
  • The QCoDeS Parameters have now gained the ability to use multiple validators.
    See here <../examples/Parameters/Parameters.ipynb>__ for examples of how to use this. (#5426)

What's Changed

New Contributors

Full Changelog: v0.40.0...v0.41.0

QCoDeS 0.40.0

14 Sep 11:03
9d238d2
Compare
Choose a tag to compare

QCoDeS 0.40.0 (2023-09-14)

Improved:

  • The InstrumentLoggerAdapter has been updated to store the instrument_name and instrument_type
    as fields on log records rather than the instrument it self. This enables opentelemetry to attache
    the fields to a transmitted LogRecord for better filtering. (#5297)
  • In the QCoDeS DataSetProtocol newly created dataset now always have a captured_run_id / captured_counter
    that matches the run_id / result_counter that they are assigned on creation. Previously these could be
    out of sync if datasets measured elsewhere had been inserted into the database. (#5329)
  • The pyvisa.ResourceManager of a VISA instrument is now exposed
    as instr.resource_manager. All VISA instruments will now use weakref.finalize
    to close the visa resource on shutdown of the instrument. This should reduce the
    chance that an instrument resource is not cleanup correctly on exit. (#5341)

Improved Drivers:

New:

  • The QCoDeS Measurement Context manager, DataSaverBuilder and DoND functions have been instrumented as OpenTelemetry traces.
    This enables users to correlate log messages with the the measurement that they were performed within.
    See the OpenTelemetry <https://opentelemetry.io/>_ documentation for examples of how this can be used.

    The log exporting using OpenCensus within QCoDeS is expected to be deprecated and eventually removed in line
    with OpenCensus being discontinued. Users that are interested in gathering telemetry of their setups are encouraged
    to provide their own solution based on OpenTelemetry. (#5289)

  • New features: datasaver_builder and dond_into are intermediate measurement extensions designed to fill a gap between
    the low-level Measurement object and the high-level doNd functions. They allow convenient specification of parameter
    dependencies for registration and doNd-like syntax while also allowing direct access to the underlying datasaver objects. (#5294)

v0.39.1

19 Jul 14:03
Compare
Choose a tag to compare

QCoDeS 0.39.1 (2023-07-19)

Improved:

  • Very noisy log messages from azure.monitor.opentelemetry.exporter are now
    by default filtered and not shown in the console logger. This matches the
    behavior of the OpenCensus exporter. #5278

v0.39.0

20 Jun 13:12
373b80e
Compare
Choose a tag to compare

QCoDeS 0.39.0 (2023-06-20)

Note that this will be the last version to support Python 3.8. Please upgrade to at least
python 3.9.

Improved:

  • The in memory cache of a dataset can now be configured both from the qcodesrc.json config file and when using dond to perform measurements.
    The Exception raised when a dond, do1d etc. measurement is interrupted (BreakConditionInterrupt) has been made public as part of the
    qcodes.dataset module so it can be intercepted and handled by the user. (#5200)
  • When writing a DataSetInMem back to a database the exp_id, counter and run_id are correctly updated
    to reflect the sate of the new database. write_metadata_to_db has also been fixed to use
    the database passed to init of the DataSetInMem class if no path is provided. (#5209)

Improved Drivers:

  • Fix Keithley 3706A driver to use the updated interlock status strings
    (following up on :pr:5007) (#5147)
  • Increase default timeout on R&S ZNB and allow the instrument to overwrite default timeout (#5201)

QCoDeS 0.38.1

26 Apr 10:37
e4360a4
Compare
Choose a tag to compare

QCoDeS 0.38.1 (2023-04-26)

Improved:

  • Fixed a typo in the readme preventing release to pypi (#5132)

QCoDeS 0.38.0

26 Apr 08:28
2808122
Compare
Choose a tag to compare

QCoDeS 0.38.0 (2023-04-25)

Breaking Changes:

  • The modules qcodes_loop.data, qcodes_loop.plots, qcodes_loop.actions, qcodes_loop.loops,
    qcodes_loop.measure, qcodes_loop.extensions.slack and qcodes_loop.utils.magic,
    qcodes_loop.utils.qt_helpers have been split out into a separate package qcodes_loop.
    The respective modules in QCoDeS do still exist as deprecated aliases to the new modules in qcodes_loop
    but will be removed in a future release. To use the aliases QCoDeS must be installed with the loop extra e.g.
    you should install pip install qcodes[loop]. If you make use of these modules we recommend updating imports
    to use qcodes_loop as soon as possible. See the readme <https://github.com/qcodes/qcodes_loop>_ of
    qcodes_loop for more information.

    The functions qcodes.utils.helpers.tprint qcodes.utils.helpers.wait_secs and
    qcodes.utils.helpers.foreground_qt_window have been removed.
    These helper functions are only used in qcodes_loop and were moved there. (#4971)

  • The default configuration of QCoDeS dataset GUID_components.GUID_type has changed from explicit_sample to random_sample.
    This means that QCoDeS GUIDs will no longer start with aaaaaaaa but with a random string. This significantly reduces the risk
    of duplicate GUIDs.
    This also means that that the ability to set a sample_id as part of the dataset GUID is disabled by default. With
    the default config its therefor an error to set GUID_components.sample to anything but the default value. The original
    behavior can be restored by setting GUID_components.GUID_type to explicit_sample in the config file but is not recommended.
    Users should make use of the sample_name attached to an experiment as an alternative. Note that if you have already created
    a local config you will need to update this for the changes to take effect. (#5031)

Improved:

  • The helper functions guids_from_dbs, guids_from_dir, and guids_from_list_str have been added
    to the documented dataset api at qcodes.dataset. (#4989)

Improved Drivers:

  • Fixed a bug in version parsing for Keysight 344XXA and Keysight E4980A which
    would result in incompatibility with packaging>21 under certain circumstances. (#5007)
  • Fixed a bug in interlock status querying for Keithley 3706A. Originally, not all
    potential responses from the system were accounted for when querying for interlock
    status. A dictionary is used to map the response from the system to a string describing
    the interlock status. When the system returns a response that was not accounted for, this
    resulted in a KeyError being raised. Now, this dictionary accounts for all potential responses
    from the system. (#5013)
  • Added support for AimTTi QL355TP power supply.
    Moved _numOutputChannels lookup table to the class body. (#5021)
  • Increased range on setpoint property of Lakeshore Model 335,336,372 to support degree Celsius (#5043)
  • Fix auto_sweep in Keysight PNA N52xx driver
    Fix units of polar sweeps in Keysight PNA N52xx driver (#5090)

New:

  • The QCoDeS Station Instrument and InstrumentModule classes gained a method get_component
    which allows the user to get a component by name. Allowing the user to go from
    the full name of a component to the component itself. (#5028)

New Drivers:

  • Add driver for Lakeshore Model 335 (#5043)

QCoDeS 0.37.0

26 Jan 14:03
55d1eb4
Compare
Choose a tag to compare

QCoDeS 0.37.0 (2023-01-26)

Breaking Changes:

  • InstrumentBase.ancestors now returns a tuple of ancestors
    to the current Instrument, InstrumentChannel or InstrumentModule and not a list.

  • dond , do1d etc. now returns tuples of Matplotlib axes and colorbars
    when plotting and not lists. #4894

  • Datasets are now exported to a folder next to the database by default rather then to the users home folder.
    Note that if you had specifically configured this in a local config file this should be updated too for the
    change to take effect. #4899

  • DriverTestCase has been moved from qcodes.instrument_drivers.test to qcodes.tests.driver_test_case. #4922

  • qcodes.instrument_drivers.VoltageDivider and qcodes.instrument_drivers.devices.VoltageDivider has
    been deprecated. Its functionality is better implemented in qcodes.parameters.DelegateParameter which
    is also significantly better tested and more general. #4923

  • The QDevil QDAC 1 driver has been migrated to qcodes_contrib_drivers and is included from version
    0.18.0. The driver in QCoDeS is deprecated and will be removed in a future release. #4932

  • Remove deprecated Mercury iPS driver
    qcodes.instrument_drivers.oxford.mercuryiPS.MercuryiPS,
    use qcodes.instrument_drivers.oxford.OxfordMercuryiPS
    instead. #4936

Improved:

  • When a dataset is exported an optional user supplied entry point is called. See
    here <../examples/DataSet/Exporting-data-to-other-file-formats.html#Automatically-post-process-exported-datasets.>__
    for more details. #4857
  • PyVISA 1.13 is now supported. #4895
  • validate method of DelegateParameter now also validates the given value
    against the validator of the source parameter (if source parameter is present). #4870
  • The dataset logic has been updated to ensure that if you set an already completed
    dataset as completed the completion timestamp will not be updated. #4876
  • Update the pyqtgraph plot backend for upstream changes in pyqtgraph. #4886
  • QcoDeS is now typechecked with Pyright in addition to mypy. This should give a significantly
    better user experience when working in VS Code. #4938

Improved Drivers:

  • The Minicircuits USB SPDT driver now supports running with the more modern version of the driver DLL mcl_RF_Switch_Controller_NET45.dll #4623

  • Two parameters are added to the Keysight.N51x1 class, conditioned on it having the 'UNW' option:
    1. Having the pulse modulation status on or off.
    2. Setting it to 'internal' or 'external'.

    From the Keysight manual:
    1. This command enables or disables pulse modulation for the selected path.
    2. This command sets the source of the pulse modulation. #4840

Under the hood:

  • Improve performance of parameter validator. #4887

v0.36.1

20 Dec 15:24
7c8f372
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.36.0...v0.36.1

QCoDeS 0.36.0

30 Nov 12:28
a85cde2
Compare
Choose a tag to compare

QCoDeS 0.36.0 (2022-11-29)

Breaking Changes:

  • The test_intrument and test_intruments functions are no longer available
    from the toplevel qcodes namespace.
    If you require these functions they must be imported from
    qcodes.instrument_drivers.test. (#461`)
  • The deprecated imports of Loop, Measure and members of qcodes.data in the toplevel QCoDeS namespace has been
    removed. (#4674)
  • Explicitly setting a sample id in the qcodesrc.json config file has been deprecated. This feature is
    expected to be very lightly used. Please do get in touch if you rely on it. This will eventually
    be replaced by a random string. For the same reason load_by_run_spec will no longer print
    sample_id as part of the output when more than one potential match is found.
    Note that this is different from the sample_name set as part of an experiment which is still supported. (#4763)

Improved:

  • The sweeps used by doNd has gained the ability to perform a get call after setting the parameter and storing
    that value in the dataset rather than the value set. (#4759)
  • plot_dataset will now correctly wrap long titles into multiple lines. (#4770)
  • Keithley calibration: adjust calibration date before saving new calibration (#4779)
  • Visa insturments have gained the pyvisa_sim_file argument. This allows easier instantiation of
    simulated visainstrments in tests (both in QCoDeS and external) as well as use of simulated instruments in
    station yaml files. (#4790)
  • dond functions now return the dataset after KeyboardInterrupt or BreakConditionInterrupt.
    Instead of raising the interrupts, they are now logged as warning. (#4801)
  • The function qcodes.dataset.load_from_netcdf now always perservers order of the dependent coordinates
    when loading a netcdf file into memory. (#4802)
  • Add rundescriber_from_json to dataset public API
    for materializing RunDescriber objects from json strings (#4811)
  • Add RunDescriber, InterDependencies_, ParamSpecTree to dataset public API (#4816)
  • All public methods avilable in qcodes.dataset that takes a
    path to a db or data file now accepts a pathlib.Path object in addition to a str. (#4818)

New:

  • Add a callback to dataset.get_parameter_data.
    This is usefull to track the progress of the data download.
    Since sqlite3 does not allow to keep track of the data loading progress,
    we compute how many sqlite requests correspond to a certain percentage of
    progress which is dictated by a config parameter "callback_percent".
    Then we perform x sql request instead of one, running the callback everytime. (#4688)

QCoDeS 0.35.2

05 Oct 08:57
Compare
Choose a tag to compare

QCoDeS 0.35.2 (2022-10-05)

This is a bugfix to fix an issue where the qcodes.utils.helpers module had an unexpected dependency
on pytest.