Commit ebcc900f authored by Marcelo Luda's avatar Marcelo Luda

more lolo

parent 2adbcc8e
......@@ -105,7 +105,7 @@ DATOS_COMPLETOS.append([DATAFILES_gauss_compOVEN,'Configuracion gaussiana coline
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#%% Configuracion +2/+2 colineales, ion al costado del haz barriendo dcA
#%% Configuracion +2/+2 colineales
FACTOR_ESCALA = 10
......@@ -142,7 +142,8 @@ for ii,DATO in enumerate(DATOS_COMPLETOS):
rango_dr1 = np.array([435,437])
rango_dr2 = np.array([443,446])
picos = {0:[], 1:[]}
picos = {0:[], 1:[]}
picos_err = {0:[], 1:[]}
dcA_vec = []
......@@ -163,7 +164,7 @@ for ii,DATO in enumerate(DATOS_COMPLETOS):
frecuencia,cuentas = clean_jumps_below(frecuencia,cuentas, 200)
cuentas_suave = savgol(cuentas,13,2)
cuentas_suave = savgol(cuentas,13,4)
# cuentas_suave = cuentas
......@@ -172,7 +173,7 @@ for ii,DATO in enumerate(DATOS_COMPLETOS):
# I_base_fit += np.arange(len(frecuencia))[(frecuencia>=500)&(frecuencia<=442)].tolist()
I_base_fit = np.array(I_base_fit)
mm = np.polyfit(frecuencia[I_base_fit], cuentas[I_base_fit],1)
mm,cov = np.polyfit(frecuencia[I_base_fit], cuentas[I_base_fit],1, cov=True)
......@@ -194,8 +195,12 @@ for ii,DATO in enumerate(DATOS_COMPLETOS):
ax.plot(frecuencia[idx],(cuentas_suave[idx]/base[idx]-1)/FACTOR_ESCALA+dcA, 'o', ms=6, color=ax.get_lines()[-1].get_color(),zorder=10)
Base = np.polyval(mm,rango.mean())
Base_err = np.sqrt(np.sum(np.diag(cov)*np.array([frecuencia[idx]**2,1])))
val_pico = cuentas_suave[I].min()
picos[jj].append( (Base-val_pico)/Base )
picos[jj].append( (Base-val_pico)/Base )
# picos_err[jj].append( np.sqrt(cuentas[idx])/Base )
picos_err[jj].append( np.sqrt(cuentas[idx])/Base + cuentas[idx]*np.sqrt(cuentas[idx])/Base**2 )
print( (Base-val_pico)/Base , end="\t")
print('')
# break
......@@ -219,13 +224,15 @@ for ii,DATO in enumerate(DATOS_COMPLETOS):
ax = axx[1]
ax.plot( picos[0] , dcA_vec , '.-' , color='gray')
for pico,dcA_val in zip(picos[0],dcA_vec):
ax.plot( pico, dcA_val, '.' ,ms=7)
for pico,pico_err,dcA_val in zip(picos[0],picos_err[0],dcA_vec):
# ax.plot( pico, dcA_val, '.' ,ms=7)
ax.errorbar( pico, dcA_val, xerr=pico_err, fmt='.' ,ms=7, capsize=4)
ax.set_prop_cycle(None)
ax.plot( picos[1] , dcA_vec , 'o--' , color='gray')
for pico,dcA_val in zip(picos[1],dcA_vec):
ax.plot( pico, dcA_val, 'o' ,ms=7)
for pico,pico_err,dcA_val in zip(picos[1],picos_err[1],dcA_vec):
# ax.plot( pico, dcA_val, 'o' ,ms=7)
ax.errorbar( pico, dcA_val, xerr=pico_err, fmt='.' ,ms=7, capsize=4)
profundidad_mean = [ np.array(np.array(picos[0])[dcA_vec==val].tolist()+np.array(picos[1])[dcA_vec==val].tolist()).mean() for val in np.unique(dcA_vec) ]
......@@ -255,3 +262,175 @@ for ii,DATO in enumerate(DATOS_COMPLETOS):
# break
#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#%% CVersion AREA
FACTOR_ESCALA = 10
for ii,DATO in enumerate(DATOS_COMPLETOS):
VECTOR_DE_DATOS, SUP_TITLE, FILENAME = DATO
# Grafico con subplots
fig,axx = plt.subplots(1,2,figsize=(12,8), constrained_layout=True , sharey=True )
fig.set_constrained_layout_pads(w_pad=1/72, h_pad=0, hspace=0, wspace=0)
rango_dr1 = np.array([435,437])
rango_dr2 = np.array([443,445])
I_base_fit = np.arange(0,50).tolist()+np.arange(230,280).tolist()+np.arange(450,459).tolist()
I_base_fit = np.array(I_base_fit)
ax = axx[0]
# plt.figure()
# ax = plt.gca()
NORMALIZADO = True
rango_dr1 = np.array([435,437])
rango_dr2 = np.array([443,446])
picos = {0:[], 1:[]}
picos_err = {0:[], 1:[]}
dcA_vec = []
for data in sorted([ h5py.File(DataFile, 'r') for DataFile in VECTOR_DE_DATOS ],key=lambda x: np.array(x['datasets']['initialvoltage_dcA']) ):
frecuencia = np.array(data['datasets']['IR1_Frequencies'])*2e-6
voltages = np.array(data['datasets']['scanning_voltages'])
for kk, dcA in enumerate( voltages ):
# cuentas = np.array(data['datasets']['data_array'])
cuentas = np.array(data['datasets']['data_array']).reshape(len(voltages),-1)[kk][0:len(frecuencia)]
amplitudes = np.array(data['datasets']['IR1_Amplitudes'])
# dcA = np.array(data['datasets']['initialvoltage_dcA'])
dcA_vec.append( dcA.tolist() )
frecuencia,cuentas = clean_jumps_below(frecuencia,cuentas, 200)
cuentas_suave = savgol(cuentas,13,4)
# cuentas_suave = cuentas
I_base_fit = np.arange(len(frecuencia))[:50].tolist()
I_base_fit += np.arange(len(frecuencia))[(frecuencia>=439)&(frecuencia<=442)].tolist()
# I_base_fit += np.arange(len(frecuencia))[(frecuencia>=500)&(frecuencia<=442)].tolist()
I_base_fit = np.array(I_base_fit)
mm,cov = np.polyfit(frecuencia[I_base_fit], cuentas[I_base_fit],1, cov=True)
base = np.polyval(mm,frecuencia)
CURVA = (cuentas/base-1)/FACTOR_ESCALA + dcA
CURVA_SUAVE = (cuentas_suave/base-1)/FACTOR_ESCALA+ dcA
ax.plot(frecuencia,CURVA , '.', alpha=0.1)
ax.plot(frecuencia,CURVA_SUAVE, '-', alpha=0.9, color=ax.get_lines()[-1].get_color())
for jj,rango in enumerate([rango_dr1,rango_dr2]):
I = np.arange(len(frecuencia))[(frecuencia>rango.min())&(frecuencia<rango.max())]
idx = cuentas_suave[I].argmin() + I[0]
ax.plot(frecuencia[idx],(cuentas_suave[idx]/base[idx]-1)/FACTOR_ESCALA+dcA, 'o', ms=6, color=ax.get_lines()[-1].get_color(),zorder=10)
Base = np.polyval(mm,rango.mean())
Base_err = np.sqrt(np.sum(np.diag(cov)*np.array([frecuencia[idx]**2,1])))
val_pico = cuentas_suave[I].min()
picos[jj].append( (Base-val_pico)/Base )
# picos_err[jj].append( np.sqrt(cuentas[idx])/Base )
picos_err[jj].append( np.sqrt(cuentas[idx])/Base + cuentas[idx]*np.sqrt(cuentas[idx])/Base**2 )
print( (Base-val_pico)/Base , end="\t")
print('')
# break
# break
# ax.plot(frecuencia,cuentas , label=dcA)
# plt.pause(2)
# plt.cla()
# ax.plot(cuentas , label=dcA)
# plt.plot(frecuencia,amplitudes )
# ax.legend()
ax.axvline(rango_dr1.mean(), color='gray', zorder=-10, lw=3 , alpha=0.5)
ax.axvline(rango_dr2.mean(), color='gray', zorder=-10, lw=3, ls='--', alpha=0.5)
ax = axx[1]
dcA_vec = np.array(dcA_vec)
picos[0] = np.array(picos[0])
picos[1] = np.array(picos[1])
picos_err[0] = np.array(picos_err[0])
picos_err[1] = np.array(picos_err[1])
ax.fill_betweenx( dcA_vec, picos[0]+ picos_err[0],picos[0]- picos_err[0] , alpha=0.6)
ax.fill_betweenx( dcA_vec, picos[1]+ picos_err[1],picos[1]- picos_err[1] , alpha=0.6)
# for pico,pico_err,dcA_val in zip(picos[0],picos_err[0],dcA_vec):
# # ax.plot( pico, dcA_val, '.' ,ms=7)
# ax.errorbar( pico, dcA_val, xerr=pico_err, fmt='.' ,ms=7, capsize=4)
# ax.set_prop_cycle(None)
ax.plot( picos[0] , dcA_vec , '.-' , color='C0')
ax.plot( picos[1] , dcA_vec , 'o--' , color='C1')
# for pico,pico_err,dcA_val in zip(picos[1],picos_err[1],dcA_vec):
# # ax.plot( pico, dcA_val, 'o' ,ms=7)
# ax.errorbar( pico, dcA_val, xerr=pico_err, fmt='.' ,ms=7, capsize=4)
profundidad_mean = [ np.array(np.array(picos[0])[dcA_vec==val].tolist()+np.array(picos[1])[dcA_vec==val].tolist()).mean() for val in np.unique(dcA_vec) ]
profundidad_dev = [ np.array(np.array(picos[0])[dcA_vec==val].tolist()+np.array(picos[1])[dcA_vec==val].tolist()).std() for val in np.unique(dcA_vec) ]
dcA_uniq = np.unique(dcA_vec)
ax.set_xlabel('Profundidad')
axx[0].set_ylabel(f'{SUP_TITLE.split()[-1]} [V]')
axx[0].set_xlabel('frecuencia [kHz]')
for ax in axx:
ax.grid(b=True,linestyle=':',color='lightgray')
ax.set_xlim( 0, ax.get_xlim()[1] )
fig.suptitle(SUP_TITLE)
# fig.savefig(f"{ii+1:02d}_{FILENAME}")
break
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