Skip to content
VED.EXE

700Scientific computing

AMR Drug Repurposing

Screening 1,761 approved medicines against four drug-resistant bacteria, with every result tied to its evidence.

Role
Engineer. Client project through SNOWBROS.
Year
2026
Status
Research prototype, live. Predictions for the lab, not clinical evidence.
Stack
Python, RDKit, scikit-learn, AutoDock Vina, PostgreSQL, Supabase, Docker, Next.js
The AMR Drug Repurposing overview: 'Old medicines, new questions.' beside the molecular dataset and the 1,761-medicine library.
docking jobs: 1,761 medicines × 4 targets
7,044
drug-resistant bacteria, one protein target each
4
medicines checked against ClinicalTrials.gov
1,761
results called a cure
0

(57) Abstract

Repurposing asks whether a medicine already approved for something else could act against a drug-resistant superbug. This system ingests real bioactivity and regulatory data, ranks candidates with models, checks molecular fit by docking, and shows what clinical history already exists for each one.

Background

Antimicrobial resistance outpaces new antibiotic discovery. An approved medicine already has known pharmacology and human safety data, so a credible lead from the existing library shortens the road to the lab. The engineering problem is to run the screen at full scale and to never let a prediction read like a proof.

Drawings

  1. FIG. 1The live overview. Every count on it is read from the database and carries its source.
  2. FIG. 2From src/batchdock/queue.py. Any number of workers on any number of machines, and no two ever claim the same job.
AMR Drug Repurposing overview with the 20K-structure dataset and the 1,761-medicine library.
  1. 702The question, in plain words
  2. 704Dataset with ChEMBL provenance
  3. 7061,761 medicines checked
FIG. 1The live overview. Every count on it is read from the database and carries its source.
The docking queue
-- src/batchdock/queue.py, claim() (trimmed)
update docking.jobs j set status = 'RUNNING', worker_id = %(w)s,
       attempt_count = j.attempt_count + 1, heartbeat_at = now(),
       lease_expires_at = now() + make_interval(secs => %(lease)s)
 where j.id in (
   select q.id from docking.jobs q
     join docking.runs r on r.run_id = q.run_id and r.status = 'RUNNING'
    where q.status = 'QUEUED'
      and (q.not_before is null or q.not_before <= now())
    order by q.priority, q.id
    limit %(n)s
    for update of q skip locked)
FIG. 2From src/batchdock/queue.py. Any number of workers on any number of machines, and no two ever claim the same job.

Detailed description

A queue that can't double-book

Every (medicine, target, configuration) is one row in a Postgres queue. Workers claim with FOR UPDATE SKIP LOCKED, hold a lease that a heartbeat extends, and complete in one statement that only succeeds if they still hold it. A result can't be written twice, and a vanished worker's job returns to the queue.

Inputs prepared once, checked everywhere

1,761 ligand files and 4 receptor files are prepared once and stored with their SHA-256. A worker on any machine fetches what it lacks and refuses a file whose checksum differs, so every docking run starts from identical inputs.

Leakage is a critical failure

Scaffold-aware splits keep similar molecules out of both training and test. An audit found enantiomer pairs straddling the split because scaffolds carried stereochemistry; scaffolds are now stereo-free, and leakage across splits is a critical check that fails the pipeline.

A percentage always says what it means

A probability is shown only for the four modelled pathogens, and labels that imply clinical benefit raise an error in code. The interface keeps 'no evidence found', 'not yet checked' and 'no effect' apart, and a registered trial is never presented as a successful one.

What is claimed is:

  1. 1.

    A screening system in which every docking score is a recorded AutoDock Vina run with its inputs, configuration and command.

  2. 2.

    The system of claim 1, wherein a Postgres queue with leases guarantees each job is completed at most once.

  3. 3.

    The system of claim 1, wherein no prediction is presented as evidence that a medicine treats an infection.