Example #1
0
def cal_fast_pi(name, mult=1):
    m = pulsar_mbi_espin.ElectronRabiSplitMultElements('cal_fast_pi_' + name +
                                                       '_M=%d' % mult)
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    # measurement settings
    pts = 11
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 500
    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int) * mult
    m.params['MW_pulse_delays'] = np.ones(pts) * 15e-6

    # hard pi pulses
    m.params['MW_pulse_durations'] = np.ones(
        pts) * m.params['fast_pi_duration']
    m.params['MW_pulse_amps'] = np.linspace(0.7, 0.9, pts)
    m.params['MW_pulse_mod_frqs'] = np.ones(pts) * \
        m.params['AWG_MBI_MW_pulse_mod_frq']

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse amplitude (V)'
    m.params['sweep_pts'] = m.params['MW_pulse_amps']

    funcs.finish(m, debug=False, upload=UPLOAD)
def cal_fast_pi(name, mult=1):
    m = pulsar_mbi_espin.ElectronRabiSplitMultElements('cal_fast_pi_' + name +
                                                       '_M=%d' % mult)
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    # measurement settings
    pts = 11
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 500
    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int) * mult
    m.params['MW_pulse_delays'] = np.ones(pts) * 15e-6

    # hard pi pulses
    m.params['MW_pulse_durations'] = np.ones(
        pts) * m.params['fast_pi_duration']
    m.params['MW_pulse_amps'] = np.linspace(0.7, 0.9, pts)
    m.params['MW_pulse_mod_frqs'] = np.ones(pts) * \
        m.params['AWG_MBI_MW_pulse_mod_frq']

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse amplitude (V)'
    m.params['sweep_pts'] = m.params['MW_pulse_amps']

    funcs.finish(m, debug=False, upload=UPLOAD)
def cal_pi2pi_pi_mI0(name, mult=1):
    m = pulsar_mbi_espin.ElectronRabiSplitMultElements(
        'cal_pi2pi_pi_mI0_'+name+'_M=%d' % mult)
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO+MBI']) 
    funcs.prepare(m)
    
    # measurement settings
    pts = 11
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 1000
    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int) * mult
    m.params['MW_pulse_delays'] = np.ones(pts) * 15e-6
    
    # MBI is in mI = 0 here
    # some msmts use mod, others ssbmod (haven't found the mistake yet.) set both.
    m.params['AWG_MBI_MW_pulse_mod_frq'] = m.params['pi2pi_mI0_mod_frq']
    m.params['AWG_MBI_MW_pulse_ssbmod_frq'] = m.params['pi2pi_mI0_mod_frq']

    # hard pi pulses
    m.params['MW_pulse_durations'] = np.ones(pts) * 396e-9
    m.params['MW_pulse_amps'] = np.linspace(0.095,0.12,pts)
    m.params['MW_pulse_mod_frqs'] = np.ones(pts) * \
        m.params['AWG_MBI_MW_pulse_mod_frq']
        
    # for the autoanalysis    
    m.params['sweep_name'] = 'MW pulse amplitude (V)'
    m.params['sweep_pts'] = m.params['MW_pulse_amps']

    funcs.finish(m, debug=False, upload=UPLOAD)
Example #4
0
def cal_pi2pi_pi_mI0(name, mult=1):
    m = pulsar_mbi_espin.ElectronRabiSplitMultElements('cal_pi2pi_pi_mI0_' +
                                                       name + '_M=%d' % mult)
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    # measurement settings
    pts = 11
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 1000
    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int) * mult
    m.params['MW_pulse_delays'] = np.ones(pts) * 15e-6

    # MBI is in mI = 0 here
    # some msmts use mod, others ssbmod (haven't found the mistake yet.) set both.
    m.params['AWG_MBI_MW_pulse_mod_frq'] = m.params['pi2pi_mI0_mod_frq']
    m.params['AWG_MBI_MW_pulse_ssbmod_frq'] = m.params['pi2pi_mI0_mod_frq']

    # hard pi pulses
    m.params['MW_pulse_durations'] = np.ones(pts) * 396e-9
    m.params['MW_pulse_amps'] = np.linspace(0.095, 0.12, pts)
    m.params['MW_pulse_mod_frqs'] = np.ones(pts) * \
        m.params['AWG_MBI_MW_pulse_mod_frq']

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse amplitude (V)'
    m.params['sweep_pts'] = m.params['MW_pulse_amps']

    funcs.finish(m, debug=False, upload=UPLOAD)
