Skip to content
Marc Hunter Eppley
All work
01 / 07Ontology / Knowledge Graph

AMR Intelligence Platform

PythonNeo4jPydanticPrefectStreamlitR / Shinysigma.js

The problem

Antimicrobial resistance data is scattered across public sources that do not talk to each other: gene catalogs, pathogen genomes, surveillance reports, and drug references each live in their own format. There is no single model that connects a resistance gene to the mechanism it uses, the drugs it defeats, and where it is spreading.

The AMR knowledge graph, thousands of genes, pathogens, and drugs laid out by structure and colored by type
Figure 1. The resistance backbone. Higher-degree nodes from the full 24,783-node graph, laid out by structure and colored by entity type (genes green, drugs blue, mechanisms gold).

What I built

An object-link-property ontology (9 entity types, 9 relationship types) modeled as a Neo4j property graph with full provenance. Five source adapters load live data: CARD (the gene, mechanism, and drug backbone), NCBI Pathogen Detection (isolates, genomes, and geographic clusters), NCBI NDARO (a reference gene catalog), and CDC NARMS/BEAM plus WHO GLASS (aggregate surveillance). Typed Pydantic models, idempotent loaders, and Prefect flows keep ingestion reproducible, and a cross-source resolution layer crosswalks gene and drug identifiers to CARD accessions. A Streamlit decision-support dashboard and an R/Shiny front end render the graph, including a live sigma.js WebGL view of the full network.

5
public data sources
9 + 9
object and link types
24,783
graph nodes

The outcome

A working platform where all five sources load and the graph reaches 24,783 nodes and 60,618 edges across every entity and relationship type. You can ask which antibiotics are most threatened, what drives resistance, and where it is spreading, and trace any answer back to its source.

Source

Private. Code and live dashboards available on request.

Interested in this kind of work? Get in touch