C2MV commited on
Commit
7334d6d
verified
1 Parent(s): 9e53850

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -26
app.py CHANGED
@@ -264,7 +264,7 @@ class RSM_BoxBehnken:
264
  index=self.factor_names
265
  )
266
  # Varianza explicada
267
- explained_variance = self.pca_model.explained_variance_ratio_
268
  return pca_df, loading_df, explained_variance
269
 
270
  def plot_pca(self):
@@ -1504,6 +1504,8 @@ def load_data(num_factors, factor_components, y_name, data_str, decimal_places):
1504
  """
1505
  Carga los datos del dise帽o Box-Behnken desde cajas de texto y crea la instancia de RSM_BoxBehnken.
1506
  """
 
 
1507
  try:
1508
  num_factors = int(num_factors)
1509
  # Extraer informaci贸n de los componentes de factores
@@ -1521,7 +1523,6 @@ def load_data(num_factors, factor_components, y_name, data_str, decimal_places):
1521
  # Si no se proporcionan datos, generar un dise帽o
1522
  if not data_str.strip():
1523
  # Crear la instancia de RSM_BoxBehnken
1524
- global rsm
1525
  rsm = RSM_BoxBehnken(factor_names, y_name, levels, decimal_places=decimal_places)
1526
  data = rsm.data
1527
  else:
@@ -1543,7 +1544,6 @@ def load_data(num_factors, factor_components, y_name, data_str, decimal_places):
1543
  raise ValueError("El formato de los datos no es correcto. Faltan columnas requeridas.")
1544
 
1545
  # Crear la instancia de RSM_BoxBehnken
1546
- global rsm
1547
  rsm = RSM_BoxBehnken(factor_names, y_name, levels, data=data, decimal_places=decimal_places)
1548
 
1549
  return data.round(rsm.current_configuration['decimal_places']), "Datos cargados correctamente. Puede avanzar a la pesta帽a de An谩lisis Estad铆stico.", True
@@ -1554,6 +1554,8 @@ def load_data(num_factors, factor_components, y_name, data_str, decimal_places):
1554
  return None, error_message, False
1555
 
1556
  def fit_and_optimize_model(regularization_alpha=1.0, regularization_l1_ratio=0.5, decimal_places=3, pareto_statistic='F'):
 
 
1557
  if 'rsm' not in globals():
1558
  # Devolver None para todos los componentes de salida
1559
  return (
@@ -1743,7 +1745,7 @@ def generate_rsm_plot(fixed_factors_idx, fixed_levels):
1743
  def create_gradio_interface():
1744
  with gr.Blocks(css=".container { max-width: 1200px !important; }") as demo:
1745
  gr.Markdown("""
1746
- # <center>Optimizaci贸n de la producci贸n de AIA usando RSM Box-Behnken</center>
1747
  <div style="background-color: #f0f2f6; padding: 15px; border-radius: 10px; margin-bottom: 20px;">
1748
  Herramienta avanzada para el an谩lisis y optimizaci贸n de procesos mediante
1749
  la Metodolog铆a de Superficie de Respuesta (RSM) con dise帽o Box-Behnken.
@@ -1752,11 +1754,39 @@ def create_gradio_interface():
1752
  </div>
1753
  """)
1754
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1755
  # Estado para el 铆ndice actual de gr谩ficos
1756
  current_index_state = gr.State(0)
1757
  all_figures_state = gr.State([])
1758
  diagnostic_figures_state = gr.State([])
1759
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1760
  # Pesta帽as principales
1761
  with gr.Tabs():
1762
  # Pesta帽a 1: Configuraci贸n y Carga de Datos
@@ -1797,28 +1827,6 @@ def create_gradio_interface():
1797
  gr.Markdown("#### 馃搳 Configuraci贸n de Factores")
1798
  factor_inputs_container = gr.Column()
1799
 
1800
- # Inicializar con 3 factores
1801
- with gr.Column(visible=True) as factor_inputs:
1802
- factor_components = []
1803
- for i in range(3):
1804
- with gr.Row(variant="panel"):
1805
- factor_name = gr.Textbox(
1806
- label=f"Nombre del Factor {i+1}",
1807
- value=f"Factor_{i+1}",
1808
- interactive=True
1809
- )
1810
- low_level = gr.Number(
1811
- label=f"Nivel Bajo ({i+1})",
1812
- value=0.0,
1813
- interactive=True
1814
- )
1815
- high_level = gr.Number(
1816
- label=f"Nivel Alto ({i+1})",
1817
- value=10.0,
1818
- interactive=True
1819
- )
1820
- factor_components.extend([factor_name, low_level, high_level])
1821
-
1822
  with gr.Row():
1823
  with gr.Column(scale=2):
1824
  gr.Markdown("#### 馃摛 Datos del Experimento")
 
264
  index=self.factor_names
265
  )
