FluxPulseGate#
- class iqm.pulse.gates.cz.FluxPulseGate(parent, name, locus, calibration_data, builder)#
Bases:
GateImplementation
Discrete two locus component gate implemented using flux pulses, virtual RZs, and the interaction mediated by the coupler.
Does not take any parameters since it is discrete.
The two locus components of the gate must be coupled by a tunable coupler.
Consists of a flux pulse for the coupler, and possibly another one for the first locus component, assumed to be a qubit, both with arbitrary waveforms, and virtual RZs on both components. Inherit from this class and assign waveforms to the
coupler_wave
andqubit_wave
pulse slots to create a specific implementation.Can be used as a base class for both CZ and MOVE gate implementations.
Note: the coupler and qubit pulses typically have the same duration (given in the calibration data), and in the special case of the duration being zero, the gate implementation will apply
Block(0)
instructions to all the channels where it would otherwise apply flux pulses or virtual z rotations.- Parameters:
flux_pulses – mapping from flux channel name to its flux pulse
rz – mapping from drive channel name to the virtual z rotation angle, in radians, that should be performed on it
parent (QuantumOp) –
name (str) –
locus (Locus) –
calibration_data (OILCalibrationData) –
builder (ScheduleBuilder) –
Module:
iqm.pulse.gates.cz
Attributes
Parameters names to be excluded from
self.parameters
.Parameters shared by all
FluxPulseGate
classes.Flux pulse Waveform to be played in the coupler flux AWG.
Flux pulse Waveform to be played in the qubit flux AWG.
Methods
Duration of the Schedule of the gate implementation (in seconds).
Get the name of the locus mapping stored in
ScheduleBuilder.ChipTopology
for this implementation.- root_parameters: dict[str, Parameter | Setting] = {'duration': Parameter(name='', label='Gate duration', unit='s', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None), 'rz': {'*': Parameter(name='', label='Z rotation angle', unit='rad', data_type=<DataType.NUMBER: 1>, collection_type=<CollectionType.SCALAR: 0>, element_indices=None, _parent_name=None, _parent_label=None)}}#
Parameters shared by all
FluxPulseGate
classes. Inheriting classes may override this if there’s a need for additional calibration parameters.
- excluded_parameters: list[str] = []#
Parameters names to be excluded from
self.parameters
. Inheriting classes may override this if certain parameters are not wanted in that class (also parameters defined by the waveforms can be excluded).
- _call()#
The GateImplementation-specific logic for implementing a quantum operation.
Inheriting classes may override this method if the default
__call__()
caching (based on the args & kwargs in the signature) is sufficient. Any additional caching may also be implemented inside this function if needed.- Return type:
- duration_in_seconds()#
Duration of the Schedule of the gate implementation (in seconds).
Can be left unimplemented if the duration e.g. depends on the gate arguments. Subclasses can reimplement this method in case it makes sense in their context.
- Return type:
- classmethod get_locus_mapping_name(operation_name, implementation_name)#
Get the name of the locus mapping stored in
ScheduleBuilder.ChipTopology
for this implementation.By default, it is
"<operation_name>.<implementation_name>"
. Inheriting classes may override this for different behaviour.