File size: 8,045 Bytes
7718056
 
f3f77c0
e573349
8da03c5
 
4ff26a2
 
 
 
 
5e8a182
4ff26a2
448e022
8da03c5
4ff26a2
 
 
 
 
 
7718056
 
 
 
4ff26a2
 
 
 
7718056
 
 
 
4ff26a2
 
 
 
7718056
 
 
 
 
 
 
 
 
 
 
 
4ff26a2
 
7718056
 
 
 
 
4ff26a2
 
 
7718056
 
39cf1b1
7718056
4ff26a2
 
 
 
7718056
 
 
 
4ff26a2
 
 
 
7718056
 
 
 
 
 
 
 
 
 
 
 
4ff26a2
 
7718056
 
 
 
 
4ff26a2
 
 
7718056
 
39cf1b1
7718056
4ff26a2
 
 
 
7718056
 
 
 
4ff26a2
 
 
 
7718056
 
 
 
 
 
 
 
 
 
 
 
4ff26a2
 
7718056
 
 
 
 
e573349
4ff26a2
 
 
7718056
 
 
 
 
4ff26a2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8da03c5
4ff26a2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# UI.py

import gradio as gr
from interface import process_and_plot  # Asegúrate de que la ruta es correcta

def create_interface():
    """
    Esta función crea la interfaz de usuario y la devuelve para que pueda ser lanzada
    desde app.py utilizando demo.launch().
    """
    
    with gr.Blocks(theme='upsatwal/mlsc_tiet') as demo:
        # Título de la interfaz
        gr.Markdown("# Modelado de Bioprocesos con Ajuste de Datos (Qwen-2.5-7B-Instruct)")

        with gr.Row():
            with gr.Column():
                # Subir archivo Excel
                file_input = gr.File(label="Subir archivo Excel", file_types=[".xlsx"])
                
                # Entradas de ecuaciones de Biomasa
                biomass_eq1 = gr.Textbox(
                    label="Ecuación de Biomasa 1",
                    value="(xo * exp(um * t)) / (1 - (xo / xm) * (1 - exp(um * t)))"
                )
                biomass_eq2 = gr.Textbox(label="Ecuación de Biomasa 2", value="")
                biomass_eq3 = gr.Textbox(label="Ecuación de Biomasa 3", value="")
                
                # Parámetros de Biomasa
                biomass_param1 = gr.Textbox(
                    label="Parámetros de Biomasa 1 (separados por coma)",
                    value="xo, xm, um"
                )
                biomass_param2 = gr.Textbox(label="Parámetros de Biomasa 2 (separados por coma)", value="")
                biomass_param3 = gr.Textbox(label="Parámetros de Biomasa 3 (separados por coma)", value="")
                
                # Límites de los parámetros para Biomasa
                biomass_bound1 = gr.Textbox(
                    label="Límites de Parámetros de Biomasa 1 (formato: (low, high) para cada parámetro)",
                    value="(0, inf), (0, inf), (0, inf)"
                )
                biomass_bound2 = gr.Textbox(
                    label="Límites de Parámetros de Biomasa 2 (formato: (low, high) para cada parámetro)",
                    value=""
                )
                biomass_bound3 = gr.Textbox(
                    label="Límites de Parámetros de Biomasa 3 (formato: (low, high) para cada parámetro)",
                    value=""
                )
                
                # Número de ecuaciones de Biomasa
                biomass_eq_count = gr.Number(
                    label="Número de ecuaciones de Biomasa",
                    value=1,
                    precision=0
                )

            with gr.Column():
                # Entradas de ecuaciones de Sustrato
                substrate_eq1 = gr.Textbox(
                    label="Ecuación de Sustrato 1",
                    value="so - p * X(t) - q * log(1 - (xo / xm) * (1 - exp(um * t)))"
                )
                substrate_eq2 = gr.Textbox(label="Ecuación de Sustrato 2", value="")
                substrate_eq3 = gr.Textbox(label="Ecuación de Sustrato 3", value="")
                
                # Parámetros de Sustrato
                substrate_param1 = gr.Textbox(
                    label="Parámetros de Sustrato 1 (separados por coma)",
                    value="so, p, q"
                )
                substrate_param2 = gr.Textbox(label="Parámetros de Sustrato 2 (separados por coma)", value="")
                substrate_param3 = gr.Textbox(label="Parámetros de Sustrato 3 (separados por coma)", value="")
                
                # Límites de los parámetros para Sustrato
                substrate_bound1 = gr.Textbox(
                    label="Límites de Parámetros de Sustrato 1 (formato: (low, high) para cada parámetro)",
                    value="(0, inf), (0, inf), (0, inf)"
                )
                substrate_bound2 = gr.Textbox(
                    label="Límites de Parámetros de Sustrato 2 (formato: (low, high) para cada parámetro)",
                    value=""
                )
                substrate_bound3 = gr.Textbox(
                    label="Límites de Parámetros de Sustrato 3 (formato: (low, high) para cada parámetro)",
                    value=""
                )
                
                # Número de ecuaciones de Sustrato
                substrate_eq_count = gr.Number(
                    label="Número de ecuaciones de Sustrato",
                    value=1,
                    precision=0
                )
            
            with gr.Column():
                # Entradas de ecuaciones de Producto
                product_eq1 = gr.Textbox(
                    label="Ecuación de Producto 1",
                    value="po + alpha * X(t) + beta * log(1 - (xo / xm) * (1 - exp(um * t)))"
                )
                product_eq2 = gr.Textbox(label="Ecuación de Producto 2", value="")
                product_eq3 = gr.Textbox(label="Ecuación de Producto 3", value="")
                
                # Parámetros de Producto
                product_param1 = gr.Textbox(
                    label="Parámetros de Producto 1 (separados por coma)",
                    value="po, alpha, beta"
                )
                product_param2 = gr.Textbox(label="Parámetros de Producto 2 (separados por coma)", value="")
                product_param3 = gr.Textbox(label="Parámetros de Producto 3 (separados por coma)", value="")
                
                # Límites de los parámetros para Producto
                product_bound1 = gr.Textbox(
                    label="Límites de Parámetros de Producto 1 (formato: (low, high) para cada parámetro)",
                    value="(0, inf), (0, inf), (0, inf)"
                )
                product_bound2 = gr.Textbox(
                    label="Límites de Parámetros de Producto 2 (formato: (low, high) para cada parámetro)",
                    value=""
                )
                product_bound3 = gr.Textbox(
                    label="Límites de Parámetros de Producto 3 (formato: (low, high) para cada parámetro)",
                    value=""
                )
                
                # Número de ecuaciones de Producto
                product_eq_count = gr.Number(
                    label="Número de ecuaciones de Producto",
                    value=1,
                    precision=0
                )

        # Opciones de visualización
        show_legend = gr.Checkbox(label="Mostrar leyenda", value=True)
        show_params = gr.Checkbox(label="Mostrar parámetros ajustados", value=True)
        legend_position = gr.Dropdown(
            label="Posición de la leyenda",
            choices=['best', 'upper right', 'upper left', 'lower right', 'lower left'],
            value='best'
        )
        
        # Botón para procesar y graficar
        submit_button = gr.Button("Procesar y graficar")
        
        # Salidas: imagen del gráfico y análisis
        image_output = gr.Image(label="Gráfico generado")
        analysis_output = gr.Textbox(label="Análisis del Modelo", lines=10)
        
        # Conexión entre el botón y la función process_and_plot
        submit_button.click(
            fn=process_and_plot,
            inputs=[
                file_input,
                biomass_eq1, biomass_eq2, biomass_eq3,
                biomass_param1, biomass_param2, biomass_param3,
                biomass_bound1, biomass_bound2, biomass_bound3,
                substrate_eq1, substrate_eq2, substrate_eq3,
                substrate_param1, substrate_param2, substrate_param3,
                substrate_bound1, substrate_bound2, substrate_bound3,
                product_eq1, product_eq2, product_eq3,
                product_param1, product_param2, product_param3,
                product_bound1, product_bound2, product_bound3,
                legend_position,
                show_legend,
                show_params,
                biomass_eq_count,
                substrate_eq_count,
                product_eq_count
            ],
            outputs=[image_output, analysis_output]
        )

    return demo