spinqick.experiments.ld_single_qubit
Defines the LDSingleQubit class, which contains methods for basic single- qubit.
Attributes
Classes
Contains methods that wrap the QICK code classes for single LD qubit experiments. These |
Module Contents
- spinqick.experiments.ld_single_qubit.logger
- class spinqick.experiments.ld_single_qubit.LDSingleQubit(soccfg, soc, voltage_source, **kwargs)
Bases:
spinqick.core.dot_experiment.DotExperimentContains methods that wrap the QICK code classes for single LD qubit experiments. These involve a microwave drive. These scripts are set up to generate a trigger which goes high during the RF pulse, so if the user is mixing their signal with an LO they can trigger an RF switch. Initialize with information about your rfsoc and your experimental setup.
:param soccfg : QickConfig object :param soc : initialized QickSoc object :param voltage_source: Initialized DC voltage source object. This is used here for saving the DC
voltage state each time data is saved.
- Parameters:
voltage_source (spinqick.helper_functions.hardware_manager.VoltageSource)
- soccfg
- soc
- vdc
- idle_cell_scan_with_rf(p_gates, p_range, rf_gain, rf_freq, rf_length, point_avgs=10, full_avgs=1)
Performs a 2D sweep of idle coordinate with RF on. RF is turned on a the idle point in the spam sequence.
- Parameters:
p_gates (Tuple[spinqick.helper_functions.spinqick_enums.GateNames, spinqick.helper_functions.spinqick_enums.GateNames]) – specify the two plunger gates being used
p_range (Tuple[Tuple[float, float, int], Tuple[float, float, int]]) – specify the range of each axis sweep. ((px_start, px_stop, px_points), (py_start, py_stop, py_points))
add_rf – add an RF pulse at the idle point
rf_freq (float) – frequency of RF pulse
rf_gain (int) – gain of RF pulse
rf_length (float) – length (in microseconds) of RF pulse
point_avgs (int)
full_avgs (int)
- Return type:
- rf_freq_scan(rf_gain, start_freq, stop_freq, num_pts, rf_length, point_avgs=10, full_avgs=10)
Play a frequency sweep.
- Parameters:
rf_gain (float) – Gain of RF tone in DAC units
start_freq (float) – Lowest RF frequency in MHz
stop_freq (float) – Max RF frequency in MHz
num_pts (int) – Number of points in the frequency sweep
rf_length (float) – Pulse length of RF drive in microseconds
point_avgs (int) – Number of times to repeat each measurement and average
full_avgs (int) – Number of times to run sweep and average full experiment
- Return type:
- rabi_chevron(rf_gain, freq_range, time_range, point_avgs=10, full_avgs=10)
Performs a 2D sweep of RF pulse frequency and pulse length.
- Parameters:
rf_gain (int) – RF pulse amplitude in DAC units
freq_range (Tuple[float, float, int]) – (start frequency (MHz), stop frequency (MHz), number of steps)
time_range (Tuple[float, float, int]) – (start time (us), stop time (us), number of steps)
point_avgs (int)
full_avgs (int)
- Return type:
- time_rabi(rf_gain, time_range, point_avgs=10, full_avgs=10)
Performs a time rabi experiment, sweeping the length of the RF pulse time.
- Parameters:
rf_gain (int) – RF gain in DAC units :time_range: (time_start, time_stop, num_points) in microseconds
time_range (Tuple[float, float, int])
point_avgs (int)
full_avgs (int)
- Return type:
- amplitude_rabi(rf_time, gain_range, point_avgs=10, full_avgs=1)
Performs an experiment which sweeps RF pulse gain, keeping RF pulse length constant.
- Parameters:
rf_time (float) – pulse length in microseconds
gain_range (Tuple[float, float, int]) – gain sweep parameters in dac units; (start_gain, stop_gain, number of points)
point_avgs (int)
full_avgs (int)
- Return type:
- allxy(qubit, point_avgs=10, full_avgs=10)
Perform an all x-y experiment. This experiment consists of a series of manipulations to demonstrate x-y control.
- Parameters:
qubit (str) – specify qubit config label
point_avgs (int) – averages per measurement point
full_averages – averages of full experiment
full_avgs (int)
- Return type:
- phase_control(qubit, phase_range, point_avgs=10, full_avgs=10)
Performs two pi/2 pulses, incrementing the phase offset of the second pulse. If you are driving x-y rotations you will see a periodic output. This is a simple way to demonstrate that you have x-y control of your qubit using RF drive phase.
- Parameters:
qubit (str) – specify qubit config label
phase_range (Tuple[float, float, int]) – (start_phase, end_phase, number of points)
point_avgs (int)
full_avgs (int)
- Return type:
- ramsey_experiment(qubit, time_range, point_avgs=10, full_avgs=10)
Perform a 1D Ramsey experiment, by sweeping time delay between two pi/2 pulses.
- Parameters:
qubit (str) – specify qubit config label
time_range (Tuple[float, float, int]) – (start, end, number of points) in microseconds
point_avgs (int)
full_avgs (int)
- Return type:
- ramsey_2d(qubit, time_range, freq_range, full_avgs=10, point_avgs=10)
Performs a series of ramsey experiments, sweeping both delay time between two pulses and pulse frequency.
- Parameters:
qubit (str) – specify qubit config label
time_range (Tuple[float, float, int]) – (time_start, time_stop, points) in microseconds
freq_range (Tuple[float, float, int]) – (freq_start, freq_stop, points) in MHz
full_avgs (int)
point_avgs (int)
- Return type:
- spin_echo(qubit, n_echoes, time_range, full_avgs=10, point_avgs=10)
Performs a hahn echo or CPMG experiment.
- Parameters:
n_echoes (int) – Number of pi pulses to insert. n=1 for Hahn echo. :time_range: (time_start, time_stop, points) in microseconds
qubit (str)
time_range (Tuple[float, float, int])
full_avgs (int)
point_avgs (int)
- Return type: