C2MV commited on
Commit
4ff26a2
1 Parent(s): fb1081e

Update UI.py

Browse files
Files changed (1) hide show
  1. UI.py +118 -68
UI.py CHANGED
@@ -1,75 +1,125 @@
1
- # UI.py
2
-
3
  import gradio as gr
4
  from interface import process_and_plot
5
 
6
  def create_interface():
7
- # Definir los componentes de entrada
8
- inputs = [
9
- gr.File(label="Sube tu archivo Excel"),
10
- # Ecuaciones de Biomasa
11
- gr.Textbox(label="Ecuación de Biomasa 1", value="xo*exp(um*t)"),
12
- gr.Textbox(label="Ecuación de Biomasa 2", value=""),
13
- gr.Textbox(label="Ecuación de Biomasa 3", value=""),
14
- # Parámetros de Biomasa
15
- gr.Textbox(label="Parámetros de Biomasa 1", value="xo, um"),
16
- gr.Textbox(label="Parámetros de Biomasa 2", value=""),
17
- gr.Textbox(label="Parámetros de Biomasa 3", value=""),
18
- # Límites de Biomasa
19
- gr.Textbox(label="Límites de Biomasa 1", value="[ (0, np.inf), (0, np.inf) ]"),
20
- gr.Textbox(label="Límites de Biomasa 2", value=""),
21
- gr.Textbox(label="Límites de Biomasa 3", value=""),
22
- # Ecuaciones de Sustrato
23
- gr.Textbox(label="Ecuación de Sustrato 1", value="so - k1*X(t)"),
24
- gr.Textbox(label="Ecuación de Sustrato 2", value=""),
25
- gr.Textbox(label="Ecuación de Sustrato 3", value=""),
26
- # Parámetros de Sustrato
27
- gr.Textbox(label="Parámetros de Sustrato 1", value="so, k1"),
28
- gr.Textbox(label="Parámetros de Sustrato 2", value=""),
29
- gr.Textbox(label="Parámetros de Sustrato 3", value=""),
30
- # Límites de Sustrato
31
- gr.Textbox(label="Límites de Sustrato 1", value="[ (0, np.inf), (0, np.inf) ]"),
32
- gr.Textbox(label="Límites de Sustrato 2", value=""),
33
- gr.Textbox(label="Límites de Sustrato 3", value=""),
34
- # Ecuaciones de Producto
35
- gr.Textbox(label="Ecuación de Producto 1", value="po + k2*X(t)"),
36
- gr.Textbox(label="Ecuación de Producto 2", value=""),
37
- gr.Textbox(label="Ecuación de Producto 3", value=""),
38
- # Parámetros de Producto
39
- gr.Textbox(label="Parámetros de Producto 1", value="po, k2"),
40
- gr.Textbox(label="Parámetros de Producto 2", value=""),
41
- gr.Textbox(label="Parámetros de Producto 3", value=""),
42
- # Límites de Producto
43
- gr.Textbox(label="Límites de Producto 1", value="[ (0, np.inf), (0, np.inf) ]"),
44
- gr.Textbox(label="Límites de Producto 2", value=""),
45
- gr.Textbox(label="Límites de Producto 3", value=""),
46
- # Opciones de visualización
47
- gr.Dropdown(
48
- choices=['best', 'upper right', 'upper left', 'lower right', 'lower left'],
49
- label="Posición de la Leyenda",
50
- value='best'
51
- ),
52
- gr.Checkbox(label="Mostrar Leyenda", value=True),
53
- gr.Checkbox(label="Mostrar Parámetros", value=True),
54
- # Contadores de ecuaciones
55
- gr.Number(label="Número de Ecuaciones de Biomasa", value=1, precision=0),
56
- gr.Number(label="Número de Ecuaciones de Sustrato", value=1, precision=0),
57
- gr.Number(label="Número de Ecuaciones de Producto", value=1, precision=0),
58
- ]
59
 
60
- # Definir los componentes de salida
61
- outputs = [
62
- gr.Image(type="pil", label="Gráfica Resultante"),
63
- gr.Textbox(label="Análisis del Modelo"),
64
- ]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
 
