Skip to main contentIBM Quantum Documentation


qiskit.pulse.library.Drag(duration, amp, sigma, beta, angle=0.0, name=None, limit_amplitude=None) GitHub(opens in a new tab)

Bases: object(opens in a new tab)

The Derivative Removal by Adiabatic Gate (DRAG) pulse is a standard Gaussian pulse with an additional Gaussian derivative component and lifting applied.

It can be calibrated either to reduce the phase error due to virtual population of the 2|2\rangle state during the pulse or to reduce the frequency spectrum of a standard Gaussian pulse near the 12|1\rangle\leftrightarrow|2\rangle transition, reducing the chance of leakage to the 2|2\rangle state.

g(x)=exp(12(xduration/2)2sigma2)g(x)=A×g(x)g(1)1g(1)f(x)=g(x)×(1+1j×beta×(xduration/2sigma2)),0x<duration\begin{aligned} g(x) &= \exp\Bigl(-\frac12 \frac{(x - \text{duration}/2)^2}{\text{sigma}^2}\Bigr)\\ g'(x) &= \text{A}\times\frac{g(x)-g(-1)}{1-g(-1)}\\ f(x) &= g'(x) \times \Bigl(1 + 1j \times \text{beta} \times \Bigl(-\frac{x - \text{duration}/2}{\text{sigma}^2}\Bigr) \Bigr), \quad 0 \le x < \text{duration} \end{aligned}

where g(x)g(x) is a standard unlifted Gaussian waveform, g(x)g'(x) is the lifted Gaussian waveform, and A=amp×exp(i×angle)\text{A} = \text{amp} \times \exp\left(i\times\text{angle}\right).


  1. Gambetta, J. M., Motzoi, F., Merkel, S. T. & Wilhelm, F. K. Analytic control methods for high-fidelity unitary operations in a weakly nonlinear oscillator. Phys. Rev. A 83, 012308 (2011).(opens in a new tab)

  2. F. Motzoi, J. M. Gambetta, P. Rebentrost, and F. K. Wilhelm Phys. Rev. Lett. 103, 110501 – Published 8 September 2009.(opens in a new tab)

Create new pulse instance.


  • duration – Pulse length in terms of the sampling period dt.
  • amp – The magnitude of the amplitude of the DRAG envelope.
  • sigma – A measure of how wide or narrow the Gaussian peak is; described mathematically in the class docstring.
  • beta – The correction amplitude.
  • angle – The angle of the complex amplitude of the DRAG envelope. Default value 0.
  • name – Display name for this pulse envelope.
  • limit_amplitude – If True, then limit the amplitude of the waveform to 1. The default is True and the amplitude is constrained to 1.


ScalableSymbolicPulse instance.



= 'Drag'

Was this page helpful?