Skip to main content
Glama

AMR-Climate Atlas — Каузальная атрибуция влияния климата на устойчивость к противомикробным препаратам

Проект 2 из трёхпроектного портфеля «климат — здоровье» (см. ../harvard-dataverse-climate-health-projects.md). Скоуп: ../amr-climate-causal-attribution-scoping.md · План разработки: ../amr-climate-causal-attribution-phases.md · Полный отчёт: docs/paper.md.

Статус: все четыре фазы завершены. Панель ЕС/ЕЭЗ (29 стран, 2000–2023, 4 комбинации патоген-антибиотик), должным образом протестированная каузальная модель, геномная перекрёстная проверка, работающее Streamlit-приложение, MCP-сервер, предоставляющий доступ к живым источникам данных, и автоматизированный конвейер валидации с eval-гейтом.

App screenshot: K. pneumoniae/Carbapenems combo, Greece 2023 highlighted at the top of the resistance distribution, with the causal-test caveat surfaced above the chart

Вывод

Панельная регрессия с двусторонними (страна + год) фиксированными эффектами, с обязательным плацебо-тестом на 200+ перестановках для каждого результата, прежде чем ему разрешено называться значимым:

Комбинация

n

Коэф.

Параметрич. p

Перестановочный p

E. coli / фторхинолоны

642

+0,11

0,77

0,62

E. coli / цефалоспорины 3-го поколения

642

+0,21

0,54

0,31

K. pneumoniae / карбапенемы (2010-2022, с поправкой на потребление)

355

−1,73

0,008

0,000

S. aureus / MRSA

667

−0,13

0,89

0,69

В 3 из 4 комбинаций погодный эффект не обнаружен вообще нигде. Единственное исключение — устойчивость K. pneumoniae к карбапенемам, в подвыборке 2010–2022 с поправкой на потребление по ESAC-Net, — реальна (устойчива при исключении по одной стране, не обусловлена COVID) и подтверждена по направлению независимыми данными геномного секвенирования (NCBI Pathogen Detection/MicroBIGG-E, тот же отрицательный знак, корреляция r=+0,38 с фенотипическим показателем), но не проявляется в полной панели 2000–2023, а потребление антибиотиков само по себе не значимо в модели, которая должна его контролировать. Читается как: реальная, узкая, специфичная для окна выборки закономерность, а не подтверждённая каузальная связь климат→AMR.

Этот результат прошёл настоящий процесс контроля качества (QA) — независимый прогон тестирования поймал отсутствующий перестановочный тест для модели с поправкой на потребление, а более поздняя проверка устойчивости поймала ошибку выбора колонки конфaундера, из-за которой потребление антибиотиков на самом деле никогда не было в модели, как сообщалось изначально. Оба факта прямо раскрыты в docs/paper.md, а не сглажены.

Related MCP server: DMAP-AI MCP Server

Что в этом репозитории

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)

Две находки, о которых стоит сказать сразу

  1. Экспорт Surveillance Atlas от ECDC полностью скриптуем, а не только через ручной UI. Экспорт отправляет простой параметризованный GET, и его параметр downloadTokenId на самом деле не валидируется на серверной стороне — подходит любое значение, как только инициализирована сессионная cookie. fetch_ears_net.py вытягивает полную сетку страна×год для заданной комбинации патоген-антибиотик за два HTTP-запроса.

  2. API Dataverse возвращает 403 на User-Agent по умолчанию от python-requests — нигде не задокументировано, требуется UA в стиле браузера (см. config.DATAVERSE_REQUEST_HEADERS).

Быстрый старт

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

MCP-сервер — живые данные, а не только замороженный CSV

mcp_server/ предоставляет два источника данных этого проекта через Model Context Protocol, так что любой MCP-совместимый клиент (Claude Desktop, кастомный агент) может по требованию запрашивать живые погодные или живые геномные AMR-данные, а не только читать eu_eea_pilot_panel.csv. Построен на официальном mcp Python SDK от Anthropic (а не на выдуманной терминологии "MCP 2.0"/"Agent Plugins", которую использовал более ранний черновик этого скоупа — см. mcp_server/README.md для полной терминологической правки и реальной находки о дрейфе API: класс FastMCP, который используют большинство туториалов, удалён из текущего SDK). Протестирован с настоящим клиентом на внешнем процессе (mcp_server/test_external_client.py), а не только внутрипроцессным вызовом — реальные погодные данные для Парижа, реальная распространённость карбапенем-генов (16,83%) среди французских изолятов E. coli. См. mcp_server/README.md по настройке и задокументированную особенность именования (NCBI группирует E. coli под "E.coli and Shigella" в своей собственной схеме, а не "Escherichia coli").

Автоматизированная валидация с eval-гейтом

validate_pipeline.py автоматизирует подгонку и перестановочный тест из stage3_identification.py в повторно запускаемый гейт: он завершается ошибкой, если нулевое распределение перестановочного теста выглядит вырожденным (реальная проверка на то, что логика перемешивания молча сломалась) или если результаты значимо отклоняются от сохранённого бейзлайна. Он спроектирован так, чтобы автоматически поймать указанную выше ошибку конфаундера, а не только когда человек случайно присмотрелся. Workflow GitHub Actions (.github/workflows/validate.yml) готов запускать это при каждом пуше, как только репозиторий окажется на GitHub.

Отложено / по умолчанию не загружается

GRDI v1.10 (растровые GeoTIFF, 932MB) и EnvClim (geopackage на 2.6GB) — сеточные/субнациональные продукты, непропорциональные панели страна-год. fetch_confounders.py выводит их списки файлов, чтобы будущая субнациональная сборка могла решить, стоит ли вложение в GIS-инструментарий.

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