Skip to content

Release Notes

Release 2.44.0

Release date 16.01.2025

Requires: LabOne 24.10

Includes: Applications Library 1.3.0

Notes & Important Changes

Functionality

  • The QuantumElement, Qubit and Transmon classes have been extensively modified:
  • Most of the functionality of Qubit and Transmon has been moved to their parent QuantumElement base class.
  • Users defining new qubit classes should now inherit directly from QuantumElement,
    specifying only the required signals and parameters and implementing a .calibration() method. All other methods are now included on the base class QuantumElement.
  • The Transmon class inherits directly from QuantumElement.
  • The Qubit class is now an alias for Transmon.
  • Both Qubit and Transmon are intended for demonstration purposes for now, as more changes are planned for these classes and will come soon.
  • QuantumElement is now an attrs class rather than a dataclass.
  • Some of the new QuantumElement methods that may be useful include: from_logical_signal_group, from_device_setup, experiment_signals, replace, update.
  • The .load and .save methods are deprecated and users are encourage to use laboneq.serializers.load and laboneq.serializers.save instead.
  • Where possible all three classes remain largely backwards compatible but there are many small changes. Get in touch with us if you need help!
  • If you have saved existing qubits you should be able to load them into LabOne Q 2.44 by first loading the qubits in LabOne Q 2.43, saving them with laboneq.serializers.save, and then loading them with laboneq.serializers.load in LabOne Q 2.44. The saving and loading procedure for users of laboneq-applications remains unchanged. See our documentation for details.
  • Removed the /logical_signal_groups/ prefix from the signal names of QuantumElements. When using DeviceSetup.set_calibration, logical signal calibration may be passed without the /logical_signal_groups/ prefix.
  • The OpenQASM experiment() method now automatically adds the qubit calibration to the experiment calibration.
  • Added support for passing qubit registers to OpenQASM instructions, enabling broadcasting of these operations onto multiple qubits in parallel. See the OpenQASM tutorial in the LabOne Q manual for details.

Applications Library

  • Updates TunableTransmonQubit to use the refactored QuantumElement class.

Note

Since version 2.36.0, LabOne Q uses the asynchronous LabOne API by default when communicating with instruments. If any issues arise with the asynchronous LabOne API, there is currently still the fallback option to the legacy synchronous API, using session.connect(use_async_api=False). Please notify us immediately if this situation arises. The synchronous API is now deprecated and will be removed in a future release.

Note

The OpenQASM importer is now considered stable and the API will not undergo major changes in future versions. Comments and feedback on the new API are appreciated.

Note

The Qubit and Transmon classes are not yet considered stable and their APIs might still change in future versions. Comments and feedback regarding the current implementation of these objects and their use in your experiments are welcome.

Bug Fixes

  • Fixed a bug in the controller that could lead to erroneous AWG timeout errors.
  • Using Openpulse ports that are not declared within the program now raises an exception.
  • OpenQASM program cal blocks no longer produce empty Experiment sections when they do not include any operations.
  • Openpulse waveform variable type can now be used as an input argument for functions.
  • Added missing dependencies on qiskit and qiskit_experiments to laboneq-applications.
  • Fixed various bugs in the single-qubit randomized benchmarking experiment in laboneq-applications.

Documentation

Deprecation notice

  • Deprecated the internal DataStore and replaced its usage in all public examples.
  • Deprecated GateStore in favour of QuantumOperations. The GateStore API is till available. The gates are converted internally into QuantumOperations, which will result in additional reserve operations within the generated Experiment compared to previous behaviour.

Known Issues

  • Using runtime checks of the sequencer playback through the disable_runtime_checks=False argument of session.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 of acquire 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 the delay_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 use port_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