Multipath Software Accelerated Genomic Read Mapping Engine
The multipath accelerated genomic read mapping system efficiently aligns genomic data reads to a reference genome by extracting k-mers and using a hash data structure to assess alignment criteria, resulting in reduced runtime and improved accuracy.
Patent Information
- Application Number
- JP2024553470
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-03-08
- Filing Date
- 2023-03-03
- Publication Date
- 2025-04-22
AI Technical Summary
Existing genomic read mapping technologies face challenges in efficiently aligning genomic data reads to a reference genome, particularly in terms of runtime and accuracy.
The system employs a multipath accelerated genomic read mapping approach, which involves extracting k-mers from genomic data, processing them to determine candidate alignment sites, and using a hash data structure to assess alignment criteria, allowing for early termination of the mapping process when a valid alignment is found.
This approach significantly reduces the runtime for genomic data mapping and alignment by allowing early termination of the mapping process once a valid alignment is found, thereby improving efficiency and accuracy.
Smart Images

Figure 2025512716000001_ABST
Abstract
Description
[Technical field]
[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of U.S. Provisional Patent Application No. 63 / 317,859, filed March 8, 2022, the contents of which are incorporated by reference in their entirety herein. [Background technology]
[0002] Genomic read mapping describes a method for identifying the locus of genes and the distance between genes in some cases. Computers can be used to analyze one or more sets of genomic data and correlate a collection of molecular markers, such as a series of nucleotides, with their respective positions on a given reference genome. In this way, computers can be used to "map" a collection of molecular markers onto a reference genome. Summary of the Invention [Means for solving the problem]
[0003] In some implementations, a system for multi-pass accelerated genomic read mapping includes one or more processing stages. Each of the one or more processing stages can include extracting one or more k-mers from genomic data reads and processing the k-mers to determine candidate alignment locations indicating locations on a reference genome to which the genomic data reads are aligned. In some implementations, a first processing stage includes generating a single filtered k-mer, generating candidate alignments corresponding to the reference genomic data, and evaluating the candidate alignments to determine whether the alignments meet an alignment criterion. If the candidate alignments generated in the first processing stage do not meet the alignment criterion, the system can perform a second processing stage. If the one or more candidate alignment locations generated in the second processing stage do not meet the alignment criterion, the system can perform a third processing stage. In some implementations, the processing stops when a candidate alignment that meets the alignment criterion is evaluated.
[0004] In some implementations, the alignment criteria includes a threshold amount of mismatch between a portion of the genomic data read and a portion of the reference genomic data read. In some implementations, a k-mer seed is defined as a sequence of contiguous nucleotides, where the number of nucleotides in a given k-mer sequence is defined by "k", and these nucleotides (or, more generally, bases) are represented by a string of letters from a predefined vocabulary. For example, a given k-mer may represent the sequence "ATGCG", where the symbols: {A, C, G, T} represent the four types of nucleotides present in deoxyribonucleic acid (DNA), specifically adenine, cytosine, guanine, and thymine.
[0005] In some implementations, a genomic data read includes data indicative of a sequence of nucleotides. The sequence of nucleotides can include a sequence of symbols, each of which represents a chemical compound. For example, a genomic data read can include the symbols A, C, G, and T, which 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).
[0006] In some implementations, the genomic signature includes a hash generated using a hash function applied to the k-mer. For example, the system can obtain a k-mer that represents the sequence "ATGCG". The system can apply a hash function to the k-mer data. In some implementations, the resulting hash is used as a key to query a hash table.
[0007] In some implementations, the predetermined criteria used to select the subset of k-mer seeds includes a value match. For example, the system can perform one or more modulo operations on one or more genomic signatures generated based on a hash function applied to one or more k-mers. The system can compare the results of the one or more modulo operations with a value as part of the predetermined criteria. If the results match a value specified in the predetermined criteria, the system can select the subset of k-mer seeds.
[0008] In some implementations, the reference sequence position comprises the k-mer position in the reference genome. For example, the sequence "ATGCG" can occur starting from the 300th nucleotide in the reference genome. The sequence can occur at one or more positions in the reference genome. The one or more k-mer reference sequence positions can be stored in a hash table.
[0009] One innovative aspect of the subject matter described herein is embodied in a method including obtaining, by one or more computers, a first k-mer seed from a genomic data read; generating, by the one or more computers, a genomic signature based on the first k-mer seed; determining, by the one or more computers, reference sequence locations that match at least a portion of the first k-mer seed using a hash data structure, where the hash data structure includes N data cells including a first portion that stores a predetermined genomic signature and a second portion that stores values corresponding to locations in the reference genomic sequence that match at least a portion of the first k-mer seed from which the predetermined genomic signature was derived; determining, by the one or more computers, a number of mismatches based on comparing genomic data of the genomic data read to genomic data of the reference genomic sequence; obtaining, by the one or more computers, a set of k-mer seeds from the genomic data read based on determining that the number of mismatches includes one or more mismatches; and selecting, by the one or more computers, an actual alignment for the genomic data read based on the set of k-mer seeds from the genomic data read.
[0010] Other implementations of this and other aspects include corresponding systems, apparatus, and computer programs configured to perform the actions of the methods and encoded on a computer storage device. One or more computer systems may be so configured by software, firmware, hardware, or combinations thereof installed on the system that, during operation, cause the system to perform the actions. One or more computer programs may be so configured by having instructions that, when executed by a data processing device, cause the device to perform the actions.
[0011] Each of the above and other embodiments may optionally include one or more of the following features, alone or in combination: For example, in some implementations, obtaining a first k-mer seed from a genomic data read includes obtaining a first k base of the genomic data read as the first k-mer seed.
[0012] In some implementations, the action includes selecting the first k-mer seed as the actual alignment for the genomic data read based on determining that the number of mismatches is zero.
[0013] In some implementations, the actions include generating a genomic signature for each k-mer seed of the set of k-mer seeds, and selecting a subset of the k-mer seeds of the set based on the genomic signature.
[0014] In some implementations, selecting a subset of the k-mer seeds of the set based on the genomic signatures includes performing one or more modulo operations, including a modulo operation for each genomic signature of the genomic signatures, and selecting the subset of the k-mer seeds of the set based on results of the one or more modulo operations and a predetermined criterion.
[0015] In some implementations, the actions include determining, by one or more computers, reference sequence locations for each k-mer seed of the subset that match at least a portion of the given k-mer seed using a hash data structure, and generating a candidate location list including the reference sequence locations for each k-mer seed of the subset.
[0016] In some implementations, the actions include sorting the reference sequence locations of the candidate location list according to the number of k-mer seeds paired with a given reference sequence location in the hash data structure, and determining, in the order of the sorted candidate location list, the number of mismatches for each of the reference sequence locations of the sorted candidate location list compared to the reference genome sequence.
[0017] In some implementations, the action includes determining that the number of mismatches for a first candidate position among the reference sequence positions in the sorted candidate position list meets a mismatch threshold, and selecting the first candidate position as the actual alignment.
[0018] In some implementations, the mismatch threshold comprises a threshold number of mismatched nucleotide values.
[0019] In some implementations, the actions include determining that a number of mismatches for one or more of the reference sequence positions in the sorted candidate position list does not meet a mismatch threshold, and obtaining a second set of k-mer seeds from the genomic data reads based on determining that the number of mismatches does not meet the mismatch threshold.
[0020] In some implementations, the actions include generating a second genomic signature for each k-mer seed of the second set of k-mer seeds, performing a second one or more modulo operations including a modulo operation on each genomic signature of the second genomic signatures, and selecting a second subset of the second set of k-mer seeds based on results of the second one or more modulo operations and a predetermined criterion.
[0021] In some implementations, the actions include using the hash data structure to determine reference sequence locations for each k-mer seed of the second subset that match at least a portion of the given k-mer seed, and generating a second candidate location list including the reference sequence locations for each k-mer seed of the second subset.
[0022] In some implementations, the actions include sorting the reference sequence locations of the second candidate location list according to the number of k-mer seeds paired with a given reference sequence location in the hash data structure, and determining, in the order of the sorted second candidate location list, a number of mismatches for each of the reference sequence locations of the sorted second candidate location list compared to the reference genome sequence.
[0023] In some implementations, the action includes determining that the number of mismatches for the second candidate position among the reference sequence positions in the sorted second candidate position list satisfies a second mismatch threshold, and selecting the second candidate position as the actual alignment.
[0024] Another innovative aspect of the subject matter described herein includes obtaining, by one or more computers, a first k-mer seed from genomic data reads; generating, by the one or more computers, a genomic signature based on the first k-mer seed; and determining, by the one or more computers, reference sequence locations that match at least a portion of the first k-mer seed using a hash data structure, wherein the hash data structure includes a first portion that stores the predetermined genomic signature and a second portion that stores values corresponding to locations in the reference genomic sequence that match at least a portion of the first k-mer seed from which the predetermined genomic signature was derived. the one or more computers including a tassel; determining, by the one or more computers, a number of mismatches based on comparing genomic data of the genomic data reads to genomic data of a reference genomic sequence; determining, by the one or more computers, that the number of mismatches does not meet a mismatch threshold; obtaining, by the one or more computers, a second set of k-mer seeds from the genomic data reads based on determining that the number of mismatches does not meet the mismatch threshold; and selecting, by the one or more computers, an actual alignment for the genomic data reads based on the second set of k-mer seeds from the genomic data reads.
[0025] Other implementations of this and other aspects include corresponding systems, apparatus, and computer programs configured to perform the actions of the methods and encoded on a computer storage device. One or more computer systems may be so configured by software, firmware, hardware, or combinations thereof installed on the system that, during operation, cause the system to perform the actions. One or more computer programs may be so configured by having instructions that, when executed by a data processing device, cause the device to perform the actions.
[0026] Each of the above and other embodiments can optionally include one or more of the following features, alone or in combination. For example, in some implementations, 2. The method of claim 1, wherein obtaining a first k-mer seed from a genomic data read includes obtaining a first k base of the genomic data read as the first k-mer seed.
[0027] In some implementations, selecting an actual alignment for the genomic data reads based on the second set of k-mer seeds from the genomic data reads includes generating a genomic signature for each k-mer seed of the second set of k-mer seeds, and selecting a subset of the second set of k-mer seeds based on the genomic signature.
[0028] In some implementations, selecting a subset of the second set of k-mer seeds based on the genomic signatures includes performing one or more modulo operations, including a modulo operation for each genomic signature of the genomic signatures, and selecting the subset of the second set of k-mer seeds based on results of the one or more modulo operations and a predetermined criterion.
[0029] In some implementations, the actions include determining, by one or more computers, a reference sequence location for each k-mer seed of the second set of k-mer seeds that matches at least a portion of the given k-mer seed using a hash data structure, and generating a candidate location list including the reference sequence location for each k-mer seed of the second set of k-mer seeds.
[0030] In some implementations, the actions include sorting the reference sequence locations of the candidate location list according to the number of k-mer seeds paired with a given reference sequence location in the hash data structure, and determining, in the order of the sorted candidate location list, the number of mismatches for each of the reference sequence locations of the sorted candidate location list compared to the reference genome sequence.
[0031] In some implementations, the action includes determining that the number of mismatches for a first candidate position among the reference sequence positions in the sorted candidate position list satisfies a second mismatch threshold, and selecting the first candidate position as the actual alignment.
[0032] In some implementations, the second mismatch threshold comprises a threshold number of mismatched nucleotide values.
[0033] In some implementations, the actions include generating a second genomic signature for each k-mer seed of the second set of k-mer seeds, performing a second one or more modulo operations including a modulo operation on each genomic signature of the second genomic signatures, and selecting a second subset of the second set of k-mer seeds based on results of the second one or more modulo operations and a predetermined criterion.
[0034] In some implementations, the actions include using the hash data structure to determine reference sequence locations for each k-mer seed of the second subset that match at least a portion of the given k-mer seed, and generating a second candidate location list including the reference sequence locations for each k-mer seed of the second subset.
[0035] In some implementations, the actions include sorting the reference sequence locations of the second candidate location list according to the number of k-mer seeds paired with a given reference sequence location in the hash data structure, and determining, in the order of the sorted second candidate location list, a number of mismatches for each of the reference sequence locations of the sorted second candidate location list compared to the reference genome sequence.
[0036] In some implementations, the action includes determining that the number of mismatches for the second candidate position among the reference sequence positions in the sorted second candidate position list satisfies a third mismatch threshold, and selecting the second candidate position as the actual alignment.
[0037] A third innovative aspect of the subject matter described herein is embodied in a method including: obtaining, by one or more computers, a first k-mer seed from a genomic data read; generating, by the one or more computers, a genomic signature based on the first k-mer seed; determining, by the one or more computers, reference sequence locations that match at least a portion of the first k-mer seed using a hash data structure, where the hash data structure includes N data cells including a first portion that stores a predetermined genomic signature and a second portion that stores a value corresponding to a location in the reference genomic sequence that matches at least a portion of the first k-mer seed from which the predetermined genomic signature was derived; determining, by the one or more computers, a number of mismatches based on comparing genomic data of the genomic data read to genomic data of the reference genomic sequence; comparing the number of mismatches to a mismatch threshold; and selecting, by the one or more computers, an actual alignment for the genomic data read based on comparing the number of mismatches to the mismatch threshold. In some implementations, selecting the actual alignment for the genomic data read is performed after comparing the number of mismatches to a mismatch threshold.
[0038] Other implementations of this and other aspects include corresponding systems, apparatus, and computer programs configured to perform the actions of the methods and encoded on a computer storage device. One or more computer systems may be so configured by software, firmware, hardware, or combinations thereof installed on the system that, during operation, cause the system to perform the actions. One or more computer programs may be so configured by having instructions that, when executed by a data processing device, cause the device to perform the actions.
[0039] Each of the above and other embodiments can optionally include one or more of the following features, alone or in combination: For example, in some implementations, the action includes determining that the number of mismatches meets a mismatch threshold, and selecting an actual alignment for the genomic data read includes selecting a reference sequence location that matches at least a portion of the first k-mer seed.
[0040] In some implementations, the actions include determining a number of mismatches that do not meet a mismatch threshold and obtaining a second k-mer seed from the genomic data read, and selecting an actual alignment for the genomic data read includes selecting a reference sequence location that matches at least a portion of the second k-mer seed.
[0041] In some implementations, the actions include using a hash data structure to determine reference sequence locations that match at least a portion of the second k-mer seed.
[0042] A fourth innovative aspect of the subject matter described in this specification is embodied in a method that includes extracting k-mer seeds from acquired genomic data, generating a filtered set of k-mer seeds, and storing the filtered set of k-mer seeds in a hash data structure.
[0043] Other implementations of this and other aspects include corresponding systems, apparatus, and computer programs configured to perform the actions of the methods and encoded on a computer storage device. One or more computer systems may be so configured by software, firmware, hardware, or combinations thereof installed on the system that, during operation, cause the system to perform the actions. One or more computer programs may be so configured by having instructions that, when executed by a data processing device, cause the device to perform the actions.
[0044] Each of the above and other embodiments may optionally include one or more of the following features, alone or in combination: For example, in some implementations, generating the filtered set of k-mer seeds includes generating one or more hash values for each of the k-mer seeds and filtering the k-mer seeds using the one or more hash values.
[0045] In some implementations, generating the filtered set of k-mer seeds includes determining a number of occurrences of the k-mer seeds and filtering the k-mer seeds using the number of occurrences.
[0046] In some implementations, the hash data structure includes N data cells including a first portion that stores a predetermined genomic signature for one of the k-mer seeds and a second portion that stores a value corresponding to a location in the reference genome sequence that matches at least a portion of the k-mer seed from which the predetermined genomic signature is derived.
[0047] The details of one or more embodiments of the invention are set forth in the accompanying drawings and the detailed description below. Other features and advantages of the invention will be apparent from the detailed description, the drawings, and the claims.
[0048] Like reference numbers and designations in the various drawings indicate like elements. [Brief description of the drawings]
[0049] [Figure 1] FIG. 1 illustrates an example of a system for generating a hash table for a genomic read mapping engine accelerated with MultiPass software. [Diagram 2] FIG. 2 illustrates an example of a system for performing software accelerated genome mapping operations using a hash table generated using the system of FIG. 1 to select candidate alignment points for genomic reads. [Diagram 3] 1 is a graphical representation of the results of an experiment comparing data compression methods for genomic data. [Figure 4] 1 is a flow diagram showing an example of a process for generating a hash table for a genomic read mapping engine accelerated with MultiPass software. [Diagram 5] 2 is a flow diagram illustrating an example of a process for performing software accelerated genome mapping operations using a hash table generated using the system of FIG. 1. [Figure 6] FIG. 3 is a block diagram of system components that can be used to implement the system of FIG. 1 or FIG. 2. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0050] The present disclosure relates to a multi-pass software accelerated genomic data mapping engine. The multi-pass software accelerated genomic data mapping engine provides an important technical improvement in that the multi-pass software accelerated algorithm allows for iterative evaluation of k-mer seeds against candidate alignments stored in a hash table. As a result of the iterative evaluation, the present disclosure can terminate the mapping process early before all of the k-mers of a particular genomic data read have been evaluated. This technical improvement reduces the runtime of mapping and aligning genomic data reads of a biological sample to a reference genome. Thus, significant improvements in efficiency can be achieved in any application that uses the genomic data mapping engine to perform mapping and aligning operations. Such operations may include, but are not limited to, genomic data compression algorithms, which can achieve faster compression speeds and higher compression ratios compared to conventional software accelerated mapping engines.
[0051] Depending on the implementation, design trade-offs can be made between speed, compression ratio, and size of the generated hash table. For example, in some implementations, a smaller k-mer seed size may result in the generation of a smaller hash table. Such implementations may be particularly beneficial when data storage on the computer running the multi-pass genome mapping engine is limited. However, in such instances, identifying actual alignments may be relatively slow for implementations utilizing larger k-mer seed sizes. Alternatively, in other implementations, a larger k-mer seed size may result in a larger hash table, but faster identification of actual alignments of genomic data reads. However, in either scenario, the present disclosure allows technical improvements in either efficient use of storage space or reduced runtime. In certain implementations, improvements can be achieved in both domains by finding a favorable balance between k-mer seed size and execution speed. For example, experiments have shown that a k-mer seed size of 22 base calls may result in such balanced performance.
[0052] FIG. 1 illustrates an example of a system 100 for generating a hash table for a software-accelerated genomic read mapping engine. The system 100 includes a computer 104. In some implementations, the computer 104 performs one or more operations of one or more of the K-mer engine 106, the filter engine 108, and the hash table engine 122. The computer 104 can be, for example, a tablet computer, a desktop computer, a server computer, multiple server computers, a nucleic acid sequencing device, or any other computing device(s). In other implementations, the computer 104 is communicatively connected to one or more other computers configured to perform one or more operations of the K-mer engine 106, the filter engine 108, and the hash table engine 122. These computers can be the same type of computer as the computer 104 or different types of computers.
[0053] In some implementations, the computer 104 includes a portion of a memory storage device allocated to the hash storage device 134. In some implementations, the computer 104 is communicatively connected to a computer configured with one or more memory devices for the hash storage device 134. For example, the computer 104 can be communicatively connected to a server. The server can store the hash storage device 134. The computer 104 can access the hash storage device 134 on the server's memory storage device.
[0054] The computer 104 retrieves reference genomic data 102. The reference genomic data 102 may include a reference genome (sometimes referred to herein as a reference sequence), such as a DNA sequence assembled for an organism by one or more scientists. The reference genomic data 102 may include data indicative of a sequence of a plurality of nucleotides. For example, the reference genomic data 102 may include the symbols A, C, G, and T, which represent the four types of nucleotides present in deoxyribonucleic acid (DNA), namely adenine (A), cytosine (C), guanine (G), and thymine (T). In ribonucleic acid (RNA), thymine is replaced by uracil (U), and the reference genomic data 102 includes the symbols A, C, G, and U.
[0055] Genomic data referred to in this disclosure can include, for example, but not limited to, nucleotide sequences, deoxyribonucleic acid (DNA) sequences, or ribonucleic acid (RNA) sequences. In some implementations, the reference sequence includes a synthetic sequence that is considered, at least in part, to improve the compressibility of the reads in light of further processing.
[0056] The computer 104 provides the reference genomic data 102 to the k-mer engine 106. The k-mer engine 106 generates one or more k-mers based on the acquired reference genomic data 102. For example, the k-mer engine 106 can use a moving window to extract a portion of the reference genomic data 102. The moving window can have a length indicating the number of nucleotides extracted from the reference genomic data 102 for a given k-mer. The moving window can be of fixed or variable width to generate k-mers of fixed or variable length. The moving window can start from the beginning of the reference genomic data 102 and move to the end of the reference genomic data 102.
[0057] In some implementations, the k-mer engine 106 extracts k-mers at regular intervals. For example, the k-mer engine 106 can obtain a first k-mer using a moving window starting at a first position in the reference genomic data 102. The k-mer engine 106 can move the window by an interval, such as one or more nucleotides in the reference genomic data 102, to a second position in the reference genomic data 102 to obtain a second k-mer representing the second position.
[0058] Within this specification, a given k-mer is defined as a sequence of consecutive nucleotides of a genomic sequence, where the number of nucleotides in the genomic sequence for a given k-mer is defined by "k", and the nucleotides of the genomic sequence are represented by strings of A, C, G, and T for DNA sequences, or strings of A, C, G, and U for RNA sequences. The nucleotides may represent nucleotides of a reference sequence, or base calls generated by a nucleic acid sequencer corresponding to nucleotides of a sample sequence.
[0059] The k-mer engine 106 generates k-mers 102a-d from the reference genomic data 102. Each of the k-mers 102a-d represents a portion of the reference genomic data 102. For example, each of the k-mers 102a-d corresponds to a particular subset sequence present in the reference genomic data 102 having a nucleotide length of k, where k is any positive integer greater than 0. For example, a k-mer among the k-mers 102a-d may represent a nucleotide sequence of length k nucleotides that includes the nucleotides "AAGTAT." The genomic data 102 may include at least one instance of the sequence "AAGTAT." In some implementations, the k-mer engine 106 generates k-mers that are 22 nucleotides long. In some implementations, the k-mer engine 106 generates k-mers that are 16 nucleotides long. In general, longer k-mers with more nucleotides occur less frequently in genomic sequences, making the position more unique. The more unique positions there are, the greater the likelihood that the determined candidate alignment point is correct.
[0060] The selection of a particular k-mer seed length can be made on an implementation-by-implementation basis based on the technical improvements sought by a particular implementation. For example, the selection of a k-mer size of 22 nucleotides may result in a hash table that is larger in size than a hash table generated using a selected k-mer size of 16 nucleotides, but may result in faster candidate alignment determination in a more accurate manner. Alternatively, the selection of a k-mer size of 16 nucleotides may result in a hash table that is smaller in size than a hash table generated using a selected k-mer size of 22 nucleotides, but may result in slower candidate alignment determination in a less accurate manner. Any even number of nucleotides between 16 and 22, less than 16, or more than 22 can also be selected and used to achieve similar technical benefits and / or tradeoffs.
[0061] The k-mer engine 106 provides the k-mers 102a-d to the filter engine 108. The filter engine 108 includes a filter hash engine 110 and an abundance filtering engine 114. In some implementations, the filter hash engine 110 of the filter engine 108 generates a hash value for each of the k-mers 102a-d. For example, the filter hash engine 110 may include one or more hash functions. The filter hash engine 110 may apply the one or more hash functions to each k-mer of the k-mers 102a-d. Based on applying the one or more hash functions to each k-mer, the filter hash engine 110 may generate a hash value for each k-mer.
[0062] In some implementations, the filter hash engine 110 uses the generated hash value 112 to filter one or more k-mers. For example, the filter hash engine 110 can perform one or more modulo operations. The filter hash engine 110 can obtain a modulo value determined by a user or an automated process. The filter hash engine 110 can perform one or more modulo operations with the obtained modulo value. In some implementations, the filter hash engine 110 generates a result from the modulo operation and uses the result to determine whether to filter a given k-mer. For example, the filter hash engine 110 can perform one or more modulo operations on the hash value generated for the k-mer 102a. The filter hash engine 110 can obtain a result from the one or more modulo operations and compare the result to a predetermined criterion. Based on comparing the result to the predetermined criterion, the filter hash engine 110 can determine whether to filter out the corresponding k-mer.
[0063] In some implementations, the predetermined criteria includes one or more values of a modulo operation result. For example, the filter hash engine 110 may generate a result from a modulo operation on the hash values of k-mers of the k-mers 102a-d and compare the result to one or more values. The one or more values may include the value 0. The filter hash engine 110 may compare the result to 0 and filter the corresponding k-mer based on whether the result matches one or more of the values. In some implementations, results that match the one or more values are filtered. In some implementations, results that do not match the one or more values are filtered.
[0064] 1, the filter hash engine 110 filters out k-mer 102b based on the generated hash and one or more modulo operations of hash value 112. The filter hash engine 110 retains k-mers 102a and 102c-d.
[0065] The filter engine 108 executes the abundance filtering engine 114. In some implementations, the filter engine 108 provides the filtered k-mer sets obtained from the filter hash engine 110 to the abundance filtering engine 114. In this manner, the filter engine 108 can more efficiently determine occurrences by only determining occurrences for the k-mers remaining after the filtering of the filter hash engine 110.
[0066] In some implementations, the abundance filtering engine 114 includes generating an occurrence count 116 for each k-mer 102a-d. In some implementations, the abundance filtering engine 114 includes generating an occurrence count 116 for each of the filtered k-mers, such as k-mers 102a and 102c-d. For example, the filter engine 108 can compare the nucleotide sequence of each k-mer to sequences in the reference genomic data 102. The filter engine 108 can increment an occurrence counter for a given k-mer based on the number of sequences in the reference genomic data 102 that match the given k-mer. For example, the filter engine 108 can compare a first nucleotide representation of the k-mer 102a to a first nucleotide of the reference genomic data 102. The filter engine 108 can compare a second nucleotide representation of the k-mer 102a to a second nucleotide of the reference genomic data 102. If one or more occurrences of the k-mer 102a match a sequence in the reference genomic data 102, the filter engine 108 may increment an occurrence counter of the k-mer 102a.
[0067] In some implementations, the filter engine 108 filters one or more k-mers based on the number of times the k-mers occur in the corresponding reference sequence. For example, the filter engine 108 can generate occurrences 116. The filter engine 108 can compare each occurrence value of the values 116 to a threshold. Based on the comparison, the filter engine 108 can filter out one or more k-mers. For example, the filter engine 108 can filter out k-mers that occur more than a certain number of times in a reference sequence, such as the reference genome data 102. In this manner, the filter engine 108 can identify a set of k-mers that are more unique in that they occur less frequently than another set that occurs more frequently in the corresponding reference sequence. In some implementations, k-mers that occur less frequently in the reference sequence are more indicative of a correct candidate alignment because they have fewer false positives. The k-mers can improve the efficiency of subsequent candidate alignment determination.
[0068] The filter engine 108 compares the occurrence of the k-mer 102c to a threshold and filters out the k-mer 102c based on the comparison. In some implementations, a threshold occurrence value is used. For example, the filter engine 108 can determine to filter out a k-mer if it occurs multiple times, such as more than 20 times, in the reference genomic data 102.
[0069] The filter engine 108 generates index data 118 and 120 for the filtered set of k-mers 102a and 102d. The index data 118 and 120 include the locations of one or more occurrences listed in the occurrence value 116 and data representing the k-mers 102a and 102d. The index data 118 includes a reference location 128 that indicates one or more occurrences of the sequence corresponding to the k-mer 102a in the reference genomic data 102. The index data 120 includes a reference location 130 that indicates one or more occurrences of the sequence corresponding to the k-mer 102d in the reference genomic data 102. In some implementations, the index data 118 and 120 include only the first occurrence of the k-mer among one or more possible occurrences in the reference sequence.
[0070] The filter engine 108 provides the index data 118 and 120 to a hash table engine 122. The hash table engine 122 retrieves the index data 118 and 120 and generates hash values for the k-mers 102a and 102d that correspond to the index data 118 and 120. In some implementations, the hash table engine 122 generates the hash table 132. For example, the hash table engine 122 can generate one or more hash values and store them in a memory of the computer 104 or a device communicatively connected to the computer 104.
[0071] The hash table engine 122 generates one or more hash values for each of the filtered k-mers 102a and 102d. In some implementations, the hash table engine 122 generates the hash signatures using a hash signature function 124 and generates the hash table values using a hash table value function 126. For example, the hash table engine 122 may obtain data representing an arrangement of the k-mers 102a and 102d. The hash table engine 122 may apply both the hash signature function 124 and the hash table value function 126 to the arrangement of the k-mers 102a and 102d.
[0072] In some implementations, the signature generated from the hash signature function 124 is used as a key in the hash table 132. For example, the hash table engine 122 can generate a signature value for the k-mer 102a based on the index data 118. The hash table engine 122 can generate a signature value based on the k-mer 102a using the hash signature function 124. In some implementations, the signature generated by the hash table engine 122 is a compressed version of the k-mer 102a. For example, the k-mer 102a can be represented as a sequence of nucleotides in 16 bits for a k=16 k-mer having 16 nucleotides. The signature generated by the hash table engine 122 and the hash signature function 124 can be represented in 8 bits. This key compression significantly reduces the required size of the hash table 132. The reduction in size increases lookup time, storage time, and overall performance.
[0073] In some implementations, the hash table engine 122 generates a hash table item for each of the filtered k-mers 102a and 102d to be stored in the hash table 132. For example, the hash table engine 122 can generate a hash table value using a hash table value function 126 applied to each of the k-mers 102a and 102d to generate a hash table value for storing data corresponding to the k-mers 102a and 102d in the hash table 132. In some implementations, the hash table value represents an index into the hash table 132. The hash table engine 122 can store data corresponding to a given k-mer, such as a signature of the k-mer generated by the hash signature function 124, as well as one or more locations of the k-mer occurrence in a genomic read, such as the reference genomic data 102.
[0074] The hash table engine 122 stores the references 128 and 130 in a hash table 132. In some implementations, the hash table engine 122 stores the references 128 and 130 as values in a hash table item for each of the filtered k-mers 102a and 102d. For example, the hash table engine 122 can generate a hash table item containing references such as 128 and 130 using a key generated by the hash signature function 124 in an index of the hash table 132 generated by the hash table value function 126.
[0075] The hash table engine 122 provides data corresponding to the hash table 132 to the hash storage device 134. In some implementations, the hash table engine 122 sends data for each of the index data 118 and 120 to the hash storage device 134. In some implementations, the hash table engine 122 transmits data for one or more other entries of the hash table 132. In some implementations, the hash storage device 134 includes a memory storage device on the computer 104. In some implementations, the hash storage device 134 includes a memory storage device of a device communicatively connected to the computer 104.
[0076] Figure 2 illustrates an example of a system 200 for performing software accelerated genome mapping operations to select candidate alignment positions for genomic reads using a hash table generated using the system of Figure 1. The system 200 includes a computer 104, a k-mer engine 106, a filter engine 108, a candidate list engine 206, a hash storage device 134, a sorting engine 218, and an evaluation engine 210.
[0077] In some implementations, the computer 104 operates in multiple stages. For example, the first stage may include generating one or more k-mers, generating one or more candidate alignments based on the one or more k-mers, and evaluating the candidate alignments. The second and third stages may include generating one or more k-mers, generating one or more candidate alignments based on the one or more k-mers, sorting a list of one or more candidate alignments, and evaluating the candidate alignments in the order of the sorted list. In the example of FIG. 1, the first stage is shown as Path 1. The second stage is shown as Path 2. The third stage is shown as Path 3.
[0078] The computer 104 obtains genomic read data 202. The genomic read data 202 may include a sequence of base calls generated by a nucleic acid sequencing device by sequencing a biological sample obtained from an organism. The organism may include a human, an animal, an insect, a reptile, a plant, or any other organism. Each base call of the read may correspond to a nucleotide and may be represented by A, C, T, or G. In the case of an RNA sequence read, each base call of the read may correspond to a nucleotide represented by A, C, G, or U. The computer 104 may be used to determine an alignment between the genomic read data 202 and the reference genomic data 102. Once properly aligned to the reference genome, the variants between the genomic read data 202 and the reference genomic data 102 may be analyzed to infer some conclusions about the organism for which the genomic read data 202 was sequenced. These conclusions may include, for example, the type of treatment that may be best suited for the organism for one or more particular diseases.
[0079] The computer 104 provides the genomic read data 202 to the k-mer engine 106. As discussed with reference to FIG. 1, the k-mer engine 106 obtains one or more k-mers based on the obtained genomic read data 202 in the same manner as described with respect to obtaining k-mers from the reference genome 102 above. In a first stage, the k-mer engine 106 generates k-mers 204 including k-mers 204a and 204b. The first k-mer that is not filtered out can be evaluated to determine whether the corresponding candidate alignment satisfies one or more criteria. In some implementations, the k-mer engine 106 generates a single k-mer. For example, the filter engine 108 can determine that the first k-mer obtained by the k-mer engine 106 from the genomic read data 202 satisfies one or more filter criteria, such as hash filtering or abundance filtering. The filter engine 108 can then send data corresponding to the single k-mer to the candidate list engine 206.
[0080] In some implementations, the computer 104 filters the k-mers before the hash table lookup. For example, the computer 104 can use the same filtering technique used on the k-mers 102a-d to generate a portion of the hash table 132. In some implementations, applying the filter before the hash table lookup increases efficiency and reduces run time over conventional processes. For example, the hash table 132 is generated based on the k-mers filtered according to a particular filtering method, such as a filter applied by the filter engine 108. Newly generated k-mers, such as k-mer 204, can be generated to find matching k-mers in the hash table 132. By using the same filtering method on the k-mers used to generate the hash table 132 and the k-mers used to look up the k-mers in the hash table 132, the computer 104 prevents newly generated k-mers that are not specifically present in the hash table 132 from being used to query the hash storage 134. For example, if the same filtering process is not applied, a k-mer that was filtered out during generation of the hash table 132 may not be filtered out during a candidate alignment determination stage, such as the first processing stage of Figure 2. The resulting queries for that k-mer will waste processing resources and increase runtime.
[0081] In the example of Figure 2, the filter engine 108 filters out k-mer 204a and retains k-mer 204b. The filter engine 108 can use one or more filtering techniques, including those described with reference to Figure 1, to filter the k-mers generated by the k-mer engine 106 from the genomic read data 202.
[0082] In some implementations, the filter engine 108 uses certain parameters to filter the k-mers based on the stage of processing. For example, in a first stage of processing, the filter engine 108 can perform one or more modulo operations using a first modulo value. In a second stage of processing, the filter engine 108 can perform one or more modulo operations using a second modulo value. In subsequent stages, the filter engine 108 can use different modulo values. As discussed in FIG. 1, the modulo values and modulo operations can be used to filter one or more k-mers. In general, the filter engine 108 can adjust the filter parameters to increase the number of selected k-mers over time. In this way, stages with fewer k-mers are processed before stages with more k-mers, increasing the efficiency of the system and decreasing run time.
[0083] In some implementations, the filter engine 108 decreases the modulo value and maintains or increases one or more result values that indicate not filtering the k-mer. For example, the modulo value for the first stage of processing may be 32. As described in FIG. 1, the filter engine 108 may apply a modulo function to a hash generated based on the k-mer. An example formula for generating a result may include generated_hash mod 32. In some implementations, if the result is 0, the k-mer is processed further, and if the result is not 0, the k-mer is not processed further. In this case, 0 is the result value that indicates not filtering the k-mer.
[0084] In some implementations, filter engine 108 increases the number of k-mers to process by increasing the number of result values that indicate not to filter the k-mer. For example, filter engine 108 cannot filter and further process a given k-mer if its corresponding hash value modulo the given modulo value is equal to 0 or 1, greater than 3, or less than 5, among other things.
[0085] The filter engine 108 can increase the number of k-mers it processes by decreasing the modulo value and keeping one or more result values that indicate not to filter the k-mer. For example, the filter engine 108 cannot filter and further process a given k-mer if the corresponding hash value modulo the first modulo value is equal to 0 or other value. In this manner, the filter engine 108 selects one from the number corresponding to the first modulo value. If the first modulo value is 32, the filter engine 108 selects, on average, one from each of the 32 k-mers generated by the k-mer engine 106. To increase the number of k-mers it processes, such as at a later stage of processing, the filter engine 108 can decrease the first modulo value to a second modulo value.
[0086] The filter engine 108 sends the k-mer 204b to the candidate list engine 206. In some implementations, the filter engine 108 does not send the k-mer 204a. The candidate list engine 206 queries the hash store 134 based on the k-mer 204b. In some implementations, the candidate list engine 206 hashes the k-mer 204b to generate a hash value. The hash value can be used as a query key to search the hash table 132 stored in the hash store 134.
[0087] As discussed in FIG. 1, the hash storage 134 stores the index and reference location of one or more k-mers extracted from the reference genome data 102 in the hash table 132. If the k-mer 204b exists in the hash table 132, the candidate list engine can obtain the corresponding reference location. In some implementations, the key in the hash table is a hash of the k-mer in the reference genome. By using the same hash function used to generate the key in the hash table 132, the candidate list engine 206 can generate a new k-mer key that indicates that the k-mer exists in the reference genome data 102 and the hash table 132 contains the location of the k-mer in the reference genome data 102 if the key in the hash table 132 matches.
[0088] In some implementations, the candidate list engine 206 queries the hash storage 134 based on the k-mer 204b to obtain a reference location of the corresponding k-mer in the reference genomic data 102. By comparing the location of the k-mer 204b in the genomic read data 202 with the reference location of the corresponding k-mer in the reference genomic data 102, the candidate list engine 206 can generate a candidate alignment location. The candidate alignment condition can indicate a location in the reference genomic data 102 to which the genomic read data 202 aligns.
[0089] In some implementations, the candidate list engine 206 provides the first candidate alignment location 208a corresponding to the k-mer 204b to the evaluation engine 210. The evaluation engine 210 obtains data of the reference genomic data 102 and data of the genomic read data 202. The evaluation engine 210 compares one or more nucleotides of the data of the reference genomic data 102 and the genomic read data 202. In some implementations, the evaluation engine 210 starts with a first nucleotide of the reference genomic data 102 and data of the genomic read data 202 at the first candidate alignment location. If the nucleotide does not match, the evaluation engine 210 can increment a mismatch counter. The evaluation engine 210 can evaluate all nucleotides in a portion of the genomic read data 202 or can stop after several mismatches have been counted. In some implementations, the evaluation engine 210 evaluates each and every nucleotide in the genomic read data 202.
[0090] In some implementations, the evaluation engine 210 generates an evaluation result based on the first candidate alignment location 208a. For example, the evaluation engine 210 can generate a value indicating the number of one or more mismatches between the genomic read data 202 and the reference genomic data 102 at the first candidate alignment location 208a. Each mismatch can indicate that a nucleotide of the genomic read data 202 at a position relative to the first candidate alignment location 208a is different from a corresponding nucleotide of the reference genomic data 102 at the same position relative to the first candidate alignment location 208a (e.g., FIG. 2 graphically illustrates the comparison at item 209, where a nucleotide "C" of the genomic read data 202 is different from a nucleotide "T" in the reference genomic data 102 at the same position relative to the candidate alignment location (CAL)).
[0091] In some implementations, the computer 104 compares the evaluation result of the evaluation engine 210 to a threshold. For example, the computer 104 can compare the number of mismatches to a mismatch threshold. If the number of mismatches meets the threshold, e.g., is less than or equal to the threshold, among others, the computer 104 can stop processing and select the first candidate alignment site 208a as the actual alignment of the genomic read data 202. If the number of mismatches does not meet the threshold, the computer 104 can perform additional processing steps. The computer 104 can generate and provide a notification to the user's device or to a display of the computer 104. The notification can include information indicating that the first processing and evaluation step did not result in an alignment that meets a criterion, such as a threshold. The computer 104 can obtain and include details of the alignment, the filtered k-mers, and the evaluation results, among others, in the notification.
[0092] In some implementations, the computer 104 performs one or more processing steps after the first step. For example, the computer 104 can determine that the first candidate alignment location 208a does not meet a threshold. The computer 104 can determine that there is no matching k-mer from the reference genome data 102 in the hash storage device 134. In response to one or more of these determinations, the computer 104 can perform a subsequent processing step.
[0093] In some implementations, the computer 104 performs a second processing stage. For example, after the first processing stage does not produce an alignment that meets the criteria, the k-mer engine 106 can provide additional k-mers 214 to the filter engine 108 to determine a new set of filtered k-mers to process. In some implementations, the filter engine 108 filters the k-mers 214 using a set of filtering parameters that differ from the filtering parameters used in the first processing stage. For example, the filter engine 108 can adjust filtering parameters such as the resulting values for inclusion in further processing and the modulo value to increase or decrease the number of k-mers used in subsequent processing.
[0094] In some implementations, the filter engine 108 provides the filtered k-mers 214a and 214c-d to the candidate list engine 206. The filter engine 108 can filter out the k-mer 214b using one or more filtering techniques as described herein. The candidate list engine 206 can query the hash store 134 to obtain the references of each of the filtered k-mers 214a and 214c-d. In some implementations, the candidate list engine 206 queries the hash store 134 with one or more hashes that represent each of the filtered k-mers 214a and 214c-d. For example, the candidate list engine 206 can generate a hash value by applying a hash function to each of the filtered k-mers 214a and 214c-d to generate a hash function result. The candidate list engine 206 can query the hash store 134 to find a hash table item with a key that matches the hash function result. The match key can point to identical k-mers from the reference genomic data 102.
[0095] In some implementations, the candidate list engine 206 queries the hash storage 134 based on the filtered k-mers 214a and 214c-d to obtain the corresponding k-mer reference locations in the reference genomic data 102. By comparing each k-mer location of the filtered k-mers 214a and 214c-d with the obtained reference locations, the candidate list engine 206 can generate candidate alignment locations. The candidate alignment terms can indicate locations in the reference genomic data 102 to which the genomic read data 202 aligns. The candidate list engine 206 can generate one or more candidate alignment terms for each of the filtered k-mers 214a and 214c-d.
[0096] In some implementations, the candidate list engine 206 generates one or more candidate alignment positions. For example, the candidate list engine 206 can generate a second candidate alignment position 208b and a third candidate alignment position 208c. The K-mers used to generate the alignment are said to support the alignment. One or more of the filtered k-mers 214a and 214c-d can support the same candidate alignment position. For example, both k-mer 214a and k-mer 214d support the second candidate alignment position 208b. k-mer 214c supports the third candidate alignment position 208c.
[0097] In some implementations, the candidate list engine 206 provides a list of one or more candidate alignment positions to the sorting engine 218. The sorting engine 218 can obtain the candidate alignment positions and sort the candidate alignment positions. In some implementations, the sorting engine 218 sorts the candidate alignment positions based on the number of supporting k-mers. For example, since both k-mers 214a and 214d support the second candidate alignment position 208b, and only k-mer 214c supports the third candidate alignment position 208c, more k-mers support the second candidate alignment position 208b compared to the third candidate alignment position 208c. Since more k-mers support the second candidate alignment position 208b compared to the third candidate alignment position 208c, the sorting engine 218 can sort the second candidate alignment position 208b above the third candidate alignment position 208c.
[0098] In some implementations, the sorting engine 218 provides the sorted list 220 to the evaluation engine 210. For example, the sorting engine 218 can generate a sorted list 220 that includes the second candidate alignment location 208b sorted before the third candidate alignment location 208c. The sorted list 220 can be stored in any suitable data format, including a linked list, an array, a queue, etc.
[0099] In some implementations, the evaluation engine 210 obtains data from the sorting engine 218. For example, the sorting engine 218 can provide the sorted list 220 to the evaluation engine 210. The evaluation engine 210 can evaluate each item of the sorted list 220 in the order of the sorted list 220. For example, the evaluation engine 210 can evaluate the second candidate alignment location 208b before evaluating the third candidate alignment location 208c. The computer 104 can compare the evaluation result for each item of the sorted list 220 with an evaluation threshold to determine whether to select the alignment as the actual alignment. If the alignment meets the evaluation threshold, the computer 104 can prevent further processing by the evaluation engine 210 and output the alignment location as the output candidate alignment location 212.
[0100] In some implementations, the computer 104 adjusts the evaluation threshold based on the processing stage. For example, for a first processing stage, the computer 104 may require a smaller number of mismatches for the selected actual alignment compared to a later processing stage. In the later processing stage, the number of mismatches may be maintained, increased, or decreased.
[0101] In some implementations, the computer 104 selects the alignment for the first processing stage only if the alignment results in 0 mismatches. In some implementations, the computer 104 compares the evaluation result with a threshold number of mismatches, for example, 8, and based on the evaluation result that meets the number of mismatches, for example, at or below the threshold, the computer 104 selects the corresponding alignment point as the output candidate alignment point 212. In some implementations, the evaluation engine 210 stops during the processing stage and outputs the last processed alignment if the alignment meets the mismatch threshold. For example, the mismatch threshold for the first processing stage can be 0, requiring the evaluation of the first candidate alignment point 208a to have no mismatches. The mismatch threshold for the second processing stage can be 8, requiring the evaluation of the second candidate alignment point 208b or the third candidate alignment point 208c to have less than 8 mismatches or less than 8. The mismatch threshold for the third processing stage may be four, requiring subsequent evaluation of candidate alignment points to have a mismatch of less than four or equal to or less than four.
[0102] In some implementations, the evaluation engine 210 generates an evaluation result for each candidate alignment in the sorted list 220. In some implementations, none of the evaluation results for each candidate alignment in the sorted list 220 meets a predetermined criterion, such as a mismatch threshold. In this case, the computer 104 can initiate a third processing stage by generating a new set of k-mers and processing the k-mers as shown for the k-mer set 214 and the filtered k-mers 214a and 214c-d.
[0103] In some implementations, the k-mer engine 106 and the filter engine 108 generate k-mers for the third processing stage similar to the k-mers 214 according to one or more parameters. For example, the k-mer engine 106 can extract k-mers from the genomic read data 202 of size "k" corresponding to the seed length parameter. The filter engine 108 can filter the extracted k-mers according to one or more filter parameters. For example, the filter engine 108 can use one or more filtering techniques such as hash filtering or abundance filtering. In some implementations, the modulo value used to generate the result of the modulo operation changes in the third processing stage compared to the second processing stage. For example, the modulo value can be reduced from 32 to 8. The filter engine can effectively reduce filtering by selecting one out of every 32 k-mers in the second processing stage and one out of every 8 k-mers in the third processing stage. In general, the parameters for generating k-mers in a subsequent processing stage can be adjusted by a user or an automated process based on the results of the k-mers processed in one or more preceding processing stages.
[0104] In some implementations, the computer 104 generates a filtered set of k-mers in a third processing stage after the first and second processing stages fail to select a satisfying alignment. The filtered set of k-mers, like the filtered k-mers 214a and 214c-d, can be used by the candidate list engine 206 to generate a candidate alignment list. The alignment list can be sorted and evaluated in the same manner as the sorted list 220.
[0105] Based on one or more of processing steps 1-3, the computer 104 selects alignment locations that meet an alignment criterion. In some implementations, the alignment criterion includes a mismatch threshold. The computer 104 can provide the alignment locations as output candidate alignment locations 212. The computer 104 can provide data indicative of the output candidate alignment locations 212 to a memory storage device, a display, a user's device, another communicatively connected device, among others.
[0106] In some implementations, a first computer performs one or more of the operations performed by computer 104 described in FIG. 1, and a second computer performs one or more of the operations performed by computer 104 described in FIG. 2. For example, at least two separate computing devices may perform one or more of the operations performed by computer 104. In some implementations, a first computer performs hash table generation, which includes performing one or more of the operations described with reference to FIG. 1. In some implementations, a second computer, separate from the first computer, performs genome mapping, which includes performing one or more of the operations described with reference to FIG. 2.
[0107] FIG. 3 is a graphical representation of experimental results comparing data compression methods for genomic data. FIG. 3 shows a comparison between two versions using the spring compression method and the hash table compression method. The spring compression method is a compression method available on GitHub. The spring compression method is a compression tool for FASTQ files containing up to 4,290,000,000 reads. Key 306 shows a graphical representation of each of the three methods.
[0108] In some implementations, a FASTQ file is a text file that contains sequence data from clusters that pass through a filter on a flow cell. If samples are multiplexed, the first step in FASTQ file generation is demultiplexing. Demultiplexing assigns clusters to samples based on the cluster's index sequence. After demultiplexing, the assembled sequences are written to a FASTQ file for each sample. If samples were not multiplexed, the demultiplexing step does not occur and for each flow cell lane, all clusters are assigned to a single sample.
[0109] In some implementations, for single-read runs, one Read 1 (R1) FASTQ file is created for each sample per flow cell lane. For paired-end runs, one R1 and one Read 2 (R2) FASTQ file is created for each sample per lane. FASTQ files are compressed and have the extension * It is created in .fastq.gz format.
[0110] In some implementations, for each cluster that passes the filter, a single sequence is written to the R1 FASTQ file of the corresponding sample, and for paired-end runs, a single sequence is also written to the R2 FASTQ file of the sample. In some implementations, each entry in the FASTQ file contains four lines: (i) a sequence identifier with information about the sequencing run and cluster (the exact content of this line varies based on the conversion software used), (ii) a sequence (e.g., a base call), A, C, T, G, and N), (iii) a separator (e.g., a plus (+) sign), and (iv) a base call quality score (e.g., Phred+33, encoded using ASCII characters to represent a numerical quality score).
[0111] FIG. 3 shows the results of compressing the 49GB fastq.gz data file. Chart 302 shows a comparison of the final compressed sizes produced by each of spring compression, hash table compression v1, and hash table compression v2. Spring compression produces a compressed version of the 49GB fastq.gz data file that is 40GB. Hash table compression v1 produces a compressed version of the 49GB fastq.gz data file that is 4.3GB. Hash table compression v2 produces a compressed version of the 49GB fastq.gz data file that is 5.5GB.
[0112] Hash table compression v2 includes the compression methods described herein, e.g., FIG. 1 and corresponding description. Hash table compression v1 is a similar method that uses a hash table, but with different parameters. For example, v1 includes a seed length parameter of 16. V2 includes a seed length parameter of 22. V2 and the increased seed length allow v2 to have more seeds in the reference genome with unique positions than v1, increasing the overall number of different seeds. The tradeoff is that this implementation of v2 requires more memory usage than v1.
[0113] In some implementations, a hash table compression v1 with a seed length of 16 extracts one or more seeds from a reference genome that is 16 nucleotides long. 6 Insert the k-mer into a hash table. The hash table is 28 cells (e.g., 5B per cell), with a load factor of 0.53 and 2 28 ×5B=1280MB total hash size.
[0114] In some implementations, a hash table compression v2 with a seed length of 22 extracts one or more seeds from a reference genome that is 22 nucleotides long. 6Insert the k-mer into a hash table. The hash table is 29 cells (e.g., 5B per cell), with a load factor of 0.55 and 2 28 ×5B=2560MB total hash size.
[0115] The increase in memory usage is shown in Figure 3, where hash table compression v2 produces a compressed version of the 49GB fastq.gz file that is 5.5GB, and hash table compression v1 produces a compressed version of the 49GB fastq.gz file that is 4.3GB.
[0116] However, hash table compression v2 results in faster compression, as shown in chart 304. Both hash table compression v1 and hash table compression v2 are faster than the spring compression method (e.g., 55930 seconds). Hash table compression v2 is faster than hash table compression v1 (e.g., 5641 seconds compared to 9208 seconds).
[0117] In some implementations, improved efficiency is achieved with hash table compression v2 due to the process of the mapping engine generating the input to the compression algorithm. For example, computer 104 can generate mapped reads faster and with a tuned level of accuracy due to the compression algorithm resulting in better compression performance than conventional methods such as hash table compression v1 and spring compression.
[0118] 4 is a flow diagram illustrating an example of a process 300 for generating a hash table for a MultiPass software accelerated genomic read mapping engine. The process 400 can be performed by one or more electronic systems, such as the computer 104 of the system 100 of FIG.
[0119] The process 300 includes obtaining genomic data (402). For example, the computer 104 can obtain reference genomic data 102. The reference genomic data 102 can include the symbols A, C, G, and T, which represent the four types of nucleotides present in deoxyribonucleic acid (DNA), namely adenine (A), cytosine (C), guanine (G), and thymine (T). In ribonucleic acid (RNA), thymine is replaced by uracil (U), and the reference genomic data 102 includes the symbols A, C, G, and U.
[0120] The process 300 includes extracting 404 one or more k-mers from the genomic data. For example, the k-mer engine 106 can obtain one or more extraction parameters from a user or an automated process. The parameters can include a seed length indicating the length of a seed for extracting the extracted k-mer. The k-mer engine 106 can generate one or more k-mers from the reference genomic data 102.
[0121] The process 300 includes filtering (406) one or more k-mers. For example, the filter engine 108 can perform one or more filtering methods on the extracted k-mers to generate a subset of k-mers for inclusion in the hash table 132. In some implementations, the filter engine 108 includes a filter hash engine 110 and an abundance filtering engine 114.
[0122] The process 300 includes storing the filtered set of one or more k-mers in a hash table (408). For example, the hash table engine 122 can generate the hash table based on one or more of the filtered k-mers generated by the filter engine 108. The hash table engine 122, or other components of the computer 104 or a connected computer or device, can perform a hashing operation to generate one or more hash function results. The hash function results can be used to store data corresponding to each of the k-mers in the hash table 132. For example, the hash value can be used as a signature in the hash table 132, and the hash value can be used as a hash table index in the hash table 132. In some implementations, the hash values are generated using different hash functions.
[0123] Figure 5 is a flow diagram illustrating one example of a process 500 for performing software accelerated genome mapping operations using a hash table generated using the system of Figure 1. Process 500 may be implemented by one or more electronic systems, such as computer 104 of system 200 of Figure 2.
[0124] The process 500 includes obtaining a first k-mer seed from a genomic data read (502). For example, the computer 104 can obtain genomic read data 202. The genomic read data 202 can include a sequence of base calls generated by a nucleic acid sequencing device by sequencing a biological sample obtained from an organism. The organism can include a human, an animal, an insect, a reptile, a plant, or any other organism. Each base call of the read can correspond to a nucleotide and can be represented by A, C, T, or G. In the case of an RNA sequence read, each base call of the read can correspond to a nucleotide represented by A, C, G, or U.
[0125] The process 500 includes generating a genomic signature based on the first k-mer seed (504). For example, the candidate list engine 206 can generate a key for the given k-mer based on a hash function used to generate a key for the k-mer of the genomic reference data. The candidate list engine 206 can use the generated key for the given k-mer to query a previously generated hash table that stores genomic reference data, such as the reference genomic data 102. In some implementations, the hash result of the key is generated by applying a hash function to data representing the given k-mer.
[0126] The process 500 includes determining a reference location based on the genomic signature (506). For example, the candidate list engine 206 can use the generated key for a given k-mer to query a previously generated hash table that stores genomic reference data, such as the reference genomic data 102. The hash table can store a reference location that indicates the location of the stored k-mer in a reference sequence. The candidate list engine 206 can use the stored k-mer location information to determine the location of a mapped read, such as the genomic read data 202, relative to reference genomic data, such as the reference genomic data 102.
[0127] The process 500 includes determining 508 a number of mismatches. For example, the evaluation engine 210 can obtain the data of the reference genomic data 102 and the data of the genomic read data 202. The evaluation engine 210 can compare one or more nucleotides of the reference genomic data 102 to the data of the genomic read data 202 to determine one or more mismatches based on the starting locations determined by the candidate list engine 206.
[0128] The process 500 includes selecting (510) an actual alignment for the genomic data read. For example, in a first processing stage or pass, the evaluation engine 210 can determine that the number of mismatches meets the mismatch threshold, and the computer 104 can select the location corresponding to the first generated k-mer seed as the actual alignment for the genomic read data 202. In some implementations, one or more subsequent processing stages are performed based on the evaluation engine 210 generating an evaluation result that does not meet the alignment quality criterion, such as the mismatch threshold. During a subsequent processing stage, such as a second or third stage, the computer 104 can adjust parameters of the seed extraction, hash table lookup, evaluation criteria, among others, to select the actual alignment for the genomic read data 202.
[0129] 6 is a diagram illustrating an example of a computing system used for hash table generation and selection of candidate alignment positions of genomic reads based on reference genomic reads stored in the hash table. The computing system includes a computing device 600 and a mobile computing device 650 that can be used to implement the techniques described herein. For example, one or more components of the system 100 or 200 can be an example of a computing device 600 or a mobile computing device 650, such as the computer 104, a device that accesses information from the computer 104, or a server that accesses or stores information regarding operations performed by the computer 104.
[0130] Computing device 600 is intended to represent various forms of digital computers (e.g., laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers). Mobile computing device 650 is intended to represent various forms of mobile devices (e.g., personal digital assistants, cellular telephones, smart phones, mobile embedded wireless systems, wireless diagnostic computing devices, and other similar computing devices). The components, their connections and relationships, and their functionality illustrated herein are intended to be exemplary only and not limiting.
[0131] The computing device 600 includes a processor 602, a memory 604, a storage device 606, a high-speed interface 608 connecting to the memory 604 and multiple high-speed expansion ports 610, and a low-speed interface 612 connecting to a low-speed expansion port 614 and the storage device 606. Each of the processor 602, the memory 604, the storage device 606, the high-speed interface 608, the high-speed expansion port 610, and the low-speed interface 612 are interconnected using various buses, which may be mounted on a common motherboard or otherwise as needed. The processor 602 can process instructions for execution within the computing device 600, including instructions stored in the memory 604 or on the storage device 606, to display graphical information for a GUI on an external input / output device, such as a display 616 coupled to the high-speed interface 608. In other implementations, multiple processors and / or multiple buses can be used, along with multiple memories and multiple types of memories, as appropriate. Additionally, multiple computing devices can be connected, with each device providing a portion of the operations (e.g., as a server bank, a group of blade servers, or a multiprocessor system). In some implementations, the processor 602 is a single-threaded processor. In some implementations, the processor 602 is a multi-threaded processor. In some implementations, the processor 602 is a quantum computer.
[0132] The memory 604 stores information within the computing device 600. In some implementations, the memory 604 is a volatile memory unit(s). In some implementations, the memory 604 is a non-volatile memory unit(s). The memory 604 may also be another form of computer-readable medium, such as a magnetic disk or an optical disk.
[0133] The storage device 606 can provide mass storage for the computing device 600. In one implementation, the storage device 606 can be or contain a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid-state memory device, or an array of devices including devices in a storage area network or other configuration. The instructions can be stored on an information medium. The instructions, when executed by one or more processing devices (e.g., the processor 602), perform one or more methods as described above. The instructions can also be stored by one or more storage devices, such as a computer or machine-readable medium (e.g., the memory 604, the storage device 606, or a memory on the processor 602). The high-speed interface 608 manages the bandwidth-intensive operations of the computing device 600, while the low-speed interface 612 manages the lower bandwidth-intensive operations. Such an allocation of functions is merely an example. In some implementations, the high-speed interface 608 couples to memory 604, a display 616 (e.g., by a graphics processor or accelerator), and to a high-speed expansion port 610 that can utilize various expansion cards (not shown). In this implementation, the low-speed interface 612 is coupled to the storage device 606 and a low-speed expansion port 614. The low-speed expansion port 614, which can include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), can be coupled to one or more input / output devices (e.g., a keyboard, a pointing device, a scanner, or a network device (e.g., a switch or router)) by, for example, a network adapter.
[0134] The computing device 600 can be implemented in a number of different forms as shown. For example, the computing device can be implemented as a standard server 620, or multiple times in a cluster of such servers. In addition, the computing device can be implemented in a personal computer, such as a laptop computer 622. The computing device can also be implemented as part of a rack server system 624. Alternatively, the components of the computing device 600 can be combined with other components of a mobile device (e.g., mobile computing device 650). Each such device can include one or more of the computing device 600 and mobile computing device 650, and the entire system can be composed of multiple computing devices in communication with each other.
[0135] The mobile computing device 650 includes, among other components, a processor 652, a memory 664, an input / output device (e.g., a display 654), a communication interface 666, and a transceiver 668. The mobile computing device 650 may include a storage device (e.g., a microdrive or other device) to provide additional storage. Each of the processor 652, memory 664, display 654, communication interface 666, and transceiver 668 may be interconnected using various buses, with some of the components being located on a common motherboard or otherwise as desired.
[0136] The processor 652 can execute instructions within the mobile computing device 650, including instructions stored in the memory 664. The processor 652 can be implemented as a chipset of chips including separate and multiple analog and digital processors. The processor 652 can provide, for example, coordination of other components of the mobile computing device 650 (e.g., control of a user interface, applications running by the mobile computing device 650, and wireless communication by the mobile computing device 650).
[0137] The processor 652 can communicate with a user through a control interface 658 and a display interface 656 coupled to a display 654. The display 654 can be, for example, a TFT (thin film transistor liquid crystal display) display, or an OLED (organic light emitting diode) display, or other suitable display technology. The display interface 656 can include appropriate circuitry to drive the display 654 to present graphical and other information to a user. The control interface 658 can receive commands from a user and translate them for transfer to the processor 652. Additionally, the external interface 662 can provide communication with the processor 652 to enable near-field communication between other devices and the mobile computing device 650. For example, the external interface 662 can provide wired communication in some implementations or wireless communication in other implementations, and multiple interfaces can be used.
[0138] The memory 664 stores information within the mobile computing device 650. The memory 664 may be implemented as one or more of a computer readable medium(s), a volatile memory unit(s), or a non-volatile memory unit(s). Expansion memory 674 may also be provided and connected to the mobile computing device 650 via an expansion interface 672, which may include, for example, a Single In Line Memory Module (SIMM) card interface. The expansion memory 674 may provide additional storage space to the mobile computing device 650 or may store applications or other information for the mobile computing device 650. In particular, the expansion memory 674 may include instructions that perform or complement the processes described above and may also include secure information. Thus, for example, the expansion memory 674 may be provided as a security module for the mobile computing device 650 and may be programmed with instructions that enable secure use of the mobile computing device 650. Additionally, secure applications may be provided with additional information via the SIMM card, such as placing identifying information on the SIMM card in an unhackable manner.
[0139] The memory may include, for example, flash memory and / or NVRAM memory (nonvolatile random access memory), as described below. In some implementations, the instructions are stored on an information carrier such that, when executed by one or more processing devices (e.g., processor 652), the instructions perform one or more methods, as described above. The instructions may also be stored by one or more storage devices, such as one or more computer- or machine-readable media (e.g., memory 664, expansion memory 674, or memory on processor 652). In some implementations, the instructions may be received, for example, in a propagated signal on transceiver 668 or external interface 662.
[0140] The mobile computing device 650 may communicate wirelessly via a communication interface 666, which may in some cases include digital signal processing circuitry. The communication interface 666 may provide for communication under various modes or protocols, such as Global System for Mobile Communications (GSM) voice telephony, Short Message Service (SMS), Enhanced Messaging Service (EMS), or Multimedia Messaging Service (MMS), code division multiple access (CDMA), time division multiple access (TDMA), Personal Digital Cellular (PDC), Wideband Code Division Multiple Access (WCDMA), CDMA2000, or General Packet Radio Service (GPRS), LTE, 6G / 6G Cellular, among others. Such communication may occur via a transceiver 668, for example, using radio frequencies. Moreover, short-range communication may occur, such as using Bluetooth, Wi-Fi, or other such transceivers (not shown). Additionally, a Global Positioning System (GPS) receiver module 670 may provide additional navigation-related and location-related wireless data to the mobile computing device 650, which may be used as desired by applications running on the mobile computing device 650.
[0141] The mobile computing device 650 can also communicate audibly using an audio codec 660, which can receive voice information from a user and convert it into usable digital information. The audio codec 660 can also generate audible sounds for the user, such as through a speaker in a handset of the mobile computing device 650. Such sounds can include sounds from a voice telephone call, can include recorded sounds (e.g., voice messages, music files, among others), and can also include sounds generated by applications running on the mobile computing device 650.
[0142] The mobile computing device 650 may be implemented in a number of different forms as shown in the figure. For example, the computing device may be implemented as a cellular telephone 680. The computing device may also be implemented as part of a smartphone 682, personal digital assistant, or other similar mobile device.
[0143] Although several implementations have been described, it should be understood that various modifications may be made without departing from the spirit and scope of the present disclosure, for example, various forms of the flows described above may be used, steps may be reordered, added, or removed.
[0144] All of the embodiments and functional operations of the invention described herein can be implemented in digital electronic circuitry, or computer software, firmware, or hardware, or a combination of one or more of these, including the structures disclosed herein and their structural equivalents. The embodiments of the invention can be implemented as one or more computer program products, e.g., one or more modules of computer program instructions encoded in a computer-readable medium for execution by or to control the operation 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 matter affecting a machine-readable propagated signal, or a combination of one or more of these. The term "data processing apparatus" encompasses all apparatus, devices, and machines for processing data, including, by way of example, a programmable processor, a computer, or multiple processors or computers. An apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code constituting a processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of these. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal generated to encode information for transmission to an appropriate receiving apparatus.
[0145] A computer program (also known as a program, software, software application, script, or code) can be written in any type of programming language, including compiled or interpreted languages, and can be deployed in any form, including as a stand-alone program, or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can 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 associated files (e.g., a file that stores one or more modules, subprograms, or portions of code). A computer program can be deployed to run on one computer or multiple computers, located at one location or distributed across multiple locations, interconnected by a communications network.
[0146] The processes and logic flows described herein may be performed by one or more programmable processors executing one or more computer programs to perform functions by processing input data and generating output. The processes and logic flows may also be performed by, and an apparatus may also be implemented as, special purpose logic circuitry, such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC).
[0147] 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. Generally, a processor receives instructions and data from a read-only memory or a random access memory, or both. The essential elements of a computer are a processor for executing instructions, and one or more memory devices for storing instructions and data. Generally, a computer also includes or is operatively coupled to one or more mass storage devices for storing data, such as magnetic, magneto-optical, or optical disks, for receiving data from, transmitting data to, or both. However, a computer need not include such devices. Furthermore, a computer can be incorporated into another device, such as a tablet computer, a mobile phone, a personal digital assistant (PDA), a portable audio player, a global positioning system (GPS) receiver, to name a few. 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, magnetic disks such as internal hard disks or removable disks, magneto-optical disks, and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
[0148] To provide for interaction with a user, embodiments of the invention can be implemented on a computer having a display device, such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user, as well as a keyboard and a pointing device, such as a mouse or trackball, by which the user can provide input to the computer. Other types of devices can also be used to provide interaction with a user, for example, feedback provided to the user can be any form of sensory feedback, for example visual feedback, auditory feedback, or tactile feedback, and input from the user can be received in any form, including acoustic input, speech input, or tactile input.
[0149] An embodiment of the present invention can be implemented in a computing system including a back-end component, e.g., as a data server, or a middleware component, e.g., an application server, or a front-end component, e.g., a client computer having a graphical user interface or web browser through which a user can interact with an implementation of the present invention, or any combination of one or more of such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communications network. Examples of communications networks include a local area network ("LAN") and a wide area network ("WAN"), e.g., the Internet.
[0150] A computing system may include clients and servers. Clients and servers are generally remote from each other and typically interact through a communication network. The relationship of clients and servers arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0151] Although this specification contains many details, these should not be construed as limiting the scope of the invention or what may be claimed, but rather as descriptions of features specific to certain embodiments of the invention. Certain features described in this specification in the context of separate 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 in multiple embodiments separately or in any suitable subcombination. Furthermore, even if features may be described above as functioning in a particular combination and initially claimed as such, one or more features from the claimed combination may in some cases be deleted from the combination, and the claimed combination may relate to a subcombination or a variation of the subcombination.
[0152] Similarly, although operations are depicted in the figures in a particular order, it should not be understood that such operations need to be performed in the particular order shown, or sequentially, or that all of the illustrated operations need to be performed, to achieve desired results. In certain situations, multitasking and parallel processing may be advantageous. Furthermore, the separation of various system components in the above-described embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the program components and systems described may typically be integrated together in a single software product or packaged within multiple software products.
[0153] In each instance where an HTML file is mentioned, other file types or formats may be substituted. For example, the HTML file may be replaced by an XML, JSON, plain text, or other type of file. Additionally, where a table or hash table is mentioned, other data structures (such as a spreadsheet, a relational database, or a structured file) may be used.
[0154] Although specific embodiments of the present invention have been described, other embodiments are within the scope of the following claims. For example, the steps recited in the claims can be performed in a different order and still achieve desirable results. [Explanation of symbols]
[0155] 100 Systems 102 Reference genome data 104 Computer 106 K-mer engine 108 Filter Engine 110 Filter Hash Engine 112 Hash Value 114 Abundance Filtering Engine 116 occurrences 118 Index Data 120 Index Data 122 Hash Table Engine 124 Hash Signature Functions 126 Hashtable Value Functions 128 References 130 References 132 Hash Tables 134 Hash Storage Device 200 Systems 202 Genomic Read Data 206 Suggestion List Engine 208a First candidate alignment point 208b Second candidate alignment point 208c Third candidate alignment point 209 items 210 Rating Engine 212 Output candidate alignment points 214 k-mer set 218 Sorting Engine 220 List 300 processes 302 Charts 304 Charts 306 Keys 400 processes 500 processes 600 Computing Devices 602 Processor 604 Memory 606 Storage Devices 608 High Speed Interface 610 High Speed Expansion Port 612 Low Speed Interface 614 Low Speed Expansion Port 616 Display 620 Standard Server 622 Laptop Computer 624 Rack Server System 650 Mobile Computing Devices 652 processor 654 Display 656 Display Interface 658 Control Interface 660 Audio Codec 662 External Interface 664 Memory 666 Communication Interface 668 Transceiver 672 Expansion Interface 674 Expandable Memory 680 Cellular Phone 682 Smartphones
Claims
1. 1. A method for software accelerated genomic data read mapping, comprising: obtaining, by one or more computers, a first k-mer seed from the genomic data reads; generating, by the one or more computers, a genomic signature based on the first k-mer seed; determining, by the one or more computers, reference sequence locations that match at least a portion of the first k-mer seed using a hash data structure, the hash data structure including N data cells including a first portion that stores a predetermined genomic signature and a second portion that stores a value corresponding to a location in a reference genomic sequence that matches at least the portion of the first k-mer seed from which the predetermined genomic signature was derived; determining, by the one or more computers, a number of mismatches based on comparing genomic data of the genomic data reads to genomic data of the reference genomic sequence; determining, by the one or more computers, that the number of mismatches does not meet a mismatch threshold; obtaining, by the one or more computers, a second set of k-mer seeds from the genomic data reads based on determining that the number of mismatches does not meet the mismatch threshold; selecting, by the one or more computers, an actual alignment for the genomic data reads based on the second set of k-mer seeds from the genomic data reads; A method comprising:
2. Obtaining the first k-mer seed from the genomic data reads includes:
2. The method of claim 1, comprising taking a first k bases of the genomic data read as the first k-mer seed.
3. Selecting the actual alignment for the genomic data reads based on the second set of k-mer seeds from the genomic data reads comprises: generating a genomic signature for each k-mer seed of the second set of k-mer seeds; and selecting a subset of the second set of k-mer seeds based on the genomic signature.
4. Selecting the subset of the second set of k-mer seeds based on the genomic signature comprises: performing one or more modulo operations, including a modulo operation for each genomic signature of the genomic signatures; and selecting the subset of k-mer seeds of the second set based on the result of the one or more modulo operations and a predetermined criterion.
5. determining, by the one or more computers, a reference sequence location for each k-mer seed of the second set of k-mer seeds that matches at least a portion of a given k-mer seed using the hash data structure; generating a candidate position list comprising a reference sequence position for each k-mer seed of the second set of k-mer seeds.
6. sorting the reference sequence locations in the candidate location list according to the number of k-mer seeds paired with the given reference sequence location in the hash data structure; and determining the number of mismatches for each of the reference sequence locations of the sorted candidate location list compared to the reference genome sequence in the order of the sorted candidate location list.
7. determining that a number of mismatches for a first candidate position among the reference sequence positions in the sorted candidate position list satisfies a second mismatch threshold; and selecting the first candidate location as the actual alignment.
8. The method of claim 7 , wherein the second mismatch threshold comprises a threshold number of mismatched nucleotide values.
9. generating a second genomic signature for each k-mer seed of the second set of k-mer seeds; performing a second one or more modulo operations, including a modulo operation for each genomic signature of the second genomic signatures; selecting a second subset of the second set of k-mer seeds based on a result of the second one or more modulo operations and a predetermined criterion.
10. determining a reference sequence location for each k-mer seed of the second subset that matches at least a portion of a given k-mer seed using the hash data structure; and generating a second list of candidate positions comprising reference sequence positions for each k-mer seed of the second subset.
11. sorting the reference sequence locations in the second candidate location list according to the number of k-mer seeds paired with the given reference sequence location in the hash data structure; and determining a number of mismatches for each of the reference sequence locations of the sorted second list of candidate locations compared to the reference genome sequence in the order of the sorted second list of candidate locations.
12. determining that a number of mismatches for second candidate positions among the reference sequence positions in the sorted second candidate position list satisfies a third mismatch threshold; and selecting the second candidate location as the actual alignment.
13. 1. A method for software accelerated genomic data read mapping, comprising: obtaining, by one or more computers, a first k-mer seed from the genomic data reads; generating, by the one or more computers, a genomic signature based on the first k-mer seed; determining, by the one or more computers, reference sequence locations that match at least a portion of the first k-mer seed using a hash data structure, the hash data structure including N data cells including a first portion that stores a predetermined genomic signature and a second portion that stores a value corresponding to a location in a reference genomic sequence that matches at least a portion of the first k-mer seed from which the predetermined genomic signature was derived; determining, by the one or more computers, a number of mismatches based on comparing genomic data of the genomic data reads to genomic data of the reference genomic sequence; obtaining, by the one or more computers, a set of k-mer seeds from the genomic data reads based on determining that the number of mismatches includes one or more mismatches; selecting, by the one or more computers, an actual alignment for the genomic data reads based on the set of k-mer seeds from the genomic data reads; A method comprising:
14. Obtaining the first k-mer seed from the genomic data reads includes:
14. The method of claim 13, comprising taking a first k bases of the genomic data read as the first k-mer seed.
15. 14. The method of claim 13, comprising selecting the first k-mer seed as the actual alignment for the genomic data read based on determining that the number of mismatches is zero.
16. Selecting the actual alignment for the genomic data reads based on the set of k-mer seeds from the genomic data reads comprises: generating a genomic signature for each k-mer seed of the set of k-mer seeds; and selecting a subset of the set of k-mer seeds based on the genomic signature.
17. Selecting the subset of k-mer seeds of the set based on the genomic signature comprises: performing one or more modulo operations, including a modulo operation for each genomic signature of the genomic signatures; and selecting the subset of k-mer seeds of the set based on the result of the one or more modulo operations and a predetermined criterion.
18. determining, by the one or more computers, a reference sequence location for each k-mer seed of the subset that matches at least a portion of the given k-mer seed using the hash data structure; and generating a candidate position list comprising a reference sequence position for each k-mer seed of the subset.
19. sorting the reference sequence locations in the candidate location list according to the number of k-mer seeds paired with the given reference sequence location in the hash data structure; and determining a number of mismatches for each of the reference sequence locations of the sorted candidate location list compared to the reference genome sequence in the order of the sorted candidate location list.
20. determining that the number of mismatches for a first candidate position among the reference sequence positions in the sorted candidate position list meets a mismatch threshold; and selecting the first candidate location as the actual alignment.
21. 21. The method of claim 20, wherein the mismatch threshold comprises a threshold number of mismatched nucleotide values.
22. determining that the number of mismatches for one or more of the reference sequence positions in the sorted candidate position list does not meet a mismatch threshold; and obtaining a second set of k-mer seeds from the genomic data reads based on determining that the number of mismatches does not meet the mismatch threshold.
23. generating a second genomic signature for each k-mer seed of the second set of k-mer seeds; performing a second one or more modulo operations, including a modulo operation for each genomic signature of the second genomic signatures; and selecting a second subset of the second set of k-mer seeds based on a result of the second one or more modulo operations and a predetermined criterion.
24. determining a reference sequence location for each k-mer seed of the second subset that matches at least a portion of the given k-mer seed using the hash data structure; and generating a second list of candidate positions comprising reference sequence positions for each k-mer seed of the second subset.
25. sorting the reference sequence locations in the second candidate location list according to the number of k-mer seeds paired with the given reference sequence location in the hash data structure; and determining a number of mismatches for each of the reference sequence locations of the sorted second list of candidate locations compared to the reference genome sequence in the order of the sorted second list of candidate locations.
26. determining that a number of mismatches for second candidate positions among the reference sequence positions in the sorted second candidate position list meets a second mismatch threshold; and selecting the second candidate location as the actual alignment.
27. 1. A method for software accelerated genomic data read mapping, comprising: obtaining, by one or more computers, a first k-mer seed from the genomic data reads; generating, by the one or more computers, a genomic signature based on the first k-mer seed; determining, by the one or more computers, reference sequence locations that match at least a portion of the first k-mer seed using a hash data structure, the hash data structure including N data cells including a first portion that stores a predetermined genomic signature and a second portion that stores a value corresponding to a location in a reference genomic sequence that matches at least a portion of the first k-mer seed from which the predetermined genomic signature was derived; determining, by the one or more computers, a number of mismatches based on comparing genomic data of the genomic data reads to genomic data of the reference genomic sequence; comparing the number of mismatches to a mismatch threshold; selecting, by the one or more computers, an actual alignment for the genomic data read based on comparing the number of mismatches to the mismatch threshold; A method comprising:
28. determining that the number of mismatches meets the mismatch threshold; 28. The method of claim 27, wherein selecting the actual alignment for the genomic data read comprises selecting the reference sequence location that matches at least a portion of the first k-mer seed.
29. determining that the number of mismatches does not meet the mismatch threshold; obtaining a second k-mer seed from the genomic data reads; 28. The method of claim 27, wherein selecting the actual alignment for the genomic data read comprises selecting a reference sequence location that matches at least a portion of the second k-mer seed.
30. 30. The method of claim 29, comprising using the hash data structure to determine the reference sequence locations that match at least a portion of the second k-mer seed.
31. 1. A method for generating a hash data structure for a MultiPass software accelerated genomic read mapping engine, comprising: Extracting k-mer seeds from the obtained genomic data; generating a filtered set of k-mer seeds; storing the filtered set of k-mer seeds in a hash data structure; A method comprising:
32. Generating the filtered set of k-mer seeds comprises: generating one or more hash values for each of the k-mer seeds; and filtering the k-mer seeds using the one or more hash values.
33. Generating the filtered set of k-mer seeds comprises: determining a number of occurrences of the k-mer seed; and filtering the k-mer seeds using the number of occurrences.
34. 32. The method of claim 31 , wherein the hash data structure comprises N data cells including a first portion that stores a predetermined genomic signature for one of the k-mer seeds and a second portion that stores a value corresponding to a location in a reference genome sequence that matches at least a portion of the k-mer seed from which the predetermined genomic signature was derived.
35. A non-transitory computer readable medium storing one or more instructions executable by a computer system to perform the operations recited in one or more of claims 1-34.
36. 1. A system comprising: one or more processors; a machine-readable medium interoperably coupled to said one or more processors and storing one or more instructions that, when executed by said one or more processors, perform the operations of any one or more of claims 1 to 34; A system comprising: