offsets,
                                              nsamp=nsamp)
        print "loaded waveforms in", (time.time() - start), "seconds"

        sweep_data = sweeps.do_prepared_sweep(ri,
                                              nchan_per_step=atonce,
                                              reads_per_step=1)
        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]
            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()]
            print "s21 fmin", fmin, "original guess", thiscf, "this fit", res.f_0, "delay", delay, "resid delay", res.delay
            if use_fmin:
                meas_cfs.append(fmin)
            else:
                if abs(res.f_0 - thiscf) > 0.1:
                    if abs(fmin - thiscf) > 0.1:
                        print "using original guess"
                        meas_cfs.append(thiscf)
                    else:
    print "setting attenuator to",attenlist[0]
    ri.set_dac_attenuator(attenlist[0])
    f0binned = np.round(f0s*nsamp/512.0)*512.0/nsamp
    f0binned = f0binned*source_on_freq_scale
    measured_freqs = sweeps.prepare_sweep(ri,f0binned,offsets,nsamp=nsamp)
    print "loaded waveforms in", (time.time()-start),"seconds"

    sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=atonce, reads_per_step=1)
    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()]
        print "s21 fmin", fmin, "original guess",thiscf,"this fit", res.f_0, "delay",delay,"resid delay",res.delay
        if use_fmin:
            meas_cfs.append(fmin)
        else:
            if abs(res.f_0 - thiscf) > max_fit_error:
                if abs(fmin - thiscf) > max_fit_error:
                    print "using original guess"
                    meas_cfs.append(thiscf)
                else:
                    print "using fmin"
            if source_state == 'on':
                mmw_source_modulation_freq = source_on()
            else:
                mmw_source_modulation_freq = source_off()

            df.log_hw_state(ri)
            sweep_data = sweeps.do_prepared_sweep(ri, nchan_per_step=f0s.size, 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])
                thiscf = f0s[m]
                s21 = s21 * np.exp(2j * np.pi * delay * fr)
                res = fit_best_resonator(fr, s21, errors=errors)  # Resonator(fr,s21,errors=errors)
                fmin = fr[np.abs(s21).argmin()]
                print "s21 fmin", fmin, "original guess", thiscf, "this fit", res.f_0
                if 'a' in res.result.params or use_fmin: #k != 0 or use_fmin:
                    print "using fmin"
                    meas_cfs.append(fmin)
                else:
                    if abs(res.f_0 - thiscf) > max_fit_error:
                        if abs(fmin - thiscf) > max_fit_error:
                            print "using original guess"
                            meas_cfs.append(thiscf)
                        else:
                            print "using fmin"
                            meas_cfs.append(fmin)
                    else:
                        print "using this fit"
            else:
                mmw_source_modulation_freq = source_off()

            df.log_hw_state(ri)
            sweep_data = sweeps.do_prepared_sweep(ri,
                                                  nchan_per_step=f0s.size,
                                                  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])
                thiscf = f0s[m]
                s21 = s21 * np.exp(2j * np.pi * delay * fr)
                res = fit_best_resonator(
                    fr, s21, errors=errors)  # Resonator(fr,s21,errors=errors)
                fmin = fr[np.abs(s21).argmin()]
                print "s21 fmin", fmin, "original guess", thiscf, "this fit", res.f_0
                if 'a' in res.result.params or use_fmin:  #k != 0 or use_fmin:
                    print "using fmin"
                    meas_cfs.append(fmin)
                else:
                    if abs(res.f_0 - thiscf) > max_fit_error:
                        if abs(fmin - thiscf) > max_fit_error:
                            print "using original guess"
                            meas_cfs.append(thiscf)
                        else:
                            print "using fmin"
                            meas_cfs.append(fmin)
                    else:
                        print "using this fit"