Shortcuts

# qiskit.pulse.library.discrete¶

Module for builtin discrete pulses.

Note the sampling strategy use for all discrete pulses is midpoint.

Functions

 constant(duration, amp[, name]) Generates constant-sampled Waveform. cos(duration, amp[, freq, phase, name]) Generates cosine wave Waveform. drag(duration, amp, sigma, beta[, name, …]) Generates Y-only correction DRAG Waveform for standard nonlinear oscillator (SNO) . gaussian(duration, amp, sigma[, name, zero_ends]) Generates unnormalized gaussian Waveform. gaussian_deriv(duration, amp, sigma[, name]) Generates unnormalized gaussian derivative Waveform. gaussian_square(duration, amp, sigma[, …]) Generates gaussian square Waveform. sawtooth(duration, amp[, freq, phase, name]) Generates sawtooth wave Waveform. sech(duration, amp, sigma[, name, zero_ends]) Generates unnormalized sech Waveform. sech_deriv(duration, amp, sigma[, name]) Generates unnormalized sech derivative Waveform. sin(duration, amp[, freq, phase, name]) Generates sine wave Waveform. square(duration, amp[, freq, phase, name]) Generates square wave Waveform. triangle(duration, amp[, freq, phase, name]) Generates triangle wave Waveform. zero(duration[, name]) Generates zero-sampled Waveform.
constant(duration, amp, name=None)[source]

Generates constant-sampled 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. If None 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 Y-only correction DRAG Waveform for standard nonlinear oscillator (SNO) .

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 in gaussian_deriv().

If zero_ends == True, the samples from $$g(x)$$ are remapped as in gaussian().

References

Parameters
• duration (int) – Duration of pulse. Must be greater than zero.

• amp (complex) – Pulse amplitude at center duration/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 at x = -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 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$$. 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 at duration/2.

• sigma (float) – Width (standard deviation) of pulse.

• name (Optional[str]) – Name of pulse.

• zero_ends (bool) – If True, zero ends at x = -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 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 in gaussian().

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 be duration-2*risefall.

• width (Optional[float]) – The duration of the embedded square pulse. Only one of width or risefall should be specified as the functional form requires width = duration - 2 * risefall.

• name (Optional[str]) – Name of pulse.

• zero_ends (bool) – If True, zero ends at x = -1, x = duration + 1, but rescale to preserve amp.

Raises

PulseError – If risefall and width 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. If None 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 0x7f8011768f70>] Return type

Waveform

sech(duration, amp, sigma, name=None, zero_ends=True)[source]

Generates unnormalized sech 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\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$$. 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 at x = -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. If None 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. If None 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 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. If None 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 0x7f80112b3cd0>] Return type

Waveform

zero(duration, name=None)[source]

Generates zero-sampled Waveform.

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

Waveform