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.
447 KiB
447 KiB
None
<html lang="en">
<head>
</head>
</html>
In [22]:
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))
Prueba de Modulo "visualizacion.py"¶
In [6]:
ronda = 1
experimento = 3
df = data[(ronda, experimento)]
df_f = apply_filter(df, row_start=35, row_end=66)
df_f1 = apply_filter(df, row_start=11, row_end=66)
plot_con_ajuste(df, x_col="Voltaje Electrodos (V)", y_col="Corriente Electrodos (A)",
label_datos="Datos")
plot_con_ajuste(df_f, x_col="Voltaje Electrodos (V)", y_col="Resistencia")
comparar_rondas(data, experimento=2, x_col="Voltaje Electrodos (V)",
y_col= "Corriente Electrodos (A)",
filter_fn=lambda df: apply_filter(df,row_start=11,row_end=66))
plot_color_map(df_f, x_col="Voltaje Electrodos (V)", y_col="Corriente Electrodos (A)",
z_col="Temperatura")
plot_color_map(df_f1, x_col="Voltaje Electrodos (V)", y_col="Corriente Electrodos (A)",
z_col="Temperatura")
plot_dual_axis(df_f, x_col="Voltaje Electrodos (V)", y1_col="Resistencia",
y2_col="Temperatura")
plot_3D(df_f1, x_col="Voltaje Electrodos (V)", y_col="Corriente Electrodos (A)", z_col="Temperatura")
Out[6]:
Prueba de Modulo "analysis.py"¶
In [27]:
df = data[(1, 1)]
x_col = "Voltaje Electrodos (V)"
y_col = "Corriente Electrodos (A)"
fig, ax = plt.subplots(figsize=(7,5))
plot_xy(df, x_col=x_col, y_col=y_col,
ax=ax)
zonas = detectar_zonas_auto(df, x_col=x_col, y_col=y_col)
print(len(zonas))
print(zonas)
marcar_zonas(
ax=ax,
limites=[
zonas["Zona_no_conduccion"],
zonas["Zona_conduccion"],
zonas["Zona_Generacion"],
zonas["Zona_Saturacion"]
],
labels=[
"No conduccion",
"Conduccion",
"Generacion H",
"Saturacion"
]
)
sombrear_zonas(ax,
limites=[
zonas["Zona_no_conduccion"],
zonas["Zona_conduccion"],
zonas["Zona_Generacion"],
zonas["Zona_Saturacion"]
])
plt.show()
fig, ax1 = plt.subplots(figsize=(7,5))
df_res = apply_filter(df, row_start=33, row_end=66)
plot_xy(df_res, x_col="Voltaje Electrodos (V)", y_col="Resistencia", ax=ax1)
zonas = [2.864084, 4.924251]
marcar_zonas(ax=ax1, limites=zonas,
labels=[
"Generacion H",
"Saturacion"
])
plt.show()
r = "Resistencia"
m, b = calcular_pendiente(df_res, x_col=x_col, y_col="Resistencia")
print(f"Pendiente Velec vs Resis m = {m:.3f} b = {b:.3f}")
r2 = calcular_r2(df_res, x_col=x_col, y_col=r)
print(f"Coeficiente de determinacion R^2 = {r2:.3f}")
x, y, dy_dx, d2y_dx2 = segunda_derivada(df_res, x_col=x_col, y_col=r)
print(f"Segunda Derivada ")
print(x)
print(y)
print(dy_dx)
print(d2y_dx2)
delta_R = variación_resistencia(df_res)
print(f"Variacion de la Resistencia en las zonas comprendidas entre 2.864084 y 4.924251 = ")
print(delta_R)
prom = np.mean(delta_R)
print(f"Promedio del Delta_R = {np.mean(abs(delta_R)):.3f}")