66
- # Crear la interfaz
67
- interface = gr.Interface(
68
- fn=process_and_plot,
69
- inputs=inputs,
70
- outputs=outputs,
71
- title="Modelo de Bioproceso",
72
- description="Sube un archivo Excel con tus datos experimentales para ajustar el modelo y visualizar los resultados.",
73
- )
74
 
75
- return interface
 
 
 
1
  import gradio as gr
2
  from interface import process_and_plot
3
 
4
  def create_interface():
5
+ """
6
+ Esta función crea la interfaz de usuario y la devuelve para que pueda ser lanzada
7
+ desde app.py utilizando demo.launch().
8
+ """
9
+
10
+ def parse_bounds(bounds_str, num_params):
11
+ try:
12
+ bounds = eval(f"[{bounds_str}]")
13
+ if len(bounds) != num_params:
14
+ raise ValueError
15
+ lower_bounds = [b[0] for b in bounds]
16
+ upper_bounds = [b[1] for b in bounds]
17
+ return lower_bounds, upper_bounds
18
+ except:
19
+ lower_bounds = [-float('inf')] * num_params
20
+ upper_bounds = [float('inf')] * num_params
21
+ return lower_bounds, upper_bounds
22
+
23
+ with gr.Blocks() as demo:
24
+ # Título de la interfaz
25
+ gr.Markdown("# Modelado de Bioprocesos con Ajuste de Datos")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
 
