Apparatus and method for embedding data in genetic material

By using the fountain code program to encode and decode data, the problem of low data storage and decoding efficiency in genetic material is solved, achieving efficient and reliable data storage and decoding.

CN118715528BActive Publication Date: 2026-06-09CUSTOMARRAY INC

Patent Information

Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
CUSTOMARRAY INC
Filing Date
2022-12-22
Publication Date
2026-06-09

AI Technical Summary

Technical Problem

Existing computing systems suffer from inefficiency and unreliability in data encoding and decoding, especially in storing and retrieving data from genetic material such as DNA/RNA.

Method used

The fountain code program is used to encode and decode data. By segmenting user data into multiple data blocks and encoding them using fountain code seeds and metadata, combined with polynucleotide chain synthesis technology, the data can be stored and decoded in genetic material.

Benefits of technology

It improves the efficiency and reliability of data storage and decoding, ensures data integrity and security, and adapts to the characteristics of genetic material.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN118715528B_ABST
    Figure CN118715528B_ABST
Patent Text Reader

Abstract

Methods, systems, and devices for encoding data for storage in genetic material are disclosed. For example, a computing system can segment user data into a plurality of data blocks and generate seed data characterizing a plurality of fountain code seeds. Additionally, the computing system can, for each data block, implement a set of operations to generate one or more data packets. In some instances, the set of operations can include, for each of the plurality of fountain code seeds, determining a bit value and a corresponding meta code value, and determining which of the fountain code seeds has a meta code value for the bit value that matches a value for the bit position identified in the metadata. Furthermore, the computing system can, for each data packet, cause implementation of a second set of operations to synthesize a polynucleotide strand from at least the bit values of the corresponding data packet.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Cross-reference to related applications

[0002] This application claims priority to U.S. Provisional Patent Application No. 63 / 295,756, filed December 31, 2021. The disclosure of the provisional application is expressly incorporated herein by reference in its entirety. Technical Field

[0003] The disclosed embodiments, which are generally related to this disclosure, generally involve the encoding and decoding of data. Background Technology

