pulse_factories#

A module containing factory functions for pulses on the quantum-device layer.

These factories are used to take a parametrized representation of on a operation and use that to create an instance of the operation itself.

Module Contents#

Functions#

rxy_drag_pulse(...)

Generate a DRAGPulse that achieves the right

rxy_gauss_pulse(...)

Generate a Gaussian drive with GaussPulse that achieves

phase_shift(...)

Generate a ShiftClockPhase that shifts the phase of the

composite_square_pulse(...)

An example composite pulse to implement a CZ gate.

rxy_pulse(...)

Generate a Hermite or Gaussian drive pulse for a specified rotation on the Bloch sphere.

nv_spec_pulse_mw(...)

Generate a microwave pulse for spectroscopy experiments.

spin_init_pulse(→ quantify_scheduler.schedules.Schedule)

Device compilation of the spin init operation.

non_implemented_pulse(...)

Raise an error indicating that the requested gate or pulse is not implemented.

rxy_drag_pulse(amp180: float, motzoi: float, theta: float, phi: float, port: str, duration: float, clock: str, reference_magnitude: quantify_scheduler.operations.pulse_library.ReferenceMagnitude | None = None) quantify_scheduler.operations.pulse_library.DRAGPulse[source]#

Generate a DRAGPulse that achieves the right rotation angle theta based on a calibrated pi-pulse amplitude and motzoi parameter based on linear interpolation of the pulse amplitudes.

Parameters:
  • amp180 – Unitless amplitude of excitation pulse to get the maximum 180 degree theta.

  • motzoi – Unitless amplitude of the derivative component, the DRAG-pulse parameter.

  • theta – Angle in degrees to rotate around an equatorial axis on the Bloch sphere.

  • phi – Phase of the pulse in degrees.

  • port – Name of the port where the pulse is played.

  • duration – Duration of the pulse in seconds.

  • clock – Name of the clock used to modulate the pulse.

  • reference_magnitude (ReferenceMagnitude,) – Optional scaling value and unit for the unitless amplitude. Uses settings in hardware config if not provided.

Returns:

DRAGPulse operation.

rxy_gauss_pulse(amp180: float, theta: float, phi: float, port: str, duration: float, clock: str, reference_magnitude: quantify_scheduler.operations.pulse_library.ReferenceMagnitude | None = None) quantify_scheduler.operations.pulse_library.GaussPulse[source]#

Generate a Gaussian drive with GaussPulse that achieves the right rotation angle theta based on a calibrated pi-pulse amplitude.

Parameters:
  • amp180 – Unitless amplitude of excitation pulse to get the maximum 180 degree theta.

  • theta – Angle in degrees to rotate around an equatorial axis on the Bloch sphere.

  • phi – Phase of the pulse in degrees.

  • port – Name of the port where the pulse is played.

  • duration – Duration of the pulse in seconds.

  • clock – Name of the clock used to modulate the pulse.

  • reference_magnitude (ReferenceMagnitude,) – Optional scaling value and unit for the unitless amplitude. Uses settings in hardware config if not provided.

Returns:

GaussPulse operation.

phase_shift(theta: float, clock: str) quantify_scheduler.operations.pulse_library.ShiftClockPhase[source]#

Generate a ShiftClockPhase that shifts the phase of the clock by an angle theta.

Parameters:
  • theta – Angle to shift the clock by, in degrees.

  • clock – Name of the clock to shift.

Returns:

ShiftClockPhase operation.

composite_square_pulse(square_amp: float, square_duration: float, square_port: str, square_clock: str, virt_z_parent_qubit_phase: float, virt_z_parent_qubit_clock: str, virt_z_child_qubit_phase: float, virt_z_child_qubit_clock: str, reference_magnitude: quantify_scheduler.operations.pulse_library.ReferenceMagnitude | None = None, t0: float = 0) quantify_scheduler.operations.pulse_library.SquarePulse[source]#

An example composite pulse to implement a CZ gate.

It applies the square pulse and then corrects for the phase shifts on both the device elements.