27
+ with gr.Row():
28
+ with gr.Column():
29
+ # Subir archivo Excel
30
+ file_input = gr.File(label="Subir archivo Excel", file_types=[".xlsx"])
31
+
32
+ # Entradas de ecuaciones de Biomasa
33
+ biomass_eq1 = gr.Textbox(label="Ecuación de Biomasa 1", value="xo * exp(um * t)")
34
+ biomass_eq2 = gr.Textbox(label="Ecuación de Biomasa 2", value="")
35
+ biomass_eq3 = gr.Textbox(label="Ecuación de Biomasa 3", value="")
36
+
37
+ # Parámetros de Biomasa
38
+ biomass_param1 = gr.Textbox(label="Parámetros de Biomasa 1 (separados por coma)", value="xo, xm, um")
39
+ biomass_param2 = gr.Textbox(label="Parámetros de Biomasa 2 (separados por coma)", value="")
40
+ biomass_param3 = gr.Textbox(label="Parámetros de Biomasa 3 (separados por coma)", value="")
41
+
42
+ # Límites de los parámetros para Biomasa
43
+ biomass_bound1 = gr.Textbox(label="Límites de Parámetros de Biomasa 1 (formato: (low, high) para cada parámetro)", value="(0, np.inf), (0, np.inf), (0, np.inf)")
44
+ biomass_bound2 = gr.Textbox(label="Límites de Parámetros de Biomasa 2 (formato: (low, high) para cada parámetro)", value="")
45
+ biomass_bound3 = gr.Textbox(label="Límites de Parámetros de Biomasa 3 (formato: (low, high) para cada parámetro)", value="")
46
+
47
+ # Número de ecuaciones de Biomasa
48
+ biomass_eq_count = gr.Number(label="Número de ecuaciones de Biomasa", value=1, precision=0)
49
+
50
+ with gr.Column():
51
+ # Entradas de ecuaciones de Sustrato
52
+ substrate_eq1 = gr.Textbox(label="Ecuación de Sustrato 1", value="so - p * X(t)")
53
+ substrate_eq2 = gr.Textbox(label="Ecuación de Sustrato 2", value="")
54
+ substrate_eq3 = gr.Textbox(label="Ecuación de Sustrato 3", value="")
55
+
56
+ # Parámetros de Sustrato
57
+ substrate_param1 = gr.Textbox(label="Parámetros de Sustrato 1 (separados por coma)", value="so, p, q")
58
+ substrate_param2 = gr.Textbox(label="Parámetros de Sustrato 2 (separados por coma)", value="")
59
+ substrate_param3 = gr.Textbox(label="Parámetros de Sustrato 3 (separados por coma)", value="")
60
+
61
+ # Límites de los parámetros para Sustrato
62
+ substrate_bound1 = gr.Textbox(label="Límites de Parámetros de Sustrato 1 (formato: (low, high) para cada parámetro)", value="(0, np.inf), (0, np.inf), (0, np.inf)")
63
+ substrate_bound2 = gr.Textbox(label="Límites de Parámetros de Sustrato 2 (formato: (low, high) para cada parámetro)", value="")
64
+ substrate_bound3 = gr.Textbox(label="Límites de Parámetros de Sustrato 3 (formato: (low, high) para cada parámetro)", value="")
65
+
66
+ # Número de ecuaciones de Sustrato
67
+ substrate_eq_count = gr.Number(label="Número de ecuaciones de Sustrato", value=1, precision=0)
68
+
69
+ with gr.Column():
70
+ # Entradas de ecuaciones de Producto
71
+ product_eq1 = gr.Textbox(label="Ecuación de Producto 1", value="po + alpha * X(t)")
72
+ product_eq2 = gr.Textbox(label="Ecuación de Producto 2", value="")
73
+ product_eq3 = gr.Textbox(label="Ecuación de Producto 3", value="")
74
+
75
+ # Parámetros de Producto
76
+ product_param1 = gr.Textbox(label="Parámetros de Producto 1 (separados por coma)", value="po, alpha, beta")
77
+ product_param2 = gr.Textbox(label="Parámetros de Producto 2 (separados por coma)", value="")
78
+ product_param3 = gr.Textbox(label="Parámetros de Producto 3 (separados por coma)", value="")
79
+
80
+ # Límites de los parámetros para Producto
81
+ product_bound1 = gr.Textbox(label="Límites de Parámetros de Producto 1 (formato: (low, high) para cada parámetro)", value="(0, np.inf), (0, np.inf), (0, np.inf)")
82
+ product_bound2 = gr.Textbox(label="Límites de Parámetros de Producto 2 (formato: (low, high) para cada parámetro)", value="")
83
+ product_bound3 = gr.Textbox(label="Límites de Parámetros de Producto 3 (formato: (low, high) para cada parámetro)", value="")
84
+
85
+ # Número de ecuaciones de Producto
86
+ product_eq_count = gr.Number(label="Número de ecuaciones de Producto", value=1, precision=0)
87
+
88
+ # Opciones de visualización
89
+ show_legend = gr.Checkbox(label="Mostrar leyenda", value=True)
90
+ show_params = gr.Checkbox(label="Mostrar parámetros ajustados", value=True)
91
+ legend_position = gr.Dropdown(label="Posición de la leyenda", choices=['best', 'upper right', 'upper left', 'lower right', 'lower left'], value='best')
92
+
93
+ # Botón para procesar y graficar
94
+ submit_button = gr.Button("Procesar y graficar")
95
+
96
+ # Salidas: imagen del gráfico y análisis
97
+ image_output = gr.Image(label="Gráfico generado")
98
+ analysis_output = gr.Textbox(label="Análisis del Modelo", lines=10)
99
+
100
+ # Conexión entre el botón y la función process_and_plot
101
+ submit_button.click(
102
+ fn=process_and_plot,
103
+ inputs=[
104
+ file_input,
105
+ biomass_eq1, biomass_eq2, biomass_eq3,
106
+ biomass_param1, biomass_param2, biomass_param3,
107
+ biomass_bound1, biomass_bound2, biomass_bound3,
108
+ substrate_eq1, substrate_eq2, substrate_eq3,
109
+ substrate_param1, substrate_param2, substrate_param3,
110
+ substrate_bound1, substrate_bound2, substrate_bound3,
111
+ product_eq1, product_eq2, product_eq3,
112
+ product_param1, product_param2, product_param3,
113
+ product_bound1, product_bound2, product_bound3,
114
+ legend_position,
115
+ show_legend,
116
+ show_params,
117
+ biomass_eq_count,
118
+ substrate_eq_count,
119
+ product_eq_count
120
+ ],
121
+ outputs=[image_output, analysis_output]
122
+ )
123
 
124
+ return demo
 
 
 
 
 
 
 
125