IP Library Granted Patent US 12,562,755
Granted Patent B2
US 12,562,755 · App. 18/464,494 · Granted Feb 24, 2026

Multi-tier error correction codes for DNA data storage

Inventors: Iouri Oboukhov (Rochester, MN); Richard Leo Galbraith (Rochester, MN); Niranjay Ravindran (Rochester, MN)
Assignee: Western Digital Technologies, Inc.
H03M13/19H03M13/611
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,562,755
App. No.
18/464,494
Granted
Feb 24, 2026
Kind
B2
Abstract

Example systems and methods for using a multi-tier error correction code distributed among oligos for DNA data storage are described. A data unit is encoded as a set of codewords where each codeword is distributed as symbols on different oligos. The codewords include a set of first tier codewords that include CRC and ECC redundancy data and one or more additional tiers of codewords that include permuted data and corresponding ECC redundancy data. Decoding includes a sequence of decoding iterations between the first tier of codewords and additional tiers of codewords.

Claims (101)

1 . A system, comprising:

at least one hardware processor configured to, alone or in combination:

determine a configuration for a set of oligos for encoding a data unit comprised of user data, wherein each oligo of the set of oligos is configured to encode a number of symbols;

determine a first codeword for an error correction code, wherein the first codeword is comprised of a first set of symbols for encoding a portion of the data unit;

allocate symbols from the first set of symbols among a plurality of oligos from the set of oligos to populate at least a portion of the configuration with corresponding base pair sequences for the symbols from the first set of symbols, wherein each oligo of the plurality of oligos:

receives one symbol from the first set of symbols; and

encodes a different set of symbols for the data unit from each other oligo in the plurality of oligos; and

output, responsive to populating the configuration for the set of oligos with base pair sequences encoding the data unit, write data for the populated configuration for the set of oligos to a synthesis interface for synthesizing the set of oligos.

2 . The system of claim 1 , wherein:

the number of symbols is encoded in sequential positions along a length of each oligo of the set of oligos; and

each symbol in the first set of symbols occupies the same sequential position in the corresponding oligo of the plurality of oligos.

3 . The system of claim 1 , wherein the first codeword comprises:

a plurality of symbols corresponding to user data in the data unit; and

at least one symbol corresponding to redundancy data for the error correction code.

4 . The system of claim 3 , wherein the first codeword further comprises at least one symbol corresponding to a cyclic redundancy check value.

5 . The system of claim 1 , wherein the at least one hardware processor is further configured to, alone or in combination:

determine a first set of codewords comprising a plurality of codewords corresponding to the data unit and a first set of redundancy data for the data unit, wherein the first set of codewords includes the first codeword;

determine at least one permuted data set based on the data unit and the first set of redundancy data;

determine a second set of codewords comprising:

the at least one permuted data set; and

a second set of redundancy data for the at least one permuted data set; and

allocate symbols for the first set of codewords and the second set of codewords to the set of oligos.

6 . The system of claim 5 , wherein the at least one hardware processor is further configured to, alone or in combination:

add, responsive to determining the second set of redundancy data, codewords to the first set of codewords comprising:

the second set of redundancy data; and

a third set of redundancy data for the second set of redundancy data.

7 . The system of claim 6 , wherein:

the set of oligos stores an aggregate number of symbols;

the at least one permuted data set comprises a plurality of permuted data sets based on the data unit and the first set of redundancy data; and

the aggregate number of symbols equals at least a number of symbols in a combination of the first set of codewords and the second set of codewords.

8 . The system of claim 1 , wherein the at least one hardware processor is further configured to, alone or in combination:

receive read data determined from sequencing the set of oligos;

determine the first set of symbols for the first codeword from the read data;

assemble the first codeword;

decode, using the error correction code, the first codeword; and

output, based on the decoded first codeword, the portion of the data unit.

9 . The system of claim 8 , wherein the at least one hardware processor is further configured to, alone or in combination:

determine, from the read data, a first set of codewords comprising a plurality of codewords corresponding to the data unit and a first set of redundancy data for the data unit, wherein the first set of codewords includes the first codeword;

determine, from the read data, a second set of codewords comprising:

