Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.
Important

IBM Quantum Platform is moving and this version will be sunset on July 1. To get started on the new platform, read the migration guide.

Drag

class Drag(duration, amp, sigma, beta, name=None)

GitHub

The Derivative Removal by Adiabatic Gate (DRAG) pulse is a standard Gaussian pulse with an additional Gaussian derivative component. It is designed to reduce the frequency spectrum of a normal gaussian pulse near the 1|1\rangle - 2|2\rangle transition, reducing the chance of leakage to the 2|2\rangle state.

f(x)=Gaussian+1jbetad/dx[Gaussian]=Gaussian+1jbeta((xduration/2)/sigma2)[Gaussian]f(x) = Gaussian + 1j * beta * d/dx [Gaussian] = Gaussian + 1j * beta * (-(x - duration/2) / sigma^2) [Gaussian]

where ‘Gaussian’ is:

Gaussian(x,amp,sigma)=ampexp((1/2)(xduration/2)2/sigma2))Gaussian(x, amp, sigma) = amp * exp( -(1/2) * (x - duration/2)^2 / sigma^2) )

References

  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).

  2. F. Motzoi, J. M. Gambetta, P. Rebentrost, and F. K. Wilhelm Phys. Rev. Lett. 103, 110501 – Published 8 September 2009.

Initialize the drag pulse.

Parameters

  • duration (int) – Pulse length in terms of the the sampling period dt.
  • amp (complex) – The amplitude of the Drag envelope.
  • sigma (float) – A measure of how wide or narrow the Gaussian peak is; described mathematically in the class docstring.
  • beta (float) – The correction amplitude.
  • name (Optional[str]) – Display name for this pulse envelope.

Attributes

amp

Type: complex

The Gaussian amplitude.

Return type

complex

beta

Type: float

The weighing factor for the Gaussian derivative component of the waveform.

Return type

float

id

Type: int

Unique identifier for this pulse.

Return type

int

parameters

Type: Dict[str, Any]

Return a dictionary containing the pulse’s parameters.

Return type

Dict[str, Any]

sigma

Type: float

The Gaussian standard deviation of the pulse width.

Return type

float


Methods

__call__

Drag.__call__(channel)

Call self as a function.

draw

Drag.draw(dt=1, style=None, filename=None, interp_method=None, scale=1, interactive=False, scaling=None)

Plot the pulse.

Parameters

  • dt (float) – Time interval of samples.
  • style (Optional[PulseStyle]) – A style sheet to configure plot appearance
  • filename (Optional[str]) – Name required to save pulse image
  • interp_method (Optional[Callable]) – A function for interpolation
  • scale (float) – Relative visual scaling of waveform amplitudes
  • interactive (bool) – When set true show the circuit in a new window (this depends on the matplotlib backend being used supporting this)
  • scaling (Optional[float]) – Deprecated, see scale

Returns

A matplotlib figure object of the pulse envelope

Return type

matplotlib.figure

get_sample_pulse

Drag.get_sample_pulse()

Return a SamplePulse with samples filled according to the formula that the pulse represents and the parameter values it contains.

Return type

SamplePulse

validate_parameters

Drag.validate_parameters()

Validate parameters.

Raises

PulseError – If the parameters passed are not valid.

Return type

None

Was this page helpful?
Report a bug or request content on GitHub.