Releases: microsoft/Qcodes
QCoDeS 0.41.1
QCoDeS 0.41.1 (2023-10-19)
Improved:
- Corrected a bug where non integer step sizes were incorrectly rejected
from parameters without integer validators. (:pr:5446
)
QCoDeS 0.41.0
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 inqcodes_loop <https://github.com/qcodes/qcodes_loop>
_ (#5367) - Update QCoDeS to work with the upcoming release of numpy 2.0.
The unused attributesqcodes.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.
Seethis 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.
Seehere <../examples/Parameters/Parameters.ipynb>
__ for examples of how to use this. (#5426)
What's Changed
- remove deprecated scrict_concatenate flag from mypy by @jenshnielsen in #5366
- Update traitlets requirement from ~=5.9.0 to ~=5.10.0 by @dependabot in #5370
- remove deprecated loop moved to qcodes loop. by @jenshnielsen in #5367
- Update matplotlib requirement from ~=3.7.0 to ~=3.8.0 by @dependabot in #5371
- Update numpy requirement from ~=1.25.0 to ~=1.26.0 by @dependabot in #5373
- Update typing-extensions requirement from ~=4.7.0 to ~=4.8.0 by @dependabot in #5375
- Update portalocker requirement from ~=2.7.0 to ~=2.8.2 by @dependabot in #5372
- Bump opencensus from 0.11.2 to 0.11.3 by @dependabot in #5376
- Update zipp requirement from ~=3.16.2 to ~=3.17.0 by @dependabot in #5377
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #5378
- Update hypothesis requirement from ~=6.84.0 to ~=6.86.2 by @dependabot in #5382
- Stop using file outside tests by @jenshnielsen in #4797
- Update hypothesis requirement from ~=6.86.2 to ~=6.87.0 by @dependabot in #5383
- Remove deprecated compare_dictionaries by @jenshnielsen in #5385
- Bump actions/checkout from 4.0.0 to 4.1.0 by @dependabot in #5384
- Instrument tests: Avoid leaking state between tests by @jenshnielsen in #5360
- Update google-api-core requirement from ~=2.11.0 to ~=2.12.0 by @dependabot in #5386
- Export non gridded data to MultiIndex Xarray and compressed netcdf file by @jenshnielsen in #5334
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #5387
- Update xarray requirement from ~=2023.8.0 to ~=2023.9.0 by @dependabot in #5388
- Update CONTRIBUTING.rst by @DCEM in #5389
- Update index.rst (Add instructions about fetching tags) by @DCEM in #5390
- Fix pandas type check by @jenshnielsen in #5398
- Update cffi requirement from ~=1.15.1 to ~=1.16.0 by @dependabot in #5396
- Bump wcwidth from 0.2.6 to 0.2.7 by @dependabot in #5397
- Bump cycler from 0.11.0 to 0.12.0 by @dependabot in #5395
- Bump ruamel-yaml from 0.17.32 to 0.17.33 by @dependabot in #5394
- Create Coord before passing it to xarray by @jenshnielsen in #5392
- Bump wcwidth from 0.2.7 to 0.2.8 by @dependabot in #5400
- Update ipython requirement from ~=8.15.0 to ~=8.16.0 by @dependabot in #5401
- Bump packaging from 23.1 to 23.2 by @dependabot in #5404
- Update fonttools requirement from ~=4.42.0 to ~=4.43.0 by @dependabot in #5405
- Update charset-normalizer requirement from ~=3.2.0 to ~=3.3.0 by @dependabot in #5406
- Rework config fixtures by @jenshnielsen in #4906
- Update executing requirement from ~=1.2.0 to ~=2.0.0 by @dependabot in #5402
- Bump stack-data from 0.6.2 to 0.6.3 by @dependabot in #5403
- remove non local CI job by @jenshnielsen in #5407
- Update urllib3 requirement from ~=1.26.15 to ~=2.0.5 by @dependabot in #5379
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #5409
- upgrade type stubs by @jenshnielsen in #5410
- Remove main example by @jenshnielsen in #5411
- Bump ruamel-yaml from 0.17.33 to 0.17.34 by @dependabot in #5413
- Update babel requirement from ~=2.12.1 to ~=2.13.0 by @dependabot in #5414
- Update traitlets requirement from ~=5.10.0 to ~=5.11.2 by @dependabot in #5417
- Update nbconvert requirement from ~=7.8.0 to ~=7.9.0 by @dependabot in #5415
- Bump ruamel-yaml-clib from 0.2.7 to 0.2.8 by @dependabot in #5416
- Improve logger test by @jenshnielsen in #5419
- Use Dask delayed to export large datasets to NetCDF by @jenshnielsen in #5391
- Update quantify doc links by @ereehuis in #5421
- Bump ruamel-yaml from 0.17.34 to 0.17.35 by @dependabot in #5424
- Update slack-sdk requirement from ~=3.22.0 to ~=3.23.0 by @dependabot in #5423
- Update deepdiff requirement from ~=6.5.0 to ~=6.6.0 by @dependabot in #5422
- remove slack and qtplot extra install targets by @jenshnielsen in #5425
- Add register_name to register parameters by in datasets by @samantha-ho in #5381
- Bump cycler from 0.12.0 to 0.12.1 by @dependabot in #5428
- Update bleach requirement from ~=6.0.0 to ~=6.1.0 by @dependabot in #5429
- Update qcodes to support numpy 2.0 by @peendebak in #5399
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #5430
- Update h5py requirement from ~=3.9.0 to ~=3.10.0 by @dependabot in #5431
- Update jupyter-core requirement from ~=5.3.0 to ~=5.4.0 by @dependabot in #5432
- Update mypy requirement from ~=1.5.0 to ~=1.6.0 by @dependabot in #5433
- Allow additional validators on parameter at runtime by @jenshnielsen in #5426
- Update jupyter-client requirement from ~=8.3.0 to ~=8.4.0 by @dependabot in #5434
- Update googleapis-common-protos requirement from ~=1.60.0 to ~=1.61.0 by @dependabot in #5435
- Update hypothesis requirement from ~=6.87.0 to ~=6.88.0 by @dependabot in #5437
- Update pillow requirement from ~=10.0.0 to ~=10.1.0 by @dependabot in #5438
- Update pyqt5-sip requirement from ~=12.12.0 to ~=12.13.0 by @dependabot in #5436
- Bump actions/checkout from 4.1.0 to 4.1.1 by @dependabot in #5439
- add changelog for 0.41.0 by @jenshnielsen in #5440
New Contributors
Full Changelog: v0.40.0...v0.41.0
QCoDeS 0.40.0
QCoDeS 0.40.0 (2023-09-14)
Improved:
- The InstrumentLoggerAdapter has been updated to store the
instrument_name
andinstrument_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
asinstr.resource_manager
. All VISA instruments will now useweakref.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:
- Parameters controlling the pid-values, pumps and state of the temperature channels have been added to OxfordTriton.
This allows temperature sweeps from base temperature to several Kelvin to be fully automatic. Code to create such sweeps can be found at https://github.com/qdev-dk/MeasFunc/blob/main/measfunc/temperature_sweep.py. (#5316)
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 theOpenTelemetry <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
v0.39.0
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 usingdond
to perform measurements.
The Exception raised when adond
,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 theDataSetInMem
class if no path is provided. (#5209)
Improved Drivers:
QCoDeS 0.38.1
QCoDeS 0.38.0
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
andqcodes_loop.utils.magic
,
qcodes_loop.utils.qt_helpers
have been split out into a separate packageqcodes_loop
.
The respective modules in QCoDeS do still exist as deprecated aliases to the new modules inqcodes_loop
but will be removed in a future release. To use the aliases QCoDeS must be installed with theloop
extra e.g.
you should installpip install qcodes[loop]
. If you make use of these modules we recommend updating imports
to useqcodes_loop
as soon as possible. See thereadme <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 inqcodes_loop
and were moved there. (#4971) -
The default configuration of QCoDeS dataset
GUID_components.GUID_type
has changed fromexplicit_sample
torandom_sample
.
This means that QCoDeS GUIDs will no longer start withaaaaaaaa
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 setGUID_components.sample
to anything but the default value. The original
behavior can be restored by settingGUID_components.GUID_type
toexplicit_sample
in the config file but is not recommended.
Users should make use of thesample_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
, andguids_from_list_str
have been added
to the documented dataset api atqcodes.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
andInstrumentModule
classes gained a methodget_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
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
toqcodes.tests.driver_test_case
. #4922 -
qcodes.instrument_drivers.VoltageDivider
andqcodes.instrument_drivers.devices.VoltageDivider
has
been deprecated. Its functionality is better implemented inqcodes.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
,
useqcodes.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 ofDelegateParameter
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
What's Changed
- Add changelog for 0.36.1 by @jenshnielsen in #4878
- make it a no op to mark a run completed twice by @jenshnielsen in #4876
Full Changelog: v0.36.0...v0.36.1
QCoDeS 0.36.0
QCoDeS 0.36.0 (2022-11-29)
Breaking Changes:
- The
test_intrument
andtest_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 ofqcodes.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 reasonload_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
orBreakConditionInterrupt
.
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 materializingRunDescriber
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 apathlib.Path
object in addition to astr
. (#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)