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(
|