PRX_CustomWaveformsSX#
- class iqm.pulse.gates.prx.PRX_CustomWaveformsSX(parent, name, locus, calibration_data, builder)#
Bases:
PRX_SinglePulse_GateImplementation
,CustomIQWaveforms
ABC for PRX gates implemented using SX gate, hot-swappable waveforms and phase manipulation.
- The schedule used to implement the PRX gate depends on the arguments:
If the rotation angle \(\theta = \pi/2\), the timebox will consist of just the SX IQ pulse, with phase.
If the rotation angle \(\theta = 0.0\), the timebox will consist of a single zero-amplitude pulse.
If not, the timebox will consist of two IQ pulses, with phase.
The formula for the PRX gate implemented using SX gates and z rotations is
\[R_\phi(\theta) = R_z(\phi-\pi/2) \: \text{SX} \: R_z(\pi-\theta) \: \text{SX} \: R_z(-\phi-\pi/2).\]The fusing of z rotations to IQPulses is done inside the
_call()
method.All parameters in the pulse here is referring to the state of the qubits.
Module:
iqm.pulse.gates.prx
Attributes
If set
True
, the Q channel waveform is considered to depend on the I channel's waveform so that they share the waveform parameters, (e.g. a DRAG PRX implementation).Parameters independent of the of Waveforms.
wave_i
Waveform for the I channel.
wave_q
Waveform for the Q channel.
Methods
- Parameters:
parent (QuantumOp) –
name (str) –
locus (Locus) –
calibration_data (OILCalibrationData) –
builder (ScheduleBuilder) –
- root_parameters: dict[str, Parameter | Setting] = {'amplitude_i': Parameter(name='', label='pi pulse I channel amplitude', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'amplitude_q': Parameter(name='', label='pi pulse Q channel amplitude', unit='', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'duration': Parameter(name='', label='pi pulse duration', unit='s', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'rz_after': Parameter(name='', label='RZ after IQ pulse', unit='rad', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None), 'rz_before': Parameter(name='', label='RZ before IQ pulse', unit='rad', data_type=<DataType.FLOAT: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None)}#
Parameters independent of the of Waveforms. Inheriting classes may override this to include parameters common to all such implementations.
- _call(angle, phase=0)#
Convert pulses into timebox, via extra Z rotations.
There are exceptions while using 0, pi/2 and pi rotation in angle, for calibration reason. The duration of the timebox can be different.
- classmethod _get_pulse(*, amplitude_i, amplitude_q, n_samples, **rest_of_calibration_data)#
Builds a single sqrt(X) pulse from the calibration data.