QCoDeS 0.32.0 (2022-01-24)¶
Breaking Changes:¶
The
qcodes.versionmodule 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 your
qcodesrc.jsonconfig file to true. (#3764)The
import_legacy_apiconfig 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. See here for examples of how to use this. (#3718)
Improve the Keithley 2600 SMU calibration routine and make it a standalone executable function (#3783)
Add
ArraySweepsweep class for use withdondfunction for sweeping parameters on arbitrary arrays of values (#3847)The instrument channel container
ChannelListhas been split into a immutableChannelTupleand a mutableChannelList. TheChannelListclass has gained ato_channel_tuplemethod. Thelockmethod which locks aChannelListhas been retained but we do expect to deprecate this in the future.All drivers in QCoDeS have been updated to either use a
ChannelTupleor a unlockedChannelListas it makes sense.Furthermore, the
ChannelListclass now implements the fullcollections.abc.MutableSequenceinterface 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_apiconfig option which would trigger a circular import error. (#3781)Instances of
InstrumentModule(and therfor their subclassInstrumentChannel) are now accessible via theInstrument.instrument_modulesdict on an instrument in addition to theInstrument.submodulesdict which combines them with instances ofChannelList. (#3834)ChannelListnow implements the fullcollections.abc.Sequenceinterface.This also means that
isinstance(mychannelist, Sequence) is True(#3835)
Inserting into a
ChannelListnow correctly keeps the internal mapping up to date ensuring thatget_channel_by_nameworks correctly. (#3838)InstrumentChannelnow subclasses a new classInstrumentModuleto clarify that instrument modules may serve other purposes than being channels. At the momentInstrumentModuleandInstrumentChannelare identical. The type hints have been updated to clarify that only subclasses ofInstrumentModuleandChannelListsare 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)
Add function argument for
Monitorcreation to allow grouping of parameters according to channels rather than instrument. Specifically, group according toparameter.instrumentinstead ofparameter.root_insturment. Default behavior is the current behavior with sorting byroot_instrument. (#3820)
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)