Newer
Older
Nicolas Nunez Barreto
committed
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
# Solo levanto algunos experimentos
ALL_FILES_SP = """000001505-SingleLine.h5
Nicolas Nunez Barreto
committed
000001506-SingleLine.h5
000001507-SingleLine.h5
000001508-SingleLine.h5
000001509-SingleLine.h5
000001510-SingleLine.h5
000001511-SingleLine.h5
000001512-SingleLine.h5
000001513-SingleLine.h5
000001514-SingleLine.h5""" #este tiene amplitud 0.08 que es muy poquito
Nicolas Nunez Barreto
committed
Nicolas Nunez Barreto
committed
BINW = 20e-9
T0 = 1.15e-6
def expo(T, tau, N0, C):
global T0
return N0*np.exp(-(T-T0)/tau) + C
def pow_from_amp(amp):
"""Paso de amplitud urukul a potencia medida por Nico"""
# Forma altamente ineficiente de hacer esto, pero me salio asi
amplitudes_UV = np.flip(np.array([0.08, 0.10, 0.12, 0.14, 0.16, 0.18, 0.20, 0.22, 0.24, 0.26, 0.28, 0.30]))
Nicolas Nunez Barreto
committed
assert amp in amplitudes_UV
potencias_UV = np.flip(np.array([4, 10, 19, 32, 49, 71, 96, 125, 155, 183, 208, 229]))
Nicolas Nunez Barreto
committed
return potencias_UV[np.where(amplitudes_UV == amp)][0]
Nicolas Nunez Barreto
committed
plt.plot(amplitudes_UV, potencias_UV, 'ko-', lw=0.2)
plt.xlabel("Amplitud Urukul")
plt.ylabel("Potencia /uW")
plt.grid()
Nicolas Nunez Barreto
committed
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#%%
## Mostrar corte de los histos:
# fig, ax = plt.subplots()
# ax.axvline(T0, color='k')
os.chdir('/home/oem/Documentos/Doctorado/Artiq/Repositorio/artiq_experiments/artiq_master/results/2021-07-02/17')
fig0, [ax0, ax1_a] = plt.subplots(1, 2)
ax1_b = ax1_a.twinx()
allamps = np.array([])
allpows = np.array([])
alltaus = np.array([])
allN0 = np.array([])
for i, fname in enumerate(ALL_FILES_SP.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.
laser_UV_amp = data['datasets']['laser_UV_amp']
laser_UV_freq = data['datasets']['laser_UV_freq']
#print(laser_UV)
counts = np.array(data['datasets']['counts'])
bines = np.arange(counts.min(), counts.max()+BINW, BINW)
## Mostrar corte de los histos
# ax.hist(counts, bines[bines<3e-6], histtype='step', align='mid', color=f"C{i}")
heigs, binsf = np.histogram(counts, bines[bines>T0])
ax0.step([t*1e6 for t in binsf[:-1]], heigs, label=f"AMP: {laser_UV_amp}", where='mid',
Nicolas Nunez Barreto
committed
color=f"C{i}", lw=0.5, alpha=0.4)
popt, pcov = curve_fit(expo, binsf[:-1], heigs, p0=(2e-6, 400, 300))
print(popt) # tau, N0, C
ax0.plot([t*1e6 for t in binsf], expo(binsf, *popt), label=f"tau: {popt[0]}",
Nicolas Nunez Barreto
committed
color=f"C{i}", ls='-', lw=1, zorder=99)
allamps = np.append(allamps, laser_UV_amp)
laser_pow = pow_from_amp(laser_UV_amp)
allpows = np.append(allpows, laser_pow)
alltaus = np.append(alltaus, popt[0])
allN0 = np.append(allN0, popt[1])
ax1_a.plot(laser_pow , 1e6*popt[0], 'o', color=f"C{i}", ms=5, )
Nicolas Nunez Barreto
committed
ax1_b.plot(laser_pow, popt[1], '^', color=f"C{i}", ms=7, )
ax1_a.plot(allpows, [t*1e6 for t in alltaus], 'k-', lw=0.2, zorder=0)
Nicolas Nunez Barreto
committed
ax1_b.plot(allpows, allN0, 'k-', lw=0.2, zorder=0)
# plt.annotate(f"bin: {BINW}", (0,5e-5, 700), fontsize=14)
Nicolas Nunez Barreto
committed
ax0.set_ylabel("Cuentas")
ax1_a.set_xlabel("Potencia [uW]")
ax1_a.set_ylabel("Tau (circulo) (us)")
Nicolas Nunez Barreto
committed
ax1_b.set_ylabel("Alturas (triang)")
ax1_a.grid(alpha=0.3)
# plt.show()
plt.figure()
plt.plot(allpows, allN0/alltaus, 'ko-', lw=0.2)
plt.grid(alpha=0.3)
plt.xlabel("Potencia [uW]")
plt.ylabel("Alturas/Tau")
plt.show()