qat.experimental.waveforms.shapes package
Implements functions for sampling waveform shapes.
Sampling is done under the pretense of a simple model where the whole waveform is defined in dimensionless units, and can be sampled between the value \(x \in [-1, 1]\), which maps on to \(t \in [0, T]\) where \(T\) is the total duration of the waveform. Similarly, the amplitude is defined in dimensionless units, and the waveform samples can be complex numbers in the range \(|z| \leq 1\). The definitions of these shapes also do not allow for global rotations of the waveform in complex space, as that can be factorised outside of the definition.
This leaves just the shape on the envelope to be defined within the constraints described above. There are many different shapes that are defined in this module; a best effort attempt has been made to use consistent naming for the parameters of these shapes. Some names you might see are:
fractional_breadth: Used in waveforms that have a slow fractional_rise and fall without a distinct square “top” region, such as Gaussian and Sech waveforms. Thefractional_breadthdescribes the fractional_breadth of the envelope. It is dimensionless, so the waveform will take the same shape even as the total duration of the waveform is changed.fractional_top_width: Used in waveforms that have a distinct square “top” region, such as Soft Square, Rounded Square, and Gaussian Square waveforms. Thefractional_top_widthdescribes the proportion of the waveform that is square, and is a dimensionless parameter between 0 and 1. It is dimensionless, so the waveform will take the same shape even as the total duration of the waveform is changed.fractional_rise: Used in waveforms that have a fractional_rise and fall sandwiched between a square “top” region, such as Soft Square, Rounded Square, and Gaussian Square waveforms. Thefractional_risedescribes the fractional_breadth of the rising / falling region between the approximately zero parts of the waveform and approximately unity parts of the waveform. It is dimensionless, so the waveform will take the same shape even as the total duration of the waveform is changed.regularize: Makes the waveform zero at the edges and unity at the center. This is a boolean parameter.
Each waveform shape is implemented in its own module, with a function to sample the waveform shape, and a function to sample the derivative of the waveform shape at any order. The derivative is subject to the derivative being mathematically defined, and a concrete implementation being provided. We try to provide at least the first two orders where possible. The derivatives can be used to implement the DRAG pulse shaping technique, which is used to reduce leakage in quantum gates.
Submodules
- qat.experimental.waveforms.shapes.base module
- qat.experimental.waveforms.shapes.blackman module
- qat.experimental.waveforms.shapes.exceptions module
- qat.experimental.waveforms.shapes.gaussian module
GaussianWaveformShapeGaussianWaveformShape.derivative()GaussianWaveformShape.evaluate()GaussianWaveformShape.fractional_breadthGaussianWaveformShape.from_absolute()GaussianWaveformShape.from_gaussian_waveform()GaussianWaveformShape.from_gaussian_zero_edge_waveform()GaussianWaveformShape.from_softer_gaussian_waveform()GaussianWaveformShape.regularize
sample_gaussian_waveform()sample_gaussian_waveform_derivative()
- qat.experimental.waveforms.shapes.gaussian_square module
- qat.experimental.waveforms.shapes.rounded_square module
- qat.experimental.waveforms.shapes.sech module
- qat.experimental.waveforms.shapes.setup_hold module
- qat.experimental.waveforms.shapes.sinusoidal module
- qat.experimental.waveforms.shapes.soft_square module
SoftSquareWaveformShapeSoftSquareWaveformShape.derivative()SoftSquareWaveformShape.evaluate()SoftSquareWaveformShape.fractional_riseSoftSquareWaveformShape.fractional_top_widthSoftSquareWaveformShape.from_absolute()SoftSquareWaveformShape.from_extra_soft_square_waveform()SoftSquareWaveformShape.from_soft_square_waveform()SoftSquareWaveformShape.from_softer_square_waveform()SoftSquareWaveformShape.regularize
sample_soft_square_waveform()sample_soft_square_waveform_derivative()
- qat.experimental.waveforms.shapes.square module
- qat.experimental.waveforms.shapes.validators module