This issue tracks Rosalind's direction, posted so forks and contributors can see where it's headed.
Direction
Rosalind is the deterministic, low-memory genomics engine that treats memory as a contract. You declare a RAM budget; rosalind plan tells you up front whether your whole-genome variant call fits; the run honors it (fits-or-refuses cleanly — never a silent OOM-kill); and rosalind verify re-checks a BLAKE3 receipt proving the realized peak landed inside your budget and the output is byte-identical. It's a library + CLI + substrate — a bounded, deterministic PileupColumn stream you can compute arbitrary per-locus analytics on — for the places heavyweight stacks don't fit: laptops, field/edge devices, clinics, classrooms. Priorities: correctness, reproducibility, bounded resource use, legibility, honest scope.
See CONTRACT.md for the contract, and docs/OPEN_PROBLEMS.md for the research thesis.
Status
- Phase A — done. Streaming, CIGAR-aware pileup kernel; calibrated, abstention-aware germline SNV calling; tumor/normal somatic calling; spec-valid VCF; BLAKE3 reproducibility receipts.
- Phase B — done. Multi-contig FM-index over the concatenated genome; build-once → memory-mapped, byte-reproducible persisted index (
rosalind index/locate); zero-copy reference access; bounded whole-genome germline calling over a sorted BAM (rosalind variants --index).
- Phase C — done (in review). Memory as a verifiable contract:
rosalind plan (predict before committing), --enforce (honor-or-refuse: refuse up front / fail loud, never a silent OOM-kill), and rosalind verify — over a sound working-set accountant and a deterministic depth cap.
Roadmap
- Phase D (research) — the headline space-complexity bet. Sublinear-space index construction: a
~√t (square-root-space; Williams 2025 / Cook–Mertz 2024) evaluation framework as a continuous space/time knob a declared RAM budget selects, beachheaded on FM-index/SA construction (today's build is O(reference)). This extends the contract to the build step. (Correcting this issue's earlier framing: the √t layer is not being "separated out as a demo" — it is the future mechanism that extends the contract; it is research-stage, not yet load-bearing.)
- Reach + substrate. Aligner over the persisted multi-contig index; germline indels and richer read QC; deterministic multithreading; a Python/tensor binding over the bounded pileup stream.
Forks and contributions are welcome — issues and PRs against any phase are appreciated. Start at CONTRACT.md and examples/custom_pileup_analytics.rs.
This issue tracks Rosalind's direction, posted so forks and contributors can see where it's headed.
Direction
Rosalind is the deterministic, low-memory genomics engine that treats memory as a contract. You declare a RAM budget;
rosalind plantells you up front whether your whole-genome variant call fits; the run honors it (fits-or-refuses cleanly — never a silent OOM-kill); androsalind verifyre-checks a BLAKE3 receipt proving the realized peak landed inside your budget and the output is byte-identical. It's a library + CLI + substrate — a bounded, deterministicPileupColumnstream you can compute arbitrary per-locus analytics on — for the places heavyweight stacks don't fit: laptops, field/edge devices, clinics, classrooms. Priorities: correctness, reproducibility, bounded resource use, legibility, honest scope.See
CONTRACT.mdfor the contract, anddocs/OPEN_PROBLEMS.mdfor the research thesis.Status
rosalind index/locate); zero-copy reference access; bounded whole-genome germline calling over a sorted BAM (rosalind variants --index).rosalind plan(predict before committing),--enforce(honor-or-refuse: refuse up front / fail loud, never a silent OOM-kill), androsalind verify— over a sound working-set accountant and a deterministic depth cap.Roadmap
~√t(square-root-space; Williams 2025 / Cook–Mertz 2024) evaluation framework as a continuous space/time knob a declared RAM budget selects, beachheaded on FM-index/SA construction (today's build is O(reference)). This extends the contract to the build step. (Correcting this issue's earlier framing: the √t layer is not being "separated out as a demo" — it is the future mechanism that extends the contract; it is research-stage, not yet load-bearing.)Forks and contributions are welcome — issues and PRs against any phase are appreciated. Start at
CONTRACT.mdandexamples/custom_pileup_analytics.rs.