def GetFr(sweepdata_folder, sweepdata_file, IQCalibrationfile, IQReffolder, IQReffilename):
    ### Read IQ Sweep data
    freq, I, Q = reader.ReadSweep(sweepdata_folder, sweepdata_file)
    ### Get IQ Mixer calibration data for sweep data frequency
    paras = IQ.IQ_GetPara(IQCalibrationfile, int(round(freq[len(freq)/2]/1e6)))
    ### Calibrate IQ Sweep data
    I_mixercalibrated, Q_mixercalibrated = IQ.IQ_CorrtBarends(paras,I,Q)

    ### Normalize calibrated IQ Sweep data to IQ reference data
    ### Get complex IQ
    IQ_normalized = IQ.IQ_Normalize_Sweep(freq, I_mixercalibrated, Q_mixercalibrated, IQReffolder, IQReffilename)
    x_c, x_c_err, y_c, y_c_err, radius, radius_err, circle_fit_report, theta0, theta0_err, fr, fr_err, Qr, Qr_err, Qc, Qc_err, Qi, Qi_err, fit_report_phase = Fit_IQ_Sweep(freq, IQ_normalized)
    return int(round(fr))
Exemple #2
0
noiselist_file = 'noiselist'
noiselist = []
with open(data_folder + noiselist_file + '.txt', 'r') as f:
    for line in f:
        noiselist.append(line.replace("\n", ""))

num = len(sweeplist)
plt.figure(figsize=(18.5, 10.5))
for n in range(0, num):
    ### Get file name and resonance frequency
    sweepdata_file = sweeplist[n]
    noisedata_file = noiselist[n]
    resfreq = float(resfreqlist[n])

    #   Read data
    sweepfreq, sweepI, sweepQ = reader.ReadSweep(data_folder, sweepdata_file)
    fsample, number, noiseI, noiseQ = reader.ReadNoise(data_folder,
                                                       noisedata_file)
    meastime = len(number) / float(fsample)

    #   Get IQ Mixer calibration parameter
    resfreqinMHz = int(round(sweepfreq[len(sweepfreq) / 2] / 1e6))
    paras = IQ.IQ_GetPara(IQCalibrationfile, resfreqinMHz)

    #   Calibrate IQ data
    I_mixercalibrated, Q_mixercalibrated = IQ.IQ_CorrtBarends(
        paras, sweepI, sweepQ)
    noiseI_mixercalibrated, noiseQ_mixercalibrated = IQ.IQ_CorrtBarends(
        paras, noiseI, noiseQ)

    #   Normalize calibrated IQ Sweep data to IQ reference data
Exemple #3
0
folder = "../../../MeasurementResult/"
filename = 'Sweep_5000MHz_IQMixerCalibrated'
### Get IQ measurement data
data = []
with open(folder + filename + '.csv', 'r') as f:
    for line in f:
        data.append(map(str, line.split(',')))

frequency = np.asarray([int(data[i][0]) for i in range(0, len(data))])
I = np.asarray([float(data[i][1]) for i in range(0, len(data))])
Q = np.asarray(
    [float(data[i][2].replace("\n", "")) for i in range(0, len(data))])

folder_sweep = "../../../MeasurementResult/"
filename_sweep = 'Sweep_3868MHz'
freq, Iraw, Qraw = reader.ReadSweep(folder_sweep, filename_sweep)

interpolate_start = int(freq[0] / 1e6) - 2000 - 5
interpolate_end = int(freq[len(freq) - 1] / 1e6) - 2000 + 5

fI = interpolate.interp1d(frequency[interpolate_start:interpolate_end],
                          I[interpolate_start:interpolate_end],
                          kind='cubic')
fQ = interpolate.interp1d(frequency[interpolate_start:interpolate_end],
                          Q[interpolate_start:interpolate_end],
                          kind='cubic')

IQnormalized = (Iraw + 1j * Qraw) / (fI(freq / 1e6) + 1j * fQ(freq / 1e6))

#plt.plot(frequency[interpolate_start:interpolate_end], I[interpolate_start:interpolate_end], '.')
#plt.plot(freq/1e6, fI(freq/1e6), '.')
import numpy as np
import csv
import matplotlib.pyplot as plt
import IQMixer.IQCalib as IQ
import Analyse_Fit_SingleKID as FitSingle
import Analyse_PSD as PSD
import FileReader as reader

IQCorrectionfile = 'IQMixer_Calib/20160803_1M_BOX/EllipseFit_0dBm_2000MHz_8000MHz.csv'
sweepdata_folder = "../../../MeasurementResult/20160814_Al_Noguchi/"
sweepdata_file = 'Sweep_4579MHz'
freq, I, Q = reader.ReadSweep(sweepdata_folder, sweepdata_file)
paras = IQ.IQ_GetPara(IQCorrectionfile, int(round(freq[len(freq) / 2] / 1e6)))
I_mixercalibrated, Q_mixercalibrated = IQ.IQ_CorrtBarends(paras, I, Q)

####   CUT   ####
bandwidth = 1e6
freq, real, imag = reader.CutSweep(bandwidth, freq, I_mixercalibrated,
                                   Q_mixercalibrated)
comp = np.asarray([real[i] + imag[i] * 1j for i in range(0, len(real))])

### Fit ###
tau = 45e-9
a, a_err, alpha, alpha_err, tau, tau_err, phi0, phi0_err, fr, fr_err, Qr, Qr_err, Qc, Qc_err, Qi = FitSingle.Fit_7parameterIQ1(
    freq, comp, tau)
fitIQ1 = a * np.exp(1j * alpha) * np.exp(
    -2 * np.pi * 1j * freq * tau) * (1 - (Qr / Qc * np.exp(1j * phi0)) /
                                     (1 + 2 * 1j * Qr * (freq - fr) / fr))
comptilt = comp * np.exp(2 * np.pi * 1j * freq * tau)
plt.axis('equal')
plt.plot(I_mixercalibrated, Q_mixercalibrated, 'b')