- Revert full support of
fnmatch
wildcards and instead use the LabOne wildcard support. This means only*
symbols are supported. A*
in the middle of the path matches everything instead of a/
. A*
at the end of the path matches everything. device.factory_reset
now raises an exception if the factory reset was not successful (#243
).- Fixed issue where calling a
Node
withdir()
returned duplicate values on some nodes.
- Add internal trigger to SHFQA sweeper class.
- Add SHFQA / SHFQC Power Spectral Density (PSD) node and example
- 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 fromRuntimeError
.- Changed some
RuntimeError
exceptions toToolkitError
.
- Changed some
- Added
find_zsync_worker_port()
toPQSC
device class. The function can be used to find the ID of the PQSC ZSync port connected to a given device. - Added
session
property toBaseInstrument
. This enables getting the givenSession
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
andCommandTable.table
are used. - Fix issue with downloading waveforms from the device. This issue prevented indexes larger than 9 to be read from the device.
- 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
tozhinst.toolkit.nodetree.helpers.NodeDict
- Added
active_validation
argument toCommandTable
. 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 usingwait_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
- Fix issue that prevented correct compilation of sequences for AWG cores other than the first one.
- 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
intoWaveforms.validate
- Command Table
$schema
key removed from the output ofCommandTable.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
- For all LabOne modules forward the
execute
function from the zhinst-core in zhinst-toolkit
- 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()
tozhinst.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()
andstop()
shows specified timeout value whenTimeoutError
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.
- Adapt AWG Waveform upload (
write_to_waveform_memory
) to append to existing transactions. - Make consistency validate during waveform upload optional (new flag
validate
inwrite_to_waveform_memory
). - Add
get_sequence_snippet
function tozhinst.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 addedWave
class fromzhinst.toolkit.Waveforms
. - Getting a value by calling a wildcard node now returns
zhinst.toolkit.nodetree.node.WildcardResult
-
Commandtable.load_validation_schema
can also get the command table JSON schema from the device. -
load_sequencer_program
now raises anValueError
if emptysequencer_program
string is given. :issue:138
-
Added a new
raise_for_invalid_node
keyword-argument toNodeTree.update_nodes
. :issue: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. :pr:
#147
- Added support for SHFQC
- 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.
- 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
- 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
- Adapt modulation frequency range to +-1GHz (shfsg.sgchannels[i].modulation_freq, shfqa.qachannels[i].sweeper.oscillator_freq)
- Bugfix: DAQ module timeout exception raises AttributeError
- Make the command table validation optional
- SHFQA Adapt oscillator_freq to +-500e6 Hz
- Initial support for SHFSG
- Make Node Tree generation case insensitive
- Bugfix #86
- Python 3.8 support
- General
- Add
sync
function used ashdawg.sync()
to perform global synchronization - Add support for
syncSet
- Add support for
setVector
- Add support for loading factory presets
- General documentation improvements
- Add
- 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
- Add
- HDAWG
- Add
allowed_sequences
,allowed_trigger_modes
parameter - Add support for PQSC
- Add command table support
- Add
- Add PQSC driver
- Add SHFQA driver
- fix error when the device serial is uppercase
- fix busy error on AWG program upload
- extend AWG upload timeout to 100 s
- add type hints
- more documentation
- more documentation
- minor fixes and additions
- Initial release