def calibrate_MBI_fidelity_RO_pulses(name):
    m = pulsar_msmt.ElectronRabi('MBI_fidelity_RO_pulses_'+name)
    
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO'])
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO+espin'])
    funcs.prepare(m)

    m.params['pts'] = 21
    pts = m.params['pts']
    m.params['repetitions'] = 5000

    m.params['MBI_calibration_RO_pulse_duration'] = 8.3e-6
    m.params['MBI_calibration_RO_pulse_amplitude_sweep_vals'] = np.linspace(0.002,0.007,pts)
    m.params['MBI_calibration_RO_pulse_mod_frqs'] = \
        m.params['ms-1_cntr_frq'] - m.params['mw_frq'] + \
        np.array([-1,0,+1]) * m.params['N_HF_frq']

    m.params['MW_pulse_durations'] =  np.ones(pts) * m.params['MBI_calibration_RO_pulse_duration']  
    m.params['MW_pulse_amplitudes'] = m.params['MBI_calibration_RO_pulse_amplitude_sweep_vals']

    m.params['sweep_name'] = 'Pulse amplitudes (V)'
    m.params['sweep_pts'] = m.params['MW_pulse_amplitudes']
    m.params['sequence_wait_time'] = \
            int(np.ceil(np.max(m.params['MW_pulse_durations'])*1e6)+10)

    for i,f in enumerate(m.params['MBI_calibration_RO_pulse_mod_frqs']):
        m.params['MW_pulse_frequency'] = f
        m.autoconfig()
        m.generate_sequence(upload=True)
        m.run()
        m.save('line-{}'.format(i))
        m.stop_sequence()
        qt.msleep(1)

    m.finish()
Example #6
0
def calibrate_MBI_fidelity(name):
    m = MBIFidelity(name)
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO'])
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    pts = 4
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 10000

    # MW pulses
    m.params['max_MBI_attempts'] = 100
    m.params[
        'N_randomize_duration'] = 50  # This could still be optimized, 50 is a guess
    m.params[
        'Ex_N_randomize_amplitude'] = 15e-9  # 10 nW is a guess, not optimized
    m.params[
        'A_N_randomize_amplitude'] = 20e-9  # 10 nW is a guess, not optimized
    m.params['repump_N_randomize_amplitude'] = 0

    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int)
    m.params['MW_pulse_delays'] = np.ones(pts) * 2000e-9

    MIM1_AMP = 0.005182
    MI0_AMP = 0.005015
    MIP1_AMP = 0.005009
    m.params['MW_pulse_durations'] = np.ones(
        pts) * 8.3e-6  # the four readout pulse durations
    m.params['MW_pulse_amps'] = np.array(
        [MIM1_AMP, MI0_AMP, MIP1_AMP,
         0.])  # calibrated powers for equal-length pi-pulses

    # Assume for now that we're initializing into m_I = -1 (no other nuclear spins)
    f_m1 = m.params['AWG_MBI_MW_pulse_mod_frq']
    f_HF = m.params['N_HF_frq']

    m.params['MW_pulse_mod_frqs'] = f_m1 + np.array([0, 1, 2, 5]) * f_HF

    # for the autoanalysis
    m.params['sweep_name'] = 'Readout transitions'
    m.params['sweep_pts'] = m.params['MW_pulse_mod_frqs']
    m.params['sweep_pt_names'] = [
        '$m_I = -1$', '$m_I = 0$', '$m_I = +1$', 'None'
    ]

    funcs.finish(m, debug=False, upload=UPLOAD)
def calibrate_MBI_fidelity(name):
    m = MBIFidelity(name)
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO'])
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    pts = 4
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 10000

    # MW pulses
    m.params['max_MBI_attempts'] = 100
    m.params[
        'N_randomize_duration'] = 50  # This could still be optimized, 50 is a guess
    m.params[
        'Ex_N_randomize_amplitude'] = 15e-9  # 10 nW is a guess, not optimized
    m.params[
        'A_N_randomize_amplitude'] = 20e-9  # 10 nW is a guess, not optimized
    m.params['repump_N_randomize_amplitude'] = 0

    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int)
    m.params['MW_pulse_delays'] = np.ones(pts) * 2000e-9

    MIM1_AMP = 0.005182
    MI0_AMP = 0.005015
    MIP1_AMP = 0.005009
    m.params['MW_pulse_durations'] = np.ones(
        pts) * 8.3e-6  # the four readout pulse durations
    m.params['MW_pulse_amps'] = np.array(
        [MIM1_AMP, MI0_AMP, MIP1_AMP,
         0.])  # calibrated powers for equal-length pi-pulses

    # Assume for now that we're initializing into m_I = -1 (no other nuclear spins)
    f_m1 = m.params['AWG_MBI_MW_pulse_mod_frq']
    f_HF = m.params['N_HF_frq']

    m.params['MW_pulse_mod_frqs'] = f_m1 + np.array([0, 1, 2, 5]) * f_HF

    # for the autoanalysis
    m.params['sweep_name'] = 'Readout transitions'
    m.params['sweep_pts'] = m.params['MW_pulse_mod_frqs']
    m.params['sweep_pt_names'] = [
        '$m_I = -1$', '$m_I = 0$', '$m_I = +1$', 'None'
    ]

    funcs.finish(m, debug=False, upload=UPLOAD)
Example #8
0
def cal_CORPSE_pi(name, mult=1):
    m = CORPSE_calibration.CORPSEPiCalibration(name + '_M=%d' % mult)
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    pts = 11
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 1000

    # sweep params
    m.params['CORPSE_pi_sweep_amps'] = np.linspace(0.49, 0.56, pts)
    m.params['multiplicity'] = mult
    m.params['delay_reps'] = 15

    # for the autoanalysis
    m.params['sweep_name'] = 'CORPSE amplitude (V)'
    m.params['sweep_pts'] = m.params['CORPSE_pi_sweep_amps']

    funcs.finish(m, debug=False, upload=UPLOAD)
def cal_CORPSE_pi(name , mult=1):
    m = CORPSE_calibration.CORPSEPiCalibration(name+'_M=%d' % mult)
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO+MBI']) 
    funcs.prepare(m)

    pts = 11
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 1000

    # sweep params
    m.params['CORPSE_pi_sweep_amps'] = np.linspace(0.49, 0.56, pts)
    m.params['multiplicity'] = mult
    m.params['delay_reps'] = 15

    # for the autoanalysis
    m.params['sweep_name'] = 'CORPSE amplitude (V)'
    m.params['sweep_pts'] = m.params['CORPSE_pi_sweep_amps']
    
    funcs.finish(m, debug=False, upload=UPLOAD)
def cal_fast_pi2(name):
    m = pi2_calibration.Pi2Calibration('cal_fast_pi_over_2_' + name)
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    # measurement settings
    pts = 11
    m.params['reps_per_ROsequence'] = 3000
    m.params['pts_awg'] = pts
    m.params['pts'] = 2 * pts

    sweep_axis = np.linspace(0.65, 0.9, pts)
    # pulses
    m.params['pi2_sweep_amps'] = sweep_axis

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse amplitude (V)'
    m.params['sweep_pts'] = np.sort(np.append(sweep_axis, sweep_axis))

    funcs.finish(m, debug=False, upload=UPLOAD)
