Changelog#

zhinst-toolkit Changelog#

Version 0.5.3#

  • Add internal trigger to SHFQA sweeper class.

Version 0.5.2#

  • Add SHFQA / SHFQC Power Spectral Density (PSD) node and example

Version 0.5.1#

  • Added full support for the following LabOne modules (no need to fallback to zhinst.core):

    • Impedance Module

    • Precompensation Advisor Module

  • Introduced new base exception class zhinst.toolkit.exceptions.ToolkitError, deriving from RuntimeError.

    • Changed some RuntimeError exceptions to ToolkitError.

  • Added find_zsync_worker_port() to PQSC device class. The function can be used to find the ID of the PQSC ZSync port connected to a given device.

  • Added session property to BaseInstrument. This enables getting the given Session from the instrument.

  • Changed SHFQA node qachannels/*/oscs/0/freq value range from (-500e6 Hz, 500e6 Hz) to (-1e9 Hz, 1e9 Hz). Out-of-range values now rounds to (-1e9 Hz, 1e9 Hz). The functionality is changed to be consistent with LabOne UI.

  • Improved verbosity of the error message when invalid attributes of CommandTable.header and CommandTable.table are used.

  • Fix issue with downloading waveforms from the device. This issue prevented indexes larger than 9 to be read from the device.

Version 0.5.0#

  • Added full support for the following LabOne modules (no need to fallback to zhinst.core):

    • Scope Module

    • Sweeper Module

    • DAQ Module

  • Renamed zhinst.toolkit.nodetree.node.WildcardResult to zhinst.toolkit.nodetree.helpers.NodeDict

  • Added active_validation argument to CommandTable. By disabling it, CommandTable does not actively validate the inputs and therefore it improves the speed for command table creation.

  • Adapt awg.enable_sequencer to check the acknowledged value instead of using wait_for_state_change. This makes it much more stable when used with short sequences.

  • Fix issue with downloading waveforms from the device. This issue prevented reading waveforms from any other than the base channel.

  • Normalize the zhinst-core dependency version.

  • Update SHFQA Sweeper to expose new properties through nodes (predicted_cycle_time, actual_hold_off_time, actual_settling_time)

  • Tested against Python 3.11

Version 0.4.3#

  • Fix issue that prevented correct compilation of sequences for AWG cores other than the first one.

Version 0.4.2#

  • Embed multistate utils for the SHFQA into the node tree

    • shfqa.qachannels[n].readout.multistate.qudits[m].configure(settings)

    • shfqa.qachannels[n].readout.multistate.get_qudits_results()

  • Added new example for the multistate discrimination (shfqa_multistate_discrimination) for the SHFQA

  • Fixed issue #181 (Wrong _device_type of awg node of UHFQA/UHFLI) which prevented the compilation of sequences.

  • Waveform validation moved from the write_to_waveform_memory into Waveforms.validate

  • Command Table $schema key removed from the output of CommandTable.as_dict function

  • Command Table validation changed to disabled by default

  • Command Table upload check disabled when called within a transaction.

  • New dependency pyelftools for extracting waveform information from a complied sequencer code.

  • Interface auto detection adapted to support none, which was introduced with LabOne 22.08

Version 0.4.1#

  • For all LabOne modules forward the execute function from the zhinst-core in zhinst-toolkit

Version 0.4.0#

  • Add new class zhinst.toolkit.Sequence that allows a more flexible use of sequences in toolkit (#141).

  • Add support for session wide transactions that bundle set command from all devices connected to the data server. (#134)

  • Add from_existing_connection() to zhinst.toolkit.Session to help reusing the existing DataServer connection.

  • Bugfix: Nodes with nameless options don’t raise an exception when their enum attribute is called (#165).

  • Bugfix: Values of enumerated nodes can now be pickled (#129).

  • Bugfix: SHFScope run() and stop() shows specified timeout value when TimeoutError is raised.

  • Bugfix: Allow capital letters in node paths. (#173).

  • Adapt toolkit to use the offline awg compiler when uploading a sequencer code to a awg node. Improves the performance a lot and also enables the uploading of a sequencer code within a transaction (Works both for AWGs and Generators).

  • Add new function compile_sequencer_code to the awg node.

Version 0.3.5#

  • Adapt AWG Waveform upload (write_to_waveform_memory) to append to existing transactions.

  • Make consistency validate during waveform upload optional (new flag validate in write_to_waveform_memory).

  • Add get_sequence_snippet function to zhinst.toolkit.Waveforms class. The function is able to generated a sequence code snippet that defines and assigns the waveforms for this object. Additional meta information like an optional name or the output configuration can be specified through a newly added Wave class from zhinst.toolkit.Waveforms.

  • Getting a value by calling a wildcard node now returns zhinst.toolkit.nodetree.node.WildcardResult

Version 0.3.4#

  • Commandtable.load_validation_schema can also get the command table JSON schema from the device.

  • load_sequencer_program now raises an ValueError if empty sequencer_program string is given. #138

  • Added a new raise_for_invalid_node keyword-argument to NodeTree.update_nodes. #110

    Now only a warning (instead of KeyError) is issued when trying to initialize device/module object, which does not have nodes defined in node value parsers.

  • Minor type hint fixes. #147

Version 0.3.3#

  • Added support for SHFQC

Version 0.3.2#

  • Added a helper function uhfqa.qas[n].integration.write_integration_weights for QAS integration weights configuration

  • Bugfix: Adapt Node Tree to be able to get daq result data #113

  • Bugfix: in the Waveform class to be able to convert a single waveform into a complex waveform.

  • Bugfix: HF2 PID nodes are available.

Version 0.3.1#

  • Add missing nodes setting for QCCS mode #108

  • pqsc.check_zsync_connection blocks even if nothing is connected

  • Create a temporary awg module every time a sequencer code is uploaded (The reason for it is to have de defined state) #104

  • reintroduce uhfqa.qa_delay function

  • uhfli/uhfqa return node object for uhfli.awg instead of raising an error (necessary for qcodes drivers) #102

  • hdawg.enable_qccs_mode wrong reference clock source fixed

  • Small docstring corrections

Version 0.3#

  • Redesign and complete refactoring of zhinst-toolkit

    • Lazy node tree to improve setup times

    • Switch to session based approach (no longer device based)

    • Command table handling improved

    • Waveform handling improved

    • Removed automated sequencer code generation

    • Added LabOne modules

  • Improved testing with mocking

Version 0.2.4#

  • Adapt modulation frequency range to +-1GHz (shfsg.sgchannels[i].modulation_freq, shfqa.qachannels[i].sweeper.oscillator_freq)

  • Bugfix: DAQ module timeout exception raises AttributeError

Version 0.2.3#

  • Make the command table validation optional

Version 0.2.2#

  • SHFQA Adapt oscillator_freq to +-500e6 Hz

  • Initial support for SHFSG

  • Make Node Tree generation case insensitive

Version 0.2.1#

  • Bugfix #86

Version 0.2.0#

  • Python 3.8 support

  • General

    • Add sync function used as hdawg.sync() to perform global synchronization

    • Add support for syncSet

    • Add support for setVector

    • Add support for loading factory presets

    • General documentation improvements

  • AWG Core

    • Update sequencer commands

    • Update triggering in predefined sequences

    • Update sequencer programs

  • UHFQA

    • Add qa_delay, allowed_sequences , allowed_trigger_modes parameter

    • Add support for PQSC

    • Add scope module

  • HDAWG

    • Add allowed_sequences , allowed_trigger_modes parameter

    • Add support for PQSC

    • Add command table support

  • Add PQSC driver

  • Add SHFQA driver

Version 0.1.5#

  • fix error when the device serial is uppercase

Version 0.1.4#

  • fix busy error on AWG program upload

Version 0.1.3#

  • extend AWG upload timeout to 100 s

Version 0.1.2#

  • add type hints

  • more documentation

Version 0.1.1#

  • more documentation

  • minor fixes and additions

Version 0.1.0#

  • Initial release