offsets = offset_bins * 512.0 / nsamp print f0s print offsets * 1e6 print len(f0s) mmw_freqs = np.linspace(140e9, 165e9, 500) use_fmin = False attenlist = [0] start = time.time() for atten in attenlist: hittite.off() print "setting attenuator to", atten ri.set_dac_attenuator(atten) measured_freqs = sweeps.prepare_sweep(ri, f0binned, offsets, nsamp=nsamp) print "loaded waveforms in", (time.time() - start), "seconds" delay = -31.3 print "median delay is ", delay df = data_file.DataFile(suffix=suffix) df.nc.mmw_atten_turns = mmw_atten_turns df.log_hw_state(ri) sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=atonce, reads_per_step=2) df.add_sweep(sweep_data) meas_cfs = [] idxs = [] for m in range(len(f0s)): fr, s21, errors = sweep_data.select_by_freq(f0s[m])
nf = len(f0s) atonce = 8 if nf % atonce > 0: print "extending list of resonators to make a multiple of ",atonce f0s = np.concatenate((f0s,np.arange(1,1+atonce-(nf%atonce))+f0s.max())) offsets = np.linspace(-4882.8125,4638.671875,20) #offsets = np.concatenate(([-40e3,-20e3],offsets,[20e3,40e3]))/1e6 offsets = np.concatenate(([-40e3],offsets,[40e3]))/1e6 offsets = offsets*2 print f0s print len(f0s) start = time.time() measured_freqs = sweeps.prepare_sweep(ri,f0s,offsets,nsamp=2**21) print "loaded waveforms in", (time.time()-start),"seconds" sys.stdout.flush() time.sleep(1) atten_list = [45]#np.linspace(35,46,4)#[30]#[35.5,33.5,46.5,43.5,40.5,37.5] for atten in atten_list: df = data_file.DataFile() ri.set_dac_attenuator(atten) sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=atonce, reads_per_step=8) df.add_sweep(sweep_data) meas_cfs = [] idxs = [] for m in range(len(f0s)): fr,s21,errors = sweep_data.select_by_freq(f0s[m])
atonce = 4 if nf % atonce > 0: print "extending list of resonators to make a multiple of ", atonce f0s = np.concatenate( (f0s, np.arange(1, 1 + atonce - (nf % atonce)) + f0s.max())) offsets = np.linspace(-4882.8125, 4638.671875, 20) #[5:15] #offsets = np.concatenate(([-40e3,-20e3],offsets,[20e3,40e3]))/1e6 offsets = np.concatenate(([-40e3], offsets, [40e3])) / 1e6 offsets = offsets * 4 print f0s print len(f0s) start = time.time() measured_freqs = sweeps.prepare_sweep(ri, f0s, offsets, nsamp=2**21) print "loaded waveforms in", (time.time() - start), "seconds" sys.stdout.flush() time.sleep(1) atten_list = [30] #np.linspace(27,34,8)#[30]#[35.5,33.5,46.5,43.5,40.5,37.5] for atten in atten_list: df = data_file.DataFile() ri.set_dac_attenuator(atten) sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=atonce, reads_per_step=8) df.add_sweep(sweep_data) meas_cfs = [] idxs = []
heater_voltage = float(raw_input("Enter a heater voltage to change it, or hit enter to record data: ")) fg.set_dc_voltage(heater_voltage) except ValueError: print("Recording data.") break start_time = time.time() df = data_file.DataFile(suffix=suffix) df.nc.mmw_atten_turns = mmw_atten_turns # Take a coarse sweep with the source off at the lowest attenuation to get the approximate resonance frequencies. source_off() maximum_attenuation = max(attenuations) print("Setting DAC attenuator to {:.1f} dB for coarse sweep.".format(maximum_attenuation)) roach.set_dac_attenuator(maximum_attenuation) coarse_measured_frequencies = sweeps.prepare_sweep(roach, f0s, coarse_offset_frequencies, coarse_n_samples) df.log_hw_state(roach) coarse_sweep = sweeps.do_prepared_sweep(roach, nchan_per_step=f0s.size, reads_per_step=2) df.add_sweep(coarse_sweep) coarse_resonators = acquire.fit_sweep_data(coarse_sweep) coarse_fit_f0s = np.array([r.f_0 for r in coarse_resonators]) print("coarse - initial [Hz]: " + ', '.join(['{:.0f}'.format(1e6 * diff) for diff in coarse_fit_f0s - f0s])) # Record one stream at the lowest attenuation. mmw_source_modulation_freq = source_modulate() print("Set source modulation frequency to {:.1f} Hz.".format(mmw_source_modulation_freq)) modulated_measured_frequencies = roach.set_tone_freqs(coarse_fit_f0s, nsamp=fine_n_samples) roach.select_fft_bins(np.arange(f0s.size)) roach._sync() time.sleep(1) df.log_hw_state(roach)
atonce = 16 for group_num, (lo, f0s) in enumerate( zip([group_1_lo, group_2_lo], [group_1_f0, group_2_f0])): print "group", group_num, "lo", lo, "min f0", f0s.min() ri.set_lo(lo) nsamp = 2**16 step = 1 nstep = 128 f0binned = np.round(f0s * nsamp / 512.0) * 512.0 / nsamp offset_bins = np.arange(-(nstep + 1), (nstep + 1)) * step offsets = offset_bins * 512.0 / nsamp measured_freqs = sweeps.prepare_sweep(ri, f0binned, offsets, nsamp=nsamp) for hittite_power in np.arange(-3.4, 1.1, 0.2): hittite.set_power(hittite_power) df = data_file.DataFile(suffix=suffix) df.nc.mmw_atten_turns = mmw_atten_turns for atten_index, dac_atten in enumerate([2.]): print "at dac atten", dac_atten ri.set_dac_atten(dac_atten) ri.set_modulation_output('low') df.log_hw_state(ri) df.log_adc_snap(ri) sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=atonce, reads_per_step=2) df.add_sweep(sweep_data)
start = time.time() source_modulate() print "*" * 40 print "Enter mmw attenuator values as a tuple i.e.: 6.5,6.5 or type exit to stop collecting data" mmw_atten_str = raw_input("mmw attenuator values: ") if mmw_atten_str == 'exit': source_off() break else: mmw_atten_turns = eval(mmw_atten_str) mmw_source_modulation_freq = source_on() print "setting attenuator to", attenlist[0] ri.set_dac_attenuator(attenlist[0]) f0binned = coarse_frequency_resolution * np.round(f0s / coarse_frequency_resolution) measured_freqs = sweeps.prepare_sweep(ri, f0binned, coarse_offset_freqs, nsamp=coarse_n_samples) print "loaded waveforms in", (time.time() - start), "seconds" sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=f0s.size, reads_per_step=2) orig_sweep_data = sweep_data meas_cfs = [] idxs = [] delays = [] for m in range(len(f0s)): fr, s21, errors = sweep_data.select_by_freq(f0s[m]) thiscf = f0s[m] * source_on_freq_scale res = fit_best_resonator(fr[1:-1], s21[1:-1], errors=errors[1:-1]) # Resonator(fr,s21,errors=errors) delay = res.delay delays.append(delay) s21 = s21 * np.exp(2j * np.pi * res.delay * fr) res = fit_best_resonator(fr, s21, errors=errors) fmin = fr[np.abs(s21).argmin()]
fg.set_dc_voltage(heater_voltage) except ValueError: print("Recording data.") break start_time = time.time() df = data_file.DataFile(suffix=suffix) df.nc.mmw_atten_turns = mmw_atten_turns # Take a coarse sweep with the source off at the lowest attenuation to get the approximate resonance frequencies. source_off() maximum_attenuation = max(attenuations) print("Setting DAC attenuator to {:.1f} dB for coarse sweep.".format( maximum_attenuation)) roach.set_dac_attenuator(maximum_attenuation) coarse_measured_frequencies = sweeps.prepare_sweep( roach, f0s, coarse_offset_frequencies, coarse_n_samples) df.log_hw_state(roach) coarse_sweep = sweeps.do_prepared_sweep(roach, nchan_per_step=f0s.size, reads_per_step=2) df.add_sweep(coarse_sweep) coarse_resonators = acquire.fit_sweep_data(coarse_sweep) coarse_fit_f0s = np.array([r.f_0 for r in coarse_resonators]) print( "coarse - initial [Hz]: " + ', '.join( ['{:.0f}'.format(1e6 * diff) for diff in coarse_fit_f0s - f0s])) # Record one stream at the lowest attenuation. mmw_source_modulation_freq = source_modulate() print("Set source modulation frequency to {:.1f} Hz.".format( mmw_source_modulation_freq))
print "Enter mmw attenuator values as a tuple i.e.: 6.5,6.5 or type exit to stop collecting data" mmw_atten_str = raw_input("mmw attenuator values: ") if mmw_atten_str == 'exit': source_off() break else: mmw_atten_turns = eval(mmw_atten_str) # Do a coarse sweep with the source on mmw_source_modulation_freq = source_on() print "setting attenuator to", attenlist[0] ri.set_dac_attenuator(attenlist[0]) f0binned = coarse_frequency_resolution * np.round( f0s / coarse_frequency_resolution) measured_freqs = sweeps.prepare_sweep(ri, f0binned, coarse_offset_freqs, nsamp=coarse_n_samples) print "loaded waveforms in", (time.time() - start), "seconds" sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=f0s.size, reads_per_step=2) orig_sweep_data = sweep_data meas_cfs = [] idxs = [] delays = [] for m in range(len(f0s)): fr, s21, errors = sweep_data.select_by_freq(f0s[m]) thiscf = f0s[m] * source_on_freq_scale res = fit_best_resonator( fr[1:-1], s21[1:-1], errors=errors[1:-1]) # Resonator(fr,s21,errors=errors)
source_modulate() print "*" * 40 print "Enter mmw attenuator values as a tuple i.e.: 6.5,6.5 or type exit to stop collecting data" mmw_atten_str = raw_input("mmw attenuator values: ") if mmw_atten_str == 'exit': source_off() break else: mmw_atten_turns = eval(mmw_atten_str) # Do a coarse sweep with the source on mmw_source_modulation_freq = source_on() print "setting attenuator to", attenlist[0] ri.set_dac_attenuator(attenlist[0]) f0binned = coarse_frequency_resolution * np.round(f0s / coarse_frequency_resolution) measured_freqs = sweeps.prepare_sweep(ri, f0binned, coarse_offset_freqs, nsamp=coarse_n_samples) print "loaded waveforms in", (time.time() - start), "seconds" sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=f0s.size, reads_per_step=2) orig_sweep_data = sweep_data meas_cfs = [] idxs = [] delays = [] for m in range(len(f0s)): fr, s21, errors = sweep_data.select_by_freq(f0s[m]) thiscf = f0s[m] * source_on_freq_scale res = fit_best_resonator(fr[1:-1], s21[1:-1], errors=errors[1:-1]) # Resonator(fr,s21,errors=errors) delay = res.delay delays.append(delay) s21 = s21 * np.exp(2j * np.pi * res.delay * fr) res = fit_best_resonator(fr, s21, errors=errors) fmin = fr[np.abs(s21).argmin()]