Example #11
0
def cal_fast_pi2(name):
    m = pi2_calibration.Pi2Calibration('cal_fast_pi_over_2_' + name)
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    # measurement settings
    pts = 11
    m.params['reps_per_ROsequence'] = 3000
    m.params['pts_awg'] = pts
    m.params['pts'] = 2 * pts

    sweep_axis = np.linspace(0.65, 0.9, pts)
    # pulses
    m.params['pi2_sweep_amps'] = sweep_axis

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse amplitude (V)'
    m.params['sweep_pts'] = np.sort(np.append(sweep_axis, sweep_axis))

    funcs.finish(m, debug=False, upload=UPLOAD)
Example #12
0
def cal_ssro_teleportation(name):
    m = ssro.AdwinSSRO('SSROCalibration_' + name)
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO'])
    funcs.prepare(m)
    m.params['SSRO_repetitions'] = 5000
    m.params['SP_duration'] = 250  # we want to calibrate the RO, not the SP
    m.params['SSRO_duration'] = 50

    # ms = 1 calibration

    m.params['Ex_SP_amplitude'] = 0
    m.run()
    m.save('ms0')

    # ms = 1 calibration
    m.params['A_SP_amplitude'] = 0.
    m.params['Ex_SP_amplitude'] = m.params['E_SP_amplitude']

    m.run()
    m.save('ms1')
    m.finish()
def cal_ssro_teleportation(name):
    m = ssro.AdwinSSRO('SSROCalibration_'+name) 
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO'])  
    funcs.prepare(m)
    m.params['SSRO_repetitions'] = 5000
    m.params['SP_duration'] = 250 # we want to calibrate the RO, not the SP
    m.params['SSRO_duration'] = 50

     # ms = 1 calibration

    m.params['Ex_SP_amplitude'] = 0
    m.run()
    m.save('ms0')

    # ms = 1 calibration
    m.params['A_SP_amplitude'] = 0.
    m.params['Ex_SP_amplitude'] =  m.params['E_SP_amplitude']

    m.run()
    m.save('ms1')
    m.finish()
def cal_slow_pi(name):
    m = pulsar_mbi_espin.ElectronRabi('cal_slow_pi_'+name)
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO+MBI']) 
    funcs.prepare(m)
    # measurement settings
    pts = 11
    m.params['reps_per_ROsequence'] = 500
    m.params['pts'] = pts
    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int)
    m.params['MW_pulse_delays'] = np.ones(pts) * 1e-9
  
    # slow pi pulses
    m.params['MW_pulse_durations'] = np.ones(pts) * 2500e-9
    m.params['MW_pulse_amps'] = np.linspace(0,0.03,pts) 
    m.params['MW_pulse_mod_frqs'] = np.ones(pts) * \
        m.params['AWG_MBI_MW_pulse_mod_frq']

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse amp (V)'
    m.params['sweep_pts'] = m.params['MW_pulse_amps']
    
    funcs.finish(m, debug=False, upload=UPLOAD)
def cal_fast_rabi(name):
    m = pulsar_mbi_espin.ElectronRabi('cal_fast_rabi'+name)
    m.params.from_dict(qt.cfgman['protocols']['AdwinSSRO+MBI']) 
    funcs.prepare(m)

    pts = 21
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 1000
    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int)
    m.params['MW_pulse_delays'] = np.ones(pts) * 20e-9

    # MW pulses
    m.params['MW_pulse_durations'] = np.linspace(0,500e-9,pts) + 5e-9
    m.params['MW_pulse_amps'] = np.ones(pts) * 0.4
    m.params['MW_pulse_mod_frqs'] = np.ones(pts) * \
        m.params['AWG_MBI_MW_pulse_mod_frq']

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse duration (ns)'
    m.params['sweep_pts'] = m.params['MW_pulse_durations'] * 1e9
    
    funcs.finish(m, debug=False, upload=UPLOAD)