[0004] In some examples, a computing system may encode data (such as a user's profile) for efficient transmission or storage. In these examples, the computing system may encode data by altering or changing it to a format different from the original data format. Additionally, such a computing system may decode encoded data or convert encoded data back to its original format. Summary of the Invention

[0005] According to one aspect, a computing system may include a non-transitory machine-readable storage medium storing instructions, and at least one processor coupled to the non-transitory machine-readable storage medium. The at least one processor may be configured to segment user data into a plurality of data blocks. In some examples, each data block may include metadata. Additionally, the at least one processor may be configured to generate seed data. In some examples, the seed data characterizes a plurality of fountain code seeds. Furthermore, the at least one processor may be configured to, for each of the plurality of data blocks, implement a first set of operations to generate one or more data packets. In some examples, the set of operations may include determining a bit value that identifies a bit position in the metadata and a metacode value that identifies and characterizes information conveyed by the corresponding bit value, and determining which of the plurality of fountain code seeds has a metacode value that matches the value of the bit position identified in the metadata, each of the one or more data packets being associated with a fountain code seed among the plurality of fountain code seeds that has a metacode value that matches the value of the bit position identified in the associated metadata. Furthermore, the at least one processor may be configured to, for each data group, cause the implementation of a second set of operations to synthesize a polynucleotide chain based at least on the bit values ​​of the corresponding data group.

[0006] According to another aspect, a non-transitory machine-readable storage medium stores instructions that, when executed by at least one processor of a server, cause the at least one processor to perform operations including segmenting user data into multiple data blocks. In some examples, each data block may include metadata. Additionally, the at least one processor may perform operations including generating seed data. Furthermore, the at least one processor may perform a first set of operations including generating one or more data packets for each of the multiple data blocks. In some examples, the set of operations may include determining a bit value that identifies a bit position in the metadata and a metacode value that identifies and characterizes information conveyed by the corresponding bit value, and determining which of the multiple fountain code seeds has a metacode value that matches the bit value identified in the metadata, each of the one or more data packets being associated with a fountain code seed having a metacode value that matches the bit value identified in the associated metadata. Furthermore, the at least one processor may perform a second set of operations including, for each data packet, causing the synthesis of a polynucleotide chain at least based on the bit value of the corresponding data packet.

[0007] According to another aspect, a method may include segmenting user data into multiple data blocks. In some examples, each data block may include metadata. Additionally, the method may include generating seed data. In some examples, the seed data may characterize multiple fountain code seeds. Furthermore, the method may include, for each of the multiple data blocks, implementing a first set of operations to generate one or more data packets. In some examples, the set of operations may include determining bit values ​​that identify bit positions in the metadata and identifying and characterizing metacode values ​​that convey information by the corresponding bit values, and determining which of the multiple fountain code seeds has a metacode value that matches the value of the bit position identified in the metadata, each of the one or more data packets being associated with a fountain code seed among the multiple fountain code seeds that has a metacode value that matches the value of the bit position identified in the associated metadata. Furthermore, the method may include, for each data packet, causing a second set of operations to be implemented at least based on the bit values ​​of the corresponding data packet to synthesize a polynucleotide chain. Attached Figure Description

[0008] Figure 1 It is a block diagram of an exemplary computing environment according to some exemplary implementations;

[0009] Figures 2 to 6 This is a block diagram illustrating a portion of an exemplary computing environment according to some exemplary embodiments;

[0010] Figure 7 This is a flowchart of an exemplary process 700 for monitoring digital assets associated with a distributed ledger;

[0011] Figure 8 This is a flowchart of an exemplary process for decoding data derived from genetic material.

[0012] The same element symbols and names in various diagrams indicate the same element. Detailed Implementation

[0013] Although the features, methods, apparatuses, and systems described herein may be embodied in various forms, some exemplary and non-limiting embodiments are shown in the figures and described below. Some components described in this disclosure are optional, and some implementations may include components other than those expressly described in this disclosure, or fewer components than those expressly described in this disclosure.

[0014] The embodiments described herein pertain to computing environments including computing systems configured to encode data using fountain code procedures for storage in genetic material (such as DNA / RNA). Additionally, the computing system can be configured to decode data previously stored in genetic material (such as DNA / RNA) based on FC procedures.

[0015] A. Exemplary computing environment

[0016] Figure 1 The diagram illustrates a block diagram of an example computing environment 100, which includes, in particular, one or more computing systems (such as encoder-decoder (ED) computing system 110 and genetic computing system 120) and one or more devices (including one or more client devices 101 (such as client device 101A, client device 101B, and client device 101C)). Each of the one or more computing systems (such as ED computing system 110 and genetic computing system 120) and the one or more client devices 101 may be operatively connected to and interconnected across one or more communication networks (such as communication network 130). Examples of communication networks 130 include (but are not limited to) wireless local area networks (LANs) (e.g., “Wi-Fi” networks), networks utilizing radio frequency (RF) communication protocols, near field communication (NFC) networks, wireless metropolitan area networks (MANs) connecting multiple wireless LANs, and wide area networks (WANs) (e.g., the Internet). In some instances, computing devices and computing systems operating within computing environment 100 may perform operations to establish and maintain one or more secure communication channels across communication network 130, such as (but not limited to) Transport Layer Security (TLS) channels, Secure Sockets Layer (SSL) channels, or any other suitable secure communication channel.

[0017] As described herein, one or more client devices 101 (such as client device 101A) may each transmit user profiles or user data to the ED computing system 110. Furthermore, as described herein, the ED computing system 110 may implement operations that encode data using fountain code (FC) procedures for storage in genetic material (such as DNA / RNA), and in some instances, may decode data previously stored in such genetic material based on FC procedures. Additionally, one or more client devices 101 (client devices 101A) may include computing devices having one or more tangible non-transitory memories (such as memory 102) configured to execute software instructions. In some aspects, the one or more tangible non-transitory memories may store software applications, application modules, and other elements of code executable by one or more processors, such as (but not limited to) an executable web browser (e.g., Google Chrome). TM Apple Safari TM And, additionally or alternatively, an executable application (e.g., application 104) associated with a computing system (such as ED computing system 110). Figure 1 In some instances not shown, memory 102 may also include one or more structured or unstructured data stores or databases, and instruction to one or more client devices 101 may maintain one or more elements of device data and location data within one or more structured or unstructured data stores or databases. For example, elements of device data may uniquely identify client device 101 within computing environment 100 and may include (but are not limited to) an Internet Protocol (IP) address assigned to client device 101 or a Media Access Control (MAC) layer assigned to client device 101A.

[0018] Furthermore, one or more client devices 101 (such as client device 101A) may also include a display unit 106A configured to present interface elements to a corresponding user and an input unit 106B configured to receive input from the user. For example, the input unit 106B is configured to receive input from the user in response to interface elements presented through the display unit 106A. For example, the display unit 106A may include (but is not limited to) an LCD display unit or other suitable type of display unit, and the input unit 106B may include (but is not limited to) a keypad, keyboard, touchscreen, voice-activated control technology, or other suitable type of input unit. In addition, in other aspects ( Figure 1(Not shown in the image), the functionality of display unit 106A and input unit 106B can be combined into a single device, such as a pressure-sensitive touchscreen display unit that presents interface elements and receives input from a user of client device 101 (such as client device 101A). One or more client devices 101 may also include a communication interface 106C, such as a wireless transceiver device, which is coupled to processor 105 and configured by processor 105 to communicate via one or more communication protocols (such as WiFi®, Bluetooth®, NFC), cellular communication protocols (…). For example LTE®, CDMA®, GSM®, etc., or any other suitable communication protocol to establish and maintain communication with the communication network 130.

[0019] Examples of one or more client devices 101 may include (but are not limited to) personal computers, laptop computers, tablet computers, notebook computers, handheld computers, personal digital assistants, portable navigation devices, mobile phones, smartphones, wearable computing devices (e.g., smartwatches, wearable activity monitors, wearable smart jewelry and glasses, and other optical devices including optical head-mounted displays (OHMDs), embedded computing devices (e.g., communicating with smart textiles or electronic fabrics), and any other type of computing device that can be configured to store data and software instructions, execute software instructions to perform operations, and / or display information on an interface device or unit (such as display unit 106A). In some instances, client device 101 may also establish communication across wired or wireless communication channels (via communication interface 106C using any suitable communication protocol) with one or more additional computing systems or devices operating within computing environment 100. Furthermore, a user can operate client device 101 and can perform actions to cause client device 101 to perform one or more exemplary processes described herein.

[0020] Return to reference Figure 1 The encoder-decoder (ED) computing system 110 can represent a computing system including one or more servers (such as server 110A) and one or more tangible, non-transitory memory devices storing executable code, application engines, or application modules. Each of the one or more servers may include one or more processors configured to execute the stored code, application engine, or module or part of an application to perform operations consistent with the disclosed exemplary embodiments. For example, such as Figure 1 As shown, one or more servers of the ED computing system 110 may include server 110A, the server having one or more processors configured to execute portions of code, application engines or modules or applications stored in one or more tangible non-transitory memories.

[0021] In some instances, the ED computing system 110 may correspond to a discrete computing system, although in other instances, the ED computing system 110 may correspond to a system with a suitable computing network (such as...) Figure 1 A distributed computing system consisting of multiple computing components distributed across a communication network (130), or provided by one or more cloud-based providers (such as Microsoft Azure). TM Amazon Web Services TM The computing system is established and maintained by (or another third-party cloud service provider). Furthermore, the ED computing system 110 may also include one or more communication interfaces (such as one or more wireless transceivers) coupled to one or more processors to accommodate communication across the communication network 130 with other computing systems and devices operating within the computing environment 100. Figure 1 Wired or wireless Internet communication (not shown in the image).

[0022] As described herein, the ED computing system 110 can execute any of the exemplary processes described herein to encode data, in particular, using a fountain code (FC) procedure for storage in genetic material (such as DNA / RNA). Additionally, in some examples, the ED computing system 110 can decode data previously stored in such genetic material based on an FC procedure. To facilitate the execution of these exemplary processes, the ED computing system 110 can be maintained in one or more tangible, non-transitory storage devices, such as a data repository 111 including, but not limited to, a user data database 112, a metadata database 113, a fountain code (FC) seed database 114, an encoded data database 115A, a decoded data database 115B, and a mapped data database 116. The user data database 112 can store user data received from one or more client devices 101. In some instances, the user data database 112 can store one or more fragments or blocks of user data received from one or more client devices 101. In these instances, the server 110A of the ED computing system 110 can execute the procedures described herein to segment the user data into one or more fragments or blocks of data. In various instances, each of one or more segments or blocks of data may be non-overlapping and may be approximately equal in size (e.g., equal bit length).

[0023] Additionally, metadata database 113 may store metadata generated by ED computing system 110. Each part of the metadata may identify and characterize information about a corresponding fragment or data block stored in user data database 112. Examples of information about one or more fragments or data blocks include an identifier associated with the corresponding fragment or data block (e.g., a block identifier), an identifier associated with each data element included in the corresponding fragment or data block (e.g., a bit identifier), and information or values ​​associated with each data element (such as “isZero,” “isOne,” or “noInfo.”). As described herein, the information or values ​​associated with each data element may represent the state of multiple states. For example, data elements having values ​​representing a state (“isZero” or “isOne”) may each transmit the value 0 or 1 respectively. In another instance, data elements having values ​​representing a state (“noInfo”) may each not transmit any specific information about a particular state. In some instances, the “noInfo” state may be used as a delimiter to separate multiple parameter values ​​and as padding for any metadata bits exceeding the metadata bits required for transmission.

[0024] Furthermore, in some instances, the information for one or more fragments or data blocks may include hash values ​​that identify and characterize the information corresponding to the fragment or data block (e.g., a hash value corresponding to a data block identifier). Additionally, metadata may include encoding-decoding information that characterizes and identifies several encoding-decoding parameters. Each encoding-decoding parameter may characterize the properties of the encoding and decoding process used for received user data (such as one or more fragments or data blocks). In some instances, the encoding-decoding parameters may be based in part on and depend on the size of the received or acquired user data.

[0025] Furthermore, the FC seed database 114 may store seed data generated by the ED computing system 110. The seed data may identify and characterize several fountain code seeds. Additionally, the size of the fountain code seed may be fixed or a fixed number of values, such as 26 to 32 bits. Furthermore, the size of the fountain code seed may be based on the size of the user data. Furthermore, a particular fountain code seed may correspond to information sufficient to describe the payload content of a corresponding data packet that describes a set of randomly encoded data elements used by the ED computing system 110 when decoding data packets. Furthermore, the ED computing system 110 may embed or include information about metadata of one or more segments or blocks of data stored in the metadata database 113 in one or more fountain code seeds. In some instances, the FC seed database 114 may store seed metadata or metacode. In such instances, the ED computing system 110 may perform operations to generate metadata or metacode for fountain code seeds using one or more mixing functions, as described herein. The one or more mixing functions may be deterministic – producing the same result for a particular data packet regardless of the processing order of the data packets. Additionally, the one or more mixing functions may be unbiased and may have a very flat distribution over the entire set of results.

[0026] Furthermore, the encoded data database 115A can store one or more data packets of encoded received user data. In some examples, the ED computing system 110 can encode the received data by applying an erasure code (such as a fountain code, e.g., Luby Transform) to the received user data. In some instances, for each data block, the ED computing system 110 can apply a fountain code to each data element of each corresponding data block and generate a set of random data elements, which are then encapsulated into one or more portions of the data packet. In such instances, the ED computing system 110 can combine the set of random data elements bit-by-bit in a binary field. The set of randomly combined data elements can be the payload of the corresponding data packet and can include information necessary to describe the original user data when processed (e.g., decoded) using a sufficient number of other data packets. Additionally, for each data packet, the ED computing system 110 can include a fountain code seed corresponding to the content of the payload within the corresponding data packet.

[0027] As described herein, the fountain code seed may be a set of fixed-length random values. Furthermore, the set of fixed-length random values ​​may correspond to information sufficient to describe the content of the payload used by the ED computing system 110 when decoding data packets. Additionally, the fountain code seed may include metadata information of one or more segments or blocks of data stored in the metadata database 113. Furthermore, the data packets may be formatted such that the fountain code seed may precede or follow the payload.

[0028] In some instances, the encoded data database 115A may store encoding-decoding parameters that the ED computing system 110 can utilize when encoding received data packets, as described herein. In such instances, the encoding-decoding parameters may indicate the size of the fountain code seed and / or the payload within the data packet. In various instances, the encoding-decoding parameters may indicate the format of the data packet (e.g., whether the fountain code seed precedes or follows the payload, the size or length of the error correction code (ECC) in the data packet, etc.).

[0029] Additionally, the decoded data database 115B may store data corresponding to the original user data determined based on one or more data packets. In some instances, the decoded data database 115B may include decoded block data. In these instances, the ED computing system 110 may decode one or more data packets to reconstruct one or more data blocks of user data. In other instances, the decoded data database 115B may include reconstructed user data corresponding to the original user data received from the user's client device 101. In these instances, the ED computing system 110 may combine one or more decoded block data to generate or reconstruct the original user data corresponding to the original data. In some instances, the decoded data database 115B may store encoding-decoding parameters that the ED computing system 110 can utilize when decoding encoded data packets, as described herein. In these instances, the encoding-decoding parameters may indicate the size of the fountain code seed and / or the payload within the data packet. In various instances, the encoding-decoding parameters may indicate the format of the data packet (e.g., whether the fountain code seed precedes or follows the payload, the size or length of the ECC in the data packet, etc.).

[0030] Furthermore, the mapping data database 116 can store mapping data. The mapping data can identify specific bases and their corresponding position pairs. The mapping data can be modified and generated by the operator of the ED calculation system 110. Examples of position pairs and corresponding bases may include 00 = adenine, 01 = cytosine, 10 = guanine, and 11 = thymine. In some instances, the mapping data database 116 can store sequence mapping data generated by the ED calculation system 110. The sequence mapping data may include data identifying the corresponding sequences of bases in the obtained data groups.

[0031] Furthermore, and to facilitate the execution of any of the exemplary processes described herein, the ED computing system 110 may include a server 110A that may maintain the application repository 117 in one or more tangible, non-transitory memories. Figure 1As shown, application storage 117 may include, in particular, a segmentation engine 117A, an FC seed engine 117B, an encoding engine 117C, a sequencing engine 117D, and a decoding engine 117E. In some examples, segmentation engine 117A may be executed by one or more processors of server 110A to obtain user data from client device 101 (such as user-operated client device 101A) and segment the user data into one or more fragments or data blocks. For example, the executed segmentation engine 117A may receive user data from client device 101A. Additionally, the executed segmentation engine 117A may segment the user data into multiple (e.g., 4 to 2048) smaller data blocks of approximately equal size that do not overlap. In some instances, the executed segmentation engine 117A may produce the storage of one or more fragments or data blocks within a corresponding portion of data storage 111 (such as user data database 112).

[0032] Additionally, the segmentation engine 117A can generate metadata that identifies and characterizes information about the corresponding data block or segment for each data block or segment. Examples of information about one or more segments or data blocks, as described herein, include an identifier associated with the corresponding segment or data block (e.g., a block identifier), an identifier associated with each data element included in the corresponding segment or data block (e.g., a bit identifier), information or values ​​associated with each data element (e.g., “isZero”, “isOne”, or “noInfo”), and a hash value (e.g., a hash value corresponding to the data block identifier) ​​that identifies and characterizes the information about the corresponding segment or data block. Furthermore, the metadata may include encoding-decoding information that characterizes and identifies several encoding-decoding parameters. Each encoding-decoding parameter can characterize the properties of the encoding and decoding process used for received user data (such as one or more segments or data blocks). In some instances, the encoding-decoding parameters may be based in part on and depend on the size of the received or acquired user data. In some instances, the segmentation engine 117A can generate metadata stored within a corresponding portion of the data store 111 (such as a metadata database 113).

[0033] like Figure 1As shown, the fountain code (FC) seed engine 117B can be executed by one or more processors of server 110A to generate seed data. As described herein, the seed data can identify and characterize several fountain code seeds. The executed FC seed engine 117B can implement a random generator program to generate each of the fountain code seeds included in the seed data. Each of the fountain code seeds can include a set or a fixed number of random values, such as 26 to 32 bits. In some examples, the executed FC seed engine 117B can generate fountain code seeds based on the size of the user data. For example, the executed FC seed engine 117B can obtain all segments or blocks of data that make up the user data from user data database 112 or obtain the entire user data before segmentation. Alternatively, the executed FC seed engine 117B can determine the size of the user data based on all segments or blocks of data or the user data itself. Based on the determined size of the user data, the executed FC seed engine 117B can generate fountain code seeds corresponding to the size of the user data (e.g., the larger the size of the user data, the larger the size of the fountain code seed). Additionally, the fountain code seed generated by the executed FC seed engine 117B may correspond to a specific data block and a set of data elements associated with said specific data block. In some instances, the set of random values ​​included in the fountain code seed may identify the specific data block associated with the fountain code seed, the number of data elements included in the set of data elements associated with said specific data block, and which data elements are included in said number of data elements in the set of data elements associated with said specific block. In such instances, the executed FC seed engine 117B may generate such a fountain code seed based on a portion of the metadata stored in the metadata database 113 associated with said specific block. As described herein, the fountain code seed may include information sufficient to describe the contents of the corresponding data packet that the ED computing system 110 can use when decoding the corresponding data packet. In some instances, the executed FC seed engine 117B may generate seed data including one or more fountain code seeds generated by the executed FC seed engine 117B.

[0034] In other instances, the executed FC seed engine 117B may embed or include portions of metadata stored in the metadata database 113 that characterizes and identifies several encoding-decoding parameters. In such instances, each encoding-decoding parameter may characterize the properties of the encoding and decoding process for received user data (such as one or more fragments or blocks of data). As described herein, the encoding-decoding parameters may be based in part on and depend on the size of the received or acquired user data.

[0035] Additionally, the executed FC seed engine 117B can generate corresponding seed metadata or metacode for each of one or more fountain code seeds. In such instances, for each of the one or more fountain code seeds, the executed FC seed engine 117B can apply one or more blending functions to the corresponding fountain code seed to generate the corresponding seed metadata or metacode. As described herein, the one or more blending functions can be deterministic – producing the same result for a particular data group regardless of the processing order of the data groups, being biased, and having a very flat distribution across the entire set of results. In some instances, each of the one or more blending functions may include a set of XOR shift functions configured for long cyclic pseudo-random number generation.

[0036] In some examples, the blending function may include a blending function that, when applied to a fountain code seed, causes the executed FC seed engine 117B to generate a data block or fragment identifier associated with a valid data block. The data block or fragment identifier may identify a data block or fragment associated with a group of random data elements included in a data group of encoded random data elements. Furthermore, the data block or fragment identifier may indicate to the ED computing system 110 which data block or fragment the group of random elements is associated with during the decoding process. In some instances, the blending function may generate the data block or fragment identifier based on the value of the fountain code seed and the fountain code seed size. In other examples, the blending function may include a blending function that, when applied to a fountain code seed, causes the executed FC seed engine 117B to generate a value representing one of several possible states (e.g., "isZero", "isOne", "noInfo") for each identified data element in the group of random values ​​included in the fountain code seed. In various examples, the blending function may include a blending function that, when applied to a fountain code seed, causes the executed FC seed engine 117B to generate a value representing a corresponding metadata bit for each identified data element in the group of random values ​​included in the fountain code seed. In some instances, the value representing the corresponding metadata bit may indicate to the ED calculation system 110 which generated value representing one of a plurality of states is associated with which data element. In other instances, the value may be between 0 and the metadata size minus one. In various instances, all fountain code seeds and associated data groups can be processed using the same configured blending function.

[0037] Return to reference Figure 1The executed FC seed engine 117B can generate seed metadata for each fountain code seed. The seed metadata may include a corresponding data block or fragment identifier, a corresponding value representing one of several states, and a corresponding value representing metadata bits. In some instances, the executed FC seed engine 117B may store the seed metadata for each fountain code seed in a corresponding part of the data store 111 (such as the FC seed database 114).

[0038] For example, a first blending function may be configured to generate a data block or fragment identifier associated with a valid data block; a second blending function may be configured to generate a value representing one of several possible states (e.g., "isZero", "isOne", "noInfo") that the corresponding data element can take for each identified data element in the set of random values ​​included in the fountain code seed; and a third blending function may be configured to generate a value representing the corresponding metadata bit for each identified data element in the set of random values ​​included in the fountain code seed. In such an example, the executed FC seed engine 117B can obtain seed data and apply the first, second, and third blending functions to a specific fountain code seed (e.g., 24 to 32 bits) of the seed data. Furthermore, based on the application of the first blending function to the specific fountain code seed, the executed FC seed engine 117B can generate a 2 to 11-bit data block or fragment identifier representing a specific data block or fragment associated with the specific fountain code seed. Furthermore, based on the application of a second blending function to a specific fountain code seed, the executed FC seed engine 117B can generate values ​​associated with each element identified in the specific fountain code seed, such as "isZero", "isOne", and "noInfo". Additionally, based on the application of a third blending function to a specific fountain code seed and for each element identified in the specific fountain code seed, the executed FC seed engine 117B can generate values ​​representing special metadata bits.

[0039] Return to reference Figure 1Encoding engine 117C can be executed by one or more processors of server 110A to encode user data obtained from one or more client devices 101. In some examples, the executed encoding engine 117C can encode each segment or block of user data. In such examples, the executed encoding engine 117C can encode multiple segments or blocks of user data simultaneously, in parallel, or alternatively serially. Additionally, the executed encoding engine 117C can apply a fountain code (e.g., a rupee transformation) to each data element of each corresponding data block or segment for each data block or segment. Furthermore, the executed encoding engine 117C can generate a set of random data elements and encapsulate them into one or more portions of a data packet. Furthermore, the executed encoding engine 117C can combine the set of random data elements bit-by-bit in a binary field. The set of randomly combined data elements can be the payload of a corresponding data packet and can include information necessary to describe the original user data when processed (e.g., decoded) using a sufficient number of other data packets.

[0040] In some examples, the executing encoding engine 117C may utilize fountain code seed data to generate one or more data packets. In such examples, the executing encoding engine 117C may obtain metadata for each fragment or data block of user data obtained from one or more client devices 101 (such as client device 101A) to initialize the executing encoding engine 117C. Additionally, the executing encoding engine 117C may obtain seed data and corresponding seed metadata from the FC seed database 114. Furthermore, for each data block or fragment, the executing encoding engine 117C may select a specific potential fountain code seed. Based on the corresponding seed metadata of the potential fountain code seed and the metadata associated with the corresponding data block or fragment, the executing encoding engine 117C may determine whether an identifier identified in the metadata of the corresponding data block or fragment matches the data block or fragment identifier of the seed metadata. In examples where the executing encoding engine 117C determines that an identifier identified in the metadata of the corresponding data block or fragment does not match the data block or fragment identifier of the seed metadata, the executing encoding engine 117C may select another potential fountain code seed. Furthermore, the executing encoding engine 117C can repeatedly determine whether the identifier identified in the metadata of the corresponding data block matches the data block identifier of the seed metadata of the second potential fountain code seed. The executing encoding engine 117C can continue to repeat the process until the data block identifier of the potential fountain code matches the identifier identified in the metadata of the corresponding data block.

[0041] In an example where the executing encoding engine 117C determines that the identifier identified in the metadata of the corresponding data block or fragment matches the data block or fragment identifier of the seed metadata, the executing encoding engine 117C may determine whether the potential fountain code seed has been used to generate another data block containing a set of random data elements. In an example where the executing encoding engine 117C determines that the fountain code seed has been used to generate another data block containing a set of random data elements, the executing encoding engine 117C may select another potential fountain code seed. As described herein, the executing encoding engine 117C may repeat the above process to determine potential fountain code seeds that include a data block identifier that matches the identifier identified in the metadata of the corresponding data block and has not yet been used to generate another data block containing a set of random data elements.

[0042] In an example where the executing encoding engine 117C determines that a potential fountain code seed has not yet been used to generate another data block containing a set of random data elements, the executing encoding engine 117C may determine whether one or more values ​​represented in the corresponding metadata bits in the seed metadata and a corresponding value representing one of multiple states (e.g., "isZero", "isOne", "noInfo") are identified in the metadata of the corresponding block data or fragment. In an example where the executing encoding engine 117C determines that one or more values ​​represented in the corresponding metadata bits in the seed metadata and a corresponding value representing one of multiple states are not identified in the metadata of the corresponding block data or fragment, the executing encoding engine 117C may select another potential fountain code seed. As described herein, the encoding engine 117C that is executed can repeat the above process to determine a potential fountain code seed, which (1) includes a data block identifier that matches an identifier identified in the metadata of the corresponding data block, (2) another data group that has not yet been used to generate a set of random data elements, and (3) includes one or more values ​​identified in the metadata of the corresponding block data that are represented in the corresponding metadata bits in the seed metadata and a corresponding value that represents one of a number of states (e.g., “isZero”, “isOne”, “noInfo”).

[0043] In an example where the executing encoding engine 117C determines that it identifies one or more values ​​in the corresponding metadata bits of the seed metadata and corresponding values ​​representing one of a plurality of states in the metadata of the corresponding block data or fragment, the executing encoding engine 117C may utilize the latent fountain code seed and / or the corresponding seed metadata to generate data packets having a payload corresponding to the latent fountain code seed. For example, the payload may include the set of random data elements identified in the latent fountain code seed and / or the corresponding seed metadata. Additionally, as described herein, each data element in the set of random data elements may be encoded by the executing encoding engine 117C using a fountain code (e.g., a rupee transform). In some instances, the executing encoding engine 117C may combine each of the encoded data elements in the set of random data elements and encapsulate the combined encoded data elements into one or more portions of a data packet. Furthermore, as described herein, the executing encoding engine 117C may encapsulate a corresponding latent fountain code seed into one or more portions of a data packet. As described herein, the fountain code seed may have a size of a set of random values ​​of fixed length and may correspond to information sufficient to describe the set of random data elements included in the payload of the data packet. The ED computing system 110 uses the data packet during decoding. Furthermore, as described herein, the fountain code seed may include metadata information of the corresponding fragment or block of data. In some instances, the executing encoding engine 117C may store the resulting data packets within a corresponding portion of the data store 111 (such as the encoded data database 115A).

[0044] In other examples, the executing encoding engine 117C may add error correction codes (ECCs) to the data packets. The ECCs may be used by the ED calculation system 110 to control errors in the corresponding data packets during the decoding process (e.g., to recover lost bits or correct erroneous bits during decoding). In some instances, encoding-decoding parameters may instruct the corresponding data packets to be formatted such that the ECC follows the payload. In such instances, based on the encoding-decoding parameters, the executing encoding engine 117C may produce data packets with ECC codes following the payload.

[0045] like Figure 1As shown, the sequencing engine 117D can be executed by one or more processors of server 110A to generate sequence mapping data for each of one or more data packets stored in encoded data database 115A. In such examples, the executed sequencing engine 117D can obtain mapping data from mapping data database 116. As described herein, the mapping data can identify specific bases and corresponding position pairs. The mapping data can be modified and generated by an operator of ED computing system 110. Examples of position pairs and corresponding bases may include position pair 00 corresponding to adenine, position pair 01 corresponding to cytosine, position pair 10 corresponding to guanine, and position pair 11 corresponding to thymine. Additionally, the executed sequencing engine 117D can obtain data packets stored in encoded data database 115A. Furthermore, the executed sequencing engine 117D can identify or determine the bit sequence of the fountain code seed and the payload (e.g., the packet has encoded random data elements) included in the data packet. Based on the bit sequence and mapping data of the determined or identified data blocks, the executed sequencing engine 117D can determine the corresponding base sequence. Furthermore, based on the determined corresponding base sequence, the executed sequencing engine 117D can generate sequence mapping data that identifies the corresponding base sequence of the obtained data blocks. In some instances, the executed sequencing engine 117D can add one or more primers (such as front and back primers) to the sequence mapping data. For example, the executed sequencing engine 117D can add a front primer to the beginning of the base sequence associated with the data block and add a back primer to the end of the base sequence. Information associated with the sequence of each of the one or more primers can be included in the metadata of each in the data block or fragment. In various instances, the front and back primers can be of a known or encoded fixed length or size in the executed sequencing engine 117D.

[0046] In other instances, the executed sequencing engine 117D may determine whether a synthesized polynucleotide chain based on a base sequence identified in sequence mapping data is sufficiently stable for synthesis. In such instances, the executed sequencing engine 117D may determine whether the base sequence identified in sequence mapping data satisfies one or more sequence criteria. Examples of one or more sequence criteria include criteria associated with repeating bases (e.g., the number of bases in a sequence exceeds a threshold number of bases), criteria associated with base patterns (e.g., the base sequence should have several patterns below a threshold number), and criteria associated with base ratios (e.g., a criterion indicating that the base ratio should be 50 / 50 AT with GC). In the example where the executed sequencing engine 117D determines that a base sequence identified in sequence mapping data satisfies one or more sequence criteria, the executed sequencing engine 117D may store the sequence mapping data in a mapping data database 116.

[0047] In various instances, the executing sequencing engine 117D can determine whether each data element of each data block is included in the sequence mapping data 308 of each data group 306. In such instances, the executing sequencing engine 117D can utilize the metadata of each data block to determine whether each data element of each data block is included in the sequence mapping data 308 of each data group 306 stored in the mapping data database 116. In an example where the executing sequencing engine 117D determines that one or more data elements of one or more data blocks containing user data (such as user data 103) are missing from the sequence mapping data 308 of each data group 306 stored in the mapping data database 116, the executing sequencing engine 117D can signal or instruct the encoding engine 117C to continue encoding the missing data elements of the incomplete data block or fragment. Otherwise, the executing sequencing engine 117D can transmit the sequence mapping data of each data group to the server 120A of the genetic computing system 120. In such examples, the executing sequencing engine 117D can generate a message. Additionally, the executing sequencing engine 117D can encapsulate the sequence mapping data of each data block within one or more portions of a message. Furthermore, the executing sequencing engine 117D can transmit the message including the sequence mapping data of each data block to the server 120A of the genetic computing system 120. As described herein, the genetic computing system 120 can utilize the sequence mapping data to generate corresponding polynucleotide chains and store the corresponding polynucleotide chains in a polynucleotide chain pool. The polynucleotide pool may include multiple polynucleotide chains, each corresponding to a specific data block or fragment of user data.

[0048] In some examples, the executed sequencing engine 117D can perform operations to determine corresponding position sequences based on the base sequence of a specific polynucleotide chain. In these examples, the genetic computing system 120 can process one or more polynucleotide chains in a polynucleotide chain pool and sequence the polynucleotide chains and generate sequence data that identifies the base sequence of each polynucleotide chain. Additionally, the genetic computing system 120 can transmit sequence data to the executed sequencing engine 117D. The executed sequencing engine 117D can determine the position sequence corresponding to the base sequence in the polynucleotide chain identified in the sequence data based on mapping data obtained from the mapping data database 116 and the sequence data. Additionally, the executed sequencing engine 117D can generate sequence position data that identifies the position sequence corresponding to the base sequence in the polynucleotide chain identified in the sequence data. In some instances, the polynucleotide chain may include primers (such as front primers and / or back primers) at both ends of the fountain code seed and the payload. In these instances, the base sequences in the front primer and the back primer are identical for each polynucleotide chain corresponding to a data group. Figure 1 This information, not shown, may be obtained or encoded into the executed sequencing engine 117D and can be used to identify and / or trim primers from the sequence of polynucleotide chains identified in the sequence data generated by the genetic computing system 120. In other instances, the polynucleotide chain may not include primers, such as front and / or back primers. In these instances, the executed sequencing engine 117D may not need to identify and trim primers from the sequence of polynucleotide chains identified in the sequence data generated by the genetic computing system 120. In various instances, the executed sequencing engine 117D may store sequence data and sequence position data in one or more portions of the data store 111.

[0049] In other examples, one or more processors of server 110A may execute a preflight engine to perform a set of preflight or preprocessing operations to determine an estimated distribution of data blocks or fragments. In such examples, the executed preflight engine may obtain sequence bit data associated with a set of random polynucleotide chains (e.g., a set of 100,000 to 200,000 polynucleotide chains in a pool of 10,000,000 polynucleotide chains) from a mapping data database 116. In some instances, the set of random polynucleotide chains may include primers, such as front-end primers and back-end primers. In such instances, the executed preflight engine may determine bit sequences based on the sequence bit data and identify portions of the bit sequences corresponding to the primers (described herein as “primer portions”) based on information known or encoded into the executed preflight engine that is associated with the length and size of the primers. Furthermore, the executed preflight engine may identify portions of the sequence of bits between the primer portions and determine these portions as bits corresponding to the fountain code seed and the associated payload, and the size of these portions. Alternatively, in instances where the set of random polynucleotide chains does not include primers, the executed pre-detection engine may not trim the positional sequences corresponding to the set of random polynucleotide chains. In such instances, the executed synthesis engine 121A may implement a biological protocol using custom sequence primers that have the effect of removing the front and / or back primers of the polynucleotide sequence. Thus, the remaining polynucleotide sequence can be sequenced by the sequencing engine 121B, and the corresponding positional sequences generated by the sequencing engine 117D may correspond to the fountain code seed portion and the associated payload portion.

[0050] Furthermore, the pre-detection engine can obtain encoding-decoding parameters from the decoded data database 115B and determine which portion of the bits corresponding to the fountain code seed and associated payload is both the fountain code seed and the payload. For example, the encoding-decoding parameters can instruct the corresponding data packet to be formatted such that the fountain code seed precedes the payload. Additionally, the encoding-decoding parameters can indicate the fountain code seed size and / or the payload size. In summary, the pre-detection engine can determine, based on the encoding-decoding parameters, which portion of the bits corresponding to the fountain code seed and associated payload is both the fountain code seed and the payload.

[0051] In the example where the ED computing system 110 has encoded and decoded user data of varying sizes, the size of the bit sequence corresponding to the fountain code seed and the payload can be changed. Figure 1 In these examples, not shown, the data block mapping data may be stored in the ED computing system 110. For each variation in the size of the bit sequence corresponding to the fountain code seed and the payload, the data block mapping data may at least indicate a specific format (e.g., whether the fountain code seed precedes or follows the payload), and the size of the fountain code seed and / or the payload. Additionally, when the pre-detection engine performs the aforementioned block pre-detection or preprocessing operation, the pre-detection engine may determine the size of all portions of the sequence of bits between the primer portions and determine the majority size. Based on the majority size and the data block mapping data, the pre-detection engine may determine the estimated fountain code seed size, the payload size, and which portions of the sequence of bits between the primer portions correspond to the fountain code seed and which portions of the sequence of bits between the primer portions correspond to the payload.

[0052] Return to reference Figure 1 Based on determining which parts of the bit sequence correspond to the fountain code seed (described herein as "fountain code seed parts"), the executed preflight engine can determine the identifier of the data block for each fountain code seed part. Furthermore, the executed preflight engine can determine the distribution of identifiers for the data blocks based on the identifiers determined according to each fountain code seed part. In some instances, the executed preflight engine can generate a histogram identifying and characterizing the determined breakdowns or compositions of the distribution of identifiers for the data blocks. Alternatively or concurrently, the executed preflight engine can generate data block planning data that identifies and characterizes the determined breakdowns or compositions of the distribution of identifiers for the data blocks. In some instances, the executed preflight engine can store the generated data block planning data in a corresponding portion of data storage 111 (such as decoded data database 115B).

[0053] Decoding engine 117E may be executed by one or more processors of server 110A to decode encoded data packets. In some examples, the executed decoding engine 117E may perform a set of operations to recover or generate seed metadata or metacode corresponding to each identified or determined portion of the bit sequence associated with the second set of polynucleotide chains. In some examples, the second set of polynucleotide chains may be all sequenced polynucleotide chains. Additionally, the executed decoding engine 117E may obtain sequence bit data associated with the second set of polynucleotide chains in the polynucleotide chain pool from mapping data database 116. Based on the sequence bit data of the second set of polynucleotide chains, the executed decoding engine 117E may determine the bit sequence associated with the second set of polynucleotide chains. In instances where the second set of polynucleotide chains includes primers (such as front-end and back-end primers), the executed decoding engine 117E may identify portions of the sequence corresponding to the positions of the primer portions based on information known or encoded into the executed decoding engine 117E and associated with the length and size of the primers, and trim the primer portions. Each of the remaining portions may correspond to the fountain code seed portion and the associated payload portion. Alternatively, in instances where the second set of polynucleotide chains does not include primers, the executed decoding engine 117E may not trim the position sequences corresponding to the second set of polynucleotide chains. In such instances, the executed synthesis engine 121A may implement a biological protocol using custom sequence primers that have the effect of removing the front and / or back primers of the polynucleotide sequence. Thus, the remaining polynucleotide sequences may be sequenced by the sequencing engine 121B, and the corresponding position sequences generated by the sequencing engine 117D may correspond to the fountain code seed portion and the associated payload portion. Furthermore, the executed decoding engine 117E may obtain the encoding-decoding parameters from the decoded data database 115B and determine which portion of the remaining portions is the fountain code seed portion and which portion of the remaining portions is the payload portion.

[0054] In some examples, the executing decoding engine 117E can determine the identifier of the corresponding data block for each fountain code seed portion. Additionally, the executing decoding engine 117E can determine the distribution of identifiers for data blocks associated with the second set of polynucleotide chains based on the determined identifiers of the corresponding data blocks for each fountain code seed portion. In these examples, the executing decoding engine 117E can determine whether the distribution of identifiers for data blocks associated with the second set of polynucleotide chains matches the distribution of identifiers for data blocks identified in the data block plan data. In examples where the distribution of identifiers for data blocks associated with the second set of polynucleotide chains does not match the distribution of identifiers for data blocks identified in the data block plan data, the executing decoding engine 117E can use clustering, multiple read alignments, and majority base calls to perform additional recovery operations. In some instances, based on the distribution of identifiers of data blocks associated with the second set of polynucleotide chains that does not match the distribution of identifiers of data blocks identified in the data block plan data, the executing decoding engine 117E can determine the identifiers of data blocks lost or erroneous in the second set of polynucleotide chains or from the data block plan data. In such instances, the executing decoding engine 117E can perform additional recovery operations on such lost data blocks using clustering, multiple read alignments, and majority base calls.

[0055] In an example where the distribution of identifiers for data blocks associated with the second set of polynucleotide chains matches the distribution of identifiers for data blocks identified in the data block plan data, the executed decoding engine 117E can classify each portion of the bits corresponding to the fountain code seed and the associated portions of the bits corresponding to the payload according to the corresponding data block identifiers. Additionally, the executed decoding engine 117E can generate list data that identifies and characterizes the sequence of bits in each of the fountain code seed portion and the associated payload portion for each identifier in each data block or fragment. In some instances, the executed decoding engine 117E can store the list data in a portion of the data store 111 (such as the decoded data database 115B).

[0056] Furthermore, the executed decoding engine 117E can generate or recover seed metadata or metacode associated with each fountain code seed portion and payload portion of each identifier of a data block. In some examples, the executed decoding engine 117E, similar to the executed FC seed engine 117B, can apply one or more blending functions for each identifier of a data block to each fountain code seed portion to generate corresponding seed metadata or metacode. As described herein, examples of blending functions may include a blending function that, when applied to each fountain code seed portion, causes the executed decoding engine 117E to generate a corresponding data block or fragment identifier. The data block or fragment identifier can identify a corresponding data block or fragment associated with the set of random data elements identified in the corresponding fountain code seed portion. Another example of a blending function may include a blending function that, when applied to each fountain code seed portion, causes the executed decoding engine 117E to generate a value representing one of several possible states (e.g., "isZero", "isOne", "noInfo") for each identified data element in the set of random values ​​identified in the corresponding fountain code seed portion. Furthermore, another example of a mixing function may include a mixing function that, when applied to each fountain code seed portion, causes the executing decoding engine 117E to generate a value representing a corresponding metadata bit for each identified data element in the set of random values ​​identified in the corresponding fountain code seed portion. In some instances, the value representing the corresponding metadata bit may indicate to the executing decoding engine 117E which generated value representing one of a plurality of states is associated with which data element. In other instances, the value may be between zero and the metadata size minus one. In other instances, the executing decoding engine 117E may generate seed metadata or metacode for each fountain code seed portion based on a corresponding data block or fragment identifier, one or more values ​​representing metadata bits respectively, and an associated value representing one of a plurality of states. The seed metadata or metacode for each of the fountain code seed portions may identify and characterize the corresponding data block or fragment identifier, one or more values ​​representing metadata bits respectively, and an associated value representing one of a plurality of states. In these instances, the executing decoding engine 115E may store the seed metadata or metacode within a portion of the data store 111 (such as a decoded data database 115B).

[0057] In some examples, the executing decoding engine 117E can determine whether the corresponding seed metadata or metacode of each corresponding fountain code seed part is consistent with each other for each identifier of a data block or fragment. In such examples, the executing decoding engine 117E can utilize one or more confidence thresholds to determine whether the seed metadata or metacode of each corresponding fountain code seed part is consistent with each other for each identifier of a data block or fragment. In some instances, one or more confidence thresholds can be associated with a number of fountain code seed parts, wherein a metadata bit of a specific value has a specific value representing a specific state among multiple states. For example, for a first data block, the executing decoding engine 117E can obtain seed metadata for 750 fountain code seed parts associated with the identifier of the first data block. In addition, based on the seed metadata of the 750 fountain code seed parts, the executing decoding engine 117E can determine that 500 parts of the fountain code seed parts have corresponding seed metadata indicating that a metadata bit with a specific value of 1 (e.g., metadata bit 1) has a corresponding value representing a specific state "isZero" among multiple states. The executing decoding engine 117E can determine whether the metadata bit with a value of 1 in the first data block has a corresponding value representing the state "isZero" based on a confidence threshold that the number of fountain code seed parts of the seed metadata with a metadata bit having a value of 1 corresponding to the state "isZero" is greater than or equal to a certain number of metadata bits associated with a specific value representing a specific state among a plurality of states. In an instance where the confidence threshold is 250 fountain code seed parts (where the seed metadata has a metadata bit with a value of 1 in the first data block and a corresponding value representing the state "isZero"), the executing decoding engine 117E can determine that the metadata bit with a value of 1 in the first data block has a corresponding value representing the state "isZero". Alternatively, in instances where the confidence threshold is 5000 seed metadata or metacode (where the metadata bit value of the first data block is 1 and the corresponding value represents the state "isZero"), the executing decoding engine 117E may determine that the metadata bit value of the first data block is 1 and may not have the corresponding value representing the state "isZero" or may have the state "isNoInfo".

[0058] In other instances, for a particular data block, one or more confidence thresholds may be based on the maximum number of metadata bits with specific values ​​representing a specific state among multiple states. For example, for a second data block, the executing decoding engine 117E may obtain seed metadata for several fountain code seed portions. Based on the obtained seed metadata, the executing decoding engine 117E may determine that 100 fountain code seed portions have corresponding seed metadata indicating a first corresponding value representing a specific state "isZero" among multiple states for a metadata bit with a specific value of 3 (e.g., metadata bit 3), and 350 fountain code sub-parts have corresponding seed metadata indicating a corresponding value representing a specific state "isOne" among multiple states for a metadata bit with a specific value of 3 (e.g., metadata bit 3). Furthermore, compared to the number of fountain code seed portions having corresponding seed metadata indicating a corresponding value for a specific state "isOne" among multiple states for a metadata bit with a specific value of 3 (e.g., metadata bit 3), the executing decoding engine 117E can determine that the second data block has a corresponding value for a metadata bit with a value of 3 indicating a state "isZero" based on the number of fountain code seed portions having corresponding seed metadata indicating a corresponding value for a metadata bit with a specific value of 3 (e.g., metadata bit 3) indicating a specific state "isZero" among multiple states.

[0059] In other examples, the executing decoding engine 117E can determine whether, for each identifier of a data block or fragment, the payload portion is sufficient for the executing decoding engine 117E to recover the complete corresponding data block. In some instances, the executing decoding engine 117E can make such determinations based on the seed metadata or metacode of each of the corresponding fountain code seed portions. In these instances, the executing decoding engine 117E can determine which data elements of the corresponding data block are identified in the seed metadata of each corresponding fountain code seed portion. Additionally, based in part on the identified data elements, the executing decoding engine 117E can determine whether any and which data elements of the corresponding data block are missing or incorrect. For example, the executing decoding engine 117E can determine which data elements are missing or incorrect by comparing the identified data elements of each fountain code seed portion. For example, the executing decoding engine 117E can determine that all or most of the identified data elements with a meta-bit value of 1 have a corresponding value associated with the state "isOne". Furthermore, the executing decoding engine 117E can determine that a small number of identified data elements with a bit value of 1 have a corresponding value associated with the state "isZero". Therefore, the executing decoding engine 117E can determine that data elements with a bit value of 1 can have a corresponding value associated with the state "IsOne", and that the data element identified using "isZero" is incorrect. In another example, the executing decoding engine 117E can determine that one or more identified data elements have a bit value of 2 but no information is obtained regarding the corresponding value associated with the states of multiple states. Additionally, the executing decoding engine 117E can determine that several identified data elements with a bit value of 2 have a corresponding value associated with the state "isZero". Therefore, the executing decoding engine 117E can determine that data elements with a bit value of 2 but whose associated state value is missing can have a corresponding value associated with the state "isZero".

[0060] Otherwise, in an example where the executing decoding engine 117E determines that all data elements are identified in the seed metadata or metacode of the fountain code seed portion of each data block, the executing decoding engine 117E may perform a set of operations to reconstruct the original user data based on the list data and the seed metadata or metacode of each portion of the fountain seed code corresponding to the identifier of each data block or fragment. In some examples, the executing decoding engine 117E may obtain the list data and seed metadata of the fountain code seed portion of each data block from the decoding data database 115B. Additionally, the executing decoding engine 117E may utilize the list data and seed metadata or metacode to initialize a decoding process, such as a fountain code decoding process. In some instances, the executing decoding engine 117E may implement a decoding process to decode each data block serially or simultaneously / in parallel. In either instance, for each data block, the executing decoding engine 117E may apply the decoding process to the seed metadata and the portion of the list data associated with the identifier of the corresponding data block. Furthermore, for each data block, the executing decoding engine 117E can generate several sets of data elements based on the application of seed metadata during the decoding process and a portion of the list data associated with the identifier of the corresponding data block, according to each payload portion. As described herein, the list data can identify the payload portion obtained from the bit sequence for each data block and the identifier of the data block. Additionally, for each data block, the executing decoding engine 117E can identify information about each data element within each set of data elements. For example, for each data block, the executing decoding engine 117E can identify the metadata bit value associated with each data element in each set, and the corresponding information to be transmitted, such as the status of multiple states (e.g., "isZero", "isOne", "isnoInfo"). Furthermore, for each data block, the executing decoding engine 117E can determine the order of the data elements of each block of data elements reflecting the user data when initially received and segmented by the ED computing system 110 (e.g., the segmentation engine 117A). The order of the data elements is based in part on the seed metadata and a portion of the list data associated with the identifier of the corresponding data block. In some instances, the executing decoding engine 117E can utilize connection graphs to determine the connections between each data element of a particular data block and the order of the data elements.

[0061] In some instances, the executing decoding engine 117E can determine whether all data elements of a particular data block have been identified, whether corresponding values ​​representing one of multiple states have been determined, and whether the order of the data elements has been determined. As described herein, the executing decoding engine 117E can make this determination for each data block identified in the sequence of bits. In instances where the executing decoding engine 117E has determined that all data elements of a particular data block have been identified, that corresponding values ​​representing one of multiple states have been determined, and that the order of the data elements has been determined, the executing decoding engine 117E can reconstruct the particular data block from the corresponding portions of the bits corresponding to the payload based on seed metadata, a portion of list data associated with the identifier of the corresponding data block, and the determined corresponding order of the data elements. In such instances, the executing decoding engine 117E can reconstruct the particular block data by constructing and identifying each data element from the portion of the bits corresponding to the payload and combining each data element according to the determined corresponding order of the data elements. After each data block identified in the sequence of bits has been constructed, the executing decoding engine 117E can combine each constructed data block. The combined data blocks may reflect the original user data received by the ED computing system 110. In some instances, the executing decoding engine 117E may store the combined data blocks and each individually constructed data block in a corresponding portion of the data store 111 (such as the decoded data database 115B). In other instances, the executing decoding engine 117E may generate a message and encapsulate reconstructed user data within one or more portions of the message. In these instances, the executing decoding engine 117E may transmit the message and the included reconstructed user data back to the client device 101 of the user on whom the original user data on which the reconstructed user data was based.

[0062] In various instances, constructing a specific data block can also generate metadata for that specific data block. In such instances, the executing decoding engine 117E can determine the hash value included in the metadata of the specific data block. Additionally, the executing decoding engine 117E can determine whether the information included in the hash value matches the data of the specific data block (e.g., whether a portion of the hash value corresponding to a data block identifier matches the data block identifier included in the specific data block). In instances where the executing decoding engine 117E determines that the information included in the hash value matches the data of the specific data block, the executing decoding engine 117E can determine that the specific data block can be combined with other data blocks that are also determined to have corresponding hash values ​​with information matching the data of the corresponding data block. In instances where the executing decoding engine 117E determines that the information included in the hash value does not match the data of the specific data block, the executing decoding engine 117E can determine that the specific data block may be corrupted. In such instances, the executing decoding engine 117E can perform operations to identify and replace corruption within the specific data block. For example, the executing decoding engine 117E can identify all data elements of a specific data block that may have erroneous or incorrect data (e.g., the value of a specific state of a specific bit value in a set of fountain code portions that is inconsistent with the value of a specific state in other fountain code portions of a specific bit value). Additionally, the executing decoding engine 117E can utilize clustering, multiple read alignments, and / or a majority base calling procedure to recover correct data for such identified data elements in a specific block that may have erroneous or incorrect data. As described herein, the executing encoding engine 117C can generate additional data packets with several sets of redundant random data elements. Therefore, a polynucleotide chain pool may include polynucleotide chains associated with several sets of redundant random data elements that, when sequenced and converted to bit sequences, can be used to identify, recognize, and replace corrupted data within a specific data block.

[0063] Return to reference Figure 1 The genetic computing system 120 can be operated by one or more operators. Additionally, the genetic computing system 120 can represent a computing system including one or more servers (such as server 120A) and one or more tangible, non-transitory memory devices storing executable code, application engines, or application modules. Each of the one or more servers may include one or more processors configured to execute portions of the stored code, application engine, or module or application to perform operations consistent with the disclosed exemplary embodiments. For example, such as... Figure 1 As shown, one or more servers of the genetic computing system 120 may include server 120A having one or more processors configured to execute portions of stored code, application engines or modules, or applications maintained in one or more tangible, non-transitory memories.

[0064] Furthermore, as described herein, the genetic computing system 120 can perform the processes described herein to generate or synthesize polynucleotides corresponding to data packets generated by the ED computing system 110. To facilitate the efficiency of generating or synthesizing polynucleotides corresponding to data packets generated by the ED computing system 110, the genetic computing system 120 can be maintained within one or more tangible, non-transitory memories (such as application storage 121). Application storage 121 may include, in particular, a synthesis engine 121A and a sequencing engine 121B. The synthesis engine 121A can be executed by one or more processors of server 120A to obtain sequence maps from the ED computing system 110. As described herein, sequence map data can identify and characterize the base sequences corresponding to each data packet, which includes a set of random data elements associated with one of the data blocks of user data. In some instances, the sequence map data may include one or more primers. Additionally, the executed synthesis engine 121A can generate instructions and encapsulate the sequence map data within one or more portions of the instructions. Furthermore, the executed synthesis engine 121A can transmit instructions to electrode unit 122. Electrode unit 122 may include one or more electrodes configured to generate or synthesize corresponding polynucleotide chains based on instructions. As described herein, genetic computing system 120 may store polynucleotide chains in a polynucleotide pool. The polynucleotide pool and polynucleotide chains may be associated with the same user data from which the polynucleotide pool and chains are derived.

[0065] Furthermore, the sequencing engine 121B can be executed by one or more processors of server 120A to sequence one or more polynucleotide chains from a polynucleotide pool. In some examples, the executed sequencing engine 121B can communicate with one or more electrodes of electrode unit 122 to sequence one or more polynucleotides detected and measured / sequenced by one or more electrodes in electrode unit 122. Additionally, the executed sequencing engine 121B can generate sequence data that identifies the base sequence in the detected and measured / sequenced one or more polynucleotides. Furthermore, the executed sequencing engine 121B can transfer sequence data to ED computing system 110. As described herein, ED computing system 110 can reconstruct user data associated with the sequence data. In some instances, ED computing system 110 and genetic computing system 120 can be combined. In other instances, such as Figure 1 As shown, the ED computing system 110 and the genetic computing system 120 can be discrete computing systems.

[0066] B. Computer implementation techniques for encoding user data into polynucleotide chains

[0067] As described herein, the encoder-decoder (ED) computing system 110 can perform the operation of encoding data for storage in genetic material, such as one or more polynucleotide chains. Additionally, the ED computing system 110 can utilize a fountain code (FC) procedure to encode this data. The data that the ED computing system 110 can encode can be obtained from one or more client devices 101 (such as client device 101A). In some examples, such as... Figure 2 As shown, client device 101A or any client device 101 (such as client device 101B and / or client device 101C) can transmit corresponding user data to the ED computing system 110. For example, such as Figure 2 As shown, the processor 105 of the client device 101A can obtain user data 103. Additionally, the processor 105 can generate message 202 within one or more portions of the processor 105 and encapsulate user data 103 within one or more portions of the processor 105. The processor 105 can transmit message 202 along with user data 103 to the server 110A of the ED computing system 110.

[0068] like Figure 3 As shown, a programming interface (such as an application programming interface (API) 302) established and maintained by the server 110A of the ED computing system 110 can receive messages 202 including user data 103. As described herein, the ED computing system 110 can receive messages 202 across a communication network 130 via a communication channel programmatically established between the API 302 and any processor of the processor 105 or client device 101 (such as client device 101A, client device 101B, and / or client device 101C). Furthermore, the API 302 can route messages 202 to an executed segmentation engine 117A. The executed segmentation engine 117A can parse messages 202 and obtain user data 103. Additionally, the executed segmentation engine 117A can store user data 103 in a corresponding portion of the data store 111 (such as user data database 112).

[0069] As described herein, the segmentation engine 117A performs the operation of segmenting user data 103 into multiple fragments or data blocks. In some examples, the segmentation engine 117A may segment the user data into multiple (e.g., 4 to 2048) smaller data blocks of approximately equal, non-overlapping size. In some instances, the segmentation engine 117A may result in storing one or more fragments or data blocks within a corresponding portion of data storage 111 (such as user data database 112). Additionally, the segmentation engine 117A may generate metadata for each of the multiple data blocks. As described herein, the metadata for a specific data block can identify and characterize information about the corresponding data block. Examples of information about a corresponding data block include an identifier (e.g., a block identifier) ​​associated with the corresponding fragment or data block, an identifier or value (such as a meta bit value associated with each data element included in the corresponding data block (e.g., a bit identifier), information or values ​​associated with each data element (e.g., “isZero”, “isOne”, or “noInfo”), and a hash value (e.g., a hash value corresponding to the data block identifier) ​​that identifies and characterizes the corresponding fragment or data block. In some instances, metadata may include encoding-decoding information that characterizes and identifies several encoding-decoding parameters. Each encoding-decoding parameter may characterize the properties of the encoding and decoding process used for received user data (such as one or more fragments or data blocks). In other instances, encoding-decoding parameters may be based in part on and depend on the size of the received or acquired user data. In various instances, the segmentation engine 117A may generate stored metadata for each of a plurality of data blocks within a corresponding portion of the data store 111 (such as the metadata database 113).

[0070] In addition, such as Figure 3As shown, the execution of the fountain code (FC) seed engine 117B can perform operations to generate seed data. As described herein, the seed data can identify and characterize several fountain code seeds. In some examples, the executed FC seed engine 117B can implement a random generator program to generate each of the fountain code seeds included in the seed data. In some instances, each of the fountain code seeds can include a set or a fixed number of random values, such as 26 to 32 bits. In other instances, the executed FC seed engine 117B can generate fountain code seeds based on the size of the user data. For example, the executed FC seed engine 117B can obtain data blocks of user data 103 from the user data database 112 or obtain user data 103 before fragmentation. Additionally, the executed FC seed engine 117B can determine the size of user data 103 based on user data 103 or data blocks of user data 103 itself. Furthermore, the executed FC seed engine 117B can generate fountain code seeds corresponding to the determined size of user data 103 (e.g., the larger the size of the user data, the larger the size of the fountain code seed). In various instances, the fountain code seed generated by the executed FC seed engine 117B may correspond to a specific data block and a set of data elements associated with said specific data block. In such instances, the set of random values ​​included in the fountain code seed may identify the specific data block, several data elements included in the set of data elements associated with the specific data block, and which data elements are to be included in the set of data elements of the specific block. Additionally, the executed FC seed engine 117B may generate such fountain code seeds based on portions of metadata stored in the metadata database 113 associated with the specific block. As described herein, the fountain code seed may include information sufficient to describe the contents of the corresponding data packet that the ED computing system 110 can use when decoding the corresponding data packet. In some instances, the executed FC seed engine 117B may generate seed data including one or more fountain code seeds generated by the executed FC particle engine 117B.

[0071] Furthermore, the executed FC seed engine 117B may embed or include portions of metadata stored in the metadata database 113 that characterize and identify several encoding-decoding parameters in the fountain code seed. In some examples, for each data block of user data (such as user data 103), the executed FC seed engine 117B may obtain corresponding metadata from the metadata database 113. Additionally, the corresponding metadata for each of the data blocks of user data may include encoding-decoding parameters. As described herein, each encoding-decoding parameter may characterize the features of the encoding and decoding process used for the received user data (such as one or more data blocks). Furthermore, the encoding-decoding parameters may be based in part on and depend on the size of the received or acquired user data (such as user data 103).

[0072] Additionally, the executed FC seed engine 117B can generate corresponding seed metadata or metacode for each of one or more fountain code seeds. In such instances, for each of the one or more fountain code seeds, the executed FC seed engine 117B can apply one or more blending functions to the corresponding fountain code seed to generate the corresponding seed metadata. As described herein, the one or more blending functions can be deterministic – producing the same result for a particular data group regardless of the processing order of the data groups, being unbiased, and having a very flat distribution across the entire set of results. In some instances, each of the one or more blending functions may include a set of XOR shift functions configured for long cyclic quasi-random number generation.

[0073] In some examples, one or more blending functions may include a blending function that, when applied to a fountain code seed, causes the executed FC seed engine 117B to generate a data block identifier associated with a valid data block. The data block identifier identifies the data block associated with the corresponding fountain code seed. In some instances, the blending function may generate the data block identifier based on the value of the fountain code seed and the fountain code seed size. In other examples, the blending function may include a blending function that, when applied to a fountain code seed, causes the executed FC seed engine 117B to generate a value representing one of several possible states (e.g., "isZero", "isOne", "noInfo") for each identified data element in the set of random values ​​included in the fountain code seed. In various examples, one or more blending functions may include a blending function that, when applied to a fountain code seed, causes the executed FC seed engine 117B to generate a value representing a corresponding metadata bit for each data element identified in the set of random values ​​included in the fountain code seed.

[0074] Return to reference Figure 3 The executed FC seed engine 117B may generate seed metadata for each fountain code seed, based in part on the output of each of one or more blending functions. For example, the seed metadata may include a corresponding data block identifier, where, for each data element included in the corresponding data block, a corresponding value represents a metadata bit and a corresponding value represents one of several states. In some instances, the executed FC seed engine 117B may store the seed data and seed metadata for each fountain code seed included in the seed data within a corresponding portion of the data store 111 (such as the FC seed database 114).

[0075] For example, a first blending function can be configured to generate a data block identifier associated with a valid data block; a second blending function can be configured to generate a value representing one of several possible states (e.g., "isZero", "isOne", "noInfo") for each identified data element of the set of random values ​​included in the fountain code seed; and a third blending function can be configured to generate a value representing a corresponding metadata bit for each identified data element of the set of random values ​​included in the fountain code seed. In this example, the executed FC seed engine 117B can obtain seed data and apply the first, second, and third blending functions to a specific fountain code seed (e.g., 24 to 32 bits) of the seed data. Furthermore, based on the application of the first blending function to the specific fountain code seed, the executed FC seed engine 117B can generate a 2 to 11-bit data block identifier representing a specific data block associated with the specific fountain code seed. Additionally, based on the application of the second blending function to the specific fountain code seed, the executed FC seed engine 117B can generate values ​​associated with each element identified in the specific fountain code seed, such as "isZero", "isOne", or "noInfo". Furthermore, based on the application of a third mixing function to a specific fountain code seed and for each of the elements identified in the specific fountain code seed, the executed FC seed engine 117B can generate values ​​representing specific metadata bits.

[0076] Return to reference Figure 3 The executing encoding engine 117C can encode user data, such as user data 103 obtained from one or more client devices 101, using seed data and seed metadata. As described herein, the executing encoding engine 117C can encode each data block of the user data. In such examples, the executing encoding engine 117C can encode data blocks of the user data simultaneously, in parallel, or alternatively serially. Additionally, the executing encoding engine 117C can apply a fountain code (e.g., a rupee transformation) to each data element of each corresponding data block for each data block. Furthermore, the executing encoding engine 117C can generate a set of random data elements and encapsulate them into one or more portions of a data packet. Furthermore, the executing encoding engine 117C can combine the set of random data elements bit-by-bit in a binary field. The set of randomly combined data elements can be the payload of a corresponding data packet and can include information necessary to describe the original user data when processed (e.g., decoded) using a sufficient number of other data packets.

[0077] For example, the executing encoding engine 117C can obtain metadata for each data block of user data 103 obtained from one or more client devices 101 (such as client device 101A). Additionally, the executing encoding engine 117C can obtain seed data and corresponding seed metadata from the FC seed database 114. Furthermore, for each data block, the executing encoding engine 117C can select a specific potential fountain code seed from the obtained seed data. Based on the corresponding seed metadata of the potential fountain code seed and the metadata associated with the corresponding data block, the executing encoding engine 117C can determine whether an identifier identified in the metadata of the corresponding data block matches a data block identifier in the seed metadata. In an example where the executing encoding engine 117C determines that the identifier identified in the metadata of the corresponding data block does not match a data block identifier in the seed metadata, the executing encoding engine 117C can select another potential fountain code seed. Furthermore, the executing encoding engine 117C can repeat the process of determining whether an identifier identified in the metadata of the corresponding data block matches a data block identifier in the seed metadata of a second potential fountain code seed. The 117C encoding engine being executed can continue the process until the block identifier of the potential fountain code matches the identifier identified in the metadata of the corresponding block.

[0078] In an example where the executing encoding engine 117C determines that the identifier identified in the metadata of the corresponding data block or fragment matches the data block identifier in the seed metadata, the executing encoding engine 117C may determine whether the potential fountain code seed has been used to generate another data group of random data elements. In an example where the executing encoding engine 117C determines that the fountain code seed has been used to generate another data group of random data elements, the executing encoding engine 117C may select another potential fountain code seed from the seed data. As described herein, the executing encoding engine 117C may repeat the above process to determine potential fountain code seeds that include a data block identifier matching the identifier identified in the metadata of the corresponding data block and have not yet been used to generate another data group of random data elements.

[0079] In an example where the executing encoding engine 117C determines that a potential fountain code seed has not yet been used to generate another data block containing a set of random data elements, the executing encoding engine 117C may determine whether one or more values ​​represented in the corresponding metadata bits in the seed metadata and a corresponding value representing one of multiple states (e.g., "isZero", "isOne", "noInfo") are identified in the metadata of the corresponding block data. In an example where the executing encoding engine 117C determines that one or more values ​​represented in the corresponding metadata bits in the seed metadata and a corresponding value representing one of multiple states are not identified in the metadata of the corresponding block data, the executing encoding engine 117C may select another potential fountain code seed. As described herein, the encoding engine 117C performed can repeat the above process to determine a potential fountain code seed, which (1) includes a data block identifier that matches an identifier identified in the metadata of the corresponding data block, (2) another data group that has not yet been used to generate a set of random data elements, and (3) includes one or more values ​​represented in the corresponding metadata bits in the seed metadata and corresponding values ​​identified in the metadata of the corresponding block data that represent one of multiple states (e.g., “isZero”, “isOne”, “noInfo”).

[0080] In an example where the executing encoding engine 117C determines one or more values ​​represented in corresponding metadata bits in the seed metadata and corresponding values ​​representing one of multiple states identified in the metadata of the corresponding block data or fragment, the executing encoding engine 117C may utilize the potential fountain code seed and / or the corresponding seed metadata to generate data packets with payloads corresponding to the potential fountain code seed. For example, the payload may include the set of random data elements identified in the potential fountain code seed and / or the corresponding seed metadata. Additionally, as described herein, each data element in the set of random data elements may be encoded by the executing encoding engine 117C using a fountain code (e.g., a rupee transformation). In some instances, the executing encoding engine 117C may combine each encoded data element in the set of random data elements and encapsulate the combined encoded data elements into one or more portions of data packet 306. Furthermore, as described herein, the executing encoding engine 117C may encapsulate the corresponding potential fountain code seed into one or more portions of data packet 306. As described herein, for each data block identified in the metadata, the executing encoding engine 117C may repeat the process described herein until all data elements identified in the metadata of the corresponding data block are included in data group 306. In some instances, for each data block of user data 103, the executing encoding engine 117C may store the resulting data group 306 in a corresponding portion of data storage 111 (such as encoded data database 115A).

[0081] In some instances, the executing encoding engine 117C may add error correction codes (ECCs) to the data packets. The ECCs may be used by the ED calculation system 110 to control errors in the corresponding data packets during the decoding process (e.g., to recover lost bits or correct erroneous bits during decoding). In some instances, encoding-decoding parameters may instruct the corresponding data packets to be formatted such that the ECC follows the payload. In these instances, based on the encoding-decoding parameters, the executing encoding engine 117C may produce data packets with ECC codes following the payload.

[0082] As described herein, the executed sequencing engine 117D can generate sequence mapping data for each of the data blocks 306 of user data 103 stored in the encoded data database 115A. For example, as Figure 3 As shown, the executed sequencing engine 117D can obtain mapping data from the mapping data database 116. As described herein, the mapping data can identify specific bases and corresponding position pairs. The mapping data can be modified and generated by the operator of the ED computing system 110. Examples of position pairs and corresponding bases may include position pair 00 corresponding to adenine, position pair 01 corresponding to cytosine, position pair 10 corresponding to guanine, and position pair 11 corresponding to thymine. In addition, the executed sequencing engine 117D can obtain one or more data blocks 306 of user data 103 stored in the encoded data database 115A. Furthermore, for each of the one or more data blocks 306, the executed sequencing engine 117D can identify or determine the bit sequence of the fountain code seed and the payload (e.g., the block has encoded random data elements) included in the corresponding data block 306. Based on the bit sequence and mapping data of each of the identified or determined data blocks 306, the executed sequencing engine 117D can determine the corresponding base sequence of the bit sequence of each of the data blocks 306. Furthermore, for each of the data blocks 306 and based on the determined corresponding base sequence, the executed sequencing engine 117D can generate sequence mapping data 308. The sequence mapping data 308 of each of the data blocks 306 can identify the corresponding sequence of the bases in the corresponding data block 306.

[0083] In some instances, the executing sequencing engine 117D may add one or more primers (such as front and back primers) or sequence portions representing the corresponding primers to the sequence mapping data of each data block in one or more data blocks 306. For example, for a particular data block 306, the executing sequencing engine 117D may add a base sequence representing the front primer to the beginning of the corresponding base sequence. Additionally, for a particular data block 306, the executing sequencing engine 117D may add a base sequence representing the back primer to the end of the corresponding base sequence. Information associated with the sequence of each of the one or more primers may be included in the metadata of each in the data block or fragment. In various instances, the front and back primers may be of a fixed length or size known or encoded in the executing sequencing engine 117D.

[0084] In other instances, for each sequence map data 308 of data block 306, the executed sequencing engine 117D may determine whether the polynucleotide synthesized from the corresponding sequence of bases identified from the associated sequence map data is sufficiently stable for synthesis. In these instances, for each sequence map data 308 of data block 306, the executed sequencing engine 117D may determine whether the base sequence in the corresponding sequence map data 308 satisfies one or more sequence criteria. Examples of one or more sequence criteria include criteria associated with repeating bases (e.g., the number of bases in a sequence exceeds a threshold number of bases), criteria associated with base patterns (e.g., the base sequence should have a number of patterns below a threshold number), and criteria associated with base ratios (e.g., a criterion indicating that the base ratio should be 50 / 50 AT to GC). In an example where the sequencer engine 117D determines that the base sequence of the sequence mapping data 308 of a particular data group 306 satisfies one or more sequence criteria, the sequencer engine 117D may store the sequence mapping data 308 in the mapping data database 116.

[0085] In various instances, the executed sequencing engine 117D can determine whether each data element of each data block is included in the sequence mapping data 308 of each data group 306. In such instances, the executed sequencing engine 117D can utilize the metadata of each data block to determine whether each data element in each data block is included in the sequence mapping data 308 of each data group 306 stored in the mapping data database 116. In an example where the executed sequencing engine 117D determines that one or more data elements of one or more data blocks containing missing user data (e.g., user data 103) are missing from the sequence mapping data 308 of each data group 306 stored in the mapping data database 116, the executed sequencing engine 117D can signal or instruct the encoding engine 117C to continue encoding the missing data elements of the incomplete data block or fragment. Otherwise, the executed sequencing engine 117D can transmit the sequence mapping data 308 of each data group 306 to the server 120A of the genetic computing system 120. In these examples, the executed sequencing engine 117D can generate message 304. Additionally, the executed sequencing engine 117D can be encapsulated within one or more portions of the sequence mapping data 308 for each data packet 306. Furthermore, the executed sequencing engine 117D can transmit the message 304, including the sequence mapping data 308 for each data packet 306, to the server 120A of the genetic computing system 120. As described herein, the genetic computing system 120 can utilize the sequence mapping data 308 to generate corresponding polynucleotide chains and store the corresponding polynucleotide chains in a polynucleotide chain pool. The polynucleotide pool may include multiple polynucleotide chains, each corresponding to a specific data block or fragment of user data.

[0086] like Figure 4As shown, a programmed interface (such as API 402) established and maintained by the server 120A of the genetic computing system 120 can receive messages 304 including sequence mapping data 308 for each data group 306. As described herein, the genetic computing system 120 can receive messages 304 across a communication network 130 via a communication channel programmatically established between API 402 and the executed sequencing engine 117D. Furthermore, API 402 can route messages 304 to the executed synthesis engine 121A. The executed synthesis engine 121A can parse messages 304 and obtain sequence mapping data 308 for each data group 306. Additionally, the execution fragmentation engine 117A can provide the sequence mapping data 308 to one or more electrodes of the electrode unit 122. The one or more electrodes of the electrode unit 122 can generate a corresponding polynucleotide chain 404 for each base sequence identified in the sequence mapping data 308 of each data group 306. The polynucleotide chains 404 generated from the sequence mapping data 308 can be stored in a polynucleotide chain pool 406. The polynucleotide chain pool 406 may include multiple polynucleotide chains 404, each corresponding to a specific data block or fragment of user data (such as user data 103).

[0087] Figure 7 This is a flowchart of an exemplary process 700 for encoding data for storage in genetic material. For example, one or more computing systems (such as ED computing system 110) may perform one or more steps of the exemplary process 700, as described below. Figure 7 As described. Reference Figure 7 The ED computing system 110 can perform any of the processes described herein to segment user data 103 into multiple data blocks (e.g., in...). Figure 7 (In step 702). In some examples, the ED computing system 110 may obtain user data 103 from client device 101 (such as client device 101A). In other examples, the executed segmentation engine 117A may segment the user data into multiple (e.g., 4 to 2048) smaller data blocks of approximately equal, non-overlapping size. In the examples, the executed segmentation engine 117A may produce the storage of one or more fragments or data blocks within a corresponding portion of the data store 111 (such as user data database 112).

[0088] Additionally, the ED computing system 110 can execute any of the processes described herein to generate seed data (e.g., in...). Figure 7(In step 704). In some examples, the executed FC seed engine 117B may implement operations to generate seed data. As described herein, the seed data may identify and characterize several fountain code seeds. In some examples, the executed FC seed engine 117B may implement a random generator program to generate each of the fountain code seeds included in the seed data. In some instances, each of the fountain code seeds may include a set or a fixed number of random values, such as 26 to 32 bits. In other instances, the executed FC seed engine 117B may generate fountain code seeds based on the size of the user data.

[0089] For example, the executed FC seed engine 117B can obtain data blocks of user data 103 from user data database 112 or obtain user data 103 before segmentation. Additionally, the executed FC seed engine 117B can determine the size of user data 103 based on user data 103 or data blocks of user data 103 itself. Furthermore, the executed FC seed engine 117B can generate a fountain code seed corresponding to the determined size of user data 103 (e.g., the larger the size of the user data, the larger the size of the fountain code seed).

[0090] In various instances, the fountain code seed generated by the executed FC seed engine 117B may correspond to a specific data block and a set of data elements associated with said specific data block. In such instances, the set of random values ​​included in the fountain code seed may identify the specific data block, the number of data elements included in the set of data elements associated with the specific data block, and which data elements are to be included in the set of data elements of the specific block. Additionally, the executed FC seed engine 117B may generate such fountain code seeds based on portions of metadata stored in the metadata database 113 associated with the specific block. As described herein, the fountain code seed may include information sufficient to describe the contents of the corresponding data packet that the ED computing system 110 can use when decoding the corresponding data packet. In some instances, the executed FC seed engine 117B may generate seed data including one or more fountain code seeds generated by the executed FC seed engine 117B.

[0091] Furthermore, the executed FC seed engine 117B may embed or include portions of metadata stored in the metadata database 113 that characterize and identify several encoding-decoding parameters in the fountain code seed. In some examples, for each data block of user data (such as user data 103), the executed FC seed engine 117B may obtain corresponding metadata from the metadata database 113. Additionally, the corresponding metadata for each data block of user data may include encoding-decoding parameters. As described herein, each encoding-decoding parameter may characterize the features of the encoding and decoding process used for the received user data (e.g., one or more data blocks). Furthermore, the encoding-decoding parameters may be based in part on and depend on the size of the received or acquired user data (such as user data 103).

[0092] Additionally, for each of the one or more fountain code seeds, the executed FC seed engine 117B can generate corresponding seed metadata or metacode. In such instances, for each of the one or more fountain code seeds, the executed FC seed engine 117B can apply one or more blending functions to the corresponding fountain code seed to generate corresponding seed metadata. As described herein, the one or more blending functions can be deterministic – producing the same result for a specific data group regardless of the processing order of the data groups, being unbiased, and having a very flat distribution across the entire set of results. In some instances, each of the one or more blending functions may include a set of XOR shift functions configured for long cyclic quasi-random number generation.

[0093] Return to reference Figure 3 The executed FC seed engine 117B may generate seed metadata for each fountain code seed, based in part on the output of each of one or more blending functions. For example, the seed metadata may include a corresponding data block identifier, where, for each data element included in the corresponding data block, a corresponding value represents a metadata bit and a corresponding value represents one of several states. In some instances, the executed FC seed engine 117B may store the seed data and seed metadata for each fountain code seed included in the seed data within a corresponding portion of the data store 111 (such as the FC seed database 114).

[0094] Furthermore, the ED computing system 110 can execute any of the processes described herein to perform a first set of operations for each of a plurality of data blocks, producing one or more data packets (e.g., in...). Figure 7(In step 704). In some examples, the executed encoding engine 117C may utilize seed data and seed metadata to encode user data, such as user data 103 obtained from one or more client devices 101. As described herein, the executed encoding engine 117C may encode each data block of the user data. In such examples, the executed encoding engine 117C may encode data blocks of the user data simultaneously, in parallel, or alternatively serially. Additionally, the executed encoding engine 117C may apply a fountain code (e.g., rupee transformation) to each data element of each corresponding data block for each data block. Furthermore, the executed encoding engine 117C may generate a set of random data elements and encapsulate them into one or more portions of a data packet. Furthermore, the executed encoding engine 117C may combine the set of random data elements bit-by-bit in a binary field. The set of randomly combined data elements may be the payload of the corresponding data packet and may include information necessary to describe the original user data when processed (e.g., decoded) using a sufficient number of other data packets.

[0095] For example, the executing encoding engine 117C can obtain metadata for each data block of user data 103 obtained from one or more client devices 101 (such as client device 101A). Additionally, the executing encoding engine 117C can obtain seed data and corresponding seed metadata from the FC seed database 114. Furthermore, for each data block, the executing encoding engine 117C can select a specific potential fountain code seed from the obtained seed data. Based on the corresponding seed metadata of the potential fountain code seed and the metadata associated with the corresponding data block, the executing encoding engine 117C can determine whether an identifier identified in the metadata of the corresponding data block matches a data block identifier in the seed metadata. In an example where the executing encoding engine 117C determines that the identifier identified in the metadata of the corresponding data block does not match a data block identifier in the seed metadata, the executing encoding engine 117C can select another potential fountain code seed. Furthermore, the executing encoding engine 117C can repeat the process of determining whether an identifier identified in the metadata of the corresponding data block matches a data block identifier in the seed metadata of a second potential fountain code seed. The 117C encoding engine being executed can continue the process until the block identifier of the potential fountain code matches the identifier identified in the metadata of the corresponding block.

[0096] In an example where the executing encoding engine 117C determines that the identifier identified in the metadata of the corresponding data block or fragment matches the data block identifier in the seed metadata, the executing encoding engine 117C may determine whether the potential fountain code seed has been used to generate another data group of random data elements. In an example where the executing encoding engine 117C determines that the fountain code seed has been used to generate another data group of random data elements, the executing encoding engine 117C may select another potential fountain code seed from the seed data. As described herein, the executing encoding engine 117C may repeat the above process to determine potential fountain code seeds that include a data block identifier matching the identifier identified in the metadata of the corresponding data block and have not yet been used to generate another data group of random data elements.

[0097] In an example where the executing encoding engine 117C determines that a potential fountain code seed has not yet been used to generate another data block containing a set of random data elements, the executing encoding engine 117C may determine whether one or more values ​​represented in the corresponding metadata bits in the seed metadata and a corresponding value representing one of multiple states (e.g., "isZero", "isOne", "noInfo") are identified in the metadata of the corresponding block data. In an example where the executing encoding engine 117C determines that one or more values ​​represented in the corresponding metadata bits in the seed metadata and a corresponding value representing one of multiple states are not identified in the metadata of the corresponding block data, the executing encoding engine 117C may select another potential fountain code seed. As described herein, the encoding engine 117C performed can repeat the above process to determine a potential fountain code seed, which (1) includes a data block identifier that matches an identifier identified in the metadata of the corresponding data block, (2) another data group that has not yet been used to generate a set of random data elements, and (3) includes one or more values ​​represented in the corresponding metadata bits in the seed metadata and corresponding values ​​identified in the metadata of the corresponding block data that represent one of multiple states (e.g., “isZero”, “isOne”, “noInfo”).

[0098] In an example where the executing encoding engine 117C determines one or more values ​​represented in corresponding metadata bits in the seed metadata and corresponding values ​​representing one of multiple states identified in the metadata of the corresponding block data or fragment, the executing encoding engine 117C may utilize the latent fountain code seed and / or the corresponding seed metadata to generate data packets 306 having a payload corresponding to the latent fountain code seed. For example, the payload may include the set of random data elements identified in the latent fountain code seed and / or the corresponding seed metadata. Additionally, as described herein, each data element in the set of random data elements may be encoded by the executing encoding engine 117C using a fountain code (e.g., a rupee transformation). In some instances, the executing encoding engine 117C may combine each encoded data element in the set of random data elements and encapsulate the combined encoded data elements into one or more portions of data packet 306. Furthermore, as described herein, the executing encoding engine 117C may encapsulate a corresponding latent fountain code seed into one or more portions of data packet 306. As described herein, for each data block identified in the metadata, the executing encoding engine 117C may repeat the process described herein until all data elements identified in the metadata of the corresponding data block are included in data group 306. In some instances, for each data block of user data 103, the executing encoding engine 117C may store the resulting data group 306 in a corresponding portion of data storage 111 (such as encoded data database 115A).

[0099] Furthermore, for each data group, the ED calculation system 110 can induce a second set of operations to perform the synthesis of the polynucleotide chain based at least on the bit value of the corresponding data group (e.g., in...). Figure 7 (In step 708). In some examples, the genetic computing system 120 may use sequence mapping data 308 generated from each data group to generate corresponding polynucleotide chains and store the corresponding polynucleotide chains in a polynucleotide chain pool. The polynucleotide pool may include multiple polynucleotide chains, each corresponding to a specific data block or fragment of user data.

[0100] C. Computer implementation technology for decoding user data from polynucleotide chains

[0101] As described herein, the encoder-decoder (ED) computing system 110 can perform the operation of decoding data derived from genetic material, such as one or more polynucleotide chains. Additionally, the ED computing system 110 can utilize a fountain code (FC) procedure to decode this data. In some examples, the genetic computing system 120 can process one or more polynucleotide chains in a pool of polynucleotide chains and sequence them to generate sequence data that identifies the base sequence of each of the one or more polynucleotide sequences. Furthermore, the ED computing system 110 can generate sequence bit data based on the sequence data. The sequence bit data identifies the bit sequence corresponding to each of the base sequences of each of the one or more polynucleotide chains identified in the sequence data.

[0102] For example, such as Figure 5 As shown, the polynucleotide pool 406 may include one or more polynucleotide chains 404. Additionally, one or more electrodes of electrode unit 122 may determine the base sequence of each of the one or more polynucleotide chains 404 in the polynucleotide pool 406. The executed sequencing engine 121B may generate sequence data 504 that identifies the determined base sequence of each of the one or more polynucleotide chains 404. As described herein, the one or more polynucleotide chains 404 and each of the polynucleotide pool 406 may be associated with user data (such as user data 103). Furthermore, the executed sequencing engine 121B may generate message 502 and packets within one or more portions of the sequence data 504 of message 502. Furthermore, the executed sequencing engine 121B may transmit message 502 to server 110A of ED computing system 110. As described herein, ED computing system 110 may use sequence data 504 to reconstruct and decode user data 103.

[0103] like Figure 6 As shown, a programmed interface (such as API 602) established and maintained by server 110A of ED computing system 110 can receive message 502, including sequence data 504. As described herein, ED computing system 110 can receive message 502 across communication network 130 via a communication channel programmatically established between API 602 and executed sequencer engine 121B. Furthermore, API 602 can route message 504 to executed sequencer engine 117D. Executed sequencer engine 117D can parse message 502 and obtain sequence data 504. Furthermore, executed sequencer engine 117D can store sequence data 504 in one or more portions of data store 111 (such as sequence data database 604).

[0104] Additionally, the executed sequencing engine 117D can perform operations to determine the sequence corresponding to the positions of the base sequences identified in sequence data 504. In some examples, the executed sequencing engine 117D can obtain sequence data 504 from sequence data database 604. Additionally, the executed sequencing engine 117D can obtain mapping data from mapping data database 116. Based on the mapping data and sequence data 504, the executed sequencing engine 117D can determine the sequence corresponding to the positions of the base sequences identified in sequence data 504. Furthermore, the executed sequencing engine 117D can generate sequence bit data that identifies the positions of the base sequences identified in sequence data 504. In some instances, the executed sequencing engine 117D can store the sequence bit data in one or more portions of data storage 111 (such as sequence data database 604).

[0105] As described herein, in some instances, each polynucleotide chain 404 may include primers, such as front primers and / or back primers, at both ends of the fountain code seed and payload. Furthermore, the base sequences in the front and back primers are identical for each polynucleotide chain 404. Figure 1 This information, not shown, is available or encoded in the executed sequencing engine 117D and can be used to identify and / or revise primers based on the sequences of the polynucleotide chains identified in sequence data 504. In other instances, each polynucleotide chain 404 may not include primers, such as front and / or back primers. In these instances, the executed sequencing engine 117D may not need to identify and revise primers based on the sequences of the polynucleotide chains identified in sequence data generated by the genetic computing system 120.

[0106] Return to reference Figure 6The executed pre-detection engine 606 may perform a set of pre-detection or preprocessing operations to determine an estimated distribution of data blocks based on the sequence position data of each of the bases identified in the sequence data 504. For example, the executed pre-detection engine 606 may obtain a portion of the sequence position data from the sequence data database 604. As described herein, the portion of the sequence position data may be associated with a set of random polynucleotide chains 404 in a polynucleotide chain pool 406 (e.g., a set of 100,000 to 200,000 polynucleotide chains in a pool of 10,000,000 polynucleotide chains). Additionally, in some instances, the set of random polynucleotide chains 404 may include primers, such as front primers and back primers. In such instances, the executed pre-detection engine 606 may determine the sequence of positions based on the portion of the sequence position data and identify the portion of the sequence corresponding to the position of the primer (described herein as a "primer portion") based on information known or encoded by the executed decoding engine 117E associated with the length and size of the primer and the sequence position data. Furthermore, the pre-detection engine 606 can trim the primer portions, leaving a portion of the sequence of positions located between the primer portions (described herein as "intermediate portions"). As described herein, the intermediate portions may be portions corresponding to the fountain code seed and associated payload positions. Alternatively, in instances where the set of random polynucleotide chains does not include primers, the pre-detection engine may not trim the sequence of positions corresponding to the set of random polynucleotide chains. In such instances, the synthesis engine 121A can implement a biometric protocol using custom sequence primers that have the effect of removing the polynucleotide sequence from the front and / or back primers. Thus, the remaining polynucleotide sequence or intermediate portion can be sequenced by the sequencing engine 121B, and the corresponding sequences of positions generated by the sequencing engine 117D may correspond to the fountain code seed portion and associated payload portion.

[0107] Furthermore, the pre-detection engine 606 can obtain encoding-decoding parameters from the decoded data database 115B. As described herein, the encoding-decoding parameters can indicate that the corresponding data packets are formatted such that the fountain code seed precedes the payload and the fountain code seed size and / or the payload size. Based on the remaining intermediate portion and the encoding-decoding parameters, the pre-detection engine 606 can determine which part of the intermediate portion corresponds to the fountain code seed and the associated payload, and the size of the intermediate portion.

[0108] In an example where the ED computing system 110 has encoded and decoded user data of varying sizes, the size of the bit sequence corresponding to the fountain code seed and the payload can be changed. As described herein, data packet mapping data can be stored in the ED computing system 110. The data packet mapping data can indicate a specific format (e.g., the fountain code seed before or after the payload) and the size of the fountain code seed and / or the payload, at least for varying sizes of the bit sequence corresponding to the fountain code seed and the payload. Additionally, when the pre-detection engine 606 performs the aforementioned group pre-detection or preprocessing operation, the post-flight engine 606 can determine the size of all intermediate portions to determine the majority size. Based on the majority size and the data packet mapping data, the pre-detection engine 606 can determine the estimated fountain code seed size, the payload size, which portions of the intermediate portions correspond to the fountain code seed, and which portions of the intermediate portions correspond to the payload.

[0109] Return to reference Figure 6 The executed preflight engine 606 can determine which portions of the fountain code seed bit sequence (described herein as "fountain code seed portions") are associated with the identifiers of the data blocks. Additionally, based on the fountain code seed portions that are determined to be associated with the identifiers of the data blocks, the executed preflight engine 606 can determine the identifiers of the data blocks. Furthermore, the executed preflight engine 606 can determine the distribution of identifiers of the data blocks based on the determined identifiers of the data blocks in each of the fountain code seed portions. In some instances, the executed preflight engine 606 can generate a histogram that identifies and characterizes the distribution of identifiers of the data blocks. Alternatively or additionally, the executed preflight engine 606 can generate data block plan data that identifies and characterizes the distribution of the determined identifiers of the data blocks. In some instances, the executed decoding engine 117E can store the generated data block plan data in a corresponding portion of the data storage 111 (such as the decoding data database 115B).

[0110] The executing decoding engine 117E can perform a set of operations to recover or generate seed metadata or metacode for each identified or determined portion of the sequence corresponding to the position associated with the second set of polynucleotide chains 404. In some examples, the second set of polynucleotide chains 404 can be all sequenced polynucleotide chains (e.g., polynucleotide chain pool 406). In such examples, the executing decoding engine 117E can obtain sequence position data associated with each sequence of bases identified in sequence data 504 from sequence data database 604. Based on the sequence position data of the second set of polynucleotide chains 404, the executing decoding engine 117E can determine the sequence of the position associated with the second set of polynucleotide chains. In instances where the second set of polynucleotide chains includes primers (such as front-end and back-end primers), the executing decoding engine 117E can identify and trim the portion of the sequence corresponding to the position of the primer portion based on information known or encoded in the executing decoding engine 117E as associated with the length and size of the primer. Each of the remaining portions may correspond to a portion of the fountain code seed and associated payload that is otherwise described as an intermediate portion. Alternatively, the second set of polynucleotide chains 404 may not include primers. In such examples, the executed synthesis engine 121A may implement a biological protocol using custom sequence primers that have the effect of removing the front and / or back primers of the polynucleotide sequence. Thus, the remaining polynucleotide sequence may be sequenced by the sequencing engine 121B, and the corresponding sequences of the positions generated by the sequencing engine 117D may correspond to the fountain code seed portion and the associated payload portion. Furthermore, the executed decoding engine 117E may obtain the encoding-decoding parameters from the decoding data database 115B and determine which portion of the remaining portions of the positions corresponds to the fountain code seed and which portion of the remaining portions of the positions corresponds to the associated payload.

[0111] In some examples, the executing decoding engine 117E can determine the identifier of the corresponding data block for each part of the bits corresponding to the fountain code seed or the fountain code seed portion, and based on the part of the fountain code seed. Additionally, the executing decoding engine 117E can determine the distribution of identifiers for data blocks associated with the second set of polynucleotide chains based on the determined data block identifiers of the fountain code seed portion. In some examples, the executing decoding engine 117E can determine whether the distribution of identifiers for data blocks associated with the second set of polynucleotide chains matches the distribution of identifiers for data blocks identified in the data block plan data. In examples where the distribution of identifiers for data blocks associated with the second set of polynucleotide chains does not match the distribution of identifiers for data blocks identified in the data block plan data, the executing decoding engine 117E can use clustering, multiple read alignments, and majority base calls to implement additional recovery operations. In some instances, the executing decoding engine 117E can determine the identifiers of data blocks associated with the second set of polynucleotide chains that do not match the distribution of identifiers of data blocks identified in the data block plan data. In these instances, the executing decoding engine 117E can perform additional recovery operations using clustering of these lost data blocks, multiple read alignments, and most base calls.

[0112] In an example where the distribution of identifiers for data blocks associated with the second set of polynucleotide chains matches the distribution of identifiers for data blocks identified in the data block plan data, the executed decoding engine 117E can classify each fountain code seed portion and its associated bit corresponding to the payload (described herein as a "payload portion") based on the corresponding data block identifier. Additionally, the executed decoding engine 117E can generate list data that identifies and characterizes one or more intermediate portions (e.g., fountain code portions and payload portions associated with the corresponding data block identifier) ​​for each identifier in each data block. In some instances, the executed decoding engine 117E can store the list data within a portion of data storage 111 (such as decoded data database 115B).

[0113] Furthermore, similar to the executed FC seed engine 117B, the executed decoding engine 117E may apply one or more blending functions to each fountain code seed portion for each identifier or data block identifier of a data block to generate corresponding seed metadata or metacode. As described herein, examples of blending functions may include a blending function that, when applied to each fountain code seed portion, causes the executed decoding engine 117E to generate a corresponding data block identifier. The data block identifier may identify a corresponding data block associated with the set of random data elements identified in the corresponding fountain code seed portion. Another example of a blending function may include a blending function that, when applied to each fountain code seed portion, causes the executed decoding engine 117E to generate a value representing one of several possible states (e.g., "isZero", "isOne", "noInfo") for each identified data element in the set of random values ​​identified in the corresponding fountain code seed portion. Furthermore, another example of a mixing function may include a mixing function that, when applied to each fountain code seed portion, causes the executing decoding engine 117E to generate a value representing a corresponding metadata bit for each identified data element among the set of random values ​​identified in the fountain code seed portion. In some instances, the value representing the corresponding metadata bit may indicate to the executing decoding engine 117E which generated value representing one of a plurality of states is associated with which data element. In other instances, the value may be between zero and the metadata size minus one. In still other instances, the executing decoding engine 117E may generate seed metadata for each fountain code seed portion based on a corresponding data block or fragment identifier, one or more values ​​representing metadata bits respectively, and an associated value representing one of a plurality of states. The seed metadata for each fountain code seed portion may identify and characterize the corresponding data block or fragment identifier, one or more values ​​representing metadata bits respectively, and an associated value representing one of a plurality of states. In these instances, the executing decoding engine 115E may store the seed metadata or metadata within a portion of the data store 111 (such as a decoded data database 115B).

[0114] In some examples, the executing decoding engine 117E can determine whether the corresponding seed metadata or metacode of each corresponding fountain code seed part is consistent with each other for each identifier of a data block or fragment. In such examples, the executing decoding engine 117E can utilize one or more confidence thresholds to determine whether the seed metadata or metacode of each corresponding fountain code seed part is consistent with each other for each identifier of a data block or fragment. In some instances, one or more confidence thresholds can be associated with a number of fountain code seed parts, wherein metadata bits of a specific value have a specific value representing a specific state among a plurality of states. For example, for a first data block, the executing decoding engine 117E can obtain seed metadata for 750 fountain code seed parts associated with the identifier of the first data block. In addition, based on the seed metadata of the 750 fountain code seed parts, the executing decoding engine 117E can determine that 500 parts of the fountain code seed parts have corresponding seed metadata indicating that a metadata bit with a specific value of 1 has a corresponding value representing a specific state "isZero" among a plurality of states. The executing decoding engine 117E can determine whether the metadata bit with a value of 1 in the first data block has a corresponding value representing the state "isZero" based on a confidence threshold that the number of fountain code seed parts of the seed metadata with a metadata bit having a value of 1 corresponding to the state "isZero" is greater than or equal to a certain number of metadata bits associated with a specific value representing a specific state among a plurality of states. In an instance where the confidence threshold is 250 fountain code seed parts (where the seed metadata has a metadata bit with a value of 1 in the first data block and a corresponding value representing the state "isZero"), the executing decoding engine 117E can determine that the metadata bit with a value of 1 in the first data block has a corresponding value representing the state "isZero". Alternatively, in an instance of 5000 seed metadata or metacodes with a confidence threshold of 1 for the metadata bit of the first data block and a corresponding value representing the state "isZero", the executing decoding engine 117E may determine that the metadata bit of the first data block with a value of 1 may not have a corresponding value representing the state "isZero" or may have a state "isNoInfo".

[0115] In other instances, for a specific data block, one or more confidence thresholds may be based on the maximum number of metadata bits in a specific value representing a specific state among multiple states. For example, for a second data block, the executing decoding engine 117E may obtain seed metadata for several fountain code seed portions. Based on the obtained seed metadata, the executing decoding engine 117E may determine that 100 fountain code seed portions have corresponding seed metadata indicating that a metadata bit with a specific value of 3 (e.g., metadata bit 3) has a first corresponding value representing a specific state "isZero" among multiple states, and 350 fountain code sub-parts have corresponding seed metadata indicating that a metadata bit with a specific value of 3 (e.g., metadata bit 3) has a corresponding value representing a specific state "isOne" among multiple states. Furthermore, compared to the number of fountain code seed portions having corresponding seed metadata indicating a corresponding value for a specific state "isOne" among multiple states for a metadata bit with a specific value of 3 (e.g., metadata bit 3), the executing decoding engine 117E can determine that the second data block has a corresponding value for a metadata bit with a value of 3 indicating a state "isZero" based on the number of fountain code seed portions having corresponding seed metadata indicating a corresponding value for a metadata bit with a specific value of 3 (e.g., metadata bit 3) indicating a specific state "isZero" among multiple states.

[0116] In other examples, the executing decoding engine 117E can determine whether, for each identifier of a data block or fragment, the payload portion is sufficient for the executing decoding engine 117E to recover the complete corresponding data block. In some instances, the executing decoding engine 117E can make such determinations based on the seed metadata or metacode of each corresponding fountain code seed portion. In these instances, the executing decoding engine 117E can determine which data elements of the corresponding data block are identified in the seed metadata of each corresponding fountain code seed portion. Additionally, based in part on the identified data elements, the executing decoding engine 117E can determine whether any and which data elements of the corresponding data block are missing or incorrect. For example, in another example, the executing decoding engine 117E can determine that all or most of the identified data elements with a meta-bit value of 4 have a corresponding value associated with the state "isZero". Additionally, the executing decoding engine 117E can determine that a small number of identified data elements with a meta-bit value of 4 have a corresponding value associated with the state "isOne". Therefore, the executing decoding engine 117E can determine that a data element with a bit value of 4 can have a corresponding value associated with the state "IsZero", and that the data element identified using "IsOne" is incorrect. In another example, the executing decoding engine 117E can determine one or more of the identified data elements with a bit value of 6 but for which information about corresponding values ​​associated with states of multiple states is not available. Additionally, the executing decoding engine 117E can determine that several identified data elements with a bit value of 6 have corresponding values ​​associated with the state "isOne". Therefore, the executing decoding engine 117E can determine that a data element with a bit value of 6 whose value associated with the state is missing can have a corresponding value associated with the state "isOne".

[0117] Otherwise, in an example where the executing decoding engine 117E determines that all data elements are identified in the seed metadata or metacode of the fountain code seed portion of each data block, the executing decoding engine 117E may perform a set of operations to reconstruct the original user data based on the list data and the seed metadata or metacode of each portion of the fountain seed code corresponding to the identifier of each data block or fragment. In some examples, the executing decoding engine 117E may obtain the list data and seed metadata of the fountain code seed portion of each data block from the decoding data database 115B. Additionally, the executing decoding engine 117E may utilize the list data and seed metadata or metacode to initialize a decoding process, such as a fountain code decoding process. In some instances, the executing decoding engine 117E may implement a decoding process to decode each data block serially or simultaneously / in parallel. In either instance, for each data block, the executing decoding engine 117E may apply the decoding process to the seed metadata and the portion of the list data associated with the identifier of the corresponding data block. Furthermore, for each data block, the executing decoding engine 117E can generate several sets of data elements based on the application of seed metadata during the decoding process and a portion of the list data associated with the identifier of the corresponding data block, according to each payload portion. As described herein, the list data can identify the payload portion obtained from the bit sequence for each data block and the identifier of the data block. Additionally, for each data block, the executing decoding engine 117E can identify information about each data element within each set of data elements. For example, for each data block, the executing decoding engine 117E can identify the metadata bit value associated with each data element in each set, and the corresponding information to be transmitted, such as the status of multiple states (e.g., "isZero", "isOne", "isnoInfo"). Furthermore, for each data block, the executing decoding engine 117E can determine the order of the data elements of each block of data elements reflecting the user data when initially received and segmented by the ED computing system 110 (e.g., the segmentation engine 117A). The order of the data elements is based in part on the seed metadata and a portion of the list data associated with the identifier of the corresponding data block. In some instances, the executing decoding engine 117E can utilize connection graphs to determine the connections between each data element of a particular data block and the order of the data elements.

[0118] In some instances, the executing decoding engine 117E can determine whether all data elements of a particular data block have been identified, whether corresponding values ​​representing one of multiple states have been determined, and whether the order of the data elements has been determined. As described herein, the executing decoding engine 117E can make this determination for each data block identified in the sequence of bits. In instances where the executing decoding engine 117E has determined that all data elements of a particular data block have been identified, that corresponding values ​​representing one of multiple states have been determined, and that the order of the data elements has been determined, the executing decoding engine 117E can reconstruct the particular data block from the corresponding portions of the bits corresponding to the payload based on seed metadata, a portion of list data associated with the identifier of the corresponding data block, and the determined corresponding order of the data elements. In such instances, the executing decoding engine 117E can reconstruct the particular block data by constructing based on the payload portion and identifying each data element in the payload portion, and combining each data element in the order determined according to the corresponding order of the data elements. After each data block identified in the constructed sequence has been built, the executing decoding engine 117E can combine each constructed data block. The combined data block 610 can reflect the original user data received by the ED computing system 110, such as user data 103. In some instances, the executing decoding engine 117E can store the combined data block 610 and each individually constructed data block in a corresponding portion of the data store 111 (such as the decoded data database 115B). In other instances, the executing decoding engine 117E can generate a message 608 and encapsulate the reconstructed user data or the combined data block 610 within one or more portions of the message 608. In these instances, the executing decoding engine 117E can transmit the message 608, including the combined data block 610, to a client device 101, such as client device 101A, of the user who initially sent the original user data on which the reconstructed user data is based.

[0119] Figure 8 This is a flowchart of an exemplary process for decoding data derived from genetic material. For example, one or more computing systems (such as ED computing system 110) may perform one or more steps of the exemplary process 800, as referenced below. Figure 8 As described. Reference Figure 8 The ED computing system 110 can execute any of the processes described herein to obtain sequence data 504 (e.g., in...). Figure 8 In step 802). In some examples, the ED computing system 110 may obtain sequence data from the genetic computing system 120. Alternatively, the ED computing system 110 may perform any of the processes described herein to generate sequence bit data based on the sequence data (e.g., in...). Figure 8(In step 804). In some examples, the executing sequencing engine 117D may perform operations to determine the sequence of positions corresponding to the bases identified in sequence data 504.

[0120] Furthermore, the ED computing system 110 can perform any of the processes described herein to implement the first set of operations using a portion of the sequence bit data (e.g., in...). Figure 8 (In step 806). In some examples, the pre-detection engine 606 may perform a set of pre-detection or preprocessing operations to determine an estimated distribution of the data block based on the sequence position data of each of the bases identified in the sequence data 504. For example, the pre-detection engine 606 may obtain a portion of the sequence position data from the sequence data database 604. As described herein, a portion of the sequence position data may be associated with a set of random polynucleotide chains 404 in a polynucleotide chain pool 404 (e.g., a pool of 100,000 to 200,000 polynucleotide chains out of a pool of 10,000,000 polynucleotide chains).

[0121] Additionally, the pre-detection engine 606 can determine the sequence of bits based on the portion of the sequence bit data and identify the portion of the sequence of bits corresponding to the primer (described herein as the "primer portion") based on known or encoded information associated with the length and size of the primer and sequence bit data, as defined by the executed decoding engine 117E. Furthermore, the executed pre-detection engine 606 can trim the primer portion, leaving a portion of the sequence of bits located between the primer portions (described herein as the "intermediate portion"). As described herein, the intermediate portion may be the portion of bits corresponding to the fountain code seed and the associated payload. Furthermore, the executed pre-detection engine 606 can obtain encoding-decoding parameters from the decoding data database 115B. As described herein, the encoding-decoding parameters may instruct corresponding data packets to be formatted such that the fountain code seed precedes the payload and the fountain code seed size and / or the payload size. Based on the remaining intermediate portion and the encoding-decoding parameters, the executed pre-detection engine 606 can determine which portion of the intermediate portion corresponds to the fountain code seed and the associated payload, and the size of the intermediate portion.

[0122] In other examples, the executed preflight engine 606 may determine which portions of the sequence of bits corresponding to the fountain code seed (described herein as "fountain code seed portions") are associated with the identifiers of the data blocks. Additionally, based on the fountain code seed portions that are determined to be associated with the identifiers of the data blocks, the executed preflight engine 606 may determine the identifiers of the data blocks. Furthermore, the executed preflight engine 606 may determine the distribution of identifiers of the data blocks based on the determined identifiers of the data blocks in each of the fountain code seed portions. In some instances, the executed preflight engine 606 may generate a histogram that identifies and characterizes the distribution of identifiers of the data blocks. Alternatively or additionally, the executed preflight engine 606 may generate data block plan data that identifies and characterizes the distribution of the determined data block identifiers. In some instances, the executed decoding engine 117E may store the resulting data block plan data in a corresponding portion of the data store 111 (such as the decoding data database 115B). Furthermore, the ED computing system 110 can perform any of the processes described herein to implement a second set of operations for reconstructing the original user data, at least based on sequence bit data (e.g., in...). Figure 8 (in step 808).

[0123] D. Exemplary hardware and software implementations

[0124] The implementations of the objectives and functions described in this disclosure can be implemented in digital electronic circuit systems, in tangibly embodied computer software or firmware, or in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in a combination of one or more of these. The implementations of the objectives described in this disclosure (including application 104, segmentation engine 117A, FC seed engine 117B, encoding engine 117C, sequencing engine 117D, decoding engine 117E, sequencing engine 121B, synthesis engine 121A, application programming interface (API) 302, API 402, API 602, and preflight engine 606) can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible, non-transitory program carrier for execution or control of their operation by a data processing device (or computing system). Alternatively or additionally, program instructions can be encoded on artificially generated propagated signals (such as machine-generated electrical, optical, or electromagnetic signals, which are generated to encode information for transmission to a suitable receiver device for execution by the data processing device). Computer storage media may be machine-readable storage devices, machine-readable storage substrates, random or serial access memory devices, or combinations thereof.

[0125] The terms “device,” “apparatus,” and “system” refer to data processing hardware and encompass all kinds of devices, apparatuses, and machines for processing data, including (by example) a programmable processor, a computer, or multiple processors or computers. A device, apparatus, or system may also be or further include special-purpose logic circuit systems, such as FPGAs (Field-Programmable Gate Arrays) or ASICs (Application-Specific Integrated Circuits). In addition to hardware, a device, apparatus, or system may, where appropriate, include code that generates the execution environment for computer programs, such as code that constitutes processor firmware, protocol stacks, database management systems, operating systems, or combinations thereof.

[0126] A computer program (which may be referred to or described as a program, software, software application, application program, engine, module, software module, script, or code) may be written in any form of programming language, including compiled or interpreted languages, or declarative or programming languages, including as a standalone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may (but does not need to) correspond to a file in a file system. A program may be stored as a portion of a file that holds other programs or data, such as one or more scripts stored in a markup language file, a single file dedicated to the program in question, or multiple coordinated files, such as a file storing portions of one or more modules, subroutines, or code. A computer program may be deployed to execute on one or more computers located on a site or distributed across multiple sites and interconnected by a communications network.

[0127] The processes and logic flows described in this specification can be executed by one or more programmable computers that perform functions by executing one or more computer programs to manipulate input data and produce outputs. The programs and logic flows can also be executed by a dedicated logic circuit system, and the device can also be implemented as a dedicated logic circuit system, such as a FPGA (Field-Programmable Gate Array) or an ASIC (Application-Specific Integrated Circuit).

[0128] Computers suitable for executing computer programs include, for example, general-purpose or special-purpose microprocessors or both, or any other type of central processing unit. Typically, the central processing unit receives instructions and data from read-only memory or random access memory or both. The basic units of a computer are the central processing unit for executing instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include, or be operatively coupled to, receiving data from or transferring data to one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks. However, a computer is not required to have such devices. Furthermore, a computer may be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) or Assisted Global Positioning System (AGPS) receiver, or a portable storage device, such as, for example, a Universal Serial Bus (USB) flash drive.

[0129] Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and storage devices, including (by example) semiconductor memory devices such as EPROM, EEPROM, and flash memory devices; magnetic disks such as internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. Processors and memory may be supplemented by or incorporated into dedicated logic circuitry systems.

[0130] To provide interaction with the user, embodiments of the objectives described in this specification can be implemented on a computer having a display device (such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user, or a keyboard or pointing device (such as a mouse or trackball) by which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user; for example, feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, voice, or tactile input. Additionally, the computer can interact with the user by sending files to and receiving files from a device used by the user; for example, by sending a webpage to a web browser on the user's device in response to a request received from a web browser.

[0131] The implementation of the objectives described in this specification may be implemented in a computing system that includes back-end components (such as data servers) or middleware components (such as application servers), such as a client computer with a graphical user interface or web browser through which a user can interact with the implementation of the objectives described in this specification, or any combination of one or more such back-end, middleware, or front-end components. Components of the system may be interconnected by digital data communications of any form or media (such as communication networks). Examples of communication networks include local area networks (LANs) and wide area networks (WANs) (such as the Internet).

[0132] A computing system may include clients and servers. Clients and servers are typically geographically separated and usually interact via a communication network. The client-server relationship arises from computer programs running on their respective computers and having a client-server relationship with each other. In some implementations, the server (e.g., to a user device) transmits data (such as HTML pages) to the user device for the purpose of displaying data to a user interacting with the user device as a client and receiving user input from the user device. Data produced at the user device, such as the results of user interactions, may be received from the user device at the server.

[0133] Although this specification includes numerous details, such details should not be construed as limiting the scope of this disclosure or the content that may be claimed, but rather as descriptions of features specific to particular embodiments of this disclosure. Certain features in this specification described in the context of individual embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented individually or in any suitable sub-combination in multiple embodiments. Furthermore, although features may be described above as functioning in certain combinations and even initially claimed in this way, in some cases, one or more features from a claimed combination may be removed from said combination, and a claimed combination may refer to a sub-combination or a variation of a sub-combination.

[0134] Similarly, although operations are depicted in a specific order in the diagrams, this should not be construed as requiring these operations to be performed in the specific order or sequence shown in the diagrams, or requiring all operations shown in the diagrams to achieve the desired result. In some cases, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the above embodiments should not be construed as requiring this separation in all embodiments, and it should be understood that the described process components and systems can generally be integrated into a single software product or packaged into multiple software products.

[0135] In the instances where HTML files are mentioned, other file types or formats can be substituted. For example, an HTML file can be replaced by XML, JSON, plain text, or other file types. Furthermore, when referring to a table or hash table, other data structures (such as spreadsheets, relational databases, or structured files) can be used.

[0136] Various embodiments have been described herein with reference to the accompanying drawings. However, it will be apparent that various modifications and changes can be made thereto, and additional embodiments can be implemented without departing from the broader scope of the disclosed embodiments as set forth in the following claims.

[0137] Furthermore, unless specifically defined herein, all terms should be given their broadest possible interpretation, including the meaning implied from the specification and the meaning understood by those skilled in the art and / or the meaning defined in dictionaries, papers, etc. It should also be noted that, as used in the specification and appended claims, unless otherwise indicated, the singular forms “a” and “described” include multiple referents, and when used in this specification, the term “comprising” designates the presence or addition of one or more other features, aspects, steps, operations, elements, components, and / or such groups. Furthermore, the terms “coupled,” “operable coupled,” “operable connected,” and the like should be broadly understood to refer to mechanical, electrical, wired, wireless, or otherwise connecting devices or components together such that the connection allows the related devices or components to be expected to operate (e.g., communicate) with each other by virtue of the relationship. In this disclosure, unless otherwise stated, the use of “or” means “and / or.” Additionally, the use of the term “comprising” and other forms (such as “including”) is not limited. Furthermore, unless otherwise specified, terms such as "element" or "part" encompass both elements and parts that comprise one unit, and elements and parts that comprise more than one subunit. Additionally, the section headers used herein are for organizational purposes only and should not be construed as limiting the objectives described.

[0138] The foregoing is provided for the purposes of illustrating, explaining and describing embodiments of this disclosure. Modifications and adaptations to the embodiments will be apparent to those skilled in the art and may be made without departing from the scope or spirit of this disclosure.

Claims

1. A computing system: The memory stores instructions; as well as At least one processor, coupled to the communication interface and the memory, is configured to execute the instructions to: User data is segmented into multiple data blocks, each of which includes metadata; Generate seed data, which characterizes multiple fountain code seeds; For each of the plurality of data blocks, a first set of operations is performed to generate one or more data packets, the set of operations including: For each of the plurality of fountain code seeds: Determine the bit value that identifies the bit position in the metadata and the metacode value that identifies and characterizes the information conveyed by the bit value; and Determine which of the plurality of fountain code seeds has a metadata value for the bit value that matches the value of the bit position identified in the metadata, each of the one or more data packets being associated with a fountain code seed among the plurality of fountain code seeds having a metadata value for the bit value that matches the value of the bit position identified in the metadata; and For each data group, a second set of operations is initiated to synthesize a polynucleotide chain based at least on the bit values ​​of the data group.

2. The computing system of claim 1, wherein the first set of operations further includes: For each of the plurality of fountain code seeds: Determine the data block identifier; as well as Determine which of the plurality of fountain code seeds has a data block identifier that matches the block identifier identified in the metadata.

3. The computing system of claim 1, wherein the first set of operations further includes: For each of the plurality of fountain code seeds, determine whether the particular fountain code seed has been previously used in the synthesis of a polynucleotide chain.

4. The computing system of claim 1, wherein the second set of operations includes: Each of the one or more data groups is encoded as a nucleic acid sequence; as well as Polynucleotide chains are synthesized based on the nucleic acid sequence.

5. The computing system of claim 4, wherein the second set of operations includes: The first and second primers are attached to each polynucleotide chain.

6. The computing system of claim 5, wherein the at least one processor is further configured to: For each polynucleotide chain, determine whether the polynucleotide chain satisfies a set of sequence criteria.

7. The computing system of claim 6, wherein the group sequence criterion comprises: At least one of the criteria associated with nucleotide repeats, criteria associated with nucleotide patterns, and criteria associated with nucleotide pair ratios.

8. The computing system of claim 1, wherein for each data packet, inducing the implementation of the second set of operations of synthesizing a polynucleotide chain at least according to the bit values ​​of the data packet includes generating instructions and transmitting the instructions to a device configured to implement the second set of operations.

9. The computing system of claim 1, wherein the second set of operations includes causing one or more electrodes in a set of electrodes to synthesize a polynucleotide at least according to the bit value of the data group.

10. The computing system of claim 1, wherein for each of the plurality of data blocks, the one or more data groups are associated with one or more elements of the data block.

11. The computing system of claim 1, wherein the plurality of data blocks do not overlap.

12. The computing system of claim 4, wherein the metadata includes parameters for the encoding.

13. A computer-implemented method, the method comprising: The user data is segmented into multiple data blocks by at least the first processor, and each data block includes metadata. At least seed data is generated by the first processor, and the seed data characterizes multiple fountain code seeds; For each of the plurality of data blocks, at least the first processor performs a first set of operations to generate one or more data packets, the set of operations including: For each of the plurality of fountain code seeds: Determine the bit value that identifies the bit position in the metadata and the metacode value that identifies and characterizes the information conveyed by the bit value; and Determine which of the plurality of fountain code seeds has a metadata value for the bit value that matches the value of the bit position identified in the metadata, each of the one or more data packets being associated with a fountain code seed among the plurality of fountain code seeds having a metadata value for the bit value that matches the value of the bit position identified in the metadata; and For each data group, at least the first processor induces a second set of operations to synthesize a polynucleotide chain based at least on the bit values ​​of the data group.

14. The computer-implemented method of claim 13, wherein the first set of operations further comprises: For each of the plurality of fountain code seeds: Determine the data block identifier; as well as Determine which of the plurality of fountain code seeds has a data block identifier that matches the block identifier identified in the metadata.

15. The computer-implemented method of claim 13, wherein the first set of operations further comprises: For each of the plurality of fountain code seeds, determine whether the particular fountain code seed has been previously used in the synthesis of a polynucleotide chain.

16. The computer implementation method of claim 13, wherein the first set of operations further comprises: For each of the plurality of data blocks, determine whether the generated data groups are associated together with all data elements of the data block.

17. The computer-implemented method of claim 13, wherein the second set of operations includes: Each of the one or more data groups is encoded as a nucleic acid sequence; as well as Polynucleotide chains are synthesized based on the nucleic acid sequence.

18. The computer-implemented method of claim 17, wherein the second set of operations includes: The first and second primers are attached to each polynucleotide chain.

19. The computer-implemented method of claim 18, wherein the method further comprises For each polynucleotide chain, determine whether the polynucleotide chain satisfies a set of sequence criteria.

20. A non-transitory machine-readable storage medium for storing instructions, said instructions, when executed by at least one processor of a server, causing said at least one processor to perform operations including: User data is segmented into multiple data blocks, each of which includes metadata; Generate seed data, which characterizes multiple fountain code seeds; For each of the plurality of data blocks, a first set of operations is performed to generate one or more data packets, the set of operations including: For each of the plurality of fountain code seeds: Determine the bit value that identifies the bit position in the metadata and the metacode value that identifies and characterizes the information conveyed by the bit value; and Determine which of the plurality of fountain code seeds has a metadata value for the bit value that matches the value of the bit position identified in the metadata, each of the one or more data packets being associated with a fountain code seed among the plurality of fountain code seeds having a metadata value for the bit value that matches the value of the bit position identified in the metadata; and For each data group, a second set of operations is performed to synthesize a polynucleotide chain based at least on the bit values ​​of the data group.