web app · surveillance · 2026

amr islands dashboard puts 66,005 resistance islands in a browser, with no server

An annotation pipeline and three static pages over NCBI Pathogen Detection: where each resistance gene sits, what it travels with, how its family varies and folds, and whether the lab result agrees with the genotype.

  • python
  • pandas
  • mmseqs2
  • hmmer
  • foldseek
  • esmfold
  • playwright
read the case study ↓

What it is

Public pathogen surveillance databases list which resistance genes an isolate carries, but not where they sit, what they travel with, or how they vary. This project takes one organism group from NCBI Pathogen Detection, downloads every public genome, cuts a neighbourhood of ten genes on either side of each resistance gene, and packs the result into three HTML pages that need no install, no server and no account.

Citrobacter freundii · one organism group
fig. 01 — every number is a row somewhere in the three pages

How it works

A chain of numbered scripts, driven by a per-organism config, runs from the download to the packed pages. Steps one to five take under a minute; the genome download is about 60 GB and is not stored in the repository. Structure prediction needs a GPU.

the pipeline
fig. 02 — each stage writes a table the next one reads; the raw genomes are never committed
dataset health
fig. 03 — the README says what the antibiograms can and cannot support

Three views

Islands. Gene maps of resistance islands, aligned on a chosen gene, family or architecture type: every island carrying blaKPC, for instance, stacked so the shared backbone lines up.

Gene families. Per-family records: identity, prevalence, per-residue variation counted by lineage, Pfam domains, and the predicted structure with fold matches.

Antibiograms. Susceptibility results next to the resistance genes of the same isolate, for a chosen antibiotic and gene family.

islands by resistance class
fig. 04 — multi-resistance islands (17,665) carry several classes; single-resistance islands (29,256) carry one
tree docs/
fig. 05 — three pages on GitHub Pages; nothing else to run

Design decisions

  • No database server. The data is packed into the pages with a compact codec; the decoder is generated from the encoder so the two cannot disagree.
  • One config per organism. The same 37 scripts run for the next group by adding an entry.
  • Verified pages. Playwright opens every page after a build and checks what it shows.

What is not done

1,224 isolates have no public assembly. Antibiograms cover about 1 % of isolates. One organism group has been run; the pipeline is written for more.