at least one permuted data set based on the data unit and the first set of redundancy data; and

a second set of redundancy data for the at least one permuted data set;

decode the data unit using the first set of codewords; and

selectively decode, responsive to a failure to decode at least one codeword in the first set of codewords, the second set of codewords.

10 . The system of claim 9 , wherein the at least one hardware processor is further configured to, alone or in combination:

determine a cyclic redundancy check value for each codeword in the first set of codewords;

determine a validation mask by evaluating the cyclic redundancy check value for each codeword in the first set of codewords; and

use the validation mask to determine target codewords for the selective decoding of the second set of codewords.

11 . A method comprising:

receiving read data determined from sequencing a set of oligos, wherein each oligo of the set of oligos encodes a number of symbols in corresponding base pair sequences;

determining a first set of symbols for a first codeword from the read data, wherein the first set of symbols encodes, using an error correction code, a portion of a data unit comprising user data;

assembling the first codeword from the first set of symbols, wherein:

the first set of symbols are distributed among a plurality of oligos from the set of oligos;

each oligo of the plurality of oligos received one symbol from the first set of symbols; and

each oligo of the plurality of oligos encodes a different set of symbols for the data unit from each other oligo in the plurality of oligos;

decoding, using the error correction code, the first codeword; and

outputting, based on the decoded first codeword, the portion of the data unit.

12 . The method of claim 11 , wherein:

the number of symbols is encoded in sequential positions along a length of each oligo of the set of oligos; and

each symbol of the first set of symbols occupies the same sequential position in the corresponding oligo of the plurality of oligos.

13 . The method of claim 11 , wherein the first codeword comprises:

a plurality of symbols corresponding to the user data in the data unit; and

at least one symbol corresponding to redundancy data for the error correction code.

14 . The method of claim 13 , wherein the first codeword further comprises at least one symbol corresponding to a cyclic redundancy check value.

15 . The method of claim 11 , further comprising:

determining, from the read data, a first set of codewords comprising a plurality of codewords corresponding to the data unit and a first set of redundancy data for the data unit, wherein the first set of codewords includes the first codeword;

determining, from the read data, a second set of codewords comprising:

at least one permuted data set based on the data unit and the first set of redundancy data; and

a second set of redundancy data for the at least one permuted data set;

decoding the data unit using the first set of codewords; and

selectively decoding, responsive to a failure to decode at least one codeword in the first set of codewords, the second set of codewords.

16 . The method of claim 15 , further comprising:

determining a cyclic redundancy check value for each codeword in the first set of codewords;

determining a validation mask by evaluating the cyclic redundancy check value for each codeword in the first set of codewords; and

using the validation mask to determine target codewords for the selective decoding of the second set of codewords.

17 . The method of claim 15 , further comprising:

iteratively decoding the data unit by alternating between decoding using the first set of codewords and decoding using the second set of codewords, wherein:

the first set of codewords correspond to a first tier of codewords encoding the data unit;

the at least one permuted data set comprises a plurality of permuted data sets based on the data unit and the first set of redundancy data; and

the second set of codewords corresponds to a plurality of additional tiers of codewords encoding the plurality of permuted data sets.

18 . The method of claim 11 , further comprising:

receiving the data unit;

determining a first set of codewords comprising a plurality of codewords corresponding to the data unit and a first set of redundancy data for the data unit, wherein the first set of codewords includes the first codeword;

determining at least one permuted data set based on the data unit and the first set of redundancy data;

determining a second set of codewords comprising:

the at least one permuted data set; and

a second set of redundancy data for the at least one permuted data set;

allocating symbols for the first set of codewords and the second set of codewords to a configuration for the set of oligos; and

outputting, responsive to populating the configuration for the set of oligos with base pair sequences encoding the data unit, write data for the populated configuration of the set of oligos to a synthesis interface for synthesizing the set of oligos.

19 . The method of claim 18 , further comprising:

adding, responsive to determining the second set of redundancy data, codewords to the first set of codewords comprising:

the second set of redundancy data; and

a third set of redundancy data for the second set of redundancy data.

20 . A system comprising:

means for receiving read data determined from sequencing a set of oligos, wherein each oligo of the set of oligos encodes a number of symbols in corresponding base pair sequences;

means for determining a first set of symbols for a first codeword from the read data, wherein the first set of symbols encodes, using an error correction code, a portion of a data unit comprising user data;

means for assembling the first codeword from the first set of symbols, wherein:

the first set of symbols are distributed among a plurality of oligos from the set of oligos;

each oligo of the plurality of oligos received one symbol from the first set of symbols; and

each oligo of the plurality of oligos encodes a different set of symbols for the data unit from each other oligo in the plurality of oligos;

means for decoding, using the error correction code, the first codeword; and

means for outputting, based on the decoded first codeword, the portion of the data unit.

Assignments (3)
PATENT COLLATERAL AGREEMENT- A&R Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065656/0649 →
PATENT COLLATERAL AGREEMENT - DDTL Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065657/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2023
From: OBOUKHOV, IOURI; GALBRAITH, RICHARD; RAVINDRAN, NIRANJAY
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 064869/0737 →
Continuity (1)
Related Publication 20250088203A1 · Mar 13, 2025
References Cited (94)
US 8407554B2 · Kermani · 2013 [cited by applicant]
US 8937564B2 · Aloni · 2015 [cited by applicant]
US 9234239B2 · Sikora · 2016 [cited by applicant]
US 9830553B2 · Chen · 2017 [cited by applicant]
US 10027347B2 · Le Scouarnec · 2018 [cited by applicant]
US 10370246B1 · Milenkovic · 2019 [cited by applicant]
US 10423341B1 · Kermani · 2019 [cited by applicant]
US 10566077B1 · Milenkovic · 2020 [cited by applicant]
US 10650312B2 · Roquet · 2020 [cited by applicant]
US 10742233B2 · Erlich · 2020 [cited by applicant]
US 10810495B2 · Roth · 2020 [cited by applicant]
US 10818378B2 · Hutchison, III · 2020 [cited by applicant]
US 10917109B1 · Dimopoulou · 2021 [cited by examiner]
US 10956806B2 · Masuda · 2021 [cited by applicant]
US 11017170B2 · Yin · 2021 [cited by applicant]
US 11093547B2 · Su · 2021 [cited by applicant]
US 11098303B2 · Zhuang · 2021 [cited by applicant]
US 11227219B2 · Roquet · 2022 [cited by applicant]
US 11249941B2 · Unidad · 2022 [cited by applicant]
US 11435905B1 · Kermani · 2022 [cited by applicant]
US 11755649B2 · Wei · 2023 [cited by applicant]
US 11755922B2 · Milenkovic · 2023 [cited by applicant]
US 11763169B2 · Roquet · 2023 [cited by applicant]
US 20040191788A1 · Gleba · 2004 [cited by applicant]
US 20070042372A1 · Arita · 2007 [cited by applicant]
US 20100199155A1 · Kermani · 2010 [cited by applicant]
US 20110172975A1 · Silva Filho · 2011 [cited by applicant]
US 20110269119A1 · Hutchison · 2011 [cited by applicant]
US 20170109229A1 · Huetter · 2017 [cited by examiner]
US 20170134045A1 · Huetter · 2017 [cited by applicant]
US 20180046921A1 · Chen · 2018 [cited by examiner]
US 20190130280A1 · Erden · 2019 [cited by examiner]
US 20190362814A1 · Roquet · 2019 [cited by applicant]
US 20190363739A1 · Erlich · 2019 [cited by examiner]
US 20200043568A1 · Sikora · 2020 [cited by applicant]
US 20200185057A1 · Leake · 2020 [cited by examiner]
US 20200193301A1 · Roquet · 2020 [cited by examiner]
US 20200211677A1 · Fan · 2020 [cited by applicant]
US 20210024924A1 · Qi · 2021 [cited by applicant]
US 20210050073A1 · Chen · 2021 [cited by applicant]
US 20210074380A1 · Yekhanin · 2021 [cited by applicant]
US 20210079382A1 · Leake · 2021 [cited by examiner]
US 20210098081A1 · Yekhanin · 2021 [cited by applicant]
US 20210108194A1 · Nathaniel · 2021 [cited by applicant]
US 20210166159A1 · Rubenstein · 2021 [cited by examiner]
US 20210202032A1 · Krsticevic · 2021 [cited by examiner]
US 20210210171A1 · Stirparo · 2021 [cited by applicant]
US 20210225461A1 · Merriman · 2021 [cited by applicant]
US 20220002781A1 · Harness · 2022 [cited by applicant]
US 20220044763A1 · Karimi · 2022 [cited by applicant]
US 20220364991A1 · Wanunu · 2022 [cited by applicant]
US 20230027270A1 · Rubenstein · 2023 [cited by examiner]
US 20230257801A1 · Brodin · 2023 [cited by examiner]
US 20230317164A1 · Roquet · 2023 [cited by examiner]
US 20240257147A1 · Owen · 2024 [cited by examiner]
US 20250020657A1 · Graige · 2025 [cited by examiner]
US 20250037039A1 · Rosenstein · 2025 [cited by examiner]
CN 118138060A · 2024 [cited by applicant]
EP 3416076A1 · 2018 [cited by applicant]
WO 2018148260A1 · 2018 [cited by applicant]
WO 2019046768A1 · 2019 [cited by applicant]
WO 2021072398A1 · 2021 [cited by applicant]
WO 2021105974A1 · 2021 [cited by applicant]
WO 2021231493A1 · 2021 [cited by applicant]
M. Zhang, K. Cai, K. A. Schouhamer Immink and P. Chen, “Soft-Decision Decoding for DNA-Based Data Storage,” 2018 International Symposium on Information Theory and Its Applications (ISITA), Singapore, 2018, pp. 16-20, (Y… [cited by examiner]
M. Dimopoulou, M. Antonini, P. Barbry and R. Appuswamy, “Storing Digital Data Into DNA: A Comparative Study Of Quaternary Code Construction,” ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signa… [cited by examiner]
Christner et al., “DNA Data Storage—DNA Data Storage Alliance—Rosetta Stone Initiative”, Storage Networking Industry Association, Storage Developer Conference, Fremont, CA, Sep. 12-15, 2022. [cited by applicant]
Gervasio et al., “DNA Data Storage—A Decade of Coding and Decoding, How Far Have We Got?”, Storage Networking Industry Association, Storage Developer Conference, Fremont, CA, Sep. 12-15, 2022. [cited by applicant]
Landsman et al., “DNA Data Storage Alliance: Building a DNA Data Storage Ecosystem”, Storage Networking Industry Association, Storage Developer Conference, Fremont, CA, Sep. 12-15, 2022. [cited by applicant]
Marelli et al., “DNAssim: A Full System Simulator for DNA Storage”, Storage Networking Industry Association, Storage Developer Conference, Fremont, CA, Sep. 12-15, 2022. [cited by applicant]
Ogus et al., “The Looming Need for Molecular Storage”, Storage Networking Industry Association, Storage Developer Conference, Fremont, CA, Sep. 12-15, 2022. [cited by applicant]
Piantanida et al., “Nucleic Acid Memory—Super Resolution Microscopy Enhances Novel Approach to DNA Data Storage”, Boise State University, Storage Developer Conference, Fremont, CA, Sep. 12-15, 2022. [cited by applicant]
Reis et al., “Coding and Decoding, an Experience from a Brazilian Research Center”, Storage Networking Industry Association, Storage Developer Conference, Fremont, CA, Sep. 12-15, 2022. [cited by applicant]
Dimopoulou et al., “Image storage onto synthetic DNA”, Signal Processing: Image Communication, vol. 97, 116331, May 27, 2021 Y sections 5.1-5.2; and figure B.3. [cited by applicant]
Nakata et al., “Synchronization and Asymmetric Error Correction for Nanopore Sequencing,” 2021 IEEE International Conference on Consumer Electronics—Taiwan, pp. 1-2, (2021). [cited by applicant]
Lu et al., “Design of Nonbinary Error Correction Codes With a Maximum Run-length Constraint to Correct a Single Insertion or Deletion Error for Dna Storage”, Institute of Electrical and Electronics Engineers (IEEE), vol… [cited by applicant]
Cai et al., “Correcting a Single Indel/Edit for DNA-Based Data Storage: Linear-Time Encoders and Order-Optimality”, EEE Transactions on Information Theory, vol. 67, No. 6, pp. 3438-3451, (2021). [cited by applicant]
Chen et al., “Multiple Interleaved RS Codes for Data Storage Using Up to Mb-scale Synthetic DNA in Living Cells”, Synthetic Biology Journal, vol. 2, Issue 3, pp. 428-443, (2021). [cited by applicant]
Goto et al., “Coding of Insertion-deletion-substitution Channels Without Markers”, 2016 IEEE International Symposium on Information Theory, pp. 635-639, (2016). [cited by applicant]
Khuat et al., “A Quaternary Code Correcting a Burst of at Most Two Deletion or Insertion Errors in DNA Storage”, Entropy, vol. 23, No. 12, pp. 1592, (2021). [cited by applicant]
Kiah et al., “Codes for DNA Sequence Profiles”, IEEE Transactions on Information Theory, vol. 62, No. 6, pp. 3125-3146, (2016). [cited by applicant]
Limbachiya et al., “On Optimal Family of Codes for Archival DNA Storage”, Seventh International Workshop on Signal Design and its Applications in Communications, pp. 123-127, (2015). [cited by applicant]
Yin et al., “Design of Constraint Coding Sets for Archive DNA Storage”, IEEE/ACM Transactions on Computational Biology and Bioinformatics, vol. 19, No. 6, pp. 3384-3394, (2022). [cited by applicant]
Chauhan et al., “Portable and Error-Free DNA-Based Data Storage”, 2021 4th International Conference on Recent Developments in Control, pp. 418-421, (2021). [cited by applicant]
Deng et al., “Optimized Code Design for Constrained DNA Data Storage With Asymmetric Errors”, IEEE Access, vol. 7, pp. 84107-84121, (2019). [cited by applicant]
Jain et al., “Duplication-Correcting Codes for Data Storage in the DNA of Living Organisms”, IEEE Transactions on Information Theory, vol. 63, No. 8, pp. 4996-5010 (2017). [cited by applicant]
Press et al., “HEDGES Error-correcting Code for DNA Storage Corrects Indels and Allow Sequence Constraints”, Proc Natl Acad Sci USA, vol. 117, No. 31, pp. 18489-18496, (2020). [cited by applicant]
Wei et al., “Improved Coding Over Sets for DNA-Based Data Storage”, IEEE Transactions on Information Theory, vol. 68, No. 1, pp. 118-129, (2022). [cited by applicant]
Wu et al., “HD-Code: End-to-End High Density Code for DNA Storage”, IEEE Transactions on NanoBioscience, vol. 20, No. 4, pp. 455-463, (2021). [cited by applicant]
Yan et al., “New Levenshtein-Marker Code for DNA-based Data Storage Capable of Correcting Multiple Edit Errors”, TechRxiv. (2021). [cited by applicant]
Hamoum et al., “Channel Model with Memory for DNA Data Storage with Nanopore Sequencing”, 2021 11th International Symposium on Topics in Coding , pp. 1-5, (2021). [cited by applicant]
Hamoum et al, “DNA Data Storage Algorithms and Synchronization.” Information Theory [math.IT]. Universit? Bretagne Sud, 2022. <https://hal.science/tel-03976945v1/file/Thesis_DNA_data_storage_Belaid_HAMOUM.pdf> Dec. 31, … [cited by applicant]
Qin, et al. “Robust Multi-read Reconstruction from Contaminated Custers Using Deep Neural Network for DNA Storage.” arXiv preprint arXiv:2210.11106. Oct. 31, 2022 (Oct. 31, 2022) whole document (2022). [cited by applicant]
Zhang et al. Rbec: a Tool for Analysis of Amplicon Sequencing Data from Synthetic Microbial Communities. ISME communications, 1(1), 73. Jan. 17, 2021 (Jan. 17, 2021) whole document (2021). [cited by applicant]