discrete¶
Module for builtin discrete pulses.
Note the sampling strategy use for all discrete pulses is midpoint.
Functions
|
Generates constant-sampled |
|
Generates cosine wave |
|
Generates Y-only 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 zero-sampled |
- constant(duration, amp, name=None)[source]¶
Generates constant-sampled
SamplePulse
.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
- cos(duration, amp, freq=None, phase=0, name=None)[source]¶
Generates cosine wave
SamplePulse
.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
- drag(duration, amp, sigma, beta, name=None, zero_ends=True)[source]¶
Generates Y-only correction DRAG
SamplePulse
for standard nonlinear oscillator (SNO) [1].For \(A=\)
amp
, \(\sigma=\)sigma
, and \(\beta=\)beta
, applies the midpoint 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
) – IfTrue
, make the first and last sample zero, but rescale to preserve amp.
- Return type
- gaussian(duration, amp, sigma, name=None, zero_ends=True)[source]¶
Generates unnormalized gaussian
SamplePulse
.For \(A=\)
amp
and \(\sigma=\)sigma
, applies the midpoint 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 modifed according to:\[y \mapsto A\frac{y-y^*}{A-y^*},\]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\).
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, make the first and last sample zero, but rescale to preserve amp.
- Return type
- gaussian_deriv(duration, amp, sigma, name=None)[source]¶
Generates unnormalized gaussian derivative
SamplePulse
.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
- gaussian_square(duration, amp, sigma, risefall=None, width=None, name=None, zero_ends=True)[source]¶
Generates gaussian square
SamplePulse
.For \(d=\)
duration
, \(A=\)amp
, \(\sigma=\)sigma
, and \(r=\)risefall
, applies the midpoint 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 d-r \\ g(x - (d - r)) & d-r\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 beduration-2*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
) – IfTrue
, make the first and last sample zero, but rescale to preserve amp.
- Raises
PulseError – If
risefall
andwidth
arguments are inconsistent or not enough info.- Return type
- sawtooth(duration, amp, freq=None, period=None, phase=0, name=None)[source]¶
Generates sawtooth wave
SamplePulse
.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.period (
Optional
[float
]) – Pulse period, units of dt. (Deprecated, use freq instead)phase (
float
) – Pulse phase.name (
Optional
[str
]) – Name of pulse.
Example
import matplotlib.pyplot as plt from qiskit.pulse.pulse_lib import sawtooth import numpy as np duration = 100 amp = 1 period = duration sawtooth_wave = np.real(sawtooth(duration, amp, period).samples) plt.plot(range(duration), sawtooth_wave)
[<matplotlib.lines.Line2D at 0x7f1bfbc7c910>]
- Return type
- sech(duration, amp, sigma, name=None, zero_ends=True)[source]¶
Generates unnormalized sech
SamplePulse
.For \(A=\)
amp
and \(\sigma=\)sigma
, applies the midpoint 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 modifed according to:\[y \mapsto A\frac{y-y^*}{A-y^*},\]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\).
- 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, make the first and last sample zero, but rescale to preserve amp.
- Return type
- sech_deriv(duration, amp, sigma, name=None)[source]¶
Generates unnormalized sech derivative
SamplePulse
.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
- sin(duration, amp, freq=None, phase=0, name=None)[source]¶
Generates sine wave
SamplePulse
.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
- square(duration, amp, freq=None, period=None, phase=0, name=None)[source]¶
Generates square wave
SamplePulse
.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.period (
Optional
[float
]) – Pulse period, units of dt. (Deprecated, use freq instead)phase (
float
) – Pulse phase.name (
Optional
[str
]) – Name of pulse.
- Return type
- triangle(duration, amp, freq=None, period=None, phase=0, name=None)[source]¶
Generates triangle wave
SamplePulse
.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 non-sinusoidal 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.period (
Optional
[float
]) – Pulse period, units of dt. (Deprecated, use freq instead)phase (
float
) – Pulse phase.name (
Optional
[str
]) – Name of pulse.
Example
import matplotlib.pyplot as plt from qiskit.pulse.pulse_lib import triangle import numpy as np duration = 100 amp = 1 period = duration triangle_wave = np.real(triangle(duration, amp, period).samples) plt.plot(range(duration), triangle_wave)
[<matplotlib.lines.Line2D at 0x7f1bf94d9a90>]
- Return type
- zero(duration, name=None)[source]¶
Generates zero-sampled
SamplePulse
.Samples from the function:
\[f(x) = 0\]- Parameters
duration (
int
) – Duration of pulse. Must be greater than zero.name (
Optional
[str
]) – Name of pulse.
- Return type