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])
Esempio n. 3
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
    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()]