DRAG experiments#
In this section we show how to run DRAG experiments using Qibocal
DRAG [7, 15]: pulses can be used to lower both phase and leakage errors. It consists of adding a quadrature component to the pulse which is proportional to the time derivative of the in-phase component. Given a pulse with an in-phase component \(\Omega_x\) the quadrature component \(\Omega_y\) is evaluated as
where \(\beta\) is a scaling parameter.
Qibocal provides two separate protocols to calibrate \(\beta\).
Method 1#
\(\beta\) can be extracted by playing the pulse sequence composed of \([R_X(\pi) - R_X(-\pi)]^N\) for different values of \(\beta\) as shown in [21]. The post-processing consists of measuring the probability of \(\ket{0}\) for every \(\beta\) and fitting the curve with a cosine. The correct \(\beta\) value is the one which maximizes the curve.
Parameters#
- class qibocal.protocols.drag.DragTuningParameters(beta_start: float, beta_end: float, beta_step: float, unrolling: bool = False, nflips: int = 1)[source]
DragTuning runcard inputs.
- beta_start: float
DRAG pulse beta start sweep parameter.
- beta_end: float
DRAG pulse beta end sweep parameter.
- beta_step: float
DRAG pulse beta sweep step parameter.
- unrolling: bool = False
If
True
it uses sequence unrolling to deploy multiple sequences in a single instrument call. Defaults toFalse
.
- nflips: int = 1
Repetitions of (Xpi - Xmpi).
- hardware_average: bool = False
By default hardware average will be performed.
- nshots: int
Number of executions on hardware.
- relaxation_time: float
Wait time for the qubit to decohere back to the gnd state.
Example#
- id: drag tuning
operation: drag_tuning
parameters:
beta_start: -1
beta_end: 1
beta_step: 0.1
nflips: 5
unrolling: true
Running this protocol you should get something like this:

Method 2#
The second method consists of playing two different sequences \(R_Y(\pi) R_X(\pi/2)\) and \(R_X(\pi) R_Y(\pi/2)\). These are two of the AllXY sequences which exhibit opposite sign of phase error as highlighted in [19]. The post-processing consists of measuring the probability of \(\ket{1}\) for every \(\beta\) and performing a linear fit for both sequences. The correct \(\beta\) value is the one where the two lines cross.
Parameters#
- class qibocal.protocols.drag_simple.DragTuningSimpleParameters(beta_start: float, beta_end: float, beta_step: float, unrolling: bool = False, nflips: int = 1)[source]
DragTuningSimple runcard inputs.
- hardware_average: bool = False
By default hardware average will be performed.
- nflips: int = 1
Repetitions of (Xpi - Xmpi).
- unrolling: bool = False
If
True
it uses sequence unrolling to deploy multiple sequences in a single instrument call. Defaults toFalse
.
- beta_start: float
DRAG pulse beta start sweep parameter.
- beta_end: float
DRAG pulse beta end sweep parameter.
- beta_step: float
DRAG pulse beta sweep step parameter.
- nshots: int
Number of executions on hardware.
- relaxation_time: float
Wait time for the qubit to decohere back to the gnd state.
Example#
- id: drag simple
operation: drag_simple
parameters:
beta_start: -1
beta_end: 1
beta_step: 0.1
unrolling: true
