spinqick.experiments.eo_single_qubit
Defines the EOSingleQubit class used to perform coherent control of a single exchange-only qubit.
Attributes
Classes
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.DotExperimentContains 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 – qick config object (QickConfig)
soc – QickSoc object
voltage_source (spinqick.helper_functions.hardware_manager.VoltageSource) – Initialized DC voltage source object. This is used here for saving the DC voltage state each time data is saved.
- 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:
max_time (float) – pulse duration at the end of the sweep in microseconds
time_pts (int) – number of steps in time sweep
qubit (str)
axis (spinqick.helper_functions.spinqick_enums.ExchangeAxis)
point_avgs (int)
full_avgs (int)
- 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:
max_time (float) – maximum delay duration in microseconds
time_pts (int) – number of steps in time sweep
qubit (str)
axis (spinqick.helper_functions.spinqick_enums.ExchangeAxis)
point_avgs (int)
full_avgs (int)
- 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:
qubit (str)
axis (spinqick.helper_functions.spinqick_enums.ExchangeAxis)
theta_range (Tuple[float, float, int])
t_res (Literal['fs', 'fabric'])
n_pulses (int)
point_avgs (int)
full_avgs (int)