IP Library Granted Patent US 12,430,202
Granted Patent B2
US 12,430,202 · App. 18/499,370 · Granted Sep 30, 2025

Nested error correction codes for DNA data storage

Inventors: Iouri Oboukhov (Rochester, MN); Richard Galbraith (Rochester, MN); Niranjay Ravindran (Rochester, MN); Jonas Goode (Lake Forest, CA); Weldon M. Hanson (Rochester, MN)
Assignee: Western Digital Technologies, Inc.
G06F11/1004G06F16/27G16B50/50H03M13/1105H03M13/1148G11C13/02
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,430,202
App. No.
18/499,370
Granted
Sep 30, 2025
Kind
B2
Abstract

Example systems and methods for using nested error correction codes for DNA data storage are described. A data unit may be encoded in a set of oligos. Using an error correction code, such as an LDPC code, a codeword may be determined for the data unit that is a multiple of the data payload capacity of each oligo. The codeword may be divided among the set of oligos, along with corresponding redundancy data. Any number of additional levels of nested error correction codes may be implemented by aggregating sets of smaller codewords into larger codewords and storing the corresponding redundancy data in the set of oligos. Each nested level may be aggregated from the set of oligos and decoded using the corresponding error correction code matrix and set of redundancy data as needed, such as in response to failure to decode codewords at a lower level.

Claims (104)

1. A system, comprising:

an encoder circuit configured to:

determine a set of oligos for encoding a data unit, wherein:

the set of oligos encodes a set of symbols corresponding to the data unit; and

each symbol in the set of symbols corresponds to a known sequence of at least one base pair;

encode, using a first error correction code for a first codeword size corresponding to a number of base pairs, a first codeword comprising a first subset of symbols from the set of symbols, wherein the first subset of symbols includes a selected number of base pairs for the first codeword size;

determine, based on the first error correction code and the first subset of symbols, a first set of redundancy data;

divide the first codeword and the first set of redundancy data among a first plurality of oligos from the set of oligos; and

output write data for the first plurality of oligos for synthesis of the set of oligos.

2. The system of claim 1 , wherein:

at least one oligo in the set of oligos comprises data from the first set of redundancy data and no symbols from the first codeword.

3. The system of claim 1 , wherein each oligo in the set of oligos comprises an oligo address corresponding to a position of a codeword portion assigned to that oligo relative to codeword portions stored in other oligos in the set of oligos.

4. The system of claim 1 , wherein the first plurality of oligos includes a number of oligos corresponding to the first codeword size being greater than 16,000 base pairs.

5. The system of claim 1 , further comprising:

a decoder circuit configured to:

receive read data determined from sequencing the set of oligos;

aggregate the read data from the first plurality of oligos corresponding to the first codeword;

decode, using the first error correction code and the first codeword, user data from the read data; and

output, based on the decoded user data, the data unit.

6. The system of claim 5 , wherein the decoder circuit is further configured to, prior to decoding the user data using the first codeword:

determine insertions and deletions in the first plurality of oligos;

correct symbol alignment to compensate for determined insertions and deletions; and

identify unreliable data corresponding to the insertions and deletions as erasures for error correction code decoding.

7. The system of claim 1 , wherein the encoder circuit is further configured to:

determine a series of subsets of symbols from the set of symbols, including the first subset of symbols;

determine, for each subset of symbols and using the first error correction code, a corresponding first-level codeword and first-level set of redundancy data based on that subset of symbols;

aggregate the first-level codewords corresponding to the set of symbols;

determine, based on a second error correction code having a second codeword size, a second-level codeword for the aggregated first-level codewords;

determine, based on the second error correction code and the aggregated first-level codewords, a second-level set of redundancy data;

divide the first-level codewords and the second-level set of redundancy data among the set of oligos; and

output write data for the set of oligos for the synthesis of the set of oligos.

8. The system of claim 7 , further comprising:

a decoder circuit configured to:

receive read data determined from sequencing the set of oligos;

aggregate, for each first-level codeword, the read data from a corresponding subset of oligos from the set of oligos;

determine, based on the read data, the first-level set of redundancy data;

attempt to decode, using a first error correction code matrix and the first-level set of redundancy data, the first-level codewords to decode user data from the read data;

aggregate the first-level codewords into the second-level codeword;

determine, based on the read data, the second-level set of redundancy data;

