Skip to main content
Glama

AMR-Climate Atlas: atribución causal del clima a la resistencia a los antimicrobianos

Proyecto 2 de una cartera de tres proyectos sobre clima y salud (consulta ../harvard-dataverse-climate-health-projects.md). Alcance: ../amr-climate-causal-attribution-scoping.md · Plan de desarrollo: ../amr-climate-causal-attribution-phases.md · Documento completo: docs/paper.md.

Estado: las cuatro fases completadas. Panel de la UE/EEE (29 países, 2000–2023, 4 combinaciones patógeno-antibiótico), un modelo causal correctamente probado, una verificación cruzada genómica, una aplicación Streamlit en vivo, un servidor MCP que expone las fuentes de datos en vivo y un pipeline de validación automatizada con compuerta de evaluación.

Captura de pantalla de la aplicación: combinación K. pneumoniae/Carbapenémicos, Grecia 2023 resaltada en la parte superior de la distribución de resistencia, con la advertencia de la prueba causal mostrada sobre el gráfico

El hallazgo

Una regresión de panel con efectos fijos bidireccionales (país + año), con una prueba placebo de permutación obligatoria de más de 200 permutaciones sobre cada resultado antes de que se le permita llamarse significativo:

Combinación

n

Coef

p paramétrica

p de permutación

E. coli / Fluoroquinolonas

642

+0.11

0.77

0.62

E. coli / Cefalosporinas de 3.ª generación

642

+0.21

0.54

0.31

K. pneumoniae / Carbapenémicos (2010-2022, ajustado por consumo)

355

−1.73

0.008

0.000

S. aureus / MRSA

667

−0.13

0.89

0.69

3 de las 4 combinaciones no muestran ningún efecto climático en ninguna parte. La única excepción —la resistencia a carbapenémicos de K. pneumoniae, en la submuestra 2010–2022 ajustada por consumo de ESAC-Net— es real (estable al dejar un país fuera, no impulsada por la COVID) y confirmada direccionalmente por datos independientes de secuenciación genómica (NCBI Pathogen Detection/MicroBIGG-E, mismo signo negativo, correlación r=+0,38 con la tasa fenotípica), pero no aparece en el panel completo de 2000–2023, y el propio consumo de antibióticos no es significativo en el modelo que se supone que debe controlarlo. Se interpreta como: un patrón real, acotado y específico de una ventana de muestra, no un vínculo causal confirmado clima→RAM.

Este resultado superó un proceso de control de calidad real: una pasada de pruebas independiente detectó una prueba de permutación faltante en el modelo ajustado por consumo, y una verificación de robustez posterior detectó un error de selección de columna de confusores que significaba que el consumo de antibióticos en realidad nunca estuvo en el modelo como se informó inicialmente. Ambos se revelan claramente en docs/paper.md en lugar de suavizarse.

Related MCP server: DMAP-AI MCP Server

Qué hay en este repositorio

