Bio-Scry's Spine assembler reconstructs a complete bacterial genome from your long reads entirely on-device — overlap, layout, consensus, circularisation and origin — with no cluster to book and no bioinformatics service to pay. Fast, low-memory, and it works across Oxford Nanopore and PacBio HiFi.
Reference E. coli genome, ~90 seconds on an iPhone 17 Pro Max.
Spine streams your reads, finds how they overlap, lays them into contigs, and votes out an accurate consensus — then it does the finishing a genome actually needs: closing circular replicons and rotating each to its replication-origin gene. All of it on the device, in a phone's memory budget.
Reads are compared all-against-all — longest first, so repeats can be spanned — and ordered into long continuous contigs. Plasmids separate from the chromosome automatically.
Where many reads cover a position, they vote on the correct base. An iterative pileup consensus turns the draft into an accurate sequence — bounded to one contig's worth of memory at a time.
Bacterial replicons are circular. Spine detects and joins the ends, trims the overlap, and rotates each replicon to begin at its origin gene (dnaA/repA) — so coordinates line up with public genomes.
Illustrative — the whole assembly runs on the device, no server in the loop.
Spine has been tested on real sequencing runs across five genera — Klebsiella, Escherichia, Pseudomonas, Mycobacterium and Helicobacter — and three chemistries (Oxford Nanopore R9/R10 and PacBio HiFi). It recovers circular chromosomes that match the structure produced by reference-grade assemblers, with no detectable chimeras, and its per-base agreement tracks the intrinsic accuracy of the sequencing chemistry itself.
We ran Spine against Flye 2.9.6 — a widely used reference-grade long-read assembler — on five real isolates, on the same workstation, scoring both assemblers with the identical function: completeness and identity against the reference, read→assembly concordance, and peak memory under the OS timer.
| Genome | Chem. | Assembler | Contigs | Complete % | Ref ID % | Concord. | Time s | Peak GB |
|---|---|---|---|---|---|---|---|---|
| E. coli | ONT | Spine | 2 | 89.8 | 96.63 | 0.9112 | 99.5 | 3.47 |
| Flye | 2 | 90.4 | 97.26 | 0.9142 | 205.2 | 10.85 | ||
| M. tuberculosis | HiFi | Spine | 1 | 99.9 | 99.98 | 0.9979 | 36.6 | 1.06 |
| Flye | 1 | 99.9 | 99.98 | 0.9979 | 62.1 | 0.85 | ||
| P. aeruginosa | HiFi | Spine | 1 | 96.7 | 99.53 | 0.9988 | 48.1 | 1.41 |
| Flye | 3 | 96.7 | 99.53 | 0.9988 | 85.9 | 1.09 | ||
| H. pylori | ONT | Spine | 1 | 80.3 | 93.87 | 0.9135 | 34.8 | 1.70 |
| Flye | 1 | 85.6 | 94.86 | 0.9177 | 153.9 | 9.44 | ||
| K. pneumoniae KP2146 · matched ref |
ONT | Spine | 3 | 94.0 | 99.99 | 0.9920 | 58.4 | 2.08 |
| Flye | 3 | 94.0 | 100.0 | 0.9921 | 324.6 | 10.61 |
Green = Spine. Completeness / identity are measured against a reference; four of the five references are different strains from the sequenced isolate, so read→assembly concordance is the fairer accuracy metric there. Only KP2146 has a strain-matched reference.
Completeness matches on four of five genomes; reference identity and read concordance are statistically indistinguishable throughout.
On P. aeruginosa, Spine closed a single circular chromosome where Flye left three contigs — equal completeness, read-supported.
1.7–5.5× faster on every genome, and 3–5× less peak RAM on the large Nanopore inputs.
In the interest of honesty: this is a workstation comparison — but the point is that Flye needs a workstation, and Spine matches it there and is the only one of the two that runs on a phone. Spine's one clear loss is H. pylori completeness (80.3% vs 85.6%). A broader panel with strain-matched references throughout is ongoing.
Spine is a deliberately conventional overlap–layout–consensus assembler — the same proven idea behind the best long-read tools — rebuilt so every stage fits a phone's memory budget and runs in-process, with no subprocess and nothing written to a server.
Reads are streamed in and capped to the coverage the genome actually needs — longest reads first. This is not just for speed: raw-overlap layout can only bridge a repeat when a read spans it, so feeding the longest reads is what keeps the chromosome in one piece. On one Pseudomonas set, a naive file-order cap shattered the genome into 137 fragments; longest-first, at the same coverage, gave 2 contigs.
Every read is compared against every other by a minimizer-chaining aligner to find where they overlap. It runs in-process on the phone; the mean per-overlap divergence it reports is kept as a free, reference-free estimate of read error, used later to tune how hard the consensus works.
The overlaps are threaded into a string graph and cleaned into long unitigs. The chromosome and each plasmid separate out as their own paths — no manual binning — and unitigs that close a cycle are tagged circular.
Reads are mapped back to the draft and, at each position, vote on the correct base. A vectorised pileup turns the draft into an accurate sequence over a couple of iterations — with the working set bounded to one contig at a time, so memory never scales with the whole genome at once.
Layout often represents a genuinely circular replicon as open — a linear unitig whose ends overlap, or two arcs of one circle split at a repeat. A reference-free closure pass detects the terminal overlap, joins it, and trims the duplicated seam. Because it runs before consensus, reads spanning the new junction then polish it — a spurious join would show up as a coverage hole, so it can't fake a circle.
Each circular replicon is rotated to begin at its replication-origin gene — dnaA for the chromosome, repA for plasmids — so coordinates line up with public reference genomes and comparisons are apples-to-apples.
Honestly: the core algorithms — minimizer overlap, string-graph layout, majority-vote consensus — are established, and we don't claim them as novel. Using proven components is exactly what makes Spine general. The contributions are in what it took to run all of it on a phone, and to finish the genome cleanly.
Mobile operating systems forbid the fork/exec a classic multi-binary pipeline relies on, and don't return freed memory to the OS by default. Spine runs the overlap/layout tools in-process, keeps a bounded working set, and uses a memory arena that actually gives RAM back. To our knowledge it's the first complete whole-genome assembler to run this way on-device.
A reference-free recovery of circular replicons the layout leaves open. Its trick: it verifies a join by k-mer support along a diagonal, not base identity — because sequencing indels drift a rigid base comparison out of register (a real 10.6 kb overlap measured just 0.41 identity), which would wrongly reject true joins. It turned a fragmented, 93%-complete M. tuberculosis draft into a single circular chromosome at 99.9% of reference.
Spine uses standard longest-first read selection as its default — and we measured how load-bearing it is here (137 fragments file-order → 2 contigs longest-first, same coverage). Paired with a guard that a contig already closed to one lap is never re-trimmed by a downstream heuristic, the assembly stays intact within a phone's memory budget.
Spine was tested on eight real public read sets across five genera and three chemistries — not simulations. The load-bearing metric is read→assembly concordance: map the reads back to the assembly and measure how well they agree. In the absence of assembly error, that agreement rises to exactly the intrinsic accuracy of the sequencing chemistry — and no higher — which is the signature of a consensus that faithfully represents the reads without inventing anything.
On the one genome with a strain-matched reference (KP2146), a circular-aware check found zero real chimeric breakpoints: every contig maps to a single reference replicon as one clean run.
No cluster to schedule, no per-sample bioinformatics bill, no upload. Sequence and assemble on-site, in the field or at the bench.
Circular chromosome and plasmids, closed and oriented — ready for annotation, typing and comparison in the same app.
Spine is the long-read assembler; separate short-read (de Bruijn), hybrid and reference-guided pipelines are there when you need them — all on the same device.