IR_Fitting_calib.py 1.38 KB
import h5py
import matplotlib.pyplot as plt
import numpy as np
import sys
import re
import ast
from scipy.optimize import curve_fit
import os
from scipy import interpolate

# Solo levanto algunos experimentos
Calib_Files = """000004016-UV_LaserPowerCalibration_BS_rpi.h5""" 


#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20211004_fiteodecalibracion2\Data

def SeeKeys(files):
    for i, fname in enumerate(files.split()):
        data = h5py.File(fname, 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
        print(fname)
        print(list(data['datasets'].keys()))

#%%    

for i, fname in enumerate(Calib_Files.split()):
    print(SeeKeys(Calib_Files))
    print(i)
    print(fname)
    data = h5py.File(fname, 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
    print(list(data['datasets'].keys()))
    amps = np.array(data['datasets']['Experiment_amps_UV'])
    freqs = np.array(data['datasets']['Experiment_freqs_UV'])


#%%
def Poly(f, a3, a2, a1, a, b, c, d):
    return a3*(f**6) + a2*(f**5) + a1*(f**4) + a*(f**3) + b*(f**2) + c*f + d

popt, pcov = curve_fit(Poly, freqs, amps)

freqslong = np.arange(min(freqs), max(freqs), (freqs[1]-freqs[0])*0.01)

plt.figure()
plt.plot(freqs, amps, 'o')
plt.plot(freqslong, Poly(freqslong, *popt))

plt.figure()
plt.plot(freqs, np.array(amps)-Poly(freqs, *popt), 'o')