def get_expt_cal(): # define pulse parameters # get device transition frequencies device = get_device_parameters() freq = device.freq # ssm = Nop("single_sideband_modulation") ssm.ge = np.round(freq.ge - freq.carrier, decimals=6) #+0.20035 ssm.ef = np.round(freq.ef - freq.carrier, decimals=6) #-0.095 ssm.hf = None pi_time = Nop("pi_pulse_time") pi_time.ge = 20 pi_time.ef = 24 pi_amp = Nop("pi_pulse_amplitude") pi_amp.ge = 0.80 pi_amp.ef = 0.64 channel_pair = Nop("pulse_channel_pair") channel_pair.ge = "ch3ch4" channel_pair.ef = "ch3ch4" # expt_cal = Nop("awg_pulses") expt_cal.ssm = ssm expt_cal.pi_time = pi_time expt_cal.pi_amp = pi_amp expt_cal.channel_pair = channel_pair return expt_cal
def expt_parameters(expt_name=None): if expt_name is None: expt = Nop("expt") else: expt = Nop(expt_name) expt.device = get_device_parameters() expt.awg_pulses = get_expt_cal() expt.pattern_parameters = get_pattern_parameters() return expt
def get_device_parameters(): # device = Nop("device") # freq = Nop("transition_frequencies") freq.carrier = 5.3201 freq.ge = 5.7075 freq.ef = 5.41185 # device.freq = freq return device
def get_alazar_parameters(daq_params=None): alazar_params = Nop() # alazar_params.post_trigger_samples = 2048 alazar_params.samples_per_sec = 1e9 alazar_params.buffer_count = 64 # 64 for ATS9870, found in SDK manual # alazar_params.num_total_records = daq_params.num_patterns * daq_params.num_records_per_pattern alazar_params.records_per_buffer = min(1024, alazar_params.num_total_records) alazar_params.samples_per_buffer = alazar_params.post_trigger_samples * alazar_params.records_per_buffer alazar_params.buffers_per_acquisition = int( np.ceil(alazar_params.num_total_records / alazar_params.records_per_buffer)) print("Patterns: {}".format(daq_params.num_patterns)) print("Records per pattern: {}".format(daq_params.num_records_per_pattern)) print("Buffers per acquistion: {}".format( alazar_params.buffers_per_acquisition)) print("DAQ samples per pattern: {}".format( alazar_params.post_trigger_samples)) return alazar_params
def get_daq_parameters(): daq_params = Nop("daq_parameters") # daq_params.iq_angle_deg = -45 daq_params.threshold = [145, 157.86] #[146.9, 157.86] # note: daq_alazar sets the clock to 250 MS/s daq_params.readout_start = 348 #1100 daq_params.readout_duration = 120 #1000 return daq_params
def get_pattern_parameters(): pat = Nop("pattern_parameters") pat.pat_length = 8000 # readout pat.readout_duration = 1000 pat.readout_start = pat.pat_length - pat.readout_duration pat.readout_amplitude = 1 # readout trigger pat.readout_trig_start = pat.readout_start - 1000 pat.readout_trig_duration = 1000 # pat.final_pulse_end = pat.readout_start - 5 return pat
def get_save_path(): path0 = "C:\\Data\\2020\\ep_metrology\\data\\data_200303" time_str = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") save_path = path0 + "\\" + time_str return save_path def save_by_pickle(data_in): save_path = get_save_path() fname = save_path + ".pickle" print(fname) with open(fname, "wb") as open_file: pickle.dump(data_in, open_file) if __name__ == '__main__': seq = Nop("seq") expt_cal = seq_programs.get_expt_cal() # seq.comment = "rabi_ge, sweep wx amps" seq.num_patterns = 101 seq.num_records_per_pattern = 200 seq.sweep_time = 1000 seq.times = np.linspace(0., seq.sweep_time, seq.num_patterns)*1e-3 #seq_experiments.rabi_ge(seq.num_patterns, seq.sweep_time) # sweep = Nop("sweep") sweep.comment = "wx amps, ch1ch2" sweep.vals = np.linspace(0.1, 1.1, 21) sweep.num_steps = sweep.vals.size
import expt_parameters import seq_experiments import seq_programs import daq_programs import analysis import black_nonHermitian from Nop_class import Nop import wx_programs import keithley2401 if __name__ == '__main__': expt = expt_parameters.expt_parameters() seq = Nop("seq") msmt = Nop("measurement") # seq.comment = "ramsey_ge calibration" # seq.num_patterns = 51 # seq.sweep_time = 1000 # seq.num_records_per_pattern = 500 # seq.rabi_amp = 0.05 # seq.times = np.linspace(0., seq.sweep_time, seq.num_patterns)*1e-3 # steps=13 # # sweep = Nop("sweep") # sweep.comment = "rabi ssb freq near EP" # sweep.vals = np.linspace(-3, 3, steps)*1e-3 + 0.092 # ge ramsey ## sweep.vals = np.linspace(-0.5, 0.5, 3)*1e-3 + expt_cal.ssm.ef # pop_3state = []
def readout(): expt = expt_parameters.expt_parameters() seq = Nop("seq") msmt = Nop("measurement") # seq.comment = "ramsey_ge calibration" # seq.num_patterns = 51 # seq.sweep_time = 1000 # seq.num_records_per_pattern = 500 # seq.rabi_amp = 0.05 # seq.times = np.linspace(0., seq.sweep_time, seq.num_patterns)*1e-3 # steps=13 # # sweep = Nop("sweep") # sweep.comment = "rabi ssb freq near EP" # sweep.vals = np.linspace(-3, 3, steps)*1e-3 + 0.092 # ge ramsey ## sweep.vals = np.linspace(-0.5, 0.5, 3)*1e-3 + expt_cal.ssm.ef # pop_3state = [] # fpop=[] # # for idx, ssm_ef in enumerate(sweep.vals): # print(idx) # # black_nonHermitian.ramsey_ef(ssm_ef) # wx_programs.wx_set_and_amplitude_and_offset() # ## seq_experiments.rabi_ef_prep_f(seq.num_patterns, seq.sweep_time, seq.rabi_amp, rabi_ssb_freq) # daq_params, rec_readout_vs_pats, p_readout = daq_programs.run_daq( # num_patterns=seq.num_patterns, num_records_per_pattern=seq.num_records_per_pattern) # p_post = analysis.p_readout_postselected(p_readout) # pop_3state.append(p_readout) ## msmt.popt, msmt.perr, _, _ = analysis.fit_sine_decay(x, y, guess_vals=None) # x = seq.times # y = p_post[1] ## analysis.fit_sine_decay(x,y,) # fpop.append(p_post[1]) ## save_by_pickle((expt, seq, daq, msmt)) # plt.plot(seq.times, p_post[1]) # plt.ylim([0,4]) # plt.show() ## pop_3state = np.stack(pop_3state) # popdstack=np.dstack(pop_3state) # # pop3state_f=popdstack.reshape(seq.num_patterns*3,steps) # np.savetxt('popdstack', pop3state_f) # np.savetxt('fpop', fpop) # fig = plt.figure() # plt.imshow(fpop) ## plt.imshow(pop_3state[:,1,:]) # plt.show seq.comment = "t1 ge" seq.num_patterns = 51 seq.sweep_time = 1000 seq.num_records_per_pattern = 1000 seq.times = np.linspace(0., seq.sweep_time, seq.num_patterns) * 1e-3 # black_nonHermitian.ramsey_ef() wx_programs.wx_set_and_amplitude_and_offset() daq, msmt.rec_readout_vs_pats, msmt.p_readout = daq_programs.run_daq( num_patterns=seq.num_patterns, num_records_per_pattern=seq.num_records_per_pattern) # msmt.p_post = analysis.p_readout_postselected(msmt.p_readout) # msmt.p_post = analysis.p_readout_postselected(msmt.p_readout) # # x = seq.times # y = msmt.p_post[1] # plt.plot(x, y) # plt.ylim([0, 1]) # msmt.popt, msmt.perr, _, _ = analysis.fit_exp_decay(x, y, guess_vals=None) # msmt.popt, msmt.perr, _, _ = analysis.fit_sine_decay(x, y, guess_vals=None) # save_by_pickle((expt, seq, daq, msmt)) # test = [1, 2, 3] return msmt.p_readout
pickle.dump(data_in, open_file) def load_pickle(): _, path0 = get_save_path() fname = path0 + "20200309_152452.pickle" with open(fname, "rb") as open_file: x = pickle.load(open_file) return x if __name__ == '__main__': expt = expt_parameters.expt_parameters() seq = Nop("seq") msmt = Nop("measurement") # seq.comment = "rabi_ef_prep_f, sweep rabi detuning" seq.num_patterns = 101 seq.sweep_time = 2000 seq.num_records_per_pattern = 200 seq.rabi_amp = 0.05 seq.times = np.linspace(0., seq.sweep_time, seq.num_patterns) * 1e-3 sweep = Nop("sweep") sweep.comment = "rabi ssb freq near EP" sweep.vals = np.linspace(-0.5, 0.5, 2) * 1e-3 + 0.092 # sweep.vals = np.linspace(-0.5, 0.5, 3)*1e-3 + expt_cal.ssm.ef pop_3state = [] for idx, rabi_ssb_freq in enumerate(sweep.vals):