app.py                         Streamlit atlas — combo explorer, causal-test caveat, rankings
mcp_server/                    live-data MCP server (NASA POWER + BigQuery, not the frozen CSV)
data/
  eu_eea_pilot_panel.csv       joined country-year-combo panel (join_panel.py's output)
  validation_baseline.json     accepted "known good" snapshot for the eval-gate pipeline
  raw/                         gitignored raw pulls (ECDC, NASA POWER, ESAC-Net, EPI)
validation_runs/               timestamped JSON logs from validate_pipeline.py runs
docs/
  phase1_access_check.md       access-verification memo
  phase3_scoping.md            causal-design scoping, grounded in the real pilot data
  phase4_scoping.md            scale-up fork (WHO GLASS vs. BigQuery vs. deepen EU/EEA) + genomic cross-check
  paper.md                     full write-up: methods, bugs found and fixed, results
src/amr_climate_atlas/
  config.py                    country lists, centroids, DOIs, ECDC/NASA POWER/BigQuery constants
  fetch_ears_net.py            EARS-Net resistance rates via ECDC Atlas (fully scriptable, see below)
  fetch_esac_net.py            antibiotic-consumption confounder (static XLSX annexes, 2010-2022)
  fetch_weather_anomaly.py     daily weather per EU/EEA country centroid (NASA POWER)
  fetch_confounders.py         EPI 2024 tabular confounder from Harvard Dataverse
  join_panel.py                joins resistance + weather + EPI into the country-year panel
  stage3_identification.py     two-way FE model + mandatory permutation test + lag check, per combo
  compare_genomic_phenotypic.py genomic (BigQuery) vs. phenotypic (EARS-Net) cross-check
  validate_pipeline.py         automated eval-gate: rerun + placebo-sanity-check + baseline drift check
.github/workflows/validate.yml ready-to-run CI (fires once this repo is pushed to GitHub)

Dos hallazgos que vale la pena señalar de antemano

  1. La exportación del Atlas de Vigilancia del ECDC es totalmente automatizable, no solo mediante interfaz manual. La exportación lanza una petición GET parametrizada simple, y su parámetro downloadTokenId en realidad no se valida en el servidor — cualquier valor funciona una vez que se inicia una cookie de sesión. fetch_ears_net.py obtiene la cuadrícula completa país×año para una combinación patógeno-antibiótico determinada en dos peticiones HTTP.

  2. La API de Dataverse devuelve un 403 al User-Agent predeterminado de python-requests — no documentado en ningún sitio, se requiere un agente de usuario similar al de un navegador (consulta config.DATAVERSE_REQUEST_HEADERS).

Inicio rápido

python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

PYTHONPATH=src python -m amr_climate_atlas.fetch_ears_net        # ECDC EARS-Net resistance rates
PYTHONPATH=src python -m amr_climate_atlas.fetch_esac_net        # antibiotic consumption confounder
PYTHONPATH=src python -m amr_climate_atlas.fetch_weather_anomaly # NASA POWER, EU/EEA centroids
PYTHONPATH=src python -m amr_climate_atlas.fetch_confounders     # EPI 2024 from Dataverse
PYTHONPATH=src python -m amr_climate_atlas.join_panel            # join panel
PYTHONPATH=src python -m amr_climate_atlas.stage3_identification # causal model + permutation test

streamlit run app.py                                            # the live atlas

Servidor MCP: datos en vivo, no solo el CSV congelado

mcp_server/ expone dos de las fuentes de datos de este proyecto a través del Model Context Protocol, de modo que cualquier cliente compatible con MCP (Claude Desktop, un agente personalizado) pueda consultar datos meteorológicos en vivo o datos genómicos de RAM en vivo bajo demanda, en lugar de solo leer eu_eea_pilot_panel.csv. Construido sobre el SDK oficial de Python mcp de Anthropic (no la terminología inventada de "MCP 2.0"/"Agent Plugins" que usó un borrador anterior de este alcance — consulta mcp_server/README.md para la corrección terminológica completa y un hallazgo real de deriva de API: la clase FastMCP que usan la mayoría de los tutoriales se ha eliminado del SDK actual). Probado con un cliente genuino de proceso externo (mcp_server/test_external_client.py), no solo con una llamada en proceso: datos meteorológicos reales de París, prevalencia real de genes de carbapenemasas (16,83 %) en aislados franceses de E. coli. Consulta mcp_server/README.md para la configuración y una peculiaridad de nomenclatura documentada (NCBI agrupa E. coli bajo "E.coli and Shigella" en su propio esquema, no "Escherichia coli").

Validación automatizada con compuerta de evaluación

validate_pipeline.py automatiza el ajuste y la prueba de permutación de stage3_identification.py en una compuerta reejecutable: falla si la distribución nula de la prueba de permutación parece degenerada (una verificación real para detectar que la lógica de barajado se rompa silenciosamente) o si los resultados se desvían significativamente de una línea base almacenada. Está diseñado para haber detectado el error de confusores anterior automáticamente, no solo cuando un humano se fijaba de cerca. Un flujo de trabajo de GitHub Actions (.github/workflows/validate.yml) está listo para ejecutarlo en cada push, una vez que el repositorio esté en GitHub.

Diferido / no descargado por defecto

GRDI v1.10 (GeoTIFFs ráster, 932 MB) y EnvClim (geopaquete de 2,6 GB): productos de cuadrícula/subnacionales desproporcionados para un panel de país-año. fetch_confounders.py imprime sus listados de archivos para que una futura compilación subnacional pueda decidir si vale la pena la inversión en herramientas SIG.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • NASA POWER MCP — Prediction of Worldwide Energy Resources

  • Search NOAA climate stations and datasets, fetch historical weather observations.

  • NOAA and ECMWF weather forecast MCP for discovery, validation, and GribStream OAuth queries.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Rishavbhattarai/amr-climate-atlas'

If you have feedback or need assistance with the MCP directory API, please join our Discord server