Skip to content

Commit 97c0459

Browse files
authored
Merge pull request #7543 from microsoft/changelog_054
Add changelog for 0.54.0
2 parents 4fa6b60 + 6cafcea commit 97c0459

27 files changed

+178
-146
lines changed

docs/changes/0.54.0.rst

Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
QCoDeS 0.54.0 (2025-10-01)
2+
==========================
3+
4+
Breaking Changes:
5+
-----------------
6+
7+
- **Removal of deprecated code**
8+
9+
**Removed modules:**
10+
11+
- Removed the deprecated ``qcodes.instrument_drivers.american_magnetics.AMI430`` module. Use ``AMIModel4303D`` from ``qcodes.instrument_drivers.american_magnetics`` instead.
12+
- 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.
13+
14+
**Removed classes:**
15+
16+
- 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.
17+
- Removed deprecated methods from ``AMI430SwitchHeater``
18+
- Removed deprecated ``AMI430_VISA`` class from ``ip_to_visa.py``.
19+
- Removed the deprecated ``ConnectionPlus`` class from ``qcodes.dataset.sqlite.connection``. Use ``AtomicConnection`` class instead.
20+
- Removed the deprecated ``AlazarTech_ATS`` class. Use ``AlazarTechATS`` instead.
21+
- Removed the deprecated ``WaveformGenerator_33XXX`` class. Use ``Keysight33xxx`` instead.
22+
- Removed the following deprecated Keysight classes:
23+
- ``Keysight_34410A``, use ``Keysight34410A`` instead
24+
- ``Keysight_34411A``, use ``Keysight34411A`` instead
25+
- ``Keysight_34460A``, use ``Keysight34460A`` instead
26+
- ``Keysight_34461A``, use ``Keysight344xxA`` instead
27+
- ``Keysight_34465A``, use ``Keysight34465A`` instead
28+
- ``Keysight_34470A``, use ``Keysight34470A`` instead
29+
- ``N51x1``, use ``KeysightN51x1`` instead
30+
- ``PNABase``, use ``KeysightPNABase`` instead
31+
- ``PNAxBase``, use ``KeysightPNAxBase`` instead
32+
- ``KeysightSubModule``, use ``Keysight34980ASwitchMatrixSubModule`` instead
33+
- ``KeysightSwitchMatrixSubModule``, use ``Keysight34980ASwitchMatrixSubModule`` instead
34+
- ``B1500Module``, use ``KeysightB1500Module`` instead
35+
- ``_Keysight_344xxA``, use ``Keysight344xxA`` instead
36+
- Removed the deprecated Keysight submodules:
37+
- ``Trigger``, use ``Keysight344xxATrigger`` instead
38+
- ``Sample``, use ``Keysight344xxASample`` instead
39+
- ``Display``, use ``Keysight344xxADisplay`` instead
40+
- Removed the deprecated MiniCircuits classes:
41+
- ``SwitchChannelBase``, use ``MiniCircuitsSPDTSwitchChannelBase`` instead
42+
- ``SPDT_Base``, use ``MiniCircuitsSPDTBase`` instead
43+
- Removed the deprecated ``USBHIDMixin`` class
44+
45+
**Removed functions:**
46+
47+
- Removed from ``qcodes.utils.deprecate``:
48+
- ``deprecation_message``
49+
- ``issue_deprecation_warning``
50+
- ``deprecate`` decorator (use ``typing_extensions.deprecated`` instead)
51+
- ``_catch_deprecation_warnings``
52+
- ``assert_not_deprecated``
53+
- ``assert_deprecated``
54+
- Removed ``make_connection_plus_from`` function from ``qcodes.dataset.sqlite.connection`` (:pr:`7122`)
55+
- The following modules have been deprecated in this release and will be removed in a future version:
56+
57+
- ``qcodes.instrument.delegate.grouped_parameter``
58+
- ``qcodes.instrument.function``
59+
- ``qcodes.instrument.group_parameter``
60+
- ``qcodes.instrument.specialized_parameters``
61+
- ``qcodes.instrument.sweep_values``
62+
- ``qcodes.instrument.base``
63+
- ``qcodes.instrument.parameter``
64+
- ``qcodes.utils.command``
65+
- ``qcodes.utils.dataset``
66+
- ``qcodes.utils.installation``
67+
- ``qcodes.utils.helpers``
68+
- ``qcodes.utils.metadata``
69+
- ``qcodes.utils.plotting``
70+
- ``qcodes.utils.threading``
71+
- ``qcodes.utils.validators``
72+
73+
Please consult the API documentation at :ref:`Api` for alternatives and migration paths. (:pr:`7262`)
74+
- The methods ``InstrumentBase.__getitem__``, ``InstrumentBase.get``, ``InstrumentBase.set``, ``InstrumentBase.call`` are now deprecated
75+
with a PendingDeprecationWarning rather than a QCoDeSDeprecationWarning. This better reflects the state where there is no plan to remove
76+
them but usage is discouraged. The PendingDeprecationWarning is not printed to console by default. (:pr:`7318`)
77+
- Registration and Unpacking interfaces created in ParameterBse
78+
79+
``ParameterBase`` now implements new `depends_on``, ``is_controlled_by``, and ``has_control_of``properties that allow subclasses to define ``InterDependencies_`` relationships directly
80+
``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
81+
``Measurement.register_parameter`` has been refactored to follow the relationship links defined in parameter subclasses and automatically register related parameters with the appropriate relationships
82+
``DataSaver.add_result`` has been refactored to take advantage of the new ``unpack_self`` method
83+
84+
Breaking Changes
85+
- 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
86+
- 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).
87+
- ``DataSaver.add_result`` signature has changed from ``*res_tuple`` to ``*result_tuples`` (:pr:`7346`)
88+
- The method ``to_xarray_dataarray_dict`` on the classes ``DataSet`` and ``DataSetInMem``
89+
have been deprecated and replaced by ``to_xarray_dataset_dict``. This new method allows
90+
export of datasets that still only contain one measured parameter but can contain
91+
related coordinates such as these given by an inferred relationship. (:pr:`7432`)
92+
- ``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``.
93+
``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
94+
``get_channel_by_name`` will be updated to ensure that it always returns a single channel. The Exception raised when
95+
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`)
96+
97+
98+
Improved:
99+
---------
100+
101+
- Add a read-only option to sqlite connection (:pr:`4783`)
102+
- Fix ``load_from_netcdf`` failing for non-completed datasets due to missing ``completed_timestamp_raw`` or ``run_timestamp_raw`` attribute. (:pr:`7221`)
103+
- The QCoDeS dataset now correctly captures data for inferred parameters when added via ``datasaver.add_result``. Previously these were discarded due to an oversight.
104+
Any parameters added in this way are available via ``DataSetProtocol.get_parameter_data`` but not exported to xarray or pandas.
105+
Future improvements to these parameters are planned and tracked `here <https://github.com/microsoft/Qcodes/issues/7060>`_.
106+
107+
The property ``InterDependencies_.non_dependencies`` has been deprecated and replaced by ``InterDependencies_.top_level_parameters`` that correctly includes inferred parameters.
108+
The ``InterDependencies_`` object has gained two additional methods ``find_all_parameters_in_tree`` and ``all_parameters_in_tree_by_group``.
109+
110+
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``
111+
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`)
112+
- 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`)
113+
- When exporting Datasets to xarray where the shape is known, either by the use
114+
of utilities such as `dond` or manually specified, inferred parameters related
115+
to the setpoints and measured parameters are now included in the XArray Dataset. (:pr:`7432`)
116+
- Exporting datasets to XArray no longer warns if two or more variables are exported with different setpoint names and/or values.
117+
No functionality of the export has changed.
118+
If the setpoints for different measured parameters have the same name, missing values will be replaced by NaN such that the
119+
measured parameters have the same coordinates in XArray. If different setpoint names
120+
are used, the exporter will automatically handle merging coordinates so each data variable is assigned its own coordinates. (:pr:`7442`)
121+
- 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`)
122+
- ``ChannelList`` and ``AutoLoadableChannelList`` can now correctly infer the type of channels in the list
123+
when indexed using ``__get_item`` e.g. ``mychannellist[0]`` For consistency with the base classes the parent type
124+
in ``AutoLoadableChannelList`` has changed from ``Instrument`` to ``InstrumentBase`` which may require downstream
125+
changes for type checking to work correctly. (:pr:`7520`)
126+
127+
128+
Improved Drivers:
129+
-----------------
130+
131+
- Added operation mode in the SGS100A instrument to be able to change between NORMal and BBBYpass operation modes. Defaults to NORMal. (:pr:`7344`)
132+
- Corrected power range for Keysight P5004B (:pr:`7360`)
133+
- Changes to Cryomagnetics 4G Driver
134+
135+
1. Added missing initialization of `self._RETRY_WRITE_ASK` and `self._RETRY_TIME` in the `write_raw` method to handle communication retries on VisaIOError.
136+
2. Updated `set_field` to correctly recognize Standby as a valid final state when setting the magnetic field to 0 T.
137+
3. Modified `wait_while_ramping` to check the actual magnetic field value via `self._get_field()` instead of relying on the status byte, since the instrument may stay in the Ramping state even after reaching the target field.
138+
4. Fixed unit parsing to handle unexpected trailing characters in the instrument's response. (e.g., "\r").
139+
5. Fixed get_parser for `Vmag`, `Iout`, and `Vout` to remove units and return float.
140+
6. Added timeout condition to `wait_while_ramping` to prevent infinite loop. Will trigger Exception if timeout occurs.
141+
7. Fixed conversion calculations in `_set_rate` and `_get_rate`.
142+
8. Added function `get_rates` to return rates for all ranges in Tesla/min as a dictionary.
143+
9. Modified `_set_rate` to update all ranges (0-4) on the instrument (picks min value between set rate and maximum current limit for each range)
144+
10. Add small sleep (0.1 seconds) between write calls during `max_current_limit` initialization.
145+
11. Fixed/added unit tests to accurately reflect code changes.
146+
12. Modified `set_field()` to allow users to control the strictness of `wait_while_ramping()` timeout condition (1e-4 was too precise and was triggering false timeouts). (:pr:`7405`)
147+
- Keysight 33xxx drivers now have statically assigned channels. This improves documentation
148+
and makes it possible for type checkers and IDEs to detect class member variables without
149+
instantiating the driver. (:pr:`7521`)
150+
151+
152+
New:
153+
----
154+
155+
- Added :func:`qcodes.dataset.export_datasets_and_create_metadata_db` function to export all datasets from a database to NetCDF files and create a new metadata-only database. This enables users to maintain lightweight databases for metadata while relying on NetCDF files for data analysis, significantly reducing storage requirements for large experimental datasets. (:pr:`7212`)
156+
157+
158+
New Drivers:
159+
------------
160+
161+
- Added Keysight P5002B driver (:pr:`7360`)
162+
- Added Cryomagnetics TM-620 driver (:pr:`7398`)
163+
- Added Copper Mountain Technologies M5065 driver
164+
Added Copper Mountain Technologies M5180 driver (:pr:`7497`)
165+
166+
167+
Under the hood:
168+
---------------
169+
170+
- Refactors the `InterDependencies_` class to simplify reasoning about and query of the ParamSpecBase
171+
relationships by embedding them in a NetworkX Directional Graph (DiGraph)
172+
173+
Resolves #7079 (:pr:`7256`)
174+
- In dond, only process get_after_set in the loop instances where the parameter is actually being set (:pr:`7307`)
175+
- ``DataSetProtocol.to_xarray_dataset`` and ``DataSetProtocol.to_xarray_dataarray_dict`` now avoids creating a Pandas MultiIndex to infer the
176+
correct dataset shape if the shape is already known. This will resolve issues where datasets are exported with incorrect array shapes due to
177+
round off errors in the setpoints (coordinates). (:pr:`7413`)

docs/changes/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Changelogs
33

44
.. toctree::
55
Unreleased <unreleased>
6+
0.54.0 <0.54.0>
67
0.53.0 <0.53.0>
78
0.52.0 <0.52.0>
89
0.51.0 <0.51.0>

docs/changes/newsfragments/4783.readonly

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/changes/newsfragments/7122.breaking

Lines changed: 0 additions & 48 deletions
This file was deleted.

docs/changes/newsfragments/7212.new

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/changes/newsfragments/7221.improved

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/changes/newsfragments/7240.improved

Lines changed: 0 additions & 9 deletions
This file was deleted.

docs/changes/newsfragments/7256.underthehood

Lines changed: 0 additions & 4 deletions
This file was deleted.

docs/changes/newsfragments/7262.breaking

Lines changed: 0 additions & 19 deletions
This file was deleted.

docs/changes/newsfragments/7307.underthehood

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)