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) [1].

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)[ソース]

Generates constant-sampled Waveform.

For \(A=\) amp, samples from the function:

\[f(x) = A\]
パラメータ
  • duration (int) – Duration of pulse. Must be greater than zero.

  • amp (complex) – Complex pulse amplitude.

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

戻り値の型

Waveform

cos(duration, amp, freq=None, phase=0, name=None)[ソース]

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)\]
パラメータ
  • 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.

戻り値の型

Waveform

drag(duration, amp, sigma, beta, name=None, zero_ends=True)[ソース]

Generates Y-only correction DRAG Waveform 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 in gaussian_deriv().

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

参照

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

パラメータ
  • 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.

戻り値の型

Waveform

gaussian(duration, amp, sigma, name=None, zero_ends=True)[ソース]

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)

パラメータ
  • 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.

戻り値の型

Waveform

gaussian_deriv(duration, amp, sigma, name=None)[ソース]

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.

パラメータ
  • 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.

戻り値の型

Waveform

gaussian_square(duration, amp, sigma, risefall=None, width=None, name=None, zero_ends=True)[ソース]

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

パラメータ
  • 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.

例外

PulseError – If risefall and width arguments are inconsistent or not enough info.

戻り値の型

Waveform

sawtooth(duration, amp, freq=None, phase=0, name=None)[ソース]

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

パラメータ
  • 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.

サンプル

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 0x7ff10cda81f0>]
../_images/qiskit.pulse.library.discrete_0_1.png
戻り値の型

Waveform

sech(duration, amp, sigma, name=None, zero_ends=True)[ソース]

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.

パラメータ
  • 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.

戻り値の型

Waveform

sech_deriv(duration, amp, sigma, name=None)[ソース]

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

パラメータ
  • 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.

戻り値の型

Waveform

sin(duration, amp, freq=None, phase=0, name=None)[ソース]

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)\]
パラメータ
  • 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.

戻り値の型

Waveform

square(duration, amp, freq=None, phase=0, name=None)[ソース]

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

パラメータ
  • 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.

戻り値の型

Waveform

triangle(duration, amp, freq=None, phase=0, name=None)[ソース]

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.

パラメータ
  • 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.

サンプル

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 0x7ff10c8ef670>]
../_images/qiskit.pulse.library.discrete_1_1.png
戻り値の型

Waveform

zero(duration, name=None)[ソース]

Generates zero-sampled Waveform.

Samples from the function:

\[f(x) = 0\]
パラメータ
  • duration (int) – Duration of pulse. Must be greater than zero.

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

戻り値の型

Waveform