C2MV commited on
Commit
2affd2f
verified
1 Parent(s): 04fc3d6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -12
app.py CHANGED
@@ -267,10 +267,16 @@ Fecha: {datetime.now().strftime('%d/%m/%Y %H:%M')}
267
  """
268
  return informe, evaluacion['estado']
269
 
270
- def actualizar_analisis(df, n_replicas, unidad_medida):
271
  if df is None or df.empty:
272
  return "Error en los datos", None, "No se pueden generar an谩lisis", df
273
 
 
 
 
 
 
 
274
  # Calcular promedio y desviaci贸n est谩ndar dependiendo de las r茅plicas
275
  df = calcular_promedio_desviacion(df, n_replicas, unidad_medida)
276
 
@@ -303,7 +309,7 @@ def actualizar_analisis(df, n_replicas, unidad_medida):
303
 
304
  return estado, fig, informe, df
305
 
306
- def actualizar_graficos(df, n_replicas, unidad_medida,
307
  palette_puntos, estilo_puntos,
308
  palette_linea_ajuste, estilo_linea_ajuste,
309
  palette_linea_ideal, estilo_linea_ideal,
@@ -312,6 +318,12 @@ def actualizar_graficos(df, n_replicas, unidad_medida,
312
  if df is None or df.empty:
313
  return None
314
 
 
 
 
 
 
 
315
  # Asegurarse de que los c谩lculos est茅n actualizados
316
  df = calcular_promedio_desviacion(df, n_replicas, unidad_medida)
317
 
@@ -430,7 +442,7 @@ def exportar_informe_latex(df_valid, informe_md):
430
  f.write(informe_tex)
431
  return filename
432
 
433
- def exportar_word(df, informe_md, unidad_medida):
434
  df_valid = df.copy()
435
  col_predicha_num = "Concentraci贸n Predicha Num茅rica"
436
  col_real_promedio = f"Concentraci贸n Real Promedio ({unidad_medida})"
@@ -499,7 +511,7 @@ def limpiar_datos(n_replicas):
499
  "" # Informe Output
500
  )
501
 
502
- def generar_datos_sinteticos_evento(df, n_replicas, unidad_medida):
503
  df = df.copy()
504
  col_predicha_num = "Concentraci贸n Predicha Num茅rica"
505
 
@@ -512,7 +524,7 @@ def generar_datos_sinteticos_evento(df, n_replicas, unidad_medida):
512
  datos_sinteticos = valores_predichos + np.random.normal(0, desviacion_std, size=len(valores_predichos))
513
  datos_sinteticos = np.maximum(0, datos_sinteticos) # Asegurar que no haya valores negativos
514
  datos_sinteticos = np.round(datos_sinteticos, 2)
515
- df[col_real] = datos_sinteticos
516
 
517
  return df
518
 
@@ -573,6 +585,11 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
573
  step=1,
574
  label="N煤mero de R茅plicas"
575
  )
 
 
 
 
 
576
 
577
  with gr.Row():
578
  calcular_btn = gr.Button("馃攧 Calcular", variant="primary")
@@ -661,7 +678,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
661
  # Evento al presionar el bot贸n Calcular
662
  calcular_btn.click(
663
  fn=actualizar_analisis,
664
- inputs=[tabla_output, replicas_slider, unidad_input],
665
  outputs=output_components
666
  )
667
 
@@ -669,7 +686,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
669
  graficar_btn.click(
670
  fn=actualizar_graficos,
671
  inputs=[
672
- tabla_output, replicas_slider, unidad_input,
673
  palette_puntos_dropdown, estilo_puntos_dropdown,
674
  palette_linea_ajuste_dropdown, estilo_linea_ajuste_dropdown,
675
  palette_linea_ideal_dropdown, estilo_linea_ideal_dropdown,
@@ -702,7 +719,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
702
  # Evento para generar datos sint茅ticos
703
  sinteticos_btn.click(
704
  fn=generar_datos_sinteticos_evento,
705
- inputs=[tabla_output, replicas_slider, unidad_input],
706
  outputs=tabla_output
707
  )
708
 
@@ -765,7 +782,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
765
  # Eventos de exportar informes
766
  exportar_word_btn.click(
767
  fn=exportar_word,
768
- inputs=[tabla_output, informe_output, unidad_input],
769
  outputs=exportar_word_file
770
  )
771
 
@@ -781,7 +798,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
781
  df = generar_tabla(7, 2000000, "UFC", n_replicas)
782
  # Valores reales de ejemplo
783
  df[f"Concentraci贸n Real 1 (UFC)"] = [2000000, 1600000, 1200000, 800000, 400000, 200000, 100000]
784
- estado, fig, informe, df = actualizar_analisis(df, n_replicas, "UFC")
785
  return (
786
  2000000,
787
  "UFC",
@@ -789,12 +806,13 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
789
  df,
790
  estado,
791
  fig,
792
- informe
 
793
  )
794
 
795
  interfaz.load(
796
  fn=iniciar_con_ejemplo,
797
- outputs=[concentracion_input, unidad_input, filas_slider, tabla_output, estado_output, graficos_output, informe_output]
798
  )
799
 
800
  # Lanzar la interfaz
 
267
  """
268
  return informe, evaluacion['estado']
269
 
