Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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.
|
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
|
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")
|