RZ_Virtual#

class iqm.pulse.gates.rz.RZ_Virtual(parent, name, locus, calibration_data, builder)#

Bases: GateImplementation

Implementation of the RZ gate using the virtual z rotation technique.

Implements the RZ gate on a specific qubit using a VirtualRZ instruction, which simply changes the phase of the local oscillator driving that qubit. This requires no calibration data as of now. The generated VirtualRZ instruction has the shortest possible duration allowed by the instruments.

The virtual z rotation method is based on algebraically commuting the RZ gates towards the end of the circuit, until they hit a measurement operation, at which point they are eliminated. It assumes that

  1. all the multi-qubit gates in the circuit commute with arbitrary RZ gates (this holds e.g. for CZ since it is diagonal),

  2. measurements are projective and happen in the z basis, so that RZ gates that immediately precede them do not affect the measurement result or the state after the measurement, and thus can be removed, and

  3. conjugating the single-qubit gates in the circuit with RZ is equivalent to incrementing the phase of the drive (holds for PRX),

    \[R_\phi(\theta) R_z(\alpha) = R_z(\alpha) R_{\phi - \alpha}(\theta),\]

    which can be accomplished either by incrementing the phase of the local oscillator of the drive channel, or incrementing the phases of all the IQPulse s following it on the drive channel.

If all these assumptions hold we may implement an RZ gate using a VirtualRZ instruction, with phase_increment equal to the negated rotation angle.

Parameters:
  • channel – name of the drive channel on which the VirtualRZ acts

  • duration – time duration of the VirtualRZ instruction, in seconds

  • parent (QuantumOp) –

  • name (str) –

  • locus (Locus) –

  • calibration_data (OILCalibrationData) –

  • builder (ScheduleBuilder) –

Module: iqm.pulse.gates.rz

Attributes

parameters

Required calibration data, may be nested

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.

_call(angle)#

Z rotation gate.

Parameters:

angle (float) – rotation angle (in radians)

Returns:

pulse schedule implementing the z rotation gate

Return type:

TimeBox

parameters: dict[str, Parameter] = {}#

Required calibration data, may be nested

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