C2MV commited on
Commit
67c6c59
verified
1 Parent(s): 951576b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -9
app.py CHANGED
@@ -111,8 +111,8 @@ def generar_graficos(df_valid, n_replicas, unidad_medida):
111
  fmt='o',
112
  color='blue',
113
  ecolor='lightgray',
114
- elinewidth=3,
115
- capsize=0,
116
  label='Datos Reales'
117
  )
118
  else:
@@ -262,7 +262,7 @@ Fecha: {datetime.now().strftime('%d/%m/%Y %H:%M')}
262
 
263
  def actualizar_analisis(df, n_replicas, unidad_medida):
264
  if df is None or df.empty:
265
- return "Error en los datos", None, "No se pueden generar an谩lisis"
266
 
267
  col_predicha_num = "Concentraci贸n Predicha Num茅rica"
268
  col_real_promedio = f"Concentraci贸n Real Promedio ({unidad_medida})"
@@ -277,7 +277,7 @@ def actualizar_analisis(df, n_replicas, unidad_medida):
277
  df_valid = df.dropna(subset=[col_predicha_num, col_real_promedio])
278
 
279
  if len(df_valid) < 2:
280
- return "Se necesitan m谩s datos", None, "Se requieren al menos dos valores reales para el an谩lisis"
281
 
282
  # Calcular la regresi贸n y agregar 'Ajuste Lineal'
283
  slope, intercept, r_value, p_value, std_err = stats.linregress(df_valid[col_predicha_num], df_valid[col_real_promedio])
@@ -286,7 +286,7 @@ def actualizar_analisis(df, n_replicas, unidad_medida):
286
  fig = generar_graficos(df_valid, n_replicas, unidad_medida)
287
  informe, estado = generar_informe_completo(df_valid, n_replicas, unidad_medida)
288
 
289
- return estado, fig, informe
290
 
291
  def exportar_informe_word(df_valid, informe_md, unidad_medida):
292
  # Crear documento Word
@@ -463,6 +463,9 @@ def generar_datos_sinteticos_evento(df, n_replicas, unidad_medida):
463
  datos_sinteticos = np.round(datos_sinteticos, 2)
464
  df[col_real] = datos_sinteticos
465
 
 
 
 
466
  return df
467
 
468
  def actualizar_tabla_evento(df, n_filas, concentracion, unidad, n_replicas):
@@ -470,8 +473,8 @@ def actualizar_tabla_evento(df, n_filas, concentracion, unidad, n_replicas):
470
  df_new = generar_tabla(n_filas, concentracion, unidad, n_replicas)
471
 
472
  # Mapear columnas
473
- col_real_new = [col for col in df_new.columns if 'Concentraci贸n Real' in col]
474
- col_real_old = [col for col in df.columns if 'Concentraci贸n Real' in col]
475
 
476
  # Reemplazar valores existentes en "Concentraci贸n Real"
477
  for col_new, col_old in zip(col_real_new, col_real_old):
@@ -480,6 +483,9 @@ def actualizar_tabla_evento(df, n_filas, concentracion, unidad, n_replicas):
480
  if idx in df.index:
481
  df_new.at[idx, col_new] = df.at[idx, col_old]
482
 
 
 
 
483
  return df_new
484
 
485
  # Interfaz Gradio
@@ -555,7 +561,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
555
 
556
  # Eventos
557
  input_components = [tabla_output]
558
- output_components = [estado_output, graficos_output, informe_output]
559
 
560
  # Evento al presionar el bot贸n Calcular