selectively decode, responsive to a failure to decode at least one first-level codeword and using a second error correction code matrix and the second-level set of redundancy data, the second-level codeword to decode the user data from the read data; and

output, based on the decoded user data, the data unit.

9. The system of claim 8 , wherein the second error correction code matrix is scaled from the first error correction code matrix by replacing each node in the first error correction code matrix with a corresponding scaling matrix.

10. The system of claim 1 , wherein the encoder circuit is further configured to:

determine a number of nested error correction code levels of increasing codeword size, wherein the number of nested error correction code levels is greater than two;

divide the set of symbols for the data unit among the set of oligos;

determine first-level subsets of the set of symbols corresponding to first-level codewords;

encode, using the first error correction code, first-level codewords and first-level redundancy data;

allocate the first-level redundancy data among the set of oligos;

until the number of nested error correction code levels is met, iteratively:

aggregate prior-level codewords and prior-level redundancy data to determine next-level sets of symbols;

determine, based on the next-level sets of symbols and a next-level error correction code having a greater codeword size than the prior-level codewords, next-level codewords and next-level redundancy data; and

allocate the next-level redundancy data among the set of oligos; and

output write data for the set of oligos for the synthesis of the set of oligos.

11. A method comprising:

determining a set of oligos for encoding a data unit, wherein:

the set of oligos encodes a set of symbols corresponding to the data unit; and

each symbol in the set of symbols corresponds to a known sequence of at least one base pair;

encoding, using a first error correction code for a first codeword size corresponding to a number of base pairs, a first codeword comprising a first subset of symbols from the set of symbols, wherein the first subset of symbols includes a selected number of base pairs for the first codeword size;

determining, based on the first error correction code and the first subset of symbols, a first set of redundancy data;

dividing the first codeword among a first plurality of oligos from the set of oligos;

allocating the first set of redundancy data to the first plurality of oligos; and

outputting write data for the first plurality of oligos for synthesis of the set of oligos.

12. The method of claim 11 , wherein allocating the first set of redundancy data to the first plurality of oligos comprises allocating at least one oligo that includes data from the first set of redundancy data and no symbols from the first codeword.

13. The method of claim 11 , further comprising:

determining, for each oligo in the set of oligos, an oligo address corresponding to a position of a codeword portion assigned to that oligo relative to codeword portions stored in other oligos in the set of oligos.

14. The method of claim 11 , wherein the first plurality of oligos includes a number of oligos corresponding to the first codeword size being greater than 16,000 base pairs.

15. The method of claim 11 , further comprising:

receiving read data determined from sequencing the set of oligos;

aggregating the read data from the first plurality of oligos corresponding to the first codeword;

decoding, using the first error correction code and the first codeword, user data from the read data; and

outputting, based on the decoded user data, the data unit.

16. The method of claim 15 , further comprising, prior to decoding the user data using the first codeword:

determining insertions and deletions in the first plurality of oligos;

correcting symbol alignment to compensate for determined insertions and deletions; and

identifying unreliable data corresponding to the insertions and deletions as erasures for error correction code decoding.

17. The method of claim 11 , further comprising:

determining a series of subsets of symbols from the set of symbols, including the first subset of symbols;

determining, for each subset of symbols and using the first error correction code, a corresponding first-level codeword and first-level set of redundancy data based on that subset of symbols;

aggregating the first-level codewords corresponding to the set of symbols;

encoding, based on a second error correction code having a second codeword size, a second-level codeword for the aggregate first-level codewords;

determining, based on the second error correction code and the aggregate first-level codewords, a second-level set of redundancy data;

dividing the first-level codewords and the second-level set of redundancy data among the set of oligos; and

outputting write data for the set of oligos for the synthesis of the set of oligos.

18. The method of claim 17 , further comprising:

receiving read data determined from sequencing the set of oligos;

aggregating, for each first-level codeword, the read data from a corresponding subset of oligos from the set of oligos;

determining, based on the read data, the first-level set of redundancy data;

attempting to decode, using a first error correction code matrix and the first-level set of redundancy data, the first-level codewords to decode user data from the read data;

aggregating the first-level codewords into the second-level codeword;

determining, based on the read data, the second-level set of redundancy data;

selectively decoding, responsive to a failure to decode at least one first-level codeword and using a second error correction code matrix and the second-level set of redundancy data, the second-level codeword to decode the user data from the read data; and

outputting, based on the decoded user data, the data unit.

