Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -528,7 +528,7 @@ def cargar_ejemplo_ufc(n_replicas):
|
|
528 |
valores_reales = [2000000 - (i - 1) * 10000, 1600000 - (i - 1) * 8000, 1200000 - (i - 1) * 6000,
|
529 |
800000 - (i - 1) * 4000, 400000 - (i - 1) * 2000, 200000 - (i - 1) * 1000,
|
530 |
100000 - (i - 1) * 500]
|
531 |
-
df[f"Concentración Real {i} (
|
532 |
return 2000000, "UFC", 7, df
|
533 |
|
534 |
def cargar_ejemplo_od(n_replicas):
|
@@ -538,7 +538,7 @@ def cargar_ejemplo_od(n_replicas):
|
|
538 |
valores_reales = [1.000 - (i - 1) * 0.050, 0.800 - (i - 1) * 0.040, 0.600 - (i - 1) * 0.030,
|
539 |
0.400 - (i - 1) * 0.020, 0.200 - (i - 1) * 0.010, 0.100 - (i - 1) * 0.005,
|
540 |
0.050 - (i - 1) * 0.002]
|
541 |
-
df[f"Concentración Real {i} (
|
542 |
return 1.000, "OD", 7, df
|
543 |
|
544 |
def limpiar_datos(n_replicas):
|
@@ -592,46 +592,28 @@ def actualizar_tabla_evento(df, n_filas, concentracion, unidad, n_replicas, deci
|
|
592 |
|
593 |
def cargar_excel(file):
|
594 |
# Leer el archivo Excel
|
595 |
-
|
596 |
|
597 |
-
#
|
598 |
-
|
599 |
-
|
600 |
|
601 |
-
# Obtener
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
n_filas = len(
|
606 |
-
|
607 |
-
n_replicas = 1
|
608 |
-
|
609 |
-
# Obtener concentración inicial
|
610 |
-
concentracion_inicial = df_excel[col_conc_predicha].max()
|
611 |
-
# Unidad de medida, podríamos extraerla del nombre de la columna
|
612 |
-
unidad_medida = col_conc_predicha.split('(')[-1].split(')')[0] if '(' in col_conc_predicha else 'Unidad'
|
613 |
|
614 |
# Generar la tabla base
|
615 |
df_base = generar_tabla(n_filas, concentracion_inicial, unidad_medida, n_replicas)
|
616 |
|
617 |
-
#
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
# Actualizar el Dropdown de absorbancia
|
622 |
-
absorbancia_dropdown_update = gr.update(choices=absorbancia_options, value=absorbancia_options[0] if absorbancia_options else None)
|
623 |
-
|
624 |
-
return concentracion_inicial, unidad_medida, n_filas, n_replicas, df_base, "", None, "", absorbancia_dropdown_update
|
625 |
-
|
626 |
-
def actualizar_absorbancia_seleccionada(df, absorbancia_seleccionada, unidad_medida):
|
627 |
-
if df is None or absorbancia_seleccionada is None:
|
628 |
-
return df
|
629 |
-
|
630 |
-
# Reemplazar la columna de Concentración Real 1 con la absorbancia seleccionada
|
631 |
-
col_real = f"Concentración Real 1 ({unidad_medida})"
|
632 |
-
df[col_real] = df[absorbancia_seleccionada].values
|
633 |
|
634 |
-
return
|
635 |
|
636 |
def calcular_regresion_tabla_principal(df, unidad_medida, filas_seleccionadas_regresion,
|
637 |
palette_puntos, estilo_puntos,
|
@@ -850,14 +832,6 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
|
|
850 |
type="pandas",
|
851 |
)
|
852 |
|
853 |
-
with gr.Row():
|
854 |
-
absorbancia_dropdown = gr.Dropdown(
|
855 |
-
label="Seleccione la columna de Absorbancia a utilizar",
|
856 |
-
choices=[],
|
857 |
-
value=None,
|
858 |
-
interactive=True
|
859 |
-
)
|
860 |
-
|
861 |
with gr.Tab("📊 Análisis y Reporte"):
|
862 |
estado_output = gr.Textbox(label="Estado", interactive=False)
|
863 |
graficos_output = gr.Plot(label="Gráficos de Análisis")
|
@@ -1097,14 +1071,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
|
|
1097 |
cargar_excel_btn.upload(
|
1098 |
fn=cargar_excel,
|
1099 |
inputs=[cargar_excel_btn],
|
1100 |
-
outputs=[concentracion_input, unidad_input, filas_slider, replicas_slider, tabla_output, estado_output, graficos_output, informe_output
|
1101 |
-
)
|
1102 |
-
|
1103 |
-
# Evento al seleccionar una absorbancia del Dropdown
|
1104 |
-
absorbancia_dropdown.change(
|
1105 |
-
fn=actualizar_absorbancia_seleccionada,
|
1106 |
-
inputs=[tabla_output, absorbancia_dropdown, unidad_input],
|
1107 |
-
outputs=tabla_output
|
1108 |
)
|
1109 |
|
1110 |
# Evento al presionar el botón Ajustar Decimales
|
@@ -1191,21 +1158,20 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
|
|
1191 |
filas_seleccionadas_inicial = [f"Fila {i+1}" for i in df.index]
|
1192 |
estado, fig, informe, df = actualizar_analisis(df, n_replicas, "UFC", filas_seleccionadas_inicial, 3)
|
1193 |
return (
|
1194 |
-
2000000,
|
1195 |
-
"UFC",
|
1196 |
-
7,
|
1197 |
-
df,
|
1198 |
-
estado,
|
1199 |
-
fig,
|
1200 |
-
informe,
|
1201 |
-
filas_seleccionadas_inicial,
|
1202 |
-
3
|
1203 |
-
gr.update(choices=[], value=None) # absorbancia_dropdown
|
1204 |
)
|
1205 |
|
1206 |
interfaz.load(
|
1207 |
fn=iniciar_con_ejemplo,
|
1208 |
-
outputs=[concentracion_input, unidad_input, filas_slider, tabla_output, estado_output, graficos_output, informe_output, filas_seleccionadas, decimales_slider
|
1209 |
)
|
1210 |
|
1211 |
# Evento al presionar el botón de calcular regresión
|
|
|
528 |
valores_reales = [2000000 - (i - 1) * 10000, 1600000 - (i - 1) * 8000, 1200000 - (i - 1) * 6000,
|
529 |
800000 - (i - 1) * 4000, 400000 - (i - 1) * 2000, 200000 - (i - 1) * 1000,
|
530 |
100000 - (i - 1) * 500]
|
531 |
+
df[f"Concentración Real {i} (UFC)"] = valores_reales
|
532 |
return 2000000, "UFC", 7, df
|
533 |
|
534 |
def cargar_ejemplo_od(n_replicas):
|
|
|
538 |
valores_reales = [1.000 - (i - 1) * 0.050, 0.800 - (i - 1) * 0.040, 0.600 - (i - 1) * 0.030,
|
539 |
0.400 - (i - 1) * 0.020, 0.200 - (i - 1) * 0.010, 0.100 - (i - 1) * 0.005,
|
540 |
0.050 - (i - 1) * 0.002]
|
541 |
+
df[f"Concentración Real {i} (OD)"] = valores_reales
|
542 |
return 1.000, "OD", 7, df
|
543 |
|
544 |
def limpiar_datos(n_replicas):
|
|
|
592 |
|
593 |
def cargar_excel(file):
|
594 |
# Leer el archivo Excel
|
595 |
+
df = pd.read_excel(file.name, sheet_name=None)
|
596 |
|
597 |
+
# Verificar que el archivo tenga al menos dos pestañas
|
598 |
+
if len(df) < 2:
|
599 |
+
return "El archivo debe tener al menos dos pestañas.", None, None, None, None, None, None
|
600 |
|
601 |
+
# Obtener la primera pestaña como referencia
|
602 |
+
primera_pestaña = next(iter(df.values()))
|
603 |
+
concentracion_inicial = primera_pestaña.iloc[0, 0]
|
604 |
+
unidad_medida = primera_pestaña.columns[0].split('(')[-1].split(')')[0]
|
605 |
+
n_filas = len(primera_pestaña)
|
606 |
+
n_replicas = len(df)
|
|
|
|
|
|
|
|
|
|
|
|
|
607 |
|
608 |
# Generar la tabla base
|
609 |
df_base = generar_tabla(n_filas, concentracion_inicial, unidad_medida, n_replicas)
|
610 |
|
611 |
+
# Llenar la tabla con los datos de cada pestaña
|
612 |
+
for i, (sheet_name, sheet_df) in enumerate(df.items(), start=1):
|
613 |
+
col_real = f"Concentración Real {i} ({unidad_medida})"
|
614 |
+
df_base[col_real] = sheet_df.iloc[:, 1].values
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
615 |
|
616 |
+
return concentracion_inicial, unidad_medida, n_filas, n_replicas, df_base, "", None, ""
|
617 |
|
618 |
def calcular_regresion_tabla_principal(df, unidad_medida, filas_seleccionadas_regresion,
|
619 |
palette_puntos, estilo_puntos,
|
|
|
832 |
type="pandas",
|
833 |
)
|
834 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
835 |
with gr.Tab("📊 Análisis y Reporte"):
|
836 |
estado_output = gr.Textbox(label="Estado", interactive=False)
|
837 |
graficos_output = gr.Plot(label="Gráficos de Análisis")
|
|
|
1071 |
cargar_excel_btn.upload(
|
1072 |
fn=cargar_excel,
|
1073 |
inputs=[cargar_excel_btn],
|
1074 |
+
outputs=[concentracion_input, unidad_input, filas_slider, replicas_slider, tabla_output, estado_output, graficos_output, informe_output]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1075 |
)
|
1076 |
|
1077 |
# Evento al presionar el botón Ajustar Decimales
|
|
|
1158 |
filas_seleccionadas_inicial = [f"Fila {i+1}" for i in df.index]
|
1159 |
estado, fig, informe, df = actualizar_analisis(df, n_replicas, "UFC", filas_seleccionadas_inicial, 3)
|
1160 |
return (
|
1161 |
+
2000000,
|
1162 |
+
"UFC",
|
1163 |
+
7,
|
1164 |
+
df,
|
1165 |
+
estado,
|
1166 |
+
fig,
|
1167 |
+
informe,
|
1168 |
+
filas_seleccionadas_inicial,
|
1169 |
+
3 # Número de decimales
|
|
|
1170 |
)
|
1171 |
|
1172 |
interfaz.load(
|
1173 |
fn=iniciar_con_ejemplo,
|
1174 |
+
outputs=[concentracion_input, unidad_input, filas_slider, tabla_output, estado_output, graficos_output, informe_output, filas_seleccionadas, decimales_slider]
|
1175 |
)
|
1176 |
|
1177 |
# Evento al presionar el botón de calcular regresión
|