The Spine Assembler — Bio-Scry
On-device · No cluster · No cloud

Assemble a whole bacterial genome in about a minute and a half — on your phone.

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.

On-device bacterial genome assembly
~90 s
full assembly, on iPhone
5 genera
3 chemistries validated
circular
chromosomes · no chimeras
<1 GB
fits a phone's memory
The Spine assembler

A complete overlap–layout–consensus assembler, engineered to run in your pocket.

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.

1

Overlap & layout

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.

2

Consensus

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.

3

Close the circle

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.

spine.log · on-device
$ bioscry assemble --mode spine --device iphone
loading reads … 5.81 Mb
overlap + layout … 3 contigs
pileup consensus · round 1 … round 2
closing circles · 1 chromosome + 2 plasmids
reorient to origin gene (dnaA / repA)
done · 1m 28s · 3 circular replicons · nothing left the phone

Illustrative — the whole assembly runs on the device, no server in the loop.

Validated on real isolates.

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.

Benchmarked head-to-head

Spine vs Flye — same reads, same references.

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.

Parity on accuracy

Completeness matches on four of five genomes; reference identity and read concordance are statistically indistinguishable throughout.

More contiguous on one

On P. aeruginosa, Spine closed a single circular chromosome where Flye left three contigs — equal completeness, read-supported.

Faster & lighter

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.

The full picture

How Spine actually works — and what's new about it.

The pipeline, stage by stage

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.

1 · Intake & longest-first coverage cap

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.

2 · All-vs-all overlap

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.

3 · String-graph layout

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.

4 · Streaming majority-vote consensus

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.

5 · Close the circles

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.

6 · Reorient to the origin

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.

What's genuinely new

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.

01

First on-device whole-genome OLC assembler

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.

02

Close-the-circles finishing (indel-tolerant)

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.

03

Memory-bounded, engineered to hold together

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.

How we know it works

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.

8
real genomes · 5 genera
6 / 8
fully circular chromosomes
0
chimeras (matched-reference check)

Where it's honest about its limits

  • Long reads only. Spine is an OLC assembler; it needs Oxford Nanopore or PacBio HiFi. Short reads go through the separate de Bruijn assembler.
  • One hard input. A high-accessory P. aeruginosa Nanopore set stayed fragmented — and Spine correctly declines to force a join rather than fabricate a circle.
  • Small plasmids of a few kb can be missed or merged; total size stays right but the plasmid partition isn't perfect.
  • Benchmark scope. The Flye comparison is host-measured, five genomes, mostly different-strain references. A broader panel with matched references throughout is ongoing work.

On-site assembly — no cluster, no bioinformatics bill.

Runs in your pocket

No cluster to schedule, no per-sample bioinformatics bill, no upload. Sequence and assemble on-site, in the field or at the bench.

Complete replicons

Circular chromosome and plasmids, closed and oriented — ready for annotation, typing and comparison in the same app.

Alongside the classics

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.

See how it works under the hood →