Release Notes - Latest Stable Version
Stable Release 26.1.0
Release date 29.01.2026
Requires: LabOne 26.1
Supports: Applications Library 26.1.0
DSL
- Functionality Added type hint validation for signal calibration objects using typeguard. Assigning a value of the incorrect type to a calibration object will now immediately raise a
TypeErrorrather than failing during compilation or execution. - Functionality Added the function
add_signalto thebuild_experimentDSL built-ins. This function is a wrapper forExperiment.add_signaland allows the user to add a signal with or without an experiment context. - Functionality Removed restriction where a single sweep parameter could not drive multiple hardware
Oscillatorfrequencies. Now a single sweep parameter can be used across multiple different oscillators. - Bug Fix Renamed
signal_typeparameter increate_connection()in favor oftype. The old parameter name will be removed in a future version. - Bug Fix Fixed a bug where referencing an invalid section in
play_afterin a right-aligned section did not raise an error. - Bug Fix Fixed a bug where type validation did not support
TypeAliasTypefrom Python 3.12+ and numpy 2.4+. - Bug Fix Fixed a bug where the
playcommand withoutpulseandmarkersdid not work when the markerwaveformwas a sampled pulse. - Bug Fix Fixed an issue where section triggers were not shown in Pulse Sheet Viewer.
- Bug Fix Fixed a bug where acquire pulses were missing in Pulse Sheet Viewer when multiple kernels were used.
- Documentation Added the Subsampling Techniques for Achieving Waveform Precision in Picoseconds tutorial and support code to perform subsampling delay adjustments.
Compiler
- Functionality Produced more compact Sequencer C code in some situations involving nested sweeps.
- Functionality Extended auto chunking to handle sweeps limited by the maximum number of acquired results. When a sweep exceeds the instrument's result memory capacity, it can now automatically be split into smaller chunks, each acquiring fewer results to fit within the hardware limit.
- Functionality Calculate result shapes at compile time and make them available via
compiled_experiment.scheduled_experiment.result_shape_info.shapes. - Functionality Improved unused sweep parameter detection. The compiler will now raise an error whenever the experiment or device setup contains a sweep parameter that is not driven by any sweep.
- Bug Fix Fixed a bug where conditional phase-increments at case-branch edges were not supported, and where they leaked in case-branches with no defined pulses.
- Bug Fix Fixed a bug where the compiler would output unnecessary log warnings about dropping the imaginary part of a waveform on RF signals.
- Bug Fix Fixed a bug where result shaping failed (array broadcasting error) in case of multiple different handles on the same signal and inside different case blocks.
- Bug Fix Fixed a bug where acquisition commands inside match-case blocks produced incorrect result shapes and contents: an extra dimension was added, with actual results placed at the beginning of the array and the remainder filled with
NaNs. - Bug Fix Fixed a bug where registration of derived parameters in near-time execution loops failed.
- Bug Fix Fixed a bug where the error message was unclear when feedback acquisition or measure line 'port_delay' calibration was swept.
- Breaking Change Transpose the last two dimensions of the shape of RAW acquisition results in case of multiple handles with the same name - before:
(..., handle, samples), after:(..., samples, handle). This brings the axis corresponding to the multiple handles to the same location as for the case of non-RAW acquisition. - Breaking Change Fixed a bug where result type was incorrect when there is only a single acquisition for a handle in the entire experiment. Before, it was a scalar (
np.complex128), now it is always annp.ndarray, even if it only has a single element. - Bug Fix Fixed a bug where
ModulationType.AUTOincorrectly forced SOFTWARE modulation for INTEGRATION acquisitions even when the long readout time option (LRT) is available.ModulationType.AUTOnow resolves to HARDWARE modulation when LRT is available on the targeted instrument.
Controller
- Bug Fix Fixed a bug where long readout (LRT) settings were not reset correctly in experiments where LRT is not used.
- Bug Fix Fixed a bug where the HDAWG would not start if previously used cores were now unused.
- Bug Fix Fixed a bug where the local event loop was pinned to the thread instead of the session, preventing the same session from being invoked from multiple threads, even when concurrent calls were properly synchronized by the user.
- Bug Fix Fixed a bug where execution would time out when reading large amounts of data, particularly in single-shot mode and over slow connections.
- Bug Fix Fixed a potential memory overflow issue: data from unused integrators was accumulating until the end of the experiment.
- Bug Fix Fixed a bug where the Pipeliner was not executing when SHFQC was present in the setup but not used in the chunked experiment.
- Bug Fix Fixed a bug (introduced in v2.61.0) that prevented standalone HDAWG cores from synchronizing properly.
- Bug Fix Fixed a bug where using the first internal-only channel with the RTR option triggered a false exception.
- Bug Fix Fixed a bug where a
SYNCIGNOREDerror occurred in standalone SHFQC when running a non-chunked experiment right after a chunked one in the same session.
Workflows
- Bug Fix Fixed a bug where
FolderStorededuplication treated numpy arrays that containNaNs as unequal to themselves, storing them repeatedly. - Bug Fix Fixed a bug where a minimum width for the Lorentzian fit in the fitting helper functions was not set, sometimes causing division by zero errors.
- Bug Fix Fixed the serialization of the
auto_chunkingparameter ofExperimentsweeps. Previously this parameter was not serialized. Experiments saved before this version of LabOne Q are treated as thoughauto_chunkingwas set toFalse. - Bug Fix Fixed a bug in the
FolderStoreserializer to support dictionaries ofQuantumElementandQuantumParameterobjects whose keys are tuples of strings, as explained in the FolderStore serializer documentation. Without this, supplying temporary topology edge parameters totemporary_qpuwould fail to save thetemporary_parameterspassed, because edges are passed as tuples of the form(tag, q0.uid, q1.uid). For example,("coupler", "q0", "q1"). With this change,temporary_parametersare saved correctly. - Documentation Updated the FolderStore documentation to clarify that only dicts of
QuantumElementorQuantumParameterswhose keys are strings or tuples of strings may be serialized by theFolderStoreserializer. - Breaking Change Changed
calibrate_cancellationworkflow to set pump cancellation attenuation and phase to0.0when cancellation is off.
Applications Library
- Functionality Support using SG channels for flux lines in
TunableTransmonQubitand inTunableCoupler. - Functionality Added the ZZ Coupling Characterization experiment together with a How-to Guide.
- Documentation Added the Time-Resolved Photon Number experiment together with a How-to Guide.
- Documentation Updated the Ramsey example for spin qubits in the Spin Qubit Pulse Sequences with the HDAWG How-to Guide.
- Documentation Corrected the repetition settings in the Amplitude Calibration with Error Amplification How-to Guide.
Testing & Benchmarking
- Documentation Extended the example notebook for the benchmarking package to also display data from 2-qubit RB and to show fractional time spent in different compilation steps.
Deprecations
- The
qubits/qubit/parametric_amplifierargument of typeQuantumElementsis deprecated for all experiment workflows in v26.1.0 and will no longer be supported in v26.4.0. Please pass an argument of typelist[str] | strinstead, i.e., the quantum element UIDs instead of the quantum element instances. - The
temporary_parameterspositional argument was added to the followingcontribexperiment workflows:amplitude_rabi_chevron,signal_propagation_delay,single_qubit_randomized_benchmarking,spin_locking,time_rabi, andtime_rabi_chevron. This is a breaking change if calling these experiment workflows with theoptionspositional argument. - The
QPUclass has been updated to use the termquantum_elementinstead ofqubitfor broader applicability. The following arguments are affected:qubits(please usequantum_elementsinstead). The following methods are affected:copy_qubits(please usecopy_quantum_elementsinstead),override_qubits(please useoverride_quantum_elementsinstead),qubit_by_uid(please use__getitem__instead),quantum_element_by_uid(please use__getitem__instead). The following attributes are affected:qubits(please usequantum_elementsinstead),_qubit_map(please use_quantum_element_mapinstead). The old methods/attributes will be removed in v26.4.0. - The
update_qubitsandupdate_quantum_elementsmethods in theQPUclass are deprecated and replaced with the more general methodupdate. The new methodupdateworks for both quantum elements and topology edges. The old methods will be removed in v26.4.0. - The
user_definedquantum parameters key is deprecated. Please use thecustomattribute from theQuantumParametersparent class instead. Theuser_definedquantum parameters key will no longer be supported in v26.4.0. - The
laboneq.dsl.serialization.Serializerclass is deprecated and will be removed in future releases. Uselaboneq.serializersinstead.
Known Issues
- Running Gen1 experiments can produce controller warnings indicating RT start conditions on follower devices are not fulfilled (e.g.,
UHFQA:dev2801: AWG 0 didn't startafter 5s); experiments may still execute correctly, but affected Gen1 experiments may take ~20%+ longer due to the additional wait/retry behavior. We are working on a fix and will release it as a patch to 26.1.0 as soon as it is available. - Using the
reset_signal_oscillator_phase()on signals of typerf_signalis currently not supported. - Using
OpenQASMTranspiler.batch_experimentwith QASM programs that contain native measurement operations will lead to an unexpected shape of the returned data. To ensure the correct shape, measurement operations should be removed from the OpenQASM program, and.batch_experimentshould be called with the option fieldadd_measurement=True, which will add the measurement operations to the LabOne QExperimentduring the import step (see our tutorial for more details). - Using the internal scope to acquire raw traces on multiple channels of an SHFQA in a single experiment is only possible if the timing of all acquisitions is equal between instrument channels.
- Using runtime checks of the sequencer playback through the
disable_runtime_checks=Falseargument ofsession.connect(), is currently not possible when the experiment contains real-time feedback or is using the on-device PRNG. In the latter case, unintended error messages may be produced if the option is used. - When using the pipeliner in an experiment by specifying a
chunk_countparameter in a sweep, the number ofacquirecommands in each chunk currently needs to be equal. Typically, this means that the number of sweep steps within each chunk has to be the same. - When using
OutputSimulatoror pulse sheet viewer with an experiment using the pipeliner or near-time sweeping, currently only the first sequence step will be displayed. - When delaying logical signal lines of type
rf_signalvia thedelay_signalcalibration property, allrf_signals on the same sequencer core must be set to the same delay. - When delaying logical signal lines on the SHFQA via the
delay_signalcalibration property, the delays for the measure and acquire line must be the same; the measure pulse delay is not added to the acquire pulse delay as on the UHFQA. We recommend to useport_delayfor now. - When creating a section with very short content (below the device's minimum waveform length), the compiler may fail to map the experiment to valid SeqC, and will generate an error. As a workaround in these cases, manually add delays to the sequence.
Pre-Release versions
- Pre-Release 26.4.0b1
- Pre-Release 26.1.0b4
- Pre-Release 26.1.0b3
- Pre-Release 26.1.0b2
- Pre-Release 26.1.0b1
Previous versions
- Patch Release 25.10.3
- Patch Release 25.10.2
- Patch Release 25.10.1
- Stable Release 25.10.0
- Release 2.62.0
- Release 2.61.0
- Patch Release 2.60.1
- Release 2.60.0
- Release 2.59.0
- Release 2.58.0
- Release 2.57.0
- Release 2.56.0
- Release 2.55.0
- Release 2.54.0
- Release 2.53.0
- Release 2.52.0
- Release 2.51.0
- Release 2.50.0
- Release 2.49.0
- Release 2.48.0
- Release 2.47.0
- Release 2.46.0
- Release 2.45.0
- Release 2.44.0
- Release 2.43.0
- Release 2.42.0
- Release 2.41.0
- Release 2.40.0
- Release 2.39.0
- Release 2.38.0
- Release 2.37.0
- Release 2.36.0
- Release 2.35.0
- Release 2.34.0
- Patch Release 2.33.1
- Release 2.33.0
- Release 2.32.0
- Release 2.31.0
- Release 2.30.0
- Release 2.29.0
- Release 2.28.0
- Release 2.27.1
- Release 2.27.0
- Release 2.26.0
- Release 2.25.0
- Release 2.24.0
- Release 2.23.0
- Release 2.22.0
- Release 2.21.0
- Patch Release 2.20.1
- Release 2.20.0
- Release 2.19.0
- Release 2.18.0
- Release 2.17.0
- Release 2.16.0
- Release 2.15.0
- Release 2.14.0
- Release 2.13.0
- Release 2.12.0
- Release 2.11.0
- Release 2.10.0
- Release 2.9.0
- Release 2.8.0
- Release 2.7.0
- Release 2.6.0
- Release 2.5.0
- Release 2.4.0
- Release 2.3.0
- Release 2.2.0
- Release 2.1.0
- Release 2.0.0
- prior to Release 2.0.0