266
  # Varianza explicada
267
+ explained_variance = self.pca_model.explained_variance_ratio()
268
  return pca_df, loading_df, explained_variance
269
 
270
  def plot_pca(self):
 
1504
  """
1505
  Carga los datos del dise帽o Box-Behnken desde cajas de texto y crea la instancia de RSM_BoxBehnken.
1506
  """
1507
+ global rsm # CORREGIDO: Declaraci贸n global al inicio de la funci贸n
1508
+
1509
  try:
1510
  num_factors = int(num_factors)
1511
  # Extraer informaci贸n de los componentes de factores
 
1523
  # Si no se proporcionan datos, generar un dise帽o
1524
  if not data_str.strip():
1525
  # Crear la instancia de RSM_BoxBehnken
 
1526
  rsm = RSM_BoxBehnken(factor_names, y_name, levels, decimal_places=decimal_places)
1527
  data = rsm.data
1528
  else:
 
1544
  raise ValueError("El formato de los datos no es correcto. Faltan columnas requeridas.")
1545
 
1546
  # Crear la instancia de RSM_BoxBehnken
 
1547
  rsm = RSM_BoxBehnken(factor_names, y_name, levels, data=data, decimal_places=decimal_places)
1548
 
1549
  return data.round(rsm.current_configuration['decimal_places']), "Datos cargados correctamente. Puede avanzar a la pesta帽a de An谩lisis Estad铆stico.", True
 
1554
  return None, error_message, False
1555
 
1556
  def fit_and_optimize_model(regularization_alpha=1.0, regularization_l1_ratio=0.5, decimal_places=3, pareto_statistic='F'):
1557
+ global rsm # CORREGIDO: Declaraci贸n global al inicio de la funci贸n
1558
+
1559
  if 'rsm' not in globals():
1560
  # Devolver None para todos los componentes de salida
1561
  return (
 
1745
  def create_gradio_interface():
1746
  with gr.Blocks(css=".container { max-width: 1200px !important; }") as demo:
1747
  gr.Markdown("""
1748
+ # <center>Optimizaci贸n de Producci贸n con Box-Behnken (k Factores)</center>
1749
  <div style="background-color: #f0f2f6; padding: 15px; border-radius: 10px; margin-bottom: 20px;">
1750
  Herramienta avanzada para el an谩lisis y optimizaci贸n de procesos mediante
1751
  la Metodolog铆a de Superficie de Respuesta (RSM) con dise帽o Box-Behnken.
 
1754
  </div>
1755
  """)
1756
 
1757
+ # Estado para almacenar el n煤mero actual de factores
1758
+ current_factors = gr.State(3)
1759
+
1760
+ # Secci贸n 1: Configuraci贸n de Factores
1761
+ with gr.Row():
1762
+ num_factors_input = gr.Number(
1763
+ value=3,
1764
+ label="N煤mero de Factores",
1765
+ precision=0,
1766
+ minimum=2,
1767
+ maximum=16,
1768
+ interactive=True
1769
+ )
1770
+ update_btn = gr.Button("Actualizar Campos", variant="secondary")
1771
+
1772
  # Estado para el 铆ndice actual de gr谩ficos
1773
  current_index_state = gr.State(0)
1774
  all_figures_state = gr.State([])
1775
  diagnostic_figures_state = gr.State([])
1776
 
1777
+ # Secci贸n din谩mica para factores
1778
+ factor_inputs_container = gr.Column()
1779
+
1780
+ # Generar inicialmente para 3 factores
1781
+ initial_components = []
1782
+ with factor_inputs_container:
1783
+ for i in range(3):
1784
+ with gr.Row(variant="panel"):
1785
+ name = gr.Textbox(label=f"Nombre Factor {i+1}", value=f"Factor_{i+1}")
1786
+ low = gr.Number(label=f"Bajo {i+1}", value=0.0)
1787
+ high = gr.Number(label=f"Alto {i+1}", value=10.0)
1788
+ initial_components.extend([name, low, high])
1789
+
1790
  # Pesta帽as principales
1791
  with gr.Tabs():
1792
  # Pesta帽a 1: Configuraci贸n y Carga de Datos
 
1827
  gr.Markdown("#### 馃搳 Configuraci贸n de Factores")
1828
  factor_inputs_container = gr.Column()
1829
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1830
  with gr.Row():
1831
  with gr.Column(scale=2):
1832
  gr.Markdown("#### 馃摛 Datos del Experimento")