Release Notes
Release 2.55.0
Release date 03.07.2025
Requires: LabOne 25.04
Includes: Applications Library 2.9.0
Notes & Important Changes
Functionality
- The auto-chunking system now intelligently handles program memory constraints by automatically detecting when compiled programs exceed instruction memory limits.
- Added a
__getitem__
method toQPU
as a way to efficiently return quantum elements by UID, slice, or type. You can now retrieve elements using intuitive bracket notation: by UID (qpu["q0"]
), multiple UIDs (qpu[["q0", "q1"]]
), slice indexing (qpu[:2]
), or by type (qpu[Transmon]
). Thequantum_element_by_uid
method has been deprecated in favor of this more flexible and user-friendly interface. - Generalized the caching mechanism in the serialization system to support multiple object types beyond just pulses.
The new
ObjectCache
framework now provides caching for bothPulse
objects andSection
objects, reducing serialized data size and improving performance by avoiding duplication of repeated objects. - A new
copy()
method has been added to the QuantumOperations class, enabling users to create independent copies of quantum operations instances. The copied instance includes all registered operations but intentionally excludes the attached QPU, allowing the copy to be attached to a different QPU as needed. This enhancement provides greater flexibility when working with quantum operations across multiple quantum processing units. - The
add_quantum_elements
method has been added to thedsl
namespace, which can manually add logical signals and calibration of quantum elements to anExperiment
. Learn how to use it in our tutorial! - Added the
QPUTopology
class, which stores the topology information of the QPU as a multi-edged directed graph. The topology is an attribute of the QPU and may be accessed viaqpu.topology
. This feature facilitates operations involving multiple quantum elements, such as multi-qubit gates. Check out our new tutorial describing how to use this feature.
Note
LabOne Q has ended support and testing for Python version 3.9 with version 2.53. Please make sure to upgrade your Python environments to a supported version before upgrading.
Note
Including the instrument options when constructing the DeviceSetup
is now a strict requirement since version 2.52.0.
Specify your instrument configuration through either the 'options' field in the 'instruments' list when using a device setup descriptor,
or by specifying the device_options
argument when constructing your setup programmatically.
Alternatively, you can use the generate_device_setup
helper function available under contrib
,
which has the option to query the instruments for installed options automatically.
This function is already used in the majority of our publicly available examples.
Applications Library
- All references to
qpu.qubits
in the documentation have been updated toqpu.quantum_elements
. The attributeqpu.qubits
was deprecated in LabOne Q 2.52.0. - Implemented the
temporary_qpu
andtemporary_quantum_elements_from_qpu
tasks for experiments and experiment workflows. This enables the temporary modification of parameters in the QPU topology in the future. All experiments in the Applications Library have been updated to usetemporary_qpu
andtemporary_quantum_elements_from_qpu
instead oftemporary_modify
. Thetemporary_modify
task has been deprecated.
Deprecation notice
Note
The deprecated Results.compiled_experiment
attribute has been removed.
Note
The Qubit
and Transmon
classes are not yet considered stable and their APIs might still change in future versions.
Their parent QuantumElement
class has been updated with version 2.44, making it much simpler to create your own implementation of a qubit object.
Note
The temporary_modify
task from the Applications library has been deprecated. Please use temporary_qpu
and, if needed,
temporary_quantum_elements_from_qpu
instead.
Bug Fixes
- Fixed serialization bug by correcting parameter type definitions to support both single parameters and parameter lists in sweep operations and pulse parameters in LabOne Q DSL.
- Fixed a bug in pipeliner emulation for SHFQC instrument causing controller timeouts and missing measurement results.
- Fixed a bug where trigger outputs were not being generated when a trigger signal was configured on a section but no pulses were played on that signal within the section.
Documentation
- Updated the "Writing an Experiment Workflow" tutorial with a section explaining how to manually add additional quantum elements to an experiment using
dsl.add_quantum_elements
. - Updated the serialization tutorial to include benchmarks. The new serializer is in many cases ~2x faster than LabOne Q's old serializer.
- Added the QPU topology tutorial demonstrating how to create, modify, and visualize quantum processing unit topologies using the QPU class.
Known Issues
- Using
OpenQASMTranspiler.batch_experiment
with 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_experiment
should be called with the option fieldadd_measurement=True
, which will add the measurement operations to the LabOne QExperiment
during 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=False
argument 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_count
parameter in a sweep, the number ofacquire
commands 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
OutputSimulator
or 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_signal
via thedelay_signal
calibration property, all rf_signals on the same sequencer core must be set to the same delay. - When delaying logical signal lines on the SHFQA via the
delay_signal
calibration 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_delay
for 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.
Previous versions
- 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
- 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
- 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