spinqick.experiments.eo_single_qubit

Defines the EOSingleQubit class used to perform coherent control of a single exchange-only qubit.

Attributes

logger

Classes

EOSingleQubit

Contains methods that wrap the QICK classes for setting up EO single qubit experiments.

Module Contents

spinqick.experiments.eo_single_qubit.logger
class spinqick.experiments.eo_single_qubit.EOSingleQubit(soccfg, soc, voltage_source, **kwargs)

Bases: spinqick.core.dot_experiment.DotExperiment

Contains methods that wrap the QICK classes for setting up EO single qubit experiments. Initialize with information about your rfsoc and your experimental setup.

Parameters:
soccfg
soc
vdc
calc_fingerprint_vectors(qubit, axis, house_point_1, house_point_2, x_volts)

Calculates detuning and exchange axes from a pair of points traversing the non- equilibrium cell.This is mainly useful for using spinqick without crosstalk compensation.

Parameters:
  • house_point_1 (tuple[float, float]) – (‘Px’, ‘Py’) pair of voltage coordinates defining a point on one edge of the cell. The detuning axis is the vector connecting the two pairs of house_points.

  • house_point_2 (tuple[float, float]) – (‘Px’, ‘Py’) pair of voltage coordinates defining a point on other edge of the cell.

  • x_volts (float) – voltage applied to x-gate during the measurement

  • qubit (str)

  • axis (str)

calculate_exchange_gate_vals(qubit, axis, detuning, x_throw)

Calculate exchange gain at gates in rfsoc units, given detuning and x_throw in volts.

Parameters:
  • qubit (str)

  • axis (str)

  • detuning (float)

  • x_throw (float)

calc_symmetric_vector(qubit, axis, detuning_volts, x_volts)

Calculates the symmetric vector, assuming the vector starts at the idle point and ends at the point specified here. Returns the vectors after dac unit conversion.

Parameters:
  • detuning_volts (float) – detuning value of symmetric vector endpoint

  • x_volts (float) – exchange gate voltage at endpoint of symmetric vector

  • qubit (str)

  • axis (str)

calculate_exchange_volts(qubit, axis, detuning, x_throw)

Calculates the exchange gain at gates in voltage units.

Parameters:
  • qubit (str)

  • axis (str)

  • detuning (float)

  • x_throw (float)

theta_to_voltage(qubit, axis, theta)

Use finecal curve to convert angle to gate voltages.

Parameters:
  • qubit (str)

  • axis (str)

  • theta (float)

do_nonequilibrium(qubit, axis, p_range, point_avgs=1, full_avgs=1, t1j=False)

Perform a scan of the non-equilibrium cell. This helps us to set the detuning axis for a fingerprint plot.

Parameters:
  • qubit (str) – Qubit label, describing the qubit of interest in the experiment config

  • axis (spinqick.helper_functions.spinqick_enums.ExchangeAxis) – Qubit axis (n, z or m)

  • p_range (Tuple[Tuple[float, float, int], Tuple[float, float, int]]) – range of p gate sweeps: (p2 start voltage, p2 stop voltage, p2 points), (p3 start voltage, p3 stop voltage, p3 points)

  • t1j (bool) – if true, does not apply a prerotation on ‘n’ axis for z axis measurement. This way the user can easily see if there are parts of the charge cell where singlets are decaying due to x-gate throw.

  • point_avgs (int)

  • full_avgs (int)

do_fingerprint(qubit, axis, detuning_range, exchange_range, n_pulses=1, point_avgs=1, full_avgs=1)

Perform a 2D sweep of axis detuning vs exchange gate voltage.

Parameters:
  • qubit (str) – Qubit label, describing the qubit of interest in the experiment config

  • axis (spinqick.helper_functions.spinqick_enums.ExchangeAxis) – Qubit axis (n, z or m)

  • detuning_range (Tuple[float, float, int]) – range of detuning axis sweep (start, stop, num_points)

  • detuning_range – range of exchange axis sweep (start, stop, num_points)

  • n_pulses (int) – optionally play more than one pulse

  • exchange_range (Tuple[float, float, int])

  • point_avgs (int)

  • full_avgs (int)

time_sweep(qubit, axis, max_time, time_pts, point_avgs, full_avgs)

Perform a time-rabi style measurement, sweeping pulse time. Note that the minimum allowed time step is the length of one tproc clock cycle.

Parameters:
fid_sweep(qubit, axis, max_time, time_pts, point_avgs, full_avgs)

Perform a free induction decay measurement. If n or m axis is selected, adds a pi pulse on this axis before and after the decay time. Note that the minimum allowed time step is the length of one tproc clock cycle.

Parameters:
course_cal(qubit, axis, exchange_range, n_pulses=3, point_avgs=10, full_avgs=10, fit=True)

Perform a course calibration of exchange angle.

Parameters:
  • exchange_range (Tuple[float, float, int]) – range of x-gate voltages to perform the calibration over (start voltage, end voltage, number of points)

  • n_pulses (int) – number of pulses to apply for the calibration

  • qubit (str)

  • axis (spinqick.helper_functions.spinqick_enums.ExchangeAxis)

  • point_avgs (int)

  • full_avgs (int)

  • fit (bool)

fine_cal(qubit, axis, theta_range, t_res='fs', n_pulses=10, point_avgs=5, full_avgs=2)

Perform a fine calibration of exchange angle.

Use analyzed data as calibration curve

Parameters: