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 = """000002552-UV_Scan.h5""" #carpeta pc nico labo escritorio: #C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20210723_UVCalibrationCheck\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())) def GetXToInterpolate(vec): return np.arange(min(vec), max(vec), 1e-2*np.abs((vec[1]-vec[0]))) def Test_Calibrate_amplitudes(PD_UV_counts, Calibration_freqs, Calibration_amps, Calibration_PD_Value, Experiment_frequencies): Interpolation_functions = [] Interpolation_functions_2 = [] Calibration_freqs = Calibration_freqs[0:int(len(PD_UV_counts)/len(Calibration_amps))] n = len(Calibration_freqs) PD_split = np.matrix([PD_UV_counts[i * n:(i + 1) * n] for i in range((len(PD_UV_counts) + n - 1) // n )]) PD_T = np.transpose(PD_split) amps = Calibration_amps for i in range(len(PD_T)): #PD_values = np.array(PD_T[i][0])[0] PD_values = np.array(PD_T[i])[0] f = interpolate.interp1d(PD_values, amps, kind='cubic') g = interpolate.interp1d(amps, PD_values, kind='cubic') Interpolation_functions.append(f) Interpolation_functions_2.append(g) Calibrated_Amplitudes = [] for fi in Interpolation_functions: try: Calibrated_Amplitudes.append(float(fi(Calibration_PD_Value))) except: Calibrated_Amplitudes.append(0) print('no, rey') Function_Calibs_vs_freq = interpolate.interp1d(Calibration_freqs, Calibrated_Amplitudes, kind='quadratic') Experiment_amps = [] for freq in Experiment_frequencies: calibamp = Function_Calibs_vs_freq(freq) Experiment_amps.append(calibamp) fs = GetXToInterpolate(Calibration_freqs) plt.figure() plt.plot(Calibration_freqs, Calibrated_Amplitudes, 'o') plt.plot(fs, Function_Calibs_vs_freq(fs)) ExpectedFluo = [] i = 0 while i < len(Experiment_amps): if Experiment_amps[i] == 0: ExpectedFluo.append(0) else: ExpectedFluo.append(Interpolation_functions_2[i](Experiment_amps[i])) i = i + 1 return Experiment_amps, ExpectedFluo #%% 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())) meas = np.array(data['datasets']['measurements']) freqs = np.array(data['datasets']['UV_Frequencies']) meas_eff = np.zeros(len(freqs)) for i in range(len(meas)): meas_eff[i%len(freqs)] = meas_eff[i%len(freqs)] + meas[i] plt.plot(freqs, meas_eff, 'o')