Measure the rule. Keep what pays.
In one picture
Why DNA
Where that matters
The problem, today
The problem
Many insertions and deletions, especially in runs of the same letter
Few errors, mostly single wrong letters
Real blind spots
Where the rules come in
One diagram
Head to head their model, our clusters, our protocol
Our actual claim
The firewall
Results
Appendix A0
About 250,000 reads per second on a laptop. The same seed always gives the same reads.
nanopore_budget, fit on Microsoft train reads: substitutions 1.52%, insertions 1.89%, deletions 2.20% per base, end of strand 1.2 times the start.
illumina_standard, fit on DNAformer Illumina train reads. Errors there are about 100 times rarer and show no context effect worth a table.
Simulator B builds the same channel from different mechanisms (bursty errors, damaged segments, a context table fit on DNAformer) and is never used for optimization.
Appendix A1
Dilated 1D CNN, 8 residual blocks, about 0.8M parameters. The classic baseline aligns the reads and votes the draft; the polisher corrects it, like a Nanopore assembly polisher. It keeps as many insertions as deletions, so the strand length always comes out right.
| Reads | Baseline | Polished |
|---|---|---|
| 4 | 41.0% | 56.8% |
| 6 | 67.0% | 82.5% |
| 16 | 90.0% | 95.1% |
Exact strands on real held-out Nanopore clusters. 4.7% of strands stay unrecoverable even with all 27 reads.
1D CNN over the letters. Labels: each training strand is simulated 32 times at the channel's read budget and decoded by the frozen decoder chain. Label = the fraction decoded wrongly.
Specific to one channel, one read budget and one decoder. Ranking on real held-out reads:
Appendix A2
One script runs the loops, then the experiments and the decoder benchmark, one after the other.
The code: about 11,000 lines of Python, about 2,500 of them tests.
Appendix A3
You have no wet lab. How do you know it's real?
We don't synthesize or sequence anything. The simulator matches real held-out reads within about 3 points at every read count. Every gain must survive Simulator B, and the risk model's ranking is checked on real reads:
Isn't this just DNA Fountain?
The encoder is DNA Fountain style on purpose. We change how it's configured: which rules, how much redundancy, which candidate to keep, per channel. We don't claim a better encoder.
What if the hand rules are already optimal?
Then the tool says so, with measurements, and that's useful. The audit is a measurement, not a bet against the rules.
Isn't the improvement just your learned decoder?
No. The default, system B, already uses the same decoder chain. B to C isolates the rule audit, C to D learned selection. A to B is the polisher, and we report that separately. Both tiers also work with plain majority vote.
Appendix A4
Couldn't you buy accuracy with more redundancy?
That's what we rule out. Codecs are judged on the Pareto front of bits per base against reads per strand, at a fixed recovery target.
How is this different from DNAformer or adaptive constrained coding?
Those optimize the decoder, the constraints or the redundancy on their own. We close the loop: the decoder's failures on a channel decide what the encoder avoids, measured against a fixed target.
Why not learn the encoder end to end?
Insertions and deletions are hard to differentiate through, and storage needs every bit back. The Fountain code guarantees exact recovery; learning only picks which candidates to use.
What has the risk model actually learned?
The first version rediscovered the run-length rule, and its real-read ranking was weak. So we measured real context errors and put them into the simulator.
Appendix A5
The Microsoft dataset has known issues. Does that matter?
Yes, and we handle it. Its references aren't uniformly random, so we use it for calibration and benchmarks, never to learn risky motifs. Simulator B uses a context table fit on DNAformer.
Does the polisher beat the baseline?
On real held-out clusters, exact strands go from 41.0% to 56.8% at 4 reads, 67.0% to 82.5% at 6 reads and 90.0% to 95.1% at 16 reads. The room is at low coverage, where reading is cheap. Both claim tiers compare codecs with the same decoder, so they hold either way.
What would a real user do with this?
Describe their channel as a profile, calibrate it on a sample of their own reads, and let the tool say which rules and how much redundancy to use. Cost figures use placeholder prices.
What did the GX10 do?
Decoder training, risk labels (each strand simulated 32 times and decoded), and 300 held-out recovery trials per final codec, spread across its 20 cores. See A3.
Appendix A6
Appendix A7