2
Home
Kemal Yaylali edited this page 2026-09-12 13:44:49 +01:00

rarelens

Rare-disease variant triage on public data: a proband's variants narrowed against their phenotype, each candidate carrying the evidence for its rank.

This is a research and self-training platform. It is not a clinical tool and makes no diagnostic claim. No patient data is used, accepted, or possible to load.

Start here

If you want to… Read
understand how the pieces fit together Architecture
run it on your machine Local development
know what the ranking actually does Ranking
know how well it works, and how well it doesn't Benchmarks
change the pipeline Pipeline
deploy it Deployments
avoid a trap someone already hit Gotchas

What it does

  1. A case is a proband: a VCF plus the patient's phenotype as HPO terms.
  2. A Nextflow pipeline normalises the VCF, annotates it with Ensembl VEP, and loads the variants into PostgreSQL.
  3. The API ranks each variant on four auditable components — phenotype fit, rarity, consequence severity, and a model score — and refuses to score any component the annotation run did not actually measure.
  4. The interface shows the narrowing as a funnel and the evidence behind each candidate. A reviewer shortlists or dismisses with a reason, and that trail becomes a case report.

The shape of the repository

api/        FastAPI, Pydantic v2, SQLAlchemy 2.0 async, Alembic    (~1,380 lines)
ml/         LightGBM model, HPO ontology handling, benchmark        (~500 lines)
pipeline/   Nextflow DSL2, bcftools + VEP + loader                  (~620 lines)
web/        SvelteKit 5, adapter-node                               (~1,460 lines)
infra/      Terraform (GCP), Kustomize, Argo Workflows, ArgoCD      (~890 lines)
scripts/    data preparation and seeding                            (~505 lines)
docs/       architecture, cloud choice, data provenance, write-up

A note on how this wiki is written

Pages record what is true now, including what is broken. Where a number appears it came from a run in this repository and can be reproduced by the command next to it. If you change something that makes a number here wrong, change the number too — a wiki nobody trusts is worse than no wiki.