qoolqit.waveforms
waveforms
Composable, time-bounded scalar waveforms for pulse-level quantum control.
Modules:
-
base_waveforms–Base classes for scalar time-bounded waveforms and their sequential composition.
-
utils– -
waveforms–Concrete waveform implementations.
Classes:
-
BlackmanWaveform–A Blackman window of a specified duration and area under the curve.
-
CompositeWaveform–A concatenation of waveforms played sequentially.
-
ConstantWaveform–A constant waveform over a given duration.
-
DelayWaveform–An empty waveform.
-
InterpolatedWaveform–A waveform created from shape-preserving interpolation of data points.
-
PiecewiseLinearWaveform–A piecewise linear waveform.
-
RampWaveform–A ramp that linearly interpolates between an initial and final value.
-
Waveform–Base class for scalar time-bounded waveforms.
BlackmanWaveform(duration: float, area: float)
A Blackman window of a specified duration and area under the curve.
Implements the positive Blackman window shaped waveform blackman(t) = A(0.42 - 0.5cos(αt) + 0.08cos(2αt)) A = area/(0.42duration) α = 2π/duration
See: https://en.wikipedia.org/wiki/Window_function#:~:text=Blackman%20window
Parameters:
-
(durationfloat) –The waveform duration.
-
(areafloat) –The integral of the waveform.
Methods:
-
__rmul__–Rescale this waveform by a scalar (right-hand multiplication).
-
__rshift__–Returns a new CompositeWaveform composed of this waveform and another.
Attributes:
-
duration(float) –Returns the duration of the waveform.
-
params(dict[str, float | ndarray]) –Dictionary of parameters used by the waveform.
Source code in qoolqit/waveforms/waveforms.py
duration: float
property
Returns the duration of the waveform.
params: dict[str, float | np.ndarray]
property
Dictionary of parameters used by the waveform.
__rmul__(other: float) -> Waveform
__rshift__(other: Waveform) -> CompositeWaveform
Returns a new CompositeWaveform composed of this waveform and another.
Source code in qoolqit/waveforms/base_waveforms.py
CompositeWaveform(*waveforms: Waveform)
A concatenation of waveforms played sequentially.
Waveforms are joined in the given order, each starting where the previous one ends, and the composition can be used as a single waveform.
Attributes:
-
waveforms(list[Waveform]) –a list of waveforms in the composition.
-
durations(list[float]) –a list of durations of each individual waveform.
-
times(list[float]) –a list of times when each individual waveform starts.
Parameters:
-
(waveformsWaveform, default:()) –an iterator over waveforms.
Raises:
-
TypeError–if any argument is not an instance of Waveform.
-
ValueError–if no waveforms are provided.
Methods:
-
__rmul__–Rescale this waveform by a scalar (right-hand multiplication).
-
max–Get the maximum value of the waveform.
-
min–Get the minimum value of the waveform.
Source code in qoolqit/waveforms/base_waveforms.py
duration: float
property
Returns the duration of the waveform.
durations: list[float]
property
Returns the list of durations of each individual waveform.
n_waveforms: int
property
Returns the number of waveforms.
params: dict[str, float | np.ndarray]
property
Dictionary of parameters used by the waveform.
times: list[float]
property
Returns the list of times when each individual waveform starts.
waveforms: list[Waveform]
property
Returns a list of the individual waveforms.
__rmul__(other: float) -> Waveform
max() -> float
ConstantWaveform(duration: float, value: float)
A constant waveform over a given duration.
Parameters:
-
(durationfloat) –the total duration.
-
(valuefloat) –the value to take during the duration.
Methods:
-
__rmul__–Rescale this waveform by a scalar (right-hand multiplication).
-
__rshift__–Returns a new CompositeWaveform composed of this waveform and another.
Attributes:
-
duration(float) –Returns the duration of the waveform.
-
params(dict[str, float | ndarray]) –Dictionary of parameters used by the waveform.
Source code in qoolqit/waveforms/waveforms.py
duration: float
property
Returns the duration of the waveform.
params: dict[str, float | np.ndarray]
property
Dictionary of parameters used by the waveform.
__rmul__(other: float) -> Waveform
__rshift__(other: Waveform) -> CompositeWaveform
Returns a new CompositeWaveform composed of this waveform and another.
Source code in qoolqit/waveforms/base_waveforms.py
DelayWaveform(duration: float, *args: float, **kwargs: float | np.ndarray)
An empty waveform.
Parameters:
-
(durationfloat) –the total duration of the waveform.
-
(**kwargsfloat | ndarray, default:{}) –optional keyword arguments for the waveform function.
Methods:
-
__rmul__–Rescale this waveform by a scalar (right-hand multiplication).
-
__rshift__–Returns a new CompositeWaveform composed of this waveform and another.
Attributes:
-
duration(float) –Returns the duration of the waveform.
-
params(dict[str, float | ndarray]) –Dictionary of parameters used by the waveform.
Source code in qoolqit/waveforms/base_waveforms.py
duration: float
property
Returns the duration of the waveform.
params: dict[str, float | np.ndarray]
property
Dictionary of parameters used by the waveform.
__rmul__(other: float) -> Waveform
__rshift__(other: Waveform) -> CompositeWaveform
Returns a new CompositeWaveform composed of this waveform and another.
Source code in qoolqit/waveforms/base_waveforms.py
InterpolatedWaveform(duration: float, values: ArrayLike, times: ArrayLike | None = None)
A waveform created from shape-preserving interpolation of data points.
This class creates a smooth waveform by interpolating between specified data points using PCHIP (Piecewise Cubic Hermite Interpolating Polynomial) interpolation. The interpolating curve preserves the shape of the input data: bounds (avoiding under/overshooting), monotonicity, and convexity.
Uses scipy's PchipInterpolator for the interpolation.
Attributes:
-
duration(float) –The waveform duration.
-
values(float) –Array-like sequence of waveform values at the interpolation points. Must be convertible to float. These values define the amplitude of the waveform at the corresponding time points.
-
times(float) –Optional array-like sequence of fractional times in the range [0, 1] indicating where to place each value on the time axis. Must have the same length as
values. If not provided, values are distributed evenly across the waveform duration. Default is None.
ValueError: If times contains values outside [0, 1] or if times and
values have different lengths.
Example
Create a waveform with 4 points over 100ns
values = [0.0, 1.0, 0.5, 0.0] wf = InterpolatedWaveform(100, values)
Create with custom timing
times = [0.0, 0.2, 0.8, 1.0] # Non-uniform spacing wf = InterpolatedWaveform(100, values, times)
Parameters:
-
(durationfloat) –The total duration of the waveform. Must be positive.
-
(valuesArrayLike) –Array-like sequence of waveform values at interpolation points. Can be a list, tuple, numpy array, or any sequence convertible to float.
-
(timesArrayLike | None, default:None) –Optional array-like sequence of fractional times in [0, 1]. If provided, must have the same length as
values. If None, values are evenly spaced across the duration. Default is None.
Raises:
-
ValueError–If any value in
timesis outside [0, 1], or iftimesandvalueshave different lengths.
Methods:
-
__rmul__–Rescale this waveform by a scalar (right-hand multiplication).
-
__rshift__–Returns a new CompositeWaveform composed of this waveform and another.
Source code in qoolqit/waveforms/waveforms.py
duration: float
property
Returns the duration of the waveform.
params: dict[str, float | np.ndarray]
property
Dictionary of parameters used by the waveform.
__rmul__(other: float) -> Waveform
__rshift__(other: Waveform) -> CompositeWaveform
Returns a new CompositeWaveform composed of this waveform and another.
Source code in qoolqit/waveforms/base_waveforms.py
PiecewiseLinearWaveform(durations: list[float] | tuple[float, ...] | np.ndarray, values: list[float] | tuple[float, ...] | np.ndarray)
A piecewise linear waveform.
Creates a composite waveform of N ramps that linearly interpolate through the given N+1 values.
Parameters:
-
(durationslist[float] | tuple[float, ...] | ndarray) –list or tuple of N duration values.
-
(valueslist[float] | tuple[float, ...] | ndarray) –list or tuple of N+1 waveform values.
Methods:
-
__rmul__–Rescale this waveform by a scalar (right-hand multiplication).
-
max–Get the maximum value of the waveform.
-
min–Get the minimum value of the waveform.
Attributes:
-
duration(float) –Returns the duration of the waveform.
-
durations(list[float]) –Returns the list of durations of each individual waveform.
-
n_waveforms(int) –Returns the number of waveforms.
-
params(dict[str, float | ndarray]) –Dictionary of parameters used by the waveform.
-
times(list[float]) –Returns the list of times when each individual waveform starts.
-
waveforms(list[Waveform]) –Returns a list of the individual waveforms.
Source code in qoolqit/waveforms/waveforms.py
duration: float
property
Returns the duration of the waveform.
durations: list[float]
property
Returns the list of durations of each individual waveform.
n_waveforms: int
property
Returns the number of waveforms.
params: dict[str, float | np.ndarray]
property
Dictionary of parameters used by the waveform.
times: list[float]
property
Returns the list of times when each individual waveform starts.
waveforms: list[Waveform]
property
Returns a list of the individual waveforms.
__rmul__(other: float) -> Waveform
max() -> float
RampWaveform(duration: float, initial_value: float, final_value: float)
A ramp that linearly interpolates between an initial and final value.
Parameters:
-
(durationfloat) –the total duration.
-
(initial_valuefloat) –the initial value at t = 0.
-
(final_valuefloat) –the final value at t = duration.
Methods:
-
__rmul__–Rescale this waveform by a scalar (right-hand multiplication).
-
__rshift__–Returns a new CompositeWaveform composed of this waveform and another.
Attributes:
-
duration(float) –Returns the duration of the waveform.
-
params(dict[str, float | ndarray]) –Dictionary of parameters used by the waveform.
Source code in qoolqit/waveforms/waveforms.py
duration: float
property
Returns the duration of the waveform.
params: dict[str, float | np.ndarray]
property
Dictionary of parameters used by the waveform.
__rmul__(other: float) -> Waveform
__rshift__(other: Waveform) -> CompositeWaveform
Returns a new CompositeWaveform composed of this waveform and another.
Source code in qoolqit/waveforms/base_waveforms.py
Waveform(duration: float, *args: float, **kwargs: float | np.ndarray)
Base class for scalar time-bounded waveforms.
A waveform is a scalar function of time defined over a finite interval [0, duration]. Outside this interval, it evaluates to zero.
To define a custom waveform, subclass this class and implement:
- function(t): the waveform value at time t within [0, duration].
- max(): the maximum value of the waveform.
- min(): the minimum value of the waveform.
- __mul__(scalar): rescale this waveform by a scalar factor.
- _to_pulser(duration): conversion to a Pulser-compatible waveform.
Any additional parameters (e.g. amplitude, frequency) should be passed as keyword
arguments to __init__ and are automatically stored and accessible as attributes.
Parameters:
-
(durationfloat) –the total duration of the waveform.
-
(**kwargsfloat | ndarray, default:{}) –optional keyword arguments for the waveform function.
Methods:
-
__mul__–Rescale this waveform by a scalar.
-
__rmul__–Rescale this waveform by a scalar (right-hand multiplication).
-
__rshift__–Returns a new CompositeWaveform composed of this waveform and another.
-
function–Evaluates the waveform function at a given time t.
-
max–Get the maximum value of the waveform.
-
min–Get the minimum value of the waveform.
Attributes:
-
duration(float) –Returns the duration of the waveform.
-
params(dict[str, float | ndarray]) –Dictionary of parameters used by the waveform.
Source code in qoolqit/waveforms/base_waveforms.py
duration: float
property
Returns the duration of the waveform.
params: dict[str, float | np.ndarray]
property
Dictionary of parameters used by the waveform.
__mul__(other: float) -> Waveform
abstractmethod
__rmul__(other: float) -> Waveform
__rshift__(other: Waveform) -> CompositeWaveform
Returns a new CompositeWaveform composed of this waveform and another.