Error correction codes for DNA data storage using quaternary alphabet {A,C,G,T}. Implements Reed-Solomon over GF(4) with GC-content balancing and homopolymer avoidance. Used in molecular storage systems by Microsoft, Twist Bioscience, and academic researchers.
| Property | Value |
|---|---|
| Category | Error Correction |
| Sub-category | Quaternary Code |
| Security status | π§ͺ Experimental |
| Complexity | Expert |
| Inventor | George Church, Sri Kosuri |
| Year | 2012 |
| Origin | πΊπΈ United States |
| Source | algorithms/ecc/dna-storage-code.js |
Status: π§ͺ Experimental
| Issue | Description | Mitigation |
|---|---|---|
| Synthesis Error Sensitivity | DNA synthesis can introduce insertion, deletion, and substitution errors at rates of 0.1-1%. Multiple redundancy and error correction layers recommended. | β |
| Homopolymer Errors | Long runs of identical bases (AAA, TTT, GGG, CCC) are prone to sequencing errors. Constraint checking helps but cannot eliminate all risks. | β |
| GC Content Imbalance | Sequences outside 40-60% GC content may form secondary structures or fail synthesis. Encoding should maintain balance. | β |
6 vectors ship with this algorithm and run in the test suite. Byte values are hexadecimal.
Vector 1 β RS(7,3) over GF(4) - All zeros
| Field | Value |
|---|---|
input |
000000 |
expected |
00000000000000 |
Vector 2 β RS(7,3) over GF(4) - Pattern ACG
| Field | Value |
|---|---|
input |
000102 |
expected |
00010202030103 |
Vector 3 β RS(7,3) over GF(4) - Maximum values TTT
| Field | Value |
|---|---|
input |
030303 |
expected |
03030300030000 |
Vector 4 β RS(7,3) over GF(4) - Alternating CAT
| Field | Value |
|---|---|
input |
010003 |
expected |
01000302020103 |
Vector 5 β RS(7,3) over GF(4) - GC-rich CGG
| Field | Value |
|---|---|
input |
010202 |
expected |
01020203010300 |
Vector 6 β RS(7,3) encoding verification - GCA
| Field | Value |
|---|---|
input |
020100 |
expected |
02010002030301 |