qoolqit.waveforms
waveforms
Modules:
-
base_waveforms– -
utils– -
waveforms–
Classes:
-
Blackman–A Blackman window of a specified duration and area under the curve.
-
Constant–A constant waveform over a given duration.
-
Delay–An empty waveform.
-
Interpolated–A waveform created from shape-preserving interpolation of data points.
-
PiecewiseLinear–A piecewise linear waveform.
-
Ramp–A ramp that linearly interpolates between an initial and final value.
-
Sin–An arbitrary sine over a given duration.
Blackman(duration: float, area: float)
A Blackman window of a specified duration and area under the curve.
Implements the 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.
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.
Constant(duration: float, value: float)
A constant waveform over a given duration.
Parameters:
-
(durationfloat) –the total duration.
-
(valuefloat) –the value to take during the duration.
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.
Delay(duration: float, *args: float, **kwargs: float | np.ndarray)
An empty waveform.
Parameters:
-
(durationfloat) –the total duration 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.
Interpolated(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 = Interpolated(100, values)
Create with custom timing
times = [0.0, 0.2, 0.8, 1.0] # Non-uniform spacing wf = Interpolated(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.
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.
PiecewiseLinear(durations: list | tuple, values: list | tuple)
A piecewise linear waveform.
Creates a composite waveform of N ramps that linearly interpolate through the given N+1 values.
Parameters:
-
(durationslist | tuple) –list or tuple of N duration values.
-
(valueslist | tuple) –list or tuple of N+1 waveform values.
Methods:
-
function–Identifies the right waveform in the composition and evaluates it at time t.
-
max–Get the maximum value of the waveform.
-
min–Get the approximate 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.
function(t: float) -> float
Identifies the right waveform in the composition and evaluates it at time t.
Source code in qoolqit/waveforms/base_waveforms.py
max() -> float
min() -> float
Get the approximate minimum value of the waveform.
This is a brute-force method that samples the waveform over a pre-defined number of points to find the minimum value in the duration. Custom waveforms that have an easy to compute maximum value should override this method.
Source code in qoolqit/waveforms/base_waveforms.py
Ramp(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.
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.
Sin(duration: float, amplitude: float = 1.0, omega: float = 1.0, phi: float = 0.0, shift: float = 0.0)
An arbitrary sine over a given duration.
Parameters:
-
(durationfloat) –the total duration.
-
(amplitudefloat, default:1.0) –the amplitude of the sine wave.
-
(omegafloat, default:1.0) –the frequency of the sine wave.
-
(phifloat, default:0.0) –the phase of the sine wave.
-
(shiftfloat, default:0.0) –the vertical shift of the sine wave.
Methods:
-
max–Get the approximate maximum value of the waveform.
-
min–Get the approximate 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/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.
max() -> float
Get the approximate maximum value of the waveform.
This is a brute-force method that samples the waveform over a pre-defined number of points to find the maximum value in the duration. Custom waveforms that have an easy to compute maximum value should override this method.
Source code in qoolqit/waveforms/base_waveforms.py
min() -> float
Get the approximate minimum value of the waveform.
This is a brute-force method that samples the waveform over a pre-defined number of points to find the minimum value in the duration. Custom waveforms that have an easy to compute maximum value should override this method.