Commit 277b70c2 authored by Nicolas Nunez Barreto's avatar Nicolas Nunez Barreto

agrego archivos de analisis

parent 821479c7
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 = """000002231-LaserPowerCalibration.h5"""
Meas_Files = """000002239-LaserPowerCalibration.h5
000002241-LaserPowerCalibration.h5"""
Test_Files = """000002231-LaserPowerCalibration.h5
000002232-LaserPowerCalibration.h5
000002233-LaserPowerCalibration.h5
000002237-LaserPowerCalibration.h5"""
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20210716_MeasuredCalibrationsTests\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
#%%
Calibration_amps_vec = []
Calibration_freqs_vec = []
Experiment_amps_vec = []
Experiment_freqs_vec = []
PD_UV_counts_vec = []
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()))
Calibration_amps_vec.append(np.array(data['datasets']['Calibration_amps']))
Calibration_freqs_vec.append(np.array(data['datasets']['Calibration_freqs']))
Experiment_amps_vec.append(np.array(data['datasets']['Experiment_amps']))
Experiment_freqs_vec.append(np.array(data['datasets']['Experiment_freqs']))
PD_UV_counts_vec.append(np.array(data['datasets']['PD_UV_counts']))
Final_Experiment_amps_vec = []
Final_Experiment_freqs_vec = []
Measured_PD_UV_counts_vec = []
for i, fname in enumerate(Meas_Files.split()):
print(i)
print(fname)
data = h5py.File(fname, 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
print(list(data['datasets'].keys()))
Final_Experiment_amps_vec.append(np.array(data['datasets']['Experiment_amps']))
Final_Experiment_freqs_vec.append(np.array(data['datasets']['Experiment_freqs']))
Measured_PD_UV_counts_vec.append(np.array(data['datasets']['Measured_PD_UV_counts']))
#%%
i = 0
Calibration_amps= Calibration_amps_vec[i]
Calibration_freqs = Calibration_freqs_vec[i]
PD_UV_counts = PD_UV_counts_vec[i]
Measured_PD_UV_counts = Measured_PD_UV_counts_vec[i]
PDvalue = 0.04
Experiment_frequencies = Final_Experiment_freqs_vec[0]
Test_Experiment_frequencies = Calibration_freqs[0:len(Calibration_amps)]
#Test_Experiment_frequencies = np.arange(0.9e8, 1.3e8, 0.05e8)
calibamps, expectedfluos = Test_Calibrate_amplitudes(PD_UV_counts, Calibration_freqs, Calibration_amps, PDvalue, Experiment_frequencies)
plt.figure()
plt.plot(Experiment_frequencies, calibamps, 'ro', label='amps')
plt.plot(Experiment_frequencies, expectedfluos, 'gx', label='Fluos')
#plt.plot(Experiment_frequencies, Measured_PD_UV_counts, 'b.', label='Measures')
plt.axhline(PDvalue)
plt.legend()
#%%
len_amps = len(Calibration_amps)
len_freqs = int(len(Calibration_freqs)/len_amps)
freqs = Calibration_freqs[0:len_freqs]
n = len(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)
plt.figure()
for i in range(len(PD_split)):
plt.plot([f*1e-6 for f in freqs], np.array(PD_split[i])[0], 'o')
plt.xlabel('Frecuencia (MHz)')
plt.ylabel('Voltaje fotodiodo (V)')
plt.title('Láser UV')
i = 10
plt.figure()
plt.plot(np.array(PD_T[i][0])[0], Calibration_amps, 'o', label=f"Freq: {round(freqs[i]*1e-6, 3)} MHz")
plt.ylabel('Amplitud Artiq')
plt.xlabel("Voltaje fotodiodo (V)")
plt.legend()
#%%
def RemoveZeros(calib, freqs):
i, j = 0, 1
new_calib = calib
while i < len(calib):
if new_calib[0] == 0:
new_calib = new_calib[1:]
i = i + 1
else:
init_len = len(new_calib)
final_calib = new_calib
while j < init_len:
if final_calib[-1] == 0:
final_calib = final_calib[:-1]
j = j + 1
else:
if j == 1:
return (i, j), freqs[i:], final_calib
else:
return (i, j), freqs[i:-j+1], final_calib
lista = [0, 1, 0, 1, 0, 0, 1, 1, 0, 0]
freqs = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
tupla, new_freqs, calib = RemoveZeros(lista, freqs)
print(new_freqs)
print(calib)
#%%
i = 15
interpolations = []
interpolations_g = []
for i in range(len(PD_T)):
PD = np.array(PD_T[i][0])[0]
amps = Calibration_amps
f = interpolate.interp1d(PD, amps, kind='quadratic')
g = interpolate.interp1d(amps, PD, kind='quadratic')
xs = np.arange(min(PD), max(PD), 1e-4)
interpolations.append(f)
interpolations_g.append(g)
Calibration_PD_value = 0.2
Calibs = []
for fi in interpolations:
try:
Calibs.append(float(fi(Calibration_PD_value)))
except:
Calibs.append(0)
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot([f*1e-6 for f in freqs], Calibs, 'o', label='Amplitudes a setear')
EffectivePD = []
for i in range(len(Calibs)):
try:
EffectivePD.append(interpolations_g[i](Calibs[i]))
except:
EffectivePD.append(0)
ax2.plot([f*1e-6 for f in freqs], EffectivePD, 'ro', label='Potencia')
ax1.set_xlabel('Frecuencia (MHz)')
ax1.set_ylabel('Amplitudes')
ax2.set_ylabel('Potencia PD (V)')
fig.legend()
h = interpolate.interp1d(freqs, Calibs, kind='quadratic')
xs2 = np.arange(min(freqs), max(freqs), 1e5)
plt.figure()
plt.plot(freqs, Calibs, 'o')
plt.plot(xs2, h(xs2))
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')
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_IR = """000002843-IR_Saturation.h5
000002844-IR_Saturation.h5
000002845-IR_Saturation.h5
000002846-IR_Saturation.h5
000002847-IR_Saturation.h5
000002848-IR_Saturation.h5
000002849-IR_Saturation.h5
000002850-IR_Saturation.h5
000002851-IR_Saturation.h5
000002852-IR_Saturation.h5
000002853-IR_Saturation.h5
000002854-IR_Saturation.h5
000002855-IR_Saturation.h5
000002856-IR_Saturation.h5
000002857-IR_Saturation.h5
000002858-IR_Saturation.h5
000002859-IR_Saturation.h5
000002860-IR_Saturation.h5
000002861-IR_Saturation.h5
000002862-IR_Saturation.h5"""
Calib_Files_UV = """000002865-UV_Saturation.h5
000002866-UV_Saturation.h5
000002867-UV_Saturation.h5
000002868-UV_Saturation.h5
000002869-UV_Saturation.h5
000002870-UV_Saturation.h5
000002871-UV_Saturation.h5
000002872-UV_Saturation.h5
000002873-UV_Saturation.h5
000002874-UV_Saturation.h5
000002875-UV_Saturation.h5"""
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20210824_SaturacionTransiciones\Data_UV
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20210824_SaturacionTransiciones\Data_IR
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 ConvertIRampstoPower(amp):
amps = [0, 0.02, 0.04, 0.06, 0.08, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.22, 0.24, 0.26, 0.28, 0.30, 0.32, 0.34, 0.35]
powers = [0, 0.08, 1.7, 8.4, 25.5, 58.5, 114, 194, 297, 416, 550, 705, 867, 1016, 1148, 1285, 1385, 1463, 1501]
f = interpolate.interp1d(amps, powers)
return f(amp)
def SaturationCurve(p, F0, a, det):
return 0.5*F0*a*p*(1/(1+a*p+4*((det**2)/(g23**2))))
def SaturationCurve_detzero(p, F0, a):
return 0.5*F0*a*p*(1/(1+a*p))
#%%
IR_powers_vec = []
IR_fluorescence_vec = []
for i, fname in enumerate(Calib_Files_IR.split()):
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_IR_sat'])
IR_fluorescence_vec.append(meas)
IR_meas_amps = np.array(data['datasets']['IR_amps'])
IR_meas_powers = [ConvertIRampstoPower(amp) for amp in IR_meas_amps]
IR_powers_vec.append(IR_meas_powers)
#%%
#Calculo el coeficiente de proporcionalidad entre S y Pot
j = 8
def SaturationCurve_detzero(p, F0, a):
return 0.5* F0*a*p*(1/(1+a*p))
IR_powers_vec_W = [p*1e-6 for p in IR_powers_vec[j]]
popt, pcov = curve_fit(SaturationCurve_detzero, IR_powers_vec_W, IR_fluorescence_vec[j], p0=(4e3, 5e4))
plt.figure()
plt.plot([popt[1]*p for p in IR_powers_vec_W], IR_fluorescence_vec[j], 'o')
plt.plot([popt[1]*p for p in IR_powers_vec_W], [SaturationCurve_detzero(p, popt[0], popt[1]) for p in IR_powers_vec_W])
plt.xlabel('Sat Parameter DP')
plt.ylabel('counts')
plt.grid()
print(popt)
factor = popt[1]
w_866 = 2*np.pi*346e12
w_397 = 2*np.pi*755e12
c=3e8
hbar = 1.05e-34
#g21, g23 = 2*np.pi*21.58e6, 2*np.pi*1.35e6
g23 = 2*np.pi*23.05*1e6
radius = np.sqrt(6*c*c*1/(hbar*(w_866**3)*g23*factor))
print(f'Diametro: {2*radius*1e6} um')
plt.figure()
plt.plot([p*1e6 for p in IR_powers_vec_W], [popt[1]*p for p in IR_powers_vec_W], 'o')
plt.xlim(-10, 100)
plt.ylim(-1, 5)
#plt.xlabel()
#%%
#Calculo el coeficiente de proporcionalidad entre S y Pot
j = 16
w_866 = 2*np.pi*346e12
w_397 = 2*np.pi*755e12
c=3e8
hbar = 1.05e-34
g21, g23 = 2*np.pi*21.58e6, 2*np.pi*1.35e6
g23 = 2*np.pi*23.05*1e6
def SaturationCurve(p, F0, det):
return 0.5*F0*factor*p*(1/(1+factor*p+4*((det**2)/(g23**2))))
IR_powers_vec_W = [p*1e-6 for p in IR_powers_vec[j]]
popt, pcov = curve_fit(SaturationCurve, IR_powers_vec_W, IR_fluorescence_vec[j], p0=(4e3, 2e7))
plt.figure()
plt.plot([factor*p for p in IR_powers_vec_W], IR_fluorescence_vec[j], 'o', label=f'Det: {round(1e-6*popt[1]/(2*np.pi), 1)} MHz')
plt.plot([factor*p for p in IR_powers_vec_W], [SaturationCurve(p, popt[0], popt[1]) for p in IR_powers_vec_W])
plt.xlabel('Sat Parameter DP')
plt.ylabel('counts')
plt.legend()
plt.grid()
#factor = popt[1]
print(f'Detuning: {1e-6*popt[1]/(2*np.pi)} MHz')
#radius = np.sqrt(12*c*c/(hbar*(w_866**3)*g23*factor))
#print(f'Diametro: {2*radius*1e6} um')
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Aug 25 10:32:58 2021
@author: oem
"""
import numpy as np
import matplotlib.pyplot as plt
def SaturationCurve(S, gamma, det):
return 0.5*S*(1/(1+S+4*((det**2)/(gamma**2))))
gamma = 2*np.pi*1e6*22
det = 2*np.pi*1e6*10
Svec = np.arange(0, 5, 0.01)
SatCurve = np.array([SaturationCurve(s, gamma, det) for s in Svec])
plt.plot(Svec, SatCurve)
\ No newline at end of file
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
ALL_FILES = """000003130-IR_Scan.h5"""
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()))
print(SeeKeys(ALL_FILES))
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\artiq_master\results\2021-07-14\16
for i, fname in enumerate(ALL_FILES.split()):
print(i)
print(fname)
data = h5py.File(fname, 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
# Aca hago algo repugnante para poder levantar los strings que dejamos
# que además tenian un error de tipeo al final. Esto no deberá ser necesario
# cuando se solucione el error este del guardado.
freqs = np.array(data['datasets']['IR_frequencies'])
measurements = np.array(data['datasets']['measurements'])
y = np.reshape(measurements, (len(freqs),-1)).sum(axis=1)
plt.figure()
plt.plot([f*1e-6 for f in freqs], y, 'o-')
plt.xlabel('Frecuencia AOM (MHz)')
plt.ylabel('counts')
plt.grid()
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
ALL_FILES = """000003316-LaserPowerCalibration.h5"""
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()))
print(SeeKeys(ALL_FILES))
#carpeta pc nico labo escritorio:
#C:\Users\Usuario\Documents\artiq\artiq_experiments\artiq_master\results\2021-07-14\16
for i, fname in enumerate(ALL_FILES.split()):
print(i)
print(fname)
data = h5py.File(fname, 'r') # Leo el h5: Recordar que nuestros datos estan en 'datasets'
# Aca hago algo repugnante para poder levantar los strings que dejamos
# que además tenian un error de tipeo al final. Esto no deberá ser necesario
# cuando se solucione el error este del guardado.
Calibration_amps = np.array(data['datasets']['Test_Experiment_amps'])
Calibration_freqs = np.array(data['datasets']['Test_Experiment_freqs'])
Measurements = np.array(data['datasets']['Test_Measured_PD_IR_counts'])
#%%
plt.figure()
plt.hist(Measurements)
plt.figure()
plt.plot(Calibration_freqs, Calibration_amps, 'o')
plt.figure()
plt.plot(Calibration_freqs, Measurements, 'o')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment