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 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.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'amplitude_q': Parameter(name='', label='pi pulse Q channel amplitude', unit='', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'duration': Parameter(name='', label='pi pulse duration', unit='s', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'rz_after': Parameter(name='', label='RZ after IQ pulse', unit='rad', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'rz_before': Parameter(name='', label='RZ before IQ pulse', unit='rad', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=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 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.