quantify_scheduler.operations.pulse_library
Standard pulses for use with the quantify_scheduler.
Module Contents
Classes
An operation that shifts the phase of a clock by a specified amount. |
|
The IdlePulse Operation is a placeholder for a specified duration of time. |
|
The RampPulse Operation is a real-valued pulse that ramps from the specified offset |
|
A real valued staircase pulse, which reaches it's final amplitude in discrete |
|
The SquarePulse Operation is a real-valued pulse with the specified |
|
The sudden net-zero (SNZ) pulse from Neg\^ırneac et al. [2021]. |
|
The SoftSquarePulse Operation is a real valued square pulse convolved with |
|
A linear chirp signal. A sinusoidal signal that ramps up in frequency. |
|
DRAG pulse intended for single qubit gates in transmon based systems. |
|
The WindowOperation is an operation for visualization purposes. |
|
Defines a pulse where the shape is determined by specifying an array of (complex) |
Functions
|
Generates a list of square pulses equivalent to a (very) long square pulse. |
|
Calculates a SquarePulse to counteract charging effects based on a list of pulses. |
|
- class ShiftClockPhase(phase: float, clock: str, t0: float = 0, data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
An operation that shifts the phase of a clock by a specified amount.
- class IdlePulse(duration: float, data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
The IdlePulse Operation is a placeholder for a specified duration of time.
- class RampPulse(amp: float, duration: float, port: str, offset: float = 0, clock: str = BasebandClockResource.IDENTITY, t0: float = 0, data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
The RampPulse Operation is a real-valued pulse that ramps from the specified offset to the specified amplitude + offset during the duration of the pulse.
- class StaircasePulse(start_amp: float, final_amp: float, num_steps: int, duration: float, port: str, clock: str = BasebandClockResource.IDENTITY, t0: float = 0, data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
A real valued staircase pulse, which reaches it’s final amplitude in discrete steps. In between it will maintain a plateau.
- class SquarePulse(amp: float, duration: float, port: str, clock: str = BasebandClockResource.IDENTITY, phase: float = 0, t0: float = 0, data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
The SquarePulse Operation is a real-valued pulse with the specified amplitude during the pulse.
- class SuddenNetZeroPulse(amp_A: float, amp_B: float, net_zero_A_scale: float, t_pulse: float, t_phi: float, t_integral_correction: float, port: str, clock: str = BasebandClockResource.IDENTITY, t0: float = 0, data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
The sudden net-zero (SNZ) pulse from Neg\^ırneac et al. [2021].
- decompose_long_square_pulse(duration: float, duration_max: float, single_duration: bool = False, **kwargs) list [source]
Generates a list of square pulses equivalent to a (very) long square pulse.
Intended to be used for waveform-memory-limited devices. Effectively, only two square pulses, at most, will be needed: a main one of duration duration_max and a second one for potential mismatch between N duration_max and overall duration.
- Parameters
duration – Duration of the long pulse in seconds.
duration_max – Maximum duration of square pulses to be generated in seconds.
single_duration – If True, only square pulses of duration duration_max will be generated. If False, a square pulse of duration < duration_max might be generated if necessary.
**kwargs – Other keyword arguments to be passed to the
SquarePulse
.
- Returns
A list of :class`SquarePulse` s equivalent to the desired long pulse.
- class SoftSquarePulse(amp: float, duration: float, port: str, clock: str, t0: float = 0, data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
The SoftSquarePulse Operation is a real valued square pulse convolved with a Hann window for smoothing.
- class ChirpPulse(amp: float, duration: float, port: str, clock: str, start_freq: float, end_freq: float, t0: float = 0)[source]
Bases:
quantify_scheduler.Operation
A linear chirp signal. A sinusoidal signal that ramps up in frequency.
- class DRAGPulse(G_amp: float, D_amp: float, phase: float, clock: str, duration: float, port: str, t0: float = 0, data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
DRAG pulse intended for single qubit gates in transmon based systems.
A DRAG pulse is a gaussian pulse with a derivative component added to the out-of-phase channel to reduce unwanted excitations of the \(|1\rangle - |2\rangle\) transition (Motzoi et al. [2009] and Gambetta et al. [2011]).
The waveform is generated using
waveforms.drag()
.
- create_dc_compensation_pulse(pulses: List[quantify_scheduler.Operation], sampling_rate: float, port: str, t0: float = 0, amp: Optional[float] = None, duration: Optional[float] = None, data: Optional[Dict[str, Any]] = None) SquarePulse [source]
Calculates a SquarePulse to counteract charging effects based on a list of pulses.
The compensation is calculated by summing the area of all pulses on the specified port. This gives a first order approximation for the pulse required to compensate the charging. All modulated pulses ignored in the calculation.
- Parameters
pulses – List of pulses to compensate
sampling_rate – Resolution to calculate the enclosure of the pulses to calculate the area to compensate.
amp – Desired amplitude of the DCCompensationPulse. Leave to None to calculate the value for compensation, in this case you must assign a value to duration. The sign of the amplitude is ignored and adjusted automatically to perform the compensation.
duration – Desired pulse duration in seconds. Leave to None to calculate the value for compensation, in this case you must assign a value to amp. The sign of the value of amp given in the previous step is adjusted to perform the compensation.
port – Port to perform the compensation. Any pulse that does not belong to the specified port is ignored.
clock – Clock used to modulate the pulse.
phase – Phase of the pulse in degrees.
t0 – Time in seconds when to start the pulses relative to the start time of the Operation in the Schedule.
data – The operation’s dictionary, by default None Note: if the data parameter is not None all other parameters are overwritten using the contents of data.
- Returns
Returns a SquarePulse object that compensates all pulses passed as argument.
- _extract_pulses(pulses: List[quantify_scheduler.Operation], port: str) List[Dict[str, Any]] [source]
- class WindowOperation(window_name: str, duration: float, t0: float = 0.0, data: Optional[Dict[str, Any]] = None)[source]
Bases:
quantify_scheduler.Operation
The WindowOperation is an operation for visualization purposes.
The WindowOperation has a starting time and duration.
- class NumericalPulse(samples: Union[numpy.ndarray, list], t_samples: Union[numpy.ndarray, list], port: str, clock: str, t0: float = 0, interpolation: str = 'linear', data: Optional[dict] = None)[source]
Bases:
quantify_scheduler.Operation
Defines a pulse where the shape is determined by specifying an array of (complex) points. If points are required between the specified samples (such as could be required by the sampling rate of the hardware), meaning \(t[n] < t' < t[n+1]\), scipy.interpolate.interp1d will be used to interpolate between the two points and determine the value.