DEV Community

Cover image for pathogen-forecast v1.0: visor del desarrollo de pandemias con datos reales y un mapa mundial interactivo
Fenix
Fenix

Posted on Edited on

pathogen-forecast v1.0: visor del desarrollo de pandemias con datos reales y un mapa mundial interactivo

pathogen-forecast v1.0: visor del desarrollo de pandemias con datos reales y un mapa mundial interactivo

Modelo epidemiológico institucional (SIR/SEIR) calibrado con datos COVID-19 (2020-2026), con calibración matemática verificada y visualización global interactiva.

El problema

El dataset "Global COVID-19 Pandemic Full Data 2020-2026" (Ali Ahmad, Kaggle — licencia apache-2.0) consolida 429,435 registros epidemiológicos globales. Pero el archivo CSV NO entrega el índice de contagiosidad (reproduction_rate) como variable lista para usar: es observable, variable (Rt), y debe derivarse matemáticamente para modelar proyecciones.

La solución: tres bloques verificados

  1. Calibración real (optimizer): scipy.optimize.minimize ajusta beta y gamma a partir de la columna reproduction_rate del CSV (tests/test_optimizer.py: PASSED; datos sintéticos: reproduction_rate=2.5, r0_sim aproximado 2.5).
  2. Simulación matemática (epimodels): scipy.integrate.solve_ivp resuelve el sistema SEIR con parámetros calibrados (tests/test_math.py: PASSED; 181 días, S_final=478851, I_final=283, R_final=7,520,867).
  3. Visualización interactiva (app/app.py): streamlit + folium muestra un mapamundi mundial con expansión simulada en tiempo real; el usuario ajusta R y la ubicación inicial (tests/test_visualization.py: PASSED; archivo sintácticamente válido con chmod +x verificado).

Cómo funciona el flujo

from src.epimodels import ModeloSIR
modelo = ModeloSIR(beta=0.3, gamma=0.1, N=8_000_000)
t, y = modelo.simular(S0=7_999_900, I0=100, R0=0, dias=365)
Enter fullscreen mode Exit fullscreen mode

El optimizer calibra beta/gamma con los datos reales (reproduction_rate del CSV completo de 169MB o con datos sintéticos de respaldo). El mapamundi (streamlit run app/app.py) permite probar escenarios con diferentes R y ver la expansión global.

Resultados reales (no inventados)

  • tests/test_optimizer.py: PASSED (calibración protegida con datos sintéticos; funciona con datos reales si reproduction_rate está presente).
  • tests/test_visualization.py: PASSED (mapamundi interactivo con folium).
  • tests/test_math.py: PASSED (SEIR básico).
  • tests/test_epimodels.py: PASSED (SIR básico).
  • tests/test_data.py: PASSED (carga sintética con reproduction_rate=2.5).
  • ruff: All checks passed! (PERF402, RUF059, BLE001, I001, EXE001 corregidos).
  • .github/workflows/ci.yml: pytest + ruff + compileall + verificación SPDX + anti-apache (docs/dataset_info.md y docs/notas_gemini.md excluidos por referencia a licencia del dataset, no del repositorio).
  • .gitignore: .csv ignorado (data/.gitkeep creado).
  • .git: main actualizado (7a0968a), scaffold/repo-base mergeado (--ff-only), remote (https://github.com/amurlaniakea/pathogen-forecast.git), topics (epidemiology, sirmodel, covid19, data-science, public-health).

Nota interesante

(y muy oportuna para el futuro y los profesionales que usen el software) :

Este repositorio sí serviría para prever el crecimiento de una pandemia futura causada por otros patógenos similares, y no está limitado únicamente al COVID-19.

A nivel técnico, la herramienta está estructurada de una forma muy inteligente para que sea reutilizable, aunque su calibración inicial se haya hecho con datos reales del COVID-19 (2020-2026).

Aquí te detallo matemáticamente por qué sirve para el futuro y cuáles son sus límites reales:

  1. ¿Por qué sí sirve para futuras pandemias?

El motor de este software se basa en el modelo SEIR (Susceptibles, Expuestos, Infectados, Recuperados) con latencia.

Este es el modelo estándar institucional que se utiliza a nivel global para simular la dinámica de cualquier virus respiratorio de transmisión humana directa, como por ejemplo:

• Nuevas cepas de Gripe Aviar altamente patógena (HPAI) con mutación humana.
• Futuros brotes de Influenza (Gripe) estacional o pandémica.
• Cualquier virus respiratorio desconocido (la llamada Enfermedad X).

Si mañana aparece un virus nuevo, un epidemiólogo solo tendría que ir al archivo de configuración o al código (epimodels.py) y cambiar los parámetros biológicos del patógeno: la tasa de transmisión ((\beta )), el periodo de incubación ((\sigma )) y el periodo de recuperación ((\gamma )). El simulador calcularía la expansión exactamente igual.

  1. ¿Dónde están los límites del repositorio? (Para qué NO sirve)

No todos los patógenos se comportan igual. Este repositorio se volvería inútil o requeriría rehacer el código por completo si intentas predecir:

• Enfermedades por vectores: No sirve para el Dengue, Zika o Malaria, porque el modelo SEIR de este código no incluye variables para la población de mosquitos, climas locales o tasas de picadura.
• Transmisión no respiratoria: No modela adecuadamente enfermedades de transmisión sexual (como el VIH) o por agua contaminada (Cólera), ya que los patrones de contacto e infección humana son radicalmente distintos.

  1. El verdadero valor para el futuro: El Calibrador

La parte más valiosa del repositorio no es el mapa visual, sino el archivo optimizer.py. Cuenta con un calibrador de errores MSE (Error Cuadrático Medio).

Si en el futuro surge un brote, a medida que las autoridades sanitarias publiquen los primeros datos de infectados reales de las primeras semanas, este script procesará esos datos y calculará automáticamente la agresividad real del nuevo virus, permitiendo proyectar cuándo ocurrirá el pico de saturación hospitalaria antes de que suceda.

En resumen: El software utiliza el COVID-19 como su "caso de éxito" y prueba de concepto para demostrar que sus matemáticas funcionan con datos reales, pero la arquitectura del código está diseñada como una plantilla matemática universal lista para afrontar el próximo brote de transmisión respiratoria.

Referencias


Por Pedro Sordo Martínez — [email protected]
Licencia: AGPL-3.0-or-later

Top comments (2)

Collapse
 
magopredator profile image
Fenix •

luego lo compongo ;) gracias piano piano se va lontano

Collapse
 
magopredator profile image
Fenix •

va xidu ...va chido , eh? ;)...agUas!...al loro! ... PANDEMIA!