Releases: microsoft/Qcodes
0.34.0 - June 2022 (2022-06-13)
Breaking Changes:
- The deprecated driver for ZI UHFLI has been removed. Please use the drivers provided by
zhinst-qcodes
. (#4081) - InstrumentBase class now raises error if name is an invalid identifier.
This effects creation of instruments, channels, modules. (#4178) - The deprecated fallback for visa addresses containing an
@
and the backend has been removed. (#4219) - QCoDeS no longer explicitly sets the read and write terminators to
""
(The empty string) by default.
The default terminators are now set by PyVISA. This should only have implications for RS232 instruments where
the default read and write terminators now are\r
. (#4219)
New:
- The QCoDeS instrument baseclass has gained a method
invalidate_cache
.
This will mark the cache of all parameters on the instrument and its submodules as
invalid. This is useful if you manually (e.g. via the front panel) make changes to
the instrument that QCoDeS cannot know about. (#4161`)
Improved:
- Improved conversion between
qcodes.data.data_set.DataSet
andxarray
. The conversion fromxarray
format to QCoDeS is more robust in reordering the coordinates.
The dataset attributeslabel
andunit
are now converted as well. (#4011`)
Improved Drivers:
- Fixed issue #4121 of setting the mode of the Keithley 6500 by adding single quotes around the mode value in the set_cmd string. (#4122)
- Add db/phase sweep parameter for rohde_schwarz ZNB driver (#4139)
- Add polar parameter to Keysight PNA to fetch the data using the polar format.
This reduces the measurement time; instead of pulling magnitude and phase separately,
we now get all complex data points in a single trace. (#4182)
0.33.0 - March 2022 (2022-03-09)
New:
- Added a function
qcodes.dataset.get_guids_by_run_spec
to look up dataset guids
from run specficiations. This replaces the now deprecated semi-public method
get_guids_from_run_spec
. It has a better handling of connections and more filtering options matching
load_by_run_spec
. (#3863) - A new set of validators
MultiTypeAnd
andMultiTypeOr
that allows combination of
other validators with And and Or were added. For backwards compatibility the existing
MultiType
validator takes acombiner
argument defaulting to Or. (#3917)
Improved:
- Fixed a typo in legacy PyqtGraph plot preventing correct handling of custom units.
Regression from 0.32.0 (#3773) - The warning triggered when a parameter is added to the snapshot incorrectly has been improved to include the
name of the full instrument and two levels of stack information. This should make it easier to find the
problematic parameter. (#3884) - Development versions of QCoDeS are now formatted as
{version}.dev{distance}+{branch}{vcs}{rev}.dirty
e.g.0.32.0.dev14+name.of.branch.gxxxxx(.dirty)
rather than "{version}+{distance}.{vcs}{rev}". This is
done since pip in some cases considers the later equal to the released
version and include more info to let you easily identify the
branch installed from. Note that due to limitations in characters
in version numbers/_-
are normalized to.
e.g. a branch named
myname/my_branch-name
becomesmyname.my.branch.name
in the
version number. (#3890) ChannelTuple
now has a repr that correctly identifies it as aChannelTuple
and not aChannelList
(#3911)Parameter.unit
is now a settable property rather than an attribute.
This should have few implications for user facing code but makes it possible
to do the same in a parameter subclass implementing validation or other functionality
as needed. (#3929)- Metadata added after
DataSet
export
to a netcdf file is now also added
to that exported netcdf file (unless the exported netcdf file has been moved
to a new location andset_netcdf_location
was not called with that new
location of the file) (#3932) - In the interactive widget the total time of a run is now correctly calculated as
end-time - start-time not the other way around. (#3944) - Loading a 2 or higher dimentional qcodes dataset back from a netcdf file has been corrected to
show the dataset in the correct shape.
QCoDeS dataset are now always written to netcdf files from the cache with the same order of axis as in memory. (#3945) - Datasets now correctly preserve the shape information when exported to another database. (#3956)
- Functions and classes marked deprecated with the QCoDes Deprecation decorator will now trigger
warnings that reflect where they are called from and not the location of the deprecation decorator. (#3959)
Improved Drivers:
- AMI430 3D magnet power supply driver: restore ramp rates of individual magnet
axes after simultaneous ramp via callingwait_while_all_axes_ramping
or
automatically ifblock_during_ramp
isTrue
. (#3885) - Update the Keysight Infiniium oscilloscope driver to use ParameterWithSetpoints and also make the driver
work without needing to run prepare_curvedata before measurement. Measurement subsystem is updated to be
channel aware so it is possible to run measurements on multiple channels in a single qcodes measurement.
For multiple traces, added the option to control automatic sweeping, similar to the N52xx driver. We can
now take data from multiple channels with a single digitize. (#3916) - Fix baud rate of QDevil and QDev QDac's to be 460800 (#3931)
- The Zurich instrument driver stubs in
qcodes.instrument_drivers.zurich_instruments
have been updated
to use the 0.3 version ofzhinst-qcodes
(#3969) - Fixed a typo that prevented initialization of Agilent 34400A (#3981)
0.32.0 - January 2022 (2022-01-24)
Breaking Changes:
- The
qcodes.version
module deprecated and no longer imported by default e.g. if you want to use it you will need
to explicitly importqcodes.version
. It is recommended to useqcodes.__version__
as an alternative. (#3762) - IPython measurement magic (Special command staring with % for use in IPython) using the legacy
loop is no longer enabled by default.
To enable it set the corresponding config value (core.register_magic
) in yourqcodesrc.json
config file to true. (#3764) - The
import_legacy_api
config option has been deprecated and will be removed in a future release. (#3781)
New:
-
An abstract instrument (An instrument with one or more abstract parameters) will now raise at
instrument creation time preventing such an instrument from being created.
This makes it easier to define interfaces that multiple instruments must implement.
Seehere <../examples/writing_drivers/abstract_instruments.ipynb>
__ for examples of how to use
this. (#3718) -
Improve the Keithley 2600 SMU calibration routine and make it
a standalone executable function (#3783) -
Add
ArraySweep
sweep class for use withdond
function
for sweeping parameters on arbitrary arrays of values (#3847) -
The instrument channel container
ChannelList
has been split into a immutableChannelTuple
and a mutableChannelList
. TheChannelList
class has gained ato_channel_tuple
method.
Thelock
method which locks aChannelList
has been retained but we do expect to deprecate
this in the future.All drivers in QCoDeS have been updated to either use a
ChannelTuple
or a unlocked
ChannelList
as it makes sense.Furthermore, the
ChannelList
class now implements the full
collections.abc.MutableSequence
interface behaving like a python list. (#3851)
Improved:
- Only register an Instrument in the list of connected instruments if the connection
was successful. This change allows connections to be retried with the same name
if the first attempt fails. (#3696) - Fixed a bug with
import_legacy_api
config option which would trigger a circular import error. (#3781) - Instances of
InstrumentModule
(and therfor their subclassInstrumentChannel
) are now accessible via
theInstrument.instrument_modules
dict on an instrument in addition to theInstrument.submodules
dict
which combines them with instances ofChannelList
. (#3834) ChannelList
now implements the fullcollections.abc.Sequence
interface.
This also means thatisinstance(mychannelist, Sequence) is True
(#3835)- Inserting into a
ChannelList
now correctly keeps the internal mapping up to date ensuring that
get_channel_by_name
works correctly. (#3838) InstrumentChannel
now subclasses a new classInstrumentModule
to clarify that instrument modules may
serve other purposes than being channels. At the momentInstrumentModule
andInstrumentChannel
are identical.
The type hints have been updated to clarify that only subclasses ofInstrumentModule
andChannelLists
are allowed submodules. (#3840)- Empty ChannelTuples/Lists now correctly raise an attribute error when trying
to get a non existing attribute. Previously they would raise an IndexError. (#3856)
Improved Drivers:
- Changed the value mapping of channel_selection on the AlazarTech ATS9440
driver to fix all the combinations where channel D is involved. (#3802) - The VISA version of the AMI driver has been improved to more robustly handle flaky communication. (#3833)
- Added a VISA version of the AMI430 driver. This is expected to be more robust with communication issues than the
IP version of the driver. This driver exists alongside the IP version as
qcodes.instrument_drivers.american_magnetics.AMI430_visa.py::AMI430
. (#3842)
0.31.0 - December 2021 (2021-12-20)
Improved:
- Do not apply offset or scale when getting a DelegateParameter and source is
uninitialized (its value is None) to prevent a TypeError being raised. Closes
#3653 (#3662) - get_parameter_data for an empty dataset now correctly
returns a dict of dicts of empty numpy arrays consistent
with how data is normally returned. Previously, this returned an
empty dict. (#3682)
New Drivers:
- Adds a driver for the PNA N5222B (#3683)
Improved Drivers:
- AMI430 magnet power supply: fix switch heater parameters that return 0 or 1 as a string (#3650)
- Adds CW mode to PNA 52xx (#3683)
- Update N52xx driver to fix warnings on initialization
related to not passing**kwargs
in trace parameters (closes #3687).
PNA traces updated to use ParameterWithSetpoints as base instead of
ArrayParameter. (#3688) - Add example notebook for R&S SGS100A RF source. (#3680)
v0.30.1
QCoDeS 0.30.0
QCoDeS 0.30.0 (2021-11-23)
New:
-
A new DataSet type DataSetInMem has been added. This allows users to meassure without writing raw data to an sqlite database as well as to load netcdf files into a QCoDeS dataset. See here and here. (#3094)
-
Added function get_channel_by_name to ChannelList class to get or or more channels in a ChannelList by name. (#3431)
-
The changelog for upcoming changes in the next release is now automatically build from fragments as part of the documentation. (#3451)
Improved:
-
The QcoDeS monitor can now be launched directly from a console using by running qcodes-monitor(.exe) (#3475)
-
dond avoids setting setpoint parameters with values that are already set. This significantly improves the performance of the dond function in multi-dimensional measurements. (#3534)
-
doNd functions now manually wait the delay between setpoints instead of using parameters post_delay attribute. This change prevents unintentional slow downs in measurements when the step delay of a setpoint parameter is considerably lower than the delay between measurement step points that passed into doNd functions. (#3576)
-
It is now possible to configure the name of an exported files to include elements such as guid, sample_name and experiment_name. The default format has changed to include the captured_run_id and guid. (#3586)
Improved Drivers:
-
Tektronix AWG70000 add support for 70001B and 70002B models. (#3438)
-
Added support for flags (auxiliary outputs) for Tektronix AWG70000 sequences (#3450)
-
The Galil documentation is now correctly included in the QCoDeS docs (#3452)
-
Improved the drivers for Keysight N51x1 and N51x3 signal generators by:
- Adding explicit support for N5173B
- Fixing the power range of N5183B
- Fixing the frequency range options for N51x1 (#3555)
Under the hood:
*The QCoDeS changelog is now being build using towncrier. (#3397)
v0.30.0.dev0
A prerelease to test the automatic release
QCoDeS 0.29.1
This is a patch release to support the latest version of OpenCensus
to help resolve issues where pip is unable to pick the correct set
of dependencies. (#3426)
Full Changelog: v0.29.0...v0.29.1
QCoDeS 0.29.0 - September 2021
Changelog for QCoDeS 0.29.0
The September 2021 release of QCoDeS.
New:
- Simultaneous ramping feature that enables you to sweep an AMI 3D magnet to (x,y,z) in
time T or at vector ramp rate R, ramping all 3 axes together (in parallel) and
making a linear/vector trajectory from current field to the setpoint
in 3D magnetic field space. Please see updates to the AMI magnet driver example
documentation. (#3233) - Galil DMC-41x3 stepper motor controller that can be used with Janis probes for
moving the measurement arm. (#2626)
Improved:
- Documentation: clarified contribution guides and contacts (#3375, #3370)
- Raise
ValueError
if given more than one result for the same parameter name
inDataSaver.add_result
. (#3265)
Improved drivers:
- Keithley 2600 SMU support to return both voltage and current compliance limit errors. (#3339, #3362)
- Make
SR86xBufferReadout
parameter take kwargs and pass them to base class. (#3341)
Under the hood:
- Logging update to explicitly set encoding for file handler thus
preventing issues on systems with less widespread encodings. (#3327) - Add type packages discovered by mypy --install-types. (#3379)
- Resolved uncertainties package issues. (#3334)
- ISSUE_TEMPLATE.md updates for reporting a bug. (#3345)
- Make it possible to manually trigger codeql, using codeql-analysis.yml
recommended by github. (#3314, #3329) - Remove redundant filters from test runner. (#3295)
QCoDeS 0.29.0a1 - September 2021 (alpha release)
Publishing an alpha release to perform tests before actual release comes out, especially of #3339.