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 and qubit_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

excluded_parameters

Parameters names to be excluded from self.parameters.

root_parameters

Parameters shared by all FluxPulseGate classes.

coupler_wave

Flux pulse Waveform to be played in the coupler flux AWG.

qubit_wave

Flux pulse Waveform to be played in the qubit flux AWG.

Methods

duration_in_seconds

Duration of the Schedule of the gate implementation (in seconds).

get_locus_mapping_name

Get the name of the locus mapping stored in ScheduleBuilder.ChipTopology for this implementation.

coupler_wave: type[Waveform] | None#

Flux pulse Waveform to be played in the coupler flux AWG.

qubit_wave: type[Waveform] | None#

Flux pulse Waveform to be played in the qubit flux AWG.

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:

TimeBox

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:

float

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.

Parameters:
  • operation_name (str) – name of the quantum operation.

  • implementation_name (str) – name of the implementation

Returns:

name of the locus mapping

Return type:

str