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

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).

Referencias


Por Pedro Sordo Martínez — amurlaniakea@gmail.com
Licencia: AGPL-3.0-or-later

Top comments (1)

Collapse
 
magopredator profile image
Fenix •

luego lo compongo ;) gracias piano piano se va lontano