Skip to content

Release Notes

Release 2.43.0

Release date 19.12.2024

Requires: LabOne 24.10

Includes: Applications Library 1.2.0

Notes & Important Changes

Functionality

  • Removed experimental flag from OpenQASM support and upgraded the API. Check out the new tutorial to see how the new API works. Below, we summarise the major changes:
  • Added laboneq.openqasm3.OpenQASMTranspiler to transpile OpenQASM programs into LabOne Q objects by using QuantumOperations. The new tutorial shows how to use the QuantumOperations and OpenQASMTranspiler to transpile QASM programs into a LabOne Q Experiment.
  • The following objects are deprecated in favor of newly added laboneq.openqasm3.OpenQASMTranspiler
    • laboneq.openqasm3.GateStore supplemented by QuantumOperations
    • laboneq.openqasm3.exp_from_qasm supplemented by OpenQASMTranspiler.experiment
    • laboneq.openqasm3.exp_from_qasm_list supplemented by OpenQASMTranspiler.batch_experiment
  • Added the possibility to transpile a QASM program into a LabOne Q Section using OpenQASMTranspiler.section().
  • Added two options classes SingleProgramOptions and MultiProgramOptions to be used with the new OpenQASMTranspiler.experiment and OpenQASMTranspiler.batch_experiment.
  • OpenQASM wavefroms can now be specified either as a list of samples or as an instance of laboneq Pulse. The former was not supported in the old API.
  • In the new API, OpenPulse implicit input waveforms are passed via the inputs argument compared to exp_from_qasm where they were passed in as input arguments:
    exp_from_qasm(waveforms={"wf0": Pulse()}) --> .transpile(inputs={"wf0": Pulse()})
  • In the new API, ports are passed in via the externs argument compared to exp_from_qasm where they were passed in as input arguments: exp_from_qasm(ports={"port": "port"}) --> .transpile(externs={"port": "port"})
  • Improved input validation when importing QASM programs.
  • Added tracking of overrange indicators on SHF instruments. If an overrange condition is detected during the execution of your experiment, a warning will be logged by LabOne Q indicating the channel on which the overrange condition was present. Overrange can be indicative of an incompatible power range setting on signal inputs or be caused by overshoots from very steep pulse edges on output channels.

Applications Library

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 where automuting did not engage for very long delay periods.
  • Fixed a bug where opts.spectroscopy_reset_delay was not passed to the call to the passive_reset operation in qubit_spectroscopy_amplitude.py/create_experiment, like it is done in qubit_spectroscopy.py.
  • Fixed a bug where the multiple-QASM-program Experiment generation function exp_from_qasm_list (now OpenQASMTranspiler.batch_experiment) wrongly applied an ExperimentCalibration.

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