You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1.4 MiB

None <html lang="en"> <head> </head>
In [1]:
from pathlib import Path
import sys
import  matplotlib.pyplot as plt
import  numpy as np

PROJECT_ROOT    =   Path.cwd().parent
sys.path.insert(0, str(PROJECT_ROOT))

print("Project Root:", PROJECT_ROOT)

from    src.visualizacion   import  (plot_xy, comparar_rondas, comparar_experimentos,
                                     plot_3D, plot_color_map, plot_dual_axis,
                                     plot_con_ajuste, marcar_zonas, sombrear_zonas)
from    src.analysis        import  (calcular_pendiente, calcular_r2, derivada_numerica,
                                     segunda_derivada, variación_resistencia,
                                     comparar_pendientes, zonas_manual, detectar_zonas_auto,)
from    src.data_loader     import  (apply_filter, load_all)

DATA_DIR    =   PROJECT_ROOT / "data"
data        =   load_all(DATA_DIR)
print("Uploaded Data:", len(data))
Project Root: /Users/mguillermo/Desktop/MGPH/Maestria/Hydrogen_Exp/Analysis/2nd_AMIDIQ_Analysis
Uploaded Data: 8

Gráficas Generales de ambos experimentos

In [2]:
# Comparacion de Velec vs Ielec en ambos experimentos 

comparar_experimentos(data, ronda=1, x_col="Voltaje Electrodos (V)",
                      y_col="Corriente Electrodos (A)")
comparar_experimentos(data, ronda=2, x_col="Voltaje Electrodos (V)",
                      y_col="Corriente Electrodos (A)")

# Definicion de zonas de operacion ronda 1
zonas   =   [0.9692, 1.8713, 3.7383, 5.4]

fig, ax =   comparar_experimentos(data, ronda=1, x_col="Voltaje Electrodos (V)",
                      y_col="Corriente Electrodos (A)")
marcar_zonas(ax=ax, limites=zonas,
             labels=[
                 "No Conducción",
                 "Conducción",
                 "Generación",
                 "Saturación"
             ])
fig1, ax1 =   comparar_experimentos(data, ronda=1, x_col="Voltaje Electrodos (V)",
                      y_col="Corriente Electrodos (A)")
