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 SamplePulse . |
cos (duration, amp[, freq, phase, name]) | Generates cosine wave SamplePulse . |
drag (duration, amp, sigma, beta[, name, …]) | Generates Y-only correction DRAG SamplePulse for standard nonlinear oscillator (SNO) [1]. |
gaussian (duration, amp, sigma[, name, zero_ends]) | Generates unnormalized gaussian SamplePulse . |
gaussian_deriv (duration, amp, sigma[, name]) | Generates unnormalized gaussian derivative SamplePulse . |
gaussian_square (duration, amp, sigma[, …]) | Generates gaussian square SamplePulse . |
sawtooth (duration, amp[, freq, period, …]) | Generates sawtooth wave SamplePulse . |
sech (duration, amp, sigma[, name, zero_ends]) | Generates unnormalized sech SamplePulse . |
sech_deriv (duration, amp, sigma[, name]) | Generates unnormalized sech derivative SamplePulse . |
sin (duration, amp[, freq, phase, name]) | Generates sine wave SamplePulse . |
square (duration, amp[, freq, period, phase, …]) | Generates square wave SamplePulse . |
triangle (duration, amp[, freq, period, …]) | Generates triangle wave SamplePulse . |
zero (duration[, name]) | Generates zero-sampled SamplePulse . |
constant
constant(duration, amp, name=None)
Generates constant-sampled SamplePulse
.
For amp
, samples from the function:
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
cos(duration, amp, freq=None, phase=0, name=None)
Generates cosine wave SamplePulse
.
For amp
, freq
, and phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
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
drag(duration, amp, sigma, beta, name=None, zero_ends=True)
Generates Y-only correction DRAG SamplePulse
for standard nonlinear oscillator (SNO) [1].
For amp
, sigma
, and beta
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
where is the function sampled in gaussian()
, and is the function sampled in gaussian_deriv()
.
If zero_ends == True
, the samples from are remapped as in gaussian()
.
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 . Where is the relative coupling strength between the first excited and second excited states and 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
gaussian(duration, amp, sigma, name=None, zero_ends=True)
Generates unnormalized gaussian SamplePulse
.
For amp
and sigma
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
with the center duration/2
.
If zero_ends==True
, each output sample is modifed according to:
where is the value of the endpoint samples. This sets the endpoints to while preserving the amplitude at the center. If , is set to .
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
gaussian_deriv(duration, amp, sigma, name=None)
Generates unnormalized gaussian derivative SamplePulse
.
For amp
and sigma
applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
i.e. the derivative of the Gaussian function, with center 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
gaussian_square(duration, amp, sigma, risefall=None, width=None, name=None, zero_ends=True)
Generates gaussian square SamplePulse
.
For duration
, amp
, sigma
, and risefall
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
where is the Gaussian function sampled from in gaussian()
with amp
, , and sigma
. I.e. 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 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
and width
arguments are inconsistent or not enough info.
Return type
sawtooth
sawtooth(duration, amp, freq=None, period=None, phase=0, name=None)
Generates sawtooth wave SamplePulse
.
For amp
, period
, and phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
where .
Parameters
- duration (
int
) – Duration of pulse. Must be greater than zero. - amp (
complex
) – Pulse amplitude. Wave range isamp
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
sech(duration, amp, sigma, name=None, zero_ends=True)
Generates unnormalized sech SamplePulse
.
For amp
and sigma
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
with the center duration/2
.
If zero_ends==True
, each output sample is modifed according to:
where is the value of the endpoint samples. This sets the endpoints to while preserving the amplitude at the center. If , is set to .
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
sech_deriv(duration, amp, sigma, name=None)
Generates unnormalized sech derivative SamplePulse
.
For amp
, sigma
, and center duration/2
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
i.e. the derivative of .
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
sin(duration, amp, freq=None, phase=0, name=None)
Generates sine wave SamplePulse
.
For amp
, freq
, and phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
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
square(duration, amp, freq=None, period=None, phase=0, name=None)
Generates square wave SamplePulse
.
For amp
, period
, and phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
with the convention .
Parameters
- duration (
int
) – Duration of pulse. Must be greater than zero. - amp (
complex
) – Pulse amplitude. Wave range isamp
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
triangle(duration, amp, freq=None, period=None, phase=0, name=None)
Generates triangle wave SamplePulse
.
For amp
, period
, and phase
, applies the midpoint sampling strategy to generate a discrete pulse sampled from the continuous function:
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 isamp
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
zero(duration, name=None)
Generates zero-sampled SamplePulse
.
Samples from the function:
Parameters
- duration (
int
) – Duration of pulse. Must be greater than zero. - name (
Optional
[str
]) – Name of pulse.
Return type