270
+ def actualizar_analisis(df, n_replicas, unidad_medida, absorbancia_blanco):
271
  if df is None or df.empty:
272
  return "Error en los datos", None, "No se pueden generar an谩lisis", df
273
 
274
+ # Ajustar valores de absorbancia reales por el valor del blanco
275
+ for i in range(1, n_replicas + 1):
276
+ col_real = f"Concentraci贸n Real {i} ({unidad_medida})"
277
+ df[col_real] = pd.to_numeric(df[col_real], errors='coerce')
278
+ df[col_real] = df[col_real] - absorbancia_blanco
279
+
280
  # Calcular promedio y desviaci贸n est谩ndar dependiendo de las r茅plicas
281
  df = calcular_promedio_desviacion(df, n_replicas, unidad_medida)
282
 
 
309
 
310
  return estado, fig, informe, df
311
 
312
+ def actualizar_graficos(df, n_replicas, unidad_medida, absorbancia_blanco,
313
  palette_puntos, estilo_puntos,
314
  palette_linea_ajuste, estilo_linea_ajuste,
315
  palette_linea_ideal, estilo_linea_ideal,
 
318
  if df is None or df.empty:
319
  return None
320
 
321
+ # Ajustar valores de absorbancia reales por el valor del blanco
322
+ for i in range(1, n_replicas + 1):
323
+ col_real = f"Concentraci贸n Real {i} ({unidad_medida})"
324
+ df[col_real] = pd.to_numeric(df[col_real], errors='coerce')
325
+ df[col_real] = df[col_real] - absorbancia_blanco
326
+
327
  # Asegurarse de que los c谩lculos est茅n actualizados
328
  df = calcular_promedio_desviacion(df, n_replicas, unidad_medida)
329
 
 
442
  f.write(informe_tex)
443
  return filename
444
 
445
+ def exportar_word(df, informe_md, unidad_medida, absorbancia_blanco):
446
  df_valid = df.copy()
447
  col_predicha_num = "Concentraci贸n Predicha Num茅rica"
448
  col_real_promedio = f"Concentraci贸n Real Promedio ({unidad_medida})"
 
511
  "" # Informe Output
512
  )
513
 
514
+ def generar_datos_sinteticos_evento(df, n_replicas, unidad_medida, absorbancia_blanco):
515
  df = df.copy()
516
  col_predicha_num = "Concentraci贸n Predicha Num茅rica"
517
 
 
524
  datos_sinteticos = valores_predichos + np.random.normal(0, desviacion_std, size=len(valores_predichos))
525
  datos_sinteticos = np.maximum(0, datos_sinteticos) # Asegurar que no haya valores negativos
526
  datos_sinteticos = np.round(datos_sinteticos, 2)
527
+ df[col_real] = datos_sinteticos - absorbancia_blanco
528
 
529
  return df
530
 
 
585
  step=1,
586
  label="N煤mero de R茅plicas"
587
  )
588
+ absorbancia_blanco_input = gr.Number(
589
+ value=0.0,
590
+ label="Absorbancia del Blanco",
591
+ precision=2
592
+ )
593
 
594
  with gr.Row():
595
  calcular_btn = gr.Button("馃攧 Calcular", variant="primary")
 
678
  # Evento al presionar el bot贸n Calcular
679
  calcular_btn.click(
680
  fn=actualizar_analisis,
681
+ inputs=[tabla_output, replicas_slider, unidad_input, absorbancia_blanco_input],
682
  outputs=output_components
683
  )
684
 
 
686
  graficar_btn.click(
687
  fn=actualizar_graficos,
688
  inputs=[
689
+ tabla_output, replicas_slider, unidad_input, absorbancia_blanco_input,
690
  palette_puntos_dropdown, estilo_puntos_dropdown,
691
  palette_linea_ajuste_dropdown, estilo_linea_ajuste_dropdown,
692
  palette_linea_ideal_dropdown, estilo_linea_ideal_dropdown,
 
719
  # Evento para generar datos sint茅ticos
720
  sinteticos_btn.click(
721
  fn=generar_datos_sinteticos_evento,
722
+ inputs=[tabla_output, replicas_slider, unidad_input, absorbancia_blanco_input],
723
  outputs=tabla_output
724
  )
725
 
 
782
  # Eventos de exportar informes
783
  exportar_word_btn.click(
784
  fn=exportar_word,
785
+ inputs=[tabla_output, informe_output, unidad_input, absorbancia_blanco_input],
786
  outputs=exportar_word_file
787
  )
788
 
 
798
  df = generar_tabla(7, 2000000, "UFC", n_replicas)
799
  # Valores reales de ejemplo
800
  df[f"Concentraci贸n Real 1 (UFC)"] = [2000000, 1600000, 1200000, 800000, 400000, 200000, 100000]
801
+ estado, fig, informe, df = actualizar_analisis(df, n_replicas, "UFC", 0.0)
802
  return (
803
  2000000,
804
  "UFC",
 
806
  df,
807
  estado,
808
  fig,
809
+ informe,
810
+ 0.0
811
  )
812
 
813
  interfaz.load(
814
  fn=iniciar_con_ejemplo,
815
+ outputs=[concentracion_input, unidad_input, filas_slider, tabla_output, estado_output, graficos_output, informe_output, absorbancia_blanco_input]
816
  )
817
 
818
  # Lanzar la interfaz