Simulación de biorreactores con cinética microbiana, modos de operación y control, directamente en tu navegador
BioReact Lite es una aplicación web de simulación de biorreactores para explorar dinámicas de biomasa, sustrato, producto y volumen bajo distintos modelos cinéticos y modos de operación. Corre completamente en el navegador mediante Pyodide, por lo que el motor numérico en Python se ejecuta del lado del cliente, sin backend y sin instalación local obligatoria.
La app está pensada para docencia, análisis conceptual y experimentación rápida con balances de masa. Permite comparar cultivo batch, fed-batch y continuo, activar formación de producto, introducir inhibición por sustrato o producto y, en quimiostato, probar estrategias de control P, I, D, PI, PD y PID.
Entender cómo interactúan la cinética de crecimiento, la alimentación y la dilución suele requerir pasar entre apuntes, hojas de cálculo y scripts sueltos. Eso hace más difícil responder preguntas básicas de ingeniería:
- ¿Cuándo se agota el sustrato en batch?
- ¿Qué cambia realmente al pasar a fed-batch?
- ¿En qué condiciones aparece washout en continuo?
- ¿Qué hace una ganancia
Kcnegativa sobre el lazo cerrado? - ¿Cómo cambia la dinámica si el producto inhibe el crecimiento?
BioReact Lite compacta esas preguntas en una sola interfaz interactiva. Ajustas parámetros, ejecutas la simulación en segundos y ves inmediatamente las trayectorias temporales, el plano de fase, los caudales, la dilución y, cuando aplica, la respuesta del controlador.
Cuatro pasos. Sin instalación. Sin notebooks.
Paso 1 — Elige el modo de cultivo
Selecciona Lote (Batch), Lote alimentado (Fed-batch) o Continuo (Chemostat). El diagrama del reactor y los balances visibles se adaptan al modo activo.
Paso 2 — Define la cinética y la formación de producto
Ajusta μmax, Ks, Yxs y, según el modelo, parámetros adicionales como Ki, Kip, kp o kd. También puedes escoger si la formación de producto está ligada al crecimiento, no ligada al crecimiento o desactivada.
Paso 3 — Configura la operación del reactor
Establece condiciones iniciales (X0, S0, P0), volumen de trabajo, flujo de alimentación, concentración de sustrato en la alimentación, horizonte temporal y paso de integración. En fed-batch puedes limitar el volumen máximo; en continuo puedes fijar la dilución base o el sustrato de entrada.
Paso 4 — Activa control y explora resultados
Para quimiostato con cinética Monod o Haldane, puedes habilitar control P, I, D, PI, PD o PID, elegir variable controlada (S, X o P) y actuar sobre D o S_r. La app genera:
- trayectorias temporales de
X,S,Pyμ - diagrama de fases
X–S - evolución de volumen, caudal y dilución
- seguimiento de setpoint y actuador
- resumen con
X final,S final,P final,μ pico, agotamiento y salida final del actuador - panel expandible de guía conceptual y análisis de estabilidad
BioReact Lite resuelve balances dinámicos de biomasa, sustrato, producto y volumen mediante integración numérica RK4 de paso fijo.
X: biomasaS: sustratoP: productoV: volumen
El proyecto implementa siete variantes de μ:
| Modelo | Expresión / idea |
|---|---|
Monod |
saturación simple por sustrato |
Monod con muerte celular |
Monod con término de decaimiento kd en biomasa |
Haldane / Andrews |
inhibición por sustrato a concentraciones altas |
Inhibición competitiva por producto |
el producto aumenta la saturación aparente |
Inhibición no competitiva por producto |
el producto reduce la μ efectiva |
Inhibición lineal por producto |
penalización lineal con kpP |
Inhibición exponencial por producto |
decaimiento exponencial con acumulación de producto |
La tasa específica de producto q_p puede modelarse como:
- sin producto
- ligada al crecimiento:
q_p = αμ - no ligada al crecimiento:
q_p = β
Batch
Fed-batch
Continuo
Con D > μ, el sistema entra en régimen de washout y la biomasa colapsa.
Cuando el modo es continuous y la cinética es Monod o Haldane, el simulador puede cerrar el lazo sobre una variable medida (S, X o P). El actuador puede ser:
Dcomo tasa de diluciónS_rcomo concentración de sustrato en la alimentación
El controlador soporta modos P, I, D, PI, PD y PID, con saturación por límites control_min y control_max. La interfaz también muestra una sección de linealización y estabilidad para interpretar el efecto de Kc sobre la jacobiana y los eigenvalores del sistema.
| Cero backend | El simulador corre completamente en el navegador con Pyodide |
| Tres modos de operación | Batch, fed-batch y continuo en una sola interfaz |
| Siete modelos cinéticos | Desde Monod hasta inhibición por producto y muerte celular |
| Producto opcional | Sin producto, crecimiento-asociado o no asociado |
| Control en quimiostato | P, I, D, PI, PD y PID para Monod y Haldane |
| Actuadores alternos | Manipulación de D o S_r en continuo |
| Gráficas interactivas | Series temporales, plano de fase, volumen/caudales y seguimiento de control |
| Métricas resumen | Valores finales, μ pico, agotamiento de sustrato y salida final del actuador |
| Guía integrada | Explicación expandible de balances, cinética, control y estabilidad |
| Despliegue estático | Puede publicarse directamente en GitHub Pages |
mu_maxKsKiKipkpYxskdalphabeta
X0,S0,P0V_workingFV_maxS_rDdtt_final
control_setpointcontrol_kccontrol_tau_icontrol_tau_dcontrol_mincontrol_max
No todos los parámetros aparecen siempre. La interfaz activa u oculta controles según el modo de cultivo, el modelo cinético y el esquema de control seleccionado.
Motor de simulación
Frontend
Legacy / referencia
BioReact-Lite/
├── index.html ← interfaz principal
├── styles.css ← estilos y layout de la app web
├── app.js ← lógica UI, Plotly, Pyodide y análisis de estabilidad
├── simulator.py ← motor de simulación en Python ejecutado en el navegador
├── app.py ← versión legacy en Streamlit, conservada como referencia
├── requirements.txt ← dependencias de la versión Streamlit legacy
├── Fig/
│ └── Fig1.png ← captura usada en este README
├── Scripts_python_legacy/ ← notebooks históricos del proyecto
└── Referencias/ ← material documental de apoyo
Como Pyodide no carga correctamente desde file://, sirve el directorio con un servidor HTTP local:
cd /home/ebald/github/BioReact-Lite
python3 -m http.server 8000Luego abre:
http://localhost:8000
El proyecto está preparado para publicación estática. Con GitHub Pages configurado como Deploy from a branch sobre main, la app puede servirse directamente desde:
https://ebalderasr.github.io/BioReact-Lite/
Usa rutas relativas (./styles.css, ./app.js, ./simulator.py), así que no necesita backend ni build step.
La entrada principal actual del proyecto es index.html. El archivo app.py permanece en el repositorio como implementación histórica en Streamlit, útil como referencia, pero ya no es la vía recomendada de ejecución ni despliegue.