Parameters:
  • square_amp – Amplitude of the square envelope.

  • square_duration – The square pulse duration in seconds.

  • square_port – Port of the pulse, must be capable of playing a complex waveform.

  • square_clock – Clock used to modulate the pulse.

  • virt_z_parent_qubit_phase – The phase shift in degrees applied to the parent qubit.

  • virt_z_parent_qubit_clock – The clock of which to shift the phase applied to the parent qubit.

  • virt_z_child_qubit_phase – The phase shift in degrees applied to the child qubit.

  • virt_z_child_qubit_clock – The clock of which to shift the phase applied to the child qubit.

  • reference_magnitude (ReferenceMagnitude,) – Optional scaling value and unit for the unitless amplitude. Uses settings in hardware config if not provided.

  • t0 – Time in seconds when to start the pulses relative to the start time of the Operation in the Schedule.

Returns:

SquarePulse operation.

rxy_pulse(amp180: float, skewness: float, theta: float, phi: float, port: str, duration: float, clock: str, pulse_shape: Literal['SkewedHermitePulse', 'GaussPulse'], reference_magnitude: quantify_scheduler.operations.pulse_library.ReferenceMagnitude | None = None) quantify_scheduler.operations.pulse_library.SkewedHermitePulse | quantify_scheduler.operations.pulse_library.GaussPulse[source]#

Generate a Hermite or Gaussian drive pulse for a specified rotation on the Bloch sphere.

The pulse achieves the desired rotation angle theta using a calibrated pi-pulse amplitude amp180. The shape of the pulse can be either a skewed Hermite pulse or a Gaussian pulse, depending on the specified pulse_shape.

Parameters:
  • amp180 (float) – Unitless amplitude of the excitation pulse for a 180-degree rotation.

  • skewness (float) – Amplitude correction for the Hermite pulse. A value of 0 results in a standard Hermite pulse.

  • theta (float) – Rotation angle around an equatorial axis on the Bloch sphere, in degrees.

  • phi (float) – Phase of the pulse, in degrees.

  • port (str) – Name of the port where the pulse will be played.

  • duration (float) – Duration of the pulse, in seconds.

  • clock (str) – Name of the clock used to modulate the pulse.

  • pulse_shape (Literal["SkewedHermitePulse", "GaussPulse"]) – Shape of the pulse to be generated.

  • reference_magnitude (pulse_library.ReferenceMagnitude | None, optional) – Reference magnitude for hardware configuration. If not provided, defaults to None.

Returns:

The generated pulse operation based on the specified shape and parameters.

Return type:

pulse_library.SkewedHermitePulse | pulse_library.GaussPulse

nv_spec_pulse_mw(duration: float, amplitude: float, clock: str, port: str, pulse_shape: Literal['SquarePulse', 'SkewedHermitePulse', 'GaussPulse'], reference_magnitude: quantify_scheduler.operations.pulse_library.ReferenceMagnitude | None = None) quantify_scheduler.operations.pulse_library.SquarePulse | quantify_scheduler.operations.pulse_library.SkewedHermitePulse | quantify_scheduler.operations.pulse_library.GaussPulse[source]#

Generate a microwave pulse for spectroscopy experiments.

The pulse can take one of three shapes: Square, Skewed Hermite, or Gaussian, based on the specified pulse_shape. This function supports frequency-modulated pulses for spectroscopy applications.

Parameters:
  • duration (float) – Duration of the pulse, in seconds.

  • amplitude (float) – Amplitude of the pulse.

  • clock (str) – Name of the clock used for frequency modulation.

  • port (str) – Name of the port where the pulse is applied.

  • pulse_shape (Literal["SquarePulse", "SkewedHermitePulse", "GaussPulse"]) – Shape of the pulse. The default is “SquarePulse”.

  • reference_magnitude (pulse_library.ReferenceMagnitude | None, optional) – Scaling value and unit for the unitless amplitude. If not provided, settings from the hardware configuration are used.

Returns:

The generated pulse operation based on the specified shape and parameters.

Return type:

pulse_library.SquarePulse | pulse_library.SkewedHermitePulse | pulse_library.GaussPulse

spin_init_pulse(square_duration: float, ramp_diff: float, parent_port: str, parent_clock: str, parent_square_amp: float, parent_ramp_amp: float, parent_ramp_rate: float, child_port: str, child_clock: str, child_square_amp: float, child_ramp_amp: float, child_ramp_rate: float) quantify_scheduler.schedules.Schedule[source]#

Device compilation of the spin init operation.

non_implemented_pulse(**kwargs) quantify_scheduler.schedules.Schedule[source]#

Raise an error indicating that the requested gate or pulse is not implemented.