204 lines
7.8 KiB
Plaintext
204 lines
7.8 KiB
Plaintext
---
|
||
title: Drag
|
||
description: API reference for qiskit.pulse.library.Drag
|
||
in_page_toc_min_heading_level: 1
|
||
python_api_type: class
|
||
python_api_name: qiskit.pulse.library.Drag
|
||
---
|
||
|
||
# Drag
|
||
|
||
<Class id="qiskit.pulse.library.Drag" isDedicatedPage={true} github="https://github.com/qiskit/qiskit/tree/stable/0.21/qiskit/pulse/library/symbolic_pulses.py" signature="Drag(duration, amp, sigma, beta, name=None, limit_amplitude=None)" modifiers="class">
|
||
Bases: [`qiskit.pulse.library.symbolic_pulses.SymbolicPulse`](qiskit.pulse.library.SymbolicPulse "qiskit.pulse.library.symbolic_pulses.SymbolicPulse")
|
||
|
||
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\rangle$ state during the pulse or to reduce the frequency spectrum of a standard Gaussian pulse near the $|1\rangle\leftrightarrow|2\rangle$ transition, reducing the chance of leakage to the $|2\rangle$ state.
|
||
|
||
$$
|
||
\begin{split}g(x) &= \exp\Bigl(-\frac12 \frac{(x - \text{duration}/2)^2}{\text{sigma}^2}\Bigr)\\
|
||
g'(x) &= \text{amp}\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{split}
|
||
$$
|
||
|
||
where $g(x)$ is a standard unlifted Gaussian waveform and $g'(x)$ is the lifted [`Gaussian`](qiskit.pulse.library.Gaussian "qiskit.pulse.library.Gaussian") waveform.
|
||
|
||
**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).*](https://link.aps.org/doi/10.1103/PhysRevA.83.012308)
|
||
|
||
2. [*F. Motzoi, J. M. Gambetta, P. Rebentrost, and F. K. Wilhelm Phys. Rev. Lett. 103, 110501 – Published 8 September 2009.*](https://link.aps.org/doi/10.1103/PhysRevLett.103.110501)
|
||
|
||
Create new pulse instance.
|
||
|
||
**Parameters**
|
||
|
||
* **duration** (`Union`\[`int`, [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression")]) – Pulse length in terms of the sampling period dt.
|
||
* **amp** (`Union`\[`complex`, [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression")]) – The amplitude of the Drag envelope.
|
||
* **sigma** (`Union`\[`float`, [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression")]) – A measure of how wide or narrow the Gaussian peak is; described mathematically in the class docstring.
|
||
* **beta** (`Union`\[`float`, [`ParameterExpression`](qiskit.circuit.ParameterExpression "qiskit.circuit.parameterexpression.ParameterExpression")]) – The correction amplitude.
|
||
* **name** (`Optional`\[`str`]) – Display name for this pulse envelope.
|
||
* **limit\_amplitude** (`Optional`\[`bool`]) – If `True`, then limit the amplitude of the waveform to 1. The default is `True` and the amplitude is constrained to 1.
|
||
|
||
## Methods
|
||
|
||
### draw
|
||
|
||
<Function id="qiskit.pulse.library.Drag.draw" signature="Drag.draw(style=None, backend=None, time_range=None, time_unit='dt', show_waveform_info=True, plotter='mpl2d', axis=None)">
|
||
Plot the interpolated envelope of pulse.
|
||
|
||
**Parameters**
|
||
|
||
* **style** (`Optional`\[`Dict`\[`str`, `Any`]]) – Stylesheet options. This can be dictionary or preset stylesheet classes. See `IQXStandard`, `IQXSimple`, and `IQXDebugging` for details of preset stylesheets.
|
||
|
||
* **backend** (*Optional\[BaseBackend]*) – Backend object to play the input pulse program. If provided, the plotter may use to make the visualization hardware aware.
|
||
|
||
* **time\_range** (`Optional`\[`Tuple`\[`int`, `int`]]) – Set horizontal axis limit. Tuple `(tmin, tmax)`.
|
||
|
||
* **time\_unit** (`str`) – The unit of specified time range either `dt` or `ns`. The unit of `ns` is available only when `backend` object is provided.
|
||
|
||
* **show\_waveform\_info** (`bool`) – Show waveform annotations, i.e. name, of waveforms. Set `True` to show additional information about waveforms.
|
||
|
||
* **plotter** (`str`) –
|
||
|
||
Name of plotter API to generate an output image. One of following APIs should be specified:
|
||
|
||
```python
|
||
mpl2d: Matplotlib API for 2D image generation.
|
||
Matplotlib API to generate 2D image. Charts are placed along y axis with
|
||
vertical offset. This API takes matplotlib.axes.Axes as `axis` input.
|
||
```
|
||
|
||
axis and style kwargs may depend on the plotter.
|
||
|
||
* **axis** (`Optional`\[`Any`]) – Arbitrary object passed to the plotter. If this object is provided, the plotters use a given `axis` instead of internally initializing a figure object. This object format depends on the plotter. See plotter argument for details.
|
||
|
||
**Returns**
|
||
|
||
Visualization output data. The returned data type depends on the `plotter`. If matplotlib family is specified, this will be a `matplotlib.pyplot.Figure` data.
|
||
</Function>
|
||
|
||
### get\_waveform
|
||
|
||
<Function id="qiskit.pulse.library.Drag.get_waveform" signature="Drag.get_waveform()">
|
||
Return a Waveform with samples filled according to the formula that the pulse represents and the parameter values it contains.
|
||
|
||
Since the returned array is a discretized time series of the continuous function, this method uses a midpoint sampler. For `duration`, return:
|
||
|
||
$$
|
||
\{f(t+0.5) \in \mathbb{C} | t \in \mathbb{Z} \wedge 0<=t<\texttt{duration}\}
|
||
$$
|
||
|
||
**Return type**
|
||
|
||
[`Waveform`](qiskit.pulse.library.Waveform "qiskit.pulse.library.waveform.Waveform")
|
||
|
||
**Returns**
|
||
|
||
A waveform representation of this pulse.
|
||
|
||
**Raises**
|
||
|
||
* [**PulseError**](pulse#qiskit.pulse.PulseError "qiskit.pulse.PulseError") – When parameters are not assigned.
|
||
* [**PulseError**](pulse#qiskit.pulse.PulseError "qiskit.pulse.PulseError") – When expression for pulse envelope is not assigned.
|
||
</Function>
|
||
|
||
### is\_parameterized
|
||
|
||
<Function id="qiskit.pulse.library.Drag.is_parameterized" signature="Drag.is_parameterized()">
|
||
Return True iff the instruction is parameterized.
|
||
|
||
**Return type**
|
||
|
||
`bool`
|
||
</Function>
|
||
|
||
### validate\_parameters
|
||
|
||
<Function id="qiskit.pulse.library.Drag.validate_parameters" signature="Drag.validate_parameters()">
|
||
Validate parameters.
|
||
|
||
**Raises**
|
||
|
||
[**PulseError**](pulse#qiskit.pulse.PulseError "qiskit.pulse.PulseError") – If the parameters passed are not valid.
|
||
|
||
**Return type**
|
||
|
||
`None`
|
||
</Function>
|
||
|
||
## Attributes
|
||
|
||
### constraints
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.constraints">
|
||
Return symbolic expression for the pulse parameter constraints.
|
||
|
||
**Return type**
|
||
|
||
`Expr`
|
||
</Attribute>
|
||
|
||
### duration
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.duration" />
|
||
|
||
### envelope
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.envelope">
|
||
Return symbolic expression for the pulse envelope.
|
||
|
||
**Return type**
|
||
|
||
`Expr`
|
||
</Attribute>
|
||
|
||
### id
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.id">
|
||
Unique identifier for this pulse.
|
||
|
||
**Return type**
|
||
|
||
`int`
|
||
</Attribute>
|
||
|
||
### limit\_amplitude
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.limit_amplitude" attributeValue="True" />
|
||
|
||
### name
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.name" />
|
||
|
||
### parameters
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.parameters">
|
||
**Return type**
|
||
|
||
`Dict`\[`str`, `Any`]
|
||
</Attribute>
|
||
|
||
### pulse\_type
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.pulse_type">
|
||
Return display name of the pulse shape.
|
||
|
||
**Return type**
|
||
|
||
`str`
|
||
</Attribute>
|
||
|
||
### valid\_amp\_conditions
|
||
|
||
<Attribute id="qiskit.pulse.library.Drag.valid_amp_conditions">
|
||
Return symbolic expression for the pulse amplitude constraints.
|
||
|
||
**Return type**
|
||
|
||
`Expr`
|
||
</Attribute>
|
||
</Class>
|
||
|