561
  calcular_btn.click(
@@ -666,7 +672,9 @@ with gr.Blocks(theme=gr.themes.Soft()) as interfaz:
666
  df = generar_tabla(7, 2000000, "UFC", n_replicas)
667
  # Valores reales de ejemplo
668
  df[f"Concentraci贸n Real 1 (UFC)"] = [2000000, 1600000, 1200000, 800000, 400000, 200000, 100000]
669
- estado, fig, informe = actualizar_analisis(df, n_replicas, "UFC")
 
 
670
  return (
671
  2000000,
672
  "UFC",
 
111
  fmt='o',
112
  color='blue',
113
  ecolor='lightgray',
114
+ elinewidth=2,
115
+ capsize=3,
116
  label='Datos Reales'
117
  )
118
  else:
 
262
 
263
  def actualizar_analisis(df, n_replicas, unidad_medida):
264
  if df is None or df.empty:
265
+ return "Error en los datos", None, "No se pueden generar an谩lisis", df
266
 
267
  col_predicha_num = "Concentraci贸n Predicha Num茅rica"
268
  col_real_promedio = f"Concentraci贸n Real Promedio ({unidad_medida})"
 
277
  df_valid = df.dropna(subset=[col_predicha_num, col_real_promedio])
278
 
279
  if len(df_valid) < 2:
280
+ return "Se necesitan m谩s datos", None, "Se requieren al menos dos valores reales para el an谩lisis", df
281
 
282
  # Calcular la regresi贸n y agregar 'Ajuste Lineal'
283
  slope, intercept, r_value, p_value, std_err = stats.linregress(df_valid[col_predicha_num], df_valid[col_real_promedio])
 
286
  fig = generar_graficos(df_valid, n_replicas, unidad_medida)
287
  informe, estado = generar_informe_completo(df_valid, n_replicas, unidad_medida)
288
 
289
+ return estado, fig, informe, df
290
 
291
  def exportar_informe_word(df_valid, informe_md, unidad_medida):
292
  # Crear documento Word
 
463
  datos_sinteticos = np.round(datos_sinteticos, 2)
464
  df[col_real] = datos_sinteticos
465
 
466
+ # Calcular promedio y desviaci贸n est谩ndar
467
+ df = calcular_promedio_desviacion(df, n_replicas, unidad_medida)
468
+
469
  return df
470
 
471
  def actualizar_tabla_evento(df, n_filas, concentracion, unidad, n_replicas):
 
473
  df_new = generar_tabla(n_filas, concentracion, unidad, n_replicas)
474
 
475
  # Mapear columnas
476
+ col_real_new = [col for col in df_new.columns if 'Concentraci贸n Real' in col and 'Promedio' not in col and 'Desviaci贸n' not in col]
477
+ col_real_old = [col for col in df.columns if 'Concentraci贸n Real' in col and 'Promedio' not in col and 'Desviaci贸n' not in col]
478
 
479
  # Reemplazar valores existentes en "Concentraci贸n Real"
480
  for col_new, col_old in zip(col_real_new, col_real_old):
 
483
  if idx in df.index:
484
  df_new.at[idx, col_new] = df.at[idx, col_old]
485
 
486
+ # Recalcular promedio y desviaci贸n est谩ndar
487
+ df_new = calcular_promedio_desviacion(df_new, n_replicas, unidad)
488
+
489
  return df_new
490
 
491
  # Interfaz Gradio
 
561
 
562
  # Eventos
563
  input_components = [tabla_output]
564
+ output_components = [estado_output, graficos_output, informe_output, tabla_output]
565
 
566
  # Evento al presionar el bot贸n Calcular
567
  calcular_btn.click(
 
672
  df = generar_tabla(7, 2000000, "UFC", n_replicas)
673
  # Valores reales de ejemplo
674
  df[f"Concentraci贸n Real 1 (UFC)"] = [2000000, 1600000, 1200000, 800000, 400000, 200000, 100000]
675
+ # Calcular promedio y desviaci贸n est谩ndar
676
+ df = calcular_promedio_desviacion(df, n_replicas, "UFC")
677
+ estado, fig, informe, df = actualizar_analisis(df, n_replicas, "UFC")
678
  return (
679
  2000000,
680
  "UFC",