spinqick.core.eo_pulses

Module for setting up exchange-only pulse sequences.

Attributes

THETA1

THETA2

THETA3

THETA4

CLIFFORDS_1Q

Functions

round_up_pulses(pulsetime, soccfg)

Calculate the pulse length after rounding to fabric cycles.

setup_eo_gens(prog, qubit_cfg)

Declare all generators associated with a qubit.

setup_pi_pulse(prog, qubit_cfg, exchange_axis[, ...])

Setup a pi pulse for one or more axes of a qubit.

play_pi(prog, exchange_axis, qubit_cfg[, t, t_res])

Play pi pulse programmed by setup_pi_pulse.

setup_evol_sweep(prog, qubit_cfg, exchange_axis, ...)

Set up an evol pulse for one or both axes of a qubit.

setup_evol(prog, qubit_cfg, exchange_axis[, n_pulses, ...])

Setup an exchange pulse for one axis of a qubit .

setup_evol_comp(prog, qubit_cfg, exchange_axis[, ...])

Setup an evol pulse for one axis of a qubit. This assumes that the user is using the

setup_evol_sweep_comp(prog, qubit_cfg, exchange_axis, ...)

Set up an evol pulse for one or more axes of a qubit.This automatically rounds the pulse

play_evol_fine(prog, exchange_axis, qubit_cfg[, t, comp])

Play evol pulses programmed by setup_evol.

play_evol_course(prog, exchange_axis, qubit_cfg[, t, ...])

Play evol pulses programmed by setup_evol_sweep or setup_evol.

theta_to_x_gain(exchange_axis, qubit_cfg, theta, ...)

Convert desired angle to x-gate gain. This assumes the user is using the crosstalk

dumb_1q_compiler(prog, qubit_cfg, n_recipe, z_recipe, ...)

Takes a list of angles on z and n axes, and converts them into waveforms. It assumes that.

clifford_to_recipe(clifford)

Return separate lists of angles for the n and z axes for a given clifford.

setup_1q_cliffords(prog, qubit_cfg, cliffords, ...)

Setup pulses for a series of single qubit cliffords.

play_1q_clifford(prog, qubit_cfg, cliffords[, t])

Play a single qubit clifford.

Module Contents

spinqick.core.eo_pulses.THETA1
spinqick.core.eo_pulses.THETA2
spinqick.core.eo_pulses.THETA3
spinqick.core.eo_pulses.THETA4
spinqick.core.eo_pulses.CLIFFORDS_1Q
spinqick.core.eo_pulses.round_up_pulses(pulsetime, soccfg)

Calculate the pulse length after rounding to fabric cycles.

Parameters:
  • pulsetime (float)

  • soccfg (qick.QickConfig)

spinqick.core.eo_pulses.setup_eo_gens(prog, qubit_cfg)

Declare all generators associated with a qubit.

Parameters:
spinqick.core.eo_pulses.setup_pi_pulse(prog, qubit_cfg, exchange_axis, pulse_time_cal='fine')

Setup a pi pulse for one or more axes of a qubit.

Parameters:
spinqick.core.eo_pulses.play_pi(prog, exchange_axis, qubit_cfg, t=0, t_res='course')

Play pi pulse programmed by setup_pi_pulse.

Parameters:
  • t (float) – time in program to play pulse (in microseconds). This goes directly into the qick api “pulse” command.

  • t_res (Literal['course', 'fine']) – if “course”, function assumes that the calibration was performed with pulse time rounded to the nearest fabric clock cycle. In this case, the script plays a pulse directly after the pi pulse which is at the idle voltage amplitude. If “fine”, pulse times are defined and rounded to the nearest dac clock cycle.

  • prog (qick.asm_v2.AsmV2)

  • exchange_axis (spinqick.helper_functions.spinqick_enums.ExchangeAxis)

  • qubit_cfg (spinqick.models.qubit_models.Eo1Qubit)

spinqick.core.eo_pulses.setup_evol_sweep(prog, qubit_cfg, exchange_axis, sweep_dict)

Set up an evol pulse for one or both axes of a qubit.

