Skip to content

Latest commit

 

History

62 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PetriDish

Pharmacogenomic + autoimmune decision-support infrastructure, calibrated to the Indian genome.

License: Apache 2.0 Next.js 14 FastAPI Neo4j RDKit

Live · Case study · Architecture · Contributing


Why this exists

Global drug-dosing tables were built from Western genomes. Indian patients have different variant frequencies, different HLA distributions, and different drug-response profiles.

Gap Reality
CYP2C19*2 loss-of-function 23% in South Asians · 15% globally → clopidogrel routinely mis-dosed
HLA-B*15:02 9% in South Asians · 4% globally → SJS/TEN carbamazepine mortality 10–30%
32% of Indian variants Absent from gnomAD → returned as "variant of uncertain significance"
RA diagnostic delay 4–7 years in India vs 1–2 years in the West → irreversible joint damage

What it does

Ingest a VCF (or 23andMe / CSV), run through the deterministic orchestration router, and return one auditable clinical report — with every score traceable to a curated rule.

Everything in the stack ships with a trace_id. One click retrieves the full reasoning chain, model versions, source edges, and whether the output is clinical-surface-safe or hard-blocked as a hypothesis.

Live modules

Clinical (surface-safe):

Infrastructure:

Research (hypothesis-only · schema-quarantined):

End-to-end proof:

Non-negotiable design principles

  1. No LLM in the clinical routing path. Same input → same output, every call.
  2. Predictions are structurally separate from facts. :PREDICTED_TARGETS never merges with :TARGETS. Enforced in code, not by convention.
  3. Every claim traces to a source. Curated rule, published paper, or explicit verification_required=true.
  4. Every module cites its methods. No proxy backend without a documented swap-in target.

Architecture

See ARCHITECTURE.md for the full 5-layer stack.

┌─────────────────────────────────────────────────────────┐
│  Diagnostic lab / hospital / doctor                      │
└─────────────────┬───────────────────────────────────────┘
                  │  VCF · 23andMe · CSV
                  ▼
┌─────────────────────────────────────────────────────────┐
│  1  Ingestion & normalization                            │
│  2  Deterministic orchestration router                   │
│  3  Interpretation modules (clinical-safe)               │
│  4  Hypothesis modules (schema-quarantined)              │
│  5  Trust & Audit (trace_id on every response)           │
└─────────────────┬───────────────────────────────────────┘
                  │  Standardized clinical report envelope
                  ▼
┌─────────────────────────────────────────────────────────┐
│  Cardiologist · compliance officer · wet-lab partner     │
└─────────────────────────────────────────────────────────┘

Tech stack

  • Backend · Python 3.11 · FastAPI · Neo4j · RDKit · NetworkX · pydantic
  • Frontend · Next.js 14 App Router · TypeScript · React 18
  • Data · IndiGen (CSIR-IGIB) · PharmGKB · CPIC · gnomAD v4 · ClinVar · Ensembl VEP · PrimeKG · IMPPAT 2.0 · GenomeIndia · PDB · AlphaFold DB · UniProt · Reactome
  • Hosting · Vercel (frontend) · Railway (FastAPI + Neo4j)

Quick start

git clone https://github.com/shailesh2790/petridish.git
cd petridish

# Backend
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -r requirements.txt
uvicorn api.reason:app --reload --port 8000

# Frontend (separate terminal)
npm install
npm run dev

Open http://localhost:3000.

.env.example lists the environment variables. Neo4j credentials are only needed for graph modules; most modules work with just an empty .env.

Contributing

Good first contributions:

  • Add a curated Indian variant to api/patient.py (with citation)
  • Wire a new module's Next.js proxy route
  • Improve a page's UI/UX using src/components/ui.tsx primitives
  • Add citations to a module's /citations endpoint
  • Fix a broken SMILES in api/real_chemistry.py::APPROVED_AUTOIMMUNE_DRUG_SMILES

Open an issue first for anything larger than a proxy tweak.

Positioning

PetriDish is decision-support infrastructure — not a diagnostic device, not a drug. Every clinical output is triage for a licensed practitioner. Every hypothesis output requires wet-lab or literature cross-check.

License

Apache 2.0

Contact

Shailesh Tripathi · shailesh.tripathi2706@gmail.com · LinkedIn

About

Pharmacogenomic + autoimmune decision-support infrastructure calibrated to the Indian genome.

Topics

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages