Flexible seed growth for hashtable genome mapping
Hashtable indices with interval records enable flexible seed extension, addressing inefficiencies in conventional sequencing methods by reducing resource consumption and improving mapping accuracy through dynamic seed expansion.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- ILLUMINA INC
- Filing Date
- 2025-02-20
- Publication Date
- 2026-07-08
AI Technical Summary
Conventional nucleic acid sequencing methods face issues with high computational resource consumption and inaccurate mapping due to repetitive sequences, leading to unmapped reads and high-accuracy mismappings, and are limited by fixed maximum match parameters.
The use of hashtable indices with interval records for flexible seed extension reduces computational load and improves accuracy by dynamically determining whether to expand seeds based on interval records, allowing for more efficient and precise genome mapping.
This approach reduces computational resources and power consumption while enhancing mapping accuracy by minimizing unnecessary processing and improving the handling of repetitive sequences.
Smart Images

Figure 0007886979000002 
Figure 0007886979000003 
Figure 0007886979000004
Abstract
Description
[Technical Field]
[0001] Cross-reference of related applications This application claims the interests of U.S. Provisional Patent Application No. 62 / 852,965, filed on 24 May 2019, which is incorporated herein by reference in its entirety. [Background technology]
[0002] A nucleic acid sequencer is an instrument configured to automate the process of sequencing nucleic acids. Nucleic acid sequencing is the process of determining the order of nucleotides in a nucleic acid sequence. Nucleic acids may include deoxyribonucleic acid (DNA) or ribonucleic acid (RNA).
[0003] A nucleic acid sequencer is configured to receive a nucleic acid sample and generate one or more output data called "reads" that represent the order of nucleotides in the nucleic acid sample. Nucleotides in a DNA sample can contain one or more nucleotide bases, including any combination of guanine (G), cytosine (C), adenine (A), and thymine (T). Nucleotides in an RNA sample can contain one or more bases, including any combination of G, C, A, and uracil (U).
[0004] Reads generated by a DNA sequencer can be mapped to known nucleotide sequences in a reference genome using a mapping and aligning engine. The mapping of reads to the nucleotide sequences of the reference genome can be achieved by the mapping and aligning engine using a hash table index. [Overview of the project]
[0005] This disclosure describes the construction and use of a hashtable index that facilitates flexible seed extension to improve the performance of genome mapping and aligning systems. In particular, this disclosure enables flexible seed extension in a manner that (i) reduces the consumption of computational resources and power, and (ii) solves problems associated with conventional seed extension methods described herein. To achieve these advantages, this disclosure provides, among other things, “interval records” that can be stored in hashtable locations.
[0006] Aspects of this disclosure enable the mapping and aligning unit to reduce the number of matching locations processed by the mapping and aligning unit through seed expansion by using interval records alone or in combination with one or more expansion records, while simultaneously providing the mapping and aligning unit with the flexibility to determine whether the matching reference locations identified using dynamic seed expansion are accurate, or in some cases whether seed expansion using one or more expansion records should be performed. This results in a mapping and aligning unit that uses less power and fewer computing resources, while being more accurate than other mapping and aligning units that utilize conventional seed expansion techniques themselves.
[0007] In one embodiment, the present disclosure provides a method for generating a hash table for mapping sample reads to a reference. In one embodiment, the method involves obtaining a first seed of nucleotides from a reference sequence by a computer system, wherein the first seed has a length of K nucleotides, and the computer system determines that the first seed matches more than a predetermined number of reference sequence positions, and based on the determination that the first seed matches more than a predetermined number of reference sequence positions, the computer system generates a seed extension tree having a plurality of nodes, where each node of the plurality of nodes is (i) an extension of the first seed and K* An elongated seed having a nucleotide length of K * The actions may include: generating an elongated seed which is one or more nucleotides greater than K; and (ii) one or more locations in a seed elongation table which include data describing reference sequence locations that match the elongated seed; and for each node of a plurality of nodes, storing interval information in a hash table location corresponding to the index key of the elongated seed, wherein the interval information refers to one or more locations in a seed elongation table which include data describing reference sequence locations that match the elongated seed associated with the node.
[0008] Other embodiments include corresponding systems, apparatus, and computer programs for performing actions in the manner disclosed herein, such as those defined by instructions encoded on a computer-readable storage device.
[0009] These and other embodiments may optionally include one or more of the following features: For example, in some implementations, each of the matching reference sequence positions contains K nucleotides of the first seed.
[0010] In some implementations, the method may further include: obtaining a second seed of nucleotides from a reference sequence different from the first seed using a computer system; determining, using a computer system, that the second seed does not match more than a predetermined number of reference sequence positions; obtaining, using a computer system, data describing each of the reference sequence positions that match the second seed based on the computer system's determination that the second seed does not match more than a predetermined number of reference sequence positions; and storing, using a computer system, data describing the reference sequence positions that match the second seed at a second position in a hash table corresponding to the index key of the second seed.
[0011] In some implementations, one or more locations in the seed expansion table, which contain data describing reference array locations that match the expanded seed, may include a contiguous interval between locations in the seed expansion table, which contain data describing reference array locations that match the expanded seed.
[0012] In some implementations, one or more locations in the seed expansion table, which contains data describing reference array locations that match the expanded seed associated with a node, may include consecutive intervals within the expansion table of reference array locations that match the expanded seed associated with a node.
[0013] In some implementations, obtaining a first seed of nucleotides from a reference sequence by a computer system, wherein the first seed represents a sequence of nucleotides having a nucleotide length of K nucleotides, may include determining the location of a seed access window within the reference sequence by the computer system, and obtaining a subset of the reference sequence identified by the seed access window by the computer system.
[0014] In some implementations, the method involves a computer system adjusting the seed extension window forward by K nucleotides along the reference sequence to identify a second seed of nucleotides from a reference sequence having a nucleotide length of K nucleotides; the computer system obtaining the second seed from the reference sequence; determining that the second seed matches more than a predetermined number of reference sequence positions; and, based on the determination that the second seed matches more than a predetermined number of reference sequence positions, the computer system generating a second seed extension tree having multiple second nodes, wherein each of the multiple second nodes is (i) an extension of the second seed, and K * A second elongated seed having a nucleotide length of K *The method may further include generating a second extended seed which is one or more nucleotides greater than K, and (ii) one or more second positions in a second seed extended table which include data describing reference sequence positions that match the second extended seed, and for each of the second nodes of a plurality of second nodes, a computer system stores second interval information in a hash table position corresponding to the index key of the second extended seed, wherein the second interval information refers to one or more positions in a second seed extended table which include data describing reference sequence positions that match the second extended seed associated with the second node.
[0015] In some implementations, the method may further include, for each node of a plurality of nodes, the computer system determining whether the node in the seed-extended tree is a leaf node, and, based on the computer system's determination that the node in the extended tree is not a leaf node, the computer system storing the extended record at the location in the hash table corresponding to the index key of the extended seed.
[0016] In some implementations, the decompression record includes one or more instructions that, when executed by a computer system, cause the computer system to add one or more additional nucleotides to the seed associated with the decompression record.
[0017] In some implementations, based on the computer system's determination that the node-extended treeed is a leaf node, the computer system may further include not storing the extended record in the hash table location corresponding to the index key of the extended seed.
[0018] In some implementations, the method may further include generating a seed expansion table by a computer system. In such implementations, generating the seed expansion table may include the computer system identifying each seed in the reference array that matches a first seed, and the computer system storing data identifying the identified seeds in the seed expansion table.
[0019] In some implementations, the method may further include sorting the identified seeds in the seed growth table by a computer system.
[0020] In some implementations, the method may further include generating a hash table installation package by a computer system, the hash table installation package containing instructions that, when processed by one or more computers receiving the hash table installation package, cause one or more computers to install a hash table into memory accessible by a programmable logic circuit.
[0021] In some implementations, the hash table installation package may include a seed decompression table, and the hash table installation package may include instructions to (i) a programmable logic circuit or (ii) another computer to store the seed decompression table in a memory device accessible to the programmable logic circuit.
[0022] In some implementations, a computer system provides a hash table installation package to another computer.
[0023] In some implementations, the other computer may include (i) a computer configured to communicate with a programmable logic circuit, or (ii) the programmable logic circuit itself.
[0024] In some implementations, a computer system can include multiple computers.
[0025] In another aspect, the present disclosure provides a method for improving the mapping of sample reads to a reference array using a hash table. In one aspect, the method includes executing, by a mapping and alignment unit, a query of the hash table, the query including a first seed, the first seed including a subset of nucleotides obtained from a particular read of the sample reads; obtaining, by the mapping and alignment unit, a response to the executed query including information stored at a position of the hash table determined to respond to the query; determining, by the mapping and alignment unit, whether the response to the executed query includes (i) an extension record, (ii) a gap record, or (iii) one or more matching reference array positions; determining, by the mapping and alignment unit, whether the extension table is accessed to obtain one or more matching reference array positions within the extension table referenced by the gap record based on determining that the response to the executed query by the mapping and alignment unit includes (i) an extension record and (ii) a gap record; determining, by the mapping and alignment unit, whether to store, in a memory device, as information describing a best gap candidate, first information describing the gap record based on determining that the extension table is not accessed; generating, by the mapping and alignment unit, a first extended seed that is an extension of the first seed using the extension record; generating, by the mapping and alignment unit, a subsequent hash query including the first extended seed; and executing, by the mapping and alignment unit, the subsequent hash query of the hash table.
[0026] Other versions include corresponding systems, devices, and computer programs for performing actions of a method defined by instructions encoded on a computer-readable storage device.
[0027] These and other aspects of the disclosure can optionally include one or more of the following features. For example, in some implementations, the method includes accessing an extension table by a mapping and alignment unit based on determining that the extension table is accessed, and obtaining one or more matching reference array positions in the extension table referenced by an interval record, and adding one or more matching reference array positions to a seed match set by the mapping and alignment unit.
[0028] In some implementations, the method includes determining by a mapping and alignment unit that a response to an executed query includes one or more matching reference array positions, and adding one or more matching reference array positions to a seed match set by the mapping and alignment based on determining that the response to the executed query includes one or more matching reference array positions.
[0029] In some implementations, the mapping and alignment unit can include determining whether to store, as information describing a best interval candidate, first information describing an interval record in a memory device, determining by the mapping and alignment unit that there is no previous information describing the interval record as a best interval candidate for a particular read, and storing, by the mapping and alignment unit, the first information describing the interval record in the memory device as information describing a best interval candidate.
[0030] In some implementations, the method involves the mapping and aligning unit obtaining the response to a subsequent executed query, which includes information stored by the hash table location determined to respond to the query; the mapping and aligning unit determining that the response to the subsequent executed query includes (i) a second extended record, (ii) a second interval record, or (iii) one or more matching reference array locations; and, based on the mapping and aligning unit determining that the response to the subsequent executed query includes (i) a second extended record or (ii) a second interval record, the mapping and aligning unit obtaining one or more matching reference array locations in the extended table referenced by the second interval record. The mapping and aligning unit may further include determining whether to use second information describing a second interval record or first information describing a best interval candidate, based on determining whether to access it and determining whether the extended table is not accessed, and using one or more heuristic rules to determine whether to use second information describing a second interval record or first information describing a best interval candidate as a best interval candidate; generating a second extended seed which is an extended version of the first extended seed using the second extended record using the mapping and aligning unit; generating a third hash query containing the second extended seed using the mapping and aligning unit; and executing a third query on a hash table containing the second extended seed using the mapping and aligning unit.
[0031] In some implementations, the mapping and aligning unit, using one or more heuristic rules, may determine whether a second piece of information describing a second interval record or a first piece of information describing a best interval candidate is to be used as the best interval, and this may include selecting either the second piece of information describing the second interval record or the first piece of information describing the best interval candidate record based on a number of factors including (i) the number of matching reference array positions returned by each of the interval record and the second interval record, (ii) a predetermined threshold level for the reference array positions, or (iii) the seed length of each seed that reached the hash position storing the interval record and the second interval record.
[0032] In some implementations, the interval record references multiple locations within the seed expansion table, each containing data describing a reference array location that matches the first seed of the query.
[0033] In some implementations, the seed expansion table may contain multiple locations that describe reference array locations matching the first seed of the query, or the expansion table may contain consecutive intervals of reference array locations matching the first seed of the query.
[0034] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as those commonly understood by those skilled in the art to which the present invention pertains. Methods and materials similar to or equivalent to those described herein may be used in carrying out or testing the present invention, but preferred methods and materials are described below. All publications, patent applications, patents, and other references referenced herein are incorporated herein by reference in their entirety. In case of any inconsistency, this specification, including definitions, shall prevail. Furthermore, materials, methods, and examples are illustrative and not intended to limit the scope of the invention.
[0035] These and other aspects of the present disclosure will be discussed in more detail in the following detailed description with reference to the accompanying drawings and claims. [Brief explanation of the drawing]
[0036] [Figure 1] This is a context diagram of a system for generating hashtable indexes that facilitate flexible seed expansion for hashtable genome mapping. [Figure 2] This is a flowchart of the process for generating a hashtable index that facilitates flexible seed expansion for hashtable genome mapping. [Figure 3] This is a context diagram of a runtime system for performing flexible, runtime seed expansion for hashtable genome mapping. [Figure 4] This is a flowchart of the process for performing runtime-flexible seed expansion for hashtable genome mapping. [Figure 5] This is a flowchart of the process for performing iterative, runtime-flexible seed growth for hashtable genome mapping for each seed in a read. [Figure 6] This is a diagram of system components that can be used to implement the system described herein related to flexible seed elongation for hashtable genome mapping. [Figure 7] This bar graph is an explanatory diagram showing data representing test results in the form of the percentage of unmapped leads in a system using a flexible seed growth method as described herein, compared to a system that does not use a flexible seed growth method. [Figure 8] This is an explanatory diagram of a line graph showing data representing test results in the form of lead mapping accuracy in a system using a flexible seed extension method such as the one disclosed herein, compared to a system that does not use a flexible seed extension method. [Modes for carrying out the invention]
[0037] This disclosure describes the construction and use of hashtable indices to facilitate flexible seed extension in order to improve the performance of genome mapping and aligning systems. As used herein, the term “seed” refers to a subset of consecutive nucleotides present in a nucleic acid read ("read") or a nucleic acid reference sequence ("reference sequence"). For example, a short seed for a read may have 21 bases or nucleotides extracted from a read of 150 bases or nucleotides generated by a nucleic acid sequencer ("sequencer") based on a biological sample input to the sequencer. Such a short seed can match hundreds, thousands, hundreds of thousands, or even more reference sequence locations. A reference sequence seed may include a subset of consecutive nucleotides from the reference sequence representing reference sequence locations. Identifying such a large number of reference sequence locations that match a particular short seed of a read can occur for several reasons, including the occurrence of repetitive sequences such as “...ATATAT...” which can occur at many locations within the reference sequence. Alternatively, or in addition to this, such a large number of matching reference sequence locations can occur because many nearby copies of the genome sequence can appear within the reference sequence.
[0038] The large number of reference array locations matching a particular short seed can strain conventional mapping and aligning units using conventional hash table indexes, as it forces the mapping and aligning engine to process the large number of matches. Such overprocessing of a large number of reference array locations matching a particular short seed results in unnecessary consumption of computing resources, including overwork of processing and memory resources, and waste of power used to power processing resources, memory devices, and cooling units used to cool processing and memory resources, or any combination thereof.
[0039] Conventional methods have been used to address potential problems arising from the identification and processing of a large number of reference sequence locations that match a short seed. For example, conventional methods have been used to iteratively extend short seeds using extended records stored at hash table locations. One such method is described in U.S. Patent No. 10,083,276, incorporated herein by reference, which can return an "extended record" stored at the hash table location corresponding to the seed in a hash query. An extended seed can be created by using the extended record to symmetrically increase the length of the seed in the received hash query by adding one or more bases or nucleotides to each end of the seed. Conventional systems can then query the hash table again using another hash query containing the extended seed. This other hash query with the extended seed is more likely to correspond to hash locations that identify fewer reference locations that match the extended seed because the extended seed is longer. This iterative process can continue until (i) the resulting match set has shrunk enough to contain fewer than a threshold number of reference sequence positions that match the stretched seed, (ii) the match set is empty, (iii) the maximum seed stretch is reached, or (iv) the stretching has moved beyond the edge of the read on which the short seed is based, making further stretching impossible. Strictly speaking, in conventional systems, the mapping and aligning unit can obtain a non-empty set of matching reference positions only if the iterative process terminates by method (i) above, and not by any of the above methods (ii), (iii), or (iv).
[0040] These conventional methods can help reduce the number of reference sequence positions that match a short seed. However, these conventional methods suffer from three distinct problems.
[0041] Firstly, conventional methods are prone to the "unmapped read problem." The unmapped read problem occurs when conventional seed extension methods return zero matches for the extended seeds. Such zero-match result sets can occur if the extended seeds incorporate variants such as SNPs, or if the extended seeds overrun the edges of the corresponding reads. If such scenarios occur for each seed location of a read using conventional methods, the reads may not be mapped.
[0042] Secondly, conventional methods may be prone to a "high-accuracy mismapping problem." This problem occurs when an expanded seed contains variants such as SNPs, but still matches one or more reference locations. Such mappings can be characterized by high-accuracy scores, such as high MAPQ scores, even if the expanded seed is improperly mapped. If this occurs for each seed location of a read using conventional methods, the read may be mismapped with high accuracy. Conversely, evidence may be lost due to such mappings. High-accuracy mismappings can be more detrimental to the overall mapper accuracy than low-accuracy mismappings. MAPQ scores can include quality scores that quantify the probability that a mapped read is misplaced.
[0043] Thirdly, conventional methods can easily fall into the "fixed maximum match problem." Generally, hash tables built for seed growth use a maximum match parameter M, such as M=16. This parameter ensures that the leaf nodes of the seed growth tree do not exceed the parameter M. However, some applications use a different maximum match parameter M, such as M=64. *Benefits can be gained from using this method. With conventional seed growth methods, the seed is iteratively grown until a leaf node is reached. Therefore, applications using conventional methods cannot stop growing the seed once a set of matches with M=64 is achieved, unless the hash table is rebuilt so that the maximum match parameter M is set to 64.
[0044] An innovative aspect of this disclosure can be used to perform flexible seed expansion in a manner that (i) reduces the consumption of computational resources and power as described herein, and (ii) solves problems associated with conventional seed expansion methods, such as those problems described above. To achieve these advantages, the disclosure provides, among other things, “interval records” that can be stored in hash table locations. For a given seed, an interval record identifies a contiguous set of reference array locations stored in the seed expansion table that match that particular seed. When a hash query is performed to identify a particular seed, the mapping and aligning unit can determine, based on the contents of the hash locations responding to the query, whether to (i) expand the seed based on the seed expansion records stored in the hash locations, (ii) store interval records in the seed expansion table that identify reference locations that match the particular seed, or (iii) access reference array locations in the seed expansion table identified by the interval records stored in the hash locations. Some implementations can perform combinations of these actions, such as expanding the seed and storing intervals.
[0045] Therefore, by using interval records in conjunction with one or more expansion records, the mapper and aligner can reduce the number of matching locations processed by the mapping and aligning unit through seed expansion, while simultaneously providing the mapping and aligning unit with the flexibility to determine whether the matching reference locations identified using dynamic seed expansion are accurate, or in some cases whether seed expansion using one or more expansion records should be performed. This results in a mapping and aligning unit that uses less power and fewer computing resources, while being more accurate than other mapping and aligning units that utilize conventional seed expansion techniques themselves. Generating a hash table index for flexible, sealed decompression
[0046] Figure 1 is a context diagram of a system 100 for generating a hash table index that facilitates flexible seed expansion for hash table genome mapping. System 100 includes a computer 110, memory 112, and memory 130. Although memories 112 and 130 are depicted as separate memory devices in Figure 1, this disclosure is not limited to that. Instead, in some implementations, memories 112 and 130 can be the same memory device. For example, memories 112 and 130 simply refer to two separate storage locations on a single memory device. Alternatively, memories 112 and 130 can each be stored in separate memory devices, such as separate hard disks accessible by the computer 110. As another example, memory 112 could be a memory device on a cloud-based server storing a library of reference genomes, and memory 130 could be the local memory of the computer 110. Therefore, the depiction of memory 112 and memory 130, which are separate memories in Figure 1, is not limited to memories 112, 130 themselves or the contents of those memories, and it is not required that these memories be organized or stored in any particular implementation of this disclosure.
[0047] Computer 110 may include one or more computers, each containing one or more processing units configured to perform operations by executing one or more software instructions. One or more processing units may include one or more central processing units (CPUs), one or more graphics processing units (GPUs), or any combination thereof. Computer 110 may be configured to interact directly with memory 112, memory 130, or programmable circuitry 162 via direct connections such as one or more buses, one or more USB cables, one or more USB-C cables, or any combination thereof. Alternatively, or in addition to the above, computer 110 may be configured to interact with memory 112, memory 130, or programmable circuitry 162 via one or more networks. One or more networks may include wired Ethernet networks, wireless networks, optical networks, LANs, WANs, cellular networks, the Internet, or any combination thereof.
[0048] As an example, one implementation may include a computer 110 configured to (i) interact with memories 112 and 130 stored in one or more local memory devices accessible to the computer 110 to generate a seed decompression table 132 and a hash table 140, and (ii) use one or more networks to transmit the generated seed decompression table 132 and hash table 140 to a programmable circuit 162 integrated with another device 160. The other device 160 may include a nucleic acid sequencer, one or more cloud-based servers, or any other computer. In some implementations, the programmable circuit 162 can be integrated with other devices using expansion cards such as PCI cards. In such implementations, the programmable circuit 162 can be housed on the logic board of a PCI card inserted into the motherboard of a sequencer, cloud-based server, or other computer using a PCI port on the motherboard.
[0049] The programmable circuit 162 may include one or more programmable integrated circuits, such as one or more field programmable gate arrays (FPGAs). A field programmable gate array is an integrated circuit that includes multiple hardware digital logic gates, hardware digital logic circuits, etc., and is dynamically configurable to implement one or more processing modules, such as a genome analysis module of a genome analysis pipeline, such as a mapping and aligning unit 170, or a portion of a processing module, such as a hash table 140. FPGAs can be programmed using hardware description languages (HDLs), such as Very High Speed Integrated Circuit Hardware Description Language (VHDL) or Verilog. FPGAs are flexible in that an FPGA pre-programmed to include one or more genome analysis modules or portions of such genome analysis modules of a genome analysis pipeline can be dynamically reconfigured to include updates to one or more genome analysis modules, other different genome analysis modules, etc.
[0050] Other types of integrated circuits can be used instead of, or in addition to, the programmable circuit 162 to implement the functionality of the programmable circuit 162 described herein. For example, one or more application-specific integrated circuits (ASICs) can be used to implement the functionality, or a portion of the functionality, of the programmable circuit 162. An ASIC is a custom integrated circuit that includes multiple hardware digital logic gates, multiple digital logic circuits, etc., configured at the time of manufacture. An ASIC is similar to an FPGA described herein in that the hardware digital logic gates, or multiple digital logic circuits of the ASIC, can be described or designed using a hardware description language such as VHDL or Verilog. The ASIC can then be manufactured or printed to include digital logic circuits or digital circuits described by HDL. However, once manufactured or printed, an ASIC cannot be dynamically reconfigured like an FPGA. The embodiments described herein describe programmable circuits or custom circuits, but this disclosure is not limited to that. In some implementations, other types of integrated circuits can be used to implement the functionality described as being performed by the programmable circuit 162, for example.
[0051] Memory 112 can store one or more reference sequences 114. A reference sequence may include (i) a whole reference genome representing a species, (ii) a portion of a reference genome representing a species, or (iii) a complete and / or partial reference genome representing multiple species. A reference sequence includes a sequential list of bases or nucleotides. The sequential list of bases or nucleotides constituting the reference sequence can be organized within memory 112 as a digital nucleic acid sequence database. As a species representative, a specific reference sequence can be assembled from multiple different donors of a particular species by a human, a computer, or both.
[0052] In some implementations, a specific reference sequence can be constructed to represent a particular population, where the population is a subset of a species that possesses a specific nucleic acid sequence that uniquely distinguishes that particular population from other populations within the species. The species can include any species, including humans, non-human mammals, reptiles, fish, insects, plants, bacteria, and viruses. Reference sequences can be generated from samples of non-extinct species, such as humans, or from now-extinct species, such as populations of dinosaurs or mammoths. Reference sequences for extinct species, such as dinosaurs, can be constructed using samples obtained from biological material contained within fossilized, cryopreserved, or otherwise preserved remnants of the extinct species. Reference sequences for extinct species can be constructed from a combination of (i) sequencing of biological remnants obtained from fossilized remnants of extinct species and (ii) sequencing of biological samples from non-extinct species. An entire reference genome can contain many consecutive bases or nucleotides. For example, the human reference genome can contain as many as 300 million consecutive bases or nucleotides.
[0053] Computer 110 is configured to generate a hash table 140 that facilitates flexible seed expansion. Computer 110 begins generating the hash table 140 by accessing a reference sequence 114 stored in memory 112 and obtaining the seeds 114-1, 114-2, 114-3 to 114-n of the reference sequence, where n is any non-zero integer greater than 0. In some implementations, computer 110 can use a seed access window to identify and obtain the seeds 114-1, 114-2, 114-3 to 114-n of the reference sequence 114. Computer 110 can initialize the seed access window to a seed length K, where K is the number of bases or nucleotides contained in each seed, and K is any non-zero integer greater than 0. Computer 110 can begin accessing the seed of reference sequence 114 by positioning a seed access window of length K at the beginning of the reference sequence, so as to include a first set of K nucleotides in the reference sequence, such as seed "GTTTA" 114-1. In this embodiment, K is equal to 5, but K is not limited to such a nucleotide length. Alternatively, K can be equal to any non-zero integer greater than zero, and in some implementations, it may be equal to, for example, 7, 10, 12, 15, 18, 20, 21, 25, or more bases or nucleotides. Seeds 114-1, 114-2, and 114-3 to 114-n are merely examples of seeds for reference sequence 114, and in this embodiment, it is not necessary to correspond to four sets of sequence seeds for reference sequence 114.
[0054] To generate the hash table 140, the computer 110 is configured to access each seed 114-1, 114-2, and 114-3 to 114-n of the reference array 114 and to perform a set of operations for each seed 114-1, 114-2, and 114-3 to 114-n. The set of operations is designed to generate information to be stored at the hash position 144 of the hash table 140 corresponding to the index key 142 of the hash table 140. Each index key 142 can correspond to each seed of the multiple seeds 114-1, 114-2, 114-3 to 114-n of the reference array 114, the inverse complement of each seed 114-1, 114-2, 114-3 to 114-n, one or more expanded seeds from the multiple seeds 114-1, 114-2, 114-3 to 114-n, or the inverse complement of each expanded seed. Each of the index seeds 142 can be mapped to a hash position 144 using the hash function 143.
[0055] Computer 110 can identify and access multiple seeds 114-1, 114-2, and 114-3 to 114-n by advancing K positions in the seed access window within the reference array 114 after each seed has been accessed and used to perform a set of operations. The set of operations performed for each seed 114-1, 114-2, and 114-3 to 114-n is described in more detail below. The set of operations may include a collection of hash tables 140 using the generated information. Alternatively, the collection of hash tables 140 may arise after the set of operations for each seed has been completed.
[0056] The set of operations for computer 110 begins with computer 110 obtaining the seeds identified by the seed access window on each seed 114-1, 114-2, and 114-3 to 114-n of the reference array 114. In the embodiment of Figure 1, the seed of the reference array 114 identified by the seed access window is "GTTTA" 114-1.
[0057] Computer 110 can determine whether the acquired seed "GTTTA" 114-1 matches more than a predetermined number of reference sequence 114 positions. Matching reference sequence positions may include a subset of reference sequence 114 containing seed 114-1. The subset of reference sequence 114 may include a set of sequentially ordered nucleotides, which are K or more nucleotides in the acquired seed. In some implementations, the predetermined number of matching reference sequence positions may include one matching reference sequence position. However, in other implementations, the predetermined number can be set to two or more matching reference sequence positions.
[0058] If the computer 110 determines that seed 114-1 is less than or equal to a predetermined number of reference array positions, or matches a predetermined number, the computer can fill the hash position 144 reached by seed "GTTTA" 114-1 with the reference positions (one or more) that match seed 114-1. If seed 114-1 matches the hash key 142 that the hash function 143 maps to the hash position, then seeds such as seed 114-1 can "reach" the hash position 144. Alternatively, if the computer 110 determines that the predetermined number of matching reference array positions is greater than the predetermined number of reference array positions, the computer 110 can generate a seed extension tree for seed 114-1. In the embodiment of Figure 1, the computer 110 determines that seed "GTTTA" 114-1 matches more than the predetermined number of reference array positions. Therefore, the computer 110 generates a seed extension tree 120 for seed 114-1.
[0059] Computer 110 can generate a seed extension tree 120 for each node, starting from the root node 120 and considering the seed 114-1. The seed extension tree 120 can be generated such that the set of matching reference locations identified by the leaf nodes does not exceed a predetermined matching limit if further seed extension is not possible. Each node in the seed extension tree 120 can contain seeds and intervals of consecutive addresses in the seed extension table 132. In some implementations, the seed extension table 132 contains a centrally lexicographically sorted list of reference array locations 131-1 to 131-6 that match seeds such as seed 114-1 obtained by computer 110 using a seed access window. The centrally lexicographical sort may include, for example, establishing a priority order for symbol locations, and then alternating between left and right outwards from the central symbol. Alternatively, the centrally lexicographical sort may include, for example, establishing a priority order for symbol locations, and then alternating between right and left outwards from the central symbol. Furthermore, other variations may also be used.
[0060] In the embodiment shown in Figure 1, the seed extension table 132 is centrally lexicographically sorted by 133 based on the seed 114-1 of "GTTTA". This embodiment assumes a normal alphabetical nucleotide order (i.e., A, C, G, T) with the leftmost nucleotide being 1st, in order to achieve the centrally lexicographical sort order shown in Figure 1. The computer 110 can generate seed extension tables, such as the seed extension table 132, for each seed 114-1, 114-2, 114-3, 114-n that is determined to have more matching reference sequence positions than a predetermined threshold number. In some implementations, the seed extension table 132 for each eligible seed may be generated for a particular seed after the computer 110 has accessed the particular seed using the seed access window and before the seed extension tree 120 for the seed is generated.
[0061] The above description of the nodes in the seed extension tree 120 indicates that the addresses of each node are contiguous. However, this disclosure does not have to be limited in this way. Instead, the addresses of the nodes do not have to be contiguous. For example, a particular implementation may use intervals to describe multiple different sets of one or more contiguous locations in the seed extension table, or multiple different sets of other data structures stored in one or more memory devices, where each of the one or more contiguous sets of locations is discontinuous with respect to one another. That is, there can be breaks in continuity between each set.
[0062] A seed expansion table for each eligible seed can be stored in memory 130. This can result in n seed expansion tables, i.e., one for each of the n seeds in reference array 114. Alternatively, the number of seed expansion tables may be less than n, for example, if seed expansion tables are generated and stored only for seeds that have more matching reference array positions than a predetermined threshold number. After each seed expansion table is generated, each set 132A of seed expansion tables can be provided to a device 160 housing a programmable circuit 162 and stored in memory 180 accessible by the programmable circuit 162. Memory 180 may include DRAM memory, SRAM memory, NAND memory, etc. In some implementations, the set 132A of seed expansion tables can be provided to a device 160 housing the programmable circuit 162 as individual seed expansion tables. In other implementations, the set 132A of seed expansion tables may be provided as a single master seed expansion table composed of each concatenation of the respective seed expansion tables for each seed. The seed decompression table set 132A can be provided in any number of formats. In some implementations, the seed decompression table set 132A can be compressed by the computer 110 so as to reduce the size of the seed decompression table file provided to the device 160 and then decompressed by the device 160, programmable circuit 162, etc., for storage in memory 180.
[0063] Computer 110 can generate a root node 121 of a seed-extension tree 120 to contain the seed "GTTTA" 121a and interval A 121b. Interval A 121b identifies a contiguous interval of positions in the seed-extension table 132 that stores reference array positions that match the seed "GTTTA" 121a represented by the root node 121. In this example, interval A identifies positions in the seed-extension table 132 spanning 131-1 to 132-6 and containing "TAGTTTACT", "TAGTTTATC", "GAGTTTATG", "ACGTTTAGT", "TCGTTTAGT", and "ACGTTTAGC". Computer 110 can determine an appropriate interval or set of intervals for a particular seed of a node, such as node 121, by accessing the seed-extension table 132 and determining the positions in the seed-extension table 132 that have reference array positions that match the seed of node 121.
[0064] In some implementations, the interval 121b for a particular seed of a node, such as node 121, can be described using the start address of the interval in the seed expansion table 132 and the end address of the interval in the seed expansion table 132. In other implementations, the interval 121b for a particular seed of a node, such as node 121, can be described using the start address of the interval in the seed expansion table 132 and an offset from the start address. In such implementations, the interval can be calculated later using the start and end addresses of the interval, or the start address and offset of the interval. However, this disclosure does not have to be limited in that way. Instead, it is understood that the interval record can be represented in the hash table location 144 using any form of information, structured or unstructured in any appropriate way. For example, in some implementations, the interval record can be implemented using a single record of fixed size and format. Other implementations may involve selecting from multiple formats of different sizes, including record counts, to optimize the storage space consumed by the hash table 140, enable the compressibility of the hash table 140, and improve the efficiency of hash queries against other interval record formats.
[0065] Computer 110 can continue generating the seed elongation tree 120 by elongating the number of bases or nucleotides for seed 121a identified at the root node. For example, computer 110 can elongate the seed length of the root node from 5 bases or nucleotides to 7 bases or nucleotides and identify the largest subset of reference sequence positions in the seed elongation table that have 7 matching bases or nucleotides. In the embodiment of Figure 1, computer 110 can determine that the largest subset of reference sequence positions with 7 matching nucleotides is "CGTTTAG". Interval B identifies a contiguous interval of positions in the seed elongation table 132 that stores reference sequence positions that match the seed "CGTTTAG". In this embodiment, interval B identifies positions in the seed elongation table 132 spanning 132-4 to 132-6 and including "ACGTTTAGT", "TCGTTTAGT", and "ACGTTTAGC". Computer 110 can generate node 122 using the information determined using the seed elongation table 132. For example, computer 110 can generate node 122 which includes seed "CGTTTAG" 122a and interval B 122b.
[0066] Referring to the embodiment in Figure 1, the computer 110 can continue generating the seed elongation tree 120 by determining whether there are other reference sequence locations in the seed elongation table that have seven matching bases or nucleotides. If there are other reference sequence locations in the seed elongation table 132 that have seven matching bases or nucleotides, the computer 110 generates the next node in the seed elongation tree using the next largest set of reference sequence locations that have seven matching bases or nucleotides. In the embodiment in Figure 1, the computer 110 can determine that the next largest subset of reference sequence locations has seven matching nucleotides. Interval E identifies a contiguous interval of locations in the seed elongation table 132 that stores reference sequence locations matching the seed "AGTTTAT". In this embodiment, interval E identifies locations in the seed elongation table 132 spanning 132-2 to 132-3 and including "TAGTTTATC" and "GAGTTTATG". The computer 110 can generate node 123 using the information determined using the seed elongation table 132. For example, computer 110 can generate node 123 which includes the seed "AGTTTAT" 123a and interval E 123b.
[0067] Referring to the embodiment in Figure 1, the computer 110 can continue generating the seed elongation tree 120 by determining whether there are other reference sequence locations in the seed elongation table that have seven matching bases or nucleotides. If other reference sequence locations in the seed elongation table are identified as having seven matching bases or nucleotides, the computer 110 can generate a new node in the seed elongation table 120 using the next largest set of reference sequence locations that have seven matching bases or nucleotides, as described above. However, in the embodiment in Figure 1, there are no other reference sequence locations in the seed elongation table 132 that have seven matching bases or nucleotides. Therefore, the computer 110 can determine that it is elongating the number of bases in a nucleotide from seven to nine and continue analyzing the reference sequence locations in the seed elongation table 132.
[0068] Referring to the embodiment in Figure 1, the computer 110 can identify the largest subset of reference sequence locations having nine matching nucleotides. In this embodiment, there are multiple subsets of reference sequence locations having nine matching nucleotides. In such an example, the computer 110 can determine to create a node in the seed elongation tree for each set of reference sequence locations having nine matching nucleotides. In some implementations, the computer 110 may determine the order in which the seed elongation tree nodes are created randomly. In other implementations, the computer 110 may begin generating subsequent elongation tree nodes based on their central lexicographical order.
[0069] Regardless of the order in which they are created, the computer 110 can continue by generating a node in the seed elongation table for each subset of reference sequence locations having nine matching nucleotides. For example, the computer 110 can generate node 124 of the seed elongation tree 120 so as to contain the elongated short seed "TCGTTTAGT" 124a and interval C 124b. Interval C 124b identifies a contiguous interval of locations in the seed elongation table 132 that stores reference sequence locations matching the short seed "TCGTTTAGT" 124a. In this embodiment, interval C identifies a location in the seed elongation table 132 that spans 132-5 and contains "TCGTTTAGT". The computer 110 can determine the appropriate interval for a particular short seed of a node, such as node 124, by accessing the seed elongation table 132 and determining the location in the seed elongation table 132 that has a reference sequence location matching the short seed of node 124.
[0070] Referring to the embodiment in Figure 1, the computer 110 can continue by generating nodes in the seed elongation table for each subset of reference sequence positions having nine matching nucleotides. For example, the computer 110 can generate node 125 of the seed elongation tree 120 so as to contain the elongated short seed "ACGTTTAGC" 125a and interval D 125b. Interval D 125b identifies a contiguous interval of positions in the seed elongation table 132 that stores reference sequence positions matching the short seed "ACGTTTAGC" 125a. In this embodiment, interval D identifies a position in the seed elongation table 132 that spans 132-6 and contains "ACGTTTAGC". The computer 110 can determine the appropriate interval for a particular short seed of a node, such as node 125, by accessing the seed elongation table 132 and determining the position in the seed elongation table 132 that has a reference sequence position matching the short seed of node 125.
[0071] Referring to the embodiment in Figure 1, the computer 110 can continue by generating nodes in the seed elongation table for each subset of reference sequence positions having nine matching nucleotides. For example, the computer 110 can generate node 126 of the seed elongation tree 120 so as to contain the elongated short seed "TAGTTTATC" 126a and interval F 126b. Interval F 126b identifies a contiguous interval of positions in the seed elongation table 132 that stores reference sequence positions matching the short seed "TAGTTTATC" 126a. In this embodiment, interval F identifies a position in the seed elongation table 132 that spans 132-2 and contains "TAGTTTATC". The computer 110 can determine the appropriate interval for a particular short seed of a node, such as node 126, by accessing the seed elongation table 132 and determining the position in the seed elongation table 132 that has a reference sequence position matching the short seed of node 126.
[0072] This disclosure describes an embodiment of constructing a seed extension table in a specific regular order progressing from the largest set of matching bases to the smallest set of matching bases. However, this disclosure is not limited to the use of a seed extension tree constructed in this manner. Instead, any process for constructing a seed extension table can be used, as long as the result of the seed extension table construction process produces a seed extension table. For example, a seed extension tree can be generated from the smallest set of matching bases to the largest set of matching bases, or in no particular order at all. In some implementations, a previously generated seed extension table can be generated and used by system 100 without the seed extension table needing to be constructed by system 100.
[0073] Computer 110 can use the generated seed extension tree 120 to fill hash position 144 in the hash table 140 to which a specific seed input corresponding to a specific hash index key 142 reaches. For example, computer 110 can determine whether node 121 is a leaf node. Based on the determination that node 121 is not a leaf node, computer 110 can use the root node 121 to fill hash position 144-y, where y is any non-zero integer. Filling hash position 144-y using the root node 121 may include storing interval record 153b at hash table position 144-y to which seed 121a reaches. The interval record 153b identifies interval 121b for node 121. The hash table 140 may contain hash table index keys 142 for each seed 114-1, 114-2, 114-3 to 114-n, the inverse complement of each seed 114-1, 114-2, 114-3 to 114-n, or combinations thereof. Each hash table index key 142 can be mapped to one or more hash locations 144 using a hash function 143. Each hash location 144 can be implemented using one or more storage buckets, where a storage bucket corresponds to one or more storage locations in a memory device. Each of the one or more storage locations in the memory device may be contiguous or discontinuous.
[0074] The embodiment in Figure 1 shows only a portion of a hash table 140 having keys 142 corresponding to the forward seeds 121, 122, 123, and 125. However, the disclosure is not limited thereto. For example, in some implementations, a seed can be hashed using a hash function 143 in such a way that the reverse complement nucleotide sequence of any seed yields the same hash as the original forward seed. The reverse complement of a nucleotide sequence can be determined by reversing the order of the original nucleotide sequence and swapping As with Ts, Ts with A, Cs with Gs, and Gs with Cs. For example, the hash key 142 for the original forward seed GTTTA 121a may have the same hash as the hash key 142 for the reverse complement of seed GTTTA, which is TAAAC. In such implementations, once matching reference sequence locations are stored at hash locations 144 or as entries in the seed extension table 132, their sequence orientations can be annotated, for example, using a reverse-complement (RC) flag. However, in other implementations, the inverse complement of the seed may result in a different hash, and the orientation does not need to be annotated at the matching reference array position stored in hash position 144 of the hash table 140 or seed extension table 132.
[0075] Filling position 144 of the hash table 140 may also include determining whether an extended record should be filled at hash position 144. Determining whether an extended record should be filled at hash position 144 may include determining whether the node of the seed extended tree 120 used to fill the hash position is a leaf node. If the node is determined to be a leaf node, the computer 110 may determine not to store an extended record at the hash position reached by the seed associated with the node. Alternatively, if the node is determined not to be a leaf node, the computer 110 may generate an extended record and store the generated extended record at hash table position 144. Referring to the embodiment in Figure 1, the computer 110 may determine, or has previously determined, that node 121 is not a leaf node. In such an example, the computer 110 may generate and store an extended record 153a at hash table position 144-y reached by seed 121a. Therefore, hash position 144-y can include the extension record 153a and the interval record 153b.
[0076] When an expanded record is executed by a computer such as a central processing unit (CPU) or graphics processing unit (GPU) or programmable circuit 162 that executes software instructions, it can cause the CPU, GPU, or programmable circuit 162 to expand a seed used in a hash query by one or more nucleotides when it reaches a hash position that stores the expanded record. In some implementations, the expanded record can be generated in a way that instructs the computer to expand the seed symmetrically on each end of the seed. For example, the expanded record can be generated in a way that instructs the computer such as a CPU, GPU, or programmable circuit 162 to expand the seed by two nucleotides, four nucleotides, six nucleotides, etc. In such implementations, symmetric expansion of the seed can be achieved by expanding the seed by one nucleotide on each end of the seed, two nucleotides on each end of the seed, three nucleotides on each end of the seed, etc. In the embodiment shown in Figure 1, the elongation record 153a is configured to symmetrically elongate the initial seed 121a by two bases. The computer 110 can determine the elongation length to be included in the elongation record based on a variety of factors, including (i) the number of reference sequence positions matching the seed, (ii) the desired number of runtime seed elongation iterations, and (iii) the number of matching reference sequence positions to be found for each iteration. Flexible runtime seed elongation using the hash table 140 is described in more detail below in relation to Figure 3.
[0077] Nucleotide seeds have generally been described as consisting of a contiguous set of consecutive nucleotides. Similarly, an extension record has been described as sequentially extending a contiguous set of consecutive nucleotides by one or more additional nucleotides in a manner that can be contiguous, symmetrically or asymmetrically. However, this disclosure is not limited to the use of contiguous sets of consecutive nucleotides. Instead, the seed of a read or reference sequence may be a discontinuous seed pattern from the read or reference sequence. Similarly, when an extension record is processed by a CPU, GPU, or programmable circuit 162, the CPU, GPU, or programmable circuit 162 may include instructions to extend the initial seed to incorporate discontinuous neighboring bases or nucleotides. In such an implementation, matching reference sequence positions for each root node seed can be lexicographically sorted in the seed extension table 132 in a manner that is appropriate for the use of discontinuous seeds.
[0078] Computer 110 can continue to fill hash position 144 with information for each of the remaining nodes 122, 123, 124, 125, and 126 of the seed-extended tree 120. For example, computer 110 can determine whether node 122 is a leaf node. Based on the determination that node 122 is not a leaf node, computer 110 can use node 122 to fill hash position 144-3. Filling hash position 144-3 using node 122 may include storing interval record 152b at hash table position 144-3 reached by seed 122a. Interval record 152b identifies interval 122b for node 122. Computer 110 determines, or has previously determined, that node 122 is not a leaf node and generates an extended record 152a to store at hash position 144-3. In the embodiment shown in Figure 1, the extension record 152a includes instructions to symmetrically extend the seed 122a by two bases or nucleotides. These instructions in the extension record 152a can be executed at runtime, for example, if interval B is not accessed in response to a query about the seed 122a.
[0079] However, the disclosure is not limited in this respect, and other delonging record scans can also be generated that instruct the CPU, GPU, or programmable circuit 162 to delong the seed by different additional nucleotide lengths (e.g., 2, 4, 6, 8, etc.) or by different methods (e.g., using additional nucleotide lengths such as 1, 3, 5, etc., asymmetrically). The embodiment in Figure 1 shows a single delonging record in hash position 144-3, but the disclosure is not limited in this respect. Instead, in some implementations, multiple delonging records can be stored in a single hash position 144-3. For example, computer 110 can also store one or more additional delonging records in hash position 144-3 configured to delong the initial seed 122a by 4 bases. In such an implementation, the CPU, GPU, or programmable circuit 162 can, at runtime, first attempt to delonge the initial seed 122a by 4 bases. If such seed extension fails, subsequent queries to the hash table 140 will not produce a matching reference sequence location at runtime, allowing the CPU, GPU, or programmable circuitry to retrieve another extension record 152a containing instructions to extend the initial base by only two bases. This can increase the likelihood of a matching reference sequence location being returned.
[0080] Computer 110 can continue to fill in information at hash positions 144 for each node 123, 124, 125, 126 of the seed-extended tree 120. For example, the computer can determine whether node 123 is a leaf node. Based on the determination that node 123 is not a leaf node, computer 110 can use node 123 to fill in hash positions 144-1. Filling in hash positions 144-1 may include storing an interval record 150b at hash table position 144-1 reached by seed 123a. The interval record 150b identifies interval 123b for node 123. Computer 110 has determined, or has previously determined, that node 123 is not a leaf node and generates an extension record 150a to store at hash position 144-1. In this embodiment, the extension record 150a includes an instruction to symmetrically extend seed 123a by two bases or nucleotides. These instructions in the extended record 150a can be executed at runtime, for example, if interval E is not accessed in response to a query about seed 123a.
[0081] Computer 110 can continue to fill the hash positions 144 for each node 124, 125, and 126 of the seed-extending tree 120 with information. For example, computer 110 can determine whether node 125 is a leaf node. Based on the determination that node 125 is a leaf node, computer 110 can determine to fill the hash table 140 by storing the matching reference array position 155 identified by the interval D 125b that matches the seed "ACGTTTAGC" at hash position 144-2. Alternatively, in other implementations, computer 110 can determine to store the interval record at hash position 144-2 that identifies the interval D 125b. Such determinations may be made by computer 110 in some implementations based on whether storing each matching reference array position at hash table position 144 for a leaf node is an optimal use of memory resources. Therefore, if it is determined that storing a matching reference array position at hash table position 144 for a leaf node does not satisfy a predetermined threshold usage of memory resources, the computer 110 can store the matching reference array position at the hash position reached by the seed of the leaf node in the seed-extended tree. If, however, this memory resource usage threshold is exceeded, the computer 110 can store an interval record at hash position 144 reached by the seed of the leaf node in the seed-extended tree. The computer 110 has determined, or has previously determined, that node 125 is a leaf node and does not generate an extension record to store at hash position 144-2. Therefore, in this embodiment, there is no further extension of the seed "ACGTTTAGC" as would occur at runtime.
[0082] As described above, hash position 144-2 can only store matching reference array positions that match seed 125a and correspond to hash key 142-1. This is because, in this embodiment, seed 125a is the seed of leaf node 125, which cannot be expanded. However, the set of reference array positions that lack one or both of the expanded records or interval records is not limited to hash position 144 reached by the leaf node's seed. Instead, computer 110 may determine to fill hash position 144 with matching reference array positions that lack one or both of the expanded records or interval records in other instances. For example, in some implementations, if the seed expansion table 132 for a particular seed identifies only intervals of matching reference array positions smaller than a threshold number of matching reference array positions, computer 110 may fill hash position 144 reached by a particular seed that has matching reference array positions that lack one or both of the expanded records or interval records.
[0083] Other types of information can be stored at hash position 144 of the hash table 140. For example, computer 110 may receive instructions to insert one or more “stop” records at hash position 144 of the hash table 140. Such “stop” hash records may result in a particular hash position 140 that stores an interval record or a set of one or more matching reference positions in order to return either (i) an interval record or (ii) a set of one or more matching reference positions that do not involve further expansion of the seed used to reach the hash position. In other implementations, computer 110 may receive instructions to insert a “stop” record at a hash position that already contains an expansion record. In such implementations, when the CPU, GPU, or programmable circuit 162 encounters a “stop” record, the CPU, GPU, or programmable circuit 162 can conditionally determine whether to (i) discard the decompression record and return (i) a set of interval records or (ii) a set of one or more matching reference locations that match the seed used to reach the hash location having the “stop” record, or (ii) perform seed decompression as described by the decompression record. In some implementations, the conditional determination can be based on one or more factors, such as (i) an interval record or (ii) the number of matching reference arrays identified by a set of one or more matching reference array locations. Thus, the fixed maximum mismatch problem can be avoided without rebuilding hash tables such as hash table 140 by using insertions as a design tool to insert one or more “stop” records into specific hash locations in response to each input seed.
[0084] Computer 110 can iteratively continue to fill hash positions 144 for each of the remaining nodes in the seed-extended tree 120, such as nodes 124 and 126. Since nodes 124 and 126 are leaf nodes like node 125, entries for each of these leaf nodes can be filled with the method described above for node 125.
[0085] In addition, the computer 110 can continue to apply the process described above to each seed of the reference array 114, iteratively in the embodiment of Figure 1, by referring to seed "GTTTA" 114-1. For example, once seed "GTTTA" 114-1 has been processed as described above, the computer 110 can advance the seed access window to the next subsequent seed in the reference array, access the seed, and then iteratively perform the process described above for each of the n seeds of the reference array, by referring to seed "GTTTA" 114-1. These processes may include obtaining the seed identified by the seed access window, determining whether the seed has more than a predetermined number of matching reference array positions, generating a seed extension tree if there are more than a predetermined number of matching reference array positions, and then filling the hash table 144 with the seeds and intervals identified by the nodes of the seed extension tree. In some implementations, the computer 110 can also iteratively perform the same process described above for the inverse complement for each of the n seeds of the reference array 114, by referring to seed "GTTTA" 114-1. Culturing these iterative processes for each reference seed and each reverse complement can yield a hash table 140 having x index entries and y hash positions, where x and y are 100 million or even 1 billion, respectively, for a specific reference sequence such as the human genome.
[0086] In some implementations, flexible runtime seed decomposition can be performed by having a computer, such as computer 110, use the hash table 140 in software to execute hash queries against the hash table 140, so that when executed, one or more CPUs, GPUs, or combinations thereof execute software instructions that cause one or more CPUs, GPUs, or combinations thereof to execute the processes described with respect to Figures 3 and 4. In other implementations, computer 110 can generate a hash table installation package that includes software instructions for installing the hash table 140 and a set of seed decomposition tables 132A on another computer. For example, the hash table installation package may include software instructions that, when executed, perform the operations described by process 200 in Figure 2. Computer 110 can provide the hash table installation package containing the software instructions to another computer. The other computer can receive the hash table installation package and install the hash table 140 and the set of seed decomposition tables 132A. Next, other computers can perform runtime-flexible seed expansion by using one or more CPUs, GPUs, or a combination thereof to execute software queries against hash table 140, causing one or more CPUs, GPUs, or a combination thereof to execute software instructions that, when executed, cause one or more CPUs, GPUs, or a combination thereof to run the processes described with respect to Figures 3 and 4.
[0087] However, in some implementations, the computer 110 can generate a hash table installation package 146 containing hardware programming language instructions that allow a programmable circuit 162 to be configured to implement a mapping and aligning unit 170 to a hardware digital logic circuit. The hardware programming language instructions can be in the form of a file, such as a binary bitstream file. The binary bitstream file can be generated before being included in the hash table installation package 146 by compiling hardware programming language code, such as VHDL or Verilog, that describes the circuit mechanism to be implemented by the programmable circuit 162. Once the hardware programming language instructions in the hash table installation package are processed by the programmable circuit 162, the programmable logic circuit can be programmed to implement flexible seed decomposition by performing hash queries against the hash table 140 in hardware using the process described with respect to Figures 3 and 4. The hash table installation package 146 may also include a set of seed decomposition tables 132A and instructions for installing the set of seed decomposition tables 132A into memory 180 accessible to the programmable circuit 162. The hash table installation package 146 may also include a hash table 140 and instructions for installing the hash table 140 into memory 180 accessible by the programmable circuit 162. The programmable circuit 160 can be programmed to use the hash table 140 as part of a mapping / aligning unit 170 to perform a mapping to a short seed reference array, as will be discussed in more detail herein with respect to Figure 3.Computer 110 can provide a hash table installation package to device 160, such as a desktop computer, laptop computer, tablet computer, smartphone, cloud-based server, sequencer, or other device that houses a programmable circuit 160 using one or more networks, one or more buses, direct connections such as USB cables, USB-C cables, or any combination thereof. Device 160 can receive the hash table installation package and program the programmable circuit 162 to implement mapping and aligning units 170 within the hardware logic gates of the programmable circuit 162 using the hardware programming language instructions of the hash table installation package.
[0088] Therefore, each hash table installation package 146 can be used to manage the installation, use, and even removal of the hash table 140 and seed decompression tables in a variety of different ways. For example, in some implementations, the hash table 140 and the set 132A of seed decompression tables can each be stored as files on a hard disk or other storage medium, and then each can be loaded into common memory such as DRAM containing one or more components or modules for implementing runtime-flexible seed decompression, as described with reference to the processes described herein with reference to Figures 3 and 4, before runtime access. However, in other implementations, the hash table 140 or set 132A of seed decompression tables can each be stored together or separately as one or more distinct contiguous portions within a memory device, or as non-contiguous portions within a memory device. Similarly, insofar as there are any pathways and methods for the runtime mapping and aligning unit 170 to access selected portions of both the hash table 140 and the seed decompression table set 132A during or outside of runtime mapping, the hash table 140 or set 132A of the seed decompression table can be compressed or uncompressed, stored on a common or separate storage medium and / or memory, cached or uncached. In yet another implementation, the hash table 140 can be fully implemented within the hardware logic circuitry of the programmable circuitry 162, and the seed decompression table set 132A can be stored in memory 180 accessible by the programmable logic circuitry 162, such as a DRAM memory unit.
[0089] In some implementations, computer 110 can also generate an installation package that includes a hash table and seed decompression builder as described herein. Computer 110 can provide the installation package to another computer over a network. The installation package can be used to install the hash table and seed decompression builder on another or a different computer, so that a party receiving and installing the hash table and seed decompression builder can construct its own hash table and seed decompression table from its own selected array of references, in a configuration of its own choosing. Thus, a recipient of the hash table and seed decompression builder installation package can construct its own hash table from its own selected references at any point in time, store that hash table on disk, load that hash table into memory 180 accessible by programmable circuitry 162, and perform mapping and aligning using programmable circuitry 162.
[0090] Figure 2 is a flowchart of process 200 for generating a hash table index that facilitates flexible seed extension for hash table genome mapping. Generally, process 200 involves a computer system obtaining a specific seed of nucleotides from a reference sequence, wherein the specific seed represents a sequence of nucleotides having a nucleotide length of K nucleotides (210); the computer system determining that the specific seed matches more than a predetermined number of reference sequence positions (220); and, based on the determination that the specific seed matches more than a predetermined number of reference sequence positions, the computer system generating a seed extension tree having multiple nodes, where each node of the multiple nodes is (i) an extension of the specific seed, and K * An elongated seed having a nucleotide length of K *However, a hash table can be generated by (i) generating (230) corresponding to an elongated seed which is one or more nucleotides greater than K, and (ii) a plurality of positions in a seed elongation table which contain data describing reference sequence positions that match the elongated seed, and for each node of a plurality of nodes, a computer system stores interval information in a hash table position corresponding to the index key of the elongated seed, wherein the interval information refers to a plurality of positions in a seed elongation table which contain data describing reference sequence positions that match the elongated seed associated with the node, and storing (240). Process 200 is described in more detail below, assuming it is performed by a computer system such as computer 110.
[0091] More specifically, the computer system can initiate the execution of process 200 by obtaining a specific seed of nucleotides from a reference sequence, where the specific seed represents a sequence of nucleotides having a nucleotide length of K nucleotides (210). In some implementations, obtaining a specific seed may involve the computer system determining the location of a seed access window within the reference sequence. The computer system can then obtain a subset of the reference sequence identified by the seed access window. The computer system may include one or more computers.
[0092] The computer system can continue the execution of process 200 (220) by determining whether a particular seed matches more than a predetermined number of reference array positions by the computer system. If the computer system determines that a particular seed does not match more than a predetermined number of reference array positions, the computer system can determine not to generate a seed extension tree for the particular seed. Instead, the computer system can obtain data describing each of the reference array positions that match the second seed. Next, the computer system can store the data describing the reference array positions that match the particular seed at a second position in the hash table corresponding to the index key of the particular seed.
[0093] Instead, if the computer system determines that a particular seed matches more than a predetermined number of reference array positions, the computer system can generate a seed extension tree having a plurality of nodes (230). Each node of the plurality of nodes can include data representing (i) an extended seed that is an extension of the particular seed and has a nucleotide length of K, where K is one or more nucleotides greater than K, and (ii) a plurality of positions in the seed extension table that include data describing the reference array positions that match the extended seed. In some implementations, the plurality of positions can include consecutive intervals in the extension table of the reference array positions that match the extended seed associated with the node. * of the extended seed, where K * is one or more nucleotides greater than K, and (ii) a plurality of positions in the seed extension table that include data describing the reference array positions that match the extended seed. In some implementations, the plurality of positions can include consecutive intervals in the extension table of the reference array positions that match the extended seed associated with the node.
[0094] The computer system can continue executing process 200 by storing interval information at the hash location of the hash table for each node of the seed extension tree. In some implementations, the computer system can generate a hash table by storing interval information at the hash location of the hash table corresponding to the index key of the extension seed for each node of the seed extension tree (240). The interval information may include references to multiple seed extension locations containing data describing reference array locations that match the extension seed associated with the node. In some implementations, the multiple seed extension table locations described by the interval information may include consecutive intervals of locations in the seed extension table containing data describing reference array locations that match the extension seed. Flexible runtime seed growth using hashtable genome mapping
[0095] Figure 3 is a context diagram of a runtime system 300 for performing runtime flexible seed expansion for hash table genome mapping. The runtime system 300 includes a programmable logic circuit 162, a mapping and aligning unit 170, a hash table 140, memory 18, and multiple seed expansion tables, such as a seed expansion table 132 stored in memory 180. The embodiment in Figure 3 describes a mapping and aligning unit 170 and hash table 140 implemented in hardware using the hardware logic circuit of the programmable logic unit 162, but the disclosure is not limited thereto. Alternatively, the mapping and aligning unit 170 may be a software application implemented using software instructions executed by one or more CPUs, GPUs, or a combination thereof that access the hash table 140 stored in the memory unit.
[0096] The execution of runtime-flexible seed expansion for hashtable genome mapping by System 300 can be initiated by the mapping and aligning unit 170 accessing the current read 305. The current read 305 can be generated by a nucleic acid sequencer that has performed a primary analysis of a biological sample. Primary analysis may include the nucleic acid sequencer receiving a biological sample such as a blood sample, tissue sample, or sputum, and generating output data such as one or more reads 305 representing the order of nucleotides in the nucleic acid sequence in the received biological sample. In some implementations, the biological sample may include a DNA sample, and the nucleic acid sequencer may include a DNA sequencer. In such implementations, the sequenced nucleotide order in the read 305 generated by the nucleic acid sequencer may include one or more of guanine (G), cytosine (C), adenine (A), and thymine (T) in any combination. In other implementations, the nucleic acid sequencer may include an RNA sequencer, and the biological sample may include an RNA sample. In such implementations, the sequenced nucleotide order in a read generated by a nucleic acid sequencer can include one or more of G, C, A, and uracil (U) in any combination. Therefore, although the example in Figure 3 describes the processing of a read consisting of G, C, A, and T generated by a DNA sequencer based on a DNA sample, the disclosure is not limited thereto. Alternatively, other implementations can process a read consisting of C, G, A, and U generated by an RNA sequencer based on an RNA sample.
[0097] In general, the mapping and aligning unit 170 can be configured to be agnostic to the types of reads that the mapping and aligning unit 170 receives, maps, and aligns. For example, in some implementations, the same binary code can be used to represent "T" and "U". Reads received by the mapping and aligning unit 170 may include DNA, cDNA, and / or RNA, and the reference may be DNA, cDNA, and / or RNA. In such implementations, read bases T and / or U may share a single binary code so that read T and / or U match the reference T and / or U.
[0098] In some implementations, nucleic acid sequencers can include next-generation sequencers (NGS) configured to generate sequence reads, such as read 305, for a given sample, using methods that achieve ultra-high throughput, scalability, and speed through the use of massively parallel sequencing techniques. NGS enables rapid sequencing of entire genomes, zooming into deeply sequenced target regions, or utilizing RNA sequencing (RNA-Seq) to discover novel RNA variants and splice sites, or the ability to analyze gene expression, epigenetic factors such as genome-wide DNA methylation and DNA-protein interactions, sequence cancer samples for studying rare variants and tumor subclones, and quantify mRNA for studying microbial diversity in humans or the environment.
[0099] Sequence reads, such as read 305, generated by a nucleic acid sequencer can be accessed and processed by a secondary analysis unit, such as a mapping and aligning unit 170. In some implementations, the secondary analysis unit, such as the mapping and aligning unit 170, can be implemented in hardware, such as digital logic circuits, using programmable circuits 162, such as a field programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). In other implementations, the secondary analysis unit, such as the mapping and aligning unit 170, can be implemented using one or more CPUs, GPUs, or a combination thereof, to implement the functionality of the mapping and aligning unit 170. The hash table 140 can be implemented in the hardware logic circuits of the programmable circuit 162, in some implementations, such as when the mapping and aligning unit 170 is implemented using the programmable circuit 162, but this disclosure is not limited thereto. Alternatively, the hash table 140 can be stored in a memory device and accessed when needed by (i) a CPU, GPU, or a combination thereof that executes software instructions to realize the functionality of the mapping and aligning unit 170, or (ii) the mapping and aligning unit 170 implemented with hardware digital logic circuits.
[0100] In some implementations, the programmable circuit 162 can be integrated with the nucleic acid sequencer that generated the reads 305. In such implementations, for example, the programmable circuit 162 can be housed in an expansion card, such as a Peripheral Component Interconnect (PCI) expansion card, and installed in the nucleic acid sequencer. In other implementations, for example, each of the programmable circuits 162 can be part of a separate computer that is separate from the nucleic acid sequencer and directly connected to the nucleic acid sequencer using an Ethernet cable, USB cable, USB-C cable, etc. In yet another implementation, for example, the programmable circuit 162 can be integrated into a cloud-based server that is remotely accessible by the nucleic acid sequencer that generated the reads 305 using one or more wired or wireless networks, such as a local area network (LAN), wide area network (WAN), cellular network, internet, or a combination thereof.
[0101] The mapping and aligning unit 170 can receive a first hash query 310 containing an initial seed "GTTTA" 310a. In some implementations, the hash query may simply consist of a seed of sample reads, such as the current read 305, which is used as input to the hash table 140. In other implementations, additional data, metadata, etc., may be added to the sample read seed to convert the sample into a format that can be used to search the hash table 140.
[0102] In the example shown in Figure 3, the initial seed "GTTTA" 310a included in the hash query 310 is identified using the seed access window 305a. [Table 1] It is obtained from the first part of 305. The mapping and aligning unit 170 can perform a hash query 310 using the hash table 140 to map a short initial seed 310a to hash position 144 using the hash function 143. In the embodiment of Figure 3, the execution of the hash query 310 can determine that the seed "GTTTA" 310a matches the hash index key "GTTTA" 142-2 which is mapped to hash position 144-y by the hash function 143.
[0103] The mapping and aligning unit 170 can use the hash table 140 to generate a response 310b to the hash query 310. The response 310b may include the contents of the hash position 144-y reached by the seed 310a of the hash query 310. The mapping and aligning unit 170 evaluates the response 310b to the hash query 310 and determines whether the contents include a set of matching reference array positions, an extended record, an interval record, or a combination thereof. If the response 310b includes only a set of matching reference array positions without any extended or interval records, the mapping and aligning unit 170 can store the set of matching reference array positions in the seed match set 352 along with metadata that associates the matching reference positions with the seed of the received query. Alternatively, if the mapping and aligning unit 170 determines that the response contains an interval record, an extension record, or both, the mapping and aligning unit 170 must determine in 320 whether to use the matching reference seed identified by the interval record or to proceed with the extension of the query seed.
[0104] In the embodiment shown in Figure 3, the evaluation of response 310b indicates that (i) the response does not contain a set of matching reference array locations, and (ii) the response 310b contains an extended record 153a and an interval record 153b. Based on response 310b, the mapping and aligning unit 170 can determine in 320 whether the matching reference locations identified by the interval record 153b are to be accessed. In some implementations, the mapping and aligning unit 170 is configured not to access matching reference array locations identified by interval records such as the interval record 153b if the response, such as 310b to the hash query 310, contains an extended record 153a.
[0105] However, in other implementations, the mapping and aligning unit 170 may be configured to evaluate the number of matching reference sequence locations identified by the interval record 153b before extending the seed 310a using the extension record 153b. In such an implementation, if the number of matching reference sequence locations falls below a predetermined threshold, the mapping and aligning unit 170 may output the matching reference sequence locations in interval A identified by the interval record in 310d. Outputting matching reference sequence locations may include the mapping and aligning unit 170 accessing the matching reference sequence locations stored in interval A of the seed extension table 132 in memory 180 and storing the accessed matching reference sequence locations in the seed match set storage 352. Once the accessed matching reference sequence locations are stored in the seed match set 352, the process described in Figure 3 can be terminated without further extension of the seed 310a. The seed access window 305a can then be forward-aligned by one or more nucleotides along the current read 305. Once the seed access window 305a is adjusted, the process described in relation to Figure 3 restarts and can continue iteratively until the entirety of the current read 305 is queried. Alternatively, in this alternative implementation, if it is determined that the number of matching reference array positions is not below a predetermined threshold, the seed 310a can be expanded using the expanded record 152a.
[0106] Returning to the embodiment in Figure 3, the mapping and aligning unit 170 does not apply the aforementioned threshold to the match identified by the interval record 153b. Instead, the mapping and aligning unit 170 determines in 320 that it will not use the matching reference array position identified by the interval record 153b because output 310b contains the extension record 153a. Therefore, in this scenario, the mapping and aligning unit 170 determines that it will extend the seed 310a.
[0107] Before proceeding to execute subsequent queries based on the expanded seed, the mapping and aligning unit can store information describing interval A 310c in the “best interval” storage 350. Interval A can be considered the “best interval” for matching reference array locations in the seed expansion table 132 for seed 310a, since no other intervals have been identified and evaluated at this point in the process. However, in subsequent iterations of the process as described in Figure 3, each subsequent interval identified can be heuristically evaluated to determine whether the interval is better than existing intervals stored in the best interval storage for the initial seed 310a or the expanded seed of the initial seed 310a. By storing information describing interval A 310c in the best interval storage 340, matching reference array locations for interval A, which are regressed in the event expansion of the initial seed 310a, may result in mapping failures such as unread mapping problems or high-accuracy mapping problems. The information describing interval A 310c may include data describing the start and end positions of a contiguous list of reference sequence positions that match the initial seed. In some implementations, the information describing interval A 310c may also include data identifying the seed to which the reference sequence positions identified by interval A match.
[0108] Flexible seed extension by the mapping and aligning unit 170 allows the mapping and aligning unit 170 to continue generating a first extended seed 312a, which is an extension of the initial seed 310a, using the extension record 153a. In the embodiment of Figure 3, the extension record 153a may contain one or more instructions that instruct the mapping and aligning unit 170 to symmetrically extend the initial seed 310a by two bases or nucleotides. In the embodiment of Figure 3, the extended seed "CGTTTAG" 312a of read 305 is obtained by symmetrically extending the initial seed "GTTTA" 310a by two bases or nucleotides. In some implementations, the additional nucleotides "C" and "G" used to extend the initial seed 310a can be obtained from the next nucleotides of read 305, on either side of the initial seed 310a, identified by the seed access window 305a.
[0109] In other implementations, such as when the seed access window is at the beginning of read 305, additional seeds exist on each side of the seed access window to facilitate this seed expansion, although the expansion may cause the initial seed to expand beyond the read boundary 305. In such implementations, seed expansion may fail, and the process of mapping the initial seed to matching reference sequence locations using the hash table 140 may end without adding any matching reference sequence locations to the seed matching set 352 for a query cycle started from the initial seed. However, in such implementations, the seed access window 305a can be adjusted by only one or more nucleotides forward along read 305, and the next seed for read 305 identified by the adjusted seed access window can be obtained to be used as the initial seed for hash queries for a new query cycle using the hash table 140. A new query cycle can be executed for the next seed, and each seed until each of them has been processed thereafter can be used to update the best interval storage 350, store one or more sets of matching reference sequence locations in the seed match set storage 352, or both, and this can be evaluated to identify the best set of matching reference sequence locations for reads 305 as described with reference to Figure 5, regardless of failed seed expansion, and thus solve the problem of unmapped reads that may exist in conventional methods.
[0110] Similar seed extension failures may occur for the same reasons as the seed access window 305a advances toward both ends of the read 305. The disclosure similarly resolves these seed extension failures by evaluating the best interval storage 250, seed match set 353, or both, from previous iterations of hash queries for the read, as described with reference to Figure 5.
[0111] Returning to the embodiment in Figure 3, the mapping and aligning unit 170 can generate a subsequent hash query 312 containing the first expanded seed 312a. The mapping and aligning unit 170 can retrieve the first expanded seed 312a from the hash query 312 and, using the hash table, map the first expanded short seed 312a to hash position 144 using the hash function 143. In some implementations, generating a hash query 312 with the first expanded seed 312a may include providing the first expanded seed 312a to the mapping and aligning unit 170 as input for seed mapping using the hash table 140, without generating a query. In the embodiment in Figure 3, the execution of the hash query 312 determines that the seed "CGTTTAG" 312a matches the hash index keys "CGTTTAG" 142-x, which are mapped to hash positions 144-3 by the hash function 143.
[0112] The mapping and aligning unit 170 can use the hash table 140 to generate a response 312b to the hash query 312. The response 312b may include the contents of the hash position 144-3 reached by the seed 312a of the hash query 312. The mapping and aligning unit 170 can evaluate the response 312b to the hash query 312 and determine that the response 312b (i) does not contain a set of matching reference array positions, and (ii) contains an extended record 152a and an interval record 152b. Based on the response 312b, the mapping and aligning unit 170 can determine in 330 whether the matching reference positions identified by the interval record 152b are accessed. In some implementations, the mapping and aligning unit 170 is configured not to access matching reference array positions identified by interval records such as the interval record 152b if the response, such as 312b to the hash query 312, contains an extended record 152a.
[0113] However, in other implementations, the mapping and aligning unit 170 may be configured to evaluate the number of matching reference sequence locations identified by the interval record 152b before expanding the seed 312a using the expansion record 152b. In such an implementation, if the number of matching reference sequence locations identified by the interval record 152b falls below a predetermined threshold, the mapping and aligning unit 170 may output the matching reference sequence locations in interval B identified by the interval record 152b in 312d. Outputting matching reference sequence locations may include the mapping and aligning unit 170 accessing the matching reference sequence locations stored in interval B of the seed expansion table 132 in memory 180, and storing the accessed matching reference sequence locations in the seed match set storage 352. Once the accessed matching reference sequence locations are stored in the seed match set storage 352, the process described in Figure 3 can be terminated without further expansion of the seed 312a. Next, the seed access window 305a can be adjusted by one or more nucleotides along the current read 305. Once the seed access window 305a is adjusted, the process described in relation to Figure 3 restarts and can continue iteratively until the entire current read 305 is queried. Alternatively, in this alternative implementation, if it is determined that the number of matching reference sequence positions is not below a predetermined threshold, the seed 312a can be extended using the extension record 152a.
[0114] Returning to the embodiment in Figure 3, the mapping and aligning unit 170 does not apply the aforementioned threshold to the match identified by the interval record 152b. Instead, the mapping and aligning unit 170 determines in 330 that it will not use the matching reference array position identified by the interval record 152b because the output 312b contains the extension record 152a. Therefore, the mapping and aligning unit 170 determines that it will extend the seed 312a.
[0115] Before proceeding to execute subsequent queries based on the expanded seed, the mapping and aligning unit may determine whether to store the information describing interval B 312c as the “best interval” in the best interval storage 350. Determining whether to store the information describing interval B 312c as the “best interval” involves heuristically determining whether interval B is a better interval than the interval currently stored in the best interval storage 352 for previous iterations of the first expanded seed, which in this embodiment is interval A. In one implementation, the best interval from among several intervals can be determined by evaluating the number of target hits returned for each interval. In such an implementation, the “best” interval can be selected according to a multipart rule. For example, the mapping and aligning unit 170 may assign a first priority to intervals that contain at least a predetermined number of matching reference array positions, which may be referred to as a threshold such as intvl-target-hits(32) match. However, if each interval has fewer matches than intvl-target-hits(32), the interval with the most matches is stored as the best interval. Furthermore, the mapping and aligning unit 170 may assign a second priority to intervals associated with longer extended seeds because such intervals are preferred. Also, if the mapping and aligning unit 170 determines that at least one interval has at least intvl-target-hits(32) matches, the best interval is selected from all intervals that satisfy at least intvl-target-hits(32) matches, based on the interval associated with the longest extended seed. The embodiments herein refer to a threshold intvl-target-hits(32) with 32 matches, but the disclosure is not limited thereto. Instead, the threshold intvl-target-hits() can be sent to any number of matching reference array positions to implement this multipart heuristic rule.
[0116] In the embodiment shown in Figure 3, interval A, previously stored as the best interval in the best interval storage 350, identifies six matching reference sequence positions 132-1 to 132-6, and interval B identifies three matching reference sequence positions 132-4 to 132-6. Applying an exemplary intvl-target-hit(10) threshold of 10 matches, the mapping and aligning unit 170 can apply a multipart heuristic rule to determine that the interval satisfies the intvl-target-hit(10) threshold. Therefore, according to the multipart heuristic rule, the mapping and aligning unit 170 can select interval A as the best interval because it has the most matches between interval A and interval B, i.e., six matches. Based on the application of this exemplary multipart heuristic rule, the information describing interval B 321c can be discarded, and interval A remains stored as the best interval. However, under other embodiments that apply different heuristic rules that do not necessarily need to be multipart heuristic rules, it is possible that interval B is selected as the best interval and stored in the best interval storage 350 to replace interval A. Such results can ultimately be left to specific design configurations, such as setting the intvl-target-hits() threshold and designing one or more heuristic rules.
[0117] In the embodiment shown in Figure 3, the heuristic rules described above are used to compare interval A previously stored in the best interval storage 350 with interval B included in the response 312b to query 312. However, the disclosure is not limited to this. For example, in some implementations, the response to a hash query may include multiple interval records stored at the hash location 144 reached by a particular seed of the hash query. In such implementations, the mapping and aligning unit 170 can apply the heuristic rules described above to determine which of the multiple interval records should be accessed. Similarly, the mapping and aligning unit 170 can also use such heuristic rules to determine the best interval from each of the interval records returned in the query response to be stored in the best interval storage 450. As another example, the mapping and aligning unit 170 can also use such heuristic rules to determine the best interval to store in the best interval storage 450 from among each interval record returned in the query response and another interval previously stored in the best interval storage 350 for previous iterations of the seed used for queries that return multiple intervals.
[0118] In some implementations, system 300 can facilitate the storage of two or more best intervals in the best interval storage 350. For example, in some implementations, up to two best intervals may be tracked. In some implementations, up to N best intervals may be tracked. In such implementations, when N > 1 best intervals are stored, the criterion for determining which intervals are retained may involve evaluating the relationships between interval candidates, the extended seeds associated with the interval candidates, or both, such that the N best intervals are associated with extended seeds that do not overlap with each other in the read.
[0119] Flexible seed elongation by the mapping and aligning unit 170 allows the mapping and aligning unit 170 to continue generating a second elongated seed 314a, which is an elongation of the first elongated seed 312a, using the elongation record 152a. In the embodiment of Figure 3, the elongation record 152a may include one or more instructions that instruct the mapping and aligning unit 170 to symmetrically elongate the first elongated seed 312a by two bases or nucleotides. In the embodiment of Figure 3, symmetrically elongating the first elongated seed "CGTTTAG" 312a by two bases or nucleotides yields the second elongated seed "ACGTTTAGC" 314a of lead 305. In some implementations, the additional nucleotides "A" and "C" used to extend the first extended seed 312a can be obtained from the nucleotides following read 305, on either side of the first extended seed "CGTTTAG" 312a.
[0120] Returning to the embodiment in Figure 3, the mapping and aligning unit 170 can generate a subsequent hash query 314 containing the second extended seed 314a. The mapping and aligning unit 170 can retrieve the second extended seed 314a from the hash query 314 and use the hash table to map the second extended short seed 314a to hash position 144 using the hash function 143. In some implementations, generating a hash query 314 with the second extended seed 314a may include providing the second extended seed 314a to the mapping and aligning unit 170 as input for seed mapping using the hash table 140, without generating a query. In the embodiment in Figure 3, the execution of the hash query 314 determines that the seed "ACGTTTAGC" 314a matches the hash index key "ACGTTTAGC" 142-1, which is mapped to hash position 144-2 by the hash function 143.
[0121] The mapping and aligning unit 170 can use the hash table 140 to generate a response 314b to the hash query 314. The response 314b may include the contents of the hash position 144-2 reached by the second expanded seed 314a of the hash query 314. The mapping and aligning unit 170 evaluates the response 314b to the hash query 314 and determines that the response 314b (i) contains a set of matching reference array positions 155, (ii) does not contain expanded records, and (iii) does not contain interval records. Based on the response 314b, the mapping and aligning unit 170 can determine that the matching reference array positions 155 should be stored in the seed match set storage 352.
[0122] Since response 314b does not contain an extension record, the runtime-flexible seed extension process for the seed "GTTTA" 310a of read 305 is terminated. The seed access window 305a can continue to advance by one or more nucleotides along read 305 until each of the processes described with respect to Figure 3 has been performed for each seed of read 305. This process is also described with respect to the flowchart in Figure 4. As described above, if the seed access window 305a extends toward the end of read 305, attempts to extend the seed input to the mapping and aligning unit 170 may fail, potentially resulting in unmapped read problems. However, this disclosure may use one or more intervals stored in best interval storage, one or more reads stored in seed match set 352, or a combination of both, to identify a set of matching reference sequence positions of read 305, as described at least with respect to Figure 5.
[0123] Figure 4 is a flowchart of process 400 for performing runtime flexible seed expansion for hash table genome mapping. Process 400 is described below as being performed by a computer system of one or more computers. One or more computers may include, for example, a mapping and aligning unit 170. For the purposes of this disclosure, one or more computers may include a CPU or GPU configured to acquire and execute software instructions to realize specific programmed functionality described by the software instructions. Alternatively, or in addition thereto, one or more computers may include programmable circuits configured such that the hardware digital logic circuits of the programmable circuits are configured to realize specific programmed functionality in hardware.
[0124] The computer system can initiate the execution of process 400 by querying hash table 405. The query may include a nucleotide seed. The nucleotide seed may include a subset of nucleotides obtained from reads. Reads may include a set of nucleotides generated by a nucleic acid sequencer based on a biological sample input to the nucleic acid sequencer. The biological sample may include, for example, a blood sample, a tissue sample, or sputum.
[0125] For example, a read generated by a nucleic acid sequencer based on a biological sample may contain a series of nucleotides such as "ACGTTTAGC". This example includes a 9-nucleotide read. However, the use of a 9-nucleotide read is for illustrative purposes only. Instead of being limited to 9 nucleotides, reads described herein can be any nucleotide length containing 5, 10, 12, 15, 18, 21, 25, 35, 50, 100, 150, 1,000, 1 million, or many more bases or nucleotides. The query seed may contain a portion of the read such as "GTTTA". The seed obtained from the read for use in the first hash query during the first iteration of process 400 may be of any length K, where K is less than the number of bases or nucleotides in the read. In some implementations, K can be substantially smaller than the read nucleotide length, such as 1 / 100, 1 / 10, or 1 / 5 of the read length.
[0126] A computer system can execute a query containing a seed by retrieving the seed and comparing the seed to a hash key in a hash table. The hash key may correspond to each reference sequence seed, the inverse complement of each reference sequence seed, each extended seed of the reference sequence, and the inverse complement of each extended seed of the reference sequence. The reference sequence may include a reference genome or a portion of a reference genome for a species such as a human or another animal. Once the computer system identifies a hash key that matches the query seed, it can use a hash function to map the hash key to one or more hash locations. In some aspects of this disclosure, one or more hash locations may store (i) extended records, (ii) interval records, or (iii) one or more reference sequence locations. The computer system can generate a response to the query that includes the contents of one or more hash locations reached by the query seed.
[0127] The computer system can continue the execution of process 400 by obtaining a response to the executed query (410) which includes information stored at one or more locations in the hash table where the query is determined to have been reached. The query is determined to have been reached at one or more locations in the hash table when the query seed is determined to match a hash key mapped to one or more locations using a hash function.
[0128] The computer system may continue executing process 400 by determining (415) whether the response to the executed query contains (i) an extended record, (ii) an interval record, or (iii) one or more matching reference array locations. Determining (415) whether the computer system's determination of whether the response to the executed query contains (i) an extended record, (ii) an interval record, or (iii) one or more matching reference array locations may include parsing the received response and analyzing the parsed response data. Based on the parsed data, the computer system may determine whether the parsed data represents (i) an extended record, (ii) an interval record, or (iii) one or more matching reference array locations. Other implementations may include one or more data flags indicating whether the response to the executed query contains (i) an extended record, (ii) an interval record, or (iii) one or more matching reference array locations.
[0129] In some cases, the computer system may continue executing process 400 by determining in step 415 that the response does not contain an expanded record, an interval record, or one or more matching reference array locations. If the computer system determines that the response does not contain (i) an expanded record, (ii) an interval record, or (iii) one or more matching reference array locations, the process terminates in step 420 without adding any matching reference array locations to the seed match set for the query seed. For example, if the seed is an expanded seed and a seed expansion error exists, the response obtained to a query containing the seed does not need to contain (i) an expanded record, (ii) an interval record, or (iii) one or more matching reference array locations. Such a seed expansion error may occur, for example, when the computer system attempts to expand the seed beyond the end of the read from which the seed was obtained.
[0130] Alternatively, in another example, the computer system may continue executing process 400 by determining in step 415 that the response to the executed query includes (i) an extended record, (ii) an interval record, or (iii) both. In such an example, the computer system may continue executing process 400 by determining (430) whether the extended table is accessed to obtain one or more matching reference array locations in the extended table referenced by the interval record.
[0131] In some examples, the computer system can continue executing process 400 by determining that the seed expansion table is accessed to retrieve one or more matching reference array locations in the expansion table rereferenced by the interval record. For example, in some implementations, the computer system can be configured to access the seed expansion table to retrieve one or more matching reference array locations identified by the interval record if the number of matching reference array locations falls below a predetermined threshold. Alternatively, or in addition to this, the computer system can be configured to access the seed expansion table to retrieve one or more matching reference array locations identified by the interval record if the response to the executed query also includes a “stop” record stored at the hash location reached by the seed of the hash query. The “stop” record can preferentially instruct the computer system not to perform further seed expansion of the seed in the query and not to access one or more matching reference array locations identified by the interval record, for example, if the number of matching reference array locations falls below a predetermined threshold.
[0132] In such an example, where it is determined at step 430 that the seed expansion stable is accessed, the computer system can continue executing process 400 by accessing the seed expansion table and retrieving one or more reference array locations within the seed expansion table (450). The computer system can identify a particular set of one or more matching reference array locations to retrieve from the seed expansion table by using interval records. An interval record can contain information referencing multiple locations within the seed expansion table, containing data describing reference array locations that match the query's seed. In some implementations, the information referencing multiple locations can include a contiguous interval of reference array locations in the expansion table that match the query's expanded seed. Alternatively, in other implementations, the information referencing multiple locations can include a discontinuous interval of one or more reference array locations in the expansion table that match the query's seed.
[0133] In such an example, the computer system can retrieve one or more matching reference array locations from a seed expansion table identified using interval records. The retrieved one or more reference array locations can be added to a seed match set (455). In some implementations, adding one or more matching reference array locations to a seed match set may involve retrieving and storing data representing one or more matching reference array locations at a location on a memory device allocated for seed match set storage. In other implementations, adding one or more matching reference array locations to a seed match set may involve storing data such as pointers that reference one or more intervals in the seed expansion table that store one or more reference array locations. Thus, the seed match set can be a storage location that stores the identified and retrieved set of matching reference array locations. Alternatively, the seed match set may contain one or more storage locations that store references to one or more matching reference array locations. Once the computer system has added one or more matching reference array locations identified by interval records to the seed match, it can terminate this example of process 400 at 460.
[0134] In other examples, after the computer system has determined that the response contains at least (i) an expanded record, (ii) an interval record, or (iii) or both (415), the computer system may determine that the seed expanded table is not accessed to obtain one or more matching reference array locations (430). The computer system's determination that the seed expanded table is not accessed to obtain one or more matching reference array locations can be based on a variety of factors. For example, in some implementations, the computer system may determine that if the response returns an expanded record, it does not access the seed expanded table to obtain matching reference array locations identified by the interval record. Such a determination may be preferable because the expanded seed is likely to produce a set of matching reference array locations smaller than the set of matching reference array locations identified by the interval record.
[0135] As another example, in other implementations, a computer system may determine that it does not need to access the seed expansion table to retrieve matching reference array locations identified by interval records if it determines that the number of matching reference array locations exceeds a predetermined threshold number. Similarly, in such implementations, a computer system may determine that it does not need to access the seed expansion table when the number of matching reference array locations identified by intervals exceeds a matching threshold.
[0136] If the computer system determines in 430 that it does not access the seed extension table, it can continue executing process 400 by determining in 465 whether the retrieved response contains interval records and extension records. If the computer system determines in 465 that the retrieved response contains interval records and extension records, it can determine in 435 whether to store the interval records, or information describing the interval records included in the response to the executed query, as best interval candidates. During the first iteration of process 400 for a query with an initial seed that has not yet been extended, the computer system may determine to store the interval records, or information describing the interval records, as best interval candidates in the best interval storage of the memory device. Since such interval records are encountered during the initial iteration of process 400 for a query with an initial seed that has not yet been extended, there are no other interval records encountered in response to other queries for one or more subsequent extended seeds. Therefore, the first interval returned in response to a query with an initial seed that has not yet been extended must be the “best interval” because there are no other intervals yet identified for comparison.
[0137] However, for subsequent interactions by process 400 after a response has been received for a query with an expanded seed, the computer system may obtain a second interval record from the response to the query with the expanded seed. In such an example, the computer system may heuristically determine whether the second interval record should be used to replace a previously stored best interval candidate in the best interval storage. The determination of whether to retain the previously stored best interval candidate or to replace the best interval candidate with the second interval or information describing the interval can be made by applying one or more heuristic rules, as described with reference to the embodiment in Figure 3. In some implementations, the heuristic rules may include one or more multipart heuristic rules.
[0138] While some implementations of this disclosure may aim to iteratively evaluate each subsequently returned interval record against previously stored best interval candidates to determine a single best interval to be stored for the current read on which the query seed is based, this disclosure does not have to be limited to that. Alternatively, some implementations may store all intervals in interval storage and evaluate them later for use in complementing the seed match set.
[0139] The computer system can continue executing process 400 by generating an expanded seed (440). The expanded seed can be generated based on instructions contained in the expanded record returned in response to a query. For example, when the expanded record is executed by a computer such as a central processing unit (CPU) or graphics processing unit (GPU) or programmable circuit 162 that executes software instructions, it can cause the CPU, GPU, or programmable circuit to expand the seed used in a hash query that has reached a hash position that stores the expanded record by one or more nucleotides. In some implementations, the expanded record can be generated in such a way that it instructs the computer to expand the seed symmetrically on each end of the seed. For example, the expanded record can be generated in such a way that it instructs the computer such as a CPU, GPU, or programmable circuit 162 to expand the seed by two nucleotides, four nucleotides, six nucleotides, etc. In such implementations, symmetrical elongation of a seed can be achieved by elongating the seed by one nucleotide on each end, two nucleotides on each end, three nucleotides on each end, and so on. However, this disclosure should not be limited to symmetrical elongation of a seed. Instead, asymmetrical elongation of a seed is also conceived by this disclosure.
[0140] The computer system may continue executing process 400 by generating a hash query with the expanded seed at 445. The computer system then performs another iteration of process 400 at stage 405 by executing a query with the expanded query, and then continues executing process 400 until the process terminates at 427 or 460 by (a) adding one or more matching reference array locations to the seed match set, the process terminates at 475 after determining whether to store the interval record as a best interval candidate, or (c) the process terminates at stage 420 as a result of one or more errors, such as a seed expansion error, which results in a query that does not receive a response to the executed query, containing (i) an expanded record, (ii) an interval record, or (iii) one or more matching reference array locations.
[0141] Alternatively, if, in step 465, the computer system determines that the acquired response does not contain either an interval record or an extension record, the computer system may continue executing process 400 by determining whether the acquired response contains an extension record.
[0142] If the computer system determines that the response obtained contains an expanded record, the computer system may continue executing process 400 by generating an expanded seed in step 440, generating a hash query 445 containing the expanded seed, and then perform another iteration of process 400 by executing the query with the expanded query in step 405. The computer system may then continue executing process 400 until (a) the process terminates in 427, 420, 460, 475.
[0143] On the other hand, if the computer system determines that the acquired response does not contain an extension record, the computer system may continue executing process 400 by determining in step 470 whether to store the interval record or the information describing the interval record as a best interval candidate. The computer system may determine in step 470 whether to store the interval record as a best interval candidate using the same process described in step 435 for determining whether to store the interval record as a best interval candidate. Regardless of whether the computer system determines in step 470 to store the interval record as a best interval candidate, process 400 terminates in step 475.
[0144] At least one variation of process 400 can be implemented in which the computer system instead determines in step 470 whether the acquired response contains interval records. In such an example, logically, if the computer system determines that the acquired response contains interval records, the computer system can continue executing the process in step 470. Alternatively, if the computer system determines that the acquired response does not contain interval records, the process continues in step 440 by generating an extended seed. Other variations of the process flow of process 400 can be similarly implemented and may fall within the spirit and scope of this disclosure.
[0145] Figure 5 is a flowchart of process 500 for performing iterative runtime flexible seed extension for hashtable genome mapping for each seed of a read. Generally, process 500 may include obtaining a read generated by a nucleic acid sequencer (505), determining the location of a seed access window, determining that the seed access window identifies the seed of the read (510), generating a hash query containing the seed identified by the seed access window (515), executing the generated hash query until process 400 is completed and continuing the iterative execution of process 400, thereby initiating the execution of process 400 as described in Figure 4 at step 410 (520), and determining whether the read contains another seed (525), if it is determined that the read contains another seed (525), adjusting the seed access window to identify the other seed (530), executing step 515 to generate a hash query using the other seed (515).
[0146] Process 500 may continue executing the processing loop of stages 515, 520, 525, and 530 until, in stage 525, it is determined that the read obtained in stage 505 does not contain another seed to be mapped and aligned using process 400. In such an example, it may determine whether to use the best interval to complement the current set of seed matches for the read (535). If it is determined in stage 535 to use the best interval to complement the current set of seed matches, process 500 may continue by processing the best interval in stage 540 (540), complementing the current set of seed matches with one or more matching reference array positions obtained from the portion of the seed extension table identified using the best interval (545), and then determine in 550 whether there is another read ready to be mapped and aligned using process 500. If there is no other read ready to be mapped and aligned, process 500 terminates in stage 555. Alternatively, if there is another read ready for mapping and aligning using process 500, process 500 continues in step 505 by acquiring the other read ready for mapping and aligning. Process 500 can then continue iteratively until it is determined in step 550 that there is no other read ready for mapping and aligning using process 500.
[0147] Process 500 is described in more detail below as being performed by a computer system of one or more computers. One or more computers may include, for example, a mapping and aligning unit 170. For the purposes of this disclosure, one or more computers may include a CPU or GPU configured to acquire and execute software instructions to realize certain programmed functionality described by the software instructions. Alternatively, or in addition thereto, one or more computers may include a programmable circuit configured such that the hardware digital logic circuit of the programmable circuit is configured to realize certain programmed functionality in hardware.
[0148] The computer system can initiate the execution of process 500 by acquiring data (505) representing nucleic acid reads (also referred to herein as “reads”) generated by a nucleic acid sequencer. Reads can be received by the computer system from the nucleic acid sequencer as input after the reads have been generated by the nucleic acid sequencer. Alternatively, or in addition, the reads generated by the nucleic acid sequencer may be stored in a memory device accessible to the computer system. The computer system 500 can then acquire the stored reads(s) by accessing memory to retrieve one or more reads from the memory device. For example, a read may include a set of nucleotides such as “ACGTTTAGC”. This embodiment includes a read with nine nucleotides. However, the use of a read with nine nucleotides is for illustrative purposes only. Instead of being limited to nine nucleotides, the reads described herein can be any nucleotide length, including, but are not limited to, five bases or nucleotides, ten bases or nucleotides, twelve bases or nucleotides, fifteen bases or nucleotides, eighteen bases or nucleotides, twenty-one bases or nucleotides, twenty-five bases or nucleotides, thirty-five bases or nucleotides, fifty bases or nucleotides, one hundred bases or nucleotides, one fifty bases or nucleotides, one,000 bases or nucleotides, one million bases or nucleotides, or many more bases or nucleotides.
[0149] The computer system can continue executing process 500 by determining the location of the seed access window (510). The seed access window can be used to identify a seed of a nucleotide consisting of a subset of nucleotides from a read. An example of a seed is the set of consecutive nucleotides "GTTTA," which is the seed of the read "ACGTTTAGC." While the set of consecutive nucleotides "GTTTA" represents an example of a consecutive seed for the read "ACGTTTAGC," this disclosure is not limited to that. Instead, in some implementations, discontinuous seeds can be obtained and analyzed using the systems and processes described herein. For example, a discontinuous seed such as "G_T_A" can also be obtained from the read "ACGTTTAGC" and analyzed using the systems and methods described herein. In such implementations, the systems and methods of this disclosure may handle skipped positions represented by an underscore "_" as wildcards that can match any base or nucleotide.
[0150] The seed access window can be configured to have any base or nucleotide length shorter than the read length. The seed access window can be configured to move forward or backward along a continuous read to identify the seed of the read for processing. If a discontinuous seed is used, the seed access window can be configured accordingly. For example, the seed access window can be configured to identify a discontinuous seed of nine nucleotides with wildcards inserted at nucleotide positions 6 and 8.
[0151] The computer system can continue the execution of process 500 by generating a hash query (515) that includes a seed identified by the seed access window. In some implementations, the hash query may simply consist of a seed "GTTTA" of a read, such as "ACGTTTAGC". In other implementations, additional data, metadata, etc., may be added to the sample seed to convert the seed into a format that can be used to search the hash table.
[0152] The computer system can continue the execution of process 500 (520) by executing process 400 as shown in Figure 4, thereby mapping and aligning the generated query seed to one or more reference array locations. The computer system starts the execution of process 400 in step 410 by executing the hash query generated in step 515. The computer system can then continue the iterative execution of process 400 until it terminates in steps 420, 427, 460, or 475, while process 400 may optionally add reference array locations that match the seed match set in steps 425 or 455.
[0153] After process 400 has finished, the computer system may determine in step 505 whether the read obtained in step 505 contains another seed (525). In some implementations, determining whether a read contains another seed includes considering all possible seed access window locations in the read. Alternatively, determining whether a read contains another seed may include considering only a predetermined subset of all possible seed access window locations, such as only even seed access window locations or only odd seed access window locations. Thus, this disclosure does not require that each seed of a read be evaluated using process 500. Instead, in some implementations, the computer system may determine in step 505 whether another seed exists for a predetermined subset of the seeds of the read being evaluated using process 500.
[0154] If the computer system determines in step 525 that the read contains another seed, the computer system may adjust the seed access window to identify the other seed (530), and the computer system may perform step 515 to generate a hash query using the other seed identified by the adjusted seed access window (515). Adjusting the seed access window may include, for example, moving the seed access window forward along the read obtained in step 505 by the position of one or more bases or nucleotides. The computer system may continue executing the processing loop of steps 515, 520, 525 and 530 until it determines in step 525 that the read obtained in step 505 does not contain another seed to be mapped and aligned using process 400.
[0155] If the computer system determines that the read obtained in step 505 does not contain another seed to be mapped and aligned, the computer system may determine whether to use the best interval to complement the current set of seed matches for the read (535). In some examples, if the computer system determines that the set of seed matches should not be complemented, the computer system may determine whether there is another read ready for mapping and aligning using process 500 (550). In such examples, if the computing system determines that there is another read ready for mapping and aligning, the computer system may continue executing process 500 in step 505 by obtaining another read ready for mapping and aligning. The computer system may then iteratively execute process 500 until it is determined in step 550 that there is no other read ready for mapping and aligning using process 500.
[0156] Alternatively, in another example, a computer system may determine that the current seed match set for a read should be completed using one or more matching reference sequence locations identified by the best interval. The computer system may determine that the current seed match set should be completed using one or more matching reference sequence locations identified by the best interval by applying one or more heuristic rules to (i) the seed length of the extended seed from which the query produced the best interval, (ii) the seed length of one or more matching reference sequence locations, (iii) the number of seed chains generated, or a combination thereof. In some implementations, the heuristic rules may specify one or more independent trigger conditions that, when triggered, cause the computer system to process the best interval.
[0157] For example, a first independent trigger condition that can trigger the computer system to process the best spacing is determining whether the seed length of the elongated seed that produced the best spacing was greater than or equal to intvl-seed-length(60) bases or nucleotides. In this embodiment, the threshold intvl-seed-length(60) is a predetermined threshold that the computer system can use to evaluate the length of the elongated seed that produces the best spacing. In this embodiment, the seed length of the elongated seed that produced the best spacing that the computer system checks is 60 nucleotides. However, this disclosure does not have to be limited in that way. Instead, the threshold intvl-seed-length() can be set to any nucleotide length. If the computer system determines that the intvl-seed-length() threshold is not met, the computer system can evaluate other trigger conditions to determine whether the best spacing is processed.
[0158] As another example, a second independent trigger condition that can trigger the best-spacing computer system's processing is determining whether the seed length of the elongated seed from which the query produced the best-spacing is greater than the longest matching reference sequence location processed by at least intvl-seed-longer(8) bases or nucleotides. In this embodiment, the threshold intvl-seed-longer(8) is a predetermined threshold that the computer system can use to evaluate the comparison between (i) the seed length of the elongated seed from which the query produced the best-spacing and (ii) the longest matching reference sequence location. In this embodiment, the best-spacing processing is triggered if the computer system determines that the seed length of the elongated seed from which the query produced the best-spacing is greater than eight or more bases or nucleotides than any matching seed.
[0159] In another embodiment, a third independent trigger condition that can trigger processing by the Best Spacing computer system is determining whether the number of seed chains is less than intvl-min-chains(8). Seed chains can include groups of similarly positioned reference sequence position matches. In this embodiment, the threshold intvl-min-chains(8) is a predetermined threshold that can be used to evaluate the number of seed chains generated. In this embodiment, if fewer than 8 seed chains are generated, the Best Spacing process is triggered.
[0160] While three examples of independent trigger conditions for triggering best-interval processing to complement seed matching sets are provided, the disclosure is not limited thereto. Alternatively, other trigger conditions can be constructed to trigger best-interval processing as a particular computer system might require. For example, if one or more thresholds of trigger conditions for processing best intervals are met, and the computer system determines to complete seed matches at step 535, the computer system may determine to complete the current set of seed matches at step 535 using best intervals. Completing the current set of seed matches using best intervals may include the computer system processing best intervals (540). Processing best intervals may include applying one or more heuristic rules to best intervals to identify one or more matching reference sequence locations identified by best intervals and stored in the seed extension table.
[0161] For example, a computer system can determine that if the number of reference sequence locations identified by the best interval is less than or equal to intvl-max-hits(64), it will process all one or more reference sequence locations identified by the best interval. In this embodiment, if the computer system determines that the best interval has identified 64 or fewer matching reference sequence locations, it can retrieve all matching reference sequence locations identified by the best interval from the seed extension table using the best interval. Alternatively, if the computer system determines that the best interval has identified more than 64 matching reference sequence locations, it can randomly retrieve intvl-sample-hits(32) matching reference sequences from the set of matching reference sequence locations identified by the best interval.
[0162] Randomly obtaining threshold values for 32 matching reference sequence positions may include obtaining threshold values for 32 matching reference sequence positions randomly or by deterministic pseudo-random selection from a seed extension table using best intervals. Best intervals may include data identifying (i) one or more stop and start positions in the seed extension table, (ii) one or more start positions and one or more offsets, or a combination thereof. While examples of thresholds such as 64 matching reference positions and 32 randomly sampled hits are described, this disclosure is not limited thereto. Instead, other thresholds with other numerical values may be used to achieve the benefits of this disclosure.
[0163] The current seed match set 545 can be supplemented using matching reference sequence locations obtained using the best interval. Such supplementation of the seed match set using the best interval can solve problems such as unmapped reads or high-accuracy mismapping, which may result in the seed match set having no matching reference sequence locations stored, or having only a very small number of matching reference sequence locations stored in the seed match set. The matching reference sequence locations may or can be obtained from a portion of the seed extension table identified by the best interval (540).
[0164] Once the seed matching set is replenished, the computer system can determine if there are other reads ready for mapping and aligning using process 500. If there are other reads ready for mapping and aligning, the computer system continues executing process 500 by acquiring the other reads. Alternatively, if there are no other reads ready for mapping and aligning, process 500 may terminate at 555.
[0165] In the embodiments described with reference to process 500, the best interval is evaluated to determine whether the best interval or a portion of the best interval can be used to complement the seed match set. However, it is not necessary for only a single best interval to be stored in the best interval storage. In some implementations, the computer system can facilitate the storage of two or more best intervals in the best interval storage. For example, in some implementations, up to two best intervals may be tracked. In some implementations, up to N best intervals may be tracked. In such implementations, if N > 1 best intervals are stored, the criterion for determining which intervals are retained may involve evaluating the relationships between interval candidates, the extended seeds associated with the interval candidates, or both, such that the N best intervals are associated with extended seeds that do not overlap each other in the read. In some implementations, the computer system can even select matching reference sequence locations from among several different best intervals. Such selection of matching reference array positions from among several different best intervals can be performed randomly, pseudorandomly, or by applying one or more heuristics. System Components
[0166] Figure 6 shows the system components that can be used to implement the system described herein related to flexible seed elongation for hashtable genome mapping.
[0167] Computing device 600 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. Computing device 650 is intended to represent various forms of mobile devices, such as personal digital assistants, mobile phones, smartphones, and other similar computing devices. In addition, computing device 600 or 650 may include a Universal Serial Bus (USB) flash drive. The USB flash drive may store an operating system and other applications. The USB flash drive may include input / output components, such as a wireless transmitter or USB connector, which can be inserted into a USB port of another computing device. The components shown herein, the connections and relationships of these components, and the functions of these components are meant to be examples only and are not intended to limit the forms of implementation of the invention described and / or claimed herein.
[0168] The computing device 600 includes a processor 602, memory 604, storage device 608, a high-speed interface 608 connected to memory 604 and a high-speed expansion port 610, and a low-speed bus 614 and a low-speed interface 612 connected to storage device 608. Each of the components 602, 604, 608, 608, 610, and 612 is interconnected using various buses and can be implemented on a common motherboard or by other means as appropriate. The processor 602 processes instructions for execution within the computing device 600, including instructions stored on memory 604 or storage device 608, and can display graphical information related to 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 memory as appropriate. Also, multiple computing devices 600 can be connected so that each device provides a necessary part of the operation, for example, as a server bank, a group of blade servers, or a multiprocessor system.
[0169] Memory 604 stores information within the computing device 600. In one implementation, memory 604 is a volatile memory unit or a plurality of volatile memory units. In another implementation, memory 604 is a non-volatile memory unit or a plurality of non-volatile memory units. Memory 604 can also be another form of computer-readable medium, such as a magnetic disk or an optical disk.
[0170] The storage device 608 can provide large-scale storage for the computing device 600. In one implementation, the storage device 608 may 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, flash memory or other similar solid-state memory device, or an array of devices including devices in a storage area network or other configuration. A computer program product may be tangibly implemented within the information carrier. A computer program product may also contain instructions that, when executed, perform one or more of the methods described above. The information carrier is a computer-readable or machine-readable medium such as memory 604, the storage device 608, or memory on the processor 602.
[0171] The high-speed controller 608 manages the bandwidth-intensive operation of the computing device 600, while the low-speed controller 612 manages the low-bandwidth-intensive operation. This assignment of functions is only one embodiment. In one implementation, the high-speed controller 608 is coupled to memory 604, a display 616, and a high-speed expansion port 610 that can accept various expansion cards (not shown) via, for example, a graphics processor or accelerator. In this implementation, the low-speed controller 612 is coupled to the storage device 608 and the low-speed expansion port 614. The low-speed expansion port, which can include various communication ports such as USB, Bluetooth, Ethernet, and wireless Ethernet, can be coupled to one or more input / output devices such as a keyboard, pointing device, microphone / speaker pair, scanner, or networking device such as a switch or router, for example, via a network adapter. The computing device 600 can be implemented in several different forms, as shown in the figure. For example, the computing device 600 can be implemented as a standard server 620, or multiple times within a group of such servers. The computing device 600 can also be implemented as part of a rack server system 624. In addition, the computing device 600 can be implemented in a personal computer such as a laptop computer 622. Alternatively, components from the computing device 600 can be combined with other components in a mobile device (not shown), such as device 650. Each of such devices may contain one or more computing devices 600, 650, and the entire system can consist of multiple computing devices 600, 650 communicating with each other.
[0172] The computing device 600 can be implemented in several different forms, as shown in the figure. For example, the computing device 600 can be implemented as a standard server 620, or multiple times within a group of such servers. The computing device 600 can also be implemented as part of a rack server system 624. In addition, the computing device 600 can be implemented in a personal computer, such as a laptop computer 622. Alternatively, components from the computing device 600 can be combined with other components in a mobile device (not shown), such as device 650. Each of such devices may contain one or more computing devices 600, 650, and the entire system can consist of multiple computing devices 600, 650 communicating with each other.
[0173] The computing device 650 includes, among other components, a processor 652, memory 664, and input / output devices such as a display 654, a communication interface 666, and a transceiver 668. Device 650 may also include storage devices such as a microdrive or other devices to provide additional storage. Each of the components 650, 652, 664, 654, 666, and 668 are interconnected using various buses, and some of the components can be implemented on a common motherboard or by other means as appropriate.
[0174] Processor 652 can execute instructions within the computing device 650, including instructions stored in memory 664. The processor can be implemented as a chipset of chips including separate and multiple analog and digital processors. In addition, the processor can be implemented using one of several architectures. For example, processor 610 can be a CISC (Complex Instruction Set Computers) processor, a RISC (Reduced Instruction Set Computer) processor, or a MISC (Minimal Instruction Set Computer) processor. The processor can provide coordination of other components of device 650, such as user interface control, applications run by device 650, and wireless communication by device 650.
[0175] The processor 652 can communicate with the user via a control interface 658 and a display interface 656 coupled to the display 654. The display 654 can be, for example, a TFT (Thin-Film-Transistor Liquid Crystal Display) display, an OLED (Organic Light Emitting Diode) display, or other suitable display technology. The display interface 656 may include appropriate circuitry for driving the display 654 to present graphical and other information to the user. The control interface 658 can receive commands from the user and translate these commands for submission to the processor 652. In addition, an external interface 662 can be provided to communicate with the processor 652 to enable near-field communication between device 650 and other devices. The external interface 662 can provide, for example, wired communication in some implementations and wireless communication in other implementations, and multiple interfaces may be used.
[0176] Memory 664 stores information within the computing device 650. Memory 664 can be implemented as one or more of the following: computer-readable media or media, volatile memory units or units, or non-volatile memory units or units. Furthermore, an expansion memory 674 can be provided and connected to the device 650 via an expansion interface 672, which may include, for example, a SIMM (Single In-Line Memory Module) card interface. Such an expansion memory 674 can provide additional storage space for the device 650, or it can store applications or other information for the device 650. Specifically, the expansion memory 674 may contain instructions that execute or complement the processes described above, and may also contain secure information. Therefore, for example, the expansion memory 674 can be provided as a security module for the device 650 and can be programmed with instructions that enable secure use of the device 650. In addition, secure applications can be provided via a SIMM card, along with additional information, such as placing identification information on the SIMM card in a hack-proof manner.
[0177] The memory may include, for example, flash memory and / or non-volatile random-access memory (NVRAM) memory, as will be described later. In one implementation, a computer program product is tangibly implemented within an information carrier. When executed, the computer program product contains instructions that perform one or more methods, such as those described above. The information carrier is a computer-readable or machine-readable medium, such as memory 664, extended memory 674, or memory on processor 652, which can be received via transceiver 668 or external interface 662.
[0178] Device 650 can communicate wirelessly via a communication interface 666, which may include digital signal processing circuitry as needed. The communication interface 666 can provide communication under various modes or protocols, including, in particular, GSM voice calls, SMS, EMS, or MMS messaging, CDMA, TDMA, PDC, WCDMA®, CDMA2000, or GPRS. Such communication can be performed, for example, via a high-frequency transceiver 668. In addition, short-range communication is possible, such as using Bluetooth, Wi-Fi, or other such transceivers (not shown). Furthermore, a GPS (Global Positioning System) receiver module 670 can provide device 650 with additional navigation-related and location-related wireless data, which can be used as appropriate by the application operating on device 650.
[0179] Device 650 can also communicate audibly using audio codec 660, which can receive speech information from the user and convert this speech information into usable digital information. Audio codec 660 can also generate audible sound for the user, for example, through a speaker in the handset of device 650. Such sound may include sounds from voice telephone calls, recorded sounds such as voice messages and music files, and sounds generated by applications running on device 650.
[0180] The computing device 650 can be implemented in several different forms, as shown in the figure. For example, the computing device 650 can be implemented as a mobile phone 680. Alternatively, the computing device 650 can be implemented as part of a smartphone 682, a personal digital assistant, or other similar mobile device.
[0181] Various implementations of the systems and methods described herein can be realized in digital electronic circuits, integrated circuits, specially designed ASICs (application-specific integrated circuits), computer hardware, firmware, software, and / or combinations of such implementations. These various implementations may include implementations in one or more computer programs that are dedicated or general-purpose and are executable and / or interpretable on a programmable system including at least one programmable processor coupled to receive and transmit data and instructions from a storage system, at least one input device, and at least one output device.
[0182] These computer programs (also known as programs, software, software applications, or code) contain machine instructions for a programmable processor and can be implemented in high-level procedural and / or object-oriented programming languages and / or assembly / machine languages. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, apparatus, and / or device, such as magnetic disks, optical disks, memory, programmable logic devices (PLDs) used to provide machine instructions and / or data to a programmable processor, and include machine-readable medium that receives machine instructions as machine-readable signals. The term “machine-readable signal” refers to any signal used to provide machine instructions and / or data to a programmable processor.
[0183] To provide user interaction, the systems and technologies described herein can be implemented on a computer having a display device for displaying information to the user, such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, and a pointing device, such as a mouse or trackball, on which the user can provide input to the computer. User interaction can also be provided using other types of devices, for example, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback, and input from the user can be received in any form, including acoustic input, speech input, or tactile input.
[0184] The systems and technologies described herein can be implemented in a computing system including a backend component, such as a data server; in a computing system including a middleware component, such as an application server; or in a computing system including a frontend component, such as a client computer having a graphical user interface or web browser that allows a user to interact with the implementation of the systems and technologies described herein; or in any combination of such backend, middleware, or frontend components. The components of the system can be interconnected by digital data communication, such as any form or medium of a communication network. Examples of communication networks include local area networks ("LANs"), wide area networks ("WANs"), and the Internet.
[0185] A computing system can include clients and servers. Clients and servers are generally remote to each other and typically interact via a communication network. The relationship between a client and a server arises from computer programs running on each computer that have a client-server relationship with each other. Examples
[0186] This disclosure is further described in the following embodiments, which do not limit the scope of the claims. Example 1: Comparison of the percentage of unmapped reads between a system using flexible seed elongation and a system not using flexible seed elongation.
[0187] In this embodiment, different nucleic acid sequencers, including the HiSeq® 2500 sequencer, the HiSeq® X sequencer, and the NovaSeq® sequencer, were used to sequence a specific sample. Next, the reads generated by each sequencer were mapped using the DRAGEN® platform, with and without flexible seed extension as described herein. Once mapped, the computer system determined the percentage of unmapped reads resulting from each mapping operation for each sequencer.
[0188] The DRAGEN® platform is a mapping and aligning unit implemented in a field-programmable gate array (FPGA) hardware circuitry. The DRAGEN® v7 platform does not currently utilize the flexible seed extension described herein, whereas the DRAGEN® v8 platform does. While the DRAGEN® platform used herein was implemented in FPGAs, the DRAGEN® platform can generally be implemented in other integrated circuits, such as application-specific integrated circuits (ASICs).
[0189] Specifically, the "DNA_Nexus_hiseq2500" sample was sequenced using the HiSeq® 2500 sequencer, the "DNA_Nexus_hiseqX" sample was sequenced using the HiSeq® X sequencer, and the "DNA_Nexus_NovaSeq" sample, "NovaSeq_NA12878_rep1 sample", "NovaSeq_TruSeq-nano-550 sample", and "AWS_HG005_40x" sample were sequenced using the NovaSeq® sequencer. "AWS_HG005_40X" was derived from subject HG005. All other samples were derived from subject HG001.
[0190] Figure 7 is an explanatory diagram of bar graph 700, which displays data representing test results in the form of the percentage of unmapped reads in a system using a flexible seed extension method as described herein, compared to a system without a flexible seed extension method. Bar graph 700 is a graphical representation of test results 710, 720, 730, 740, 750, and 760 comparing the results of mapping operations performed on genomic reads generated by different sequencing devices from Illumina, Inc.
[0191] In the first embodiment, test result 710 shows that the percentage of unmapped reads that occurs in 710b when the HiSeq® 2500 sequencer sequences the "DNA_Nexus_hiseq2500" sample and utilizes flexible seed extension as described in one or more implementations herein during mapping is significantly smaller than the percentage of unmapped reads that occurs in 710a when the HiSeq® 2500 sequencer sequences the "DNA_Nexus_hiseq2500" sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0192] In the second embodiment, test result 720 shows that the percentage of unmapped reads that occur in 720b when the NovaSeq® sequencer sequences a "DNA_Nexus_NovaSeq" sample and utilizes flexible seed extension as described in one or more implementations herein during mapping is significantly smaller than the percentage of unmapped reads that occur in 720a when the NovaSeq sequencer sequences a "DNA_Nexus_NovaSeq" sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0193] In the third embodiment, test result 730 shows that the percentage of unmapped reads that occurs in 730b when the HiSeq®X sequencer sequences a "DNA_Nexus_hiseqX" sample and utilizes flexible seed extension as described in one or more implementations herein during mapping is significantly smaller than the percentage of unmapped reads that occurs in 730a when the HiSeq®X sequencer sequences a "DNA_Nexus_hiseqX" sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0194] In the fourth embodiment, test result 740 shows that the percentage of unmapped reads that occurs in 740b when the NovaSeq® sequencer sequences the "NovaSeq_NA12878_rep1" sample and utilizes flexible seed extension as described in one or more implementations herein during mapping is significantly smaller than the percentage of unmapped reads that occurs in 740a when the NovaSeq® sequencer sequences the "NovaSeq_NA12878_rep1" sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0195] In the fifth embodiment, test result 750 shows that the percentage of unmapped reads that occur in 750b when a NovaSeq® sequencer sequences a "NovaSeq_TruSeq-nano-550" sample and utilizes flexible seed extension as described in one or more implementations herein during mapping is significantly smaller than the percentage of unmapped reads that occur in 750a when a NovaSeq® sequencer sequences a "NovaSeq_TruSeq-nano-550" sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0196] In the sixth embodiment, test result 760 shows that the percentage of unmapped reads that occurs in 760b when the NovaSeq® sequencer sequences the "AWS_HG005_40X" sample and utilizes flexible seed extension as described in one or more implementations herein during mapping is significantly smaller than the percentage of unmapped reads that occurs in 760a when the NovaSeq® sequencer sequences the "AWS_HG005_40X" sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0197] Therefore, the flexible seed extension implementations using the hash tables described herein achieve significant performance improvements by reducing unmapped reads compared to conventional methods that do not generate or use the hash tables described herein. Example 2: Comparison of read mapping accuracy between a system using flexible seed elongation and a system not using flexible seed elongation.
[0198] In this second example, the DRAGEN® platform was used to map reads generated by a nucleic acid sequencer to a reference sequence. Each DRAGEN® platform mapped the same set of reads to the same reference sequencer. Once the mapping was complete, the computer system determined the read mapping accuracy of each mapping operation as a function of the mapping error rate.
[0199] The DRAGEN® platform is a mapping and aligning unit implemented with a field-programmable gate array (FPGA) hardware circuitry. The DRAGEN® v7 platform does not currently utilize the flexible seed extension described herein, whereas the DRAGEN® v8 platform and the DRAGEN® v8 hi-effort platform utilize flexible seed extension.
[0200] The DRAGEN® platform used herein was implemented on an FPGA, but generally, the DRAGEN® platform can also be implemented on other integrated circuits, such as application-specific integrated circuits (ASICs).
[0201] The difference between the DRAGEN® v8 platform and the DRAGEN® v8 hi-effort platform lies in the settings of heuristics and other parameters. The DRAGEN® v8 platform uses the following heuristics: intvl-target-hits=32, intvl-max-hits=16, and intvl-sample-hits=16. Each of these heuristics is described herein. In addition, the DRAGEN® v8 platform uses other parameters: max-hifreq-hits=16, rescue-hifreq=0, s, and sw-extra-intvl=1. The max-hifreq-hits parameter indicates the maximum number of random sample matches taken from the matching interval reached before a failed seed extension (e.g., one sample per failed extension until the limit is reached). The rescue-hifreq parameter determines whether an expensive rescue scan operation is utilized for matches found only by random samples from the matching interval. Rescue scan is a method for searching for possible mating read alignments near a candidate read alignment. The sw-extra-intvl parameter determines the policy for using the expensive Smith-Waterman alignment for matching, which is found by accessing the best ("extra") interval or by randomly sampling the match interval. Smith-Waterman is generally not used if gapless alignments are not clipped, but if gapless alignments are clipped, it may be used depending on the heuristic, including this setting. A setting of "1" means that Smith-Waterman may be used for candidates from the extra / best match interval, which is accessed entirely but not by random sampling. A setting of "2" means that Smith-Waterman may also be used for candidates from random sampling of the match interval.A setting of "0" means that Smith-Waterman will not be applied to candidates from extra / best interval processing or random sampling of match intervals.
[0202] On the other hand, the DRAGEN(trademark) v8 hi-effort platform uses the following heuristics: intvl-target-hits=32, intvl-max-hits=64, and intvl-sample-hits=48. In addition, the DRAGEN(trademark) v8 hi-effort platform uses other parameters: max-hifreq-hits=32, rescue-hifreq=0, and sw-extra-intvl=2. Therefore, the DRAGEN(trademark) v8 hi-effort platform has a more comprehensive set of heuristics than the DRAGEN(trademark) v8 platform.
[0203] Figure 8 is an explanatory diagram of line graph 800, which displays data representing test results in the form of read mapping accuracy in a system using a flexible seed expansion method as disclosed herein, compared to a system without a flexible seed expansion method. In particular, graph 800 shows the trade-off between false positives and false negatives when the data is stratified using an accuracy metric, using an accuracy curve in the form of a receiver operating characteristic ("ROC") curve (or line). In the explanatory diagram of Figure 8, curves (or lines) near the top and left walls of graph 800 represent better read mapping accuracy.
[0204] Curve 810 is shown representing the read mapping accuracy of the DRAGEN® v7 platform without using flexible seed extension as described in one or more implementations herein during mapping. Curve 820 is shown representing the read mapping accuracy of the DRAGEN® v8 platform with flexible seed extension as described in one or more implementations herein during mapping. A comparison of curves 810 and 820 reveals that curve 820 is closer to the upper and left walls than curve 810. Therefore, the improvement in read mapping accuracy is achieved simply by implementing flexible seed extension as described in one or more implementations herein at a certain capacity.
[0205] Figure 8 further illustrates curve 830, which represents the “hi-effort” DRAGEN® implementation v8. Similar to the DRAGEN® v8 implementation, the DRAGEN® v8 hi-effort implementation also utilizes the flexible seed extension method described herein during mapping. However, as mentioned above, the heuristics used by the DRAGEN® v8 “hi-effort” implementation are more comprehensive than those used for the DRAGEN® v8 implementation whose performance is represented by curve 820. The DRAGEN® “hi-effort” v8 version is assigned a parameter (e.g., sw-extra-intvl=2) that increases the willingness to perform more Smith-Waterman alignment work downstream compared to the DRAGEN® v8 implementation (e.g., sw-extra-intvl=1). As shown in Figure 8, curve 830 exhibits a significant performance gain in read mapping accuracy with the DRAGEN(trademark) v8 h-effort implementation configuration because it is closer to the upper and left walls than both curves 810 and 820.
[0206] Figure 8 also illustrates curve 840, which represents the read mapping accuracy achieved by the BWA-MEM software mapping tool. The BWA-MEM software mapping tool uses the Burrows-Wheeler Transform (BWT) of the reference genome as its index. This method of representing the reference genome can inherently provide similar benefits to those offered by flexible seed extension, such as the ability to retrieve a complete set of matches corresponding to matches of arbitrary length. As illustrated by curves 830 and 840, the DRAGEN® v8 "hi-effort" implementation can achieve the same read mapping accuracy as the software-based BWA software mapping tool. Therefore, it is important to note that DRAGEN® v8 "hi-effort" is able to achieve a level of read mapping accuracy equivalent to the software-based BWA mapping tool because it also leverages other benefits of the DRAGEN® platform, including, for example, less memory access for mapping seeds. However, prior to the hardware-based flexible seed extension implementations described herein, the DRAGEN® platform was able to achieve the same level of read mapping accuracy as that achieved by BWA software mapping tools.
[0207] Therefore, the flexible seed extension implementations using the hash tables described herein achieve a significant performance improvement in terms of read mapping accuracy compared to conventional methods that do not generate or use the hash tables described herein. Other Embodiments
[0208] Several embodiments have been described. Nevertheless, it will be understood that various modifications can be made without departing from the spirit and scope of the invention. In addition, the logical flow depicted in the figures does not require a specific order or sequential sequence to achieve the desired result. Furthermore, other steps can be provided from the described flow, or steps can be eliminated, and other components can be added to or removed from the described system. Accordingly, other embodiments are within the scope of the following claims. [Explanation of Symbols]
[0209] 100 Systems 110 Computer 112 memory 114 Reference Arrays 120 Seed Elongation Tree 121 nodes 122 nodes 123 nodes 124 nodes 125 nodes 126 nodes 130 memory 132 Seed Growth Table 140 hash tables 142 Index Keys 143 Hash Functions 144 Hash position 146 Hash Table Installation Package 150 records 152 records 153 records 155 Reference array position 160 devices 162 circuits 170 Mapping and Aligning Units 180 memory 300 runtime systems 305 Lead 310 hash queries 340 Best Spacing Storage 350 Best Spacing Storage 600 Computing Devices 602 Processors 604 memory 610 High-Speed Expansion Ports 612 Low-speed controller 614 Low-Speed Expansion Ports 616 displays 620 Standard Servers 622 Laptop Computers 624 rack server system 650 devices 652 processors 654 displays 656 Display Interfaces 658 Control Interface 660 audio codecs 662 External Interface 664 memory 666 Communication Interface 668 Transmitter / Receiver 670 Receiver Module 672 Expansion Interface 674 Expansion Memory 680 Mobile Phone 682 Smartphones
Claims
1. A method for using a hash table to improve the mapping of sample reads to a reference sequence, The mapping and aligning unit performs a query on a hash table, wherein the query includes a first seed, and the first seed includes a subset of nucleotides obtained from a specific read of the sample reads. The mapping and aligning unit obtains a response to the executed query, which includes information stored by the location in the hash table that is determined to respond to the query. The mapping and aligning unit determines whether the response to the executed query includes (i) an extension record and (ii) an interval record that identifies a contiguous set of reference array positions that match the first seed, stored in the extension table. Based on the mapping and aligning unit determining that the response to the executed query includes (i) extended records and (ii) interval records, The mapping and aligning unit determines whether the expanded table is accessed to obtain one or more matching reference array positions within the expanded table that are referenced by the interval record, Based on the determination that the aforementioned extended table is accessed, The mapping and aligning unit accesses the expanded table and obtains one or more matching reference array positions in the expanded table referenced by the interval record, The mapping and aligning unit adds the one or more matching reference array positions to the seed matching set, Methods that include...
2. Based on the determination that the extended table is not accessed, The mapping and aligning unit determines whether to store the first information describing the interval record in the memory device as information describing the best interval candidate, The mapping and aligning unit generates a first elongated seed, which is an elongation of the first seed, using the elongation record. The mapping and aligning unit generates a subsequent hash query including the first extended seed, The mapping and aligning unit further includes executing the subsequent queries on the hash table, The method according to claim 1.
3. The method described above, The mapping and aligning unit determines that the response to the executed query contains one or more matching reference array positions, Based on the mapping and aligning unit determining that the response to the executed query includes one or more matching reference array positions, The mapping and aligning unit further includes adding one or more matching reference array positions to the seed matching set. The method according to claim 2.
4. The mapping and aligning unit determines whether to store the first information describing the interval record in a memory device as information describing the best interval candidate. The mapping and aligning unit determines that there is no prior information describing the interval record as the best interval candidate for the particular read, The mapping and aligning unit includes storing the first information describing the interval record in the memory device as information describing the best interval candidate, The method according to claim 2.
5. The method described above, The mapping and aligning unit obtains a response to the subsequent executed query, which includes information stored at the location in the hash table that is determined to respond to the query. The mapping and aligning unit determines whether the response to the subsequently executed query includes (i) a second extended record, (ii) a second interval record, or (iii) one or more matching reference array positions. Based on the mapping and aligning unit determining that the response to the subsequently executed query includes (i) the second extended record and (ii) the second interval record, The mapping and aligning unit determines whether the expanded table is accessed to obtain one or more matching reference array positions within the expanded table that are referenced by the second interval record, Based on the determination that the aforementioned extended table is not accessed, The mapping and aligning unit, using one or more heuristic rules, determines whether the second information describing the second interval record, or the first information describing the best interval candidate, is used as the best interval candidate. The mapping and aligning unit generates a second extended seed, which is an extension of the first extended seed, using the second extended record. The mapping and aligning unit generates a third hash query including the second extended seed, The mapping and aligning unit further includes executing the third query on the hash table containing the second extended seed, The method according to claim 2.
6. The mapping and aligning unit, and using one or more heuristic rules, determines whether the second information describing the second interval record or the first information describing the best interval candidate is to be used as the best interval. The method includes selecting either the second information describing the second interval record or the first information describing the best interval candidate record based on a plurality of factors including (i) the number of matching reference array positions returned by each of the interval record and the second interval record, (ii) a predetermined threshold level for the reference array positions, or (iii) the respective seed lengths of the seeds that reach the hash positions storing the interval record and the second interval record. The method according to claim 5.
7. A system for improving the mapping of sample reads to a reference sequence using a hash table, One or more computers and one or more storage devices that store operable instructions, wherein when an instruction is executed by the one or more computers, the one or more computers, The mapping and aligning unit performs a query on a hash table, wherein the query includes a first seed, and the first seed includes a subset of nucleotides obtained from a specific read of the sample reads. The mapping and aligning unit obtains a response to the executed query, which includes information stored by the location in the hash table that is determined to respond to the query. The mapping and aligning unit determines whether the response to the executed query includes (i) an expanded record and (ii) an interval record that identifies a contiguous set of reference array positions that match the first seed, stored in the expanded table. Based on the mapping and aligning unit determining that the response to the executed query includes (i) an extended record and (ii) an interval record, The mapping and aligning unit determines whether the expanded table is accessed to obtain one or more matching reference array positions within the expanded table that are referenced by the interval record, Based on the determination that the aforementioned extended table is accessed, The mapping and aligning unit accesses the expanded table and obtains one or more matching reference array positions in the expanded table referenced by the interval record, The mapping and aligning unit adds the one or more matching reference array positions to the seed matching set, A system that performs actions including those mentioned above.
8. The operation described above is Based on the determination that the aforementioned extended table is not accessed, The mapping and aligning unit determines whether to store the first information describing the interval record in the memory device as information describing the best interval candidate, The mapping and aligning unit generates a first elongated seed, which is an elongation of the first seed, using the elongation record. The mapping and aligning unit generates a subsequent hash query including the first extended seed, The mapping and aligning unit includes executing the subsequent hash query on the hash table, The system according to claim 7.
9. The operation described above is The mapping and aligning unit determines that the response to the executed query contains one or more matching reference array positions, Based on the mapping and aligning unit determining that the response to the executed query includes one or more matching reference array positions, The mapping and aligning unit further includes adding the one or more matching reference array positions to the seed matching set. The system according to claim 8.
10. The mapping and aligning unit determines whether to store the first information describing the interval record in a memory device as information describing the best interval candidate. The mapping and aligning unit determines that there is no prior information describing the interval record as the best interval candidate for the particular read, The mapping and aligning unit includes storing the first information describing the interval record in the memory device as information describing the best interval candidate, The system according to claim 8.
11. The operation described above is The mapping and aligning unit obtains a response to the subsequent executed query, which includes information stored at the location in the hash table that is determined to respond to the query. The mapping and aligning unit determines whether the response to the subsequently executed query includes (i) a second extended record, (ii) a second interval record, and (iii) one or more matching reference array positions. Based on the mapping and aligning unit determining that the response to the subsequently executed query includes (i) the second extended record and (ii) the second interval record, The mapping and aligning unit determines whether the expanded table is accessed to obtain one or more matching reference array positions within the expanded table that are referenced by the second interval record, Based on the determination that the aforementioned extended table is not accessed, The mapping and aligning unit, using one or more heuristic rules, determines whether the second information describing the second interval record, or the first information describing the best interval candidate, is used as the best interval candidate. The mapping and aligning unit generates a second extended seed, which is an extension of the first extended seed, using the second extended record. The mapping and aligning unit generates a third hash query including the second extended seed, The mapping and aligning unit further includes executing the third query on the hash table containing the second extended seed, The system according to claim 8.
12. The mapping and aligning unit, and using one or more heuristic rules, determines whether the second information describing the second interval record, or the first information describing the best interval candidate, is used as the best interval. The method includes selecting either the second information describing the second interval record or the first information describing the best interval candidate record based on a plurality of factors including (i) the number of matching reference array positions returned by each of the interval record and the second interval record, (ii) a predetermined threshold level for the reference array positions, or (iii) the respective seed lengths of the seeds that reach the hash positions storing the interval record and the second interval record. The system according to claim 11.
13. The interval record refers to one or more locations in a seed extension table, which includes data describing reference array locations that match the first seed of the query. The system according to claim 7.
14. The one or more positions in the seed extension table, which include data describing reference array positions that match the first seed of the query, Including consecutive intervals of reference array positions in the expanded table that match the first seed of the query, The system according to claim 13.
15. A non-temporary computer-readable medium storing software that includes instructions executable by one or more computers, wherein, at the time of such execution, the instructions are accessible to the one or more computers. The mapping and aligning unit performs a query on a hash table, wherein the query includes a first seed, and the first seed includes a subset of nucleotides obtained from specific reads of sample reads. The mapping and aligning unit obtains a response to the executed query, which includes information stored by the location in the hash table that is determined to respond to the query. The mapping and aligning unit determines whether the response to the executed query includes (i) an extension record and (ii) an interval record that identifies a contiguous set of reference array positions that match the first seed, stored in the extension table. Based on the mapping and aligning unit determining that the response to the executed query includes (i) extended records and (ii) interval records, The mapping and aligning unit determines whether the expanded table is accessed to obtain one or more matching reference array positions within the expanded table that are referenced by the interval record, Based on the determination that the aforementioned extended table is accessed, The mapping and aligning unit accesses the expanded table and obtains one or more matching reference array positions in the expanded table referenced by the interval record, The mapping and aligning unit adds the one or more matching reference array positions to the seed matching set, A computer-readable medium that enables the execution of actions including [specific actions].
16. The operation described above is Based on the determination that the aforementioned extended table is not accessed, The mapping and aligning unit determines whether to store the first information describing the interval record in the memory device as information describing the best interval candidate, The mapping and aligning unit generates a first elongated seed, which is an elongation of the first seed, using the elongation record. The mapping and aligning unit generates a subsequent hash query including the first extended seed, The mapping and aligning unit executes the subsequent hash query on the hash table, The computer-readable medium according to claim 15, further comprising:
17. The operation described above is The mapping and aligning unit determines that the response to the executed query contains one or more matching reference array positions, Based on the mapping and aligning unit determining that the response to the executed query includes one or more matching reference array positions, The mapping and aligning unit adds the one or more matching reference array positions to the seed matching set, The computer-readable medium according to claim 16, further comprising:
18. The mapping and aligning unit determines whether to store the first information describing the interval record in a memory device as information describing the best interval candidate. The mapping and aligning unit determines that there is no prior information describing the interval record as the best interval candidate for the particular read, The mapping and aligning unit includes storing the first information describing the interval record in the memory device as information describing the best interval candidate, The computer-readable medium according to claim 16.
19. The operation described above is The mapping and aligning unit obtains a response to the subsequent executed query, which includes information stored at the location in the hash table that is determined to respond to the query. The mapping and aligning unit determines whether the response to the subsequently executed query includes (i) a second extended record, (ii) a second interval record, or (iii) one or more matching reference array positions. Based on the mapping and aligning unit determining that the response to the subsequently executed query includes (i) the second extended record and (ii) the second interval record, The mapping and aligning unit determines whether the expanded table is accessed to obtain one or more matching reference array positions within the expanded table that are referenced by the second interval record, Based on the determination that the aforementioned extended table is not accessed, The mapping and aligning unit, using one or more heuristic rules, determines whether the second information describing the second interval record, or the first information describing the best interval candidate, is used as the best interval candidate. The mapping and aligning unit generates a second extended seed, which is an extension of the first extended seed, using the second extended record. The mapping and aligning unit generates a third hash query including the second extended seed, The mapping and aligning unit further includes executing the third query on the hash table containing the second extended seed, The computer-readable medium according to claim 16.
20. The mapping and aligning unit, and using one or more heuristic rules, determines whether the second information describing the second interval record or the first information describing the best interval candidate is to be used as the best interval. The method includes selecting either the second information describing the second interval record or the first information describing the best interval candidate record based on a plurality of factors including (i) the number of matching reference array positions returned by each of the interval record and the second interval record, (ii) a predetermined threshold level for the reference array positions, or (iii) the respective seed lengths of the seeds that reach the hash positions storing the interval record and the second interval record. The computer-readable medium according to claim 19.
21. An integrated circuit that uses a hash table to improve the mapping of sample reads to a reference sequence, wherein the integrated circuit includes a plurality of hardware digital logic gates that are physically configured in one or more hardware digital logic circuits that perform the functions of a mapping and aligning unit, The query includes one or more hardware logic circuits that execute the query on a hash table, wherein the query includes a first seed, and the first seed includes a subset of nucleotides obtained from specific reads of the sample reads. One or more hardware logic circuits that obtain a response to the executed query, including information stored by the location in the hash table that is determined to respond to the query, One or more hardware logic circuits determine whether the response to the executed query includes (i) an expanded record and (ii) an interval record that identifies a contiguous set of reference array positions that match the first seed, stored in the expanded table. One or more hardware logic circuits determine, based on the determination that the response to the executed query includes (i) an expanded record and (ii) an interval record, whether the expanded table is accessed to obtain one or more matching reference array locations within the expanded table referenced by the interval record, Based on the determination that the aforementioned extended table is accessed, Access the aforementioned extension table and obtain the one or more matching reference array positions in the extension table referenced by the interval record, Add the one or more matching reference array positions to the seed matching set. One or more hardware logic circuits, An integrated circuit, including
22. The integrated circuit according to claim 21, wherein the integrated circuit is a field programmable gate array (FPGA).