qiskit.pulse.library.discrete¶
Module for builtin discrete pulses.
Note the sampling strategy use for all discrete pulses is midpoint
.
Functions

Generates constantsampled 

Generates cosine wave 

Generates Yonly correction DRAG 

Generates unnormalized gaussian 

Generates unnormalized gaussian derivative 

Generates gaussian square 

Generates sawtooth wave 

Generates unnormalized sech 

Generates unnormalized sech derivative 

Generates sine wave 

Generates square wave 

Generates triangle wave 

Generates zerosampled 

constant
(duration, amp, name=None)[source]¶ Generates constantsampled
Waveform
.For \(A=\)
amp
, samples from the function:\[f(x) = A\] Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Complex pulse amplitude.name (
Optional
[str
]) – Name of pulse.
 Return type
Waveform

cos
(duration, amp, freq=None, phase=0, name=None)[source]¶ Generates cosine wave
Waveform
.For \(A=\)
amp
, \(\omega=\)freq
, and \(\phi=\)phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = A \cos(2 \pi \omega x + \phi)\] Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude.freq (
Optional
[float
]) – Pulse frequency, units of 1/dt. IfNone
defaults to single cycle.phase (
float
) – Pulse phase.name (
Optional
[str
]) – Name of pulse.
 Return type
Waveform

drag
(duration, amp, sigma, beta, name=None, zero_ends=True)[source]¶ Generates Yonly correction DRAG
Waveform
for standard nonlinear oscillator (SNO) [1].For \(A=\)
amp
, \(\sigma=\)sigma
, and \(\beta=\)beta
, applies themidpoint
sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = g(x) + i \beta h(x),\]where \(g(x)\) is the function sampled in
gaussian()
, and \(h(x)\) is the function sampled ingaussian_deriv()
.If
zero_ends == True
, the samples from \(g(x)\) are remapped as ingaussian()
.References
 Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude at centerduration/2
.sigma (
float
) – Width (standard deviation) of pulse.beta (
float
) – Y correction amplitude. For the SNO this is \(\beta=\frac{\lambda_1^2}{4\Delta_2}\). Where \(\lambda_1\) is the relative coupling strength between the first excited and second excited states and \(\Delta_2\) is the detuning between the respective excited states.name (
Optional
[str
]) – Name of pulse.zero_ends (
bool
) – If True, zero ends atx = 1, x = duration + 1
, but rescale to preserve amp.
 Return type
Waveform

gaussian
(duration, amp, sigma, name=None, zero_ends=True)[source]¶ Generates unnormalized gaussian
Waveform
.For \(A=\)
amp
and \(\sigma=\)sigma
, applies themidpoint
sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = A\exp\left(\left(\frac{x  \mu}{2\sigma}\right)^2 \right),\]with the center \(\mu=\)
duration/2
.If
zero_ends==True
, each output sample \(y\) is modified according to:\[y \mapsto A\frac{yy^*}{Ay^*},\]where \(y^*\) is the value of the endpoint samples. This sets the endpoints to \(0\) while preserving the amplitude at the center. If \(A=y^*\), \(y\) is set to \(1\). By default, the endpoints are at
x = 1, x = duration + 1
.Integrated area under the full curve is
amp * np.sqrt(2*np.pi*sigma**2)
 Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude atduration/2
.sigma (
float
) – Width (standard deviation) of pulse.name (
Optional
[str
]) – Name of pulse.zero_ends (
bool
) – If True, zero ends atx = 1, x = duration + 1
, but rescale to preserve amp.
 Return type
Waveform

gaussian_deriv
(duration, amp, sigma, name=None)[source]¶ Generates unnormalized gaussian derivative
Waveform
.For \(A=\)
amp
and \(\sigma=\)sigma
applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = A\frac{(x  \mu)}{\sigma^2}\exp\left(\left(\frac{x  \mu}{2\sigma}\right)^2 \right)\]i.e. the derivative of the Gaussian function, with center \(\mu=\)
duration/2
. Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude of corresponding Gaussian at the pulse center (duration/2
).sigma (
float
) – Width (standard deviation) of pulse.name (
Optional
[str
]) – Name of pulse.
 Return type
Waveform

gaussian_square
(duration, amp, sigma, risefall=None, width=None, name=None, zero_ends=True)[source]¶ Generates gaussian square
Waveform
.For \(d=\)
duration
, \(A=\)amp
, \(\sigma=\)sigma
, and \(r=\)risefall
, applies themidpoint
sampling strategy to generate a discrete pulse sampled from the continuous function:\[\begin{split}f(x) = \begin{cases} g(x  r) ) & x\leq r \\ A & r\leq x\leq dr \\ g(x  (d  r)) & dr\leq x \end{cases}\end{split}\]where \(g(x)\) is the Gaussian function sampled from in
gaussian()
with \(A=\)amp
, \(\mu=1\), and \(\sigma=\)sigma
. I.e. \(f(x)\) represents a square pulse with smooth Gaussian edges.If
zero_ends == True
, the samples for the Gaussian ramps are remapped as ingaussian()
. Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude.sigma (
float
) – Width (standard deviation) of Gaussian rise/fall portion of the pulse.risefall (
Optional
[float
]) – Number of samples over which pulse rise and fall happen. Width of square portion of pulse will beduration2*risefall
.width (
Optional
[float
]) – The duration of the embedded square pulse. Only one ofwidth
orrisefall
should be specified as the functional form requireswidth = duration  2 * risefall
.name (
Optional
[str
]) – Name of pulse.zero_ends (
bool
) – If True, zero ends atx = 1, x = duration + 1
, but rescale to preserve amp.
 Raises
