Codec for DNA Data Storage
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- TWIST BIOSCIENCE CORP
- Filing Date
- 2023-04-20
- Publication Date
- 2026-04-14
AI Technical Summary
Existing methods for encoding and decoding DNA for data storage face challenges due to errors and ambiguities introduced during sequencing and operations, requiring efficient error correction mechanisms.
The development of various codecs that encode digital data into oligo pools and redecode the pool into digital data, incorporating internal and external codecs with error correction schemes to tolerate oligo loss and high error rates during synthesis, storage, and sequencing.
These codecs enable efficient data storage and retrieval by correcting errors and maintaining data integrity, even with low sequencing coverage and high error rates, thus optimizing the synthesis of multiple polynucleotides.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] cross reference This application claims the benefit of U.S. Provisional Patent Application No. 63 / 333,305, filed April 21, 2022, U.S. Provisional Patent Application No. 63 / 338,760, filed May 5, 2022, and U.S. Provisional Patent Application No. 63 / 481,873, filed January 27, 2023, which are incorporated by reference in their entireties.
[0002] Incorporation by Reference All publications, patents, and patent applications mentioned in this specification are herein incorporated by reference to the same extent as if each individual publication, patent, or patent application was specifically and individually indicated to be incorporated by reference. [Background technology]
[0003] DNA is an attractive data storage medium given its superior density, stability, energy efficiency, and longevity compared to currently used electronic media. However, errors and ambiguities can be introduced or arise at or between different stages of sequencing and sequencing-related operations and processes. Therefore, there is a need to develop methods to efficiently encode and decode DNA in the presence of such errors. Summary of the Invention
[0004] Provided herein are various codec designs and implementations that encode digital data (e.g., binary data) into pools of oligos and decode the pools back to digital data. The codec can include an internal codec for converting the digital data into bases. The codec can also include an external codec for distributing the stored data across many oligos and building in redundancy to correct for losses. The codecs described herein can tolerate loss of oligos during synthesis, storage, and / or sequencing, as well as a high rate of deletions, mutations, and insertions. In some embodiments, the codecs described herein are designed for low sequencing coverage. In some embodiments, the codecs described herein are designed to optimize the synthesis of multiple polynucleotides.
[0005] Further provided herein is a method for retrieving digital information from a plurality of polynucleotides. The codec may include a bucket-like storage system that supports the storage of one or more objects containing digital information in one or more pools. The codec may further include storage strategies such as indexing (e.g., index pools) and hashing (e.g., hashing modules) for efficient data storage. The codec may also build redundancy into one or more pools to correct losses or errors that may occur during the storage or retrieval of digital information.
[0006] In one aspect, provided herein is a method for encoding data in a plurality of polynucleotide sequences, the method including: (a) dividing data into a plurality of frames, each frame of the plurality of frames including a frame index; (b) applying an outer codec to each frame of the plurality of frames, the outer codec including an error correction scheme; (c) dividing each frame into a plurality of lanes, each lane of the plurality of lanes including a lane index; (d) shuffling each lane based at least in part on the lane index; and (e) applying an inner codec to encode each lane in one of the plurality of polynucleotide sequences. In some cases, the data includes a plurality of symbols. In some cases, the data includes binary data. In some cases, the binary data includes a byte stream or byte array. In some cases, the shuffling in (d) includes a rotation scheme within each lane. In some cases, the shuffling in (d) includes a pseudo-random process within each lane. In some cases, the shuffling in (d) provides resistance to errors. In some cases, the error is a nucleotide synthesis error or a sequencing error. In some cases, the error includes a deletion, an insertion, or a substitution. In some cases, the error correction scheme includes a Reed-Solomon (RS) code, a low-density parity-check (LDPC) code, a turbo code, a polar code, or any combination thereof. In some cases, the data includes at least about 1 GB to about 1 TB. In some cases, the plurality of frames includes about 100 to about 10,000 frames. In some cases, each frame includes up to about 5000 lanes. In some cases, each lane includes about 100 to about 300 bits. In some cases, the frame index includes about 16 bits to about 20 bits. In some cases, the lane index includes about 12 bits or about 16 bits.In some cases, the length of the polynucleotide sequences is about 100 to about 300 bases. In some cases, prior to (d), a frame index and / or a lane index is added to the beginning of each lane. In some cases, applying the internal codec includes adding redundancy across the plurality of polynucleotide sequences. In some cases, the redundancy is about 5% to about 10%. In some cases, due to the redundancy across the plurality of polynucleotide sequences in part, the plurality of polynucleotide sequences may be decoded in the presence of an error. In some cases, the error includes an insertion, a deletion, a substitution, or any combination thereof. In some cases, applying the internal codec includes (a) combining the symbol, the symbol history, and the symbol position from the lane, and (b) generating base candidates using a lookup table, a hash, or both. In some cases, the method further includes performing a base repetition check. In some cases, the symbol is a bit. In some cases, the method further includes updating the symbol history, incrementing the lane index, incrementing the frame index, or any combination thereof. In some cases, the updated symbol history, the incremented lane index, the incremented frame index, or any combination thereof, is combined with the symbol of the subsequent lane. In some cases, the method further includes performing GC filtering prior to synthesizing the plurality of polynucleotide sequences. In some cases, the GC filtering includes removing about 5% to about 10% of the plurality of lanes. In some cases, the plurality of polynucleotide sequences includes about 45% to about 55% GC content. In some cases, at least 90% of the plurality of polynucleotide sequences includes about 45% to about 55% GC content. In some cases, applying the internal codec includes (a) generating base candidates for each symbol in the lane using a lookup table, and (b) selecting a next lookup table based at least in part on the previously encoded symbol.In some cases, applying the intra codec includes applying an encoding scheme.
[0007] In another aspect, provided herein is a method for decoding a plurality of polynucleotide sequences to generate an output comprising data, the method including: (a) determining the plurality of polynucleotide sequences; (b) applying an inner codec to the plurality of polynucleotide sequences, the inner codec converting each of the plurality of polynucleotide sequences into lanes comprising a plurality of symbols, the inner codec including a mixed decoding algorithm including a greedy algorithm and a maximum likelihood (ML) algorithm; (c) arranging the lanes of data into frames based on lane indexes and frame indexes for each lane; and (d) applying an outer codec to the frames, the outer codec including an error correction scheme, and the frames from the outer codec are merged to generate an output comprising data. In some cases, the data comprises a plurality of symbols. In some cases, the data includes binary data. In some cases, the binary data includes a byte stream or byte array. In some cases, the inner codec includes a decoding scheme. In some cases, the method further includes clustering the polynucleotide sequences prior to (b). In some cases, the clustering is based on the index. In some cases, the clustering includes, in part, decoding the frame index, the lane index, or both. In some cases, the clustering is performed using a hash function. In some cases, the method further includes aligning the polynucleotide sequences prior to (b). In some cases, the alignment includes analyzing nucleotide consensus using an alignment algorithm. In some cases, the alignment algorithm includes a pairwise alignment algorithm, a multi-sequence alignment algorithm, or a combination thereof.In some cases, the alignment algorithm includes (a) initializing a position for each read of the plurality of reads, where the initialization includes aligning the polynucleotide sequence to position 0; (b) analyzing a consensus of the next one or more bases between each read; (c) determining, for each read, a decision including whether each of the next one or more bases is correct or has an error; (d) incrementing the position given the decision for each read; and (e) repeating steps (b)-(d). In some cases, the error is a deletion, substitution, or insertion. In some cases, the plurality of reads includes about 3 to about 10 reads. In some cases, each read is about 100 to about 300 bases in length. In some cases, the next one or more bases are about 2, 3, 4, or 5 bases. In some cases, the mixed decoding algorithm includes decoding based on a transition probability from the one or more states. In some cases, the one or more states include about 100 to about 1000 most likely states. In some cases, the inner codec further includes a drift term. In some cases, the drift term includes an integer. In some cases, the integer is associated with a total number of insertions or deletions in the polynucleotide sequence. In some cases, the integer is calculated by summing values of the one or more insertions or values of the one or more deletions of a total number of insertions, deletions, or both. In some cases, a value of each of the one or more insertions includes +1 and a value of each of the one or more deletions includes -1. In some cases, (c) includes unshuffling the lanes based on a lane index and grouping the lanes into frames based on a frame index. In some cases, the error correction scheme includes a Reed-Solomon (RS) code, a low-density parity check (LDPC) code, a turbo code, a polar code, or any combination thereof. In some cases, at least one polynucleotide sequence of the plurality of polynucleotide sequences includes an error. In some cases, the error includes an insertion, a deletion, a substitution, or any combination thereof.
[0008] In another aspect, provided herein is an apparatus comprising: (a) a memory; and (b) a processing device operatively coupled to the memory, the processing device configured to: (i) divide data into a plurality of frames, each frame of the plurality of frames including a frame index; (ii) apply an outer codec to each frame of the plurality of frames, the outer codec including an error correction scheme; (iii) divide each frame into a plurality of lanes, each lane of the plurality of lanes including a lane index; (iv) shuffle each lane based at least in part on the lane index; and (v) apply an inner codec to encode each lane in a polynucleotide sequence. In some cases, the inner codec adds redundancy such that the digital data may be decoded when an error is present in the polynucleotide sequence. In some cases, the inner codec includes an encoding scheme. In some cases, the data includes a plurality of symbols. In some cases, the data includes digital data. In some cases, the apparatus further comprises a synthesizer for generating the polynucleotide sequence. In some cases, the memory, the processing device, or both are part of a computing system. In some cases, the computing system includes a cloud computing system. In some cases, the cloud computing system includes a private cloud, a public cloud, a hybrid cloud, a multicloud, or any combination thereof. In some cases, the cloud computing system includes infrastructure as a service (IaaS), platform as a service (PaaS), software as a service (SaaS), or any combination thereof.
[0009] In another aspect, provided herein is an apparatus comprising: (a) a memory; (b) a sequencing device configured to determine a sequence of a plurality of polynucleotides; and (c) a processing device operably coupled to the memory and the sequencing device, the processing device configured to: (i) apply an inner codec to the sequences, the inner codec converting each of the sequences into lanes including a plurality of symbols, the inner codec including a hybrid decoding algorithm including a greedy algorithm and a maximum likelihood (ML) algorithm; (ii) arrange the lanes into frames based on a lane index and a frame index within each lane; and (iii) apply an outer codec to the frames, the outer codec including an error correction scheme, and the frames from the outer codec are merged to generate an output including the data. In some cases, the inner codec includes the decoding scheme. In some cases, the data includes a plurality of symbols. In some cases, the data includes digital data. In some cases, the memory, the processing device, or both are part of a computing system. In some cases, the computing system includes a cloud computing system. In some cases, a cloud computing system includes a private cloud, a public cloud, a hybrid cloud, a multicloud, or any combination of these. In some cases, a cloud computing system includes Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), or any combination of these.
[0010] In another aspect, provided herein is a method for encoding data in a polynucleotide sequence, the method including: (a) generating an internal codec including a codebook, the codebook being optimized against one or more constraints; and (b) applying the internal codec to encode the data as a plurality of polynucleotide sequences. In some cases, the data includes a plurality of symbols. In some cases, the data includes binary data. In some cases, the one or more constraints are associated with nucleic acid synthesis, post-processing, storage, sequencing, or any combination thereof. In some cases, the nucleic acid synthesis includes electrochemical synthesis, enzymatic synthesis, phosphoramidite synthesis, inkjet printing, or any combination thereof. In some cases, the one or more constraints associated with nucleic acid synthesis include synthesis errors. In some cases, the synthesis errors include insertions, deletions, or mutations. In some cases, the post-processing includes one or more of ligation, cleavage, hybridization, denaturation, fixation to a solid support, extension, error correction, enrichment, separation, purification, or amplification. In some cases, the storage includes cold data storage. In some cases, the storage includes nucleic acid storage in a liquid phase or a solid phase. In some cases, the one or more constraints associated with the storage include temperature, humidity, pressure, salinity, pH, concentration, time, light, UV, O2, or any combination thereof. In some cases, the temperature includes room temperature. In some cases, the sequencing includes next generation sequencing, parallel sequencing, single molecule real-time sequencing, nanopore sequencing, sequencing by synthesis, Sanger sequencing, or any combination thereof. In some cases, the method further includes (c) synthesizing a plurality of polynucleotides comprising a plurality of polynucleotide sequences. In some cases, the codebook includes codewords generated based in part on the base sequence. In some cases, the base sequence includes predefined base transitions. In some cases, the internal codec includes two or more codebooks.In some cases, each of the two or more codebooks encodes a layer during synthesis of the plurality of polynucleotides. In some cases, the layer includes an extension of each polynucleotide of the plurality of polynucleotides by at least one base. In some cases, synthesis of the layer includes one or more cycles, each of the one or more cycles includes flowing a base according to one or more base transitions of the codebook. In some cases, one cycle of the one or more cycles includes the addition of one or more of A, T, C, or G. In some cases, each of the two or more codebooks includes a different base order. In some cases, the codebook includes about 12 codewords. In some cases, (b) includes mapping the data to the plurality of polynucleotide sequences based on the codebook. In some cases, the inner codec is further optimized for one or more constraints including length, GC content, repeats, errors, or any combination thereof, of the plurality of polynucleotide sequences. In some cases, 40%-60% of the plurality of polynucleotide sequences encode for redundancy. In some cases, synthesis includes multiple synthesis cycles. In some cases, the number of synthesis cycles is reduced compared to the number of synthesis cycles required to synthesize a polynucleotide sequence that is not encoded using an internal codec. In some cases, the reduction in the number of synthesis cycles is based in part on the flow order. In some cases, the number of synthesis cycles is reduced by at least 30%. In some cases, the number of synthesis cycles is reduced by 50%. In some cases, the number of synthesis cycles is less than 300 for a polynucleotide sequence comprising 100 bases. In some cases, the number of synthesis cycles is about 155 for a polynucleotide sequence comprising 100 bases. In some cases, the polynucleotide sequence comprises one or more of A, T, C, or G. In some cases, (c) comprises synthesizing a plurality of polynucleotides on a solid support. In some cases, the solid support comprises a plurality of features. In some cases, more than 25% of the plurality of features are deblocked per synthesis cycle. In some cases, at least 50% of the plurality of features are deblocked per synthesis cycle.In some cases, each of the plurality of polynucleotide sequences has the same length. In some cases, between 80% and 100% of the plurality of polynucleotide sequences have the same length. In some cases, the method further includes sequencing the plurality of polynucleotides to generate a plurality of output sequences. In some cases, the plurality of output sequences are decoded using a greedy algorithm, a maximum likelihood (ML) algorithm, or a mixed greedy ML algorithm. In some cases, the plurality of output sequences are decoded based at least in part on calculating a probability of an error. In some cases, the error comprises a deletion, an insertion, a mutation, or any combination thereof.
[0011] In another aspect, provided herein is a hybrid organic-in silico platform for encoding data comprising: (a) a computing system comprising at least one processor and instructions executable by the at least one processor to perform operations, the operations including (i) generating an internal codec comprising a codebook, the codebook being optimized against one or more constraints, and (ii) applying the internal codec to encode the data as a plurality of polynucleotide sequences; and (b) a synthesizer for generating a plurality of polynucleotides comprising a plurality of polynucleotide sequences. In some cases, the data comprises a plurality of symbols. In some cases, the one or more constraints are associated with nucleic acid synthesis, post-processing, storage, sequencing, or any combination thereof. In some cases, the nucleic acid synthesis comprises electrochemical synthesis, enzymatic synthesis, phosphoramidite synthesis, inkjet printing, or any combination thereof. In some cases, the one or more constraints associated with nucleic acid synthesis comprise a synthesis error. In some cases, the synthesis error comprises an insertion, a deletion, or a mutation. In some cases, the post-processing includes one or more of ligation, cleavage, hybridization, denaturation, immobilization to a solid support, extension, error correction, enrichment, separation, purification, and amplification. In some cases, the storage includes cold data storage. In some cases, the storage includes nucleic acid storage in liquid phase or solid phase. In some cases, the one or more constraints associated with the storage include temperature, humidity, pressure, salinity, pH, concentration, time, light, UV, O2, or any combination thereof. In some cases, the temperature includes room temperature. In some cases, the sequencing includes next generation sequencing, parallel sequencing, single molecule real-time sequencing, nanopore sequencing, sequencing by synthesis, Sanger sequencing, or any combination thereof.In some cases, the computing system includes a cloud computing system. In some cases, the cloud computing system includes a private cloud, a public cloud, a hybrid cloud, a multi-cloud, or any combination thereof. In some cases, the cloud computing system includes an infrastructure as a service (IaaS), a platform as a service (PaaS), a software as a service (SaaS), or any combination thereof. In some cases, the codebook includes codewords generated based in part on a base sequence. In some cases, the base sequence includes a predefined base transition. In some cases, the internal codec includes two or more codebooks. In some cases, each of the two or more codebooks encodes a layer during synthesis of the plurality of polynucleotides. In some cases, the layer includes an extension of each polynucleotide of the plurality of polynucleotides by at least one base. In some cases, the synthesis of the layer includes one or more cycles, each of the one or more cycles including flowing a base according to one or more base transitions of the codebook. In some cases, one cycle of the one or more cycles includes the addition of one or more of A, T, C, or G. In some cases, each of the two or more codebooks includes a different base sequence. In some cases, the instructions further cause the synthesizer to generate a plurality of polynucleotides. In some cases, the system further comprises a sequencer for sequencing the plurality of polynucleotides to generate a plurality of output sequences. In some cases, the instructions further cause the computing system to receive the plurality of output sequences. In some cases, the computing system further performs an operation including (iii) decoding the plurality of output sequences. In some cases, the plurality of output sequences are decoded using a greedy algorithm, a maximum likelihood (ML) algorithm, or a mixed greedy ML algorithm. In some cases, the plurality of output sequences are decoded based at least in part on calculating probabilities of deletions, insertions, mutations, or any combination thereof.In some cases, the method further comprises a storage unit for storing the plurality of polynucleotides. In some cases, the operations further include transferring the plurality of polynucleotides between the synthesizer, the sequencer, the storage unit, or any combination thereof. In some cases, the particular base transitions enable synthesis according to the flow order. In some cases, the codebook includes about 12 codewords. In some cases, (a)(ii) includes mapping the data to the plurality of polynucleotide sequences based on the codebook. In some cases, the internal codec is further optimized for constraints including length, GC content, repetition, or any combination thereof, of the plurality of polynucleotide sequences. In some cases, 40%-60% of the plurality of polynucleotide sequences encode for redundancy. In some cases, generating the plurality of polynucleotides includes a plurality of synthesis cycles. In some cases, the number of synthesis cycles is reduced as compared to the number of synthesis cycles required to synthesize a polynucleotide sequence that is not encoded using the internal codec. In some cases, the reduction in the number of synthesis cycles is based in part on the flow order. In some cases, the number of synthesis cycles is reduced by at least 30%. In some cases, the number of synthesis cycles is reduced by 50%. In some cases, the number of synthesis cycles is less than 300 for a polynucleotide sequence comprising 100 bases. In some cases, the number of synthesis cycles is about 155 for a polynucleotide sequence comprising 100 bases. In some cases, the polynucleotide sequence comprises one or more A, T, C, or G. In some cases, generating the plurality of polynucleotides comprises base-by-base synthesis. In some cases, the synthesizer comprises a solid support comprising a plurality of features. In some cases, each of the plurality of features is independently addressable via one or more electrodes of the solid support. In some cases, each of the plurality of features is addressable via masking. In some cases, the masking comprises a physical barrier. In some cases, the masking comprises controlling reactivity at one or more of the plurality of features.In some cases, controlling the reactivity includes deprotection at one or more of the plurality of features. In some cases, the deprotection includes acid generation. In some cases, the deprotection is electrochemical deprotection. In some cases, more than 25% of the plurality of features are deblocked per synthesis cycle. In some cases, at least 50% of the plurality of features are deblocked per synthesis cycle. In some cases, each of the plurality of polynucleotide sequences has the same length. In some cases, between 80% and 100% of the plurality of polynucleotide sequences have the same length.
[0012] In one aspect, provided herein is a system for storing data in DNA, the system comprising one or more processing units, a memory in communication with the one or more processing units, instructions stored in the memory and executed on the one or more processing units to cause the system to generate a plurality of pools, each of the plurality of pools including a pool descriptor, a pool item including a payload of data, and an end descriptor, determine a first one or more hashes of the payload for each pool item, and apply an encoding scheme to encode the plurality of pools as a sequence of a plurality of polynucleotides. In some embodiments, the encoding scheme includes an internal codec, an external codec, or both, as described herein. In some embodiments, the data includes an item of information or digital information as described herein. In some embodiments, the data includes one or more objects. In some embodiments, the one or more processing units, the memory, or both, are part of a computing system. In some embodiments, the computing system includes a cloud computing system. In some embodiments, the cloud computing system includes a private cloud, a public cloud, a hybrid cloud, a multi-cloud, or any combination thereof. In some embodiments, the cloud computing system includes Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), or any combination thereof. In some embodiments, instructions are stored in memory and executed on one or more processing units to cause the system to determine a second one or more hashes of each of the one or more objects. In some embodiments, the one or more objects include a file or metadata associated with the file. In some embodiments, the pool descriptor includes a version, a pool ID, a list of pool item descriptors, or any combination thereof. In some embodiments, the pool ID includes a unique ID.In some embodiments, the unique ID comprises a universal unique identifier (UUID) or a content ID. In some embodiments, the list of pool item descriptors comprises a path of the object, a size of the object, a range of the pool item within the object, an offset of the pool item within the pool, or any combination thereof. In some embodiments, each of the one or more pool items further comprises a hash of the pool item from the first one or more hashes. In some embodiments, the end pool descriptor comprises a list of object descriptors. In some embodiments, the list of object descriptors comprises a path of the object, a hash of the object from the first one or more hashes, or a combination thereof. In some embodiments, each of the plurality of pools is between about 1 GB and about 1 TB. In some embodiments, the plurality of pools comprises redundant pools. In some embodiments, the first one or more hashes, the second one or more hashes, or both are determined using a hashing module. In some embodiments, the hashing module executes on one or more processing units. In some embodiments, the first one or more hashes require less memory than the one or more objects. In some embodiments, the second one or more hashes require less memory than the one or more pool items. In some embodiments, the hashing module includes a hash function. In some embodiments, the hash function includes SHA-224, SHA-256, SHA-384, SHA-512, SHA-512 / 224, or SHA-512 / 256. In some embodiments, the instructions further cause the system to generate one or more index pools. In some embodiments, the one or more index pools include an index pool descriptor and a list of object indexing. In some embodiments, the index pool descriptor includes a version, a pool ID, a size of the pool, and a timestamp. In some embodiments, the pool ID includes a unique ID.In some embodiments, the unique ID comprises a UUID or a content ID. In some embodiments, the object indexing list comprises a path of the object, a hash of the object, a list of object fragments, a list of object metadata, or any combination thereof. In some embodiments, the list of object fragments comprises a pool ID of a pool containing the fragment, a range of fragments, or any combination thereof. In some embodiments, the list of object metadata comprises a metadata type, a metadata payload, or a combination thereof. In some embodiments, the metadata type comprises a list of keywords attached to the object, a thumbnail image, a text summary, a sorted key value database ID range, a timestamp, a version, or any combination thereof. In some embodiments, each of the one or more index pools is about 1 GB to about 1 TB. In some embodiments, instructions are stored in a memory and executed on one or more processing units to cause the system to retrieve data stored in DNA. In some embodiments, the instructions include applying a decoding scheme to decode a sequence of the plurality of polynucleotides in each of the plurality of pools and validating the payload of at least each pool item using the first one or more hashes.
[0013] In one aspect, provided herein is a device for storing information in DNA, comprising one or more compartments, each compartment comprising: (a) a library comprising a plurality of polynucleotides, the library encoding a pool comprising information corresponding to one or more objects; and (b) a medium for storing the plurality of polynucleotides. In some embodiments, the information comprises an item of information or digital information described herein. In some embodiments, the information comprises a plurality of symbols. In some embodiments, one or more compartments communicate. In some embodiments, one or more compartments do not communicate. In some embodiments, the medium comprises a solid, liquid, gas, or any combination thereof. In some embodiments, the medium comprises a salt solution having a molar ratio of salt cations to phosphate groups in the DNA of less than 20:1. In some embodiments, the salt solution is dried to create a dry product. In some embodiments, the device further comprises a solid support comprising a surface. In some embodiments, the device further comprises a plurality of structures located on the surface, the plurality of polynucleotides being stretched from the plurality of structures. In some embodiments, the one or more objects comprise a file or metadata associated with the file. In some embodiments, the pool comprises a pool descriptor, one or more pool items, and an end pool descriptor. In some embodiments, the pool descriptor includes a version, a pool ID, a list of pool item descriptors, or any combination thereof. In some embodiments, the pool ID includes a unique ID. In some embodiments, the unique ID includes a universally unique identifier (UUID) or a content ID. In some embodiments, the list of pool item descriptors includes a path of the object, a size of the object, a range of pool items within the object, an offset of the pool item within the pool, or any combination thereof. In some embodiments, each of the one or more pool items includes a data payload, a hash of the pool item, or any combination thereof. In some embodiments, the end pool descriptor includes a list of object descriptors.In some embodiments, the list of object descriptors includes an object path, an object hash, or a combination thereof. In some embodiments, the pool includes between about 1 GB and about 1 TB of digital information. In some embodiments, the device further comprises one or more second compartments, each of the one or more second compartments comprising a second library encoding an index pool. In some embodiments, the one or more index pools include an index pool descriptor and a list of object indexing. In some embodiments, the index pool descriptor includes a version, a pool ID, a size of the pool, and a timestamp. In some embodiments, the pool ID includes a unique ID. In some embodiments, the unique ID includes a UUID or a content ID. In some embodiments, the list of object indexing includes an object path, an object hash, a list of object fragments, a list of object metadata, or any combination thereof. In some embodiments, the list of object fragments includes a pool ID of a pool that includes the fragments, a range of fragments, or a combination thereof. In some embodiments, the list of object metadata includes a metadata type, a metadata payload, or a combination thereof. In some embodiments, the types of metadata include a list of keywords attached to the object, a thumbnail image, a text summary, a sorted key-value database ID range, a timestamp, a version, or any combination of these. In some embodiments, each of the one or more index pools is about 1 GB to about 1 TB.
[0014] In another aspect, provided herein is a method for storing data in a plurality of polynucleotides, the method comprising: generating a plurality of pools, each of the plurality of pools comprising a pool descriptor, a pool item comprising a payload of data, and an end descriptor; determining a first one or more hashes of the payload for each pool item; and applying an encoding scheme to encode the plurality of pools as a sequence of a plurality of nucleotides. In some embodiments, the encoding scheme comprises an internal codec, an external codec, or both, as described herein. In some embodiments, the data comprises an item of information or digital information as described herein. In some cases, the data comprises a plurality of symbols. In some embodiments, the data comprises one or more objects. In some embodiments, the method further comprises determining a second one or more hashes of each of the one or more objects. In some embodiments, the method further comprises storing the plurality of polynucleotides. In some embodiments, the polynucleotides of the plurality of polynucleotides corresponding to each pool of the plurality of pools are stored in separate containers of the data storage system. In some embodiments, the method further comprises generating the plurality of polynucleotides. In some embodiments, generating the plurality of polynucleotides comprises phosphoramidite-based synthesis of deoxyribonucleic acid (DNA). In some embodiments, the reagents for phosphoramidite-based synthesis include nucleoside phosphoramidites, an oxidizing agent, an activating agent, or a deblocker, or the solvent includes acetonitrile. In some embodiments, generating the plurality of polynucleotides includes enzymatic DNA synthesis. In some embodiments, the reagents for enzymatic DNA synthesis include terminal deoxynucleotidyl transferase (TdT) or a deblocker, or the solvent includes water. In some embodiments, the one or more objects include a file or metadata associated with a file.In some embodiments, the pool descriptor includes a version, a pool ID, a list of pool item descriptors, or any combination thereof. In some embodiments, the pool ID includes a unique ID. In some embodiments, the unique ID includes a universally unique identifier (UUID) or a content ID. In some embodiments, the list of pool item descriptors includes a path of the object, a size of the object, a range of the pool item within the object, an offset of the pool item within the pool, or any combination thereof. In some embodiments, each of the one or more pool items further includes a hash of the pool item from the first one or more hashes. In some embodiments, the end pool descriptor includes a list of object descriptors. In some embodiments, the list of object descriptors includes a path of the object, a hash of the object from the first one or more hashes, or any combination thereof. In some embodiments, each of the plurality of pools is about 1 GB to about 1 TB. In some embodiments, the plurality of pools includes redundant pools. In some embodiments, the first one or more hashes, the second one or more hashes, or both are determined using a hashing module. In some embodiments, the second one or more hashes require less memory than the one or more objects. In some embodiments, the first one or more hashes require less memory than the one or more pool items. In some embodiments, the hashing module includes a hash function. In some embodiments, the hash function includes SHA-224, SHA-256, SHA-384, SHA-512, SHA-512 / 224, or SHA-512 / 256. In some embodiments, the method further includes creating one or more index pools. In some embodiments, the one or more index pools include an index pool descriptor and a list of object indexing. In some embodiments, the index pool descriptor includes a version, a pool ID, a size of the pool, and a timestamp. In some embodiments, the pool ID includes a unique ID.In some embodiments, the unique ID comprises a UUID or a content ID. In some embodiments, the list of object indexing comprises a path of the object, a hash of the object, a list of object fragments, a list of object metadata, or any combination thereof. In some embodiments, the list of object fragments comprises a pool ID of a pool containing the fragment, a range of fragments, or any combination thereof. In some embodiments, the list of object metadata comprises a metadata type, a metadata payload, or any combination thereof. In some embodiments, the metadata type comprises a list of keywords attached to the object, a thumbnail image, a text summary, a sorted key value database ID range, a timestamp, a version, or any combination thereof. In some embodiments, each of one or more of the index pools is between about 1 GB and about 1 TB.
[0015] In another aspect, provided herein is a method for retrieving data stored in a plurality of polynucleotides, the method comprising: determining a sequence of the plurality of polynucleotides, the plurality of polynucleotides being in a plurality of pools; applying a decoding scheme to decode a sequence of the plurality of polynucleotides in each of the plurality of pools, each pool comprising a pool descriptor, a pool item comprising a payload of data, and an end descriptor; and verifying the payload of at least each pool item using a first one or more hashes. In some embodiments, the decoding scheme comprises an internal codec, an external codec, or both, as described herein. In some embodiments, the data comprises an item of information or digital information as described herein. In some embodiments, the data comprises one or more objects. In some embodiments, the one or more objects comprises a file or metadata associated with a file. In some embodiments, the method further comprises verifying the one or more objects using a second one or more hashes. In some embodiments, verifying at least the payload comprises verifying the first one or more hashes using a hash function. In some embodiments, the method further comprises combining payloads from each pool item to retrieve the data. In some embodiments, the method further includes storing the data in memory. In some embodiments, each of the plurality of pools is about 1 GB to about 1 TB. In some embodiments, validating the one or more objects includes validating the second one or more hashes using a hash function. In some embodiments, the hash function includes SHA-224, SHA-256, SHA-384, SHA-512, SHA-512 / 224, or SHA-512 / 256. In some embodiments, determining the sequence includes sequencing the plurality of polynucleotides.In some embodiments, the sequencing comprises next generation sequencing, parallel sequencing, single molecule real-time sequencing, nanopore sequencing, sequencing by synthesis, Sanger sequencing, or any combination thereof. In some embodiments, the method further comprises accessing an index pool of the one or more index pools to determine a plurality of pools that include the one or more objects. In some embodiments, the index pool comprises an index pool descriptor and a list of object indexing. In some embodiments, the index pool descriptor comprises a version, a pool ID, a size of the pool, and a timestamp. In some embodiments, the pool ID comprises a unique ID. In some embodiments, the unique ID comprises a UUID or a content ID. In some embodiments, the list of object indexing comprises a path of the object, a hash of the object, a list of object fragments, a list of object metadata, or any combination thereof. In some embodiments, the list of object fragments comprises a pool ID of a pool that includes the fragment, a range of the fragment, or a combination thereof. In some embodiments, the list of object metadata comprises a metadata type, a metadata payload, or a combination thereof. In some embodiments, the types of metadata include a list of keywords attached to the object, a thumbnail image, a text summary, a sorted key-value database ID range, a timestamp, a version, or any combination of these. In some embodiments, each of one or more of the index pools is about 1 GB to about 1 TB.
[0016] A better understanding of the features and advantages of the present subject matter can be obtained by reference to the following detailed description and accompanying drawings that set forth example embodiments. [Brief description of the drawings]
[0017] [Figure 1]FIG. 2 illustrates a non-limiting example of an encoding scheme for a low-level codec according to some embodiments. [Diagram 2] FIG. 2 illustrates a non-limiting example of a low-level codec decoding scheme according to some embodiments. [Diagram 3] FIG. 2 illustrates a non-limiting example of an encoding scheme including an outer codec, according to some embodiments. [Figure 4] FIG. 1 illustrates a non-limiting example of an encoding scheme that includes shuffling lanes of data, according to some embodiments. [Diagram 5] FIG. 2 illustrates a non-limiting example of an encoding scheme including a first inner codec, according to some embodiments. [Figure 6] FIG. 2 illustrates a non-limiting example of an encoding scheme including a second inner codec, according to some embodiments. [Figure 7] FIG. 2 illustrates a non-limiting example of a decoding scheme including an inner codec and an outer codec, according to some embodiments. [Figure 8] FIG. 1 illustrates a non-limiting example of a greedy algorithm for decoding, according to some embodiments. [Figure 9] FIG. 1 illustrates a non-limiting example of a maximum likelihood (ML) algorithm for decoding, according to some embodiments. [Figure 10] FIG. 1 illustrates a non-limiting example of a computing device, in this case a device comprising one or more processors, memory, storage, and a network interface. [Figure 11A] FIG. 1 illustrates a non-limiting example of a “lift-off” process for the fabrication of a polynucleotide synthesis surface, according to some embodiments. [Figure 11B] 1 shows a non-limiting example of a wet etching process for the fabrication of a polynucleotide synthesis surface, according to some embodiments, which may also be adapted to a dry etching process. [Figure 12]FIG. 2 illustrates a non-limiting example of an encoding scheme for a high-level codec according to some embodiments. [Figure 13] FIG. 2 illustrates a non-limiting example of a high-level codec decoding scheme according to some embodiments. [Figure 14] FIG. 2 illustrates a non-limiting example of digital information storage, according to some embodiments. [Figure 15] FIG. 1 illustrates a non-limiting example of generating a hash according to some embodiments. [Figure 16] FIG. 1 illustrates a non-limiting example of a system for synthesizing, storing, and sequencing multiple polynucleotides, according to some embodiments. [Figure 17A] 17A-17C show non-limiting examples of structures or compartments for storing multiple polynucleotides, according to some embodiments: FIG 17A shows a structure that is substantially tubular; [Figure 17B] 17A-17C show non-limiting examples of structures or compartments for storing multiple polynucleotides, according to some embodiments: FIG 17B shows a structure comprising a cap and a body flush-welded together; [Figure 17C] 17A-17C show non-limiting examples of structures or compartments for storing multiple polynucleotides, according to some embodiments. [Figure 17D] 17A-17D show non-limiting examples of structures or compartments for storing multiple polynucleotides, according to some embodiments. [Figure 17E] 17A-17D show non-limiting examples of structures or compartments for storing multiple polynucleotides, according to some embodiments. FIG. 17E shows a structure with two rounded, pill-like halves that form a seal when one half is inserted into the other. [Figure 17F]17A-17C show non-limiting examples of structures or compartments for storing multiple polynucleotides, according to some embodiments. FIG. 17F shows a structure comprising a substantially flat disc container with a sealable lid. [Figure 17G] 17A-17G show non-limiting examples of structures or compartments for storing multiple polynucleotides, according to some embodiments. FIG. 17G shows a structure comprising a box with an optionally attached lid. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0018] Provided herein are methods and systems for storing digital information in nucleic acids. Like many storage media, synthetic DNA may have inherent errors such as deletions, insertions, mutations, fragmentation, etc., which may lead to the erasure of complete oligonucleotides. There may also be loss of some oligonucleotides due to aging or sample processing. Standard techniques used in computer science and telecommunications address only the loss and / or mutations, and not the specific behavior of the oligonucleotide pool. For example, sequencing of an oligonucleotide pool provides oligos in a random order, whereas standard storage media such as hard drives provide a stream of data in a known, expected order that is created during writing. Additionally, many codecs for storing digital information focus on encoding digital information into nucleic acids, but may not provide a way to store and retrieve structured lists of files. As such, provided herein are codecs and implementations that can receive multiple "objects" and efficiently store them as one or more pools or retrieve them from one or more pools. An object may include a file or metadata associated with a file. Such codec implementations may be combined with low-level codecs for encoding digital information in nucleic acids and / or external codecs, including, for example, error correction codes such as, but not limited to, the error correction codes described herein.
[0019] In some cases, the method encodes data into a plurality of polynucleotide sequences. The data may be represented as a plurality of symbols. In some cases, the method includes one or more of: dividing the data into a plurality of frames; applying an external codec to each frame of the plurality of frames; dividing each frame into a plurality of lanes; shuffling each lane based at least in part on a lane index; and applying an internal codec (e.g., encoding scheme) to encode each lane in a polynucleotide sequence of the plurality of polynucleotide sequences. In some cases, each frame of the plurality of frames includes a frame index. In some cases, the external codec includes an error correction scheme. In some cases, each lane of the plurality of lanes includes a lane index.
[0020] In some cases, the method decodes a plurality of polynucleotide sequences to generate an output including data. The data may be represented as a plurality of symbols. In some cases, the method includes one or more of determining a plurality of polynucleotide sequences, applying an inner codec (e.g., a decoding scheme) to the plurality of polynucleotide sequences, arranging lanes of data into frames based on a lane index and a frame index for each of the lanes of data, and applying an outer codec to the frames. In some cases, the inner codec converts each of the plurality of polynucleotide sequences into lanes including a plurality of symbols. In some cases, the inner codec includes a hybrid decoding algorithm including a greedy algorithm and a maximum likelihood (ML) algorithm. In some cases, the outer codec includes an error correction scheme. In some cases, the frames from the outer codec are merged to generate an output including data.
[0021] In some cases, the system encodes data into a plurality of polynucleotide sequences. In some cases, the system comprises an apparatus comprising one or more of a memory and a processing device operably coupled to the memory. In some cases, the processing device is configured to perform one or more of the steps including: splitting the data into a plurality of frames, applying an outer codec to each frame of the plurality of frames, splitting each frame into a plurality of lanes, shuffling each lane based at least in part on a lane index, and applying an inner codec to encode each lane in the polynucleotide sequence. In some cases, each frame of the plurality of frames includes a frame index. In some cases, each lane of the plurality of lanes includes a lane index. In some cases, the outer codec includes an error correction scheme. In some cases, the inner codec adds redundancy such that data may be decoded if an error is present in the polynucleotide sequence. In some cases, the inner codec includes an encoding scheme.
[0022] In some cases, the system decodes the plurality of polynucleotide sequences to generate an output including the data. In some cases, the system comprises an apparatus including one or more of a memory, a sequencing device configured to determine the plurality of polynucleotide sequences, and a processing device operably coupled to the memory. In some cases, the processing device is configured to perform one or more of the steps including applying an inner codec to the plurality of polynucleotide sequences, arranging lanes of data into frames based on a lane index and a frame index in each of the lanes of data, and applying an outer codec to the frames. In some cases, the inner codec converts each of the sequences into lanes including a plurality of symbols. In some cases, the inner codec includes a hybrid decoding algorithm including a greedy algorithm and a maximum likelihood (ML) algorithm. In some cases, the outer codec includes an error correction scheme. In some cases, the frames from the outer codec are merged to generate an output including the data. In some cases, the inner codec includes a decoding scheme.
[0023] In some cases, the method encodes the data into a polynucleotide sequence. In some cases, the method includes one or more of the following steps: (a) generating an inner codec including a codebook, the codebook being optimized against one or more constraints; and (b) applying the inner codec to encode the data as a plurality of polynucleotide sequences. In some cases, the method further includes generating a plurality of polynucleotides including the plurality of polynucleotide sequences.
[0024] In some cases, provided herein is a hybrid organic in silico platform for encoding data. The platform comprises one or more of: a computing system comprising at least one processor and instructions executable by the at least one processor to perform operations; and a synthesizer for generating a plurality of polynucleotides comprising a plurality of polynucleotide sequences. In some cases, the operations include one or more of: generating an internal codec comprising a codebook, the codebook being optimized against one or more constraints; and applying the internal codec to encode data as a plurality of polynucleotide sequences.
[0025] In some cases, the system stores information in DNA. In some cases, the system includes any one or combination of one or more processing units, a memory in communication with the one or more processing units, and instructions stored in the memory and executed on the one or more processing units. In some cases, the instructions cause the system to perform any one or combination of: splitting the digital information of the one or more objects into a plurality of pools; generating a pool descriptor, one or more pool items, and an end pool descriptor in each of the plurality of pools; determining a first one or more hashes of a data payload of each of the one or more pool items and a second one or more hashes of each of the one or more objects; and applying an encoding scheme to encode the digital information into the plurality of pools as a plurality of polynucleotides.
[0026] In some cases, the device is for storing information in DNA. In some cases, the device comprises one or more compartments. In some cases, each compartment comprises any one or combination of: a library comprising a plurality of polynucleotides; and a medium for storing a plurality of polynucleotides. In some cases, the library encodes a pool comprising information corresponding to one or more objects.
[0027] In some cases, the method stores the data in a plurality of polynucleotides. In some cases, the method includes any one or combination of generating a plurality of pools, determining a first one or more hashes of a payload for each pool item, and applying an encoding scheme to encode the plurality of pools as a sequence of a plurality of nucleotides. In some cases, each of the plurality of pools includes a pool descriptor, a pool item that includes a payload of data, and an end descriptor.
[0028] In some cases, the method retrieves data stored in a plurality of polynucleotides. In some cases, the method includes any one or combination of: determining a sequence of the plurality of polynucleotides, applying a decoding scheme to decode a sequence of the plurality of polynucleotides in each of the plurality of pools, and verifying a payload of at least each pool item using the first one or more hashes. In some cases, the plurality of polynucleotides are in a plurality of pools. In some cases, each pool includes a pool descriptor, a pool item that includes a payload of data, and an end descriptor.
[0029] Further provided herein are methods and systems for optimizing the synthesis of polynucleotides. In some cases, the synthesis is optimized using a synthesis optimized codec, such as the synthesis optimized codec provided herein. Polynucleotides may be synthesized according to the device provided herein. Electronic synthesis typically involves deblocking a specific site (e.g., a feature or locus on a surface for polynucleotide synthesis) and flowing a specific base (e.g., a nucleic acid monomer), which is repeated for each base. This means that a polynucleotide without a specific base order may require four cycles (e.g., A, T, C, G) per layer, since sections of the polynucleotide are highly unlikely to match in synthesis order, especially when synthesizing millions of polynucleotides together. For example, a surface is masked to protect certain sites from base addition (each site contains a unique polynucleotide and is independently addressable), a base is attached to the unprotected site, and then the mask is changed to allow attachment of a base at a different site. A layer typically involves the extension of each polynucleotide by at least one base. For example, if a polynucleotide is M bases in length, synthesis may require 4 x M cycles, assuming 4 cycles per addition of a single nucleic acid to the polynucleotide. This approach may be more costly since it may require more time, more reagents, or both. This approach may also increase the chance of DNA damage, since each cycle requires an oxidation step and a deblocking step that may result in a higher error rate.
[0030] The methods, systems, and platforms for optimizing synthesis may include an internal codec optimized to generate polynucleotides according to a specific order of base synthesis. This may allow synthesis of a polynucleotide in less than 4×M cycles, where M is the number of bases in the polynucleotide. The approach may also provide redundancy for error correction, such as by using an external codec or an error correction code (ECC). The approach may also accelerate synthesis of a polynucleotide compared to a non-optimized synthesis approach (e.g., requiring 4×M cycles) when the synthesized polynucleotide encodes the same amount of data. In some cases, a mixture of bases (e.g., two or three) is flowed across the surface in a single cycle. In some cases, the synthesis method is configured for use with one or more codebooks provided herein. A non-optimized synthesis approach as described herein may generally refer to synthesis of a polynucleotide without base order. In some cases, the synthesis rate is accelerated by about 1.5-fold, 2-fold, 2.5-fold, 3-fold, 3.5-fold, or 4-fold compared to a non-optimized synthesis approach. In some cases, the rate of synthesis is accelerated by up to 2x, 2.5x, 3x, 3.5x, or 4x compared to non-optimized synthesis methods. In some cases, the rate of synthesis is accelerated by up to about 1.5x, 2x, 2.5x, 3x, or 3.5x compared to non-optimized synthesis methods. In some cases, the rate of synthesis is accelerated while improving DNA quality because fewer oxidation steps are required. In some cases, the rate of synthesis is accelerated while reducing errors.
[0031] In some cases, the methods provided herein encode data. The data may be digital information or an item of information. The data may be represented as one or more symbols. In some cases, the one or more symbols include a numerical value, such as binary data. In some cases, the data represented as a set of symbols is encoded as a distinct set of symbols using a codec. In some cases, such a codec is referred to as an internal codec. In some cases, the distinct set of symbols includes a sequence of symbols, such as a polynucleotide sequence.
[0032] The methods described herein may include the use or generation of an internal codec. In some cases, the method includes generating an internal codec that includes a codebook. In some cases, the codebook includes the content, structure, and layout of a collection of data (e.g., digital information encoded in nucleic acids). In some cases, the internal codec includes two or more codebooks. In some cases, each of the two or more codebooks encodes a layer during synthesis of a polynucleotide. In some cases, the codebook is optimized against one or more constraints. In some cases, the one or more constraints relate to nucleic acid synthesis, post-processing, storage, sequencing, or any combination thereof.
[0033] In some cases, the codebook is generated using a base sequence. In some cases, the codebook is optimized for one or more base transitions. In some cases, the base sequence generates one or more base transitions. Such one or more base transitions may be referred to as a specific base transition or a predefined base transition. In some cases, each of the two or more codebooks includes a different base sequence. In some cases, each of the two or more codebooks includes a different one or more base transitions. In some cases, the codebook is optimized for a specific base transition at a specific layer, cycle index, history, or any combination thereof. In some examples, the history includes one or more of a previous layer, one or more codebooks encoding a previous layer or layers, cycle indexes of one or more previous layers, or any combination thereof. In some examples, the method includes applying an inner codec to encode the data as a plurality of polynucleotide sequences.
[0034] The methods provided herein may be performed on a platform. In some cases, the platform includes a hybrid organic in silico platform. In some cases, the platform encodes data (e.g., binary data). In some cases, the platform includes a computing system including at least one processor and instructions executable by the at least one processor to perform operations. In some cases, the operations include generating an internal codec including a codebook. In some cases, the codebook is generated using a base sequence. In some cases, the base sequence generates a codeword including one or more base transitions. In some cases, the operations include applying the internal codec to encode the data as a plurality of polynucleotide sequences. In some cases, the platform includes a synthesizer. In some cases, the platform includes a synthesizer for generating a plurality of polynucleotides including a plurality of polynucleotide sequences. In some cases, the synthesizer generates the plurality of polynucleotide sequences by synthesis, ligation, assembly, or any combination thereof. In some cases, the platform is integrated with one or more additional systems, such as conventional magnetic or tape storage devices.
[0035] Nucleic acid-based information storage
[0036] Provided herein are devices, configurations, systems, and methods for nucleic acid-based information (data) storage. Biological molecules such as DNA molecules provide suitable hosts for information storage due in part to their long-term stability and enhanced capacity for information encoding as opposed to traditional binary information encoding. In a first step, data including a first plurality of symbols, e.g., a digital sequence encoding an item of information (i.e., digital information in binary code for processing by a computer), is received. An encryption scheme is applied to convert the first plurality of symbols into a second plurality of symbols. The second plurality of symbols can include a nucleic acid sequence. For example, an encryption scheme is applied to convert the digital sequence from a binary code into a polynucleotide sequence. A surface material for nucleic acid extension, a design of loci for nucleic acid extension (also known as arrangement spots), and / or reagents for nucleic acid synthesis are selected. The surface of the structure is prepared for nucleic acid synthesis. De novo polynucleotide synthesis is then performed. The synthesized polynucleotides are stored and available for subsequent release, in whole or in part. Once released, the polynucleotides are sequenced, in whole or in part, and then undergo decoding to convert the nucleic acid sequence back into a digital sequence, which is then assembled to obtain an alignment encoding of the original items of information.
[0037] Information items
[0038] Optionally, an initial step of the data storage process disclosed herein includes obtaining or receiving data in the form of an initial code, including one or more items of information. Items of information include, but are not limited to, textual information, audio information, and visual information. Examples of sources of items of information include, but are not limited to, books, periodicals, electronic databases, medical records, letters, forms, voice recordings, animal recordings, biological profiles, broadcasts, movies, short videos, emails, accounting phone logs, Internet activity logs, drawings, paintings, printouts, photographs, pixelated graphics, and software code. Examples of sources of biological profiles of items of information include, but are not limited to, gene libraries, genomes, gene expression data, and protein activity data. Examples of formats of items of information include, but are not limited to, .txt, .PDF, .doc, .docx, .ppt, .pptx, .xls, .xlsx, .rtf, .jpg, .gif, .psd, .bmp, .tiff, .png, and .mpeg. The size of an individual file encoding an item of information, or the amount of multiple files encoding an item of information, in digital form, may be, but is not limited to, up to 1024 bytes (equal to 1 KB), 1024 KB (equal to 1 MB), 1024 MB (equal to 1 GB), 1024 GB (equal to 1 TB), 1024 TB (equal to 1 PB), 1 exabyte, 1 zettabyte, 1 yottabyte, 1 xenotabyte, or more. In some cases, the amount of digital information is at least 1 gigabyte (GB). In some cases, the amount of digital information is at least 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 gigabytes, or more. In some cases, the amount of digital information is at least 1 terabyte (TB).In some cases, the amount of digital information is at least 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 terabytes or more than 1000 terabytes. In some cases, the amount of digital information is at least 1 petabyte (PB). In some cases, the amount of digital information is at least 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 petabytes or more than 1000 petabytes. In some cases, the digital information does not include genomic data obtained from an organism. In some cases, the item of information is encoded. Non-limiting examples of encoding methods include 1 bit / base, 2 bits / base, 4 bits / base, or other encoding methods.
[0039] Method and system for storing information - Patents.com Provided herein are methods and systems for storing information (e.g., digital information). In some cases, provided herein are methods and systems for encoding. In some cases, the information includes one or more objects. In some cases, the one or more objects include items of information, such as, but not limited to, items of information described herein. In some cases, the one or more objects include a file or metadata associated with a file. In some cases, the methods and systems encode digital data, such as binary data. In some cases, the methods and systems include an internal codec, an external codec, or a combination thereof. In some cases, the binary data includes a byte stream or a byte array. In some cases, the data or one or more objects is between about 1 GB and about 1 TB. In some cases, the data is between about 1 GB and about 1 TB. In some cases, the data or one or more objects is about 1 GB to about 10 GB, about 1 GB to about 50 GB, about 1 GB to about 100 GB, about 1 GB to about 500 GB, about 1 GB to about 1 TB, about 10 GB to about 50 GB, about 10 GB to about 100 GB, about 10 GB to about 500 GB, about 10 GB to about 1 TB, about 50 GB to about 100 GB, about 50 GB to about 500 GB, about 50 GB to about 1 TB, about 100 GB to about 500 GB, about 100 GB to about 1 TB, or about 500 GB to about 1 TB. In some cases, the data is about 1 GB, about 10 GB, about 50 GB, about 100 GB, about 500 GB, or about 1 TB. In some cases, the data or one or more objects is at least about 1 GB, about 10 GB, about 50 GB, about 100 GB, or about 500 GB. In some cases, the data or one or more objects is up to about 10 GB, about 50 GB, about 100 GB, about 500 GB, or about 1 TB.
[0040] A system for storing digital information may comprise one or more processing units, memory in communication with the one or more processing units, instructions stored in the memory and executed on the one or more processing units, or any combination thereof. In some cases, the one or more processing units and memory are distributed across one or more physical or logical locations. In some cases, the one or more processing units include central processing units (CPUs), graphical processing units (GPUs), single-core processors, multi-core processors, processor clusters, application-specific integrated circuits (ASICs), programmable circuits such as Field Programmable Gate Arrays (FPGAs), AI accelerators, and any combination of variations thereof. In some cases, one or more of the processing units comprise a Single Instruction Multiple Data (SIMD) or Single Program Multiple Data (SPMD) parallel architecture. Examples of the one or more processing units include one or more GPUs or CPUs implementing SIMD or SPMD. In some cases, the AI accelerator includes Google-TPU, Graphcore, Cerebras, SambaNova, or a combination thereof. In some embodiments, one or more of the processing units are implemented in software and / or firmware in addition to a hardware implementation. A software or firmware implementation of a processing unit may include computer-executable or machine-executable instructions written in any suitable programming language to perform various functions described herein. A software implementation of one or more processing units may be stored in whole or in part in memory.Alternatively or additionally, the system may include one or more hardware logic components. For example, examples of types of hardware logic components that may be used include, but are not limited to, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), system-on-a-chip systems (SOCs), complex programmable logic devices (CPLDs), and the like. In some cases, the memory includes removable, non-removable, local, and / or remote storage and provides storage of instructions, data structures, program modules (e.g., hashing modules), and any other data described herein. In some cases, the memory is used to store information (e.g., software code, parameters, executable instructions, etc.) related to the algorithms described herein.
[0041] The instructions stored in the memory may include one or more steps for storing the digital information. One or more operations for storing the digital information are illustrated in FIG. 12. The dotted operations may be performed in some embodiments, but may not be performed in other embodiments. In some cases, the one or more steps include splitting (1205) the digital information of the one or more objects into multiple pools. In some cases, an object of the one or more objects is split across two or more pools. In some cases, each of the multiple pools is between about 1 GB and about 1 TB. In some cases, each of the multiple pools is between about 1 GB and about 1 TB. In some cases, each of the plurality of pools is about 1 GB to about 10 GB, about 1 GB to about 50 GB, about 1 GB to about 100 GB, about 1 GB to about 500 GB, about 1 GB to about 1 TB, about 10 GB to about 50 GB, about 10 GB to about 100 GB, about 10 GB to about 500 GB, about 10 GB to about 1 TB, about 50 GB to about 100 GB, about 50 GB to about 500 GB, about 50 GB to about 1 TB, about 100 GB to about 500 GB, about 100 GB to about 1 TB, or about 500 GB to about 1 TB. In some cases, each of the plurality of pools is about 1 GB, about 10 GB, about 50 GB, about 100 GB, about 500 GB, or about 1 TB. In some cases, each of the plurality of pools is at least about 1 GB, about 10 GB, about 50 GB, about 100 GB, or about 500 GB. In some cases, each of the multiple pools is at most about 10 GB, about 50 GB, about 100 GB, about 500 GB, or about 1 TB.
[0042] In some cases, one or more objects include an item of information, such as a file, as previously described herein. In some cases, one or more objects include metadata associated with the item of information (e.g., metadata associated with a file). Non-limiting examples of metadata associated with an object include a list of keywords attached to the object, an object size, a thumbnail image, a text summary, a sorted key-value database ID range, a timestamp, a version, or any other data that provides information about one or more aspects of the object, or any combination thereof. In some cases, the metadata is customizable. In some cases, the metadata is used to search for objects in multiple pools.
[0043] An exemplary diagram of digital information storage is shown in FIG. 14. As shown in the diagram, one or more objects 1405 may be divided into multiple pools 1410. In some cases, a single object is divided into multiple pools. In some cases, a single object is divided into multiple pools based in part on size. In some cases, a single object is divided into 2, 3, 4, 5, 6, 7, 8, 9, or 10 pools. In some cases, two or more objects are divided into multiple pools. In some cases, one or more objects are in a pool. In some cases, 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 objects are in a pool. In some cases, multiple pools are overlapping. In some cases, multiple pools include redundant pools, where two or more pools include the same one or more objects. In some cases, 2, 3, 4, 5, 6, 7, 8, 9, or 10 pools include the same one or more objects.
[0044] Each pool of the plurality of pools may include any one or combination of pool descriptors, pool items, or end descriptors. In some cases, the pool includes at least one pool item. In some cases, the pool includes two or more pool items. In some cases, the pool includes at least one pool descriptor. In some cases, the pool includes two or more pool descriptors. In some cases, the pool includes at least one end descriptor. In some cases, the pool includes two or more end descriptors. As an example, each pool includes a pool descriptor 1415, one or more pool items 1420, and an end descriptor 1425. In some cases, the pool includes redundant pool items, pool descriptors, end pool descriptors, or combinations thereof. In such cases, two or more pool items, pool descriptors, end pool descriptors, or combinations thereof are identical. In some cases, 2, 3, 4, 5, 6, 7, 8, 9, or 10 pool descriptors, end pool descriptors, or combinations thereof are identical.
[0045] Referring to FIG. 12, in some cases, the one or more operations in the instructions include generating (1210) a plurality of pools including a pool descriptor, a pool item, and an end descriptor. In some cases, the data is divided into pools, and the instructions include generating a pool descriptor, a pool item, an end descriptor, or any combination thereof, for each of the plurality of pools. In such cases, the generated pool descriptor, pool item, and end descriptor are added to each of the pools. In some cases, the pool descriptor includes a version, a pool ID, a list of pool item descriptors, or any combination thereof. In some cases, the version includes a version of the information (e.g., if the information is updated). In some cases, the version is a version of the structure of the pool. In some cases, the version allows for changing the overall pool structure of various file systems.
[0046] In some cases, the pool ID includes a unique ID for the pool. In some cases, the unique ID includes a universally unique identifier (UUID). In some cases, the unique ID includes a content ID. In some cases, the content ID includes a digital fingerprinting system that may be used to identify and / or manage copyright or ownership of the content. In some cases, the list of pool item descriptors includes a path of the object, a size of the object (e.g., the total size of the object), a range of pool items within the object, an offset of the pool items within the pool, or any combination thereof. In some cases, the range of pool items within the object includes one or more locations of the payload within the pool items within the object. In some cases, the one or more locations include a start range and / or an end range of the payload within the pool items (e.g., lines 1-6 within pool item 1, lines 7-13 within pool item 2 within the pool, etc.). In some cases, the offset of the pool items includes a payload location of the first byte of each of the one or more pool items within the payload of the pool. For example, the offset of the first pool item is 0 bytes. If the first pool item is in the range 1000-2000, its size is 1000 bytes. In such an example, the offset of the next pool item is 1000 bytes. In some cases, the pool item includes a data payload and / or a hash of the pool item. In some cases, the data payload includes a stored object or part of an object. In some cases, the pool item hash includes a hash value of a stored object or part of an object. In some cases, the end pool descriptor includes a list of object descriptors. In some cases, the list of object descriptors includes an object path and / or a hash of the object. In some cases, the object path includes a unique path. In some cases, the object path includes a hierarchy (e.g., a directory hierarchy). In some cases, the object path does not include a hierarchy.
[0047] Systems and methods for storing digital information may include one or more hashes. In some cases, the one or more hashes are determined using a hashing module. In some cases, the hashing module executes on one or more processing units, such as the processing units described herein. In some cases, the hashing module includes instructions (e.g., a hash function) for determining the one or more hashes. In some cases, the instructions (e.g., the hash function) are stored in a memory, such as the memory described herein. In some cases, information including objects, portions of objects, or pool items is stored using hashes. In some cases, a first one or more hashes of a data payload of each of the one or more pool items are determined and / or a second one or more hashes of each of the one or more objects are determined (1215). In some cases, the data payload includes an object or a portion of an object. In some cases, a hash of the pool item is added to the data payload. In some cases, a hash of the object is added to the end pool descriptor.
[0048] The hash may be determined by a hash function (FIG. 15). A hash function typically includes a function that converts an input of any length into an output having a fixed length (e.g., 224, 256, 384, 512 bits or characters). In some cases, the hash function includes a cryptographic hash function. In some cases, the hash function includes MD-5, SHA-1, SHA-2, SHA-3, RIPEMD-160, Whirlpool, BLAKE, BLAKE2, BLAKE3, or variations thereof. In some cases, the hash function includes SHA-2. In some cases, SHA-2 includes SHA-224, SHA-256, SHA-384, SHA-512, SHA-512 / 224, or SHA-512 / 256. The output of a hash function is deterministic, making reverse engineering impossible to perform. Additionally, generating a fixed-length output can improve security, since any party involved in decoding the hash cannot tell the length of the input. In some examples, a hash is generated upon input of an identification code, encryption key, password, or any variation thereof, In some examples, the hash allows for verification of the content (e.g., an item of information or digital information stored in a pool) during decoding.
[0049] In some cases, input 1505 includes an object. In some cases, hash function 1510 is used to determine hashed output (or hash) 1515. In some cases, input 1520 includes an object. In some cases, hash function 1525 is used to determine hashed output (or hash) 1530. In some cases, hash function 1510 and hash function 1525 are the same hash function. In some cases, hash function 1510 and hash function 1525 are both SHA-256. In some cases, hash function 1510 and hash function 1525 are different hash functions. In some cases, output 1515 and output 1530 are the same length. In some cases, output 1515 and output 1530 are both 256 bits. In some cases, output 1515 and output 1530 are different lengths.
[0050] A hash function may include one or more operations to generate a hash. In some cases, one or more steps in a hash function include padding bits. In some cases, extra bits are added to the digital information (or message) being hashed. In some cases, extra bits are added to the message such that the length of the digital message is a modulus value that is less than the total number of bits. In some cases, the modulus value is 64 bits. In some cases, the number of bits is 512 bits and the length of the digital information is 448 bits (e.g., for SHA-256). In some cases, the first extra bit comprises a binary digit of 1. In some cases, subsequent extra bits added comprise binary digits of 0.
[0051] In some cases, one or more steps in a hash function include padding a length. In some cases, padding a length includes appending a modulus value (e.g., also called a bi-endian (BE) integer) to the digital information. The modulus value or BE integer typically represents the length of the original input, which contains the original digital information in binary. In some cases, the modulus value is 64 bits. In some cases, 64 bits are appended to a 448-bit digital message for a total of 512 bits (e.g., in the case of SHA-256). In some cases, the modulus value is calculated by applying the modulus to the original digital information. As an example, if the original digital information is "hello world" in binary, the original input is 88 bits long, which is "1011000" in binary. So, a value of "1011000" followed by multiple zeros is appended to the end of the 448 bits of digital information for a total of 512 bits.
[0052] In some cases, the step or steps in the hash function include initializing one or more hash values or buffers. In some cases, eight hash values or buffers are initialized. In some cases, the initialized hash values are hard-coded (e.g., are constants). In some cases, the initialized hash values represent the first 32 bits of the fractional part of the square root of the first eight prime numbers (e.g., 2, 3, 5, 7, 11, 13, 17, 19). In some cases, the step or steps in the hash function further include initializing a round constant (or key). In some cases, 64 round constants are initialized. In some cases, each of the 64 round constants represents the first 32 bits of the fractional part of the cube root of the first 64 prime numbers (e.g., 2 to 311). In some cases, the 64 different round constants are stored in an array.
[0053] In some cases, one or more steps in the hash function include compression. In some cases, each block of information (e.g., every 512 bits) is compressed. During compression, each block of information goes through a fixed number of rounds. In some cases, the number of rounds is 64. In some cases, the compression is performed by a one-way compression function. In some cases, the one-way compression function is a single block length compression function. In some cases, the compression function is a Davies-Meyer, Matyas-Meyer-Oseas, or Miyaguchi-Preneel compression function. In some cases, the one-way compression function is a double block length compression function. In some cases, the compression function is an MDC-2 / Meyer-Schilling, MDC-4, or Hirose compression function. In some cases, the output from the compression function is smaller than the block of information. In some cases, the output has a length of 256 bits.
[0054] In some cases, one or more of the hashes (e.g., pool item hashes, object hashes) are calculated while the information is being stored. In some cases, all of the hashes (e.g., pool item hashes, object hashes) are calculated while the information is being stored. In some cases, this allows for stable low memory usage regardless of the size of the objects. In some cases, the first hash or hashes of each pool item's data payload require less memory than the object or objects. In some cases, the second hash or hashes of each of the object or objects require less memory than the pool item or items. In some cases, the source data (e.g., item of information) is read only once. In some cases, each of the pools is written once with no seeks. In some cases, this minimizes data transfer and latency.
[0055] In some cases, the hashes described herein may serve one or more purposes, which may include, by way of non-limiting example, one or more of verifying the integrity of one or more items of information (e.g., objects), signature generation and verification (e.g., in the case of digital signatures), password verification, proof of work, or an identifier for an item of information.
[0056] In some cases, encryption and / or compression may be further added. In some cases, encryption and / or compression may be implemented using a streaming application programmable interface (API). In some cases, this avoids the need to store intermediate results. In some cases, the stored digital information is already compressed, e.g., to reduce data transfer costs. In some cases, the stored digital information is already encrypted, e.g., for security reasons.
[0057] The one or more operations in the instructions stored in the memory can further include creating a plurality of index pools. In some cases, the plurality of index pools includes only indexes. In some cases, the index pools are used when retrieving objects stored in the plurality of pools encoded in the plurality of polynucleotides. In some cases, the index pools are ordered and temporarily stored in a digital storage system (e.g., a flash drive) for retrieval of objects. In some cases, after the pools are identified, the plurality of polynucleotides encoding the pools are sequenced.
[0058] In some cases, the one or more index pools include an index pool descriptor and / or a list of object indexing. In some cases, the index pool descriptor includes a version, a pool ID, a size of the pool, a timestamp, or a combination thereof. In some cases, the pool ID includes a unique ID for the pool. In some cases, the unique ID includes a universally unique identifier (UUID). In some cases, the unique ID includes a content ID. In some cases, the content ID includes a digital fingerprinting system that may be used to identify and / or manage copyright or ownership of the content. In some cases, the size of each of the plurality of index pools is about 1 GB to about 1 TB. In some cases, the list of object indexing includes a path of the object, a hash of the object, a list of object fragments, a list of object metadata, or any combination thereof. In some cases, the object path includes a unique path. In some cases, the object path includes a hierarchy (e.g., a directory hierarchy). In some cases, the object path does not include a hierarchy. In some cases, the hash of the object is a hash as described herein above (e.g., SHA-256). In some examples, the list of object fragments includes a pool ID of a pool that contains the fragment, a range of the fragment, or a combination thereof. In some examples, the list of object metadata includes a metadata type, a metadata payload, or a combination thereof. In some examples, the metadata type includes a list of keywords attached to the object, a thumbnail image, a text summary, a sorted key-value database ID range, a timestamp, a version, or any combination thereof. In some examples, the metadata is customizable. In some examples, the metadata is used to search for objects in multiple pools.
[0059] In some cases, an index pool may store information for about 1 to about 1 million pools. In some cases, an index pool may store information for about 1 pool to about 10 pools, about 1 pool to about 100 pools, about 1 pool to about 1,000 pools, about 1 pool to about 5,000 pools, about 1 pool to about 10,000 pools, about 1 pool to about 50,000 pools, about 1 pool to about 100,000 pools, about 1 pool to about 500,000 pools, about 1 pool to about 1 million pools, about 10 pools to about 100 pools, about 10 pools to about 1,000 pools. 10 pools to about 5,000 pools, about 10 pools to about 10,000 pools, about 10 pools to about 50,000 pools, about 10 pools to about 100,000 pools, about 10 pools to about 500,000 pools, about 10 pools to about 1 million pools, about 100 pools to about 1,000 pools, about 100 pools to about 5,000 pools, about 100 pools to about 10,000 pools, about 100 pools to about 50,000 pools, about 100 pools to about 100, 000 pools, about 100 pools to about 500,000 pools, about 100 pools to about 1 million pools, about 1,000 pools to about 5,000 pools, about 1,000 pools to about 10,000 pools, about 1,000 pools to about 50,000 pools, about 1,000 pools to about 100,000 pools, about 1,000 pools to about 500,000 pools, about 1,000 pools to about 1 million pools, about 5,000 pools to about 10,000 pools, about 5,000 pools 10,000 pools to about 50,000 pools, about 10,000 pools to about 100,000 pools, about 10,000 pools to about 500,000 pools, about 10,000 pools to about 1 million pools, about 10,000 pools to about 50,000 pools, about 10,000 pools to about 100,000 pools, about 10,000 pools to about 500,000 pools, about 10,000 pools to about 1 million pools, about 50,000 pools to about 100,000 pools, about 50,000 pools to about 500,In some cases, an index pool may store information for about 1 pool, about 10 pools, about 100 pools, about 1,000 pools, about 5,000 pools, about 10,000 pools, about 500,000 pools, about 100,000 pools, about 1 million pools, or about 500,000 pools, or about 1 million pools. In some cases, an index pool may store information for at least about 1 pool, about 10 pools, about 100 pools, about 1,000 pools, about 5,000 pools, about 10,000 pools, about 50,000 pools, about 100,000 pools, or about 500,000 pools. In some cases, an index pool may store information for up to about 10 pools, about 100 pools, about 1,000 pools, about 5,000 pools, about 10,000 pools, about 50,000 pools, about 100,000 pools, about 500,000 pools, or about 1 million pools.
[0060] In some cases, each of the one or more index pools is between about 1 GB and about 1 TB. In some cases, each of the plurality of pools is between about 1 GB and about 1 TB. In some cases, each of the one or more index pools is between about 1 GB and about 10 GB, between about 1 GB and about 50 GB, between about 1 GB and about 100 GB, between about 1 GB and about 500 GB, between about 1 GB and about 1 TB, between about 10 GB and about 50 GB, between about 10 GB and about 100 GB, between about 10 GB and about 500 GB, between about 10 GB and about 1 TB, between about 50 GB and about 100 GB, between about 50 GB and about 500 GB, between about 50 GB and about 1 TB, between about 100 GB and about 500 GB, between about 100 GB and about 1 TB, or between about 500 GB and about 1 TB. In some cases, each of the one or more index pools is about 1 GB, about 10 GB, about 50 GB, about 100 GB, about 500 GB, or about 1 TB. In some cases, each of the one or more index pools is at least about 1 GB, about 10 GB, about 50 GB, about 100 GB, or about 500 GB. In some cases, each of the one or more index pools is at most about 10 GB, about 50 GB, about 100 GB, about 500 GB, or about 1 TB.
[0061] An encoding scheme may be applied to each of the plurality of pools and / or index pool. In some cases, the encoding scheme encodes the digital information in the plurality of pools as a plurality of polynucleotides (1220). In some cases, the encoding scheme encodes the digital information in the index pool as a plurality of polynucleotides. In some cases, the encoding scheme includes a codec (e.g., an internal codec) for encoding binary data as a polynucleotide sequence. In some cases, the encoding scheme includes an error correction code (ECC). In some cases, the encoding scheme (e.g., an internal codec or a low level codec) is also designed and implemented to enable streaming read and write API access. In some cases, the encoding scheme (e.g., an internal codec or a low level codec) is also designed and implemented to conform to streaming systems and methods for digital storage (e.g., a high level codec) described herein.
[0062] An encoding scheme may typically include one or more operations. The one or more operations may include one or more operations for manipulating or transforming data (e.g., digital information). The one or more operations may include, by way of non-limiting examples, splitting, shuffling, concatenating, transposing, translating, duplicating, labeling (e.g., using an index), or any combination thereof, of the data or portions of the data.
[0063] A method for encoding digital information (e.g., binary data) into a plurality of polynucleotide sequences is generally illustrated in FIG. 1. In some cases, the method for encoding digital information or data into a plurality of polynucleotide sequences includes dividing the data. In some cases, the data is divided into a plurality of frames (105). In some cases, the plurality of frames includes about 100 to about 10,000 frames. In some cases, the plurality of frames includes about 100 frames to about 250 frames, about 100 frames to about 500 frames, about 100 frames to about 750 frames, about 100 frames to about 1,000 frames, about 100 frames to about 2,500 frames, about 100 frames to about 5,000 frames, about 100 frames to about 7,500 frames, about 100 frames to about 10,000 frames, about 250 frames to about 500 frames. , about 250 frames to about 750 frames, about 250 frames to about 1,000 frames, about 250 frames to about 2,500 frames, about 250 frames to about 5,000 frames, about 250 frames to about 7,500 frames, about 250 frames to about 10,000 frames, about 500 frames to about 750 frames, about 500 frames to about 1,000 frames, about 500 frames to about 2,500 frames, about 500 frames to about 5, 000 frames, about 500 frames to about 7,500 frames, about 500 frames to about 10,000 frames, about 750 frames to about 1,000 frames, about 750 frames to about 2,500 frames, about 750 frames to about 5,000 frames, about 750 frames to about 7,500 frames, about 750 frames to about 10,000 frames, about 1,000 frames to about 2,500 frames, about 1,000 frames to about 5,000 frames
[0036] The present invention relates to a method for producing a video sequence comprising: a) a video sequence including: about 1,000 frames to about 7,500 frames, about 1,000 frames to about 10,000 frames, about 2,500 frames to about 5,000 frames, about 2,500 frames to about 7,500 frames, about 2,500 frames to about 10,000 frames, about 5,000 frames to about 7,500 frames, about 5,000 frames to about 10,000 frames, or about 7,500 frames to about 10,000 frames.In some cases, the plurality of frames includes about 100 frames, about 250 frames, about 500 frames, about 750 frames, about 1,000 frames, about 2,500 frames, about 5,000 frames, about 7,500 frames, or about 10,000 frames. In some cases, the plurality of frames includes at least about 100 frames, about 250 frames, about 500 frames, about 750 frames, about 1,000 frames, about 2,500 frames, about 5,000 frames, or about 7,500 frames. In some cases, the plurality of frames includes up to about 250 frames, about 500 frames, about 750 frames, about 1,000 frames, about 2,500 frames, about 5,000 frames, about 7,500 frames, or about 10,000 frames. In some cases, the frames each include the same amount of data. In other cases, the frames each include a different amount of data. In some cases, each frame is assigned a frame index. In some cases, the frame index increases with the frame index (e.g., 0, 1, 2, 3, 4, 5, ..., etc.). In some cases, the frame index increases monotonically with the frame index.
[0064] The method for encoding digital or binary data includes an external codec. In some cases, the method for encoding digital or binary data into a plurality of polynucleotide sequences includes an external codec. In some cases, the external codec is applied to the data (e.g., binary data). In some cases, the external codec is applied to the data after the data is split into a plurality of frames (110). In such cases, the external codec is applied to each of the plurality of frames. An exemplary diagram of splitting a data stream into frames and applying an external codec is illustrated in FIG. 3.
[0065] In some cases, the outer codec includes an error correction scheme or code, such as a Reed-Solomon (RS) code. This outer codec is used to spread the stored digital or binary data across many oligonucleotides. In some cases, spreading the data creates redundancy that can be used to correct losses (e.g., lost oligos). In some cases, spreading the data also creates redundancy to correct errors from the inner codec.
[0066] In some cases, the error correction scheme includes a Reed-Solomon (RS) code. In such cases, an RS encoder is used to encode binary data or multiple frames containing binary data. Typically, RS codes operate on a block of data that is treated as a set of finite field elements. In some cases, RS codes operate on a block of data, e.g., x=(x1,...,x k )∈F k Let p be the polynomial x where:
[0067]
number
[0068] In some further embodiments, the RS code includes an encoding scheme in which each codeword contains the message as a prefix and error correction symbols are added as a suffix. In some cases, the RS code is designated as RS(n,k) using m-bit symbols. In such cases, the encoder takes k data symbols of m bits each and appends parity symbols (error correction symbols or check symbols) to create an n-symbol codeword, where there are nk parity symbols (or check symbols, t) of m bits each. In some cases, the RS decoder corrects up to t symbols that contain errors in the codeword, where 2t=nk. The codeword C(x) includes parity check information CK(x) that is systematically added to the message information M(x). The codeword C(x) is defined as C(x)=x n-k M(x)+CK(x)=x n-k M(x)+x n-k M(x) mod g(x), where k is the message length (e.g., symbols), t is the number of errors to be corrected, n is the block length (e.g., the message length n plus the correction length t), and m is the symbol width. Given the symbol size m, the maximum codeword length n for an RS code is n=2 m -1. Furthermore, x n-k refers to the displacement shift in the message, and g(X) refers to the generator polynomial, which is defined as a polynomial with roots that are successive powers of a Galois field (GF) primitive α (e.g., g(x)=(x-α i )(x-α i+1 )···(x-α i+n-k-1 )=g0+g1x+···+g n-k-1 x n-1-1 +x n-k ).
[0069] For example, in RS(255,223) using 8-bit symbols, the block length n is 255 codeword bytes, the message length k is 223 bytes, and the parity 2t is 32 bytes. In such an example, the RS decoder corrects up to 16 symbol errors in a codeword, i.e., up to 16 bytes can be corrected by the decoder. RS codes are based on a Galois field in GF(2 m For example, as shown in FIG. 3, the RS GF(2 12 ) encoding scheme, n is 4095 (for example, n=2 12 -1=4096-1=4095). If k is, for example, 2499, then 2t=4095-2499=1596, and t is 798.
[0070] In some cases, the error correction scheme includes a linear error correction code (or linear block code), such as a low density parity check (LDPC) code. In some cases, the error correction scheme includes a linear block error correction code, such as a polar code. In some further embodiments, the error correction scheme includes a high performance forward error correction (FEC), such as a turbo code. In some cases, the error correction scheme includes an RS code, an LDPC code, a turbo code, a polar code, or any combination thereof (e.g., an RS-based LDPC code).
[0071] In some cases, the error correction scheme includes a low density parity check (LDPC) code. In such cases, an LDPC code is used to encode binary data or multiple frames containing binary data. Usually, the structure of an LDPC code is defined by a parity check matrix that contains zeros in most entries and ones elsewhere. For example, an (N,K) LDPC code for K information bits is a linear block code with a block size of N and is defined by a sparse (NK) × N parity check matrix where all elements except 1 are zero. The number of ones in a row or column is called the degree of the row or column. In some cases, a codeword of length N is represented as a vector C, and for length K information bits, an (N,K) code containing 2K codewords is used. In some cases, an (N,K) LDPC code is defined by a HC T = 0.
[0072] In some cases, an LDPC code is regular if each row and column of the parity check matrix has a constant degree, otherwise it is irregular. In some cases, irregular LDPC codes outperform regular LDPC codes. In some cases, the degrees differ between rows and columns, so irregular LDPC codes can only expect improved performance if the row degrees and column degrees are properly adjusted.
[0073] In some cases, the error correction scheme includes a polar code. In some cases, the polar code can achieve Shannon capacity with theoretical proof. In some cases, the polar code includes low encoding and decoding complexity. Polar codes are typically implemented using a generator matrix G N Contains information x1 N =u1 N G N can be encoded according to x1 N is the output bit after encoding, and u1 N is the input bit before encoding, and the generator matrix is
[0074]
number
[0075]
number
[0076]
number
[0077]
number
[0078] In some cases, polar codes are expressed as cosec codes (N, K, A, u A c ) and the encoding process is
[0079]
number
[0080] In some cases, the error correction scheme includes a turbo code. A turbo code typically includes a parallel concatenation of two or more component codes, which are applied to different interleaved versions of the same information sequence. Typically, recursive systematic convolutional (RSC) codes are used as the component codes. For example, the structure of a turbo code includes two RSC encoders (e.g., M=2) concatenated in parallel, with (approximately) R=1 / (M+1), so the code rate R is R=1 / 3. The input to the first RSC encoder is the original information sequence. The original information sequence d is also applied to an interleaver to generate an interleaved version d'. The interleaved version d' of the information sequence is the input to the second RSC encoder. The output from the turbo encoder is u, with x added to the redundant part. (1) (output from the first RSC encoder) and x (2) (output from the second encoder). Therefore, the output of the encoder is u1, x 1(1) , x 1(2) ,u2,x 2(1) , x 2(2) Including u k is the kth systematic bit (i.e., data bit), and x k(1) is the k-th systematic bit u k is the parity output from the first RSC encoder associated with x k(2) is the k-th systematic bit u kThe first RSC encoder is a parity output from a second RSC encoder associated with the second RSC encoder. The decoding procedure for turbo codes typically involves iterative decoding. The decoding procedure for turbo codes may include two component decoders (corresponding to the two RSC encoders), an interleaver, and a deinterleaver. In some cases, the two component decoders are soft-input and soft-output (SISO) decoders. In some cases, the output of the two component decoders includes likelihood information about the encoded data sequence.
[0081] In some cases, when an external codec is applied, the size of the data increases. In some cases, when an external codec is applied to each of the frames containing the data, the frame size increases. In some cases, the frames are divided into multiple lanes (115). In some cases, each lane includes a lane index. In some cases, each frame includes about 1000 to about 10,000 lanes. In some cases, each frame includes about 5000 lanes. In some cases, each frame includes about 1,000 lanes to about 2,500 lanes, about 1,000 lanes to about 5,000 lanes, about 1,000 lanes to about 7,500 lanes, about 1,000 lanes to about 10,000 lanes, about 2,500 lanes to about 5,000 lanes, about 2,500 lanes to about 7,500 lanes, about 2,500 lanes to about 10,000 lanes, about 5,000 lanes to about 7,500 lanes, about 5,000 lanes to about 10,000 lanes, or about 7,500 lanes to about 10,000 lanes. In some cases, each frame includes about 1,000 lanes, about 2,500 lanes, about 5,000 lanes, about 7,500 lanes, or about 10,000 lanes. In some cases, each frame includes at least about 1,000 lanes, about 2,500 lanes, about 5,000 lanes, or about 7,500 lanes. In some cases, each frame includes up to about 2,500 lanes, about 5,000 lanes, about 7,500 lanes, or about 10,000 lanes. Each lane further includes about 100 to about 300 bits. In some cases, each lane includes about 100 bits to about 150 bits, about 100 bits to about 200 bits, about 100 bits to about 250 bits, about 100 bits to about 300 bits, about 150 bits to about 200 bits, about 150 bits to about 250 bits, about 150 bits to about 300 bits, about 200 bits to about 250 bits, about 200 bits to about 300 bits, or about 250 bits to about 300. In some cases, each lane includes approximately 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300 bits.In some cases, each lane includes at least about 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300 bits. In some cases, each lane includes up to about 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300 bits. Although the methods for encoding provided herein are illustrated using binary data, for example, in some cases the methods may be applied generally to data including multiple symbols.
[0082] In some cases, the method for encoding data into a plurality of polynucleotide sequences includes shuffling the data. In some cases, each lane is shuffled based at least in part on a lane index (120). In some cases, each lane is shuffled after applying an external codec to the binary data. In some cases, shuffling each lane allows for tolerance to errors that may occur during synthesis or sequencing, such as errors that affect the entire oligonucleotide pool. The errors may include insertions, deletions, substitutions, or combinations thereof. In some cases, the shuffling includes a rotation scheme within each lane based in part on each lane index. For example, each bit within a lane may be shifted by each lane index (e.g., no shuffling for lane 0, shifting by one bit for lane 1, shifting by two bits for lane 2, etc.).
[0083] Further in some cases, shuffling includes a pseudorandom process within each lane. In this pseudorandom shuffling process, a random seed is used to initialize a pseudorandom number generator. In some cases, the numbers generated by the pseudorandom number generator are determined by the random seed. Thus, using the same seed, the same sequence of numbers is generated by the pseudorandom number generator. As an example, using shuffling includes a pseudorandom process, where each bit in a lane is shifted according to the number generated by the pseudorandom number generator.
[0084] Additionally, in some cases, the lane index is used as a seed to create permutations of some or all of the bits in that lane. In some cases, the permutations of some or all of the bits are created by sampling from a random number generator. In some cases, the permutations are stored in compiled form. In some cases, the use of a pseudorandom number generator allows for smaller implementation source code.
[0085] In some cases, a frame index and a lane index are prepended. In some cases, a frame index and a lane index are prepended to each lane after each lane is shuffled. An exemplary diagram of shuffling lanes and prepending a frame index and a lane index is shown in FIG. 4. In some cases, the frame index includes about 12 bits to about 20 bits. In some cases, the frame index includes about 12 bits to about 14 bits, about 12 bits to about 16 bits, about 12 bits to about 18 bits, about 12 bits to about 20 bits, about 14 bits to about 16 bits, about 14 bits to about 18 bits, about 14 bits to about 20 bits, about 16 bits to about 18 bits, about 16 bits to about 20 bits, or about 18 bits to about 20 bits. In some cases, the frame index includes about 12 bits, about 14 bits, about 16 bits, about 18 bits, or about 20 bits. In some cases, the frame index includes at least about 12 bits, about 14 bits, about 16 bits, or about 18 bits. In some cases, the frame index includes up to about 14 bits, about 16 bits, about 18 bits, or about 20 bits. In some cases, the lane index includes between about 12 bits and about 16 bits. In some cases, the lane index includes between about 12 bits and about 14 bits, about 12 bits and about 16 bits, or about 14 bits and about 16 bits. In some cases, the lane index includes between about 12 bits, about 14 bits, or about 16 bits. In some cases, the lane index includes at least about 12 bits or about 14 bits. In some cases, the lane index includes up to about 14 bits or about 16 bits. As shown in FIG. 4, in some cases, the lane index is 12 bits and the frame index is 20 bits. In some cases, the lane index is a symbol width m from the RS code.
[0086] In some cases, the method for encoding data into a plurality of polynucleotide sequences includes an internal codec. In some cases, the internal codec is applied to the data (e.g., binary data). In some cases, the internal codec is applied to data from an external codec. In some cases, the internal codec is applied to a lane of data. In some cases, the internal codec is applied to a lane of data after the lane is shuffled.
[0087] In some cases, the internal codec includes an encoding scheme. In some cases, an internal codec including an encoding scheme is applied to each lane to encode the data as a polynucleotide sequence (125). The internal codec is used to convert data (e.g., digital or binary data) into nucleotide bases. In some cases, the internal codec can correct errors such as deletion errors, substitution errors, or insertion errors, or any combination thereof. In some further embodiments, the internal codec is used to check the validity of the oligos and discard suspect oligos to prevent them from contaminating the external decoding. The internal codec can further encode the indexes (frame index and lane index) to allow for efficient clustering during decoding.
[0088] In some cases, the encoding scheme adds redundancy across the multiple polynucleotide sequences. In some cases, the redundancy is about 5% to about 10%. In some cases, the redundancy is about 5% to about 6%, about 5% to about 7%, about 5% to about 8%, about 5% to about 9%, about 5% to about 10%, about 6% to about 7%, about 6% to about 8%, about 6% to about 9%, about 6% to about 10%, about 7% to about 8%, about 7% to about 9%, about 7% to about 10%, about 8% to about 9%, about 8% to about 10%, or about 9% to about 10%. In some cases, the redundancy is about 5%, about 6%, about 7%, about 8%, about 9%, or about 10%. In some cases, the redundancy is at least about 5%, about 6%, about 7%, about 8%, or about 9%. In some cases, the redundancy is up to about 6%, about 7%, about 8%, about 9%, or about 10%. In some cases, this redundancy allows the pool of oligos to be decoded when there are errors in the individual oligos, such as insertions, deletions, substitutions, or any combination thereof.
[0089] An exemplary diagram of an encoding scheme is shown in FIG. 5. In this exemplary diagram, the encoding scheme in the inner codec combines two or more of the bits from each lane, the bit history, and the bit position. In some cases, a model (e.g., an adaptive model) is used to divide the known bits into contexts, and each context is mapped to a bit history. In some cases, the bit history is represented by an 8-bit state. In some cases, the bit history is updated each time a context is detected, for example, by use of a lookup table. The bit position includes a fixed number of least significant bits (LSBs). In some cases, the LSBs include a bit index of the bit to encode. For example, if 100 bits encode a 100mer oligonucleotide, the "bit index" refers to an index from 0 to 99 in the bits to encode. For example, if 100 bits encode a 100mer oligonucleotide, the "bit index" refers to an index from 0 to 99 in the bits to encode. The LSBs include a bit position in a binary integer that represents the location of a binary 1 in the integer. In some cases, the LSB index is of any length. In some cases, the LSB index is represented by a 2-bit state, a 3-bit state, or a 4-bit state. As an example, indices 0, 1, 2, 3, 4, 5, 6, 7, ... may be represented as 2-bit states 00, 01, 10, 11, 00, 01, 10, 11, ..., respectively. Although the encoding scheme shown in Figure 5 involves binary data, in some cases the encoding scheme may be applied generally to data containing multiple symbols.
[0090] In some cases, the internal codec includes generating candidate bases for bits of the binary data. The candidate bases for the binary data are generated using a lookup table, a hash, or a combination thereof. In some cases, the hash is determined using a method described previously herein. In some cases, the binary data includes two or more of a bit from each lane, a bit history, and a bit position. In some cases, the bit rate of the encoding is about 1 bit per base to about 2 bits per base. In some cases, the bit rate for encoding is from about 1 bit per base to about 1.1 bits per base, from about 1 bit per base to about 1.2 bits per base, from about 1 bit per base to about 1.3 bits per base, from about 1 bit per base to about 1.4 bits per base, from about 1 bit per base to about 1.5 bits per base, from about 1 bit per base to about 1.6 bits per base, from about 1 bit per base to about 1.7 bits per base, from about 1 bit per base to about 1.8 bits per base, from about 1 bit per base to about 1.9 bits per base, from about 1 bit per base to about 2 bits per base, from about 1.1 bits per base to about 1.2 bits per base, from about 1.1 bits per base to about 1.3 bits per base, from about 1.1 bits per base to about 1.4 bits per base. , about 1.1 bits per base to about 1.5 bits per base, about 1.1 bits per base to about 1.6 bits per base, about 1.1 bits per base to about 1.7 bits per base, about 1.1 bits per base to about 1.8 bits per base, about 1.1 bits per base to about 1.9 bits per base, about 1.1 bits per base to about 2 bits per base, about 1.2 bits per base to about 1.3 bits per base, about 1.2 bits per base to about 1.4 bits per base, about 1.2 bits per base to about 1.5 bits per base, about 1.2 bits per base to about 1.6 bits per base, about 1.2 bits per base to about 1.7 bits per base, about 1.2 bits per base to about 1.8 bits per base, about 1.2 ...2 bits to about 2 bits per base, about 1.3 bits per base to about 1.4 bits per base, about 1.3 bits per base to about 1.5 bits per base, about 1.3 bits per base to about 1.6 bits per base, about 1.3 bits per base to about 1.7 bits per base, about 1.3 bits per base to about 1.8 bits per base, about 1.3 bits per base to about 1.9 bits per base, about 1.3 bits per base ~ about 2 bits per base, about 1.4 bits per base to about 1.5 bits per base, about 1.4 bits per base to about 1.6 bits per base, about 1.4 bits per base to about 1.7 bits per base, about 1.4 bits per base to about 1.8 bits per base, about 1.4 bits per base to about 1.9 bits per base, about 1.4 bits per base to about 2 bits per base, about 1.5 bits per base to about about 1.6 bits per base, about 1.5 bits per base to about 1.7 bits per base, about 1.5 bits per base to about 1.8 bits per base, about 1.5 bits per base to about 1.9 bits per base, about 1.5 bits per base to about 2 bits per base, about 1.6 bits per base to about 1.7 bits per base, about 1.6 bits per base to about 1.8 bits per base, about 1.6 bits per base to about 1. 9 bits, about 1.6 bits per base to about 2 bits per base, about 1.7 bits per base to about 1.8 bits per base, about 1.7 bits per base to about 1.9 bits per base, about 1.7 bits per base to about 2 bits per base, about 1.8 bits per base to about 1.9 bits per base, about 1.8 bits per base to about 2 bits per base, or about 1.9 bits per base to about 2 bits per base. In some cases the bit rate for encoding is about 1 bit per base, about 1.1 bits per base, about 1.2 bits per base, about 1.3 bits per base, about 1.4 bits per base, about 1.5 bits per base, about 1.6 bits per base, about 1.7 bits per base, about 1.8 bits per base, about 1.In some cases, the bit rate for encoding is at least about 1 bit per base, about 1.1 bits per base, about 1.2 bits per base, about 1.3 bits per base, about 1.4 bits per base, about 1.5 bits per base, about 1.6 bits per base, about 1.7 bits per base, about 1.8 bits per base, or about 1.9 bits per base. In some cases, the bit rate for encoding is at most about 1.1 bits per base, about 1.2 bits per base, about 1.3 bits per base, about 1.4 bits per base, about 1.5 bits per base, about 1.6 bits per base, about 1.7 bits per base, about 1.8 bits per base, about 1.9 bits per base, or about 2 bits per base. In some cases, a lookup table is used to map bits to nucleotides (e.g., A=00, T=10, C=01, G=11). In some cases, the hash involves a function that can be used to map data of any size (e.g., any number of bits) to a fixed size value (e.g., a nucleotide or hash value). In some cases, the hashed value is mapped to a polynucleotide sequence.
[0091] In some cases, the internal codec includes a base repetition check. In some cases, the base repetition check is performed after the base candidates are selected. In some cases, the base repetition check checks for repetitions in two or more consecutive bases. In some cases, the base repetition check replaces one base with another base if there is a repetition in two or more consecutive bases. In some cases, the lookup table or hash is updated based on the bases updated during the base repetition check. Further, after the base repetition check, the bit history is updated. In some cases, the frame index and / or lane index are incremented. In some cases, this process is repeated until all sequences of the plurality of polynucleotide sequences are determined.
[0092] In some cases, the internal codec further comprises performing GC filtering prior to synthesizing the plurality of polynucleotide sequences. In some cases, the GC filtering removes between about 1% and about 10% of the plurality of lanes. In some cases, the GC filtering removes between about 5% and about 10% of the plurality of lanes. In some cases, the GC filtering removes no lanes of the plurality of lanes. In some cases, the GC filtering removes about 1%, about 2%, about 3%, about 4%, about 5%, about 6%, about 7%, about 8%, about 9%, or about 10%. In some cases, the GC filtering removes at least about 1%, about 2%, about 3%, about 4%, about 5%, about 6%, about 7%, about 8%, or about 9%. In some cases, the GC filtering removes up to about 2%, about 3%, about 4%, about 5%, about 6%, about 7%, about 8%, about 9%, or about 10%. In some cases, the plurality of polynucleotide sequences comprises a GC content of about 40% to about 60%. In some cases, the plurality of polynucleotide sequences comprises a GC content of about 40% to about 45%, about 40% to about 50%, about 40% to about 55%, about 40% to about 60%, about 45% to about 50%, about 45% to about 55%, about 45% to about 60%, about 50% to about 55%, about 50% to about 60%, or about 55% to about 60%. In some cases, the plurality of polynucleotide sequences comprises a GC content of about 40%, about 45%, about 50%, about 55%, or about 60%. In some cases, the plurality of polynucleotide sequences comprises a GC content of at least about 40%, about 45%, about 50%, or about 55%. In some cases, the plurality of polynucleotide sequences comprises a GC content of up to about 45%, about 50%, about 55%, or about 60%. In some cases, at least 90% of the plurality of polynucleotide sequences comprises a GC content of about 40% to about 60%. In some cases, at least 90% of the plurality of polynucleotide sequences comprises a GC content of about 40% to about 45%, about 40% to about 50%, about 40% to about 55%, about 40% to about 60%, about 45% to about 50%, about 45% to about 55%, about 45% to about 55%, about 45% to about 60%, about 50% to about 55%, about 50% to about 60%, or about 55% to about 60%.In some cases, at least 90% of the plurality of polynucleotide sequences comprise a GC content of about 40%, about 45%, about 50%, about 55%, or about 60%. In some cases, at least 90% of the plurality of polynucleotide sequences comprise a GC content of at least about 40%, about 45%, about 50%, or about 55%. In some cases, at least 90% of the plurality of polynucleotide sequences comprise a GC content of up to about 45%, about 50%, about 55%, or about 60%. In some cases, the output from the internal codec comprises a final oligonucleotide pool.
[0093] An exemplary diagram of an alternative encoding scheme is shown in FIG. 6. In some cases, the encoding scheme in the internal codec includes starting with a default lookup table. The default lookup table is used to select a word to encode in each lane. In some cases, the word includes multiple symbols. In some cases, the word is an 8-bit word or byte. The lookup table is applied to generate base candidates for each word or byte in each lane. The next lookup table is selected based on the previously encoded word or byte. In some cases, the encoding scheme further includes performing a base repeat check, GC filtering, or a combination thereof, as previously described herein. In some cases, this process is repeated until all sequences of the plurality of polynucleotide sequences can be determined. In some cases, the output from the internal codec includes a final oligonucleotide pool or a final oligonucleotide library.
[0094] In some cases, the length of each of the oligonucleotides (or polynucleotides) in the library is about 20 to about 500 bases. In some cases, the length of each of the oligonucleotides (or polynucleotides) in the library is about 20 bases to about 50 bases, about 20 bases to about 100 bases, about 20 bases to about 200 bases, about 20 bases to about 300 bases, about 20 bases to about 400 bases, about 20 bases to about 500 bases, about 50 bases to about 100 bases, about 50 bases to about 200 bases, about 50 bases to about 300 bases, about 50 bases about 400 bases, about 50 bases to about 500 bases, about 100 bases to about 200 bases, about 100 bases to about 300 bases, about 100 bases to about 400 bases, about 100 bases to about 500 bases, about 200 bases to about 300 bases, about 200 bases to about 400 bases, about 200 bases to about 500 bases, about 300 bases to about 400 bases, about 300 bases to about 500 bases, or about 400 bases to about 500 bases. In some cases, the length of each of the oligonucleotides (or polynucleotides) in the library is about 20 bases, about 50 bases, about 100 bases, about 200 bases, about 300 bases, about 400 bases, or about 500 bases. In some cases, the length of each of the oligonucleotides (or polynucleotides) in the library is at least about 20 bases, about 50 bases, about 100 bases, about 200 bases, about 300 bases, or about 400 bases. In some cases, the length of each of the oligonucleotides (or polynucleotides) in the library is at most about 50 bases, about 100 bases, about 200 bases, about 300 bases, about 400 bases, or about 500 bases.
[0095] In some cases, the method for encoding data in a plurality of polynucleotide sequences as described herein is performed on a system. In some cases, such a system comprises an apparatus comprising a memory, a processing device operably coupled to the memory, or a combination thereof. In some cases, the memory is used to store binary data, polynucleotide sequence, or combination thereof information. In some cases, the data (e.g., binary data), polynucleotide sequence, or combination thereof information is from one or more steps in an encoding method described herein. In some cases, the memory is used to store information (e.g., software code, parameters, executable instructions, etc.) related to an algorithm described herein. In some examples, the memory can include any suitable memory described herein. In some examples, the memory can be configured according to an embodiment described herein.
[0096] In some cases, the processing device is configured to perform one or more encoding steps. In some cases, the processing device is configured to perform one or more operations including splitting the data into a plurality of frames, applying an outer codec to each frame of the plurality of frames, splitting each frame into a plurality of lanes, shuffling each lane based at least in part on a lane index, and applying an inner codec including an encoding scheme to encode each lane in the polynucleotide sequence. In some cases, each frame of the plurality of frames includes a frame index. In some cases, each lane of the plurality of lanes includes a lane index. In some cases, the outer codec includes an error correction scheme. In some cases, the encoding scheme adds redundancy such that the binary data may be decoded if an error is present in the polynucleotide sequence.
[0097] The methods, systems, and platforms for encoding data can include an internal codec optimized for one or more constraints. The one or more constraints can be related to nucleic acid synthesis, post-processing, storage, or sequencing, as non-limiting examples. In some cases, the nucleic acid synthesis includes electrochemical synthesis, enzymatic synthesis, phosphoramidite synthesis, inkjet printing, or any combination thereof. In some cases, the one or more constraints related to nucleic acid synthesis include synthesis errors, such as insertions, deletions, or mutations. In some cases, the post-processing includes one or more of ligation, cleavage, hybridization, denaturation, fixation to a solid support, extension, error correction, enrichment, separation, purification, and amplification. In some cases, the storage includes cold data storage. Cold data storage can generally refer to storage of data in nucleic acids that is rarely accessed, for example. Cold data storage can be the opposite of "hot storage," which refers to data that is frequently accessed. In some cases, the storage includes hot storage, where data stored in nucleic acids is frequently accessed. In some cases, the storage includes nucleic acid storage in a liquid phase or a solid phase. In some cases, the one or more constraints associated with the storage include temperature (e.g., room temperature), humidity, pressure, salinity, pH, concentration, time, light, UV, O2, or any combination thereof. In some cases, the sequencing includes next generation sequencing, parallel sequencing, single molecule real-time sequencing, nanopore sequencing, sequencing by synthesis, Sanger sequencing, or any combination thereof.
[0098] Methods, systems, and platforms for encoding data can include an internal codec optimized for the generation of polynucleotides. In some cases, the generation of polynucleotides includes assembly of polynucleotides. In some cases, the generation of polynucleotides includes synthesis of polynucleotides. The synthesis can include methods and systems described herein or any suitable methods and systems known in the art. In some cases, the data includes one or more symbols. In some cases, the data includes a string of symbols or an array of symbols. In some cases, the one or more symbols include binary data. In some cases, the internal codec is applied to the data. In some cases, the internal codec is applied to data from an external codec (e.g., an error correction scheme), such as an external codec provided herein. In some cases, the internal codec is applied to data that is not encrypted. In some cases, the internal codec is applied to encrypted data. The internal codec can be optimized to generate polynucleotides according to a particular sequence of bases. In some cases, this allows for more efficient synthesis of polynucleotides because the total number of synthesis cycles is reduced compared to the number of synthesis cycles required to synthesize a polynucleotide having a sequence that is not encoded using an internal codec provided herein (e.g., a non-optimized synthesis approach). In some cases, this allows for a lower error rate due to a reduced number of oxidation and deprotection steps during the synthesis.
[0099] Provided herein is a method for encoding data. In some cases, the method includes generating an internal codec including a codebook. The codebook may be optimized based on an application, operation, operation, or use of the nucleic acid encoding the data. The codebook may be optimized based on one or more constraints (e.g., related to nucleic acid synthesis, post-processing, storage, sequencing, etc.) as described herein. The codebook may be generated using a base order. In some cases, the codebook includes codewords generated in part based on the base order. In some cases, the base order includes predefined base transitions. In some cases, the codebook generates polynucleotide sequences by mapping data represented by one or more symbols (e.g., binary "0" and "1") to another one or more symbols, such as nucleic acids (e.g., A, T, C, G), using the codewords. In some cases, the specific or predefined base transitions allow synthesis according to the base order. In some cases, by varying the synthesis order at each layer, repetition of patterns is reduced. Non-limiting examples of synthesis orders at a particular layer may include [A, G, C, T], [C, A, T, G], [T, G, A, C], or any other combination of bases A, T, G, C. In such examples, the codebook varies from layer to layer. In some examples, no two successive layers have the same codebook. In some examples, each layer includes a unique codebook. In some examples, two or more layers include the same codebook.
[0100] In some examples, repetitive patterns are reduced by allowing only certain base transitions at each base. For example, after an adenine (A), only guanine (G), cytosine (C), or thymine (T) may be selected as the next base in the sequence. Alternatively, after an A, no bases are selected. In some examples, if a G is selected, only C or T may be selected, or alternatively, no bases are selected. In some examples, if a C is selected, only T may be selected, or alternatively, no bases are selected.
[0101] In some cases, the code book includes one, two, three, four, or five nucleotides. In some cases, the code book includes at least one, two, three, or four nucleotides. In some cases, the code book includes at most two, three, four, or five nucleotides. In some cases, the code book includes four nucleotides (e.g., adenine (A), thymine (T), cytosine (C), guanine (G)). For example, specific base transitions for one or more layers may be: (a) [A,T,C,G], (b) [A,T,G,C], (c) [A,G,T,C], (d) [A,G,C,T], (e) [A,C,G,T], (f) [A,C,T,G], (g) [T,C,G,A], (h) [T,C,A,G], (i) [T,G,A,C], (j) [T,G,C,A], (k) [T,A,G,C], (l) [T,A,C,G], (m) [C,G,A,T], (n) [C,G,T,A], (o) [C,A,G,T], (p) [C,A,T,G], (q) [C,T,A,G], (r) [C,T,G,A], (s) [G,A,T,C], (t) [G,A,C,T], (u) [G,T,A,C], (v) [G,T,C,A], (w) [G,C,T,A], (x) [G,C,A,T], or (y) any combination thereof. In some cases, the particular base transition for one or more layers includes a natural or standard base. In some cases, the particular base transition for one or more layers includes a nucleotide having a natural or standard base and one or more nucleotides having a non-natural or non-standard base. As an example, a codebook may include a synthesis order that follows a repetition of [A,G,C,T] (e.g., A,G,C,T,A,G,C,T,...). In such an example, the codebook may include the following codewords: A, G, C, T, AG, AC, AT, GC, GT, AGC, ACT, and AGCT. In some cases, the codewords in the codebook may be synthesized in a number of cycles equal to the number of nucleotides in the codebook. In some cases, the codewords in the codebook may be synthesized in 1, 2, 3, 4, or 5 cycles of synthesis.In some cases, the code words in the code book may be combined in at least 1, 2, 3, 4, or 5 cycles of combination. In some cases, the code words in the code book may be combined in at most 1, 2, 3, 4, or 5 cycles of combination. In some cases, the transitions associated with the code book are non-random or pseudo-non-random. In some cases, the transitions associated with the code book are defined by a predefined mathematical or statistical algorithm.
[0102] In some cases, the synthesis order can be changed for one or more layers. A layer can include the flow of each base, usually in a specific or predefined order. For example, if the base transition is [A,T,C,G], a layer includes a flow of A, followed by T, C, and then G during synthesis. In some cases, one or more layers can include a flow of A, followed by T, C, and then G during synthesis. In some cases, one or more layers can include a flow of A, followed by T, C, and then G during synthesis. ,T], (n) [C,G,T,A], (o) [C,A,G,T], (p) [C,A,T,G], (q) [C,T,A,G], (r) [C,T,G,A], (s) [G,A,T,C], (t) [G,A,C,T], (u) [G,T,A,C], (v) [G,T,C,A], (w) [G,C,T,A], (x) [G,C,A,T], or (y) any combination thereof. In some cases, one or more of the particular base transitions of a layer may be repeated two or more times. By way of example, the synthetic sequence may include [A,G,C,T], [C,A,T,G], [T,G,A,C]... and the sequence may include AGCTAGCTCATGTGAC..., with the first layer being repeated twice. In some cases, one or more layers are altered to reduce repeating patterns in the sequence (eg, repetitive bases, high GC / AT, or secondary structures).
[0103] In some cases, the inner codec includes one or more codebooks. In some cases, the inner codec includes 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 codebooks. In some cases, the inner codec includes at least 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 codebooks. In some cases, the inner codec includes at most 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 codebooks. In some cases, each codebook encodes a layer during synthesis of the polynucleotide. In some cases, each codebook is generated using a unique base sequence. In some cases, each codebook is optimized for one or more base transitions. In some cases, the unique base sequence generates one or more unique base transitions. In some cases, each codebook is optimized for a particular base transition at a particular layer, cycle index, history, or any combination thereof. In some examples, the history includes one or more of a previous layer, one or more codebooks encoding the previous layer or layers, cycle indices of one or more previous layers, or any combination thereof. In some cases, each codebook is generated by a predefined mathematical or statistical algorithm.
[0104] In some cases, the codebook includes one or more nucleotide analogs or non-natural / non-standard nucleotides. Nucleotide analogs or non-natural nucleotides include nucleotides that include any type of modification. Nucleotide analogs or non-natural nucleotides include nucleotides that include any type of modification to either the base, sugar, or phosphate moiety. The modification can include chemical modifications. The modification can be, for example, a modification of the 3'OH or 5'OH group, the backbone, the sugar moiety, or the nucleotide base. The modification can include the addition of a non-naturally occurring linker molecule, and / or the addition of an inter- or intrastrand crosslink. In one embodiment, the modified nucleic acid includes a modification of one or more of the 3'OH or 5'OH group, the backbone, the sugar moiety, or the nucleotide base, and / or the addition of a non-naturally occurring linker molecule. In one embodiment, the modified backbone includes a backbone other than a phosphodiester backbone. In one embodiment, the modified sugar includes a sugar other than deoxyribose (in modified DNA) or other than ribose (in modified RNA). In one embodiment, the modified base comprises a base other than adenine, guanine, cytosine, or thymine (in modified DNA) or a base other than adenine, guanine, cytosine, or uracil (in modified RNA).
[0105] The nucleic acid may comprise at least one modified base. Modifications to base moieties include A, C, G, and T / U, as well as natural and synthetic modifications of different purine or pyrimidine bases. In some embodiments, the modification is to a modified form of adenine, guanine, cytosine, or thymine (in modified DNA), or to a modified form of adenine, guanine, cytosine, or uracil (in modified RNA). Further examples of modified bases can be found, for example, in WO2019 / 014267 and US2022 / 0243244, which are incorporated herein by reference in their entirety.
[0106] In some embodiments, the code book includes one or more standard nucleotides and one or more non-standard nucleotides. In some cases, the standard nucleotides include one or more of A, T, C, G, or U. In some cases, the non-standard nucleotides include one or more nucleotide analogs or non-natural nucleotides provided herein. In some cases, the non-standard nucleotides include one or more standard nucleotides having a modification. In some cases, the code book includes about 1, 2, 3, 4, or 5 standard nucleotides. In some cases, the code book includes about 1, 2, 3, 4, or 5 non-standard nucleotides. In some cases, the code book includes at least about 1, 2, 3, 4, or 5 standard nucleotides. In some cases, the code book includes at least about 1, 2, 3, 4, or 5 non-standard nucleotides. In some cases, the code book includes at most about 1, 2, 3, 4, or 5 standard nucleotides. In some cases, the code book includes at most about 1, 2, 3, 4, or 5 non-standard nucleotides. In some cases, the code book includes any combination of standard and non-standard nucleotides as provided herein.
[0107] In some cases, the codebook includes from about 1 to about 30 codewords. In some cases, the codebook includes from about 1 to about 5, from about 1 to about 10, from about 1 to about 12, from about 1 to about 15, from about 1 to about 18, from about 1 to about 20, from about 1 to about 22, from about 1 to about 25, from about 1 to about 28, from about 1 to about 30, from about 5 to about 10, from about 5 to about 12, from about 5 to about 15, from about 5 to about 18, from about 5 to about 20, from about 5 to about 22, from about 5 to about 25, from about 5 to about 28, from about 5 to about 30, from about 10 to about 12, from about 10 to about 15, from about 10 to about 18, from about 10 to about 20, from about 10 to about 22, from about 10 to about 25, from about 10 to about 28, from about 10 to about 30, from about 12 to about 15, from about 12 to about from about 18, about 12 to about 20, about 12 to about 22, about 12 to about 25, about 12 to about 28, about 12 to about 30, about 15 to about 18, about 15 to about 20, about 15 to about 22, about 15 to about 25, about 15 to about 28, about 15 to about 30, about 18 to about 20, about 18 to about 22, about 18 to about 25, about 18 to about 28, about 18 to about 30, about 20 to about 22, about 20 to about 25, about 20 to about 28, about 20 to about 30, about 22 to about 25, about 22 to about 28, about 22 to about 30, about 25 to about 28, about 25 to about 30, or about 28 to about 30 code words. In some cases, the codebook includes about 1, about 5, about 10, about 12, about 15, about 18, about 20, about 22, about 25, about 28, or about 30 codewords. In some cases, the codebook includes at least about 1, about 5, about 10, about 12, about 15, about 18, about 20, about 22, about 25, or about 28 codewords. In some cases, the codebook includes at most about 5, about 10, about 12, about 15, about 18, about 20, about 22, about 25, about 28, or about 30 codewords.
[0108] An inner codec including a codebook may be applied to encode the data as a plurality of polynucleotide sequences. In some cases, the data includes digital data. In some cases, the data includes one or more symbols. In some cases, the one or more symbols are mapped to a plurality of polynucleotide sequences based on the codebook. For example, a numeric value such as a binary number (a sequence of 0 or 1) may be mapped to a codeword in the codebook. In some cases, the inner codec is further optimized for one or more constraints. The one or more constraints may include a constraint related to the plurality of polynucleotide sequences. In some cases, the one or more constraints include a length of the plurality of polynucleotide sequences. In some cases, the one or more constraints include a GC content of the plurality of polynucleotide sequences. In some cases, the one or more constraints include a repeat of a base of the plurality of polynucleotide sequences. In some cases, the one or more constraints include one or more errors, such as an insertion, a mutation, or a deletion. In some cases, a graph of transitions is created by mapping the binary data to the codewords. The transitions may include one or more transitions between the codewords and the codebook based on a value and a position (e.g., an index) of the binary data. In some cases, one or more probabilities are calculated based on the deletion, insertion, and / or mutation rates estimated during decoding. In some cases, the decoding algorithm finds one or more solutions to maximize the transition probability, as provided herein (e.g., Figures 8 and 9).
[0109] In some cases, a portion of the plurality of polynucleotide sequences is encoded for redundancy. In some cases, the portion of the plurality of polynucleotide sequences encoded for redundancy is between about 20% and about 80%. In some cases, the portion of the multiple polynucleotide sequences encoded for redundancy is about 20% to about 30%, about 20% to about 40%, about 20% to about 50%, about 20% to about 60%, about 20% to about 70%, about 20% to about 80%, about 30% to about 40%, about 30% to about 50%, about 30% to about 60%, about 30% to about 70%, about 30% to about 80%, about 40% to about 50%, about 40% to about 60%, about 40% to about 70%, about 40% to about 80%, about 50% to about 60%, about 50% to about 70%, about 50% to about 80%, about 60% to about 70%, about 60% to about 80%, or about 70% to about 80%. In some cases, the portion of the plurality of polynucleotide sequences encoded for redundancy is about 20%, about 30%, about 40%, about 50%, about 60%, about 70%, or about 80%. In some cases, the portion of the plurality of polynucleotide sequences encoded for redundancy is at least about 20%, about 30%, about 40%, about 50%, about 60%, or about 70%. In some cases, the portion of the plurality of polynucleotide sequences encoded for redundancy is at most about 30%, about 40%, about 50%, about 60%, about 70%, or about 80%.
[0110] In some cases, the polynucleotide sequences of the plurality are the same length. In some cases, about 70% to about 100% of the polynucleotide sequences of the plurality have the same length. In some cases, about 70% to about 75%, about 70% to about 80%, about 70% to about 85%, about 70% to about 90%, about 70% to about 95%, about 70% to about 100%, about 75% to about 80%, about 75% to about 85%, about 75% to about 90%, about 75% to about 95%, about 75% to about 100%, about 80% to about 85%, about 80% to about 90%, about 80% to about 95%, about 80% to about 100%, about 85% to about 90%, about 85% to about 95%, about 85% to about 100%, about 90% to about 95%, about 90% to about 100%, or about 95% to about 100% of the multiple polynucleotide sequences have the same length. In some cases, about 70%, about 75%, about 80%, about 85%, about 90%, about 95%, or about 100% of the polynucleotide sequences have the same length. In some cases, at least about 70%, about 75%, about 80%, about 85%, about 90%, or about 95% of the polynucleotide sequences have the same length. In some cases, up to about 75%, about 80%, about 85%, about 90%, about 95%, or about 100% of the polynucleotide sequences have the same length. In some cases, the polynucleotide sequences are different lengths. In some cases, the polynucleotide sequences are different by 1% to about 30%. In some cases, the polynucleotide sequences of the plurality of polynucleotides differ by about 1% to about 5%, about 1% to about 10%, about 1% to about 15%, about 1% to about 20%, about 1% to about 25%, about 1% to about 30%, about 5% to about 10%, about 5% to about 15%, about 5% to about 20%, about 5% to about 25%, about 5 to about 30%, about 10% to about 15%, about 10% to about 20%, about 10% to about 25%, about 10% to about 30%, about 15% to about 20%, about 15% to about 25%, about 15% to about 30%, about 20% to about 25%, about 20% to about 30%, or about 25% to about 30%. In some cases, the polynucleotide sequences of the plurality differ by about 1%, about 5%, about 10%, about 15%, about 20%, about 25%, or about 30%. In some cases, the polynucleotide sequences of the plurality differ by at least about 1%, about 5%, about 10%, about 15%, about 20%, or about 25%.In some cases, the polynucleotide sequences of the plurality differ by at most about 5%, about 10%, about 15%, about 20%, about 25%, or about 30%.
[0111] A plurality of polynucleotides including a plurality of polynucleotide sequences may be generated. In some cases, a plurality of polynucleotides are synthesized. In some cases, the synthesis includes base-by-base synthesis. In some cases, the synthesis includes a synthesis cycle. A synthesis cycle generally refers to one or more steps performed to realize nucleotide binding. A synthesis cycle may include one or more of deblocking (or deprotection), coupling, oxidation, and capping. In some cases, the synthesis includes a plurality of synthesis cycles. An internal codec can enable more efficient synthesis by reducing the number of synthesis cycles required. In some cases, the number of synthesis cycles required to synthesize a plurality of polynucleotides including a plurality of polynucleotide sequences encoded by an internal codec is reduced compared to the number of synthesis cycles required to synthesize a plurality of polynucleotides having sequences not encoded by an internal codec. In some cases, the number of synthesis cycles is reduced by about 5 to about 80%. In some cases, the number of synthesis cycles may be from about 5% to about 10%, from about 5% to about 20%, from about 5% to about 30%, from about 5% to about 40%, from about 5% to about 50%, from about 5% to about 60%, from about 5% to about 70%, from about 5% to about 80%, from about 10% to about 20%, from about 10% to about 30%, from about 10% to about 40%, from about 10% to about 50%, from about 10% to about 60%, from about 10% to about 70%, from about 10% to about 80%, from about 20% to about 30%, from about 20% to about 40%, from about 20% to about 50%, %, about 20% to about 60%, about 20% to about 70%, about 20% to about 80%, about 30% to about 40%, about 30% to about 50%, about 30% to about 60%, about 30% to about 70%, about 30% to about 80%, about 40% to about 50%, about 40% to about 60%, about 40% to about 70%, about 40% to about 80%, about 50% to about 60%, about 50% to about 70%, about 50% to about 80%, about 60% to about 70%, about 60% to about 80%, or about 70% to about 80%. In some cases, the number of synthesis cycles is reduced by about 5%, about 10%, about 20%, about 30%, about 40%, about 50%, about 60%, about 70%, or about 80%. In some cases, the number of synthesis cycles is reduced by at least about 5%, about 10%, about 20%, about 30%, about 40%, about 50%, about 60%, or about 70%.In some cases, the number of synthesis cycles is reduced by up to about 10%, about 20%, about 30%, about 40%, about 50%, about 60%, about 70%, or about 80%. As an example, an inner codec with 12 codewords using four nucleotides encodes a plurality of polynucleotide sequences with about 50% redundancy. Thus, in this example, six values of binary data are mapped to 12 codewords, which corresponds to log2(12)=3.58 bits of information. However, when redundancy, e.g., 2x redundancy, is taken into account, this information corresponds to 3.58 / 2=1.79 bits of information per codeword. If the payload in each of the plurality of polynucleotide sequences is about 100 bits, then about 100 bits / 1.79 bits per codeword=55.8 codewords are required. Using the optimized inner codec and cycle ordering as described herein, a codeword requires 4 cycles, resulting in approximately 55.8 codewords x 4 cycles per codeword = approximately 224 cycles of synthesis. However, without the inner codec, synthesis requires 400 cycles (e.g., 4 x 100). As a further example, if the payload in each of the plurality of polynucleotide sequences is approximately 300 bits, synthesis requires approximately 447 cycles (e.g., 200 / 1.79 x 4). However, without the inner codec, synthesis requires 800 cycles (e.g., 4 x 200). As an additional example, if the payload in each of the plurality of polynucleotide sequences is approximately 300 bits, synthesis requires approximately 670 cycles (e.g., 300 / 1.79 x 4). However, without the inner codec, synthesis requires 1200 cycles (e.g., 4 x 300).
[0112] In some cases, the polynucleotides are the same length. In some cases, about 70% to about 100% of the polynucleotides are the same length. In some cases, about 70% to about 75%, about 70% to about 80%, about 70% to about 85%, about 70% to about 90%, about 70% to about 95%, about 70% to about 100%, about 75% to about 80%, about 75% to about 85%, about 75% to about 90%, about 75% to about 95%, about 75% to about 100%, about 80% to about 85%, about 80% to about 90%, about 80 to about 95%, about 80% to about 100%, about 85% to about 90%, about 85% to about 95%, about 85% to about 100%, about 90% to about 95%, about 90% to about 100%, or about 95% to about 100% of the multiple polynucleotides have the same length. In some cases, about 70%, about 75%, about 80%, about 85%, about 90%, about 95%, or about 100% of the polynucleotides have the same length. In some cases, at least about 70%, about 75%, about 80%, about 85%, about 90%, or about 95% of the polynucleotides have the same length. In some cases, up to about 75%, about 80%, about 85%, about 90%, about 95%, or about 100% of the polynucleotides have the same length. In some cases, the polynucleotides are different lengths. In some cases, the polynucleotides are between 1% and about 30% different. In some cases, the plurality of polynucleotides differ by about 1% to about 5%, about 1% to about 10%, about 1% to about 15%, about 1% to about 20%, about 1% to about 25%, about 1% to about 30%, about 5% to about 10%, about 5% to about 15%, about 5% to about 20%, about 5% to about 25%, about 5% to about 30%, about 10% to about 15%, about 10% to about 20%, about 10% to about 25%, about 10% to about 30%, about 15% to about 20%, about 15% to about 25%, about 15% to about 30%, about 20% to about 25%, about 20% to about 30%, or about 25% to about 30%. In some cases, the polynucleotides differ by about 1%, about 5%, about 10%, about 15%, about 20%, about 25%, or about 30%. In some cases, the polynucleotides differ by at least about 1%, about 5%, about 10%, about 15%, about 20%, or about 25%. In some cases, the polynucleotides differ by up to about 5%, about 10%, about 15%, about 20%, about 25%, or about 30%.In some cases, the efficiency of PCR is related to the amount of polynucleotides with the same length. In some cases, multiple polynucleotides with the same length ensure that PCR does not change the distribution of polynucleotides. In some cases, more than 90% of multiple polynucleotides with the same length ensure that PCR does not change the distribution of polynucleotides.
[0113] In some cases, the number of synthesis cycles is less than 400 for a polynucleotide sequence comprising 100 bases. In some cases, the number of synthesis cycles is less than 300 for a polynucleotide sequence comprising 100 bases. In some cases, the number of synthesis cycles is less than 200 for a polynucleotide sequence comprising 100 bases. In some cases, the number of synthesis cycles is about 300 for a polynucleotide sequence comprising 100 bases. In some cases, the number of synthesis cycles is about 200 for a polynucleotide sequence comprising 200 bases. In some cases, the number of synthesis cycles is about 224 for a polynucleotide sequence comprising 100 bases. In some cases, the number of synthesis cycles is about 100 for a polynucleotide sequence comprising 100 bases. In some cases, the number of synthesis cycles is less than 800 for a polynucleotide sequence comprising 200 bases. In some cases, the number of synthesis cycles is less than 600 for a polynucleotide sequence comprising 200 bases. In some cases, the number of synthesis cycles is less than 500 for a polynucleotide sequence comprising 200 bases. In some cases, the number of synthesis cycles is less than 400 for polynucleotide sequences comprising 200 bases. In some cases, the number of synthesis cycles is less than 300 for polynucleotide sequences comprising 200 bases. In some cases, the number of synthesis cycles is about 500 for polynucleotide sequences comprising 200 bases. In some cases, the number of synthesis cycles is about 400 for polynucleotide sequences comprising 200 bases. In some cases, the number of synthesis cycles is about 300 for polynucleotide sequences comprising 200 bases. In some cases, the number of synthesis cycles is about 200 for polynucleotide sequences comprising 200 bases. In some cases, the number of synthesis cycles is less than 1200 for polynucleotide sequences comprising 300 bases. In some cases, the number of synthesis cycles is less than 1000 for polynucleotide sequences comprising 300 bases. In some cases, the number of synthesis cycles is less than 800 for polynucleotide sequences comprising 300 bases. In some cases, the number of synthesis cycles is less than 600 for polynucleotide sequences comprising 300 bases.In some cases, the number of synthesis cycles is less than 400 for a polynucleotide sequence comprising 300 bases. In some cases, the number of synthesis cycles is about 600 for a polynucleotide sequence comprising 300 bases. In some cases, the number of synthesis cycles is about 500 for a polynucleotide sequence comprising 300 bases. In some cases, the number of synthesis cycles is about 450 for a polynucleotide sequence comprising 300 bases. In some cases, the number of synthesis cycles is about 450 for a polynucleotide sequence comprising 300 bases. In some cases, the polynucleotide sequence comprises four nucleotides. In some cases, the polynucleotide sequence comprises one or more of A, T, C, and G. In some cases, the polynucleotide sequence comprises one, two, three, four, or five nucleotides. In some cases, the polynucleotide sequence comprises at least one, two, three, four, or five nucleotides. In some cases, the polynucleotide sequence comprises at most one, two, three, four, or five nucleotides. In some cases, about 10%, 20%, 25%, 30%, 33%, 40%, 50%, 60%, 66%, 70%, 75%, 80%, or 90% of the polynucleotide sequence is encoded for redundancy. In some cases, up to about 10%, 20%, 25%, 30%, 33%, 40%, 50%, 60%, 66%, 70%, 75%, 80%, or 90% of the polynucleotide sequence is encoded for redundancy. In some cases, the polynucleotide sequence includes about 1.5-fold, 2-fold, 2.5-fold, 3-fold, 3.5-fold, or 4-fold redundancy.
[0114] In some cases, the plurality of polynucleotides are synthesized on a solid support, such as a solid support provided herein. The solid support can be a substrate as provided herein. In some cases, the solid support comprises a plurality of features (or loci). The plurality of polynucleotides can be synthesized on the plurality of features. In some cases, about 25% to about 80% of the plurality of features are deblocked per synthesis cycle. In some cases, about 25% to about 30%, about 25% to about 35%, about 25% to about 40%, about 25% to about 45%, about 25% to about 50%, about 25% to about 55%, about 25% to about 60%, about 25% to about 65%, about 25% to about 70%, about 25% to about 75%, about 25% to about 80%, about 30% to about 35%, about 30% to about 40%, about 30% to about 45%, about 30% to about 50%, About 30% to about 55%, about 30% to about 60%, about 30% to about 65%, about 30% to about 70%, about 30% to about 75%, about 30% to about 80%, about 35% to about 40%, about 35% to about 45%, about 35% to about 50%, about 35% to about 55%, about 35% to about 60%, about 35 to about 65%, about 35 to about 70%, about 35 to about 75%, about 35% to about 80%, about 40% to about 45%, about 40% to about 50%, about 40% to about 55%, about 40% to about 60%, about 40% to about 65%, about 40% to about 70%, about 40% to about 75%, about 40% to about 80%, about 45% to about 50%, about 45% to about 55%, about 45% to about 60%, about 45% to about 65%, about 45% to about 70%, about 45% to about 75%, about 45% to about 80%, about 50% to about 55%, about 50% to about 60%, about 50% to about 65%, about 50% to about 70%, about 50% to about 75% , about 50% to about 80%, about 55% to about 60%, about 55% to about 65%, about 55% to about 70%, about 55% to about 75%, about 55% to about 80%, about 60% to about 65%, about 60% to about 70%, about 60% to about 75%, about 60% to about 80%, about 65% to about 70%, about 65% to about 75%, about 65% to about 80%, about 70% to about 75%, about 70% to about 80%, or about 75% to about 80% are deblocked. In some cases, about 25%, about 30%, about 35%, about 40%, about 45%, about 50%, about 55%, about 60%, about 65%, about 70%, about 75%, or about 80% of the plurality of features are deblocked per synthesis cycle.In some cases, at least about 25%, about 30%, about 35%, about 40%, about 45%, about 50%, about 55%, about 60%, about 65%, about 70%, or about 75% of the plurality of features are deblocked per synthesis cycle. In some cases, up to about 30%, about 35%, about 40%, about 45%, about 50%, about 55%, about 60%, about 65%, about 70%, about 75%, or about 80% of the plurality of features are deblocked per synthesis cycle.
[0115] A plurality of features on a solid support are independently addressable. In some cases, the plurality of features are independently addressable by controlling the access of a reagent to a particular section. In some cases, the plurality of features are independently addressable by controlling the reactivity of a polynucleotide at each feature of the plurality of features. In some cases, the plurality of features are independently addressable via one or more electrodes of the solid support. Examples of devices with solid supports containing addressable loci (e.g., features) are described in U.S. Pat. No. 1,093,6953 or U.S. Pat. No. 9,267,213, which are incorporated herein by reference in their entirety. In some cases, the plurality of features are addressable by masking a particular region. In some cases, the particular region is chemically functionalized, such as by modifying the surface with hydrophobic or hydrophilic chemical groups. By way of example, the plurality of features may be masked using methods described in U.S. Pat. No. 1,089,4242, U.S. Pat. No. 1,019,580, or WO2022 / 047076, which are incorporated herein by reference in their entirety. In some cases, the features are addressable by electrochemical deblocking. In some cases, the features are addressable by acid generation. In some cases, one or more electrodes can be used to generate one or more chemical reactions (e.g., electrochemically generated acid (EGA) for nucleotide deprotection). In some cases, electrochemical deblocking involves an organic solvent-based solution for deblocking during the synthesis of any of a variety of oligomers (e.g., oligonucleotides). In such cases, acid-based chemical deblocking can involve the removal of blocking moieties on the molecule to allow for covalent attachment of the next nucleotide.Electrochemical deblocking involves the application of a voltage or current to one or more features via one or more electrodes on a solid support (e.g., an electrode microarray) to locally generate acid or base (depending on whether the electrode is anodic or cathodic), which can affect the removal of acid- or base-labile protecting groups (moieties) attached to chemical species. In some cases, addressable masking techniques using photogenerated acid are used in combination with photosensitizers for deblocking. In some cases, multiple features are addressable by metal-catalyzed deprotection (e.g., palladium-catalyzed deprotection).
[0116] In some cases, the features are addressable by a masking method. In some cases, a lift-off manufacturing method may be used (FIG. 11A). The lift-off method may include adding a sacrificial layer (e.g., photoresist or "PR") to a base layer coated with an oxide layer, adding a conductive layer, and removing the sacrificial layer. In some cases, a dry etching manufacturing method may be used (FIG. 11B). The dry etching method may include adding one or more layers to a base layer, such as an oxide layer, a first intermediate layer (e.g., TiN or other material), a conductive layer (e.g., platinum), a second intermediate layer (e.g., TiN or other material), and a sacrificial layer (e.g., photoresist), partially removing the second intermediate layer to expose the conductive layer, partially removing the conductive layer to expose the first intermediate layer, partially removing the first conductive layer to expose the first intermediate layer, and partially removing the first intermediate layer to expose the oxide layer. As an example, a surface including a base layer of silicon and a top layer including an oxide can be patterned using a removable masking material such as photoresist (FIG. 11A). The entire surface including the mask can be plated using platinum, and then the mask layer can be removed. The previously masked areas then become exposed oxide, and the unmasked areas include platinum on top of the oxide layer. As a further example, a surface including (from bottom to top) a base layer of silicon, a first layer including an oxide, a second layer of titanium nitride, a third layer including platinum, and a fourth layer including titanium nitride can be patterned using a removable masking material such as photoresist (FIG. 11B). The unmasked fourth layer can be removed to expose the third layer, and the photoresist can be removed to expose the masked fourth layer. Removal of all remaining second and fourth layers can produce a surface including a base layer of silicon and a top layer of oxide, as well as "islands" of platinum patterned on top of the titanium nitride.
[0117] In some cases, the electrode or electrodes for generating the electrochemical reagent may include, by way of non-limiting example, metals such as iridium and / or platinum, as well as other metals such as palladium, gold, silver, copper, mercury, nickel, zinc, titanium, tungsten, aluminum, as well as alloys of various metals and other conductive materials such as glassy carbon, reticulated vitreous carbon, basal plane graphite, edge plane graphite, or graphite-containing carbon. In some cases, doped oxides such as indium tin oxide, as well as semiconductors such as silicon oxide and gallium arsenide, may be used. Additionally, the electrodes may be comprised of conductive polymers, metal-doped polymers, conductive ceramics, and conductive clays. In some cases, platinum and palladium include advantageous properties related to their ability to absorb hydrogen (e.g., the ability to be "pre-loaded" with hydrogen before use). In some cases, the electrode or electrodes may be connected to a power source. In some cases, the electrodes are connected to the power source by CMOS (complementary metal oxide semiconductor) switching circuitry, radio and microwave frequency addressable switches, optically addressable switches, direct connections from the electrodes to bond pads around the periphery of the semiconductor chip, or any combination of these. The CMOS switching circuitry can include connection of each of the electrodes to a CMOS transistor switch. The switches can be accessed by sending an electronic address signal down a common bus to a SRAM (static random access memory) circuit associated with each electrode. When the switch is "on", the electrode can be connected to the power source. The radio and microwave frequency addressable switches can involve the electrodes being switched by RF or microwave signals. This can allow the switches to be turned on both with and / or without switching logic. The switches can be tuned to receive a particular frequency or modulation frequency and can be switched without switching logic.An optically addressable switch can be switched by light. In some cases, one or more electrodes can be switched with and / or without switching logic. In some cases, the optical signal can be spatially localized, for example by scanning a laser beam over the electrode array, to allow switching without switching logic, and an electrode is switched every time the laser illuminates it.
[0118] The sequence of the plurality of polynucleotides may be determined. In some cases, the plurality of polynucleotides may be sequenced according to the systems and methods provided herein. Sequencing may include, as non-limiting examples, next generation sequencing, parallel sequencing, single molecule real-time sequencing, nanopore sequencing, sequencing by synthesis, Sanger sequencing, or any combination thereof. In some cases, the plurality of polynucleotides may be sequenced by a sequencer. In some cases, sequencing the plurality of polynucleotides generates a plurality of output sequences. In some cases, the plurality of output sequences overlap with the plurality of polynucleotide sequences. In some cases, this overlap is about 50% to about 100%. In some cases, the overlap is about 50% to about 60%, about 50% to about 70%, about 50% to about 80%, about 50% to about 90%, about 50% to about 100%, about 60% to about 70%, about 60% to about 80%, about 60% to about 90%, about 60% to about 100%, about 70% to about 80%, about 70% to about 90%, about 70% to about 100%, about 80% to about 90%, about 80% to about 100%, or about 90% to about 100%. In some cases, the overlap is about 50%, about 60%, about 70%, about 80%, about 90%, or about 100%. In some cases, the overlap is at least about 50%, about 60%, about 70%, about 80%, or about 90%. In some cases, the overlap is at most about 60%, 70%, 80%, 90%, or 100%. In some cases, the multiple output sequences are decoded using the methods described herein. For example, the multiple output sequences are decoded using a greedy algorithm, a maximum likelihood (ML) algorithm, or a mixed greedy ML algorithm. In some cases, the multiple output sequences are decoded at least in part based on calculating the probability of deletions, insertions, mutations, or any combination thereof.
[0119] Further provided herein is a platform for encoding data. In some cases, the platform includes a hybrid organic in silico platform. In some cases, the platform includes a computing system, a synthesizer, or a combination thereof. In some cases, the computing system comprises at least one processor and instructions executable by the at least one processor to perform operations. The computing system or the at least one processor may be as provided herein. In some cases, the computing system includes a distributed computing system. In some cases, the computing system includes a cloud computing system. The cloud computing system may include a private cloud, a public cloud, a hybrid cloud, a multi-cloud, or any combination thereof. The cloud computing system may include an infrastructure as a service (IaaS), a platform as a service (PaaS), a software as a service (SaaS), or any combination thereof. In some cases, the operations include generating an internal codec that includes a codebook, such as the codebook provided herein. In some cases, the codebook is optimized against one or more constraints, such as one or more constraints related to nucleic acid synthesis, post-processing, storage, or sequencing. In some cases, the nucleic acid synthesis includes electrochemical synthesis, enzymatic synthesis, phosphoramidite synthesis, inkjet printing, or any combination thereof. In some cases, the one or more constraints associated with the nucleic acid synthesis include synthesis errors, such as insertions, deletions, or mutations. In some cases, the post-processing includes one or more of ligation, cleavage, hybridization, denaturation, immobilization to a solid support, extension, error correction, enrichment, separation, purification, and amplification. In some cases, the storage includes cold data storage.Cold data storage can generally refer to storage of data, for example, in nucleic acids, that is rarely accessed. Cold data storage can be the opposite of "hot storage," which refers to data that is frequently accessed. In some cases, storage includes hot storage, where data stored in nucleic acids is frequently accessed. In some cases, storage includes nucleic acid storage in liquid or solid phase. In some cases, the one or more constraints associated with storage include temperature (e.g., room temperature), humidity, pressure, salinity, pH, concentration, time, light, UV, O2, or any combination thereof. In some cases, sequencing includes next generation sequencing, parallel sequencing, single molecule real-time sequencing, nanopore sequencing, sequencing by synthesis, Sanger sequencing, or any combination thereof.
[0120] In some cases, the codebook is generated using a base order (e.g., [A,T,C,G], etc.). In some cases, the codebook includes codewords generated based on the base order. In some cases, the base order includes predefined base transitions. In some cases, these operations include applying an inner codec to encode the binary data as multiple polynucleotide sequences using methods provided herein.
[0121] In some cases, the synthesizer generates a plurality of polynucleotides comprising a plurality of polynucleotide sequences. In some cases, the synthesizer generates a plurality of polynucleotide sequences by synthesis, ligation, assembly, or any combination thereof. The method of synthesis can be a method provided herein (e.g., phosphoramidite, enzyme, etc.). In some cases, instructions from the computing system cause the synthesizer to further generate a plurality of polynucleotides. In some cases, the synthesizer is used to synthesize the polynucleotides. In some cases, the synthesizer is used to assemble the polynucleotides. In some cases, an alternative assembly module is used to assemble the polynucleotides. In some cases, the assembly includes overlap extension polymerase chain reaction (PCR), polymerase cycling assembly (PCA), sticky end ligation, BioBrick assembly, Golden Gate assembly, Gibson assembly, recombinase assembly, ligase cycling reaction, template-directed ligation, or any combination thereof. In some cases, the synthesizer and the assembly module are in fluid communication, in electronic communication, or a combination thereof.
[0122] The platform may further comprise a sequencer. The sequencer may include systems and devices for performing the sequencing methods provided herein or known in the art. In some cases, the sequencer sequences the plurality of polynucleotides to generate a plurality of output sequences. The method of sequencing may be a method provided herein. In some cases, the instructions further cause the computing system to receive the plurality of output sequences. In some cases, the computing system further performs an operation including decoding the plurality of output sequences. The computing system may decode the plurality of output sequences or any other polynucleotide sequence using a decoding scheme provided herein. In some cases, the plurality of output sequences are decoded using a greedy algorithm, a maximum likelihood (ML) algorithm, or a mixed greedy ML algorithm. In some cases, the plurality of output sequences are decoded at least in part based on calculating the probability of deletions, insertions, mutations, or any combination thereof. The platform may further comprise a storage unit. In some cases, the storage unit stores the plurality of polynucleotides. The polynucleotides may be stored in solution as a liquid or dried as a solid. The polynucleotides may be stored on a substrate, such as those provided herein. In some cases, instructions of the computing system cause the transfer of a plurality of polynucleotides between a synthesizer, a sequencer, a storage unit, or any combination thereof.
[0123] De Novo Polynucleotide Synthesis
[0124] Provided herein are systems and methods for synthesis of polynucleotides on a substrate. In some cases, a final oligonucleotide pool from an internal codec is synthesized. In some cases, a library comprising a plurality of polynucleotides from an encoding scheme is synthesized (1225) (as shown in FIG. 12). In some cases, the library comprising a plurality of polynucleotides from the encoding scheme encodes a pool of a plurality of pools. In some cases, the library comprising a plurality of polynucleotides from the encoding scheme encodes an index pool. In some cases, the method includes the use of electrochemical deprotection. In some cases, the substrate is a flexible substrate. In some cases, at least 10 10 , 10 11 , 10 12 , 10 13 , 10 14 , or 10 15 bases are synthesized per day. In some cases, at least 10x10 8 , 10x10 9 , 10x10 10 , 10x10 11 , or 10x10 12polynucleotides are synthesized. In some cases, each polynucleotide synthesized comprises at least 20, 50, 100, 200, 300, 400, or 500 nucleic acid bases. In some cases, these bases are synthesized with a total average error rate of less than about 1 per 100, 200, 300, 400, 500, 1000, 2000, 5000, 10000, 15000, or 20000 bases. In some cases, these error rates relate to at least 50%, 60%, 70%, 80%, 90%, 95%, 98%, 99%, 99.5%, or more of the synthesized polynucleotides. In some cases, at least 90%, 95%, 98%, 99%, 99.5%, or more of these synthesized polynucleotides do not differ from the predetermined sequence that they encode. In some cases, the error rate of polynucleotides synthesized on a substrate using the methods and systems described herein is less than about 1 in 200, less than about 1 in 1,000, less than about 1 in 2,000, less than about 1 in 3,000, or less than about 1 in 5,000. Each type of error rate includes mismatches, deletions, insertions, and / or substitutions to the polynucleotides synthesized on the substrate. The term "error rate" refers to a comparison of the total amount of polynucleotides synthesized to a given set of polynucleotide sequences. In some cases, the synthesis methods provided herein (e.g., inkjet-based synthesis methods) have better results than about 0.1% deletion rate, 0.1% mutation rate (or substitution rate), 0.05% insertion rate, or any combination thereof. For example, the synthesized polynucleotides may have a deletion rate of about 0.001%, 0.005%, 0.01%, 0.05%, 0.1% or less, a mutation rate of about 0.001%, 0.005%, 0.01%, 0.05%, or 0.1% or less, an insertion rate of about 0.001%, 0.005%, 0.01%, or 0.05% or less, or any combination thereof. In some cases, the synthesized polynucleotides disclosed herein comprise strands of 12-25 bases.In some cases, the strand comprises 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 or more bases.
[0125] Described herein are methods, systems, devices, and configurations in which chemical reactions used in polynucleotide synthesis are controlled using electrochemistry. Electrochemical reactions are optionally controlled by any energy source, such as light, heat, radiation, or electricity. For example, electrodes are used to control chemical reactions as all or part of discrete loci on a surface. In some cases, the electrodes are charged by applying a potential to the electrodes to control one or more chemical steps in polynucleotide synthesis. In some cases, the electrodes are addressable. Any number of chemical steps described herein are optionally controlled using one or more electrodes. Electrochemical reactions may include oxidation, reduction, acid / base chemical reactions, or other reactions controlled by electrodes. In some cases, the electrodes generate electrons or protons that are used as reagents for chemical transformations. In some cases, the electrodes directly generate reagents, such as acids. In some cases, the acids are protons. In some cases, the electrodes directly generate reagents, such as bases. Acids or bases are often used to cleave protecting groups or affect the kinetics of various polynucleotide synthesis reactions, for example, by adjusting the pH of the reaction solution. Electrochemically controlled polynucleotide synthesis reactions optionally include redox-active metals or other redox-active organic materials. In some cases, these electrochemical reactions use metal or organic catalysts. In some cases, acids are produced from the oxidation of quinones.
[0126] Control of chemical reactions is not limited to electrochemical generation of reagents, and chemical reactivity may be indirectly influenced through biophysical changes to the substrate or reagents via an electric field (or gradient) generated by an electrode. In some cases, the substrate includes, but is not limited to, a nucleic acid. In some cases, an electric field is generated that repels certain reagents or substrates away from an electrode or surface, or attracts them to the electrode or surface. Such an electric field is, in some cases, generated by application of a potential to one or more electrodes. For example, a negatively charged nucleic acid is repelled away from a negatively charged electrode surface. Such repulsion or attraction of polynucleotides or other reagents caused by the local electric field, in some cases, results in the movement of polynucleotides or other reagents into or out of the region of a synthesis device or structure. In some cases, the electrodes generate an electric field that repels polynucleotides away from a synthesis surface, structure, or device. In some cases, the electrodes generate an electric field that attracts polynucleotides to a synthesis surface, structure, or device. In some cases, protons are repelled away from a positively charged surface, limiting proton contact with the substrate and portions thereof. In some cases, repulsive or attractive forces are used to allow or block reagents or substrates from entering certain regions of the synthesis surface. In some cases, application of an electric field in the vicinity of one or both components prevents nucleoside monomers from contacting the polynucleotide chain. Such an arrangement allows for gating of certain reagents and can eliminate the need for protecting groups when the concentration or rate of contact between the reagent and / or substrate is controlled. In some cases, unprotected nucleoside monomers are used for polynucleotide synthesis. Alternatively, application of an electric field in the vicinity of one or both components promotes contact of the nucleoside monomers with the polynucleotide chain. Additionally, application of an electric field to the substrate can alter the reactivity and conformation of the substrate. In an exemplary application, an electric field generated by electrodes is used to prevent polynucleotides at adjacent loci from interacting. In some cases, the substrate is a polynucleotide, optionally attached to the surface. Application of an electric field in some cases alters the three-dimensional structure of the polynucleotide.Such modifications include the folding or unfolding of various structures such as helices, hairpins, loops, or other three-dimensional nucleic acid structures. Such modifications are useful for manipulating nucleic acids within wells, channels, or other structures. In some cases, an electric field is applied to the nucleic acid substrate to prevent secondary structures. In some cases, the electric field eliminates the need for linkers or attachment to a solid support during polynucleotide synthesis.
[0127] A suitable method for polynucleotide synthesis on a substrate of the present disclosure is phosphoramidite-based synthesis of DNA. In some cases, the reagents for phosphoramidite-based synthesis include any one or combination of nucleoside phosphoramidites, oxidizing agents, activating agents, or deblockers, or the solvent includes acetonitrile. In some cases, the phosphoramidite-based synthesis method includes the controlled addition of phosphoramidite building blocks, i.e., nucleoside phosphoramidites, to a growing polynucleotide chain in a coupling step that forms a phosphite triester bond between the phosphoramidite building block and the nucleoside bound to the substrate. In some cases, the nucleoside phosphoramidites are provided to an activated substrate. In some cases, the nucleoside phosphoramidites are provided to a substrate along with an activating agent. In some cases, 1.5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 100, or more times more nucleoside phosphoramidites are provided to the substrate than the nucleosides bound to the substrate. In some cases, the addition of the nucleoside phosphoramidites is performed in an anhydrous environment, for example, in anhydrous acetonitrile. After the addition and binding of the nucleoside phosphoramidites in the binding step, the substrate is optionally washed. In some cases, the binding step is repeated one or more additional times, optionally with a washing step between the addition of the nucleoside phosphoramidites to the substrate. In some cases, the polynucleotide synthesis method used herein includes one, two, three, or more sequential binding steps. Prior to conjugation, the nucleoside bound to the substrate is often deprotected by removal of a protecting group, which functions to prevent polymerization. The protecting group may include any chemical group that prevents the extension of the polynucleotide chain. In some cases, the protecting group is cleaved (or removed) in the presence of an acid. In some cases, the protecting group is cleaved in the presence of a base. In some cases, the protecting group is removed using electromagnetic radiation, such as light, heat, or other energy sources.In some cases, the protecting group is removed by an oxidation or reduction reaction. In some cases, the protecting group comprises a triarylmethyl group. In some cases, the protecting group comprises an aryl ether. In some cases, the protecting group comprises a disulfide. In some cases, the protecting group comprises an acid labile silane. In some cases, the protecting group comprises an acetal. In some cases, the protecting group comprises a ketal. In some cases, the protecting group comprises an enol ether. In some cases, the protecting group comprises a methoxybenzyl group. In some cases, the protecting group comprises an azide. In some cases, the protecting group is 4,4'-dimethoxytrityl (DMT). In some cases, the protecting group is tert-butyl carbonate. In some cases, the protecting group is a tert-butyl ester. In some cases, the protecting group comprises a base labile group.
[0128] After conjugation, phosphoramidite polynucleotide synthesis methods optionally include a capping step, in which the growing polynucleotide is treated with a capping agent. The capping step usually serves to block the 5'-OH group attached to the unreacted substrate after conjugation from further chain elongation, preventing the formation of polynucleotides with internal base deletions. In addition, phosphoramidites activated with 1H-tetrazole often react slightly with the O6 position of guanosine. Without being bound by theory, this by-product may be depurinated via O6-N7 migration upon oxidation with I2 / water. The apurinic site may be cleaved during the final deprotection of the polynucleotide, thus reducing the yield of the full-length product. The O6 modification may be removed by treatment with a capping reagent prior to oxidation with I2 / water. In some cases, including a capping step during polynucleotide synthesis reduces the error rate compared to synthesis without capping. By way of example, the capping step may involve treating the substrate-bound polynucleotides with a mixture of acetic anhydride and 1-methylimidazole. After the capping step, the substrate is optionally washed.
[0129] After addition of the nucleoside phosphoramidites, and optionally after capping and one or more washing steps, the substrates described herein contain attached growing nucleic acids that can be oxidized. The oxidation step oxidizes the phosphite triester to a tetracoordinate phosphate triester that is the protected precursor of the naturally occurring phosphate diester internucleoside linkage. In some cases, the phosphite triester is oxidized electrochemically. In some cases, oxidation of the growing polynucleotide is achieved by treatment with iodine and water, optionally in the presence of a weak base such as pyridine, lutidine, or collidine. Oxidation may be performed under anhydrous conditions using tert-butyl hydroperoxide or (1S)-(+)-(10-camphorsulfonyl)-oxaziridine (CSO). In some methods, a capping step is performed after oxidation. The second capping step allows for drying of the substrate, as residual water from oxidation that may persist may inhibit subsequent conjugation. After oxidation, the substrate and growing polynucleotides are optionally washed. In some cases, the oxidation step is replaced by a sulfurization step to obtain polynucleotide phosphorothioates, and an optional capping step can be performed after sulfurization. Many reagents are capable of efficient sulfur transfer, including but not limited to 3-(dimethylaminomethylidene)amino)-3H-1,2,4-dithiazole-3-thione, DDTT, 3H-1,2-benzodithiol-3-one 1,1-dioxide (also known as Bocage reagent), and N,N,N',N'-tetraethylthiuram disulfide (TETD).
[0130] For subsequent cycles of nucleoside incorporation through conjugation to occur, the protected 5' end (or 3' end, if synthesis is performed in the 5' to 3' direction) of the growing polynucleotide bound to the substrate is removed to allow the primary hydroxyl group to react with the next nucleoside phosphoramidite. In some cases, the protecting group is DMT and deblocking occurs with trichloroacetic acid in dichloromethane. In some cases, the protecting group is DMT and deblocking occurs with electrochemically generated protons. Performing the detritylation for a long time or using a stronger acid solution than recommended may lead to increased depurination of the polynucleotide bound to the solid support, thus reducing the yield of the desired full-length product. The methods and compositions described herein provide controlled deblocking conditions that limit undesired depurination reactions. In some cases, after deblocking, the substrate-bound polynucleotide is washed. In some cases, efficient washing after deblocking contributes to the synthesized polynucleotide having a low error rate.
[0131] The methods for synthesis of polynucleotides on a substrate described herein may include a repeated sequence of steps: application of a protected monomer to the surface of a feature of the substrate for linking either to the surface, a linker, or a previously deprotected monomer, deprotection of the applied monomer to allow reaction with the subsequently applied protected monomer, and application of another protected monomer for linking. One or more intermediate steps include oxidation and / or sulfurization. In some cases, one or all of the steps are preceded or followed by one or more washing steps.
[0132] The method for synthesis of polynucleotides on a substrate described herein may include an oxidation step.For example, the method includes the application of a protected monomer to the surface of a feature of a substrate to link with either the surface, a linker, or a monomer that has already been deprotected, the deprotection of the applied monomer to allow it to react with the subsequently applied protected monomer, the application of another protected monomer for linking, and the repetition of a series of steps of oxidation and / or sulfurization.In some cases, one or all of the steps are preceded or followed by one or more washing steps.
[0133] The methods for synthesis of polynucleotides on a substrate described herein may further include a repeated sequence of steps of application of a protected monomer to the surface of a feature of the substrate for linking with either the surface, a linker, or an already deprotected monomer, deprotection of the applied monomer to allow it to react with the subsequently applied protected monomer, and oxidation and / or sulfurization. In some cases, one or all of the steps are preceded or followed by one or more washing steps.
[0134] The methods for synthesis of polynucleotides on a substrate described herein may further include repeating a series of steps: application of a protected monomer to the surface of a feature of the substrate for linking with either the surface, a linker, or an already deprotected monomer, and oxidation and / or sulfurization. In some cases, one or all of the steps are preceded or followed by one or more washing steps.
[0135] The methods for synthesis of polynucleotides on a substrate described herein may further include a repeated sequence of steps of application of a protected monomer to the surface of a feature of the substrate for linking with either the surface, a linker, or an already deprotected monomer, deprotection of the applied monomer to allow it to react with the subsequently applied protected monomer, and oxidation and / or sulfurization. In some cases, one or all of the steps are preceded or followed by one or more washing steps.
[0136] In some cases, polynucleotides are synthesized using photolabile protecting groups, and hydroxyl groups generated on the surface are blocked by the photolabile protecting groups. When the surface is exposed to UV light, such as through a photolithographic mask, a pattern of free hydroxyl groups can be generated on the surface. These hydroxyl groups can react with photoprotected nucleoside phosphoramidites according to the phosphoramidite chemistry. A second photolithographic mask can be applied and the surface exposed to UV light to generate a second pattern of hydroxyl groups, which can subsequently be coupled with 5' photoprotected nucleoside phosphoramidites. Similarly, patterns can be generated and oligomer chains can be extended. Without being bound by theory, the lability of the photocleavable groups depends on the wavelength and polarity of the solvent used, and the rate of photocleavage can be affected by the duration of exposure and the intensity of the light. This method can take advantage of multiple factors, such as the accuracy of the mask alignment, the efficiency of removal of the photoprotecting groups, and the yield of the phosphoramidite coupling step. Furthermore, light leakage to unintended neighboring sites can be minimized.The density of synthesized oligomers per spot can be monitored by adjusting the loading of leader nucleosides on the synthesis surface.
[0137] The surface of the substrate described herein that provides support for polynucleotide synthesis may be chemically modified to allow the synthesized polynucleotide chain to be cleaved from the surface. In some cases, the polynucleotide chain is cleaved at the same time as the polynucleotide is deprotected. In some cases, the polynucleotide chain is cleaved after the polynucleotide is deprotected. In an exemplary manner, a trialkoxysilyl amine such as (CH3CHO)3Si-(CH2)2-NH2 is reacted with the SiOH groups on the surface of the substrate, followed by reaction with succinic anhydride with the amine to create an amide bond and a free OH that supports the growth of the nucleic acid chain. Cleavage includes gas cleavage using ammonia or methylamine. In some cases, cleavage includes linker cleavage using an electrogenerated reagent such as acid or base. In some cases, the polynucleotides are assembled into larger nucleic acids that are sequenced and decoded to extract the stored information after being released from the surface.
[0138] In some cases, the synthesis includes enzymatic synthesis. The enzymatic synthesis may be performed on a surface as described herein. In some cases, the enzymatic synthesis includes a chain-extending enzyme. In some cases, the chain-extending enzyme is a polymerase. In some cases, the polymerase is a template-independent polymerase. In some cases, the polymerase is an RNA polymerase or a DNA polymerase. In some cases, the polymerase is a DNA polymerase. In some cases, the enzymatic DNA synthesis uses water as a solvent and the reagent is the enzyme terminal deoxynucleotidyl transferase (TdT) or a deblocker. In some cases, the enzymatic synthesis of DNA uses a template-independent DNA polymerase, i.e., terminal deoxynucleotidyl transferase (TdT), a protein that has evolved to rapidly catalyze the joining of naturally occurring dNTPs. Because TdT adds nucleotides indiscriminately, uncontrolled synthesis can be stopped from continuing by a variety of techniques, such as tethering TdT, creating mutant enzymes, and using nucleotides that contain reversible termini to prevent chain extension. TdT activity is maximized at about 37°C and performs the enzymatic reaction in an aqueous environment. Examples of DNA polymerases include, but are not limited to, polA, polB, polC, polD, polY, polX, reverse transcriptases (RT), and high-fidelity polymerases. In some cases, the polymerase is a modified polymerase.In some embodiments, the polymerase is Φ29, B103, GA-1, PZA, Φ15, BS32, M2Y, Nf, G1, Cp-1, PRD1, PZE, SF5, Cp-5, Cp-7, PR4, PR5, PR722, L17, ThermoSequenase®, 9°Nm™, Therminator™ DNA polymerase, Tne, Tma, TfI, Tth, TIi, Stoffel fragment, Vent™ and Deep Vent™ DNA polymerase, KOD DNA polymerase, Tgo, JDF-3, Pfu, Taq, T7 DNA polymerase, T7 RNA polymerase, PGB-D, UlTma DNA polymerase, E. coli DNA polymerase I, E. coli DNA polymerase III, Archaeal DP1I / DP2 DNA polymerase II, 9°N DNA polymerase, Taq DNA polymerases include Phusion® DNA polymerase, Pfu DNA polymerase, SP6 RNA polymerase, RB69 DNA polymerase, Avian Myeloblastosis Virus (AMV) reverse transcriptase, Moloney Murine Leukemia Virus (MMLV) reverse transcriptase, SuperScript® II reverse transcriptase, and SuperScript® III reverse transcriptase. In some embodiments, the polymerase is DNA polymerase 1-Klenow fragment, Vent polymerase, Phusion® DNA polymerase, KOD DNA polymerase, Taq polymerase, T7 DNA polymerase, T7 RNA polymerase, Therminator™ DNA polymerase, POLB polymerase, SP6 RNA polymerase, E. coli DNA polymerase I, E. coli DNA polymerase III, avian myeloblastosis virus (AMV) reverse transcriptase, Moloney murine leukemia virus (MMLV) reverse transcriptase, SuperScript® II reverse transcriptase, or SuperScript® III reverse transcriptase.The polymerase molecule used in the methods described herein can be polymerase theta, DNA polymerase, or any enzyme capable of extending a nucleotide chain. In some embodiments, the polymerase is tri29. In some embodiments, the polymerase is a protein that has a pocket that functions around a terminal phosphate group, e.g., a triphosphate group.
[0139] In some embodiments, the enzymatic synthesis uses TdT with 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 amino acid mutations to synthesize a defined polynucleotide. In some embodiments, the described method uses TdT with 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 amino acid mutations to surface-accessible amino acid residues. In some embodiments, the TdT is a variant of TdT. In some embodiments, the variant of TdT includes a cysteine mutation (e.g., NTT-1). In some embodiments, the variant of TdT is NTT-1, NTT-2, or NTT-3. In some cases, the variant of TdT includes at least 70%, 80%, 90%, or 95% sequence identity to wild-type TdT. In some embodiments, the enzymatic synthesis can use polymerase theta with 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 amino acid mutations to synthesize a defined polynucleotide. In some embodiments, the enzymatic synthesis can use a polymerase theta having 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10 amino acid mutations to surface-accessible amino acid residues. In some embodiments, the polymerase theta is a variant of polymerase theta. In some cases, the variant of polymerase theta comprises at least 70%, 80%, 90%, or 95% sequence identity to wild-type polymerase theta. In some embodiments, the polymerase theta is encoded by POLQ.
[0140] The enzymes described herein (e.g., TdT), in some embodiments, comprise one or more unnatural amino acids. In some cases, the unnatural amino acid comprises a lysine analog, an aromatic side chain, an azide group, an alkyne group, or an aldehyde or ketone group. In some cases, the unnatural amino acid does not comprise an aromatic side chain. In some embodiments, the unnatural amino acid is selected from the group consisting of N6-azidoethoxy-carbonyl-L-lysine (AzK), N6-propargylethoxy-carbonyl-L-lysine (PraK), N6-(propargyloxy)-carbonyl-L-lysine (PrK), p-azido-phenylalanine (pAzF), BCN-L-lysine, norbornene-lysine, TCO-lysine, methyltetrazine-lysine, allyloxycarbonyl-lysine, 2-amino-8-oxononanoic acid, 2-Amino-8-oxooctanoic acid, p-acetyl-L-phenylalanine, p-azidomethyl-L-phenylalanine (pAMF), p-iodo-L-phenylalanine, m-acetylphenylalanine, 2-amino-8-oxononanoic acid, p-propargyloxyphenylalanine, p-propargyl-phenylalanine, 3-methyl-phenylalanine, L-dopa, fluorinated phenylalanine, isopropyl-L-phenylalanine, p-azido- L-Phenylalanine, p-Acyl-L-Phenylalanine, p-Benzoyl-L-Phenylalanine, p-Bromophenylalanine, p-Amino-L-Phenylalanine, Isopropyl-L-Phenylalanine, O-Allyltyrosine, O-Methyl-L-Tyrosine, O-4-Allyl-L-Tyrosine, 4-Propyl-L-Tyrosine, Phosphonotyrosine, Tri-O-Acetyl-GlcNAcp-Serine, L-Phosphoserine, Phosphonoserine, L-3-(2-Naphthyl)-2-Phenylalanine, L-Phosphoserine, L-Phosphonoserine, L-Phosphonoserine ... In some embodiments, the enzyme described herein is selected from N6-(((2-azidobenzyl)oxy)carbonyl)-L-lysine, N6-(((3-azidobenzyl)oxy)carbonyl)-L-lysine, and N6-(((4-azidobenzyl)oxy)carbonyl)-L-lysine. In some embodiments, the enzyme described herein is fused to one other enzyme.For example, TdT is fused to another enzyme, such as a helicase.
[0141] A variety of linkers may be used to attach an enzyme or other nucleic acid (e.g., polymerase) binding moiety to one or more base pairing moieties, such as modified nucleotides, during enzymatic synthesis of polynucleotides. Attachment of a nucleotide or other base pairing moiety to a linker may be accomplished by any means known in the art of chemical conjugation. For example, nucleotides containing base modifications that add free amine groups are contemplated for use in attachment to linkers, as described herein. For example, primary amines may be linked to bases in such a way that they can be reacted with heterobifunctional polyethylene glycol (PEG) linkers to create nucleotides containing variable length PEG linkers that still adequately bind to enzyme active sites. Examples of such amine-containing nucleotides include 5-propargylamino-dNTPs, 5-propargylamino-NTPs, amino-allyl-dNTPs, and amino-allyl-NTPs. In some embodiments, the amine-containing nucleotides are suitable for attachment to PEG-based linkers. The length of the PEG linker may vary, for example, from 1 to 1000, 1 to 500, 1 to 11, 1 to 100, 1 to 50, or 1 to 10 subunits. Non-limiting examples of other suitable linkers may include, but are not limited to, poly-T and poly-A oligonucleotide chains (e.g., ranging in length from about 1 base to about 1,000 bases), peptide linkers (e.g., polyglycine or polyalanine ranging in length from about 1 residue to about 1,000 residues), or carbon chain linkers (e.g., C6, C12, C18, C24, etc.). In some embodiments, the linker comprises an N-hydroxysuccinimide ester (NHS) group. In some embodiments, the linker comprises a maleimide group. Linkage of nucleotides can be achieved by disulfide formation (forming an easily cleavable linkage), amide formation, ester formation, protein-ligand linkages (e.g., biotin-streptavidin linkages), alkylation (e.g., using substituted iodoacetamide reagents), or by formation of adducts using aldehydes and amines or hydrazines.In some embodiments, the linker comprises, for example, a maltose group, a biotin group, an O2-benzylcytosine group or an O2-benzylcytosine derivative, an O6-benzylguanine group, or an O6-benzylguanine derivative. The length of the linker may vary depending on the type of nucleotide (or other base pair moiety) and enzyme (or other nucleic acid binding moiety). In some cases, the linker for connecting the nucleotide to the enzyme may be about 0.1 to 1,000 nm, 0.5 to 500 nm, 0.5 to 400 nm, 0.5 to 300 nm, 0.5 to 200 nm, 0.5 to 100 nm, 0.5 to 50 nm, 0.6 to 500 nm, 0.6 to 400 nm, 0.6 to 300 nm, 0.6 to 200 nm, 0.6 to 100 nm, 0.6 to 50 nm, 1 to 50 nm, or 1 to 50 nm. The chemical linker may have a persistence length of 0 nm, 1-400 nm, 1-300 nm, 1-200 nm, 1-100 nm, 1.5-500 nm, 1.5-400 nm, 1.5-300 nm, 1.5-200 nm, 1.5-100 nm, 1.5-50 nm, 1-50 nm, 5-500 nm, 5-400 nm, 5-300 nm, 5-200 nm, 5-100 nm, or 5-50 nm. In some embodiments, the chemical linker is an acid cleavable linker. In some embodiments, the chemical linker is an acid cleavable linker. In some embodiments, the chemical linker is a photocleavable linker. In some embodiments, the chemical linker is selected from the group consisting of a silyl linker, an alkyl linker, a polyether linker, a polysulfonyl linker, a polysulfoxide linker, and any combination thereof. In some embodiments, the linker is cleaved by an enzyme. In some embodiments, the enzyme is a protease, esterase, glycosylase, or peptidase. In some embodiments, the cleavage enzyme cleaves a bond in the polymerase. In some embodiments, the cleavage enzyme cleaves linked nucleosides directly.
[0142] The surfaces described herein may be reused to support additional cycles of polynucleotide synthesis after cleavage of the polynucleotide. For example, the linker may be reused without additional treatment / chemical modification. In some cases, the linker is non-covalently attached to the substrate surface or the polynucleotide. In some embodiments, the linker remains attached to the polynucleotide after cleavage from the surface. The linker, in some embodiments, includes a reversible covalent bond such as an ester, amide, ketal, beta-substituted ketone, heterocycle, or other group that can be reversibly cleaved. Such reversible cleavage reactions are, in some cases, controlled by the addition or removal of a reagent or by an electrochemical process controlled by an electrode. Optionally, the chemical linker or surface-bound chemical group is regenerated after multiple cycles to restore reactivity and eliminate unwanted by-product formation on such linker or surface-bound chemical group.
[0143] Devices for Polynucleotide Storage
[0144] The synthesized library of polynucleotides can be stored in the device. In some cases, the device comprises a polynucleotide data storage system. In some cases, the libraries encoding pools (e.g., multiple pools or index pools) are stored in compartments. In some cases, the compartments include, by way of non-limiting example, active surfaces (e.g., loci), tubes, or any other physical storage solution. In some cases, the compartments are marked with labels. In some cases, the labels include barcodes, names (e.g., customer names, sample types, etc.), timestamps, lists of stored objects, or any combination thereof.
[0145] In some cases, the device for storing digital information in DNA comprises one or more compartments. In some cases, each of the one or more compartments comprises a library comprising a plurality of polynucleotides. In some examples, the library encodes a pool (e.g., a pool of a plurality of pools described herein) comprising digital information corresponding to one or more objects. In some examples, the pool comprises a pool descriptor, one or more pool items, and an end pool descriptor, as described herein. In some examples, the pool comprises about 1 GB to about 1 TB of digital information, as described herein above.
[0146] The compartment or structure for storing a plurality of polynucleotides may be of any shape or size. In some cases, the compartment is substantially spherical, tubular (FIG. 17A), ovoid, conical, cuboid, rectangular, cylindrical, wedge-shaped, hexagonal prism, square-based pyramid, triangular-based pyramid, triangular prism, toroid, hemisphere, helical, heart-shaped, or other shape. In some cases, the shape is configured to allow the structure to be opened or closed to the external environment. In some cases, such closure is facilitated by welding, seals, septa, or other mechanisms for restricting the movement of gas or other substances into or out of the structure. In some cases, the compartment includes holes, slots, septa, valves, or ports for adding or removing nucleic acids, fluids, gases, or other materials into or out of the structure. In some cases, the structure for storing a plurality of polynucleotides comprises a cap and a body that are flush welded together (FIG. 17B). In some cases, the compartment for storing a plurality of polynucleotides comprises a removable screw cap (FIG. 17C). In some cases, the structure comprises a septum (FIG. 17D). In some cases, the structure comprises two rounded, tablet-like halves that form a seal when one half is inserted into the other (FIG. 17E). In some cases, the structure comprises a substantially flat disk container with a sealable lid (FIG. 17F). In some cases, the compartment comprises a box with an optionally attached lid (FIG. 17G). In some cases, the shape is a cylinder or disk. In some cases, a cylindrical or disk shape is preferred for automated handling and / or filling of the compartment.
[0147] In some cases, each of the one or more compartments comprises a medium for storing a plurality of polynucleotides. In some cases, the medium comprises a solid, liquid, gas, or any combination thereof. In some cases, the medium comprises a salt solution. In some cases, the molar ratio of salt to DNA may range from about 20:1 to about 2:1. In some cases, the molar ratio depends on the molecular weight of the salt used and the relative amount of salt and DNA combined. In some cases, the molar ratio is calculated between the cations of the salt and the negatively charged phosphate groups of the DNA. In some cases, the salt solution comprises a molar ratio of the cations of the salt to the phosphate groups in the DNA of less than 20:1. In some cases, the salt solution is dried to create a dry product. In some cases, the salt solution comprises, by way of non-limiting example, calcium chloride, calcium nitrate, calcium carbonate, calcium phosphate, magnesium chloride, magnesium sulfate, magnesium nitrate, magnesium carbonate, lanthanum chloride, lanthanum nitrate, lanthanum carbonate, lanthanum bromide, or mixtures thereof. In some cases, the salt solution includes barium(II) chloride dihydrate, calcium chloride dihydrate, anhydrous copper(II) chloride, lanthanum trichloride, magnesium dichloride hexahydrate, sodium chloride, or strontium chloride hexahydrate. In some cases, the concentration of the salt solution is about 0.01 nM to about 0.1 nM.
[0148] In some cases, each of the one or more compartments are in communication. In some cases, each of the one or more compartments are in communication over the medium. In some cases, each of the one or more compartments are not in communication. In some cases, each of the one or more compartments are not in communication over the medium.
[0149] In some cases, the device further comprises one or more second compartments. In some cases, each of the one or more second compartments comprises a second library. In some cases, the second library encodes an index pool, such as an index pool described herein. In some cases, the one or more second compartments comprise a medium as described herein above. In some cases, the one or more second compartments comprise the same medium as the one or more compartments. In some cases, the one or more second compartments include a different medium than the one or more compartments. In some cases, each of the one or more second compartments communicates (e.g., via a medium) with each other and / or with the one or more compartments. In some cases, each of the one or more second compartments does not communicate with each other and / or with the one or more compartments.
[0150] In some cases, the device further comprises a solid support comprising a surface. Thus, described herein are such solid support-based devices for nucleic acid synthesis and storage, the solid support having various dimensions. In some cases, the size of the solid support is about 40-120 mm by about 25-100 mm. In some cases, the size of the solid support is about 80 mm by about 50 mm. In some cases, the width of the solid support is at least or about 10 mm, 20 mm, 40 mm, 60 mm, 80 mm, 100 mm, 150 mm, 200 mm, 300 mm, 400 mm, 500 mm, or more than 500 mm. In some cases, the height ... solid support is at least or about 100 mm. 2 , 200mm 2 , 500mm 2 , 1,000mm 2 , 2,000mm 2, 4,500mm 2 , 5,000mm 2 , 10,000mm 2 , 12,000mm 2 , 15,000mm 2 , 20,000mm 2 , 30,000mm 2 , 40,000mm 2 , 50,000mm 2 , or more. In some cases, the thickness of the solid support is about 50 mm to about 2000 mm, about 50 mm to about 1000 mm, about 100 mm to about 1000 mm, about 200 mm to about 1000 mm, or about 250 mm to about 1000 mm. Non-limiting exemplary thicknesses of the solid support include 275 mm, 375 mm, 525 mm, 625 mm, 675 mm, 725 mm, 775 mm, and 925 mm. In some cases, the thickness of the solid support is at least or about 0.5 mm, 1.0 mm, 1.5 mm, 2.0 mm, 2.5 mm, 3.0 mm, 3.5 mm, 4.0 mm, or greater than 4.0 mm.
[0151] Described herein are devices in which two or more solid supports are assembled. In some cases, the solid supports are interfaced together on a larger unit. The interface may include exchange of fluids, electrical signals, or other media of exchange between the solid supports. The unit is capable of interfacing with any number of servers, computers, or network devices. For example, multiple solid supports are integrated into a rack unit, which is conveniently inserted into or removed from a server rack. The rack unit may comprise any number of solid supports. In some cases, the rack unit comprises at least 1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000, 10,000, 20,000, 50,000, 100,000, or more than 100,000 solid supports. In some cases, two or more solid supports are not interfaced with each other. Nucleic acids present on the solid supports (and the information stored in those nucleic acids) may be accessed from the rack unit. Accessing includes removal of the polynucleotides from the solid supports, direct analysis of the polynucleotides on the solid supports, or any other method that allows the information stored in the nucleic acids to be manipulated or identified. The information, in some cases, is accessed from multiple racks, a single rack, a single solid support within a rack, a portion of a solid support, or a single locus on a solid support. In various cases, accessing includes interfacing the nucleic acids with additional devices, such as a mass spectrometer, HPLC, sequencing equipment, PCR thermocycler, or other devices for manipulating nucleic acids. Accessing the nucleic acid information, in some cases, is achieved by cleavage of the polynucleotides from all or a portion of the solid support. Cleavage, in some cases, includes exposure to chemical reagents (ammonia or other reagents), electrical potential, radiation, heat, light, sound, or other forms of energy capable of manipulating chemical bonds. In some cases, cleavage occurs by charging one or more electrodes in the vicinity of the polynucleotides. In some cases, electromagnetic radiation in the form of ultraviolet light is used to cleave the polynucleotides.In some cases, a lamp is used to cleave the polynucleotides and a mask mediates the location of the UV light exposure to the surface. In some cases, a laser is used to cleave the polynucleotides and the open / closed state of a shutter controls the UV light exposure to the surface. In some cases, access to the nucleic acid information (including removal / addition of racks, solid supports, reagents, nucleic acids, or other components) is fully automated.
[0152] The solid support as described herein comprises an activation region. In some cases, the activation region comprises a region or locus for nucleic acid synthesis. In some cases, the activation region comprises a region or locus for nucleic acid storage. In some cases, the region or locus comprises one or more compartments. In some cases, the region or locus comprises a second one or more compartments. In some cases, the region is addressable. In some cases, the region is addressable via an electrode.
[0153] The activation area includes a variety of dimensions. For example, the activation area has dimensions of about 1 mm to about 50 mm by about 1 mm to about 50 mm. In some cases, the activation area includes a width of at least about 0.5, 1, 1.5, 2, 2.5, 3, 5, 5, 10, 12, 14, 16, 18, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80 mm, or more than 80 mm. In some cases, the activation area includes a height of at least about 0.5, 1, 1.5, 2, 2.5, 3, 5, 5, 10, 12, 14, 16, 18, 20, 25, 30, 35, 40, 45, 50, 60, 70, 80 mm, or more than 80 mm.
[0154] Described herein are devices for solid support-based nucleic acid synthesis and storage, where the solid support has a plurality of sites (e.g., spots) or locations for synthesis or storage. In some cases, the solid support includes up to or about 10,000 x 10,000 locations within an area. In some cases, the solid support includes about 1000-20,000 x about 1000-20,000 locations within an area. In some cases, the solid support includes at least or about 10, 30, 50, 75, 100, 200, 300, 400, 500, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10,000, 12,000, 14,000, 16,000, 18,000, 20, 000 locations by at least or about 10, 30, 50, 75, 100, 200, 300, 400, 500, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000, 10,000, 12,000, 14,000, 16,000, 18,000, 20,000 locations. In some cases, the area is at most 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, or 2.0 square inches. In some cases, the solid support comprises loci having a pitch of at least or about 0.1, 0.2, 0.25, 0.3, 0.4, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5, 6, 7, 8, 9, 10 um, or greater than 10 um. In some cases, the solid support comprises loci having a pitch of about 5 um. In some cases, the solid support comprises loci having a pitch of about 2 um. In some cases, the solid support comprises loci having a pitch of about 1 um. In some cases, the solid support comprises loci having a pitch of about 0.2 um. In some cases, the solid support comprises loci having a pitch of about 0.2 um to about 10 um, about 0.2 to about 8 um, about 0.5 to about 10 um, about 1 um to about 10 um, about 2 um to about 8 um, about 3 um to about 5 um, about 1 um to about 3 um, or about 0.5 um to about 3 um. In some cases, the solid support comprises loci having a pitch of about 0.1 um to about 3 um.
[0155] The solid support for nucleic acid synthesis or storage as described herein comprises a large capacity for data storage. For example, the capacity of the solid support is at least or about 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 megabytes, or more than 1000 megabytes. In some cases, the capacity of the solid support is about 1-10, 1-50, 1-100, 1-500, 1-1000, 10-50, 10-100, 10-500, 10-1000, 50-100, 50-500, 50-1000, 100-500, 100-1000, 200-500, 200-1000, 500-1000, or about 800-1000 megabytes. For example, the capacity of the solid support is at least or about 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 gigabytes, or more than 1000 gigabytes. In some cases, the capacity of the solid support is about 1-10, 1-50, 1-100, 1-500, 1-1000, 10-50, 10-100, 10-500, 10-1000, 50-100, 50-500, 50-1000, 100-500, 100-1000, 200-500, 200-1000, 500-1000, or about 800-1000 gigabytes. For example, the capacity of the solid support is at least or about 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 terabytes or more. In some cases, the capacity of the solid support is about 1-10, 1-50, 1-100, 1-500, 1-1000, 10-50, 10-100, 10-500, 10-1000, 50-100, 50-500, 50-1000, 100-500, 100-1000, 200-500, 200-1000, 500-1000, or about 800-1000 terabytes.For example, the capacity of the solid support is at least or about 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 petabytes, or greater than 1000 petabytes. In some cases, the capacity of the solid support is about 1-10, 1-50, 1-100, 1-500, 1-1000, 10-50, 10-100, 10-500, 10-1000, 50-100, 50-500, 50-1000, 100-500, 100-1000, 200-500, 200-1000, 500-1000, or about 800-1000 petabytes. In some cases, the capacity of the solid support is about 100 petabytes.
[0156] In some cases, the data is stored as an array of packets as droplets. In some cases, the array of packets is an addressable packet. In some cases, the packets are addressable using electrodes. In some cases, the data is stored as an array of packets as droplets on a spot. In some cases, the data is stored as an array of packets as dry wells. In some cases, the array comprises at least or about 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200 gigabytes, or more than 200 gigabytes of data. In some cases, the array comprises at least or about 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 50, 100, 200 terabytes, or more than 200 terabytes of data. In some cases, the item of information is stored in the background of the data. For example, the item of information encodes for about 10 to about 100 megabytes of data and is stored in 1 petabyte of background data. In some cases, an item of information encodes at least or approximately 1, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 150, 200, 300, 400, 500 megabytes, or more than 500 megabytes of data and is stored with 1, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 150, 200, 300, 400, 500 petabytes, or more than 500 petabytes of background data.
[0157] Provided herein is a device for solid support-based nucleic acid synthesis and storage, in which polynucleotides are collected in a packet as one or more droplets after synthesis.In some cases, polynucleotides are collected in a packet as one or more droplets and stored.In some cases, the number of droplets is at least or about 1, 10, 20, 50, 100, 200, 300, 500, 1000, 2500, 5000, 75000, 10,000, 25,000, 50,000, 75,000, 100,000, 1 million, 5 million, 10 million, 25 million, 50 million, 75 million, 100 million, 250 million, 500 million, 750 million, or more than 750 million. In some cases, the droplet volume includes diameters of 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100 um, or greater than 100 um (micrometers). In some cases, the droplet volume includes diameters of 1-100 um, 10-90 um, 20-80 um, 30-70 um, or 40-50 um.
[0158] In some cases, the polynucleotides collected in the packet include similar sequences. In some cases, the polynucleotides further include non-identical sequences that are used as tags or barcodes. For example, the non-identical sequences are used to index the polynucleotides stored on the solid support and to later search for specific polynucleotides based on the non-identical sequences. Exemplary tag or barcode lengths include, but are not limited to, barcode sequences, including lengths of about 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, or more bases. In some cases, the tag or barcode includes a length of at least or about 10, 50, 75, 100, 200, 300, 400 base pairs, or more than 400 base pairs.
[0159] Provided herein is a device for solid support-based nucleic acid synthesis and storage, in which polynucleotides are collected into packets that contain redundancy. For example, the packets contain about 100 to about 1000 copies of each polynucleotide. In some cases, the packets contain at least or about 50, 75, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1400, 1600, 1800, 2000 copies, or more than 2000 copies of each polynucleotide. In some cases, the packets contain about 1000-fold to about 5000-fold redundancy of synthesis. The redundancy of synthesis is, in some cases, at least or about 500-fold, 1000-fold, 1500-fold, 2000-fold, 2500-fold, 3000-fold, 3500-fold, 4000-fold, 5000-fold, 6000-fold, 7000-fold, 8000-fold, or more than 8000-fold. The polynucleotides synthesized using the solid support-based method as described herein include a variety of lengths. In some cases, the polynucleotides are synthesized and further stored on a solid support. In some cases, the length of the polynucleotide is about 100 to about 1000 bases. In some cases, a polynucleotide comprises at least or about 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375, 400, 425, 450, 475, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000 bases in length or more than 2000 bases.
[0160] Sequencing
[0161] Polynucleotides are extracted and / or amplified from the surface on which they are synthesized or stored. After extraction and / or amplification of polynucleotides from the surface of the structure, an appropriate sequencing technique may be used to sequence the polynucleotides. In some cases, DNA sequences are read on the substrate or within the features of the structure. In some cases, polynucleotides stored on the substrate are extracted and optionally assembled into longer nucleic acids, and then sequenced. Polynucleotides may be extracted from the substrate using the systems and methods described herein.
[0162] Polynucleotides synthesized and stored in the structures described herein encode data that can be retrieved or interpreted by reading the sequence of the synthesized polynucleotide and converting the sequence into a computer readable representation (e.g., a string of symbols such as binary code). In some cases, the sequence may require assembly, and the assembly step may need to be a polynucleotide sequence step or a digital sequence step.
[0163] Provided herein is a detection system comprising a device capable of sequencing stored polynucleotides directly on the structure and / or after removal from a primary structure (e.g., synthesis structure, storage structure, etc.). When the structure is an open reel tape of flexible material, the detection system comprises a device for holding and advancing the structure through a detection location, and a detector positioned near the detection location to detect a signal resulting from a section of the tape when the section is at the detection location. In some cases, the signal indicates the presence of the polynucleotide. In some cases, the signal indicates a sequence of the polynucleotide (e.g., a fluorescent signal). In some cases, the information encoded within the polynucleotide on the continuous tape is read by a computer as the tape is continuously carried past a detector operably connected to the computer. In some cases, the detection system comprises a computer system comprising a polynucleotide sequencing device, a database for storage and retrieval of data related to the polynucleotide sequence, software for converting the DNA code of the polynucleotide sequence into a string of symbols such as a binary code, a computer for reading the binary code, or any combination thereof.
[0164] Provided herein are sequencing systems that can be integrated into the devices described herein. Various methods of sequencing are well known in the art and include "base calling," in which the identity of a base in a polynucleotide of interest is identified. In some cases, polynucleotides synthesized using the methods, devices, configurations, and systems described herein are sequenced after cleavage from the synthesis surface. In some cases, sequencing occurs during or simultaneously with polynucleotide synthesis, and base calling occurs immediately or immediately prior to the extension of a nucleoside monomer into a growing polynucleotide chain. Methods of base calling include measuring a current / voltage generated by the polymerase-catalyzed addition of a base to a template chain. In some cases, the synthesis surface includes an enzyme, such as a polymerase. In some cases, such an enzyme is tethered to an electrode or synthesis surface. In some cases, the enzyme includes a terminal deoxynucleotidyl transferase or a variant thereof.
[0165] In some cases, the polynucleotides cleaved from the substrate surface or the amplified polynucleotides can be processed by techniques such as conventional sequencing or massively parallel sequencing. Sequencing can be performed by a variety of methods available in the art, such as methods that include incorporating one or more strand-terminal nucleotides, such as Sanger sequencing, which can be performed by Applied Biosystems' SeqStudio® Genetic Analyzer. In other embodiments, sequencing can include performing Next Generation Sequencing (NGS) methods, such as primer extension followed by semiconductor-based detection (e.g., Thermo Fisher Scientific's Ion Torrent™ system) or fluorescence detection (e.g., Illumina system).
[0166] Method and system for information retrieval - Patents.com
[0167] Provided herein are methods and systems for retrieving information (e.g., digital information). In some cases, provided herein are methods and systems for decoding. In some cases, the methods and systems decode a polynucleotide sequence (e.g., a polynucleotide, an oligonucleotide, a plurality of polynucleotides, etc.). In some cases, the polynucleotide sequence is encoded using a method described herein. In some cases, the methods and systems include an internal codec, an external codec, or a combination thereof. In some cases, the information includes one or more objects, as described herein above. In some cases, each of the one or more objects is about 1 GB to about 1 TB, as described herein above. In some cases, the one or more objects include an item of information, such as, but not limited to, an item of information, as described herein.
[0168] In some cases, the systems and methods decode polynucleotide sequences (e.g., polynucleotides, oligonucleotides, multiple polynucleotides, etc.). An exemplary method for retrieving digital information stored in multiple polynucleotides is shown in FIG. 13. In such cases, the multiple polynucleotides may be divided into multiple pools according to the general operations shown in FIG. 12. In some cases, the method for retrieving digital information stored in multiple polynucleotides includes one or more operations shown in FIG. 13.
[0169] In some cases, retrieving the digital information stored in the plurality of polynucleotides includes accessing an index pool (1300). In some cases, accessing the index pool includes fully or partially sequencing a library encoding the index pool. In some cases, the index pool is encoded in a library using the systems and methods described herein. In some cases, polynucleotides in a library encoding the index pool are sequenced using the systems and methods described herein. In some cases, two or more index pools are accessed. In some cases, polynucleotides in two or more libraries are sequenced. In some cases, the sequenced library is temporarily stored in a memory storage system (e.g., a flash drive). In some cases, the sequenced library is converted to digital information to retrieve the index pool. In some cases, the index pool is temporarily stored in a memory storage system (e.g., a flash drive). In some cases, the digital information in the index pool is used to search for one or more objects of interest. In some cases, the one or more objects of interest are stored in a library including a plurality of polynucleotides encoding the one or more objects. In some cases, one or more objects of interest are located using metadata associated with the one or more objects. In some cases, the pools corresponding to the one or more objects are determined by accessing an index pool. In some cases, however, one or more objects in one or more of the pools may be known and access to an index pool may not be required.
[0170] In some cases, one or more objects of interest are retrieved, for example, from a compartment in a storage device. In some cases, retrieving the digital information stored in the plurality of polynucleotides includes sequencing the plurality of polynucleotides corresponding to the one or more objects in the plurality of pools (1305). In some cases, the plurality of polynucleotides are in a library. In some cases, the library is in a compartment of a device as previously described herein. In some cases, the plurality of polynucleotides in the library encoding the pool are sequenced using the systems and methods described herein. In some cases, the pool is encoded in the library using the systems and methods described herein. In some cases, the plurality of polynucleotides in two or more compartments are sequenced to retrieve the one or more objects.
[0171] In some cases, retrieving the digital information stored in the plurality of polynucleotides further includes applying a decoding scheme (210). In some cases, the decoding scheme decodes the digital information in the plurality of pools. In some cases, the decoding scheme is applied to a sequenced library that includes the plurality of polynucleotides. In some cases, the decoding scheme includes an internal codec, an ECC, or a combination thereof. In some cases, the decoding scheme decodes the plurality of polynucleotide sequences to generate an output that includes the digital information (e.g., an object). In some cases, the decoding scheme includes undoing an operation in the encoding scheme. In some cases, the operation includes splitting, shuffling, concatenating, transposing, converting, duplicating, labeling (e.g., using an index), or any combination thereof, of the data or a portion of the data.
[0172] A method for decoding a plurality of polynucleotide sequences to generate an output including data (e.g., binary data) is shown, for example, generally in FIG. 2. In some cases, the method for decoding a plurality of polynucleotide sequences can include determining the plurality of polynucleotide sequences (205). In some cases, determining the plurality of polynucleotide sequences includes sequencing the nucleotides. In some cases, the nucleotides are sequenced using methods described herein.
[0173] After sequencing the plurality of nucleotides, the encoded data (e.g., one or more objects) is decoded. In some cases, the plurality of nucleotides are decoded using, as a non-limiting example, the schematic diagram shown in FIG. 7. The output from the sequencing includes an unordered list of reads (e.g., a polynucleotide sequence), as shown in FIG. 7.
[0174] In some cases, the sequenced reads and / or the unordered reads are clustered after sequencing. In some cases, the clustering is performed before applying the internal codec. In some cases, the reads are clustered based on an index, such as a frame index, a lane index, or a combination thereof. In such cases, the reads are partially decoded to obtain the frame index, the lane index, or a combination thereof. In some cases, the clustering is performed using a hash function, as described herein above. In some cases, the hash function is used when the encoding scheme used a hash to determine bases in a polynucleotide sequence, as described herein above.
[0175] In some cases, the sequenced reads are aligned. In some cases, the sequenced polynucleotides are aligned after they are clustered. In some cases, the clustered reads are aligned. In some cases, the reads are aligned before applying the internal codec. In some cases, the alignment includes analyzing the consensus of the reads (e.g., nucleic acid or polynucleotide sequences) using an alignment algorithm. In some examples, the alignment algorithm includes a pairwise alignment algorithm, a multi-sequence alignment algorithm, or a combination thereof.
[0176] In some cases, the pairwise alignment algorithm involves initializing a position for each read. The initialization involves aligning the polynucleotide sequence to position 0. The reads are then analyzed for consensus on the next one or more bases. In some cases, about 3-10 reads are analyzed for consensus. In some cases, about 3 to about 4, about 3 to about 5, about 3 to about 6, about 3 to about 7, about 3 to about 8, about 3 to about 9, about 3 to about 10, about 4 to about 5, about 4 to about 6, about 4 to about 7, about 4 to about 8, about 4 to about 9, about 4 to about 10, about 5 to about 6, about 5 to about 7, about 5 to about 8, about 5 to about 9, about 5 to about 10, about 6 to about 7, about 6 to about 8, about 6 to about 9, about 6 to about 10, about 7 to about 8, about 7 to about 9, about 7 to about 10, about 8 to about 9, about 8 to about 10, or about 9 to about 10 reads are analyzed for consensus. In some cases, about 3, about 4, about 5, about 6, about 7, about 8, about 9, or about 10 reads are analyzed for consensus. In some cases, at least about 3, about 4, about 5, about 6, about 7, about 8, or about 9 reads are analyzed for consensus. In some cases, up to about 4, about 5, about 6, about 7, about 8, about 9, or about 10 reads are analyzed for consensus. In some cases, the next base or bases include the next 2-10 bases. In some cases, the next base or bases are about 2, 3, 4, 5, 6, 7, 8, 9, or 10 bases. In some cases, the next base or bases are at least about 2, 3, 4, 5, 6, 7, 8, or 9 bases. In some cases, the next base or bases are up to about 3, 4, 5, 6, 7, 8, 9, or 10 bases. In some cases, the next base or bases are about 2, 3, 4, or 5 bases. A consensus is analyzed between the reads to determine if the next group or groups are correct. If there is a consensus between the bases at a position, say x, among all the reads, then the subsequent base, say x+1, may be analyzed next. If there is a mismatch between the reads at a base at a position, say x, then it is determined whether the read containing the mismatch has an error. In some cases, the error is an insertion, deletion, or substitution.Then, for each read, a decision is given (e.g., is the read correct or has an error) and the position is incremented, e.g., to x + 1. In some cases, these steps are repeated until the end of the read is reached.
[0177] In some cases, the method (or decoding scheme) for decoding a plurality of polynucleotide sequences includes an internal codec. In some cases, the internal codec is applied to a plurality of nucleic acid (or polynucleotide) sequences. In some cases, the internal codec includes a decoding scheme. The internal codec is used to convert the polynucleotide sequences to data (e.g., digital data or binary data). In some cases, the internal codec can correct deletion errors, substitution errors, or insertion errors, or any combination thereof. For example, the internal codec provided herein may correct up to 12% deletion, 6% mutation, or 2% insertion, or any combination thereof. In some examples, the internal codec can correct up to 6% deletion, 3% mutation, or 1% insertion, or any combination thereof. In some examples, the inner codec can correct errors of about 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, 10%, 11%, or 12% deletions, about 1%, 2%, 3%, 4%, 5%, or 6% mutations, or about 1% or 2% insertions, or any combination thereof. In some examples, the inner codec can correct errors of up to about 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, 10%, 11%, or 12% deletions, about 1%, 2%, 3%, 4%, 5%, or 6% mutations, or about 1% or 2% insertions, or any combination thereof. In some further embodiments, the inner codec is used to check the validity of oligos and discard suspect oligos to prevent them from contaminating the outer decoding. In some cases, the inner codec uses indexes (frame index and lane index) to enable efficient decoding.
[0178] An internal codec including a decoding scheme is applied to the plurality of polynucleotide sequences (210). The decoding scheme of the internal codec may convert each of the plurality of polynucleotide sequences into a lane of data. In some cases, the internal codec is applied to the sequenced plurality of nucleotides. In some cases, the internal codec is applied to unordered reads. In some cases, the internal codec is applied to the reads or the plurality of nucleotides after they have been clustered, as described herein. In some cases, the internal codec is applied to the reads or the plurality of nucleotides after they have been aligned, as described herein.
[0179] In some cases, the decoding scheme may decode reads at a rate of at least about 50,000, 100,000, 150,000, or 200,000 reads per second, provided that the software is running on an 8-core processing chip, e.g., an 8-core Intel® 9i. In some cases, the decoding scheme decodes reads at a rate of at least about 100,000 reads per second (e.g., about 500 million reads per hour, corresponding to about 138,000 reads per second), provided that the software is running on an 8-core processing chip (e.g., an 8-core Intel® 9i). However, one skilled in the art will appreciate that the speed of decoding may be increased by modifying one or more hardware parameters, one or more software techniques, or both. In some cases, the decoding scheme may be scaled horizontally or vertically. The one or more hardware parameters may include, by way of non-limiting example, clock speed, cores, cache size, RAM size, CPU, components of FIG. 10, or any other hardware parameter or combination of parameters known in the art. The one or more software techniques may include, by way of non-limiting example, implementations using concurrency, parallelism, distribution techniques, or any other techniques known in the art.
[0180] In some cases, the inner codec includes a decoding scheme that includes a greedy algorithm. In some cases, the inner codec includes a decoding scheme that includes a maximum likelihood (ML) algorithm. In some cases, the inner codec includes a decoding scheme that includes a mixed greedy ML algorithm.
[0181] A decoding scheme including a greedy algorithm (e.g., a greedy decoder) is illustratively shown in FIG. 8. As shown in the figure, the greedy algorithm considers only transitions from the most likely state when decoding each bit position in the array. In some cases, each bit is guessed one by one using the greedy algorithm. In some cases, more than one bit is guessed using the greedy algorithm at a particular time. In some cases, the x-axis includes bit positions and the y-axis includes states. In some cases, the states include one or more valid encoding states S that are analyzed at each bit position. In some cases, each state S is assigned a probability. In some cases, state S is defined as the encoded bits from each lane, the bit history, and the bit position. In some cases, state S is defined as the bit history and the bit word. The greedy algorithm iteratively finds the most likely state at each position until it reaches the most likely end state. In some cases, the decoded bits are backtracked by following the most likely states at each bit position. In some cases, this results in a fully decoded bit. In some cases, the greedy decoder finds a local optimum solution. In some cases, a local optimal solution is an approximation to a global optimal solution. A greedy decoder provides a solution (or final state) in a reasonable amount of time compared to other decoding schemes, such as the decoding schemes described herein.
[0182] In some examples, the greedy decoder can correct up to 6% deletions, 4% mutations, or 1% insertions, or any combination thereof. In some examples, the greedy decoder can correct up to 3% deletions, 2% mutations, or 0.5% insertions, or any combination thereof. In some examples, the greedy decoder can correct up to 3% deletions, 2% mutations, or 0.5% insertions, or any combination thereof. In some examples, the greedy decoder can correct about 1%, 2%, 3%, 4%, 5%, or 6% deletions, about 1%, 2%, 3%, or 4% mutations, or about 0.5% or 1% insertions, or any combination thereof. In some examples, the greedy decoder may correct about 1%, 2%, 3%, 4%, 5%, or 6% deletions, about 1%, 2%, 3%, or 4% mutations, or about 0.5% or 1% insertions, or any combination of these errors.
[0183] In some cases, knowing where the polynucleotide sequence ends improves the performance of the decoding scheme. In some cases, the length of the oligonucleotide is determined during sequencing, for example, by paired-end sequencing. In some cases, a drift term is introduced into the greedy algorithm. The drift term includes an integer associated with the total number of insertions and deletions. Each insertion is represented as a value of +1 and each deletion is represented as a value of -1. For example, if there are no insertions and two deletions, the total drift is -2. In such an example, the greedy algorithm discards as invalid all final decoding states that do not match the length of the oligo. Thus, the drift term allows the greedy algorithm to know which final decoding states are valid, which can further improve performance. Therefore, in some cases, the decoding scheme further includes a z-axis that corresponds to drift, as shown in Figures 8 and 9.
[0184] A decoding scheme (or inner codec) including an ML algorithm (or ML decoder) is exemplarily shown in FIG. 9. As shown in the figure, the ML algorithm considers transitions from all states when decoding each bit position in the array. The states are defined as described herein above. In some cases, each bit is inferred one by one using the ML algorithm. In some cases, more than one bit is inferred at a particular time using the ML algorithm. In some cases, the ML algorithm iteratively finds all transition states at each position until a final candidate state is determined. In some cases, the x-axis includes bit positions and the y-axis includes states, as described herein above. In some cases, a drift term is used to filter the final candidate states, as described herein above. In some cases, the ML algorithm provides a global optimal solution by tracking all state transitions. In some cases, the ML algorithm is computationally intensive compared to other decoding schemes, such as the decoding schemes described herein.
[0185] In some examples, the ML decoder can correct up to 12% deletions, 6% mutations, or 2% insertions, or any combination thereof. In some examples, the ML decoder can correct up to 6% deletions, 3% mutations, or 1% insertions, or any combination thereof. In some examples, the ML decoder can correct about 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, 10%, 11%, or 12% deletions, about 1%, 2%, 3%, 4%, 5%, or 6% mutations, or about 0.5%, 1%, 1.5%, or 2% insertions, or any combination thereof. In some examples, the ML decoder may correct up to about 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, 10%, 11%, or 12% deletions, about 1%, 2%, 3%, 4%, 5%, or 6% mutations, or about 0.5%, 1%, 1.5%, or 2% insertions, or any combination thereof.
[0186] In some cases, the decoding scheme of the inner codec includes a mixed greedy ML algorithm. In some cases, the mixed greedy ML algorithm includes a greedy algorithm and an ML algorithm. The mixed greedy ML algorithm considers transitions from a plurality of states when decoding each bit position in the array. In some cases, the plurality of states is about 100 to about 1000 states when decoding each bit position in the array. In some cases, the multiple states may be about 100 to about 200, about 100 to about 300, about 100 to about 400, about 100 to about 500, about 100 to about 600, about 100 to about 700, about 100 to about 800, about 100 to about 900, about 100 to about 1,000, about 200 to about 300, about 200 to about 400, about 200 to about 500, about 200 to about 600, about 200 to about 700, about 200 to about 800, about 200 to about 900, about 200 to about 1,000, about 300 to about 400, about 300 to about 500, about 300 to about 600, about 300 to about 700, about 300 to about 800, about 300 to about 90 The number of particles is 0, about 300 to about 1,000, about 400 to about 500, about 400 to about 600, about 400 to about 700, about 400 to about 800, about 400 to about 900, about 400 to about 1,000, about 500 to about 600, about 500 to about 700, about 500 to about 800, about 500 to about 900, about 500 to about 1,000, about 600 to about 700, about 600 to about 800, about 600 to about 900, about 600 to about 1,000, about 700 to about 800, about 700 to about 900, about 700 to about 1,000, about 800 to about 900, about 800 to about 1,000, or about 900 to about 1,000. In some cases, the plurality of states is about 100, about 200, about 300, about 400, about 500, about 600, about 700, about 800, about 900, or about 1,000 states. In some cases, the plurality of states is at least about 100, about 200, about 300, about 400, about 500, about 600, about 700, about 800, or about 900 states. In some cases, the plurality of states is at most about 200, about 300, about 400, about 500, about 600, about 700, about 800, about 900, or about 1,000 states. The states are defined as previously described herein. In some cases, each bit is inferred one by one using a mixture greedy ML algorithm.In some cases, more than one bit is inferred at a particular time using the mixed greedy ML algorithm. In some cases, the mixed greedy ML algorithm iteratively finds about 100 to about 1000 transition states at each position until a final candidate state is determined. In some cases, as previously described herein, a drift term is used to filter the final candidate states. In some cases, the mixed greedy ML algorithm provides a global optimal solution, but at a lower computational cost compared to other decoding schemes, such as the ML algorithms described herein.
[0187] In some examples, the mixed greedy ML decoder can correct up to 15% deletions, 10% mutations, or 5% insertions, or any combination thereof. In some examples, the mixed greedy ML decoder can correct up to 12% deletions, 6% mutations, or 2% insertions, or any combination thereof. In some examples, the mixed greedy ML decoder can correct up to 6% deletions, 3% mutations, or 1% insertions, or any combination thereof. In some examples, the mixed greedy ML decoder can correct about 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, 10%, 11%, 12%, 13%, 14%, or 15% deletions, about 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, or 10% mutations, or about 1%, 2%, 3%, or 4% insertions, or any combination thereof. In some examples, the mixed greedy ML decoder may correct up to about 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, 10%, 11%, 12%, 13%, 14%, or 15% deletions, about 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, or 10% mutations, or about 1%, 2%, 3%, or 4% insertions, or any combination thereof.
[0188] In some cases, the decoding scheme in the inner codec includes a beam searcher decoder or a random sampling decoder (e.g., a pure sampling decoder, a top-K sampling decoder, etc.). In some cases, the beam searcher decoder or the random sampling decoder provides a greater variety of candidate states compared to a greedy decoder.
[0189] In some cases, the internal codec further includes a checksum. In some cases, the checksum is used to verify data integrity, to detect errors, or a combination of these. In some cases, the checksum is generated using a checksum function or algorithm (e.g., parity byte or parity work (longitudinal parity check), sum complement, position dependent, fuzzy checksum, etc.). Examples of checksum functions or algorithms include, but are not limited to, BSD checksum (Unix), SYSV checksum (Unix), sum4, sum8, sum16, sum32, fletcher-4, fletcher-8, fletcher-16, fletcher-32, Adler-32, xor8, Luhn algorithm, Verhoeff algorithm, or Damm algorithm. In some cases, instead of selecting only the most likely path, several of the most likely paths are considered and tested against the checksum. In some cases, the checksum includes an RS code (e.g., a small RS code). In such cases, the decoder provides a list of possibilities (e.g., "list decoding"), assuming that the user can determine which possibilities actually exist.
[0190] In some cases, the method and system for decoding includes placing the lanes into frames. In some cases, the decoded lanes from the internal codec are placed into frames based on a lane index and a frame index (215). In some cases, one or more lanes are missing from a frame, as shown in FIG. 7. In some cases, the lanes are missing due to errors that occurred during synthesis or sequencing of nucleotides. In some cases, about 1% to about 10% of the lanes are missing from a frame. In some cases, about 1% to about 2%, about 1% to about 4%, about 1% to about 6%, about 1% to about 8%, about 1% to about 10%, about 2% to about 4%, about 2% to about 6%, about 2% to about 8%, about 2% to about 10%, about 4% to about 6%, about 4% to about 8%, about 4% to about 10%, about 6% to about 8%, about 6% to about 10%, or about 8% to about 10% of the lanes are missing from a frame. In some cases, about 1%, about 2%, about 4%, about 6%, about 8%, or about 10% of the lanes are missing from the frame. In some cases, at least about 1%, about 2%, about 4%, about 6%, or about 8% of the lanes are missing from the frame. In some cases, at most about 2%, about 4%, about 6%, about 8%, or about 10% of the lanes are missing from the frame.
[0191] In some cases, the internal codec contains a "format". In some cases, there is no a priori information about the size of the data (e.g., binary data) during decoding. Thus, in some cases, frame index 0 contains the size of the data. In some cases, after placing the lanes into frames and / or ordering the frames, frame 0 is decoded first. Then, data is extracted from frame 0, rejecting frames that are outside the expected data size (e.g., from incorrectly decoded oligos).
[0192] In some cases, the inner codec includes a hash (e.g., SHA-256). In some cases, the hash verifies that it has been decoded correctly. In some cases, the encoding and decoding is performed as a stream, using a hash at the end (after the outer codec or ECC). In some cases, this allows limiting memory usage to only temporary buffers.
[0193] The method for decoding the plurality of polynucleotide sequences includes an outer codec or error correction code (ECC). In some cases, the plurality of polynucleotide sequences are decoded into data (e.g., binary data). In some cases, the outer codec or ECC is applied to each of the frames (220). In some cases, the outer codec or ECC is applied to lanes from an inner codec. In some cases, the outer codec or ECC is applied after the lanes from the inner codec are arranged into a frame.
[0194] In some cases, the outer codec includes an error correction scheme or the code is based on an error correction scheme used to encode the data (e.g., binary data). In some cases, the error correction scheme includes a Reed-Solomon (RS) code, an LDPC code, a polar code, a turbo code, or any combination thereof.
[0195] In some cases, the error correction scheme of the outer codec includes a Reed-Solomon (RS) code. In such cases, the RS decoder receives a codeword r(x) that is the original codeword c(x) plus an error e(x) (e.g., r(x)=c(x)+e(x)). In some cases, the error e(x) is zero. In some cases, the RS decoder attempts to identify the location and magnitude of up to t errors (or 2t erasures). The RS code then attempts to correct these identified errors and / or erasures.
[0196] In some cases, the RS decoder includes a syndrome calculation. In some cases, the syndrome calculation includes taking input symbols and splitting them into a generator polynomial g(x), as described herein above. In some cases, the syndromes are calculated by substituting 2t roots of the generator polynomial g(x) (or syndromes of the RS codeword c(x)) into r(x). In some cases, the generator polynomial g(x) is a known parameter of the decoder. In some cases, the RS codeword c(x) has 2t syndromes that are error-dependent.
[0197] In some cases, the RS decoder includes detecting the location of a symbol error. In some cases, the parity or check symbol t causes a syndrome calculation to be zero if there is no error. In some cases, the parity or check symbol t includes a remainder in the RS encoder. If an error is present, the resulting polynomial g(x) is passed to a Euclidean algorithm. In some cases, the factors of the remainder are found using a Euclidean algorithm. In some cases, the result is evaluated over each iteration of the input symbols. In some cases, an error is detected and the error is corrected. In some cases, a corrected codeword c(x) is output from the RS decoder. In some cases, there are more errors in the codeword than can be corrected by the RS code (e.g., e(x)>2t). In such a case, the received codeword r(x) is output from the RS decoder. In some cases, the received codeword r(x) is output with an indication (e.g., a flag) that error correction has failed. In some cases, the received codeword r(x) (e.g., a lane or frame containing binary data as described herein) is discarded.
[0198] In some cases, frames from the external codec (or ECC) are merged to generate an output that includes data (225), in some cases the data includes binary data that can be a byte stream or byte array as previously described herein.
[0199] The decoding methods described herein (e.g., the internal codec, the external codec, or both) may be used to recover data when errors are present in at least one polynucleotide sequence of the stored plurality of polynucleotide sequences. In some cases, the errors include insertions, deletions, substitutions, or any combination thereof. In some cases, data is recovered when errors (e.g., an error rate) are present in about 0.001% to about 30% of the polynucleotide sequences in the plurality of nucleotides. In some cases, the data may be from about 0.001% to about 0.01%, from about 0.001% to about 0.1%, from about 0.001% to about 0.5%, from about 0.001% to about 1%, from about 0.001% to about 2%, from about 0.001% to about 5%, from about 0.001% to about 10%, from about 0.001% to about 15%, from about 0.001% to about 20%, from about 0.001 to about 25%, from about 0.001 to about 30%, from about 0.01 to about 0.1%, from about 0.0 1 to about 0.5%, about 0.01 to about 1%, about 0.01 to about 2%, about 0.01% to about 5%, about 0.01 to about 10%, about 0.01 to about 15%, about 0.01 to about 20%, about 0.01 to about 25%, about 0.01 to about 30%, about 0.1 to 0.5%, about 0.1 to about 1%, about 0.1 to about 2%, about 0.1 to about 5%, about 0.1 to about 10%, about 0.1 to about 15%, about 0.1 to about 20%, about 0.1 to about 25%, About 0.1 to about 30%, about 0.5 to about 1%, about 0.5 to about 2%, about 0.5 to about 5%, about 0.5 to about 10%, about 0.5 to about 15%, about 0.5 to about 20%, about 0.5 to about 25%, about 0.5 to about 30%, about 1% to about 2%, about 1% to about 5%, about 1% to about 10%, about 1% to about 15%, about 1% to about 20%, about 1% to about 25%, about 1 to about 30%, about 2 to 5%, about 2 to 10%, about 2 to 15%, about 2 to 20 %, about 2% to about 25%, about 2% to about 30%, about 5 to about 10%, about 5 to about 15%, about 5 to about 20%, about 5 to about 25%, about 5 to about 30%, about 10 to about 15%, about 10 to about 20%, about 10 to about 25%, about 10 to about 30%, about 15 to about 20%, about 15 to about 25%, about 15 to about 30%, about 20 to about 25%, about 20 to about 30%, or about 25 to about 30% error rate.In some cases, data is recovered when there is an error rate of about 0.001%, about 0.01%, about 0.1%, about 0.5%, about 1%, about 2%, about 5%, about 10%, about 15%, about 20%, about 25%, or about 30%. In some cases, data is recovered when there is an error rate of at least about 0.001%, about 0.01%, about 0.1%, about 0.5%, about 1%, about 2%, about 5%, about 10%, about 15%, about 20%, or about 25%. In some cases, data is recovered when there is an error rate of up to about 0.01%, about 0.1%, about 0.5%, about 1%, about 2%, about 5%, about 10%, about 15%, about 20%, about 25%, or about 30%.
[0200] In some cases, the decoding schemes (e.g., outer and inner decoding) are used together with soft decoding. Soft decoding generally refers to decoding by considering a range of possible values (e.g., using probability estimates). As an example, the sequencing may hold a quality for each base, and this quality may be taken into account during the probability calculation. In such an example, each state includes a final probability, which may be used as a log-likelihood in the outer decoder, for example, if the outer decoder supports soft decoding. Furthermore, clustering and alignment may provide soft information about the reliability of the alignment. As a further example, LDPC outer codecs include an iterative decoder. This introduces the possibility of iteratively going back and forth between the inner and outer decoders, rather than in a single pass. However, in some cases, this comes at the cost of higher computing requirements.
[0201] The decoding may be performed on at least one logic element, programmable logic, or processor. Non-limiting examples of the at least one logic element, programmable logic, or processor include a programmable logic controller (PLC), a programmable logic array (PLA), a programmable array logic (PAL), a generic logic array (GLA), a complex programmable logic device (CPLD), a field programmable gate array (FPGA), or an application specific integrated circuit (ASIC), a GPU, a CPU, an AI accelerator, or any combination thereof. In some cases, the AI accelerator includes a Google-TPU, Graphcore, Cerebras, SambaNova, or a combination thereof. In some cases, the decoding is performed on a compute-on-memory technology, such as, but not limited to, UpMem.
[0202] The hashes of the present disclosure can enable verification of the digital information during retrieval. In some cases, retrieving the digital information stored in the plurality of polynucleotides further includes verifying at least one or more objects (1315). In some cases, the one or more objects are verified using a first one or more hashes in the plurality of pools. In some cases, retrieving the digital information stored in the plurality of polynucleotides further includes verifying one or more pool items. In some cases, the one or more pool items are verified using a second one or more hashes in the plurality of pools. In some examples, when an object is stored across two or more of the plurality of pools, two or more pool items are assembled into the object. In such examples, the first one or more hashes of the data payload of each of the pool items, the second one or more hashes of the one or more objects, or a combination thereof, enable proper assembly verification.
[0203] Verifying a hash generally includes generating a hash (e.g., a cryptographic hash). The verification may further include comparing the generated hash to a previously determined hash. In some cases, the previous hash and the new hash are determined using the same hash function. In some cases, the hash function includes a cryptographic hash function. In some cases, the hash function includes MD-5, SHA-1, SHA-2, SHA-3, RIPEMD-160, Whirlpool, BLAKE, BLAKE2, BLAKE3, or variations thereof. In some cases, the hash function includes SHA-2. In some examples, SHA-2 includes SHA-224, SHA-256, SHA-384, SHA-512, SHA-512 / 224, or SHA-512 / 256. In some cases, if the new hash and the previous hash match, the integrity of the item of information (e.g., the object) is verified. In some cases, if the new hash and the previous hash do not match, the verification fails. In some cases, if the verification fails, the integrity of the item of information is not verified. In some cases, if validation fails, the item of information has been altered and / or corrupted.
[0204] Retrieving the digital information can include combining information stored in pool items and / or across multiple pools. In some cases, retrieving digital information stored in multiple polynucleotides further includes combining digital information in multiple pools (1320). In some cases, data payloads in one or more pool items are combined. In some cases, data payloads in one or more pool items across multiple pools are combined. In some cases, the combined data payload comprises digital information. In some cases, the retrieved data or digital information is stored in memory (1325).
[0205] In some cases, the retrieved digital information is presented to a user. In some cases, the information is presented to a user on an interface. In some cases, the interface is an interface of an electronic device (e.g., a personal electronic device). In some cases, the electronic device includes an application configured to communicate with a system described herein over a computer network to access the information.
[0206] In some cases, a method for decoding a plurality of polynucleotide sequences to generate an output comprising digital data (e.g., binary data) as described herein is performed on a system. In some cases, the system performs the operations generally depicted in FIG. 1, FIG. 2, or both. In some cases, such a system comprises an apparatus comprising a memory, a sequencing device, a processing device operably coupled to the memory, or a combination thereof. In some cases, the sequencing device is operably coupled to the memory, the processing device, or a combination thereof. In some cases, the memory is used to store information of binary data, polynucleotide sequences, or a combination thereof. In some cases, the information of binary data, polynucleotide sequences, or a combination thereof is from one or more steps in an encoding method described herein. In some cases, the memory is used to store information (e.g., software code, parameters, executable instructions, etc.) related to an algorithm described herein. In some examples, the memory can include any suitable memory described herein. In some examples, the memory can be configured according to an embodiment described herein. In some examples, the sequencing device is configured to determine a plurality of polynucleotide sequences using a method described herein.
[0207] In some cases, the processing device is configured to perform one or more decoding steps. In some cases, the processing device is configured to perform one or more steps including applying an internal codec including a decoding scheme to a plurality of polynucleotide sequences, arranging the lanes of binary data into frames based on a lane index and a frame index for each of the lanes of binary data, and applying an external codec to the frames. In some cases, the decoding scheme converts each of the plurality of polynucleotide sequences into lanes of binary data. In some cases, the decoding scheme includes a hybrid decoding algorithm including a greedy algorithm and a maximum likelihood (ML) algorithm. In some cases, the external codec includes an error correction scheme. In some cases, frames from the external codec are merged to generate an output including the binary data.
[0208] The method for retrieving digital information in DNA (or polynucleotides) may be performed on a system. In some cases, the system performs the operations generally shown in FIG. 12, FIG. 13, or both. In some cases, such a system comprises an apparatus comprising one or more processing units, memory, instructions, a sequencing device, or a combination thereof. In some cases, the memory is in communication with the one or more processing units. In some cases, the instructions are stored in the memory. In some cases, the sequencing device is in communication with the memory, the one or more processing units, or a combination thereof. In some cases, the one or more processing units and the memory are distributed across one or more physical or logical locations.
[0209] In some cases, the memory is used to store data or digital information, polynucleotide sequences (e.g., partially or fully decoded sequences), or a combination thereof. In some cases, the memory is used to store information related to the algorithms described herein (e.g., software code, parameters, executable instructions, etc.). In some examples, the memory can include any suitable memory described herein. In some examples, the memory can be configured according to embodiments described herein. In some examples, the sequencing device is configured to determine a plurality of polynucleotide sequences using the methods described herein.
[0210] In some cases, the one or more processing units include a central processing unit (CPU), a graphical processing unit (GPU), a single-core processor, a multi-core processor, a processor cluster, an application specific integrated circuit (ASIC), a programmable circuit such as a field programmable gate array (FPGA), an AI accelerator, and any combination of these variations. In some cases, one or more of the processing units have a single instruction multiple data (SIMD) or single program multiple data (SPMD) parallel architecture. Examples of the one or more processing units include one or more GPUs or CPUs that implement SIMD or SPMD. In some cases, the AI accelerator includes Google-TPU, Graphcore, Cerebras, SambaNova, or combinations thereof. In some embodiments, one or more of the processing units are implemented in software and / or firmware in addition to a hardware implementation. A software or firmware implementation of a processing unit may include computer-executable or machine-executable instructions written in any suitable programming language to perform various functions described herein. A software implementation of one or more processing units may be stored in whole or in part in memory. Alternatively or additionally, the system may include one or more hardware logic components. For example, examples of types of hardware logic components that may be used include, but are not limited to, field programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), application specific standard products (ASSPs), systems on chips (SOCs), complex programmable logic devices (CPLDs), and the like. In some cases, the decoding is performed in compute-on-memory technologies, such as, but not limited to, UpMem.
[0211] In some cases, the one or more processing units are configured to perform one or more decoding steps. In some cases, the processing device is configured to perform one or more steps including applying a decoding scheme to decode the digital information in the multiple pools, verifying the data payload in at least a pool item using a first one or more hashes in the multiple pools, combining the digital information in the multiple pools to retrieve one or more objects, and storing the digital information in a memory. In some cases, the one or more processing units are configured to perform one or more steps including applying an internal codec to the multiple polynucleotides or applying an ECC to the multiple polynucleotides. In some cases, the internal codec converts each of the multiple polynucleotides into digital information. In some cases, the internal codec includes a hybrid decoding algorithm including a greedy algorithm and a maximum likelihood (ML) algorithm. In some cases, outputs from the ECC are merged to generate an output including the digital information.
[0212] DNA Data Storage
[0213] Polynucleotides encoding information described herein may be stored in a data storage system. A system for data storage may comprise one or more modules. In some cases, some or all of one or more modules communicate. In some examples, some or all of one or more modules communicate to allow transfer of polynucleotides between those modules. In some examples, some or all of one or more modules are fluidically coupled. In some examples, some or all of one or more modules are fluidically coupled using one or more tubes. Fluids may generally refer to one or more liquids used in various processes involved in processing polynucleotides, including, but not limited to, synthesis, amplification, preparation for sequencing, and sequencing. In some examples, some or all of the modules communicate to allow transfer of control commands between modules of the system. In some examples, some or all of the modules are electronically coupled. Modules in the system may include, but are not limited to, synthesizer units, amplification chambers, sequencer units, storage units, controllers, robotic systems, or any combination thereof. In some examples, modules may further comprise a fluid source, a database and / or a file system. In some examples, a database or file system tracks the storage capacity of the system. For example, the database or file system may track available racks (or trays), slots (for capsules), or both. In some examples, the database or file system is used to determine the placement of racks in the storage system. In some cases, movement of polynucleotides between one or more modules of the system is accomplished by one or more tubes or a robotic system. In some examples, the database or file system is used to direct the robotic system to the correct location in the storage system. In some cases, the system is autonomous.
[0214] A non-limiting example of a system for data storage is shown in FIG. 16. The system for data storage may include a synthesizer unit 1610. The synthesizer unit may be used to synthesize multiple polynucleotides that encode digital information. In some cases, the system includes two or more synthesizer units 1610. The polynucleotides may be synthesized using the methods provided herein or any other suitable synthesis methods known in the art. Fluidic and / or electronic control of polynucleotide synthesis in the synthesizer unit 1610 may be performed by a controller 1635. In some cases, electronics in the synthesizer unit 1610 communicate with the controller 1635. In some cases, the synthesizer unit 1610 has an input for receiving a DNA sequence. In some cases, the synthesizer unit 1610 has an input for receiving fluids for polynucleotide synthesis. In some cases, the synthesizer unit 1610 has an output for eluting the synthesized polynucleotides. In some cases, the synthesized polynucleotides are transferred to another component of the system, such as, as non-limiting examples, a storage unit, an amplification chamber, or a sequencing unit.
[0215] The synthesizer unit may comprise a solid support. The solid support may comprise a device for storage of polynucleotides as described herein. The solid support may comprise a surface for polynucleotide synthesis. In some cases, the solid support, the surface, or both comprise a material as described herein. In some cases, the material comprises a metal or an organic polymer. In some cases, the material comprises steel (e.g., stainless steel) or other metal alloys. In some cases, the material comprises polyethylene, polypropylene, or other polymers. In some cases, the structure comprises a flexible material, such as a material provided herein. Examples of flexible materials include, but are not limited to, modified nylon, unmodified nylon, nitrocellulose, and polypropylene. In some cases, the material comprises a hard material, such as a material provided herein. Examples of hard materials include, but are not limited to, glass, fused silica, silicon, silicon dioxide, silicon nitride, plastics (e.g., polytetrafluoroethylene, polypropylene, polystyrene, polycarbonate, and mixtures thereof), and metals (e.g., steel, gold, platinum). In some cases, the materials disclosed herein may be made from materials including silicon, polystyrene, agarose, dextran, cellulosic polymers, polyacrylamide, polydimethylsiloxane (PDMS), glass, or any combination thereof. In some examples, the materials disclosed herein are made from combinations of the materials listed herein or any other suitable materials known in the art.
[0216] In some cases, the polynucleotides are deprotected, cleaved, and / or eluted from the synthesizer unit 1610 and transferred to another module in the system. In some cases, a robotic system 1630 or fluidic tubing is used to transport the polynucleotides to another module in the system. The robotic system 1630 may be controlled by a controller 1635. The robotic system generally includes a system for the manipulation of multiple polynucleotides. In some cases, the robotic system is used to manipulate structures that include multiple polynucleotides, such as the polynucleotides described herein. The manipulations may include, by way of non-limiting example, moving, storing, retrieving, processing, transferring, or any combination thereof. The robotic system may be similar to the robotic systems used in semiconductor processing to move trays of wafers and chips between processing devices. The robotic system 1630 may be used to select and transfer polynucleotides between modules of the system. For example, the robotic system 1635 may include a tag reader to verify the structures in the storage unit 1615. In some cases, the robotic system 1635 includes a tag reader and the structures in the storage unit 1615 include tags (e.g., barcode or RFID tags). After being verified, the robotic system 1630 may transfer the structures to a component of the system. Further, the robotic system 1630 may transfer the structures to a precise location within the component of the system. In some cases, the robotic system may allow polynucleotides to be added to and / or removed from a module within the data storage system. In some cases, the robotic system allows structures containing multiple polynucleotides to be placed in and / or removed from locations in an identifiable layout within the storage unit 1615. The robotic system 1630 may be controlled using a controller 1635, as described further herein.
[0217] In some cases, one or more droplets containing polynucleotides are transferred from the synthesizer unit 1610 to the storage unit 1615. In some cases, some or all of the polynucleotides synthesized on the solid support are transferred to a structure for storage. The structure or compartment may have a variety of shapes and sizes. The structure may further comprise a tag (e.g., a barcode or RFID tag). In some cases, a plurality of polynucleotides are transferred to a structure in the synthesizer unit 1610. In some cases, a plurality of polynucleotides are transferred to a structure in the storage unit 1615. Fluidic and / or electronic control of polynucleotide synthesis in the storage unit 1615 may be performed by a controller 1635. In some cases, electronics in the storage unit 1615 communicate with the controller 1635. In some cases, the polynucleotides are stored at room temperature in the storage unit 1615. In some cases, the system comprises a database or file system for tracking storage capacity in the storage unit 1615. In some cases, the database includes a control application database. In some cases, a database or file system is part of the controller 1635 .
[0218] The structures comprising the plurality of polynucleotides may be stored in the storage unit 1615 in an identifiable layout. The identifiable layout may include one or more racks or variations thereof. The racks may be used to hold one or more structures comprising the plurality of polynucleotides. In some cases, each structure is stored in a fixed location in an identifiable layout. In some cases, the tag includes information regarding the location of the structure in the identifiable layout. As an example, the tag may encode metadata including the location of the structure in the identifiable layout. In some cases, the racks may be located in a data center. In some cases, the racks use mechanical structures commonly used to mount traditional computing and data storage resources in rack units. For example, the racks may include openings adapted to support disk drives, processing blades, and / or other computer equipment. In some cases, the racks include tags. In some cases, the tags include information of the structures stored in / on the rack. In some cases, the tags include a list of the structures stored in / on the rack.
[0219] In some cases, the storage unit 1615 may be accessed using a robotic system 1630. In some cases, the identifiable layout within the storage unit 1615 includes robotically addressable slots. Each slot may hold a structure including multiple polynucleotides. In some examples, each slot includes a width, depth, length, or any combination thereof to accommodate a number of structures including polynucleotides. In some cases, a rack includes multiple slots, each slot holds structures including multiple polynucleotides.
[0220] The system for storing polynucleotides may further comprise an amplification chamber 1620. The amplification unit may be used to amplify multiple polynucleotides. In some cases, the system comprises more than one amplification chamber 1620. In some cases, a structure is selected from the storage unit 1615 and polynucleotides from the structure are transferred to the amplification chamber 1620. In some cases, polynucleotides from the synthesizer unit 1610 are transferred to the amplification chamber 1620 for size selection, PCR, or other types of amplification or preparation for storage. Size selection typically involves selecting DNA of a size of interest and rejecting very short or very long strands. In some cases, filters are tuned to capture DNA of a particular size range. In some cases, other methods include PCR, electrophoresis, capture with solid-phase bound primers complementary to the end sequences of the synthesized oligonucleotides, or the use of isothermal polymerases. Fluidic and / or electronic control of polynucleotide synthesis in the amplification chamber 1620 may be performed by a controller 1635. In some cases, the electronics in the amplification room 1620 are in communication with a controller 1635 .
[0221] The system for storing polynucleotides may further comprise a sequencing unit 1625. The sequencing unit 1625 may be used to sequence a plurality of polynucleotides. In some cases, a plurality of polynucleotides are transferred from the amplification chamber 1620 to the sequencing unit 1625. In some cases, the system may comprise additional modules for performing additional sequencing preparation steps. In some cases, a plurality of polynucleotides are transferred from the amplification chamber 1620 to the sequencing unit 1625 using one or more tubes or a robotic system 1630. In some cases, the amplification chamber 1620 and the sequencing unit 1625 are fluidically coupled. Fluidic and / or electronic control of polynucleotide synthesis in the sequencing unit 1625 may be performed by a controller 1635. In some cases, electronics in the sequencing unit 1625 communicate with the controller 1635.
[0222] In some cases, the system includes large-scale sequencing of polynucleotides. In some cases, the large-scale sequencing includes a high-density highly parallel sequencer. In some cases, the system includes two or more sequencing units 1625. In some cases, the sequencing unit 1625 uses centrifugal force and / or vacuum / pressure to add reagents to or eject reagents from the sequencing unit 1625. In some cases, the sequencing unit 1625 is optical-based (e.g., includes a light source and a sensor on chip), nanopore-based (e.g., Oxford Nanopore Technologies (ONT)), or includes other operations (e.g., optical-based methods such as PacBio or other sequencing technologies). In some cases, the sequencing unit 1625 employs the sequencing methods provided herein. In some cases, the sequencing unit 1625 uses nanopore or other electrical sequencing technologies that benefit from bulk fluidics provided by semiconductor manufacturing equipment. In some cases, one or more of the modules described herein include a camera. The camera may be used to capture one or more optical characteristics of the polynucleotides in the module. By way of example, a camera may be used in a synthesizer unit, a sequencing unit, or both, to capture optical characteristics of a polynucleotide attached to a surface on a solid support as described herein.
[0223] The system for storing polynucleotides can include a robotic system 1630 as described herein. The robotic system may generally be used to manipulate polynucleotides within the system. The manipulations may include, but are not limited to, moving, storing, retrieving, processing, transferring, or any combination thereof. In some cases, the robotic system transfers multiple polynucleotides between modules within the system. In some examples, the robotic system manipulates (e.g., transfers) multiple polynucleotides within a structure for storage as described herein. In some cases, the robotic system manipulates (e.g., transfers) multiple polynucleotides within a rack. In some examples, the rack comprises multiple structures, each comprising a tag. In some examples, the rack comprises multiple solid supports for synthesis and / or sequencing. In some cases, the robotic system comprises a robotic hand or a robotic picker. In some cases, the robotic system 1630 is fully integrated with the storage system control software and / or firmware within the controller 1635. In some cases, the robotic system 1630 is fully integrated with an external host application. In some cases, the robotic system 1630 is fully automated.
[0224] The system for storing polynucleotides may include a controller 1635. The controller may generally be used to control modules, components, fluidics, robotics, or any combination thereof. The modules, components, fluidics, electronics, robotics, or any combination thereof may be used to synthesize, store, retrieve, sequence, and / or amplify polynucleotides. In some cases, the controller 1635 may catalog all storage structures loaded, unloaded, and / or stored in a rack. Polynucleotides may encode digital information as described herein. The modules, components, fluidics, electronics, robotics, or any combination thereof may be used to execute methods, models, or algorithms, such as encoding or decoding polynucleotides.
[0225] In some cases, the controller 1635 controls the physical location of the plurality of polynucleotides. In some cases, the controller 1635 provides commands to one or more modules of the system. In some examples, the controller 1635 controls the robotics (e.g., the robotic system 1630), actuators, and fluidic valves, or any other equipment of the system. In some cases, the controller 1635 enables synchronizing and controlling modules for processing and / or transferring polynucleotides. In some examples, the polynucleotides are processed and / or transferred by fluidics. In some examples, the polynucleotides are processed and / or transferred by electronics. In some cases, the controller 1635 controls physical parameters within one or more modules, such as, but not limited to, pressure, vacuum, temperature, volume (e.g., fluid), or any combination thereof.
[0226] In some cases, the controller 1635 invokes an encoder module or a decoder module. In some cases, the encoder module encodes the digital information as a plurality of polynucleotides. In some cases, the encoder module applies one or more codecs, such as those described herein (e.g., FIG. 1, FIG. 3-6, FIG. 12, FIG. 13-14), to the digital information. In some cases, the decoder module decodes the sequence of the plurality of polynucleotides to retrieve the digital information. In some cases, the decoder module applies one or more codecs, such as those described herein (e.g., FIG. 2, FIG. 7-9, FIG. 13), to the sequence of the plurality of polynucleotides. In some cases, the decoder module performs reassembly, error correction, and outputs the digital information (e.g., binary data). In some cases, the output including the digital information is forwarded to an operating system and / or a file system. The output may be provided on a display, such as a graphical user interface (GUI), or any other suitable display, such as a display described herein, to provide the digital information. In some cases, the controller 1635 is implemented in one or more software modules, such as the software modules described herein. In some cases, the controller 1635 responds to commands from an operating system, such as the operating systems described herein.
[0227] Specific Definitions Unless otherwise defined, all technical terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this subject matter belongs.
[0228] Throughout this disclosure, numerical characteristics are presented in range format. It should be understood that the description in range format is merely for convenience and brevity and should not be construed as an inflexible limitation on the scope of any embodiment. Thus, the description of a range should be considered to specifically disclose all possible subranges in addition to the individual numerical values within that range, to the tenth of the unit of the lower limit, unless the context clearly dictates otherwise. For example, the description of a range such as 1 to 6 should be considered to specifically disclose subranges such as 1 to 3, 1 to 4, 1 to 5, 2 to 4, 2 to 6, 3 to 6, etc., in addition to the individual values within that range (e.g., 1.1, 2, 2.3, 5, and 5.9). This is true regardless of the breadth of the range. The upper and lower limits of these intervening ranges may be independently included in the smaller ranges, subject to any limit specifically excluded in the stated range, and are still encompassed by the invention. Where the stated range includes one or both of the limits, ranges excluding either or both of those included limits are also included in the invention, unless the context clearly dictates otherwise.
[0229] The terms used herein are for the purpose of describing particular embodiments only and are not intended to limit any embodiment. As used herein, the singular forms "a", "an" and "the" are intended to include the plural unless the context clearly indicates otherwise. It will be further understood that the terms "comprises" and / or "comprising" as used herein indicate the presence of stated features, integers, steps, operations, elements and / or components, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components and / or groups thereof. As used herein, the term "and / or" includes any and all combinations of one or more of the associated listed items.
[0230] Throughout this specification, a reference to "some instances," "further instances," or "particular instances" means that a particular feature, structure, or characteristic described in connection with an instance is included in at least one instance. Thus, the appearances of the phrases "in some cases," or "in further instances," or "in a particular instance" in various places throughout this specification are not necessarily all referring to the same instance. Furthermore, particular features, structures, or characteristics may be combined in any suitable manner in one or more instances.
[0231] Unless otherwise stated or apparent from the context, as used herein, the term "about" in reference to a numerical value or range of numerical values is understood to mean the stated numerical value and ±10% of that numerical value, or, in the case of values listed in relation to a range, a numerical value 10% below the lower listed limit and a numerical value 10% above the upper listed limit.
[0232] As used herein, the terms "preselected sequence," "predefined sequence," or "predetermined sequence" are used interchangeably. The terms mean that the sequence of the polymer is known and is selected prior to the synthesis or assembly of the polymer. In particular, various aspects of the invention are described herein primarily with respect to the preparation of nucleic acid molecules, where the sequence of the polynucleotide is known and is selected prior to the synthesis or assembly of the nucleic acid molecules.
[0233] As used herein, the term "hash" or "hashes" may generally refer to a fixed-length string output from a hash function. A hash function may generally include a function that takes an input of any length and converts it into an output having a fixed length. In some cases, the input may be one or more bits that can be passed through a hash function to produce a hash. In some cases, a hash function may be deterministic and it may not be possible to reverse engineer the input from the hashed output. The act of feeding an input to a hash function may be referred to as "hashing."
[0234] The term "symbol," as used herein, generally refers to the representation of a unit of digital information. Digital information is divided or converted into one or more symbols. In one example, a symbol may be a bit, and a bit may have a numerical value. In some examples, a symbol may have a value of "0" or "1." In some examples, digital information may be represented as an array of symbols or a string of symbols. In some examples, an array of symbols or a string of symbols may include binary data.
[0235] The polynucleotide sequences described herein may include DNA or RNA, or analogs or derivatives thereof, unless otherwise stated. As used herein, the terms nucleic acid, nucleotide, polynucleotide, oligonucleotide, oligo, and oligonucleic acid are used synonymously throughout to refer to a polymer of nucleoside monomers. As used herein, the terms nucleic acid sequence, polynucleotide sequence, polynucleotide sequence, oligonucleotide sequence, oligo sequence, or oligonucleic acid sequence are also used synonymously throughout to refer to a sequence of a polymer of nucleoside monomers. In some cases, the nucleic acid is connected via a phosphate or sulfur-containing bond. The nucleic acid in some cases includes DNA, RNA, non-standard nucleic acid, non-natural nucleic acid, or other nucleosides. In some cases, the nucleotide includes a non-standard base, sugar, or other moiety. In some cases, the nucleotide includes a terminus configured to prevent an extension reaction. In some cases, such terminus is removed prior to the addition of a subsequent nucleotide to the growing chain.
[0236] Computing Systems 10, a block diagram is shown illustrating an exemplary machine including a computer system 1000 (e.g., a processing system or computing system) in which a set of instructions may be executed to cause the device to perform any one or more of the aspects and / or methods for static code scheduling of the present disclosure. The components of FIG. 10 are merely examples and do not limit the scope of use or functionality of any hardware, software, embedded logic components, or combinations of two or more such components, implementing a particular embodiment.
[0237] A platform with a computer system such as that shown in FIG. 10 may be used to encode data represented as a set of symbols into another set of symbols. In some cases, the computer system uses a program to convert a first string of symbols into a second string of symbols. In some cases, the computer system executes a program to convert data into a plurality of polynucleotide sequences, convert a plurality of polynucleotide sequences into data, or both. By way of example, a computing system such as that generally shown in FIG. 10 may be used to execute one or more software programs to encode a string of symbols (representing an item of information) into a polynucleotide sequence (e.g., one or more of the methods shown in FIG. 1, FIG. 3-6, FIG. 12, or FIG. 14-15), to decode the polynucleotide sequence back into a string of symbols (e.g., one or more of the methods shown in FIG. 2, FIG. 7-9, or FIG. 13), or both. More specifically, the data may be represented as numeric symbols, such as binary values of "0" and "1," and the computer system 1000 may execute a computer program (e.g., an internal codec, an external codec, or both) to convert the data into a plurality of polynucleotide sequences. In some cases, the computer system executes a program to convert a first polynucleotide sequence or sequences into a second polynucleotide sequence or sequences.
[0238] The platform for encoding data may further include one or more components, such as a synthesizer, a sequencer, a storage unit, or any combination thereof. In such a platform, in some cases, the computer system 1000 is in electronic communication with any one of the one or more components, such as a synthesizer, a sequencer, a storage unit, or any combination thereof. In some cases, the one or more components are operatively linked to the computer system and optionally automated either locally or remotely via the computer. In various cases, the methods and systems described herein further include software programs for the operation of one or more components of the computer system platform and their use. Thus, computerized control for synchronization of dispense / vacuum / replenishment functions, such as coordinating and synchronizing the movement, dispense operation, and vacuum actuation of the material deposition device, is within the scope of the disclosure provided herein. In some cases, the computer system is programmed to interface between a base sequence specified by a user and the location of the material deposition device to deliver the correct components and / or reagents to a designated area (e.g., a specific locus) of the substrate. Additionally, a computer system, such as the system illustrated in FIG. 10, may be used to monitor one or more components within the platform. For example, the computer system may be used to monitor one or more sensor data from sensors integrated into or connected to the components. In some cases, the computer system uses programs to monitor and detect irregularities in one or more parameters, such as pressure, volume, flow, temperature, vacuum, azimuth, humidity, or any other physical parameter that may be measured within the systems and platforms described herein.A computer system including a program may analyze patterns in one or more sensor data and optionally alert a user via an HMI if irregularities are detected or if the data or combination of data is outside a threshold (e.g., a predefined threshold or a dynamic threshold).
[0239] The program may be executed on a computer system provided herein. In some cases, the program includes a statistical algorithm or a machine learning algorithm. In some cases, an algorithm including machine learning (ML) is trained to perform the functions or operations described herein. In some cases, the algorithm includes a classical ML algorithm for classification and / or clustering (e.g., K-means clustering, mean-shift clustering, density-based spatial clustering of applications with noise (DBSCAN), expectation-maximization (EM) clustering, agglomerative hierarchical clustering, logistic regression, naive Bayes, K-nearest neighbors, random forests or decision trees, gradient boosting, support vector machines (SVM), or a combination thereof).
[0240] In some cases, the algorithm includes a learning algorithm that includes layers, such as one or more neural networks. A neural network may include connected nodes in the network that can perform functions such as transforming or translating input data. In some cases, an output from a particular node may be passed as an input to another node. In some embodiments, a node in the network may include an input unit, a hidden unit, an output unit, or a combination thereof. In some cases, an input node may be connected to one or more hidden units. In some cases, one or more hidden units may be connected to an output unit. A node may receive an input and generate an output based on an activation function. In some embodiments, the input or output may be a tensor, a matrix, a vector, an array, or a scalar. In some embodiments, the activation function may be a Rectified Linear Unit (ReLU) activation function, a sigmoid activation function, or a hyperbolic tangent activation function. In some embodiments, the activation function may be a softmax activation function. The connections between the nodes may further include weights to adjust the input data to a particular node (e.g., to activate the input data or to disable the input data). In some embodiments, the weights may be learned by a neural network. In some embodiments, the neural network may be trained using gradient-based optimization. In some cases, the gradient-based optimization may include one or more loss functions. In some examples, the gradient-based optimization may be co...
Claims
1. A method for encoding data, (a) Dividing data into multiple frames, wherein each of the multiple frames includes a frame index, (b) Applying an external codec to each of the plurality of frames, wherein the external codec includes an error correction scheme. (c) Dividing each frame into multiple lanes, wherein each of the multiple lanes includes a lane index, (d) Shuffling each lane based at least partially on the lane index, (e) A method comprising applying an internal codec to encode each lane in a corresponding polynucleotide sequence, thereby generating a plurality of corresponding polynucleotide sequences.
2. The method according to claim 1, wherein the data includes binary data, and the binary data includes a byte stream or a byte array.
3. The method according to claim 1, wherein the shuffling in (d) includes a rotation method within each lane, includes a pseudo-random process within each lane, and / or provides tolerance to errors.
4. The method according to claim 3, wherein the shuffling in (d) provides resistance to errors, the error being a nucleotide synthesis error or a sequencing error.
5. The method according to claim 4, wherein the error includes deletion, insertion, or substitution.
6. The method according to claim 1, wherein the error correction method includes a Reed-Solomon (RS) code, a low-density parity check (LDPC) code, a turbo code, a pole code, or any combination thereof.
7. The plurality of frames includes approximately 100 to approximately 10,000 frames, Each frame contains approximately 5000 lanes or less. Each lane contains approximately 100 to 300 bits. Each frame index contains approximately 16 to 20 bits. The lane index includes approximately 12 bits or approximately 16 bits, and / or The method according to claim 1, wherein each corresponding polynucleotide sequence among the plurality of corresponding polynucleotide sequences has a length of about 100 to about 300 bases.
8. The method according to claim 1, wherein, prior to (d), the frame index and / or the lane index are added to the beginning of each lane.
9. The method according to claim 1, wherein applying the internal codec includes adding redundancy across the plurality of corresponding polynucleotide sequences, wherein the redundancy is about 5% to about 10%.
10. Applying the internal codec is (a) Combining symbols, symbol history, and symbol positions from lanes, (b) The method according to claim 1, comprising generating base candidates using a lookup table, a hash, or both.
11. The method according to claim 10, further comprising performing a base repeat check, updating the symbol history, incrementing the lane index, incrementing the frame index, or any combination thereof.
12. Each lane includes a plurality of symbols, and the internal codec is applied, (a) Using a lookup table to generate base candidates for each symbol in a lane, (b) The method according to claim 1, further comprising selecting the following lookup table based at least partially on previously encoded symbols.
13. A method for encoding data, (a) generating an internal codec including a codebook, wherein the codebook is optimized for one or more constraints, (b) A method comprising applying the internal codec to encode the data as a plurality of polynucleotide sequences.
14. The method according to claim 13, wherein one or more constraints relate to nucleic acid synthesis, post-processing, storage, sequencing, or any combination thereof.
15. (c) The method according to claim 13, further comprising synthesizing a plurality of polynucleotides comprising the plurality of polynucleotide sequences.
16. The method according to claim 13, wherein the codebook includes codewords generated at least partially on the basis of base sequence.
17. The method according to claim 16, wherein the base sequence includes a predetermined base transfer.
18. The internal codec includes two or more codebooks, The method according to claim 13, wherein each of the two or more codebooks encodes a layer during the synthesis of a plurality of polynucleotides.
19. The method according to claim 18, wherein the layer comprises the extension of each polynucleotide among the plurality of polynucleotides by at least one base.
20. The method according to claim 15, wherein (c) is the synthesis of the plurality of polynucleotides on a solid support.