This automatically rounds the pulse times up to the nearest dac fabric cycle :param sweep_dict: {axis: {gate: {sweep: 1dqicksweep}} dictionary to specify gates to sweep and

supply a 1dqicksweep object.

Parameters:
spinqick.core.eo_pulses.setup_evol(prog, qubit_cfg, exchange_axis, n_pulses=10, ptime_res='fabric', sweep_dict=None)

Setup an exchange pulse for one axis of a qubit .

Parameters:
  • n_pulses (int) – program n_pulses to play in a row, if ptime_res is set to “fs”

  • ptime_res (Literal['fabric', 'fs']) – time resolution of pulse time. If “fs”, set to sampling rate of dac, and pad end of pulse with idle_gain values. If “fabric”, round pulse length up to next fabric clock length.

  • sweep_dict (dict | None) – {axis: {gate: gain} dictionary to specify gates to modulate when applying exchange and supply a gain for each gate.

  • prog (qick.asm_v2.QickProgramV2)

  • qubit_cfg (spinqick.models.qubit_models.Eo1Qubit)

  • exchange_axis (list[spinqick.helper_functions.spinqick_enums.ExchangeAxis])

spinqick.core.eo_pulses.setup_evol_comp(prog, qubit_cfg, exchange_axis, n_pulses=10, ptime_res='fs', sweep_dict=None)

Setup an evol pulse for one axis of a qubit. This assumes that the user is using the compensation firmware to pulse along the exchange axis, so it only commands the x-gate to pulse during an exchange pulse.

Parameters:
  • n_pulses (int) – program n_pulses to play in a row, if ptime_res is set to “fs”

  • ptime_res (Literal['fabric', 'fs']) – time resolution of pulse time. If “fs”, set to sampling rate of dac, and pad end of pulse with idle_gain values. If “fabric”, round pulse length up to next fabric clock length.

  • sweep_dict (dict | None) – {axis: {gate: gain} dictionary to specify gates to modulate when applying exchange and supply a gain for each gate.

  • prog (qick.asm_v2.QickProgramV2)

  • qubit_cfg (spinqick.models.qubit_models.Eo1Qubit)

  • exchange_axis (list[spinqick.helper_functions.spinqick_enums.ExchangeAxis])

spinqick.core.eo_pulses.setup_evol_sweep_comp(prog, qubit_cfg, exchange_axis, sweep_dict, n_pulses)

Set up an evol pulse for one or more axes of a qubit.This automatically rounds the pulse times up to the nearest dac fabric cycle.

Parameters:
  • n_pulses (int) – program n_pulses to play in a row, if ptime_res is set to “fs”

  • ptime_res – time resolution of pulse time. If “fs”, set to sampling rate of dac, and pad end of pulse with idle_gain values. If “fabric”, round pulse length up to next fabric clock length.

  • sweep_dict (dict) – {axis: {gate: {sweep: 1dqicksweep}} specify gates to sweep and supply a 1dqicksweep object describing the sweep.

  • prog (qick.asm_v2.QickProgramV2)

  • qubit_cfg (spinqick.models.qubit_models.Eo1Qubit)

  • exchange_axis (List[spinqick.helper_functions.spinqick_enums.ExchangeAxis])

spinqick.core.eo_pulses.play_evol_fine(prog, exchange_axis, qubit_cfg, t=0, comp=False)

Play evol pulses programmed by setup_evol.

Parameters:
spinqick.core.eo_pulses.play_evol_course(prog, exchange_axis, qubit_cfg, t=0, n_pulses=1)

Play evol pulses programmed by setup_evol_sweep or setup_evol.

Parameters:
spinqick.core.eo_pulses.theta_to_x_gain(exchange_axis, qubit_cfg, theta, x_gate_conversion)

Convert desired angle to x-gate gain. This assumes the user is using the crosstalk compensation firmware.

Parameters:
spinqick.core.eo_pulses.dumb_1q_compiler(prog, qubit_cfg, n_recipe, z_recipe, x_n_conversion, x_z_conversion)

Takes a list of angles on z and n axes, and converts them into waveforms. It assumes that.

Parameters:
  • x_n_conversion (float) – specify the conversion from voltage to dac units for the n axis

  • x_z_conversion (float) – specify the conversion from voltage to dac units for the z axis

  • prog (qick.asm_v2.QickProgramV2)

  • qubit_cfg (spinqick.models.qubit_models.Eo1Qubit)

  • n_recipe (List)

  • z_recipe (List)

spinqick.core.eo_pulses.clifford_to_recipe(clifford)

Return separate lists of angles for the n and z axes for a given clifford.

This uses the one qubit clifford definitions listed above in CLIFFORD_1Q.

Parameters:

clifford (str)

spinqick.core.eo_pulses.setup_1q_cliffords(prog, qubit_cfg, cliffords, x_n_conversion, x_z_conversion)

Setup pulses for a series of single qubit cliffords.

Parameters:
  • cliffords (List[str]) – list of strings describing clifford gates from CLIFFORD_1Q.

  • x_n_conversion (float) – specify the conversion from voltage to dac units for the n axis

  • x_z_conversion (float) – specify the conversion from voltage to dac units for the z axis

  • prog (qick.asm_v2.QickProgramV2)

  • qubit_cfg (spinqick.models.qubit_models.Eo1Qubit)

spinqick.core.eo_pulses.play_1q_clifford(prog, qubit_cfg, cliffords, t=0)

Play a single qubit clifford.

Parameters:
  • cliffords (List[str]) – a list of strings specifying clifford gates from CLIFFORD_1Q.

  • t (float) – time in qickprogram to execute the cliffords in microseconds.

  • prog (qick.asm_v2.QickProgramV2)

  • qubit_cfg (spinqick.models.qubit_models.Eo1Qubit)