PulseError – If
risefall
andwidth
arguments are inconsistent or not enough info. Return type
Waveform

sawtooth
(duration, amp, freq=None, phase=0, name=None)[source]¶ Generates sawtooth wave
Waveform
.For \(A=\)
amp
, \(T=\)period
, and \(\phi=\)phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = 2 A \left( g(x)  \left\lfloor \frac{1}{2} + g(x) \right\rfloor\right)\]where \(g(x) = x/T + \phi/\pi\).
 Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude. Wave range is \([\)amp
\(,\)amp
\(]\).freq (
Optional
[float
]) – Pulse frequency, units of 1./dt. IfNone
defaults to 1./duration.phase (
float
) – Pulse phase.name (
Optional
[str
]) – Name of pulse.
Example
import matplotlib.pyplot as plt from qiskit.pulse.library import sawtooth import numpy as np duration = 100 amp = 1 freq = 1 / duration sawtooth_wave = np.real(sawtooth(duration, amp, freq).samples) plt.plot(range(duration), sawtooth_wave)
[<matplotlib.lines.Line2D at 0x7fbe67a5fa60>]
 Return type
Waveform

sech
(duration, amp, sigma, name=None, zero_ends=True)[source]¶ Generates unnormalized sech
Waveform
.For \(A=\)
amp
and \(\sigma=\)sigma
, applies themidpoint
sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = A\text{sech}\left(\frac{x\mu}{\sigma} \right)\]with the center \(\mu=\)
duration/2
.If
zero_ends==True
, each output sample \(y\) is modified according to:\[y \mapsto A\frac{yy^*}{Ay^*},\]where \(y^*\) is the value of the endpoint samples. This sets the endpoints to \(0\) while preserving the amplitude at the center. If \(A=y^*\), \(y\) is set to \(1\). By default, the endpoints are at
x = 1, x = duration + 1
. Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude at duration/2.sigma (
float
) – Width (standard deviation) of pulse.name (
Optional
[str
]) – Name of pulse.zero_ends (
bool
) – If True, zero ends atx = 1, x = duration + 1
, but rescale to preserve amp.
 Return type
Waveform

sech_deriv
(duration, amp, sigma, name=None)[source]¶ Generates unnormalized sech derivative
Waveform
.For \(A=\)
amp
, \(\sigma=\)sigma
, and center \(\mu=\)duration/2
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = \frac{d}{dx}\left[A\text{sech}\left(\frac{x\mu}{\sigma} \right)\right],\]i.e. the derivative of \(\text{sech}\).
 Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude at center.sigma (
float
) – Width (standard deviation) of pulse.name (
Optional
[str
]) – Name of pulse.
 Return type
Waveform

sin
(duration, amp, freq=None, phase=0, name=None)[source]¶ Generates sine wave
Waveform
.For \(A=\)
amp
, \(\omega=\)freq
, and \(\phi=\)phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = A \sin(2 \pi \omega x + \phi)\] Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude.freq (
Optional
[float
]) – Pulse frequency, units of 1/dt. IfNone
defaults to single cycle.phase (
float
) – Pulse phase.name (
Optional
[str
]) – Name of pulse.
 Return type
Waveform

square
(duration, amp, freq=None, phase=0, name=None)[source]¶ Generates square wave
Waveform
.For \(A=\)
amp
, \(T=\)period
, and \(\phi=\)phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = A \text{sign}\left[ \sin\left(\frac{2 \pi x}{T} + 2\phi\right) \right]\]with the convention \(\text{sign}(0) = 1\).
 Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude. Wave range is \([\)amp
\(,\)amp
\(]\).freq (
Optional
[float
]) – Pulse frequency, units of 1./dt. IfNone
defaults to 1./duration.phase (
float
) – Pulse phase.name (
Optional
[str
]) – Name of pulse.
 Return type
Waveform

triangle
(duration, amp, freq=None, phase=0, name=None)[source]¶ Generates triangle wave
Waveform
.For \(A=\)
amp
, \(T=\)period
, and \(\phi=\)phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:\[f(x) = A \left(2\left\text{sawtooth}(x, A, T, \phi)\right + 1\right)\]This a nonsinusoidal wave with linear ramping.
 Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.amp (
complex
) – Pulse amplitude. Wave range is \([\)amp
\(,\)amp
\(]\).freq (
Optional
[float
]) – Pulse frequency, units of 1./dt. IfNone
defaults to 1./duration.phase (
float
) – Pulse phase.name (
Optional
[str
]) – Name of pulse.
Example
import matplotlib.pyplot as plt from qiskit.pulse.library import triangle import numpy as np duration = 100 amp = 1 freq = 1 / duration triangle_wave = np.real(triangle(duration, amp, freq).samples) plt.plot(range(duration), triangle_wave)
[<matplotlib.lines.Line2D at 0x7fbe67542220>]
 Return type
Waveform