Upload UI.py
Browse files
UI.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
# UI.py
|
| 2 |
import gradio as gr
|
| 3 |
-
import numpy as np
|
| 4 |
|
| 5 |
def create_interface(process_function_for_button):
|
| 6 |
with gr.Blocks(theme='gradio/soft') as demo:
|
|
@@ -16,18 +16,19 @@ def create_interface(process_function_for_button):
|
|
| 16 |
legend_position_ui = gr.Dropdown(
|
| 17 |
label="Posici贸n de la leyenda",
|
| 18 |
choices=['best', 'upper right', 'upper left', 'lower right', 'lower left', 'center left', 'center right', 'lower center', 'upper center', 'center'],
|
| 19 |
-
value='best'
|
|
|
|
| 20 |
)
|
| 21 |
with gr.Column(scale=1):
|
| 22 |
gr.Markdown("### Conteo de Ecuaciones a Probar")
|
| 23 |
-
biomass_eq_count_ui = gr.Number(label="Biomasa (1-3)", value=1, minimum=1, maximum=3, step=1, precision=0)
|
| 24 |
-
substrate_eq_count_ui = gr.Number(label="Sustrato (1-3)", value=1, minimum=1, maximum=3, step=1, precision=0)
|
| 25 |
-
product_eq_count_ui = gr.Number(label="Producto (1-3)", value=1, minimum=1, maximum=3, step=1, precision=0)
|
| 26 |
|
| 27 |
# --- Secci贸n de Biomasa ---
|
| 28 |
with gr.Accordion("Ecuaciones y Par谩metros de Biomasa", open=True):
|
| 29 |
with gr.Row():
|
| 30 |
-
with gr.Column():
|
| 31 |
biomass_eq1_ui = gr.Textbox(label="Ecuaci贸n de Biomasa 1", value="Xm * (1 - exp(-um * (t - t_lag)))", lines=2, placeholder="Ej: Xm * (1 - exp(-um * (t - t_lag)))")
|
| 32 |
biomass_param1_ui = gr.Textbox(label="Par谩metros Biomasa 1", value="Xm, um, t_lag", info="Nombres, coma sep. Use 't' para tiempo. 'X_val' para X(t) en S/P.")
|
| 33 |
biomass_bound1_ui = gr.Textbox(label="L铆mites Biomasa 1", value="(0, np.inf), (0, np.inf), (0, np.inf)", info="Formato: (low,high). Use np.inf.")
|
|
@@ -87,10 +88,8 @@ def create_interface(process_function_for_button):
|
|
| 87 |
|
| 88 |
# L贸gica para mostrar/ocultar campos de ecuaci贸n din谩micamente
|
| 89 |
def update_eq_visibility(count_value):
|
| 90 |
-
|
| 91 |
-
count =
|
| 92 |
-
# Retorna diccionarios de actualizaci贸n para `gr.update`
|
| 93 |
-
return { "visible": count >= 2 }, { "visible": count >= 3 }
|
| 94 |
|
| 95 |
biomass_eq_count_ui.change(fn=update_eq_visibility, inputs=biomass_eq_count_ui, outputs=[biomass_col2_container, biomass_col3_container])
|
| 96 |
substrate_eq_count_ui.change(fn=update_eq_visibility, inputs=substrate_eq_count_ui, outputs=[substrate_col2_container, substrate_col3_container])
|
|
@@ -104,7 +103,6 @@ def create_interface(process_function_for_button):
|
|
| 104 |
with gr.Column(scale=3):
|
| 105 |
analysis_output = gr.Markdown(label="An谩lisis del Modelo por IA")
|
| 106 |
|
| 107 |
-
# Lista de todos los inputs para el bot贸n de submit
|
| 108 |
all_inputs_for_button = [
|
| 109 |
file_input,
|
| 110 |
biomass_eq1_ui, biomass_eq2_ui, biomass_eq3_ui,
|
|
@@ -131,18 +129,15 @@ def create_interface(process_function_for_button):
|
|
| 131 |
outputs=outputs_for_button
|
| 132 |
)
|
| 133 |
|
| 134 |
-
# Inicializar visibilidad usando demo.load
|
| 135 |
-
# Esto asegura que el estado inicial de visibilidad es correcto
|
| 136 |
def set_initial_visibility_on_load_wrapper(b_c_val, s_c_val, p_c_val):
|
| 137 |
-
# Obtener los valores iniciales de los gr.Number components
|
| 138 |
-
# y aplicar la l贸gica de visibilidad.
|
| 139 |
-
# Los valores de los Number inputs pueden ser float, convertirlos a int
|
| 140 |
b_c_int, s_c_int, p_c_int = int(b_c_val), int(s_c_val), int(p_c_val)
|
| 141 |
|
| 142 |
b_vis2_upd, b_vis3_upd = update_eq_visibility(b_c_int)
|
| 143 |
s_vis2_upd, s_vis3_upd = update_eq_visibility(s_c_int)
|
| 144 |
p_vis2_upd, p_vis3_upd = update_eq_visibility(p_c_int)
|
| 145 |
|
|
|
|
| 146 |
return b_vis2_upd, b_vis3_upd, s_vis2_upd, s_vis3_upd, p_vis2_upd, p_vis3_upd
|
| 147 |
|
| 148 |
demo.load(
|
|
|
|
| 1 |
# UI.py
|
| 2 |
import gradio as gr
|
| 3 |
+
import numpy as np
|
| 4 |
|
| 5 |
def create_interface(process_function_for_button):
|
| 6 |
with gr.Blocks(theme='gradio/soft') as demo:
|
|
|
|
| 16 |
legend_position_ui = gr.Dropdown(
|
| 17 |
label="Posici贸n de la leyenda",
|
| 18 |
choices=['best', 'upper right', 'upper left', 'lower right', 'lower left', 'center left', 'center right', 'lower center', 'upper center', 'center'],
|
| 19 |
+
value='best', # Asegura que el valor por defecto es uno de los choices
|
| 20 |
+
type="value" # Especificar el tipo de retorno si es ambiguo
|
| 21 |
)
|
| 22 |
with gr.Column(scale=1):
|
| 23 |
gr.Markdown("### Conteo de Ecuaciones a Probar")
|
| 24 |
+
biomass_eq_count_ui = gr.Number(label="Biomasa (1-3)", value=1.0, minimum=1.0, maximum=3.0, step=1.0, precision=0) # Usar float para gr.Number
|
| 25 |
+
substrate_eq_count_ui = gr.Number(label="Sustrato (1-3)", value=1.0, minimum=1.0, maximum=3.0, step=1.0, precision=0)
|
| 26 |
+
product_eq_count_ui = gr.Number(label="Producto (1-3)", value=1.0, minimum=1.0, maximum=3.0, step=1.0, precision=0)
|
| 27 |
|
| 28 |
# --- Secci贸n de Biomasa ---
|
| 29 |
with gr.Accordion("Ecuaciones y Par谩metros de Biomasa", open=True):
|
| 30 |
with gr.Row():
|
| 31 |
+
with gr.Column():
|
| 32 |
biomass_eq1_ui = gr.Textbox(label="Ecuaci贸n de Biomasa 1", value="Xm * (1 - exp(-um * (t - t_lag)))", lines=2, placeholder="Ej: Xm * (1 - exp(-um * (t - t_lag)))")
|
| 33 |
biomass_param1_ui = gr.Textbox(label="Par谩metros Biomasa 1", value="Xm, um, t_lag", info="Nombres, coma sep. Use 't' para tiempo. 'X_val' para X(t) en S/P.")
|
| 34 |
biomass_bound1_ui = gr.Textbox(label="L铆mites Biomasa 1", value="(0, np.inf), (0, np.inf), (0, np.inf)", info="Formato: (low,high). Use np.inf.")
|
|
|
|
| 88 |
|
| 89 |
# L贸gica para mostrar/ocultar campos de ecuaci贸n din谩micamente
|
| 90 |
def update_eq_visibility(count_value):
|
| 91 |
+
count = int(count_value)
|
| 92 |
+
return gr.update(visible=count >= 2), gr.update(visible=count >= 3)
|
|
|
|
|
|
|
| 93 |
|
| 94 |
biomass_eq_count_ui.change(fn=update_eq_visibility, inputs=biomass_eq_count_ui, outputs=[biomass_col2_container, biomass_col3_container])
|
| 95 |
substrate_eq_count_ui.change(fn=update_eq_visibility, inputs=substrate_eq_count_ui, outputs=[substrate_col2_container, substrate_col3_container])
|
|
|
|
| 103 |
with gr.Column(scale=3):
|
| 104 |
analysis_output = gr.Markdown(label="An谩lisis del Modelo por IA")
|
| 105 |
|
|
|
|
| 106 |
all_inputs_for_button = [
|
| 107 |
file_input,
|
| 108 |
biomass_eq1_ui, biomass_eq2_ui, biomass_eq3_ui,
|
|
|
|
| 129 |
outputs=outputs_for_button
|
| 130 |
)
|
| 131 |
|
| 132 |
+
# Inicializar visibilidad usando demo.load
|
|
|
|
| 133 |
def set_initial_visibility_on_load_wrapper(b_c_val, s_c_val, p_c_val):
|
|
|
|
|
|
|
|
|
|
| 134 |
b_c_int, s_c_int, p_c_int = int(b_c_val), int(s_c_val), int(p_c_val)
|
| 135 |
|
| 136 |
b_vis2_upd, b_vis3_upd = update_eq_visibility(b_c_int)
|
| 137 |
s_vis2_upd, s_vis3_upd = update_eq_visibility(s_c_int)
|
| 138 |
p_vis2_upd, p_vis3_upd = update_eq_visibility(p_c_int)
|
| 139 |
|
| 140 |
+
# Devolver los resultados de gr.update para cada componente de salida
|
| 141 |
return b_vis2_upd, b_vis3_upd, s_vis2_upd, s_vis3_upd, p_vis2_upd, p_vis3_upd
|
| 142 |
|
| 143 |
demo.load(
|