Open source under the MIT licence
VNX-DNA
A CPU-only software stack for the digital side of DNA data storage. It packs files into a verifiable archive, encodes it as constraint-screened DNA strands, passes them through a simulated channel, and reconstructs the archive from noisy reads, reporting success only after cryptographic verification.
Status
VNX-DNA
Computational infrastructure for DNA data storage: archive, encryption, constrained encoding, error correction, simulated channels, consensus and verified decoding.
Capabilities in the code
Each item exists in the repository and is covered by tests. Opt-in means implemented but off by default.
Archive and container
Files and directories to a .vnx container: chunking, deduplication, zstd compression, canonical manifest, Merkle root.
implementedEncryption
AES-256-GCM sealing with key files; keys checked on full decode.
implementedAddressing and framing
Per-strand address, payload and CRC-32; superblocks describe the geometry.
implementedConstrained encoding
2-bit mapping with sync markers; GC, homopolymer, repeat and motif screening.
implementedError correction
Inner Reed-Solomon per strand; outer Cauchy Reed-Solomon rows; optional column parity (V6 product code).
implemented / opt-inInsertions and deletions
Marker-template alignment converts indels to erasures; smart indel recovery and soft decoding are opt-in.
implemented / opt-inClustering and consensus
Read clustering and indel-aware full-template consensus; the V9 candidate E is opt-in.
implemented / opt-inChannel simulation
14 configurable software channel models with synthesis, storage, amplification and sequencing stages.
simulatedRandom access
Locate and extract individual files from an archive and from reads.
implementedNative acceleration
Four optional C kernels (aligner, read parser, inner RS with AVX2/AVX-512BW, clustering/polish); NumPy references stay normative.
implementedSDK and CLI
implementedvnxdna.sdkstable Python API with typed errors;vnxcommand line printing JSON envelopes.Reproducibility
Pre-registered experiments, committed results with provenance,
implementedreproduce.shper version.
Architecture, as implemented
The encode stages E0-E15 and decode stages D0-D14 are specified in the VNX-DNA specification (§5) and implemented as two orchestrators in vnxdna.pipeline. The channel in the middle is software: it simulates synthesis, storage, amplification and sequencing errors. No stage touches physical DNA.
- E0-E6
Archive and container
Collect, chunk, identify (SHA-256 or HMAC), deduplicate, compress (zstd, kept only if smaller), seal with AES-256-GCM, write the .vnx container with a canonical manifest and Merkle root.
Implemented - E7-E9
Outer code
Plan geometry; Cauchy Reed-Solomon rows, optional column parity over stripes; superblock.
Implemented - E10-E11
Framing and inner code
Frame = address + payload + CRC-32; scramble; inner Reed-Solomon.
Implemented - E12-E14
DNA mapping and screening
2-bit mapping with in-strand sync markers; GC, homopolymer, repeat and motif screening with up to 256 scrambler variants; ordered strand file.
Implemented - E15
Laboratory export package
vnx.export-package/1 for a synthesis order. Never executed by a laboratory.
Specified only - SIM
Simulated channel
Strand loss, coverage, synthesis / storage / amplification / sequencing stages, bursts, reverse complements; 14 shipped channel models, none fitted to a validated platform.
Simulated - D0-D4
Read ingest and alignment
Parse reads (native parser), probe frame version and layout, orient, marker-template alignment that turns indels into erasures.
Implemented - D5-D7
Inner decoding
Inner Reed-Solomon + CRC acceptance (native AVX2 / AVX-512BW). Opt-in: smart indel recovery, soft-decision decoding, retry band.
Implemented - D8-D11
Outer recovery
Superblock selection, consensus per address, outer erasure decoding, stripe (column) decoding.
Implemented - V7-V9
Cluster pass
When outer rows still lack symbols, a second pass clusters the reads and builds indel-aware full-template consensus (native polish kernel since V9; candidate E is opt-in), then feeds the outer decoder again.
Implemented - D12-D14
Verify and publish
Verify against the superblock SHA-256 and Merkle root; atomic publish of SUCCESS, or PARTIAL with only individually verified files; otherwise write nothing.
Implemented
Files go in on the left and come back out, verified, on the right. Choose a part to focus on it.
Current scientific boundary
Demonstrated computationally
- Software that encodes files into constraint-screened DNA sequences and recovers them from simulated noisy reads, reporting success only after SHA-256 and Merkle verification.
- No false success in the decoder evaluations reported from V6 to V9, including 600 paired V9 evaluation cases (SIMULATED).
- Native C kernels that produce byte-identical results to their Python references, checked with sanitizers and fuzzing.
- Reproducible experiments: pre-registered designs, committed results files and a reproduction script (29 / 29 rows reproduced at V9).
- A channel model fitted to public nanopore data, tested against pre-registered criteria and reported as INADEQUATE.
Not demonstrated
- DNA synthesis, storage, amplification or sequencing of VNX-DNA strands. None has been performed.
- Performance on real sequencing reads from a physical VNX-DNA experiment.
- A validated model of any sequencing platform.
- Storage lifetime, cost per byte, or production readiness.
- Recovery at coverage 3 under the D13-F1 stress channel, or whole-archive recovery of large archives under it.
Measured results
Full methodology on each benchmark page.
| Benchmark | Class | Result | Version |
|---|---|---|---|
| Clean-channel encode and decode, 20 KB to 1 GiB | Verified (software) | 1 GiB: encode 105.8 s, decode 195.4 s, byte-exact; 9.78 nt per byte | V9 |
| Consensus V2 selection: candidate E vs the V8 decoder | Simulated | EXACT 283 / 600 vs 240 / 600; pooled ORE 0.575 vs 0.488; Holm-adjusted exact McNemar p = 5.2e-12; 0 false success | V9 |
| Native C11 consensus-polish kernel | Simulated | 60 / 60 decodes byte-identical to the NumPy reference; median speed-up 2.46× (bootstrap 95 % 2.41-2.51) | V9 |
| Adaptive computational coverage (stopping rule) | Simulated | 200 / 200 EXACT at the stopping point; 0 false terminations; 41.7 % (v4-balanced) and 31.2 % (v7-lowcov) fewer reads than the smallest fixed coverage with equal EXACT | V9 |
| Whole-archive recovery vs archive size under a stress channel | Simulated | 20 KB: 28 / 30 EXACT; 1 MiB: 2 / 30 EXACT; 0 false success at both sizes | V9 |
| Public-data nanopore channel model G1 (adequacy test) | Public data | INADEQUATE: fails the pre-registered FIT-only pre-check on M6r and M8 | V9 |
Releases
| Version | Date | Summary | Commit |
|---|---|---|---|
| VNX-DNA 9.0.0 | 2026-10-08 | Native C11 consensus-polish kernel (byte-identical, median 2.46× faster); opt-in consensus candidate E selected in a pre-registered comparison (283 vs 240 of 600 EXACT, 0 false success); adaptive computational coverage; VNX-Secure defensive control plane merged. | e76e24b |
| VNX-DNA 7.0.0 | 2026-10-07 | Indel-aware full-template consensus confirmed on fresh pre-registered seeds; v7-lowcov parity profile reaches 5-read coverage at +42 % strands; 0 false success in 480 decodes. | 2a3c779 |
| VNX-DNA 8.0.0 | 2026-10-07 | Public-data (D13) nanopore channel model fitted with full provenance: a conclusive INADEQUATE result; 360 decodes under controlled simulated channels with 0 false success and 0 false frames. | 17e42bb |
| VNX-DNA 6.0.0 | 2026-10-05 | Formal specification, layered packages with a stable SDK (vnxdna.sdk) and the `vnx` CLI, channel-model framework, native packaging, security model with fuzzing. | 16b5811 |