Software-accelerated genome read mapping
By generating a hash table of genomic data signature indexes and using a hash data structure and a single array for genomic read mapping, the problems of insufficient speed and memory requirements in existing technologies are solved, achieving faster and more efficient genomic data mapping.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- ILLUMINA INC
- Filing Date
- 2021-09-15
- Publication Date
- 2026-07-14
Smart Images

Figure CN116134525B_ABST
Abstract
Description
Background Technology
[0001] This application claims the benefit of U.S. Application Serial No. 63 / 078,890, filed on September 15, 2020, the entire contents of which are incorporated herein by reference. Background Technology
[0003] In some cases, genome read mapping describes a method for identifying gene loci and the distances between genes. Computers can be used to analyze one or more sets of genomic data and correlate a set of molecular markers (such as a string of nucleotides) with their corresponding locations on a given reference genome. In this way, computers can be used to "map" a set of molecular markers onto a reference genome. Summary of the Invention
[0004] This disclosure relates to methods, systems, and computer programs for software-accelerated genome read mapping. In one aspect, this disclosure relates to the generation of hash tables that facilitate software-accelerated genome read mapping. The hash table may include data representing a reference genome indexed using genomic data signatures. In some embodiments, the generated hash table can be used to determine the mapping between received genome reads and the reference genome.
[0005] According to one innovative aspect of this disclosure, a method for software-accelerated mapping of genome data reads is disclosed. In one aspect, the method may include the following actions: obtaining a k-mer seed from a genome data read by one or more computers; generating a genome signature based on the obtained k-mer seed by one or more computers; determining, by one or more computers, a reference sequence position matching at least a portion of the k-mer seed using a hash data structure, wherein the hash data structure includes N data units, each data unit including a first part and a second part, the first part storing a predetermined genome signature, the second part storing a value corresponding to the first occurrence of a reference sequence position matching at least a portion of the k-mer seed from which the predetermined genome signature originates; and selecting, by one or more computers, the determined reference sequence position as the actual alignment of the obtained k-mer seed based on one or more alignment scores.
[0006] Other versions include corresponding systems, devices, and computer programs that have been configured to perform the actions described above.
[0007] These and other versions may optionally include one or more of the following features. For example, in some implementations, the predetermined genome signature may occupy only one byte of memory storage.
[0008] In some implementations, this value may only require four bytes of memory storage.
[0009] In some implementations, this hash data structure is a single array with N data units.
[0010] In some specific implementations, the method may further include: filtering the genome data read by one or more computers based on a first set of values corresponding to one or more k-mer seeds of the genome data read.
[0011] In some specific implementations, the first value set may include the result of a predetermined operation applied to the one or more k-mer seeds of the genome data read, and wherein the first value set is used to obtain the k-mer seed from the genome data read.
[0012] In some specific implementations, the predetermined operation may include the one or more k-mer seeds based on the genomic data read and the hash function generating the hash value.
[0013] In some specific implementations, determining the reference sequence position may include: calculating a first position of the k-mer seed of the genome data read by one or more computers, wherein the first position corresponds to the position of the k-mer seed within the genome data read; and calculating a second position of the k-mer seed, wherein the second position corresponds to the position of the k-mer seed within the reference genome data, and wherein the second position is calculated based on the hash data structure.
[0014] In some specific implementations, the method may also include: one or more computers sorting the one or more reference sequence positions based on the hash data structure and the genome data reads.
[0015] In some specific implementations, the method may further include generating one or more alignment scores by one or more computers based on sorting the positions of the one or more reference sequences.
[0016] In some specific implementations, the method may further include: selecting at least one of the determined reference sequence positions as the obtained k-mer seed; the actual alignment includes: comparing the one or more alignment scores with a threshold value.
[0017] In some specific implementations, the method may further include: the one or more alignment scores comprising a numerical value representing the number of mismatches between the obtained k-mer seed from the genomic data read and the reference sequence position.
[0018] In some implementations, each subsequent occurrence is discarded after the first occurrence of a reference sequence position that matches at least a portion of the k-mer seed from which the predetermined genome signature originates.
[0019] According to another innovative aspect of this disclosure, a method for generating hash tables for software-accelerated mapping of genomic data reads is disclosed. In one aspect, the method may include: receiving genomic data by one or more computers, wherein the genomic data is derived from parental genomic data; generating a first value set by one or more computers based on the genomic data; generating a subset of the genomic data by one or more computers based on the first value set; calculating a signature for each k-mer in the subset of the genomic data by one or more computers, wherein the signature is calculated based on a first hash function; calculating a first attribute for each k-mer in the subset of the genomic data by one or more computers, wherein the first attribute includes the position of a given k-mer in the genomic data within a sequence of the genomic data; calculating an index for each k-mer in the subset of the genomic data by one or more computers, wherein the index is calculated based on a second hash function; and storing the signature and the first attribute of each k-mer in the subset of the genomic data in a hash data structure by one or more computers based on the index of each k-mer in the subset of the genomic data.
[0020] Other versions include corresponding systems, devices, and computer programs that have been configured to perform the actions described above.
[0021] These and other versions may optionally include one or more of the following features. For example, in some specific implementations, each k-mer in this subset of the genomic data is a k-mer comprising k letters representing a string of one or more nucleotides.
[0022] In some implementations, the first value set may include a representation of the number of times a given k-mer of the genome data appears within the parental genome data.
[0023] In some specific implementations, the first value set includes a representation of the hash value calculated based on the corresponding k-mer of the genomic data.
[0024] In some specific implementations, the memory allocation size for storing the signatures of a given k-cluster in the subset is smaller than the memory allocation size for storing the given k-cluster.
[0025] In some specific implementations, the method may further include: one or more computers sending data corresponding to the hash data structure as a data packet to a first device.
[0026] In some specific implementations, the first device is a memory storage device.
[0027] In some implementations, the second device reads the data corresponding to the hash data structure from the first device. In such implementations, the second device may perform a series of operations to generate a second hash data structure based on the data corresponding to the hash data structure.
[0028] As used in this article, a seed typically refers to a series of base calls or nucleotides identified, obtained, or extracted from a genomic data read.
[0029] A k-mer (also referred to as a k-mer seed in this paper) is a sequence of elements (such as base calls or nucleotides), where the number of elements (e.g., base calls or nucleotides) in the sequence of a given k-mer is defined by "k".
[0030] Genome data reads typically consist of data generated by a nucleic acid sequencer that corresponds to base calls or nucleotides of a portion of the genome of a sample sequenced by that sequencer.
[0031] A genome signature (also referred to as a signature in this document) is or includes data that identifies a hash table location (e.g., a bucket, slot, or cell). This data may also be referred to as a hash key, such as a genome hash key. A signature is a genome signature if it is generated from or points to a location that identifies genome data.
[0032] A reference sequence location refers to a specific site or portion of a reference sequence (e.g., a reference nucleic acid sequence).
[0033] Hash data structures store data in an associative manner and may include data structures that use hash functions to map hash keys to memory locations, buckets, or cells.
[0034] Alignment scores are, or include, data indicating the confidence level of a genomic data read or k-mer seed mapped to a particular reference sequence that actually corresponds to that particular reference sequence position.
[0035] Genomic data may include any data related to the genome of a subject (e.g., a human subject).
[0036] Parental genome data can include any superset of genome data from which a subset of genome data can be extracted. For example, a genome data read can be an example of a parental genome from which k-mer seeds can be extracted.
[0037] Values “based on” specific genomic data are values derived from that genomic data.
[0038] When multiple hash functions are used, the first hash function may include the initial appearance of the hash function. The use of the term first hash function does not mean that the first hash function is different from any subsequent hash functions used, but they may be different.
[0039] An index is any data that can be used to identify the storage location of other data.
[0040] When multiple hash functions are used, a second hash function may be included as a subsequent occurrence of the hash function. The use of the term "second hash function" does not mean that the second hash function is different from any previously used hash function, but it may be different.
[0041] The hash tables generated as described herein and their use offer several technical benefits. These benefits may include software-accelerated genome read mapping algorithms that are faster and require less memory and storage compared to conventional methods. These benefits are at least in part based on encoding genome reads into one-byte genome data signatures to be used as hash keys and on using a single array hash table.
[0042] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention pertains. While similar or equivalent methods and materials to those described and used herein may also be used in the practice or testing of this invention, suitable methods and materials are described below. All publications, patent applications, patents, and other references mentioned herein are incorporated herein by reference in their entirety. In case of any conflict, this specification and its included definitions shall prevail. Furthermore, the materials, methods, and examples described are illustrative only and are not intended to be limiting.
[0043] Details of one or more embodiments of the present invention are set forth in the accompanying drawings and the description below. Other features and advantages of the invention will become apparent from the description, drawings, and claims. Attached Figure Description
[0044] Figure 1 This is a diagram illustrating an example of a system for generating hash tables for software-accelerated genome read mapping.
[0045] Figure 2 This is a flowchart illustrating an example of a process for generating hash tables for software-accelerated genome read mapping.
[0046] Figure 3 This is a diagram illustrating an example of a system using hash tables for software-accelerated genome read mapping.
[0047] Figure 4 This is a flowchart illustrating an example of a process for generating hash tables for software-accelerated genome read mapping.
[0048] Figure 5It is a diagram of computer system components that can be used to implement a system for generating hash tables for software-accelerated genome read mapping and a system for generating hash tables for software-accelerated genome read mapping.
[0049] The same reference numerals and names indicate the same elements in the various figures. Detailed Implementation
[0050] This disclosure relates to methods, systems, and computer programs for software-accelerated genome read mapping. In one aspect, this disclosure relates to the generation of hash tables that facilitate software-accelerated genome read mapping. The hash table may include data representing a reference genome indexed using a genome data signature. The generated hash table can then be used to determine the mapping between received genome reads and the reference genome. The generated hash table and its use provide several technical benefits, including faster software-accelerated genome read mapping algorithms that require less memory and storage compared to existing methods. These benefits are achieved, at least in part, based on encoding genome reads into one-byte genome data signatures for use as hash keys and using a single array hash table. Other advantages of this disclosure are achieved through multiple filtering stages that help reduce the number of reference locations under consideration.
[0051] In some specific implementations, aspects of this disclosure can be used to improve the performance of reference-based genomic data compression algorithms. For example, this disclosure can be used within reference-based FastQ compression. However, this disclosure is not limited thereto. Instead, software-accelerated genome read mappers can be used in a variety of other operations, such as during the generation of mapped and aligned genome reads for input into a variant calling procedure or during one or more stages of generating mapped and aligned genome reads for input into tertiary analysis.
[0052] In some implementations, such as during use in reference-based compression algorithms, software-accelerated genome read mappers can be configured to improve mapping speed at the expense of accuracy. However, in other implementations, software-accelerated genome read mappers can be configured to provide more accurate mappings at the cost of faster mapping speed. Generally, variables and other parameters can be modified or optimized based on a given implementation as described herein to provide more accurate results or to present results more quickly.
[0053] In some implementations, one or more filtering stages can be used to apply one or more different types of corresponding filters to generate a subset of the reference genome data that will be used to generate the hash table. This filtered subset of the reference genome data can be generated to reduce memory usage and accelerate computation. The filtered subset of the reference genome data can then be stored in the hash table.
[0054] A computer can be used to implement software-accelerated genome read mapping, which receives a genome read and then queries a generated hash table to find the location of a given k-mer in the reference genome data corresponding to the genome read. Hash tables are beneficial for software-accelerated genome read mapping because they are configured to (i) reduce the memory used to store the genome signature as the hash key and the corresponding cells or buckets for the reference sequence location matching the genome signature, and (ii) use a single array for structuring. The systems, methods, and features described herein can be used to determine one or more candidate alignments, at least in part, based on the generated hash table, and to process these candidate alignments to quickly find alignments that meet given criteria.
[0055] Figure 1 This is a diagram illustrating an example of a system 100 for generating hash tables for software-accelerated genome read mapping. System 100 includes a computer 106, a hash operation module 108, an occurrence counter module 114, and a hash table generation module 120. Computer 106 is configured to provide data to and receive data from the hash operation module 108, the occurrence counter module 114, and the hash table generation module 120. In some embodiments, computer 106 hosts one or more of the hash operation module 108, the occurrence counter module 114, and the hash table generation module 120, such that processing operations of one or more modules can be processed locally on computer 106. In other embodiments, one or more of the hash operation module 108, the occurrence counter module 114, and the hash table generation module 120 may be hosted by one or more other computers connected to computer 106.
[0056] Hash operation module 108 can generate one or more hash values corresponding to the genomic data. In some cases, the genomic data may include nucleotide sequences in the form of k-mers. Occurrence counter module 114 can count the number of times a given form of genomic data appears within the parental genomic data on which the genomic data is based. This is because, for example, a given k-mer can appear at multiple positions along a nucleotide read sequence. The number of times a string of consecutive nucleotides represented by a k-mer appears within a nucleotide read sequence can be obtained by occurrence counter module 114. Hash table generation module 120 can then generate a hash table corresponding to the genomic data processed by hash operation module 108 and occurrence counter module 114. The following description uses stages A through E as stages. Figure 1 Examples.
[0057] In this specification, a given k-mer is defined as a sequence of consecutive nucleotides, wherein the number of nucleotides in the sequence of a given k-mer is defined by "k", and nucleotides (or more generally, bases) are represented by a string of letters from a custom vocabulary. For example, a given k-mer could represent the sequence "ATGCG", where the symbols {A, C, G, T} represent the four types of nucleotides present in deoxyribonucleic acid (DNA): adenine, cytosine, guanine, and thymine. In ribonucleic acid (RNA), thymine is replaced by uracil (U).
[0058] The genomic data mentioned in this disclosure may include, for example, but not limited to, nucleotide sequences, deoxyribonucleic acid (DNA) sequences, or ribonucleic acid (RNA).
[0059] exist Figure 1 In stage A of the example, a set 104 of k-mers based on genomic data 102 is sent to computer 106. In this example, genomic data 102 may include a reference genome (which may also be referred to herein as a reference sequence), such as a DNA sequence assembled for an organism by one or more scientists, and each k-mer in the set 104 corresponds to a specific subset of sequences with nucleotide length k present in genomic data 102, where k is any positive integer greater than 0. For example, the k-mer AAGT...AT in the set 104 corresponds to a genomic data read or a portion thereof with a nucleotide sequence of length k nucleotides “AAGT...AT”. Genomic data 102 includes at least one instance of the k-mer AAGT...AT, meaning that the sequence of the k-mer AAGT...AT, defined as a string of nucleotides corresponding to “AAGT...AT”, appears at least once within the nucleotide sequence corresponding to genomic data 102. In some specific implementations, the reference sequence consists of a synthetic sequence that is at least partially conceived for improving the compressibility of the read according to further processing.
[0060] In some embodiments, k-mers within k-mer set 104 may have a k-mer length of 16 nucleotides. However, this disclosure is not limited to embodiments using k-mers with a length of 16 nucleotides. Generally, any number of nucleotides can be used for a given k-mer in the k-mer set. In some embodiments, a shorter seed will have a higher occurrence count on the reference genome and may result in higher computation time. A shorter seed may also result in higher sensitivity. The seed length corresponding to the number of nucleotides in the k-mers within k-mer set 104 can be adjusted for optimization purposes such as performance optimization.
[0061] Computer 106 receives k-mer set 104. Depending on the embodiment, computer 106 may communicate with one or more other computers to receive k-mer set 104. For example, a preprocessing computer or other device may process genomic data 102 and generate k-mer set 104. The preprocessing computer or other device may then communicate with computer 106 via a suitable communication network. The preprocessing computer of the other device may send k-mer set 104 to computer 106. In some embodiments, computer 106 performs the operations of the preprocessing computer or other device. For example, computer 106 may receive genomic data 102 and generate k-mer set 104 based on the genomic data 102.
[0062] In some implementations, the data received by computer 106 is in the form of non-genomic data. For example, computer 106 may receive information. This information may then be processed in one or more stages. In some cases, the information may be processed by one or more modules such as hash operation module 108, occurrence counter module 114, or hash table generation module 120.
[0063] In some implementations, data associated with information received by computer 106 is used to modify one or more processing operations. For example, the received information can be used to modify the operation of any operating module of computer 106, such as hash operation module 108, occurrence counter module 114, or hash table generation module 120. For example, computer 106 may receive information. Computer 106 may extract one or more items from the received information. Computer 106 may determine a specific processing method to be applied to the received information based on the extracted one or more items. In some cases, the specific processing method may include one or more processing modules, wherein the one or more processing modules are adjusted with parameter changes or operation changes to process data in a specific manner based on the extracted one or more items.
[0064] For example, when generating a hash table associated with genomic data, computer 106 may receive genomic data. Computer 106 may extract one or more items (e.g., one or more k-mers of a specific length ki) from the received genomic data. Computer 106 may then modify the operation of one or more modules based on the extracted data. For example, computer 106 may modify the occurrence counter module 114 by changing a threshold value of an integer k representing the number of base calls or nucleotides in the k-mer. Items that do not meet the threshold value set by computer 106 may be filtered out.
[0065] In some embodiments, the k-mer set 104 may include multiple k-mer nucleic acid sequences, each having a length k, derived from genomic data 102, which may include a reference sequence. In some embodiments, a computer 106 may receive the k-mer set 104 via a direct connection (e.g., USB connection, USB-C connection, etc.) or via one or more network connections (e.g., LAN, WAN, Ethernet, WiFi, cellular network, Internet, etc.). In some embodiments, the computer 106 may be a nucleic acid sequencing device capable of receiving, acquiring, or otherwise accessing genomic data 102 and generating the k-mer set 104.
[0066] Therefore, in some embodiments, the software-accelerated genome mapping and alignment of this disclosure can be implemented on a sequencing device (such as a next-generation DNA sequencing device) to perform secondary analysis operations, such as mapping and aligning genome data reads on the sequencing device. In other embodiments, the software-accelerated genome data mapping and alignment of this disclosure can be implemented on a computer other than the sequencing device, which acquires the genome data, generates a k-mer set 104, and uses the k-mer set 104 or a portion thereof to perform one or more of the other operations described herein.
[0067] In phase B, hash operation module 108 receives k-cluster set 104. Figure 1 The computer 106 shown in the example can be communicatively connected to the hash operation module 108. The hash operation module 108 can perform one or more operations based on the k-cluster set 104. For example, such as Figure 1 As shown, each k-cluster in the k-cluster set 104 can be used to generate a corresponding hash value. The hash value can be any value. Figure 1 In the example, the hash value was determined to be between 0 and 2. 64 Values between -1 and 1.
[0068] Hash operation module 108 can generate a calculated hash value 112. The calculated hash value 112 can be processed to filter the received k-cluster set 104. For example, hash operation module 108 can use the calculated hash value 112 to determine Figure 1 A subset of the k-cluster set 104 shown in the example is used as the second k-cluster set 110. In some implementations, the first filtering stage can be implemented by determining a subset of the k-cluster set 104 using a modulo function. In some implementations, the calculated hash value 112 can be generated by the hash operation module 108 corresponding to a predetermined mapping. For example, as Figure 1 As shown, the mapping can be defined as:
[0069] (1)
[0070] Formula 1 is an example of a hash function that hash operation module 108 can use to compute one or more hash values. Formula 1 describes the mapping from a given k-cluster in k-cluster set 104 to its corresponding hash value, in this case, the hash value is between 0 and 2. 64 The hash value is a value between -1 and 1, and the hash value can be represented by a 64-bit unsigned integer. In some implementations, other mappings or hash functions are used, resulting in different hash values. For example, instead of a 64-bit unsigned integer, a 32-bit signed integer can be used. This disclosure does not limit the form of the mapping or hash function used by the hash function module 108. In some cases, the type of hash function may change depending on the data received by the computer 106 or the data received by the hash operation module 108.
[0071] When processing the k-cluster set 104 Figure 1 The hash operation module 108 can perform one or more operations. In some specific implementations, these one or more operations may include calculating one or more values. Figure 1 In the example, hash operation module 108 can calculate the hash value of each k-cluster in the k-cluster set 104. An example of hash value calculation performed by hash operation module 108 is shown in Equation 2.
[0072] (2)
[0073] Formula 2 involves Figure 1 Examples and the first k-cluster "GTTA...AC" in k-cluster set 104. In Formula 1, hash operation module 108 is based on hash function The hash value calculated by k-mer GTTA...AC is 98778...789, where the value 98778...789 represents a value between 1 and 2. 64 Values between -1 and "GTTA...AC" indicate a genomic data read or a portion thereof defined by a k-mer in k-mer set 104. Hash function This can be any suitable hash function as those skilled in the art will understand. Hash function It can be configured to map k-mers in the k-mer set 104 to a value within the range of values shown in Formula 1.
[0074] The hash operation module 108 can perform further operations based on the k-cluster set 104. Figure 1 In the example, hash operation module 108 can generate hash values 98778...789 corresponding to the k-merger GTTA...AC. The hash operation module can then calculate another value based on this hash value, as shown in Formula 3.
[0075] (3)
[0076] Formula 3 shows that in Figure 1 The example in which the calculation is performed by hash operation module 108. The hash value 98778...789 corresponding to the k-cluster GTTA...AC is used to calculate the second value. The second value is the result of performing a modulo operation on the hash value 98778...789. The modulo operation is based on the hash value 98778...789 and seedModValue. seedModValue is predetermined or determined by hash operation module 108 or computer 106 in response to the k-cluster set 104. Figure 1 In the example, seedModValue is the integer 8. However, seedModValue can be any integer. seedModValue can be optimized or changed based on optimization operations or other use cases. seedModValue can be any value depending on the specific implementation.
[0077] The hash operation module 108 can generate a second k-cluster set 110 based on the calculated hash value 112 and seedModValue. Any suitable set of rules can be applied by the hash operation module 108 to generate the second k-cluster set 110. Figure 1 In the example, hash operation module 108 generates hash values 98778...789 and performs a modulo operation on the hash values 98778...789 based on seedModValue, which is equal to 8 in this example. The modulo operation and the result are shown in Equation 3. The result is 0. Figure 1 The internal rule of the hash operation module 108 shown, with a result of 0, causes the hash operation module 108 to include the corresponding k-cluster (in this case, k-cluster GTTA...AC) in the second k-cluster set 110. The k-cluster GTTA...AC is not crossed out, indicating that the second k-cluster set 110 includes the k-cluster GTTA...AC.
[0078] Hash operation module 108 can also calculate the hash values of other k-clusters included in k-cluster set 104. The k-cluster TATA...CG in k-cluster set 104 is used to calculate hash values 65432...611 in the calculated hash values 112. As discussed above, hash operation module 108 can perform a modulo operation using seedModValue. In this case, hash operation module 108 can calculate the value 2. Hash operation module 108 can determine not to include k-cluster TATA...CG in the second k-cluster set 110 based on the result of the modulo operation applied to hash values 65432...611. Figure 1 In the example, the k-mer TATA...CG is crossed out, indicating that the k-mer TATA...CG is not included in the second k-mer set 110.
[0079] The hash operation module 108 can calculate the corresponding hash values of other k-clusters in the k-cluster set 104. As discussed above, the hash operation module can filter k-clusters in the k-cluster set 104 by performing operations on them. Figure 1 In the example, hash operation module 108 can compute a hash value and the result of a modulo operation applied to the computed hash value. Based on the result of the modulo operation, hash operation module 108 can filter k-clusters in k-cluster set 104 and generate a second k-cluster set 110. In some specific implementations, the filtered k-cluster set, such as the second k-cluster set 110, will include each k-cluster for which a hash operation (e.g., a modulo-8 operation or other suitable operation) produces a computed result of 0. That is, each k-cluster with a hash value that produces a result other than 0 when operated on by hash operation module 108 is filtered out. The second k-cluster set 110 is a subset of k-cluster set 104. However, this disclosure is by no means limited to using a modulo-8 operation or a modulo operation on hash values for performing filtering operations. As those skilled in the art will understand, various other filtering techniques can be used.
[0080] In some implementations, filtering may include various computer programs running on a computer. For example, as shown in Algorithm 1 below, a computer program may initiate one or more system variables and perform one or more operations based on those system variables. In some cases, "if" statements or other conditional decoding operations may be used to determine the items to be filtered.
[0081] Algorithm 1 performs seed selection on a reference genome.
[0082]
[0083] In some implementations, filtering techniques can be used to extract one or more items from genomic data. For example, an extraction module can extract k-mers within a parental data repository, such as a genomic sequence, a data structure containing genomic data, or other form of ordered data repository, at predetermined intervals. In some implementations, the extraction module can locate a first k-mer within the sequence. The extraction module can then locate a second k-mer within the sequence, wherein the second k-mer is separated from the first k-mer by a predetermined number of nucleotides s. In this case, s can be an integer greater than 0. A third k-mer can be determined using the same interval s used to find the second k-mer based on the first k-mer. The operation can continue until a predetermined termination condition is met, such as finding a predetermined number of k-mers or when the extraction module has reached the end of the sequence. In some implementations, the above examples can be used to filter other forms of data repositories. For example, a fixed interval can be used to extract one or more elements from a set of k-mers 104, thereby filtering the set of k-mers 104. The extraction module can locate a first k-cluster within a data structure such as k-cluster set 104, and then locate a second k-cluster within k-cluster set 104, wherein the second k-cluster is separated from the first k-cluster by a predetermined number of indices i. In a data repository without indices, a count or other value can be used to indicate a fixed spacing between adjacent extracted elements.
[0084] In some implementations, items within an ordered dataset can be selected based on one or more conditions using a filtering method with predetermined intervals. For example, as discussed above, an ordered dataset can be filtered based on one or more items extracted from the ordered dataset. Adjacent items of one or more items extracted from the ordered dataset can be separated from each other by predetermined intervals. In some implementations, a first value is selected to select one or more items in the ordered dataset based on predetermined intervals. In some cases, the first value is selected in a similar manner or according to equivalent specifications on at least two or more input datasets to produce similar filtered sets of two or more input datasets.
[0085] In some specific implementations, the filtering hashing method is used to improve systems such as Figure 1 The performance of system 100 is improved. For example, a hash function can be applied by hash operation module 108 to k-mers of the reference genome and k-mers of genome reads. By filtering k-mers on both the reference genome and genome reads based on a constant hash function and a modulo operation, hash operation module 108 can select k-mers of the same type from the reference genome and genome reads. By using a filtered hashing method, memory usage and processing time can be reduced by filtering the set of k-mers that need to be indexed, querying only a subset of k-mers within the filtering operation, and making similar selections between the reference genome and genome reads as mentioned above.
[0086] In stage C, the occurrence counter module 114 can use the second k-cluster set 110 to apply the second filtering stage to the k-cluster set 104. In some embodiments, the occurrence counter module 114 can implement the second filtering stage by calculating the genomic occurrence count 118 of one or more k-clusters in the second k-cluster set 110. The genomic occurrence count 118 of each k-cluster may include, for example, the number of times a particular k-cluster appears in a reference genome (also called a reference sequence). In some embodiments, the occurrence counter module 114 may compare the occurrence count of each k-cluster with a threshold value. Figure 1 In the example, the threshold value is defined as 20. In other specific implementations, the threshold value can be any applicable value.
[0087] Although a second filtering stage for determining the frequency of k-mers in a reference sequence is described herein, the second filtering stage of this disclosure is not limited thereto. Instead, other filters may be used for the second filtering stage. Furthermore, in some specific embodiments, this disclosure may employ zero filtering stages, one filtering stage, or two or more filtering stages. The alternative filtering stage is a limiting feature of this disclosure; the filtering stage is customizable during the design of software to accelerate genome data mapping algorithms to achieve a third k-mer set 116 suitable for generating a hash table 124 for a particular specific implementation.
[0088] exist Figure 1 In the example, the occurrence counter module 114 determines that the k-mer GTTA...AC appears 15 times in the genome data 102, such as the reference sequence. The k-mer TATA...CG is not counted because it has already been filtered out based on the modulus operation during the first filtering stage. The k-mer CCGA...GT appears 23 times in the genome data 102, and the k-mer AAGT...AT appears 11 times in the genome data 102.
[0089] Based on the number of genome occurrences 118, the occurrence counter module 114 can determine each k-mer seed in the second k-mer set 110 to be included in the third k-mer set 116. Each entry with the number of genome occurrences 118 is compared with a threshold value MaxSeedOccurrence. The MaxSeedOccurrence value can be an integer value such as 20. If an entry with the number of genome occurrences 118 is greater than or equal to the threshold, the corresponding k-mer is not included in the third k-mer set 116. If an entry with the number of genome occurrences 118 is less than the threshold, the corresponding k-mer is included in the third k-mer set 116. k-mers GTTA...AC and AAGT...AT are both included in the third k-mer set 116 because the corresponding occurrences 15 and 11 both satisfy the threshold MaxSeedOccurrence. Other k-mers not shown in the second k-mer set 110 may also be included in the third k-mer set 116. The k-cluster CCGA...GT is not included in the third k-cluster set 116 because the corresponding occurrence count 23 does not satisfy the threshold MaxSeedOccurrence.
[0090] As described above, at least a portion of the operations performed by the hash operation module 108 and the occurrence counter module 114 can be described as a corresponding filtering stage applied to the received genomic data 102 (such as reference sequence data). In some embodiments, filtering may be used for several reasons, including, for example, to reduce memory usage and computation time for the overall operations corresponding to the received data. In some embodiments, other forms of filtering may be used to generate a subset of the received data. For example, an algorithm such as a random algorithm may generate a list of indices corresponding to the indices used in the received data. If the indices are included in the output of the random algorithm, the corresponding values of the received data may or may not be included in the subset of data. In this way, a subset of the received data can be generated. Other methods involving random number generation may also be used, as will be apparent to those skilled in the art.
[0091] In some specific implementations, filtering can be used to filter received genomic data 102 based on relevant characteristics of the data. For example, such as... Figure 1 As shown, the second k-mer set 110 can be filtered by the occurrence counter module 114 based on the occurrence of each k-mer within the genomic data 102. In some specific implementations, this can be a relational filter, as k-mers with high occurrence counts tend to generate candidate alignment positions that will produce alignments with low quality scores. As one of the motivations for this specification, in order to generate good candidate alignments, k-mers with high occurrence (in Figure 1 In the example, k-clusters (defined as having more than 20 occurrences) are not included in the generated subset that will be included when generating the hash table.
[0092] exist Figure 1 In stage D, the hash table generation module 120 can generate a hash table based on the third k-cluster set 116. Figure 1 In the example, hash table generation module 120 generates hash table 124, which is represented as a one-dimensional array of data blocks including signature values and position values. Hash table generation module 120 only records k-mers that have entered hash table 124 through the filtering steps of hash operation module 108 and occurrence counter module 114. For example, k-mers GTTA...AC and AAGT...AT are recorded in hash table 124, while k-mers TATA...CG and CCGA...GT are not.
[0093] The value corresponding to the k-mer recorded in hash table 124 may include the position of the given k-mer within the genome data 102. In some embodiments, only the first occurrence of the k-mer within the genome data is included in the value data segment of the hash table for the given k-mer. In such embodiments, other positions are discarded. A conceptual example of the generated value corresponding to the k-mer GTTA...AC is shown in item 126. Reference 126b is shown as corresponding to the k-mer GTTA...AC at the first occurrence 126a. Figure 1 In the example, reference 126b corresponds to genomic data 102. The portion indicated by reference 126b includes the sequence corresponding to the k-mer GTTA...AC, that is, the nucleotide sequence in the sequence represented by "GTTA...AC". The sequence "GTTA...AC" may appear at other positions on reference 126b, but only the first occurrence of the sequence "GTTA...AC" is stored in hash table 124 as the value corresponding to the k-mer GTTA...AC.
[0094] In some implementations, inserting items into hash table 124 may include various computer programs running on a computer. For example, as shown in Algorithm 2 below, the computer program may initiate one or more system variables and perform one or more operations based on those system variables. In some cases, "if" statements or other conditional decoding operations may be used to determine the items to be filtered.
[0095] Algorithm 2 inserts a (seed, position) pair into the hash table HT.
[0096]
[0097] The signature corresponding to the k-cluster GTTA...AC is computed using a hash function. Figure 1In the example, the hash function maps a given k-cluster to a range of 0 to 255. As shown in item 128, the k-cluster GTTA...AC is used as input to the hash function H_sig. The hash table generation module 120 uses the hash function H_sig to map the k-cluster value to the value 248. The value 248 is then used as the key corresponding to the k-cluster GTTA...AC within hash table 124.
[0098] By mapping k-mer values to numbers in the range of 0 to 255, hash table generation module 120 can reduce the amount of data stored in hash table 124. For a k-mer that is 16 nucleotides long, 32 bits may be needed to represent the corresponding data within the data structure. By mapping k-mer values to another value, such as a value between 0 and 255 as shown in the example, the required space is reduced. For example, if the k-mer GTTA...AC includes 16 nucleotides and the resulting signature from the mapping operation is the number 248, which can be expressed in 8 bits, the memory footprint of the data stored in hash table 124 is reduced by one-quarter.
[0099] In some implementations, other methods can be used to reduce the corresponding keys, thereby reducing the hash table size. For example, instead of using a hash function to map a given value of the received data, the last x digits of the value can be used to represent the position that can be expressed within the data structure. Other similar methods for compressing hash table data will be apparent to those skilled in the art.
[0100] In some implementations, hash table 124 can be an array of a specified length. For example, hash table 124 may include a single array containing N contiguous units. Hash table 124 may also use linear probing techniques for collision resolution. In some implementations, the configuration corresponding to the array configuration of hash table 124 can produce improved performance for single cache misses compared to other similar methods. By improving the performance of hash table 124, systems used for mapping reads to a reference genome, such as system 300, can be improved, enabling the system to generate mapping results with higher accuracy and shorter time compared to other mapping methods.
[0101] A hash function can be used to calculate the index corresponding to the k-cluster GTTA...AC. Figure 1 In the example, the hash function H_tab is used, where H_tab is different from the H_sig hash function used to generate the signature. In some implementations, the H_tab hash function may also use k-mers as input, but will generate a different range of values for the output. The range of values output by the H_tab hash function may correspond to the number of indices available within hash table 124. In some implementations, hash table 124 may include approximately 2 28An indexable cell. As shown in item 130, the H_tab hash function operates on the k-cluster GTTA...AC and outputs the value 268435456 corresponding to the index in hash table 124. The value and signature shown in items 126 and 128 respectively can be stored in hash table 124 at index position 268435456.
[0102] When querying a cell in a hash table, the cell's signature can be used to identify the cell holding a specific k-cluster. If a cell with a specific signature is found, the associated value, index, or other parameter can be returned. In some implementations, multiple distinct k-clusters may correspond to the same signature. For example, hash table 124 may include a first k-cluster corresponding to a first signature and a second k-cluster corresponding to a second signature, where the values of the first and second signatures are equal. In such an implementation, querying the hash table to find the first signature and corresponding information of the first k-cluster may cause hash table 124 to output information related to the second k-cluster.
[0103] Hash table 124 can be designed for low memory usage and fast lookup. For example, Figure 1 Hash table 124 is designed to store a list of key-value pairs, where the key is something used to identify the k-mer and the value is the position of the k-mer within the genomic data 102. In some implementations, each k-mer stores one position within the genomic data 102. In some implementations, other positions are stored. For example, every other position of a given k-mer within the genomic data 102 (e.g., odd positions, etc.) may be stored in the hash table corresponding to that given k-mer.
[0104] In some implementations, hash table 124 may be stored in the memory of computer 106 for use at stage E. For example, hash table 124 may be used when applying candidate alignment positions and evaluation, such as... Figure 3 As shown. In other embodiments, at stage E, computer 106 may send hash table 124 to a device communicatively connected to computer 106. Such a device may be communicatively connected to computer 106 via one or more direct connections or via one or more network connections such as the Internet. In some embodiments, at stage E, hash table 124 may be generated by computer 106 and stored in a data storage entity such as a thumb drive, hard disk drive, or other form of electronic data storage area. In some cases, the data storage entity is connected to a processor capable of querying or editing hash table 124.
[0105] In some implementations, computer 106 may send additional data associated with hash table 124 to another process or device. For example, instead of sending hash table 124, computer 106 may send a computing system, algorithm, etc., to another process or device. In some implementations, computer 106 may store data including hash table 124 or data associated with hash table 124 on a memory device, such that the memory device can be used to read data from hash table 124 or generate a hash table similar to hash table 124 based on data associated with hash table 124. For example, computer 106 may send data associated with one or more modules (such as hash operation module 108, occurrence counter module 114, or hash table generation module 120) to another process or device. Data associated with one or more modules may be used by another system or system 100 to generate one or more other hash tables based on data associated with one or more modules.
[0106] In some embodiments, computer 106 may generate a hash table installation package that includes software instructions for installing hash table 124 and genome data 102 on another computer. In other embodiments, computer 106 may provide only the software instructions, since the receiving computer may already have a copy of the genome data. In some embodiments, the hash table installation package may include software instructions that execute when executed. Figure 2 The process described in 200. Other computers may receive the hash table installation package, execute the hash table installation package, and install hash table 124. Then, other computers can use the methods described herein. Figure 3 and Figure 4 The described process executes software to accelerate genome read mapping.
[0107] In some implementations, hash table 124 may use open addressing. For example, hash collisions can be resolved by searching an alternative location within the array of hash table 124 until a target cell is found or an unused cell is found. A cell can be a location within hash table 124 where data can be stored. In some implementations, linear probing or other forms of probing (such as quadratic probing, double hashing, etc.) may be used to determine the index for storing data corresponding to a given k-cluster. In some implementations, linear probing may be used for improved cache locations, which can translate to higher performance than implementations that do not utilize linear probing. Figure 1 In the example, both the key and value are stored together in an array of hash table 124. Storing the key and value together further increases the cache size.
[0108] In some implementations, a form of probing can be used to generate new indices. For example, in an implementation using linear probing, a new index can be computed if a first k-cluster is mapped to a specific index based on a hash function H_tab and that index includes occupant cells with the same signature as that computed on the first k-cluster using the hash function H_sig. In the case of linear probing, the index value can be incremented by 1 until the signature value at a given index is not equal to the signature value corresponding to the output of H_sig applied to the first k-cluster. Of course, any other suitable probing can be used in a given implementation.
[0109] In some implementations, hash table 124 may include cells of a predetermined memory size. For example, hash table 124 may include memory cells containing 5 memory bytes. In some implementations, 1 byte is used for a signature value, and 4 bytes are used for position values as shown in items 128 and 126, respectively. However, other memory layouts may be used depending on the implementation.
[0110] In some implementations, a signature can be generated and stored in hash table 124. For example, a signature can be generated based on a given k-mer, such as k-mer GTTA...AC, and stored in hash table 124. In some implementations, the generated signature can be smaller than the binary representation of the k-mer itself in terms of data usage. In this way, memory usage can be further reduced and performance can be improved. Figure 1 In the example, the signature corresponding to the k-merger GTTA...AC is generated using a hash function as shown in item 128. In this case, the hash function H_sig is used.
[0111] In some implementations, the hash table generation module 120 generates hash tables in other forms. For example, instead of representing a one-dimensional vector as a single array, the hash table generation module 120 can use multiple arrays to generate a multi-dimensional vector. In some cases, the form of the hash table generated by the hash table generation module 120 can be determined based on the received data. Figure 1 The example is k-cluster set 104. For example, hash table generation module 120 can change the form of the hash table from a one-dimensional array with certain properties to a multi-dimensional vector, a table, a one-dimensional array, or another form of hash index database each with different properties. However, the specific implementation using a one-dimensional vector represented as a single array provides certain technical benefits, such as ensuring that hash queries can be resolved with no more than a single cache miss.
[0112] In some embodiments, computer 106 may be configured to perform actions belonging to hash operation module 108, occurrence counter module 114, and hash table generation module 120. In other embodiments, one or more of hash operation module 108, occurrence counter module 114, and hash table generation module 120 may be executed on one or more devices communicatively connected to computer 106. In some embodiments, one or more devices communicatively connected to computer 106 may include other computers, servers, nucleic acid sequencers, or other devices.
[0113] In some specific implementations, it is possible to, for example Figure 1 One or more processing steps are performed before or after the processing steps shown in the example. For example, after being received by computer 106, k-cluster set 104 may be preprocessed to change the format of k-cluster set 104 before being operated by hash operation module 108.
[0114] In some specific implementations, without departing from the scope of this specification, the following may be removed. Figure 1 The examples illustrate one or more of the operations. For instance, in some cases, hash operation module 108 may send the output data directly to hash table generation module 120 without any operation performed by occurrence counter module 114. Various other modifications will be apparent to those skilled in the art.
[0115] For example, in some implementations, system 100 can be implemented without continuously generating complete and distinct sets of k-mers 110 and 116. Instead, the processes of hash operation module 108, occurrence counter module 114, and hash table generation module 120 can be implemented in a pipelined manner. For instance, hash operation module 108 can calculate the hash value 98778...789 corresponding to the k-mer GTTA...AC, and perform a first filtering stage by calculating the result of modulo seedModValue of hash value 98778...789. If the result of the modulo operation is 0, occurrence counter module 114 can directly receive the k-mer GTTA...AC, determine the number of genome occurrences corresponding to k-mer GTTA...AC, and perform a second filtering stage based on the number of genome occurrences corresponding to k-mer GTTA...AC. Once k-mer GTTA...AC passes the second filtering stage of occurrence counter module 114, hash table generation module 120 can similarly receive k-mer GTTA...AC and perform its operations, as described herein. Therefore, some implementations do not require generating a separate set of the received data (such as k-mer data). Instead, the modules of this disclosure can be configured to operate in a pipelined manner, where subsequent processing modules operate on the output of a previous processing module after the output of that previous processing module has been generated. This pipelined operation can lead to faster execution of software-accelerated genome data mapping algorithms.
[0116] Figure 2 This is a flowchart illustrating an example of a process 200 for generating a hash table for software-accelerated genome read mapping. Process 200 can be, for example... Figure 1 The system 100 is executed by one or more electronic systems.
[0117] System 100 may initiate the execution of process 200 by receiving genomic data from one or more computers, wherein the genomic data is derived from parental genomic data (202). In some implementations, the genomic data is parsed into one or more k-mers. A k-mer may be a data structure comprising one or more fields, each field representing one or more of k nucleic acid nucleotides or bases.
[0118] Process 200 includes generating a first value set (204) based on genomic data by one or more computers. In some implementations, the first value set is based on a hash value, a hash function, or both. For example, the first value set may include a first value of a first k-cluster based on the genomic data. The first value may be the result of a modulo operator operating on the hash value, where the hash value can be generated from the first k-cluster of the genomic data via a hash function. In some implementations, other operations or methods may be used to generate the first value set. For example, the first value set may include a count of the occurrences of a given k-cluster of the genomic data.
[0119] Process 200 includes generating a subset of genomic data (206) by one or more computers based on a first value set. For example, the first value set may be in the form of filtered data used to filter genomic data comprising a first number of k-mers to generate a subset of genomic data, wherein the subset of genomic data includes fewer k-mers based on the filtering notified by the first value set.
[0120] Process 200 includes computing a signature for each item in a subset of genomic data by one or more computers, wherein the signature is computed based on a first hash function (208). In some embodiments, the hash function may be predetermined. The predetermined hash function can then be used to generate a signature based on a given item in a subset of genomic data. In some embodiments, the signature is a genomic signature. In some embodiments, the signature is stored along with data associated with a given k-mer and is used to identify data associated with a given k-mer as data corresponding to the given k-mer, such as... Figure 1 As shown.
[0121] Process 200 includes having one or more computers compute a first attribute for each item in a subset of genomic data, wherein the first attribute includes the position of a given item of the genomic data within the sequence of the genomic data (210). In this context, the item may include a k-mer seed. In some implementations, the first attribute includes only the first occurrence of a given item of the genomic data within the sequence. For example, a given item of the genomic data may occur more than once within the sequence. To reduce the amount of memory required to store genomic data in a data structure such as a hash table, a system implementing process 200 (such as system 100) may store only the first occurrence and not any subsequent occurrences of the given item. In some implementations, the computer parses the genomic data representation in a given direction. The given direction determines which occurrence is selected as the “first” occurrence.
[0122] Process 200 includes computing an index for each item in a subset of genomic data by one or more computers, wherein the index is calculated based on a second hash function (212). In some embodiments, the second hash function is predetermined by system 100. In some embodiments, the second hash function is used to generate an index for locating data corresponding to a given k-mer within a hash table, such as hash table 124. This index may point to a specific location in memory associated with hash table 124.
[0123] Process 200 includes indexing each item in a subset of genomic data by one or more computers, storing the signature and first attribute of each item in the subset of genomic data within a hash data structure (214). For example, as Figure 1As shown, system 100 can store the signature of the k-mer GTTA...AC as shown in item 128 and the value corresponding to the k-mer GTTA...AC as shown in item 126. In some embodiments, hash table 124 is a single array that stores the signature and value within elements along a single dimension of the single array. In some embodiments, the signature used within hash table 124 is stored as a single byte, and the value stored as a first attribute (such as the position of the k-mer associated with the signature) is stored as a 4-byte memory unit. In some embodiments, a given k-mer in a subset of genomic data is stored in hash table 124 in 5-byte memory units, such that each item in the subset of genomic data occupies 5 memory bytes within a unit of hash table 124.
[0124] Figure 3 This is a diagram illustrating an example of a system 300 using a hash table for software-accelerated genome read mapping. System 300 includes a computer 306, a filter module 307, a candidate generation module 316, a sorting module 322, and a scoring and output module 326. In this example, the filter module includes a hash operation module 308 and an occurrence counter module 310. In some specific implementations, Figure 1 Computer 106 is communicatively connected to computer 306. In some embodiments, computer 306 obtains hash table 124 or related data based on a process performed by computer 106. In some embodiments, computer 306 and computer 106 refer to the same device. In some embodiments, computer 106, computer 306, or both may be a nucleic acid sequencer.
[0125] exist Figure 3 In the example, genome data read 302 is a nucleic acid sequence read. Computer 306 can receive genome data read 302 and map the received genome data read 302 to a reference genome stored in a hash table, which is a reference genome... Figure 1 and Figure 2 The system, process, or one or more of the two described. For example, Figure 1 The hash table 124 generated can be used to store the reference genome. Subsequent reads of the genome data can then be used as follows: Figure 3 or Figure 4 The process shown is mapped to a reference genome in hash table 124.
[0126] exist Figure 3 In stage A, computer 306 can obtain a set of k-clusters 304 generated based on genome data reads 302. Similar to... Figure 1k-mer set 304 includes one or more nucleotide sequences expressed at least once within genome data read 302. Computer 306 may receive k-mer set 304 for processing. Figure 3 In the example, k-mer set 304 may represent k-mers identified in a read of genome data read 302. Genome data read 302 may use a hash table (such as...) Figure 1 The hash table (124) generated in the process is mapped to the reference genome.
[0127] exist Figure 3 In stage B, the hash operation module 308 and the occurrence counter module 310 can execute and reference Figure 1 The operations discussed in hash operation module 108 and occurrence counter module 114 are similar to those discussed in this specification. For example, hash operation module 308 and occurrence counter module 310 perform filtering on k-cluster set 304, while hash operation module 108 and occurrence counter module 114 perform filtering on k-cluster set 104. As discussed in this specification, although genomic data is described in detail, entities such as computer 106 and computer 306 may receive other forms of received data. Other forms of received data may be processed similarly by the relevant modules. Processing steps may be modified based on other forms of received data. As discussed, computer 306 or computer 106 may modify its operations according to the form, type, or value of the data received by computer 306 or computer 106.
[0128] In some implementations, other forms of filtering may be used. For example, instead of having both hash operation module 308 and occurrence counter module 310 operate on the k-cluster set 304, hash operation module 308 may perform a unique filtering process that generates hash values and determines a subset of the k-cluster set 304 based on these hash values; this subset is referred to herein as the second k-cluster set 314. In some cases, another form of filtering may be used instead of hash operation module 308 or occurrence counter module 310, or in addition to them.
[0129] In some implementations, filtering may include various computer programs running on a computer. For example, as shown in Algorithm 3 below, a computer program may initiate one or more system variables and perform one or more operations based on those system variables. In some cases, "if" statements or other conditional decoding operations may be used to determine the items to be filtered.
[0130] Algorithm 3 performs seed selection on the read segment.
[0131]
[0132] Similar to the filtering process discussed above, a set of k-mers 304, including one or more k-mers, can be used to calculate one or more hash values and one or more values representing the number of times each k-mer in the set of k-mers 304 occurs within the genome data read 302. Hash values can be generated and processed by a hash operation module 308 such that, based on the hash value of a given k-mer, the hash operation module 308 may include or exclude the k-mer in further processing within the system 300. Occurrences are generated and processed by an occurrence counter module 310 such that, based on the number of times a given k-mer occurs, the occurrence counter module 310 may include or exclude the k-mer in further processing within the system 300. The occurrence value generated by the occurrence counter module 310 can be the number of times a given k-mer (i.e., the nucleotide sequence of the k-mer) occurs within a larger sequence of the genome data read 302.
[0133] In some specific implementations, the hash operation module 308 can be used and referenced. Figure 1 The modulo operation discussed is similar to the modulo operation. Hash operation module 308 can compute the modulo seedModValue of a given hash value. In some cases, seedModValue is equal to an integer, such as 8. This specification is not limited to any particular number. The value of seedModValue can be changed based on optimization operations or various other parameters.
[0134] In some specific implementations, a particular range of values for one or more variables discussed herein may be preferable to other possible ranges. For example, MaxSeedOccurrence may be increased to allow indexing more k-mers within a given hash table, such as hash table 124. However, increasing MaxSeedOccurrence may potentially increase the memory usage and size of hash table 124, which could partially increase processing time. Very low values may result in a smaller hash table and fewer data points matching reads based on the hash table, thereby potentially reducing the accuracy of results obtained based on the hash table. Various other trade-offs and effects may depend on one or more relevant variables. For example, one or more variables may be changed based on processing status, user preferences, performance, or other conditions, including seed length indicating the length of a given k-mer or seed, read length indicating the length of a given read, the specific reference genome used, the number of locations stored within the hash table, or related variables.
[0135] refer to Figure 1 and Figure 3In some implementations, the seedModValue used in the examples can be decreased to increase the size of the resulting set of filtered k-mers or other items. For example, in an extreme case, seedModValue can be reduced to a value of 1, in which case the modulo operation discussed herein will be equal to 0. In implementations where 0 is the value that determines a given k-mer to be included in the filtered set, a modulo value of 1 means that the entire set of k-mers or other items will be used as the final filtered set. In some implementations, larger numbers can be used for seedModValue. For example, in an extreme case, seedModValue can be increased to a value of 100. Filtering operations using high seedModValue values will leave fewer items in the final filtered result. In some cases, this can lead to a larger number of unmapped reads. For read lengths of approximately 100 nucleotides, seedModValue values above 100 will potentially result in too many unmapped reads and therefore generally will not lead to efficient processing. However, for longer reads of approximately 1000 nucleotides, a higher seedModValue is more advantageous.
[0136] Both `MaxSeedOccurrence` and `seedModValue` can directly affect the hash table size. The memory usage of a given hash table can be defined as the number of seeds or k-mers retained after filtering multiplied by the size of each cell in the hash table and the load factor used to generate enough cells for a given value. Considering that a 1-byte signature and a 4-byte value result in 5 bytes per cell, each cell in a hash table such as hash table 124 could occupy 5 bytes of memory. For illustrative purposes, consider the example of the human genome. The human genome consists of approximately 3 billion nucleotides. In some cases, approximately 3 billion k-mers can be derived from the human genome depending on one or more variables, including the seed length. Without any filtering, such as in... Figure 1 and Figure 3In the examples discussed, with hash filtering or occurrence filtering, the filtered set of k-clusters associated with the human genome will be equal to the initial set of k-clusters associated with the human genome, i.e., approximately 3 billion. If k-clusters are stored corresponding to 5-byte units and a hash table is generated based on a load factor of 2, the human genome can be stored in a 30-gigabyte hash table. In the case of filtering, for example, with hash filtering using a seedModValue of 8 and occurrence filtering using a MaxSeedOccurrence of 20, the same human genome can be stored in approximately 1.4 gigabytes. Changing the seedModValue to 4 will roughly double the memory usage. In some implementations, values can be selected based on the expected memory usage for a given application. The most advantageous values can be selected based on one or more optimization processes that include automatically changing the values of one or more values, including seedModValue, MaxSeedOccurrence, seed length, read length, sequencing error rate, or any other relevant parameters.
[0137] In some specific implementations, similar to Figure 1 The occurrence counter module 114 and the occurrence counter module 310 may use an occurrence threshold. For example, the occurrence counter module 310 may compare each occurrence value calculated for each k-cluster in the k-cluster set 304 with the occurrence threshold. Based on the comparison between the occurrence value and the occurrence threshold, the occurrence counter module 310 may include or exclude the k-cluster corresponding to a given occurrence value in further processing using the system 300.
[0138] exist Figure 3 In the example, the k-cluster set 304 can be filtered to produce a second k-cluster set 314. The second k-cluster set 314 is a subset of the k-cluster set 304. In some implementations, the second k-cluster set 314 is generated based on other filtering techniques. For example, instead of processing by the hash operation module 308 and the occurrence counter module 310, the system 300 may include a random number generator and use the output of the random number generator to generate a subset of the k-cluster set 304. Other filtering techniques known in the art can also be used to reduce the number of items in a given dataset, so that subsequent datasets include fewer items compared to the initial dataset. In some implementations, references may also be used. Figure 1 The filtering techniques discussed include random algorithms or fixed stride indexes.
[0139] exist Figure 3In stage C, the candidate generation module 316 generates candidate alignment positions 320. In some cases, candidate alignment positions may be referred to as reference sequence positions. Candidate alignment positions 320 include information corresponding to the location within the reference genome where data corresponding to the read represented by genomic data read 302 appears. In some implementations, system 300 may use k-mers corresponding to genomic data read 302 within k-mer set 304 to determine the matching position of the read represented by genomic data read 302 with the reference genome based on the position of these k-mers within k-mer set 304. The reference genome may be stored in a format such as... Figure 1 The hash table shown can be used by system 300 to determine the corresponding position of one or more k-clusters in k-cluster set 304.
[0140] The candidate generation module 316 can generate candidate alignment positions 320 based on the k-clusters in the second k-cluster set 314. For example, as... Figure 3 As shown, the k-mer CATT...GG corresponds to the position "position X" of genome data read 302 on the reference genome. Item 318 illustrates the process of generating candidate alignment positions corresponding to the k-mer CATT...GG. After the k-mer CATT...GG passes through one or more filtering steps, the k-mer CATT...GG is queried in hash table 318c. In some specific implementations, hash table 318c is equivalent to... Figure 1 Hash table 124. The value 318b corresponding to the reference genome position corresponding to the k-mer CATT...GG can be obtained by candidate generation module 316. Candidate generation module 316 also obtains the position of k-mer CATT...GG within genome data read 302, as shown in item 318a. Based on the position of k-mer CATT...GG within genome data read 302 shown in item 318a and the position of k-mer CATT...GG within the reference genome corresponding to hash table 318c shown in item 318b, candidate generation module 316 can determine the position "position X" corresponding to the mapping of genome data read 302 onto the reference genome corresponding to k-mer CATT...GG.
[0141] In some implementations, the candidate generation module 316 may calculate one or more positions based on one or more obtained positions. For example, for the k-mer CATT...GG, the candidate generation module 316 may obtain the position of the k-mer CATT...GG within the genome data read 302 as shown in item 318a and the position of the k-mer CATT...GG within the reference genome corresponding to hash table 318c as shown in item 318b, and calculate position "position X" based on these two positions. For example, in an implementation where the position of a matching sequence is stored as the start of a matching sequence between two or more reads, the candidate generation module 316 may generate position "position X" by subtracting the position of the k-mer CATT...GG within the genome data read 302 from the position of the k-mer CATT...GG within the hash table 318c corresponding to the reference genome. The candidate generation module 316 may use a similar method to generate the positions of the k-mer CATT...GG, AGTC...CT, and GGAT...CC.
[0142] exist Figure 3 In stage D, the sorting module 322 sorts the candidate alignment positions 320. Generally, any suitable sorting technique can be used. Figure 3 In the example, the sorting module 322 may sort the candidate alignment positions 320 based on a calculated count. The calculated count represents the number of supporting k-mers for a given candidate alignment position 320. For example, one or more positions in the candidate alignment positions 320 may be copies indicating that two or more k-mers in the second k-mer set 314 correspond to the same alignment of the genome data read 302 on the reference genome represented by hash table 318c. If two k-mers correspond to the same alignment, the count for that alignment is 2. Figure 3 In the example, the count for position "position X" is count X, the count for position "position Y" is count Y, and the count for position "position Z" is count Z. The pairs can be sorted in descending order such that a count Y greater than both count X and count Z causes position Y to be stored above positions X and Z. Similarly, a count X greater than count X causes position X to be stored above position Z. Figure 3 In the example, the positions can be sorted by comparison in descending order, but this paper envisions other possible sorting orders.
[0143] Alignments can be sorted using a descending order to optimize the alignment processing steps. For example, alignments with a larger number of supporting k-mers tend to have fewer mismatches compared to alignments with fewer supporting k-mers. Each k-mer can be studied to determine the number of mismatches before selecting the final alignment. By processing these alignments to be more likely to pass a set of criteria first, system 300 can accelerate the alignment process.
[0144] In stage E, the scoring and output module 326 obtains the first position corresponding to position Y in the sorted candidate alignment list 324. Position Y is scored based on the reference genome corresponding to hash table 318c. Figure 3 In the example, the scoring and output module 326 can calculate the number of mismatches between genomic data such as a genomic data read 302 associated with position Y corresponding to the k-mer AGTC...CT and reference genomic data corresponding to hash table 318c, where the reference genomic data is used to generate hash table 318c. A mismatch can refer to a nucleotide mismatch between genomic data read 302 and a nucleotide mismatch in the reference genomic data. For example, at a given position along a matching sequence, one sequence might correspond to nucleotide A, while another sequence might correspond to nucleotide G. This mismatch can be calculated by the scoring and output module 326.
[0145] The scoring and output module 326 can generate the total number of mismatches corresponding to the alignment position Y and generate a score A, where score A represents at least a certain number of mismatches. In some cases, other parameters or values can be used to generate a score 328 that includes score A. Figure 3 In the example, the scoring and output module 326 compares the score A with a threshold value 330. Generally, the threshold value 330 can be any suitable value. Figure 3 In the example, the threshold value 330 is equal to the value 4, where 4 represents the number of mismatches. In some specific implementations, other values may be used. For example, an optimization process may be used to determine another suitable value for the threshold value 330. The scoring and output module 326 may determine that score A does not meet the threshold and therefore position Y is not selected based on comparing score A with the threshold value 330. The scoring and output module 326 may then process one or more other positions.
[0146] The scoring and output module 326 can generate the total number of mismatches corresponding to the comparison position X and generate a score B, where the score B represents at least a certain number of mismatches. Figure 3 In the example, the scoring and output module 326 can compare the score B with a threshold value 330. Based on the comparison, the scoring and output module 326 can determine that the score B meets the threshold value 330. Based on the determination that the score B meets the threshold value 330, the scoring and output module 326 can output a selected candidate 332. The selected candidate 332 may include data representing the k-cluster CATT...GG, position X, or score B.
[0147] In some implementations, no score meets the criteria. In this case, a score can be selected from the 328 scores based on a given criterion. For example, the given criterion could include comparing one or more scores in the 328 to determine the minimum score that represents a match with the minimum amount. The position corresponding to the minimum score can then be output as the selected candidate.
[0148] In stage F, computer 306 may obtain the selected candidate 332 and send data 334 representing the selected candidate 332 to another entity or process. In some cases, computer 306 may send data 334 to another entity or device via a communication network. For example, another device may send a request for the selected candidate associated with the genomic data read 302. Computer 306 may then send the selected candidate 332 to the other device.
[0149] Figure 4 This is a flowchart illustrating an example of a process 400 for generating a hash table for software-accelerated genome read mapping. Process 400 can be, for example... Figure 3 The system 300 is executed by one or more electronic systems.
[0150] Process 400 includes obtaining a k-mer seed (402) from a genome data read by one or more computers. In some embodiments, the k-mer seed is a representation of the nucleotide sequence of a longer nucleotide sequence associated with the genome data read. In some embodiments, the genome data read is the result of a read analysis operation performed on a computer or hardware-accelerated device.
[0151] Process 400 includes generating a genome signature (404) by one or more computers based on the obtained k-mer seed. In some specific implementations, Figure 3 The candidate generation module 316 is partially used to generate a signature for the obtained k-mer seed. In some implementations, the signature of the obtained k-mer seed is generated based on a hash function. For example, the hash function can operate on the representation of the obtained k-mer seed. The hash function can generate a result that can be used as a genome signature. In some implementations, one or more intermediate processing steps can be performed before or after the hash function generates the result. For example, the hash function can generate a result, and a second operation can be applied to that result to generate a genome signature.
[0152] Process 400 includes one or more computers using a hash data structure to determine one or more reference sequence positions that match at least a portion of a k-mer seed (406). In some embodiments, the hash data structure includes N data units, each including a first part storing a predetermined genomic signature and a second part storing one or more reference sequence positions that match at least a portion of the k-mer seed from which the predetermined genomic signature originates. In some embodiments, the predetermined genomic signature occupies 1 memory byte. In some embodiments, the generation... Figure 1 The process of generating hash table 124 shown is similar to that of generating hash data structures.
[0153] Process 400 includes one or more computers selecting at least one reference sequence position from the determined reference sequence positions as the actual alignment of the obtained k-mer seed based on one or more alignment scores (408). In some embodiments, one or more positions are determined, and a method for scoring the one or more positions is used to determine the actual alignment of the obtained k-mer seed based on one or more alignment scores. For example, the number of mismatches for a given alignment can be calculated, where a certain number of mismatches may include one or more nucleotides of a read mismatch with one or more nucleotides of a reference nucleotide sequence. These mismatches can be calculated based on the representation of one or more nucleotides of the read and the representation of one or more nucleotides of the reference nucleotide sequence, and the comparison between the two based on a given candidate start position of the read relative to the reference nucleotide sequence.
[0154] Figure 5 This is a diagram of 500 computer system components that can be used to implement a system for generating medical analyses based on multivariate ordered data using a joint model.
[0155] Computing device 500 is intended to represent various forms of digital computers, such as laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. Computing device 550 is intended to represent various forms of mobile devices, such as personal digital assistants, mobile phones, smartphones, and other similar computing devices. Additionally, computing device 500 or 550 may include a Universal Serial Bus (USB) flash drive. The USB flash drive may store an operating system and other applications. The USB flash drive may include input / output components, such as a wireless transmitter or USB connector that can be plugged into a USB port of another computing device. The components shown herein, their connections and relationships, and their functions are intended only as examples and are not intended to limit the specific implementations of the invention described and / or claimed in this document.
[0156] Computing device 500 includes a processor 502, a memory 504, a storage device 506, a high-speed controller 508 connected to the memory 504 and a high-speed expansion port 510, and a low-speed controller 512 connected to a low-speed expansion port 514 and the storage device 506. Each of components 502, 504, 506, 508, 510, and 512 is interconnected using various buses and may be mounted on a common motherboard or otherwise. Processor 502 processes instructions for execution within computing device 500, including instructions stored in memory 504 or storage device 506, to display graphical information of a GUI on an external input / output device, such as a display 516 coupled to high-speed controller 508. In other embodiments, multiple processors and / or multiple buses may be used with multiple memories and various types of memory, depending on the situation. Additionally, multiple computing devices 500 may be connected, each providing some part of the necessary operation, for example, as a server library, a group of blade servers, or a multiprocessor system.
[0157] Memory 504 stores information within computing device 500. In one embodiment, memory 504 is one or more volatile memory cells. In another embodiment, memory 504 is one or more non-volatile memory cells. Memory 504 can also be another form of computer-readable medium, such as a magnetic disk or optical disk.
[0158] Storage device 506 provides massive storage for computing device 500. In one embodiment, storage device 506 may be or contain computer-readable media, such as floppy disk devices, hard disk devices, optical disk devices, magnetic tape devices, flash memory or other similar solid-state storage devices, or device arrays, including devices or other configurations in a storage area network. A computer program product may be tangibly embodied in an information carrier. The computer program product may also contain instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable or machine-readable medium, such as memory 504, storage device 506, or memory on processor 502.
[0159] High-speed controller 508 manages bandwidth-intensive operations of computing device 500, while low-speed controller 512 manages less bandwidth-intensive operations. This functional allocation is merely illustrative. In one embodiment, high-speed controller 508 is coupled to memory 504, display 516, and high-speed expansion port 510, which accepts various expansion cards (not shown), for example, via a graphics processor or accelerator. In this embodiment, low-speed controller 512 is coupled to storage device 506 and low-speed expansion port 514. The low-speed expansion port (which may include various communication ports such as USB, Bluetooth, Ethernet, and wireless Ethernet) may be coupled to one or more input / output devices, such as keyboards, pointing devices, microphone / speaker pairs, scanners, or networking devices such as switches or routers, for example, via a network adapter. Computing device 500 can be implemented in a variety of different forms, as shown in the figures. For example, the computing device may be implemented as a standard server 520, or multiple times in a group of such servers. It may also be implemented as part of a rack-mount server system 524. Furthermore, the computing device may be implemented in a personal computer such as a laptop computer 522. Alternatively, components from computing device 500 may be combined with other components in mobile devices (not shown), such as device 550. Each of such devices may contain one or more of computing devices 500, 550, and the entire system may consist of multiple computing devices 500, 550 communicating with each other.
[0160] The computing device 500 can be implemented in a variety of different forms, as shown in the figure. For example, the computing device can be implemented as a standard server 520, or multiple times in a group of such servers. It can also be implemented as part of a rack server system 524. Furthermore, the computing device can be implemented in a personal computer such as a laptop computer 522. Alternatively, components from the computing device 500 can be combined with other components in a mobile device (not shown), such as device 550. Each of such devices can contain one or more of the computing devices 500, 550, and the entire system can consist of multiple computing devices 500, 550 communicating with each other.
[0161] Computing device 550 includes a processor 552, memory 564, and input / output devices such as a display 554, a communication interface 566, and a transceiver 568, as well as other components. Device 550 may also be provided with storage devices, such as microdrives or other devices, to provide additional storage. Each of components 550, 552, 564, 554, 566, and 568 is interconnected using various buses, and some of these components may be mounted on a common motherboard or otherwise, as appropriate.
[0162] Processor 552 executes instructions within computing device 550, including instructions stored in memory 564. The processor can be implemented as a chipset comprising multiple independent analog and digital processors. Alternatively, the processor can be implemented using any of a variety of architectures. For example, processor 552 can be a CISC (Complex Instruction Set Computer) processor, a RISC (Reduced Instruction Set Computer) processor, or a MISC (Minimum Instruction Set Computer) processor. The processor can provide coordination for, for example, other components of device 550, such as control of the user interface, applications running by device 550, and wireless communications performed by device 550.
[0163] Processor 552 can communicate with the user via control interface 558 and display interface 556 coupled to display 554. Display 554 can be, for example, a TFT (Thin Film Transistor Liquid Crystal Display) or OLED (Organic Light Emitting Diode) display or other suitable display technology. Display interface 556 may include appropriate circuitry for driving display 554 to present graphics and other information to the user. Control interface 558 can receive commands from the user and translate these commands for submission to processor 552. Additionally, an external interface 562 can be provided to communicate with processor 552 to enable short-range communication between device 550 and other devices. External interface 562 may provide wired communication in some embodiments, or wireless communication in others, and multiple interfaces may be used.
[0164] Memory 564 stores information within computing device 550. Memory 564 may be implemented as one or more computer-readable media, one or more volatile memory cells, or one or more non-volatile memory cells. Extended memory 574 may also be provided and connected to device 550 via an extended interface 572, which may include, for example, a SIMM (Single In-line Memory Module) card interface. Such extended memory 574 may provide additional storage space for device 550, or may also store applications or other information for device 550. Specifically, extended memory 574 may include instructions for performing or supplementing the above processes, and may also include security information. Thus, for example, extended memory 574 may be provided as a security module for device 550 and may be programmed with instructions that allow secure use of device 550. Furthermore, secure applications may be provided via a SIMM card along with additional information, such as placing identification information on the SIMM card in an unbreakable manner.
[0165] The memory may include, for example, flash memory and / or NVRAM memory, as described below. In one embodiment, the computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable or machine-readable medium, such as memory 564, extended memory 574, or memory on processor 552 that can be received, for example, by transceiver 568 or external interface 562.
[0166] Device 550 can communicate wirelessly via communication interface 566, which may include digital signal processing circuitry when needed. Communication interface 566 can provide communication under various modes or protocols, such as GSM voice calls, SMS, EMS or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS. Such communication can occur, for example, via radio frequency transceiver 568. Additionally, short-range communication can occur, such as using Bluetooth, Wi-Fi, or other such transceivers (not shown). Furthermore, GPS (Global Positioning System) receiver module 570 can provide device 550 with additional navigation-related and location-related wireless data, which may be used by applications running on device 550 as appropriate.
[0167] Device 550 can also communicate audibly using audio codec 560, which receives spoken information from a user and converts it into usable digital information. Audio codec 560 can also generate audible sounds for the user, such as through a speaker (e.g., in the handheld terminal of device 550). Such sounds may include sounds from voice telephone calls, recorded sounds such as voice messages, music files, etc., and may also include sounds generated by applications operating on device 550.
[0168] The computing device 550 can be implemented in a variety of different forms, as shown in the figure. For example, the computing device can be implemented as a mobile phone 580. The computing device can also be implemented as part of a smartphone 582, a personal digital assistant, or other similar mobile devices.
[0169] Various specific embodiments of the systems and methods described herein may be implemented in digital electronic circuits, integrated circuits, specially designed ASICs (Application-Specific Integrated Circuits), computer hardware, firmware, software, and / or combinations of such embodiments. These various embodiments may include implementations in one or more computer programs capable of executing and / or interpreting on a programmable system including at least one programmable processor, which may be a dedicated or general-purpose processor coupled to receive data and instructions from a storage system, at least one input device, and at least one output device, and to send data and instructions to the storage system, at least one input device, and at least one output device.
[0170] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and can be implemented in high-level procedural and / or object-oriented programming languages and / or in assembly language / machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, apparatus, and / or device used to provide machine instructions and / or data to a programmable processor, such as a disk, optical disk, memory, programmable logic device (PLD), including machine-readable media that receive machine instructions as machine-readable signals. The term "machine-readable signal" refers to any signal used to provide machine instructions and / or data to a programmable processor.
[0171] To provide interaction with the user, the systems and techniques described herein can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) that the user can use to provide input to the computer. Other types of devices may 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, auditory, or tactile feedback; and input from the user can be received in any form, including sound, speech, or tactile input.
[0172] The systems and technologies described herein can be implemented in a computing system that includes back-end components (e.g., as a data server), middleware components (e.g., an application server), or front-end components (e.g., a client computer with a graphical user interface or a web browser). Users can interact with specific implementations of the systems and technologies described herein, or with any combination of such back-end, middleware, or front-end components, through this computing system. The components of the system can be interconnected via any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include local area networks (“LANs”), wide area networks (“WANs”), and the Internet.
[0173] This computing system may include clients and servers. Clients and servers are typically located far apart and usually interact via a communication network. The client-server relationship is established by means of computer programs running on the respective computers and having a client-server relationship with each other.
[0174] Several embodiments have been described. However, it should be understood that various modifications can be made without departing from the spirit and scope of the invention. Furthermore, the logical flow shown in the figures does not require the specific order or sequence shown to achieve the desired result. Additionally, other steps may be provided in the flow, or steps may be eliminated, and other components may be added to or removed from the system. Therefore, other embodiments are also within the scope of the following claims.
[0175] The embodiments of the invention and all functional operations described in this specification can be implemented in digital electronic circuit systems, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents or combinations thereof. Embodiments of the invention can be implemented as one or more computer program products, for example, one or more modules of computer program instructions encoded on a computer-readable medium for execution by or control of a data processing apparatus. The computer-readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of a substance that enables machine-readable propagated signals, or a combination thereof. The term "data processing apparatus" encompasses all means, devices, and machines for processing data, including, for example, a programmable processor, a computer, or multiple processors or computers. In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program in question, such as code constituting processor firmware, a protocol stack, a database management system, an operating system, or a combination thereof. The propagated signal is an artificially generated signal, for example, a machine-generated electrical, optical, or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device.
[0176] A computer program (also known as a program, software, software application, script, or code) can be written in any programming language, including compiled or interpreted languages, and can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unit suitable for a computing environment. A computer program does not necessarily correspond to a file in a file system. A program may be stored as part of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinating files (e.g., a file storing one or more modules, subroutines, or code sections). A computer program can be deployed to execute on a single computer or on multiple computers located at a single site or distributed across multiple sites and interconnected by a communication network.
[0177] The processes and logic flows described in this specification can be executed by one or more programmable processors that execute one or more computer programs to perform functions by manipulating input data and generating outputs. The processes and logic flows can also be executed by dedicated logic circuitry, and the device can be implemented as dedicated logic circuitry, such as an FPGA (Field-Programmable Gate Array) or an ASIC (Application-Specific Integrated Circuit).
[0178] Processors suitable for executing computer programs include, for example, both general-purpose and special-purpose microprocessors, and any one or more processors of any kind of digital computer. Typically, a processor receives instructions and data from read-only memory or random access memory, or both. The basic elements of a computer are a processor 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 (e.g., hard disks, magneto-optical disks, or optical disks) for storing data. However, a computer does not need to have such devices. Furthermore, a computer may be embedded in another device, such as a tablet computer, mobile phone, personal digital assistant (PDA), mobile audio player, global positioning system (GPS) receiver, etc. Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; hard 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 special-purpose logic circuitry.
[0179] To provide interaction with the user, embodiments of the present invention can be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) for the user to provide input to the computer. Other types of devices may also be used to provide interaction with the user; for example, the 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 sound, speech, or tactile input.
[0180] Embodiments of the present invention can be implemented in a computing system that includes back-end components (e.g., as a data server), middleware components (e.g., an application server), or front-end components (e.g., a client computer with a graphical user interface or a web browser), allowing users to interact with specific embodiments of the invention or any combination of one or more such back-end, middleware, or front-end components. Components of the system can be interconnected via any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include local area networks (“LANs”) and wide area networks (“WANs”), such as the Internet.
[0181] This computing system may include clients and servers. Clients and servers are typically located far apart and usually interact via a communication network. The client-server relationship is established by means of computer programs running on the respective computers and having a client-server relationship with each other.
[0182] While this specification contains numerous details, these should not be construed as limiting the scope of the invention or the scope of claims, but rather as descriptions of features specific to particular embodiments of the invention. Certain features described in this specification 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 the claimed combination may be removed from the combination, and the claimed combination may be for sub-combinations or variations thereof.
[0183] Similarly, although operations are depicted in the accompanying drawings in a specific order, this should not be construed as requiring such operations to be performed in the specific order shown or sequentially, or requiring all described operations to achieve the desired result. In some cases, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the embodiments described above should not be construed as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated into a single software product or packaged into multiple software products.
[0184] In each instance where an HTML file is 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, in instances where a table or hash table is mentioned, other data structures (such as spreadsheets, relational databases, or structured files) can be used.
[0185] Other implementation plans
[0186] Specific embodiments of the invention have been described. Other embodiments are also within the scope of the following claims. For example, the steps described in the claims can be performed in a different order and will still achieve the desired result.
Claims
1. A method for generating a hash table for software-accelerated genomic data read mapping, the method comprising: Genome data is received by one or more computers, wherein the genome data is derived from parental genome data; A first value set is generated by one or more computers based on the genomic data; A subset of the genome data is generated by one or more computers based on the first value set; A signature for each k-mer in the subset of the genomic data is calculated by one or more computers, wherein the signature is calculated based on a first hash function; One or more computers compute a first attribute for each k-mer in the subset of the genomic data, wherein the first attribute includes the position of a given k-mer in the genomic data within the sequence of the genomic data; An index for each k-mer in the subset of the genomic data is calculated by one or more computers, wherein the index is calculated based on a second hash function; as well as One or more computers store the signature and the first attribute of each k-mer in the subset of the genome data within a hash data structure based on the index of each k-mer in the subset of the genome data.
2. The method of claim 1, wherein each k-mer in the subset of the genomic data is a k-mer comprising k letters representing a string of one or more nucleotides.
3. The method of claim 1, wherein the first value set includes a representation of the number of times a given k-mer of the genomic data appears within the parental genomic data.
4. The method according to claim 1, wherein the first value set includes a representation of hash values calculated based on the corresponding k-mers of the genomic data.
5. The method according to claim 1, wherein the memory allocation size for storing the signature of a given k-cluster in the subset is smaller than the memory allocation size for storing the given k-cluster.
6. The method according to claim 1, further comprising: One or more computers send data corresponding to the hash data structure as data packets to the first device.
7. The method of claim 6, wherein the first device is a memory storage device.
8. The method of claim 6, wherein the second device reads the data corresponding to the hash data structure from the first device, and wherein the second device performs a series of operations to generate a second hash data structure based on the data corresponding to the hash data structure.
9. A system for generating hash tables for software-accelerated mapping of genomic data reads, the system comprising: One or more computers; as well as One or more memories, the one or more memories storing instructions that, when executed by the one or more computers, cause the one or more computers to perform operations, the operations including: The one or more computers receive genomic data, wherein the genomic data is derived from parental genomic data; The first value set is generated by the one or more computers based on the genomic data; A subset of the genome data is generated by the one or more computers based on the first value set; The signature of each k-mer in the subset of the genomic data is calculated by the one or more computers, wherein the signature is calculated based on a first hash function; The one or more computers calculate a first attribute for each k-mer in the subset of the genomic data, wherein the first attribute includes the position of a given k-mer in the genomic data within the sequence of the genomic data; The index of each k-mer in the subset of the genomic data is calculated by the one or more computers, wherein the index is calculated based on a second hash function; and The signature and the first attribute of each k-mer in the subset of the genome data are stored in a hash data structure by the one or more computers based on the index of each k-mer in the subset of the genome data.
10. The system of claim 9, wherein each k-mer in the subset of the genomic data is a k-mer comprising k letters representing a string of one or more nucleotides.
11. The system according to claim 9, wherein the first value set includes a representation of the number of times a given k-mer of the genomic data appears in the parental genomic data.
12. The system according to claim 9, wherein the first value set comprises a representation of hash values calculated based on the corresponding k-mers of the genomic data.
13. The system according to claim 9, wherein the memory allocation size for storing the signature of a given k-cluster in the subset is smaller than the memory allocation size for storing the given k-cluster.
14. The system according to claim 9, wherein the operation further comprises: The one or more computers send data corresponding to the hash data structure as data packets to the first device.
15. The system of claim 14, wherein the first device is a memory storage device.
16. The system of claim 14, wherein the second device reads the data corresponding to the hash data structure from the first device, and wherein the second device performs a series of operations to generate a second hash data structure based on the data corresponding to the hash data structure.
17. A computer-readable medium storing instructions, said instructions, when executed by one or more computers, causing said one or more computers to perform operations for generating a hash table for software-accelerated mapping of genomic data reads, said operations comprising: Receive genomic data, wherein the genomic data is derived from parental genomic data; A first value set is generated based on the genomic data; A subset of the genome data is generated based on the first value set; Calculate a signature for each k-mer in the subset of the genomic data, wherein the signature is calculated based on a first hash function; Calculate a first attribute for each k-mer in the subset of the genomic data, wherein the first attribute includes the position of a given k-mer in the genomic data within the sequence of the genomic data; Calculate the index of each k-mer in the subset of the genomic data, wherein the index is calculated based on a second hash function; as well as The index of each k-mer in the subset of the genomic data stores the signature and the first attribute of each k-mer in the subset of the genomic data within a hash data structure.
18. The computer-readable medium of claim 17, wherein each k-mer in the subset of the genomic data is a k-mer comprising k letters representing a string of one or more nucleotides.
19. The computer-readable medium of claim 17, wherein the first value set includes a representation of the number of times a given k-mer of the genomic data occurs within the parental genomic data.
20. The computer-readable medium according to claim 17, wherein the first value set includes a representation of hash values calculated based on the corresponding k-mer of the genomic data.
21. The computer-readable medium according to claim 17, wherein the memory allocation size for storing the signature of a given k-merger in the subset is smaller than the memory allocation size for storing the given k-merger.
22. The computer-readable medium according to claim 17, further comprising: The data corresponding to the hash data structure is sent as a data packet to the first device.
23. The computer-readable medium of claim 22, wherein the first device is a memory storage device.
24. The computer-readable medium of claim 22, wherein the second device reads the data corresponding to the hash data structure from the first device, and wherein the second device performs a series of operations to generate a second hash data structure based on the data corresponding to the hash data structure.