Example #16
0
def cal_slow_pi(name):
    m = pulsar_mbi_espin.ElectronRabi('cal_slow_pi_' + name)
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)
    # measurement settings
    pts = 11
    m.params['reps_per_ROsequence'] = 500
    m.params['pts'] = pts
    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int)
    m.params['MW_pulse_delays'] = np.ones(pts) * 1e-9

    # slow pi pulses
    m.params['MW_pulse_durations'] = np.ones(pts) * 2500e-9
    m.params['MW_pulse_amps'] = np.linspace(0, 0.03, pts)
    m.params['MW_pulse_mod_frqs'] = np.ones(pts) * \
        m.params['AWG_MBI_MW_pulse_mod_frq']

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse amp (V)'
    m.params['sweep_pts'] = m.params['MW_pulse_amps']

    funcs.finish(m, debug=False, upload=UPLOAD)
Example #17
0
def cal_fast_rabi(name):
    m = pulsar_mbi_espin.ElectronRabi('cal_fast_rabi' + name)
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO+MBI'])
    funcs.prepare(m)

    pts = 21
    m.params['pts'] = pts
    m.params['reps_per_ROsequence'] = 1000
    m.params['MW_pulse_multiplicities'] = np.ones(pts).astype(int)
    m.params['MW_pulse_delays'] = np.ones(pts) * 20e-9

    # MW pulses
    m.params['MW_pulse_durations'] = np.linspace(0, 500e-9, pts) + 5e-9
    m.params['MW_pulse_amps'] = np.ones(pts) * 0.4
    m.params['MW_pulse_mod_frqs'] = np.ones(pts) * \
        m.params['AWG_MBI_MW_pulse_mod_frq']

    # for the autoanalysis
    m.params['sweep_name'] = 'MW pulse duration (ns)'
    m.params['sweep_pts'] = m.params['MW_pulse_durations'] * 1e9

    funcs.finish(m, debug=False, upload=UPLOAD)
Example #18
0
def calibrate_MBI_fidelity_RO_pulses(name):
    m = pulsar_msmt.ElectronRabi('MBI_fidelity_RO_pulses_' + name)

    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO'])
    m.params.from_dict(qt.exp_params['protocols']['AdwinSSRO+espin'])
    funcs.prepare(m)

    m.params['pts'] = 21
    pts = m.params['pts']
    m.params['repetitions'] = 5000

    m.params['MBI_calibration_RO_pulse_duration'] = 8.3e-6
    m.params['MBI_calibration_RO_pulse_amplitude_sweep_vals'] = np.linspace(
        0.002, 0.007, pts)
    m.params['MBI_calibration_RO_pulse_mod_frqs'] = \
        m.params['ms-1_cntr_frq'] - m.params['mw_frq'] + \
        np.array([-1,0,+1]) * m.params['N_HF_frq']

    m.params['MW_pulse_durations'] = np.ones(
        pts) * m.params['MBI_calibration_RO_pulse_duration']
    m.params['MW_pulse_amplitudes'] = m.params[
        'MBI_calibration_RO_pulse_amplitude_sweep_vals']

    m.params['sweep_name'] = 'Pulse amplitudes (V)'
    m.params['sweep_pts'] = m.params['MW_pulse_amplitudes']
    m.params['sequence_wait_time'] = \
            int(np.ceil(np.max(m.params['MW_pulse_durations'])*1e6)+10)

    for i, f in enumerate(m.params['MBI_calibration_RO_pulse_mod_frqs']):
        m.params['MW_pulse_frequency'] = f
        m.autoconfig()
        m.generate_sequence(upload=True)
        m.run()
        m.save('line-{}'.format(i))
        m.stop_sequence()
        qt.msleep(1)

    m.finish()