Skip to content


With LabOne Q, you can take full advantage of the Zurich Instruments system control approach QCCS System Control. This approach handles all instruments in any combination as one system while remaining synchronized and controlled through one software interface (API).

Figure 1: LabOne Q Components

Figure 1 above shows the main building blocks of LabOne Q. They are divided into components, which perform tasks, and pure data objects.

Components are marked in a darker blue: The domain-specific language (DSL) provides a way to define quantum experiments, handle calibrations, results, and more. The Session manages the connection to all instruments. The Compiler parses the experiment definition and calculates all timings and pulses. Finally, the Controller takes over, programs the QCCS instruments, launches the experiment, and returns the results.

Data objects are marked in a lighter blue and kept separate from the components: The device setup holds a precise description of the devices making up your experimental setup. The calibration determines experimental settings like oscillator frequencies, which determine the behavior of the setup. The experiment is independent from both and stores the experimental sequence, including timing or pulse shapes.

Domain-Specific Language

The domain-specific language (DSL) constitutes the most important part of LabOne Q's user interface and you'll use it to define the data objects. First, you’ll define your instrument setup and the connections of individual setup components. The DSL uses logical signal lines to abstract the instruments, the physical channels, and the hardware settings. These settings are all saved in a DeviceSetup object and managed by LabOne Q. You only need to think and program in terms of logical signal lines that reflect the physical connections to a qubit, yet you have a whole stack of instruments with complex settings in your lab.

In a second step you define your single-qubit or multi-qubit characterization experiment or quantum circuit in the DSL on the experimental signal lines. All definitions are set offline, because only later the code is executed on the hardware. For such a situation, a declarative programming approach is useful to clearly separate directly executed Python code from code executed later by the Zurich Instruments hardware and to facilitate debugging.

Most of our example notebooks and manual chapters make use of a pythonic DSL programming style, which we call the "imperative" DSL style. This programming style offers good readability through indentations and the resulting code structure represents the experiment structure.

In contrast, the DSL offers also a comparably declarative style, where LabOne Q objects and their relation to each other are defined ("declared"). Please refer to the reference notebook on the declarative DSL style for more details.

You are able to change experimental settings like modulation frequencies or mixer calibrations and you define a pulse sequence with a pulse language that uses commands for playing and aligning pulses for driving and readout of your qubits. The DSL helps you to combine multiple pulses and complex sequences into sections which you use for single- and multi-qubit gates, cross-resonance gates and branching. Sections function as temporal and logical boundaries which help you to express and structure your desired experiment as a sequence of pulses and control flows, which is sorted not only in time but also in scope as you know it from Python. Control flows like sweeps, averages and a callback functionality to address any user-defined function give you the full flexibility for your experiments. Your individual quantum gates and full quantum circuits can be expressed with combinations of user-defined and optimized pulses as templates, and can be reused for multiple quantum information processing experiments.


The Session is the central part of LabOne Q that connects the definition of a setup, the instruments in the laboratory and the experiment you want to execute on the setup. You define a specific setup and experiment independently without the need for reprogramming when running the same experiment on different setups. From the Session you start the execution of your experiment, the Session will retrieve your results and will give you access to them. All data LabOne Q needs can be fully serialized (saved) and deserialized (loaded) via the Session. This enables you to store any data in a database and to reuse the data like stored experiments, results, instrument settings, pulses and waveforms any time, because all references are kept persistent. The Sessions enable LabOne Q to be used within other software frameworks, a queuing architecture, or cloud services.

Compiler and Controller

Upon executing a quantum information processing experiment, LabOne Q first starts a Compiler that runs an offline pre-calculation of settings and waveform data for time sequences as well as an offline code generation for each instrument of the system. This compilation step enables a separation of the quantum information processing experiment into real-time and near-time parts: Real-time parts can be executed fast and directly on the Zurich Instruments hardware. In most cases, these parts are executed within the coherence time of the quantum device. Near-time parts are slower, but still take place online with the execution of the experiment. These parts allow for sweeps of arbitrary instrument settings, or execution of user-defined callback functions.

Following the compilation, the LabOne Q Controller accesses the generated code, uploads it to the devices and then starts and controls the experiment’s execution. This 'Compile and Control' approach enables users to optimally use the resources of their quantum device and avoid idle time whenever possible.

Pulse Sheet Viewer

The Pulse Sheet Viewer visualizes the compiled experiment. You can explore the used signal lines, sections, pulse sequences, and pulses, as well as the control flows. The Pulse Sheet Viewer is an interactive html file which runs in the browser and is self contained. Thus, you can send it to others for discussions and analysis of experiments, use it for publications, as a reference and database for documentation, or you can also integrate it into a website to share it.

Monitoring Tool

Large Quantum Computing Control Systems have the need to monitor the overall status of the system in some kind of control stand. The LabOne Q Monitoring Tool is a web application running in the browser that gives an overview over the status of all devices that are defined in the DSL and connected with the Session. The application is divided into two parts, the monitor server (back end) and the monitor client (front end). While the monitor server is a binary executable running on a PC, the monitor client is running in the browser. The monitor server is the interface between the LabOne data server (and the devices to be monitored) and the visual representation displayed in the browser. The visual representation can be integrated in a website and is a standalone product.