19. The method of claim 18 , further comprising:

determining the second error correction code matrix from the first error correction code matrix by replacing each node in the first error correction code matrix with a corresponding scaling matrix.

20. A system comprising:

at least one processor;

at least one memory;

means, stored in the at least one processor for execution by the at least one memory, for determining a set of oligos for encoding a data unit, wherein:

the set of oligos encodes a set of symbols corresponding to the data unit; and

each symbol in the set of symbols corresponds to a known sequence of at least one base pair;

means, stored in the at least one processor for execution by the at least one memory, for determining, using a first error correction code for a first codeword size corresponding to a number of base pairs, a first codeword based on a first subset of symbols from the set of symbols, wherein the first subset of symbols includes a selected number of base pairs for the first codeword size;

means, stored in the at least one processor for execution by the at least one memory, for determining, based on the first error correction code and the first subset of symbols, a first set of redundancy data;

means, stored in the at least one processor for execution by the at least one memory, for dividing the first codeword and the first set of redundancy data among a first plurality of oligos from the set of oligos; and

means, stored in the at least one processor for execution by the at least one memory, for outputting write data for the first plurality of oligos for synthesis of the set of oligos.

Assignments (3)
PATENT COLLATERAL AGREEMENT (DDTL) Recorded Feb 22, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 066648/0206 →
PATENT COLLATERAL AGREEMENT (AR) Recorded Feb 22, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 066648/0284 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2023
From: OBOUKHOV, IOURI; GALBRAITH, RICHARD; RAVINDRAN, NIRANJAY; GOODE, JONAS; HANSON, WELDON M.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 065419/0369 →
Continuity (2)
Provisional Application 63386068 · Dec 5, 2022
Related Publication 20240185959A1 · Jun 6, 2024
References Cited (92)
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 examiner]
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 examiner]
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 examiner]
US 11249941B2 · Unidad · 2022 [cited by applicant]
US 11435905B1 · Kermani · 2022 [cited by applicant]
US 11755649B2 · Wei · 2023 [cited by examiner]
US 11755922B2 · Milenkovic · 2023 [cited by examiner]
US 11763169B2 · Roquet · 2023 [cited by examiner]
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 applicant]
US 20170134045A1 · Huetter · 2017 [cited by applicant]
US 20180046921A1 · Chen · 2018 [cited by applicant]
US 20190130280A1 · Erden · 2019 [cited by applicant]
US 20190362814A1 · Roquet · 2019 [cited by applicant]
US 20190363739A1 · Erlich · 2019 [cited by applicant]
US 20200043568A1 · Sikora · 2020 [cited by applicant]
US 20200185057A1 · Leake · 2020 [cited by applicant]
US 20200193301A1 · Roquet · 2020 [cited by applicant]
US 20210024924A1 · Qi · 2021 [cited by applicant]
US 20210050073A1 · Chen · 2021 [cited by examiner]
US 20210074380A1 · Yekhanin · 2021 [cited by applicant]
US 20210079382A1 · Leake · 2021 [cited by applicant]
US 20210098081A1 · Yekhanin · 2021 [cited by applicant]
US 20210108194A1 · Nathaniel · 2021 [cited by applicant]
US 20210166159A1 · Rubenstein · 2021 [cited by applicant]
US 20210202032A1 · Krsticevic · 2021 [cited by applicant]
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 applicant]
US 20230257801A1 · Brodin · 2023 [cited by applicant]
US 20230317164A1 · Roquet · 2023 [cited by applicant]
US 20240257147A1 · Owen · 2024 [cited by applicant]
US 20250020657A1 · Graige · 2025 [cited by applicant]
US 20250037039A1 · Rosenstein · 2025 [cited by applicant]
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]
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, p. 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]
Dimopoulou et al., “Image storage onto synthetic DNA”, Signal Processing: Image Communication, vol. 97, 116331, May 27, 2021, Sections 5.1-5.2; and figure B.3. [cited by applicant]
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]
Og US 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]
Zhang et al., “Soft-Decision Decoding for DNA-Based Data Storage,” 2018 International Symposium on Information Theory and Its Applications (ISITA), Singapore, 2018, pp. 16-20, (Year: 2018). [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]
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. [cited by applicant]
Hamoum et al. “DNA Data Storage Algorithms and Synchronization”, Information Theory [math.IT]. University Bretagne Sud, (2022). [cited by applicant]