marcar_zonas(ax=ax1, limites=zonas,
             labels=[
                 "No Conducción",
                 "Conducción",
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax1, limites=zonas)

#Definicion de zonas de operacion ronda 2
fig2, ax2 =   comparar_experimentos(data, ronda=2, x_col="Voltaje Electrodos (V)",
                      y_col="Corriente Electrodos (A)")
marcar_zonas(ax=ax2, limites=zonas,
             labels=[
                 "No Conducción",
                 "Conducción",
                 "Generación",
                 "Saturación"
             ])
fig3, ax3 =   comparar_experimentos(data, ronda=2, x_col="Voltaje Electrodos (V)",
                      y_col="Corriente Electrodos (A)")
marcar_zonas(ax=ax3, limites=zonas,
             labels=[
                 "No Conducción",
                 "Conducción",
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax3, limites=zonas)
plt.show()
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Evolucion de la Resistencia a traves de las distintas zonas

Conduccion - Saturación Ronda 1

In [3]:
st  = 10
end = 19
x   = "Voltaje Electrodos (V)"
y   = "Resistencia"

comparar_experimentos(data, ronda=1, x_col=x, y_col=y, 
                      filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                      title="Ronda 1 - Comparación Resistencia en Zona de Conducción"
                      )

st  =   20
end =   45
comparar_experimentos(data, ronda=1, x_col=x, y_col=y, 
                      filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                      title="Ronda 1 - Comparación Resistencia en Zona de Generación"
                      )

st  =   46
end =   66
comparar_experimentos(data, ronda=1, x_col=x, y_col=y, 
                      filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                      title="Ronda 1 - Comparación Resistencia en Zona de Saturación"
                      )
Out[3]:
(<Figure size 700x500 with 1 Axes>,
 <Axes: title={'center': 'Ronda 1 - Comparación Resistencia en Zona de Saturación'}, xlabel='Voltaje Electrodos (V)', ylabel='Resistencia'>)
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image

Conducción vs Saturación - Ronda 2

In [4]:
st  = 10
end = 19
x   = "Voltaje Electrodos (V)"
y   = "Resistencia"

comparar_experimentos(data, ronda=2, x_col=x, y_col=y, 
                      filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                      title="Ronda 2 - Comparación Resistencia en Zona de Conducción"
                      )

st  =   20
end =   45
comparar_experimentos(data, ronda=2, x_col=x, y_col=y, 
                      filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                      title="Ronda 2 - Comparación Resistencia en Zona de Generación"
                      )

st  =   46
end =   60
comparar_experimentos(data, ronda=2, x_col=x, y_col=y, 
                      filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                      title="Ronda 2 - Comparación Resistencia en Zona de Saturación"
                      )
comparar_rondas(data, experimento=1, x_col=x, y_col=y,
                filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                title="Experimento 1 - Comparativa de Resistencia de las Rondas 1 y 2 en Zona de Saturación")

comparar_rondas(data, experimento=2, x_col=x, y_col=y,
                filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                title="Experimento 2 - Comparativa de Resistencia de las Rondas 1 y 2 en Zona de Saturación")

comparar_rondas(data, experimento=3, x_col=x, y_col=y,
                filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                title="Experimento 3 - Comparativa de Resistencia de las Rondas 1 y 2 en Zona de Saturación")

comparar_rondas(data, experimento=4, x_col=x, y_col=y,
                filter_fn= lambda df: apply_filter(df, row_start=st, row_end=end),
                title="Experimento 4 - Comparativa de Resistencia de las Rondas 1 y 2 en Zona de Saturación")
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
Out[4]:
(<Figure size 700x500 with 1 Axes>,
 <Axes: title={'center': 'Experimento 4 - Comparativa de Resistencia de las Rondas 1 y 2 en Zona de Saturación'}, xlabel='Voltaje Electrodos (V)', ylabel='Resistencia'>)

Resistencia vs Temperatura

Se realiza un analisis de la resistencia contra la temperatura de las respectivas rondas y solo de los experimentos 1 y 4. Esto en las zonas que comprende la conduccion y la saturación.

In [7]:
st      =   20
end     =   66
rnd1_1  =   apply_filter(data[(1,1)], row_start=20, row_end=end)
rnd1_4  =   apply_filter(data[(1,4)], row_start=st, row_end=end)
x       =   "Voltaje Electrodos (V)"
y       =   "Resistencia"
y1      =   "Temperatura"
zonas   =   [3.7383, 5.4]

fig, ax1, ax2 = plot_dual_axis(rnd1_1, x_col=x, y1_col=y, y2_col=y1,
               title= "Ronda 1 - Experimento 1 : Resistencia y Temperatura vs Voltaje Electrodos",)
marcar_zonas(ax=ax1, limites=zonas,
             labels=[
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax1, limites=zonas, colores=["blue", "green", "red"])

fig, ax3, ax4 = plot_dual_axis(rnd1_4, x_col=x, y1_col=y, y2_col=y1,
               title= "Ronda 1 - Experimento 4 : Resistencia y Temperatura vs Voltaje Electrodos",)
marcar_zonas(ax=ax3, limites=zonas,
             labels=[
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax3, limites=zonas, colores=["blue", "green", "red"])
No description has been provided for this image
No description has been provided for this image
In [8]:
st      =   20
end     =   60
rnd1_1  =   apply_filter(data[(2,1)], row_start=st, row_end=end)
rnd1_4  =   apply_filter(data[(2,4)], row_start=st, row_end=end)
x       =   "Voltaje Electrodos (V)"
y       =   "Resistencia"
y1      =   "Temperatura"
zonas   =   [3.7383, 5.4]

fig, ax1, ax2 = plot_dual_axis(rnd1_1, x_col=x, y1_col=y, y2_col=y1,
               title= "Ronda 2 - Experimento 1 : Resistencia y Temperatura vs Voltaje Electrodos",)
marcar_zonas(ax=ax1, limites=zonas,
             labels=[
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax1, limites=zonas, colores=["blue", "green", "red"])

fig, ax3, ax4 = plot_dual_axis(rnd1_4, x_col=x, y1_col=y, y2_col=y1,
               title= "Ronda 2 - Experimento 4 : Resistencia y Temperatura vs Voltaje Electrodos",)
marcar_zonas(ax=ax3, limites=zonas,
             labels=[
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax3, limites=zonas, colores=["blue", "green", "red"])
No description has been provided for this image
No description has been provided for this image
In [15]:
exp1    =   data[1,1]
exp2    =   data[1,2]
x       =   "Voltaje Electrodos (V)"
y       =   "Corriente Electrodos (A)"
r       =   "Resistencia"
t       =   "Temperatura"

# Definicion de zonas de operacion ronda 1
zonas   =   [0.9692, 1.8713, 3.7383, 5.4]

fig1, ax1 =   comparar_experimentos(data, ronda=1, x_col=x, y_col=y, experimentos=(1,2), title="No")
marcar_zonas(ax=ax1, limites=zonas,
             labels=[
                 "No Conducción",
                 "Conducción",
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax1, limites=zonas)
plt.show()

comparar_experimentos(data, ronda=1, x_col=x, y_col=r, 
                      filter_fn= lambda df: apply_filter(df, row_start=46, row_end=66),
                      experimentos=(1,2),title="No")


exp1    =   apply_filter(data[1,1], row_start=20, row_end=66)
exp2    =   apply_filter(data[1,2], row_start=20, row_end=66)
fig, ax =   plt.subplots(1, 2, figsize=(12,5))

_, ax1, ax1b = plot_dual_axis(df=exp1,  x_col=x, y1_col=r, y2_col=t, ax=ax[0], title="(a)")
marcar_zonas(ax=ax[0], limites=[3.7383, 5.4], 
             labels=[
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax[0], limites=[3.7383, 5.4], colores=["blue","red"])

_, ax2, ax2b = plot_dual_axis(df=exp2,  x_col=x, y1_col=r, y2_col=t, ax=ax[1], title="(b)")
marcar_zonas(ax=ax[1], limites=[3.7383, 5.4], 
             labels=[
                 "Generación",
                 "Saturación"
             ])
sombrear_zonas(ax=ax[1], limites=[3.7383, 5.4], colores=["blue","red"])

ax1.set_ylim(0, 45)
ax2.set_ylim(0, 45)

ax1b.set_ylim(20, 60)
ax2b.set_ylim(20, 60)

plt.tight_layout()
plt.show()
No description has been provided for this image
No description has been provided for this image
No description has been provided for this image
</html>