Flexible seed extension for hash table genome mapping
By constructing hash table indexes in genome mapping and alignment and adopting a flexible seed extension method, the problem of excessive computing resources and power consumption is solved, and the accuracy and flexibility of mapping is improved.
Patent Information
- Application Number
- CN202411721596.4
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2019-05-24
- Filing Date
- 2020-05-22
- Publication Date
- 2025-04-25
Smart Images

Figure CN119889444A_ABST
Abstract
Description
[0001] This application is a divisional application of the invention patent application entitled “Flexible seed extension for hash table genome mapping” and application number 202080003658.1.
[0002] Cross-references to related patent applications
[0003] This application claims the benefit of U.S. Provisional Patent Application No. 62 / 852,965, filed May 24, 2019, which is incorporated herein by reference in its entirety. Background Art
[0004] A nucleic acid sequencer is an instrument configured to automate the nucleic acid sequencing process. 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).
[0005] The nucleic acid sequencer is configured to receive a nucleic acid sample and generate output data representing the order of nucleotides in the nucleic acid sample, which is referred to as one or more "reads". The nucleotides in the DNA sample may include one or more nucleotide bases, including guanine (G), cytosine (C), adenine (A) and thymine (T) in any combination. The nucleotides in the RNA sample may include one or more bases, including G, C, A and uracil (U) in any combination.
[0006] A mapping and alignment engine can be used to map the reads generated by the DNA sequencer to the known nucleotide sequence of the reference genome. Mapping the reads to the nucleotide sequence of the reference genome can be achieved by a mapping and alignment engine using a hash table index. Summary of the invention
[0007] The present disclosure describes the construction and use of hash table indexes that facilitate flexible seed extension to improve the performance of genome mapping and alignment systems. Specifically, the present disclosure can be used to perform flexible seed extension in the following manner: (i) reducing the consumption of computing resources and power, and (ii) solving the problems of conventional seed extension methods described herein. To achieve these advantages, the present disclosure particularly provides "interval records" that can be stored in hash table locations.
[0008] Aspects of the present disclosure enable a mapping and alignment unit to use interval records alone, or in combination with one or more extension records, to reduce the number of matching positions to be processed by the mapping and alignment unit through seed extension, while also providing flexibility to the mapping and alignment unit in determining whether a matching reference position identified using dynamic seed extension is accurate, or in some cases, whether seed extension using one or more extension records should occur. This results in a mapping and alignment unit that uses less power and fewer computing resources than other mapping and alignment units that utilize conventional seed extension techniques, while also being more accurate.
[0009] In one aspect, the present disclosure provides a method for generating a hash table for mapping sample reads to a reference. In one aspect, the method may include the following actions: obtaining a first nucleotide seed from a reference sequence by a computer system, wherein the first seed has a length of K nucleotides; determining by the computer system that the first seed matches more than a predetermined number of reference sequence positions; based on determining that the first seed matches more than a predetermined number of reference sequence positions, generating by the computer system a seed extension tree having a plurality of nodes, wherein each of the plurality of nodes corresponds to (i) an extension seed, the extension seed being an extension of the first seed and having a nucleotide length of K*, wherein K* is one or more nucleotides greater than K, and (ii) one or more positions in a seed extension table, the one or more positions including data describing a reference sequence position matched with the extension seed, and for each of the plurality of nodes: storing interval information by the computer system at a position of the hash table corresponding to an index key of the extension seed, wherein the interval information references one or more positions in the seed extension table, the one or more positions including data describing a reference sequence position matched with the extension seed associated with the node.
[0010] Other aspects include corresponding systems, apparatus, and computer programs that perform the actions of the methods as disclosed herein, as defined by instructions encoded on a computer-readable storage device.
[0011] These and other aspects may optionally include one or more of the following features: For example, in some implementations, each of the matched reference sequence positions includes K nucleotides of the first seed.
[0012] In some specific implementations, the method may also include: obtaining, by the computer system, a second nucleotide seed different from the first seed from the reference sequence; determining, by the computer system, that the second seed does not match more than the predetermined number of reference sequence positions; and based on the determination by the computer system that the second seed does not match more than the predetermined number of reference sequence positions: obtaining, by the computer system, data describing each of the reference sequence positions that matches the second seed, and storing, by the computer system, the data describing the reference sequence positions that match the second seed in a second position of the hash table corresponding to the index key of the second seed.
[0013] In some embodiments, the one or more positions in the seed extension table that include data describing reference sequence positions that match the extension seed may include a continuous interval of positions in the seed extension table that include data describing reference sequence positions that match the extension seed.
[0014] In some specific embodiments, the one or more positions in the seed extension table that include data describing the reference sequence positions that match the extended seed associated with the node may include a continuous interval in the extension table of reference sequence positions that match the extended seed associated with the node.
[0015] In some specific implementations, a first nucleotide seed is obtained from a reference sequence by a computer system, wherein the first seed represents a nucleotide sequence having a nucleotide length of K nucleotides, and the obtaining may include: determining, by the computer system, a position of a seed access window within the reference sequence; and obtaining, by the computer system, a subset of the reference sequence identified by the seed access window.
[0016] In some specific implementations, the method may also include: adjusting the seed extension window forward by K nucleotides along the reference sequence by the computer system to identify a second nucleotide seed having a nucleotide length of K nucleotides from the reference sequence; obtaining the second seed from the reference sequence by the computer system; determining by the computer system that the second seed matches more than a predetermined number of reference sequence positions; based on determining that the second seed matches more than a predetermined number of reference sequence positions, generating by the computer system a second seed extension tree having a plurality of second nodes, wherein each second node in the plurality of second nodes corresponds to (i) a second extension seed, the second extension seed being an extension of the second seed and having a nucleotide length of K*, wherein K* is one or more nucleotides greater than K, and (ii) a second one or more positions in a second seed extension table, the second one or more positions including data describing a reference sequence position that matches the second extension seed, and for each second node in the plurality of second nodes: storing by the computer system second interval information at a position of the hash table corresponding to an index key of the second extension seed, wherein the second interval information references one or more positions in the second seed extension table, the one or more positions including data describing a reference sequence position that matches the second extension seed associated with the second node.
[0017] In some specific implementations, the method may also include: for each of the multiple nodes: determining by the computer system whether the node of the seed extension tree is a leaf node, and based on the determination by the computer system that the node of the extension tree is not a leaf node, storing by the computer system an extension record at the position of the index key of the hash table corresponding to the extended seed.
[0018] In some implementations, the extension record includes one or more instructions that, when executed by the computer system, cause the computer system to add one or more additional nucleotides to a seed associated with the extension record.
[0019] In some specific implementations, the method may also include: based on the computer system determining that the node of the extension tree is a leaf node, determining by the computer system not to store an extension record at the position of the index key of the hash table corresponding to the extension seed.
[0020] In some implementations, the method may further include generating, by the computer system, the seed extension table. In such implementations, generating the seed extension table may include: identifying, by the computer system, each seed of the reference sequence that matches the first seed, and storing, by the computer system, data identifying the identified seeds in the seed extension table.
[0021] In some implementations, the method may also include sorting, by the computer system, the identified seeds in the seed extension table.
[0022] In some specific implementations, the method may also include: generating a hash table installation package by the computer system, the hash table installation package including instructions, which, when processed by one or more computers receiving the hash table installation package, enable the one or more computers to install the hash table in a memory accessible by the programmable logic circuit.
[0023] In some specific implementations, the hash table installation package may include the seed extension table, and the hash table installation package may include instructions for instructing (i) the programmable logic circuit or (ii) another computer to store the seed extension table in a memory device accessible by the programmable logic circuit.
[0024] In some implementations, the computer system provides the hash table installation package to another computer.
[0025] In some implementations, the other computer can include (i) a computer configured to communicate with the programmable logic circuit or (ii) the programmable logic circuit itself.
[0026] In some implementations, the computer system can include multiple computers.
[0027] On the other hand, the present disclosure provides a method for improving the mapping of sample reads to reference sequences using a hash table. In one aspect, the method may include: performing a query on the hash table by a mapping and alignment unit, the query including a first seed, wherein the first seed includes a subset of nucleotides obtained from a specific read in the sample read; obtaining a response to the query performed by the mapping and alignment unit, the response including information stored by a position of the hash table determined to be responsive to the query; determining by the mapping and alignment unit whether the response to the query performed includes (i) an extension record, (ii) an interval record, or (iii) one or more matching reference sequence positions; determining by the mapping and alignment unit that the response to the query performed includes (i) an extension record and (ii) an interval record, or (iii) one or more matching reference sequence positions. ii) Interval record: the mapping and alignment unit determines whether to access an extension table to obtain one or more matching reference sequence positions in the extension table referenced by the interval record; based on determining not to access the extension table: the mapping and alignment unit determines whether to store the first information describing the interval record as information describing a candidate optimal interval in a memory device; the mapping and alignment unit generates a first extension seed using the extension record, the first extension seed being an extension of the first seed; the mapping and alignment unit generates a subsequent hash query including the first extension seed; and the mapping and alignment unit executes the subsequent hash query on the hash table.
[0028] Other versions include corresponding systems, apparatus, and computer programs that perform the actions of the method defined by instructions encoded on a computer-readable storage device.
[0029] These and other aspects of the present disclosure may optionally include one or more of the following features. For example, in some specific implementations, the method may also include: based on determining to access the extension table: accessing the extension table by the mapping and alignment unit to obtain the one or more matching reference sequence positions referenced by the interval record in the extension table; and adding the one or more matching reference sequence positions to the seed match set by the mapping and alignment unit.
[0030] In some specific implementations, the method may also include: determining, by the mapping and alignment unit, that the response to the query performed includes one or more matching reference sequence positions; and based on determining, by the mapping and alignment unit, that the response to the query performed includes one or more matching reference sequence positions: adding, by the mapping and alignment unit, the one or more matching reference sequence positions to a seed match set.
[0031] In some specific implementations, determining by the mapping and comparison unit whether to store the first information describing the interval record as information describing a candidate optimal interval in a memory device may include: determining by the mapping and comparison unit that there is no previous information describing the interval record as a candidate optimal interval for the specific read segment; and storing by the mapping and comparison unit the first information describing the interval record as information describing a candidate optimal interval in the memory device.
[0032] In some specific implementations, the method may also include: obtaining, by the mapping and alignment unit, a response to the subsequently executed query, the response including information stored at a location of the hash table determined to be responsive to the query; determining, by the mapping and alignment unit, whether the response to the subsequently executed query includes (i) a second extension record, (ii) a second interval record, or (iii) one or more matching reference sequence locations; and determining, by the mapping and alignment unit, based on determining, by the mapping and alignment unit, that the response to the subsequently executed query includes (i) the second extension record or (ii) the second interval record: determining, by the mapping and alignment unit, whether to access an extension table to obtain the information in the extension table. one or more matching reference sequence positions referenced by the second interval record; based on determining not to access the extension table: using one or more heuristic rules and by the mapping and alignment unit to determine whether the second information describing the second interval record or the first information describing the candidate optimal interval will be used as the candidate optimal interval; generating a second extension seed by the mapping and alignment unit using the second extension record, the second extension seed being an extension of the first extension seed; generating a third hash query including the second extension seed by the mapping and alignment unit; and executing the third query including the second extension seed on the hash table by the mapping and alignment unit.
[0033] In some specific implementations, using one or more heuristic rules and determining by the mapping and comparison unit whether the second information describing the second interval record or the first information describing the candidate optimal interval will be used as the optimal interval may include: selecting the second information describing the second interval record or the first information describing the candidate optimal interval record based on multiple factors, the multiple factors including (i) the number of matching reference sequence positions returned by each of the interval record and the second interval record, (ii) a predetermined threshold level of reference sequence positions, or (iii) each seed length reaching the corresponding seeds of the hash positions storing the interval record and the second interval record.
[0034] In some implementations, the interval record references a plurality of positions in the seed extension table, the plurality of positions comprising data describing reference sequence positions that match the first seed of the query.
[0035] In some implementations, the plurality of positions in the seed extension table that include data describing reference sequence positions that match the first seed of the query may include a contiguous interval of reference sequence positions in the extension table that match the first seed of the query.
[0036] Unless otherwise defined, all technical and scientific terms used herein have the same meaning as those generally understood by those of ordinary skill in the art to which the present invention belongs. Although methods and materials similar or equivalent to the methods and materials described herein can also be used in the practice or testing of the present invention, suitable methods and materials are as follows. All publications, patent applications, patents and other references mentioned herein are incorporated herein by reference in their entirety. In the event of a conflict, this specification and the definitions included therein shall prevail. In addition, the materials, methods and examples are merely illustrative and are not intended to be limiting.
[0037] These and other aspects of the disclosure are discussed in more detail below in the detailed description, with reference to the figures and claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0038] Figure 1 is a diagram of a system for generating a hash table index that facilitates flexible seed extension of hash table genome mapping.
[0039] Figure 2 is a flow chart of a process for generating a hash table index that facilitates flexible seed extension of hash table genome mapping.
[0040] Figure 3 is a diagram of a runtime system for performing runtime-flexible seed extensions of hash table genome mapping.
[0041] Figure 4 is a flow chart of a process for performing runtime flexible seed extension of hash table genome mapping.
[0042] Figure 5 is a flow chart of a process for performing iterative runtime flexible seed extension of hash table genome mapping for each seed of a read.
[0043] Figure 6 is a schematic diagram of system components that can be used to implement the system described herein in connection with flexible seed extension of hash table genome mapping.
[0044] Figure 7is an illustration of a bar graph showing data representing test results as a percentage of unmapped reads in a system using the flexible seed extension method as described herein, compared to test results in a system not using the flexible seed extension method.
[0045] Figure 8 is an illustration of a line graph showing data representing test results in the form of read mapping accuracy in a system using the flexible seed extension method as disclosed herein, and compared to test results in a system not using the flexible seed extension method. DETAILED DESCRIPTION
[0046] The present disclosure describes the construction and use of hash table indexes, which are conducive to flexible seed extension to improve the performance of genome mapping and alignment systems. As used herein, the term "seed" refers to a subset of ordered nucleotides present in a nucleic acid read ("read") or a nucleic acid reference sequence ("reference sequence"). By way of example, a short seed of a read may have, for example, 21 bases or nucleotides, which are extracted from, for example, 150 bases or nucleotides generated by a nucleic acid sequencer ("sequencer") based on a biological sample input into the sequencer. Such short seeds may match hundreds, thousands, hundreds of thousands or even more positions of a reference sequence. The seed of a reference sequence may include a subset of ordered nucleotides from a reference sequence, which represents a reference sequence position. The identification of such a large number of reference sequence positions that match a specific short seed of a read may occur for a variety of reasons, including the appearance of a repetitive sequence such as "...ATATAT...", which may occur at many positions in a reference sequence. Alternatively or additionally, such a large number of matching reference sequence positions may arise because many close copies of the genomic sequence may be present in the reference sequence.
[0047] These large numbers of reference sequence positions that match a particular short seed may cause resource strain on a conventional mapping and alignment unit that uses a conventional hash table index, because the mapping and alignment engine may be forced to process a large number of matches. Such excessive processing of a large number of reference sequence positions that match a particular short seed results in unnecessary consumption of computing resources, including occupying a large amount of processing resources, memory resources, and wasting power used to power processing resources, memory devices, and cooling units that are used to cool processing resources and memory resources, or any combination thereof.
[0048] Conventional methods have been adopted to solve the problems that may arise from identifying and processing a large number of reference sequence positions that match short seeds. For example, a conventional method that uses an extension record stored in a hash table position to iteratively extend a short seed has been adopted. Such methods include, for example, the method described in U.S. Patent No. 10,083,276, which is incorporated herein by reference, and the method of the patent can return an "extension record" that is stored in the position of the seed corresponding to the hash query of the hash table. The extension record can be used to create an extension seed by symmetrically increasing the length of the seed in the received hash query, and the increase in seed length is achieved by adding one or more bases or nucleotides at each end of the seed. Conventional systems can then use another hash query including the extension seed to query the hash table again. This other hash query with an extension seed may correspond to a hash position that identifies fewer reference positions that match the extension seed because the extension seed is longer. The iterative process can continue until (i) the resulting set of matches is sufficiently shrunk to include less than a threshold number of reference sequence positions that match the extended seed, (ii) the set of matches becomes empty, (iii) the maximum seed extension is reached, or (iv) the next extension cannot be performed because the extension will move beyond the edge of the read segment that is the basis of the short seed. Crucially, in conventional systems, the mapping and alignment unit can only obtain a non-empty set of matched reference positions when the iterative process terminates in the above manner (i), but not when the iterative process terminates in any of the above manners (ii), (iii) or (iv).
[0049] These conventional methods can help reduce the number of reference sequence positions that match short seeds. However, these conventional methods have three significant problems.
[0050] First, conventional methods can be susceptible to the "unmapped read problem". The unmapped read problem occurs when a conventional seed extension method returns zero matches for an extended seed. Such a set of zero match results can occur if the extended seed incorporates variants such as SNPs, or if the extended seed extends beyond the edge of the read to which the extended seed corresponds. If this occurs for every seed position of a read when using conventional methods, then the read is likely unmapped.
[0051] Second, conventional methods may be susceptible to the "high confidence mismapping" problem. Such a high confidence mismapping problem occurs when an extended seed includes a variation such as a SNP but still matches one or more reference positions. Such mappings may be characterized by a high confidence score, such as a high MAPQ score, even if the extended seed is incorrectly mapped. If this occurs for every seed position of a read when using conventional methods, the read may be mismapped, possibly with high confidence. For such mappings, contrary evidence may be lost. High confidence mismappings may cause greater damage to the overall accuracy of the mapper than low confidence mismappings. The MAPQ score may include a quality score that quantifies the probability that a mapped read is misplaced.
[0052] Third, conventional methods may be susceptible to the "fixed maximum number of matches problem". Generally speaking, the hash table constructed for seed extension uses a maximum match parameter M, such as M=16. This parameter ensures that no leaf node in the seed extension tree exceeds the parameter M. However, some applications may benefit from using a different maximum match parameter M*, such as M=64. Conventional seed extension methods will continue to iteratively extend the seed until a leaf node is reached. Therefore, unless the hash table is rebuilt so that the maximum match parameter M is set to 64, the application using the conventional method cannot stop the extension of the seed when the matching set of M=64 is reached.
[0053] The innovative aspects of the present disclosure may be used to perform flexible seed extension in a manner that: (i) reduces the consumption of computing resources and power as described herein, and (ii) addresses problems with conventional seed extension methods, such as those described above. To achieve these advantages, the present disclosure particularly provides "interval records" that can be stored in hash table locations. For a particular seed, the interval record identifies a contiguous set of reference sequence positions stored in a seed extension table that match the particular seed. When performing a hash query to identify a particular seed, the mapping and alignment unit may determine, based on the contents of the hash location in response to the query, whether to (i) extend the seed based on the seed extension record stored at the hash location, (ii) store an interval record identifying a reference position matching the particular seed in the seed extension table, or (iii) access a reference sequence position in the seed extension table identified by the interval record stored at the hash location. In some implementations, a combination of these operations may be performed, such as extending the seed and storing the interval.
[0054] Thus, using interval records in conjunction with one or more extension records enables the mapper and aligner to reduce the number of matching positions to be processed by the mapping and aligning unit through seed extension, while also providing flexibility to the mapping and aligning unit in determining whether a matching reference position identified using dynamic seed extension is accurate, or in some cases, whether seed extension using one or more extension records should occur. This results in a mapping and aligning unit that uses less power and fewer computational resources than other mapping and aligning units utilizing conventional seed extension techniques, while also being more accurate.
[0055] Generation of Hash Table Index with Flexible Seed Extension
[0056] Figure 1 1 is a diagram of a system 100 for generating a hash table index that facilitates flexible seed extension of a hash table genome map. The system 100 includes a computer 110, a memory 112, and a memory 130. Although the memories 112 and 130 are Figure 1 110 as separate memory devices, but the present disclosure need not be limited to this. Instead, in some implementations, memory 112 and memory 130 may be the same memory device. For example, memory 112 and memory 130 simply refer to two separate storage locations on a single memory device. Alternatively, memory 112 and memory 130 may each be stored in separate memory devices, such as separate hard disks accessible to computer 110. For another example, memory 112 may be a memory device of a cloud-based server storing a reference genome library, and memory 130 may be a local memory of computer 110. Therefore, in Figure 1 The depiction of memory 112 and memory 130 as separate memories in illustrative embodiments does not limit the memories 112 , 130 themselves or the contents of these memories, and does not require that these memories must be organized or stored to utilize any particular implementation of the present disclosure.
[0057] The computer 110 may include one or more computers, each of which includes one or more processing units configured to perform operations by executing one or more software instructions. The 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. The computer 110 may be configured to interact directly with the memory 112, the memory 130, or the programmable circuit 162 via a direct connection such as one or more buses, one or more USB cables, one or more USB-C cables, etc., or any combination thereof. Alternatively or in addition, the computer 110 may be configured to interact with the memory 112, the memory 130, or the programmable circuit 162 via one or more networks. The one or more networks may include a wired Ethernet network, a wireless network, an optical network, a LAN, a WAN, a cellular network, the Internet, or any combination thereof.
[0058] By way of example, one implementation may include a computer 110 configured to (i) interact with a memory 112 and a memory 130 stored in one or more local memory devices accessible to the computer 110 to generate a seed extension table 132 and a hash table 140, and (ii) transmit the generated seed extension table 132 and hash table 140 to a programmable circuit 162 integrated with another device 160 using one or more networks. The other device 160 may include a nucleic acid sequencer, a cloud-based server, or any other computer. In some implementations, the programmable circuit 162 may be integrated with the other device using an expansion card such as a PCI card. In such implementations, the programmable circuit 162 may be housed on a logic board of a PCI card that is plugged into the motherboard using a PCI port on the motherboard of the sequencer, cloud-based server, or the other computer.
[0059] Programmable circuitry 162 may include one or more programmable integrated circuits, such as one or more field programmable gate arrays (FPGAs). Field programmable gate arrays are a class of integrated circuits that include multiple hardware digital logic gates, hardware digital logic circuits, and the like that can be dynamically configured to implement one or more processing modules, such as a genome analysis module (such as mapping and alignment unit 170) of a genome analysis pipeline, or a portion of a processing module (such as hash table 140). FPGAs can be programmed using a hardware description language (HDL) such as very high speed integrated circuit hardware description language (VHDL), Verilog, and the like. FPGAs are flexible because an FPGA that has been previously programmed to include one or more genome analysis modules of a genome analysis pipeline, or portions thereof, can be dynamically reconfigured to include updates to one or more genome analysis modules, other different genome analysis modules, and the like.
[0060] Other types of integrated circuits may be used to replace or assist the programmable circuit 162 to implement the functions of the programmable circuit 162 described herein. For example, one or more application-specific integrated circuits (ASICs) may be used to implement the functions or part of the functions of the programmable circuit 162. An ASIC is a custom integrated circuit including a plurality of hardware digital logic gates, a plurality of digital logic circuits, etc. configured at the time of manufacture. The similarity between an ASIC and an FPGA described herein is that the hardware digital logic gates or a plurality of digital logic circuits of the ASIC may be described or designed using a hardware description language such as VHDL, Verilog, etc. The ASIC may then be manufactured or printed to include the digital logic or digital circuit described by the HDL. However, once manufactured or printed, the ASIC cannot be dynamically reconfigured like an FPGA. Although the examples described herein describe programmable or custom circuits, the present disclosure need not be limited thereto. In some specific implementations, for example, other types of integrated circuits may be used to implement the functions described as being performed by the programmable circuit 162.
[0061] Memory 112 may store one or more reference sequences 114. A reference sequence may include (i) a complete reference genome representing a species, (ii) a portion of a reference genome representing a species, or (iii) complete and / or partial reference genomes representing multiple species. A reference sequence includes an ordered list of bases or nucleotides. The ordered list of bases or nucleotides that make up a reference sequence may be organized in memory 112 as a digital nucleic acid sequence database. A particular reference sequence may be assembled by a person, a computer, or both from multiple different donors of a particular species as representative of that species.
[0062] In some implementations, a specific reference sequence can be assembled to represent a specific group, wherein the specific group is a subset of a species with a specific nucleic acid sequence that can uniquely separate the specific group from other groups within the species. Species may include any species, including humans, non-human mammals, reptiles, fish, insects, plants, bacteria, viruses, etc. Reference sequences can be generated from samples of non-extinct species (such as humans) or currently extinct species (such as dinosaurs or mammoth groups). Reference sequences of extinct species can be assembled using samples obtained from biological materials contained in fossils, frozen or otherwise preserved remains of extinct species such as dinosaurs. Reference sequences of extinct species can be assembled from a combination of (i) sequencing biological remains from fossil remains of extinct species and (ii) sequencing biological samples from non-extinct species. A complete reference genome may include many ordered bases or nucleotides. For example, a human reference genome may include up to 3 billion ordered bases or nucleotides.
[0063] The computer 110 is configured to generate a hash table 140 that facilitates flexible seed extension. The computer 110 begins generating the hash table 140 by accessing a reference sequence 114 stored in a memory 112 and obtaining seeds 114-1, 114-2, 114-3 to 114-n of the reference sequence, where n is any non-zero integer greater than zero. In some implementations, the computer 110 may use a seed access window to identify and obtain seeds 114-1, 114-2, 114-3 to 114-n of the reference sequence 114. The computer 110 may initialize the seed access window to have a seed length K, where K is the number of bases or nucleotides to be included in each seed, where K is any non-zero integer greater than zero. The computer 110 may begin accessing the seeds of the reference sequence 114 by positioning a seed access window of length K at the beginning of the reference sequence to cover the first group of K nucleotides in the reference sequence, such as seed "GTTTA" 114-1. In this example, K is equal to 5, but K is not limited to such a nucleotide length. Instead, K may be equal to any non-zero integer greater than zero, and in some implementations 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 a set of 4 sequence seeds corresponding to reference sequence 114 is not required in this example.
[0064] 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 sequence 114 and perform a set of operations on each seed 114-1, 114-2, and 114-3 to 114-n. The set of operations is designed to generate information for storage in the hash table 140 corresponding to a hash position 144 of an index key 142 of the hash table 140. Each index key 142 may correspond to a corresponding seed of the plurality of seeds 114-1, 114-2, 114-3 to 114-n of the reference sequence 114, a reverse complement sequence of each of the seeds 114-1, 114-2, 114-3 to 114-n, an extended seed of one or more of the plurality of seeds 114-1, 114-2, 114-3 to 114-n, or a reverse complement sequence in each extended seed. Each seed in index seeds 142 may be mapped to a hash position 144 using a hash function 143 .
[0065] The computer 110 may identify and access each of the plurality of seeds 114-1, 114-2, and 114-3 to 114-n by advancing the seed access window by K positions in the reference sequence 114 after each respective seed is accessed and used to perform the set of operations. The set of operations performed on each respective seed 114-1, 114-2, and 114-3 to 114-n is described in more detail below. The set of operations may include populating a hash table 140 with the generated information. Alternatively, the populating of the hash table 140 may occur after the set of operations for each seed is completed.
[0066] The first step of the set of operations performed by computer 110 on each seed 114-1, 114-2, and 114-3 to 114-n of reference sequence 114 is for computer 110 to obtain a seed identified by a seed access window. Figure 1 In the example of FIG. 1 , assume that the seed identified by the seed access window of the reference sequence 114 is “GTTTA” 114 - 1 .
[0067] The computer 110 may determine whether the obtained seed "GTTTA" 114-1 matches more than a predetermined number of reference sequence 114 positions. The matched reference sequence positions may include a subset of the reference sequence 114 that includes the seed 114-1. The subset of the reference sequence 114 may include a set of ordered nucleotides that is greater than or equal to K nucleotides in the obtained seed. In some implementations, the predetermined number of matched reference sequence positions may include one matched reference sequence position. However, in other implementations, the predetermined number may be set to more than one matched reference sequence position.
[0068] If computer 110 determines that seed 114-1 matches less than or equal to a predetermined number of reference sequence positions, the computer may populate the reference positions that match seed 114-1 into hash position 144 reached by seed "GTTTA" 114-1. Hash position 144 may be "reached" by seed 114-1 if a seed such as seed 114-1 matches a hash key 142 that is mapped to a hash position by hash function 143. Alternatively, if computer 110 determines that a predetermined number of matching reference sequence positions is greater than a predetermined number of reference sequence positions, computer 110 may generate a seed extension tree for seed 114-1. Figure 1 In the example of FIG. 1 , computer 110 determines that seed “GTTTA” 114 - 1 matches more than a predetermined number of reference sequence positions. Therefore, computer 110 generates a seed extension tree 120 for seed 114 - 1 .
[0069] The computer 110 may generate a seed extension tree 120 for the seed 114-1, node by node, starting from the root node 120. The seed extension tree 120 may be generated so that a set of matching reference positions identified by a leaf node does not exceed a predetermined match limit unless further seed extension is not possible. Each node of the seed extension tree 120 may include a seed and an interval of consecutive addresses in a seed extension table 132. In some specific implementations, the seed extension table 132 includes a central lexicographically ordered list of 131-1 to 131-6 reference sequence positions that match a seed (such as, seed 114-1 obtained by the computer 110 using a seed access window). The central lexicographic ordering may include, for example, establishing a priority order of symbol positions and then alternating left and right starting from the central symbol. Alternatively, the central lexicographic ordering may include, for example, establishing a priority order of symbol positions and then alternating right and left starting from the central symbol. However, other variations may be used.
[0070] exist Figure 1 In the example of FIG. 1 , the seed extension table 132 is lexicographically sorted 133 based on the seed 114-1 "GTTTA". This example assumes left-start order and normal alphabetical nucleotide order (i.e., A, C, G, T) to achieve Figure 1 The center dictionary sort order shown. The computer 110 can generate a seed extension table, such as a seed extension table 132, for each seed 114-1, 114-2, 114-3, 114-n that is determined to have more than a predetermined threshold number of matching reference sequence positions. In some specific implementations, for each qualified seed, the seed extension table 132 can be generated for the particular seed after the computer 110 accesses the particular seed using the seed access window and before the seed extension tree 120 is generated for the seed.
[0071] The description of the nodes of the seed extension tree 120 above indicates that the interval of the address of each node is continuous. However, the present disclosure need not be limited to this. On the contrary, the interval of the address of the node can be non-continuous. For example, a specific implementation may use intervals to describe multiple different sets of one or more continuous positions of a seed extension table, or other data structures stored in one or more memory devices, wherein each continuous set of one or more continuous positions is non-continuous relative to each other. That is, there may be a break in continuity between each corresponding set.
[0072] The seed extension table for each qualified seed may be stored in the memory 130. This may generate n seed extension tables, i.e., one seed extension table for each of the n seeds of the reference sequence 114. Alternatively, the number of seed extension tables may be less than n, such as if seed extension tables are generated and stored only for seeds having a matching reference sequence position exceeding a predetermined threshold number. After each seed extension table is generated, a set 132A of each of the seed extension tables may be provided to the device 160 housing the programmable circuit 162 and stored in a memory 180 accessible to the programmable circuit 162. The memory 180 may include a DRAM memory, an SRAM memory, a NAND memory, etc. In some implementations, the set 132A of seed extension tables may be provided to the device 160 housing the programmable circuit 162 as separate seed extension tables. In other implementations, the set 132A of seed extension tables may be provided as a single master seed extension table, which is composed of a cascade of each of the corresponding seed extension tables for each seed. The set 132A of seed extension tables may be provided in any number of formats. In some implementations, the set 132A of seed extension tables may be compressed by the computer 110 to reduce the size of the seed extension table file provided to the device 160 and then decompressed by the device 160 , programmable circuit 162 , etc. for storage in the memory 180 .
[0073] The computer 110 may generate the root node 121 of the seed extension tree 120 to include the seed "GTTTA" 121a and interval A 121b. Interval A 121b identifies a continuous interval of locations in the seed extension table 132 storing reference sequence locations that match the seed "GTTTA" 121a represented by the root node 121. In this example, interval A identifies locations of the seed extension table 132 that span 131-1 to 132-6 and include "TAGTTTACT", "TAGTTTATC", "GAGTTTATG", "ACGTTTAGT", "TCGTTTAGT", and "ACGTTTAGC". The computer 110 may determine one or more appropriate intervals for a particular seed of a node, such as node 121, by accessing the seed extension table 132 to determine the locations of the seed extension table 132 that have reference sequence locations that match the seed.
[0074] In some implementations, the starting position address of the interval in the seed extension table 132 and the ending position address of the interval in the seed extension table 132 may be used to describe the interval 121b for a specific seed of a node such as node 121. In other implementations, the starting position address of the interval in the seed extension table 132 and the offset from the starting position address may be used to describe the interval 121b for a specific seed of a node such as node 121. In such implementations, the starting address and the ending address of the interval or the starting address and the offset of the interval may be used to calculate the interval later. However, the present disclosure need not be limited to this. Instead, it should be understood that any form of information structured or unstructured in any appropriate manner may be used to represent the interval record in the hash table position 144. For example, in some implementations, the interval record may be implemented using one record of a fixed size and format. In other implementations, the interval record may be implemented by selecting from a plurality of formats of different sizes, including record counts, etc., to optimize the storage space consumed by the hash table 140, enable the compressibility of the hash table 140, improve the efficiency of hash queries relative to other interval record formats, etc.
[0075] The computer 110 may continue to generate the seed extension tree 120 by extending the number of bases or nucleotides identified in the root node for the seed 121a. For example, the computer 110 may extend 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 extension table that have 7 matching bases or nucleotides. Figure 1 In the example of , the computer 110 may determine that the largest subset of reference sequence positions having 7 matching nucleotides is "CGTTTAG". Interval B identifies a continuous interval of positions in the seed extension table 132 that stores reference sequence positions that match the seed "CGTTTAG". In this example, interval B identifies positions of the seed extension table 132 that span 132-4 to 132-6 and include "ACGTTTAGT", "TCGTTTAGT", and "ACGTTTAGC". The computer 110 may generate a node 122 using information determined using the seed extension table 132. For example, the computer 110 may generate the node 122 to include the seed "CGTTTAG" 122a and interval B 122b.
[0076] refer to Figure 1 For example, computer 110 may continue to generate seed extension tree 120 by determining whether there are other reference sequence positions with 7 matching bases or nucleotides in the seed extension table. If there are other reference sequence positions with 7 matching bases or nucleotides in seed extension table 132, computer 110 generates the next node of the seed extension tree using the second largest set of reference sequence positions with 7 matching bases or nucleotides. Figure 1In the example of , the computer 110 may determine that the second largest subset of reference sequence positions having 7 matching nucleotides is "AGTTTAT". Interval B identifies a continuous interval of positions in the seed extension table 132 that stores reference sequence positions that match the seed "AGTTTAT". In this example, interval E identifies positions of the seed extension table 132 that span 132-2 to 132-3 and include "TAGTTTATC" and "GAGTTTATG". The computer 110 may generate a node 123 using information determined using the seed extension table 132. For example, the computer 110 may generate a node 123 to include the seed "AGTTTAT" 123a and interval E 123b.
[0077] refer to Figure 1 For example, computer 110 may continue to generate seed extension tree 120 by determining whether there are other reference sequence positions in the seed extension table that have 7 matching bases or nucleotides. If other reference sequence positions in the seed extension table are identified as having 7 matching bases or nucleotides, computer 110 may generate new nodes of seed extension table 120 using the second largest set of reference sequence positions that have 7 matching bases or nucleotides, as described above. However, in Figure 1 In this example, there are no other reference sequence positions with 7 matching bases or nucleotides in the seed extension table 132. Therefore, the computer 110 may determine to extend the number of bases of the nucleotide from 7 to 9 and continue analyzing the reference sequence positions in the seed extension table 132.
[0078] refer to Figure 1 In the example of , computer 110 may identify the largest subset of reference sequence positions with 9 matching nucleotides. In this example, there are multiple subsets of reference sequence positions with 9 matching nucleotides. In such cases, computer 110 may determine to create nodes of a seed extension tree for each set of reference sequence positions with 9 matching reference sequence nucleotides. In some implementations, computer 110 may randomly determine the order in which the seed extension tree nodes are created. In other implementations, computer 110 may begin to generate these nodes based on the central dictionary order of subsequent extension tree nodes.
[0079] Regardless of the order in which they are created, the computer 110 can continue by generating a node of a seed extension table for each subset of reference sequence positions with 9 matching nucleotides. By way of example, the computer 110 can generate a node 124 of a seed extension tree 120 to include an extended short seed "TCGTTTAGT" 124a and an interval C 124b. Interval C 124b identifies a continuous interval of positions of reference sequence positions that match the short seed "TCGTTTAGT" 124a in the seed extension table 132. In this example, interval C identifies a position that spans 132-5 of the seed extension table 132 and includes "TCGTTTAGT". The computer 110 can determine an appropriate interval for the short seed of node 124 by accessing the seed extension table 132 to determine the position of the reference sequence position of the seed extension table 132 that matches a specific short seed of a node such as node 124.
[0080] refer to Figure 1 , the computer 110 may continue by generating a node of the seed extension table for each subset of reference sequence positions having 9 matching nucleotides. By way of example, the computer 110 may generate a node 125 of the seed extension tree 120 to include an extended short seed "ACGTTTAGC" 125a and an interval D 125b. Interval D 125b identifies a continuous interval of positions in the seed extension table 132 storing reference sequence positions that match the short seed "ACGTTTAGC" 125a. In this example, interval D identifies a position of the seed extension table 132 spanning 132-6 and including "ACGTTTAGC". The computer 110 may determine an appropriate interval for a particular short seed of a node, such as node 125, by accessing the seed extension table 132 to determine the position of the seed extension table 132 having reference sequence positions that match the short seed.
[0081] refer to Figure 1 , the computer 110 may continue by generating a node of the seed extension table for each subset of reference sequence positions having 9 matching nucleotides. By way of example, the computer 110 may generate a node 126 of the seed extension tree 120 to include an extended short seed "TAGTTTATC" 126a and an interval F 126b. Interval F 126b identifies a continuous interval of positions in the seed extension table 132 storing reference sequence positions that match the short seed "TAGTTTATC" 126a. In this example, interval F identifies a position of the seed extension table 132 spanning 132-2 and including "TAGTTTATC". The computer 110 may determine an appropriate interval for the short seed of node 126 by accessing the seed extension table 132 to determine the position of the reference sequence position of the seed extension table 132 that matches a particular short seed of a node such as node 126.
[0082] The present disclosure describes the example of constructing a seed extension table with a specific ordered sequence from the maximum set of matching bases to the minimum set of matching bases. However, the present disclosure does not need to be limited to using a seed extension tree constructed in this manner. On the contrary, 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 according to the maximum set from the minimum set of matching bases to the matching bases, or not in a specific order at all. In some specific implementations, system 100 can generate and use a previously generated seed extension table, without the need for system 100 to construct a seed extension table.
[0083] The computer 110 may use the generated seed extension tree 120 to fill the hash positions 144 of the hash table 140, which are reached by the specific seed input corresponding to the specific hash index key 142. By way of example, the computer 110 may determine whether the node 121 is a leaf node. Based on the determination that the node 121 is not a leaf node, the computer 110 may use the root node 121 to fill the hash position 144-y, where y is any non-zero integer. Filling the hash position 144-y with the root node 121 may include storing the interval record 153b in the hash table position 144-y reached by the seed 121a. The interval record 153b identifies the interval 121b of the node 121. The hash table 140 may include the hash table index key 142 of each seed 114-1, 114-2, 114-3 to 114-n, the reverse complement sequence of each seed 114-1, 114-2, 114-3 to 114-n, or a combination thereof. Each hash table index key 142 may be mapped to one or more hash locations 144 using a hash function 143. Each hash location 144 may be implemented using one or more storage buckets, where a storage bucket corresponds to a set of one or more storage locations of a memory device. Each of the one or more storage locations of a memory device may be a contiguous or non-contiguous memory location.
[0084] Figure 1The example of only shows a portion of hash table 140, which has a key 142 corresponding to the forward seed in seeds 121, 122, 123 and 125. However, the present disclosure need not be limited to this. For example, in some specific implementations, a hash function 143 can be used to hash the seed so that the reverse complementary nucleotide sequence of any seed produces the same hash as the original forward seed. The reverse complementary sequence of the nucleotide sequence can be determined by reversing the order of the original nucleotide sequence and exchanging A with T, T with A, C with G, and G with C. By way of 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 complementary sequence (i.e., TAAAC) of the seed GTTTA. In such specific implementations, when the matching reference sequence position is stored in the hash position 144 or as an entry in the seed extension table 132, their sequence orientation can be annotated using, for example, a reverse complementary (RC) tag. However, in other implementations, the reverse complement of the seed may result in a different hash, and the orientation need not be annotated in the hash position 144 stored in the hash table 140 or the matching reference sequence position in the seed extension table 132 .
[0085] Populating the location 144 of the hash table 140 may also include determining whether to populate the extension record into the hash location 144. Determining whether the extension record should be populated into the hash location 144 may include determining whether the node of the seed extension tree 120 used to populate the hash location is a leaf node. If it is determined that the node is a leaf node, the computer 110 may determine not to store the extension record in the hash location reached by the seed associated with the node. Alternatively, if it is determined that the node is not a leaf node, the computer 110 may generate an extension record and store the generated extension record in the hash table location 144. Reference Figure 1 In the example of , computer 110 may determine or have previously determined that node 121 is not a leaf node. In such a case, computer 110 may generate extension record 153a and store it in hash table location 144-y reached by seed 121a. Thus, hash location 144-y may include extension record 153a and interval record 153b.
[0086] An extension record may include one or more instructions that, when executed by a computer such as a central processing unit (CPU) or a graphics processing unit (GPU) or programmable circuit 162 executing software instructions, may cause the CPU, GPU, or programmable circuit 162 to extend a seed used in a hash query to a hash location that stores the extension record by one or more nucleotides. In some implementations, an extension record may be generated such that the extension record instructs the computer to extend the seed symmetrically at each end of the seed. Thus, by way of example, an extension record may be generated to instruct a computer such as a CPU, GPU, or programmable circuit 162 to extend the seed by two nucleotides, four nucleotides, six nucleotides, and the like. In such implementations, symmetrical extension of the seed may be achieved by extending the seed by one nucleotide on each corresponding end of the seed, by two nucleotides on each corresponding end of the seed, by three nucleotides on each corresponding end of the seed, and the like. In Figure 1 In the example of , the extension record 153a is configured to symmetrically extend the initial seed 121a by 2 bases. The computer 110 may determine the extension length for inclusion in the extension record based on a variety of factors, including (i) the number of reference sequence positions that match the seed, (ii) the number of runtime seed extension iterations required, (iii) the number of matching reference sequence positions searched for each iteration, etc. Figure 3 Runtime flexible seed extension using hash table 140 is described in more detail.
[0087] The seed of nucleotide has been generally described as being composed of a continuous set of ordered nucleotides. Similarly, the extension record is described as orderly extending the continuous set of ordered nucleotides by one or more additional nucleotides in a symmetrical or asymmetrical but still continuous manner. However, the present disclosure is not limited to the use of a continuous set of ordered nucleotides. On the contrary, the seed of a read or reference sequence can be a discontinuous pattern of a seed from a read or reference sequence. Similarly, the extension record may include an instruction that, when processed by a CPU, GPU, or programmable circuit 162, causes the CPU, GPU, or programmable circuit 162 to extend the initial seed to combine discontinuous nearby bases or nucleotides. In such specific implementations, it may be considered to sort the matching reference sequence position of each root node seed in the seed extension table 132 using a discontinuous seed.
[0088] The computer 110 may continue to fill information into the hash location 144 of each remaining node 122, 123, 124, 125, 126 of the seed extension tree 120. By way of example, the computer 110 may determine whether the node 122 is a leaf node. Based on determining that the node 122 is not a leaf node, the computer 110 may use the node 122 to fill the hash location 144-3. Filling the hash location 144-3 with the node 122 may include storing the interval record 152b in the hash table location 144-3 reached by the seed 122a. The interval record 152b identifies the interval 122b of the node 122. The computer 110 may determine or have previously determined that the node 122 is not a leaf node, and generate the extension record 152a for storage in the hash location 144-3. In Figure 1 In the example of , extension record 152A includes instructions to symmetrically extend seed 122a by 2 bases or nucleotides. These instructions of extension record 152a may be executed at runtime if interval B is not accessed, for example, in response to a query for seed 122a.
[0089] However, the present disclosure is not limited in this regard, as other extension record scans are also generated that instruct the CPU, GPU, or programmable circuit 162 to extend the seed by different additional nucleotide lengths (e.g., 2, 4, 6, 8, etc.) or in different ways (e.g., asymmetrically using 1, 3, 5, etc. additional nucleotide lengths). Figure 1 The example of shows a single extension record in hash position 144-3, but the present disclosure is not limited thereto. On the contrary, in some specific implementations, multiple extension records may be stored in a single hash position 144-3. For example, the computer 110 may also store one or more additional extension records in the hash position 144-3, and these additional extension records are configured to extend the initial seed 122a by four bases. In such specific implementations, the CPU, GPU, or programmable circuit 162 may first try to extend the initial seed 122A by four bases at runtime. If such seed extension fails, because the subsequent query of the hash table 140 at runtime does not produce a matching reference sequence position, the CPU, GPU, or programmable circuit may obtain another extension record 152A, which includes an instruction to extend the initial base by only 2 bases. This can increase the possibility of returning a matching reference sequence position.
[0090] The computer 110 may continue to fill information into the hash position 144 of each node 123, 124, 125, 126 of the seed extension tree 120. By way of example, the computer may determine whether the node 123 is a leaf node. Based on determining that the node 123 is not a leaf node, the computer 110 may use the node 123 to fill the hash position 144-1. Filling the hash position 144-1 may include storing the interval record 150B in the hash table position 144-1 reached by the seed 123a. The interval record 150b identifies the interval 123b of the node 123. The computer 110 may determine or have previously determined that the node 123 is not a leaf node, and generate an extension record 150a for storage in the hash position 144-1. In this example, the extension record 150a includes instructions to symmetrically extend the seed 123a by 2 bases or nucleotides. These instructions of extended record 150a may be executed at runtime if interval E is not accessed, for example, in response to a query to seed 123a.
[0091] The computer 110 may continue to populate information into the hash location 144 of each node 124, 125, 126 of the seed extension tree 120. By way of example, the computer 110 may determine whether the node 125 is a leaf node. Based on determining that the node 125 is a leaf node, the computer 110 may determine to populate the hash table 140 by storing the matching reference sequence position 155 that matches the seed "ACGTTTAGC" identified by the interval D 125b in the hash location 144-2. Alternatively, in other specific implementations, the computer 110 may determine to store the interval record identifying the interval D 125b in the hash location 144-2. In some specific implementations, such a determination may be made by the computer 110 based on whether storing each matching reference sequence position in the hash table location 144 for the leaf node is the best use of memory resources. Therefore, if it is determined that storing the matching reference sequence position in hash table location 144 for a leaf node does not meet the predetermined threshold usage of memory resources, the computer 110 may store the matching reference sequence position in the hash location reached by the seed of the leaf node of the seed extension tree. Otherwise, if the memory resource usage threshold is exceeded, the computer 110 may store the interval record in the hash location 144 reached by the seed of the leaf node of the seed extension tree. The computer 110 may determine or have previously determined that node 125 is a leaf node and does not generate an extension record for storage in hash location 144-2. Therefore, in this example, no further extension of the seed "ACGTTTAGC" will occur at runtime.
[0092] As described above, hash position 144-2 may store only matching reference sequence positions that match seed 125a and correspond to hash key 142-1. This is because, in this example, seed 125a is a leaf node 125 seed that cannot be extended. However, filling the reference sequence position without one or both of the extension record or interval record is not limited to the hash position 144 reached by the seed of the leaf node. In contrast, in other cases, the computer 110 may determine to fill the hash position 144 with the matching reference sequence position without one or both of the extension record or interval record. For example, in some specific implementations, if the computer 110 determines that the seed extension table 132 for a particular seed only identifies an interval of matching reference sequence positions that is less than a threshold number of matching reference sequence positions, the computer 110 may fill the hash position 144 reached by the particular seed with the matching reference sequence position without one or both of the extension record or interval record.
[0093] Other types of information may be stored in the hash positions 144 of the hash table 140. For example, the computer 110 may receive an instruction to insert one or more "STOP" records into the hash positions 144 of the hash table 140. Such a "STOP" hash record may cause a particular hash position 140 storing an interval record or a set of one or more matching reference positions to return to (i) the interval record or (ii) the set of one or more matching reference positions without further extending the seed used to reach the hash position. In other specific implementations, the computer 110 may receive an instruction to insert a "STOP" record into a hash position that already includes an extension record. In such specific implementations, when the CPU, GPU, or programmable circuit 162 encounters a "STOP" record, the CPU, GPU, or programmable circuit 162 may conditionally determine whether to (i) ignore the extension record and return (i) the interval record or (ii) a set of one or more matching reference positions that match the seed used to reach the hash position with the "STOP" record, or (ii) perform the seed extension described by the extension record. In some implementations, the conditional determination can be made based on one or more factors, such as (i) the interval record or (ii) the number of matched reference sequences identified by the set of one or more matching reference sequence positions. Thus, the insertion of one or more "stop" records into a particular hash position in response to a corresponding input seed can be used as a design tool to avoid the fixed maximum mismatch problem without rebuilding a hash table such as hash table 140.
[0094] Computer 110 may continue to iteratively populate information into hash locations 144 of each remaining node of seed extension tree 120, such as nodes 124, 126. Entries for each of these leaf nodes may be populated in the manner described above with respect to node 125, since nodes 124, 126, like node 125, are leaf nodes.
[0095] In addition, the computer 110 may continue to Figure 1 In the example of reference seed "GTTTA" 114-1, the process described above is iteratively applied to each seed of the reference sequence 114. For example, once the seed "GTTTA" 114-1 has been processed as described above, the computer 110 may advance the seed access window to the next subsequent seed in the reference sequence, access the seed, and then iteratively perform the process described above with reference to seed "GTTTA" 114-1 for each of the n seeds of the reference sequence. These processes may include: obtaining a seed identified by the seed access window, determining whether the seed has more than a predetermined number of matching reference sequence positions, if there are more than a predetermined number of matching reference sequence positions, generating a seed extension tree, and then populating the hash table 144 using the seeds and intervals identified by the nodes of the seed extension tree. In some specific implementations, the computer 110 may also iteratively perform the same process described above with reference to seed "GTTTA" 114-1 to reverse complement each of the n seeds of the reference sequence 114. These iterative processes for each reference seed and each reverse complement sequence may ultimately result in a hash table 140 having x index entries and y hash positions, where for a particular reference sequence such as the human genome, x and y are each in the hundreds of millions or even billions.
[0096] In some implementations, hash table 140 can be used by a computer, such as computer 110, to perform runtime flexible seed stretching by using one or more CPUs, GPUs, or a combination thereof to perform a hash query on hash table 140 in software, thereby executing software instructions that, when executed, cause the one or more CPUs, GPUs, or a combination thereof to perform a reference to the hash table 140. Figure 3 and Figure 4 In other specific implementations, the computer 110 may generate a hash table installation package that includes software instructions for installing the hash table 140 and the set 132A of seed extension tables on another computer. For example, the hash table installation package may include software instructions that, when executed, execute Figure 2 The computer 110 may provide a hash table installation package including the software instructions to the other computer. The other computer may receive the hash table installation package and install the hash table 140 and the set 132A of seed extension tables. The other computer may then perform runtime flexible seed extension by using one or more CPUs, GPUs, or a combination thereof to perform a hash query on the hash table 140 in the software, thereby executing the software instructions, which, when executed, cause the CPU, GPU, or a combination thereof to perform a reference to the seed extension table. Figure 3 and Figure 4The process described.
[0097] However, in some implementations, the computer 110 may generate a hash table installation package 146 that includes hardware programming language instructions that may configure the programmable circuit 162 to implement the mapping and comparison unit 170 in a hardware digital logic circuit. The hardware programming language instructions may be in the form of a file, such as a binary bitstream file. The binary bitstream file may be generated by compiling hardware programming language code such as VHDL, Verilog, etc. that describes the circuit to be implemented by the programmable circuit 162 before it is included in the hash table installation package 146. When processed by the programmable circuit 162, the hardware programming language instructions of the hash table installation package may cause the programmable logic circuit to program the dynamically configurable logic circuit of the programmable logic circuit by using the reference Figure 3 and Figure 4 The process described performs a hash query on the hash table 140 in hardware to implement flexible seed extension. The hash table installation package 146 may also include a set of seed extension tables 132A and instructions for installing the set of seed extension tables 132A in a memory 180 accessible to the programmable circuit 162. The hash table installation package 146 may also include the hash table 140 and instructions for installing the hash table 140 in a memory 180 accessible to the programmable circuit 162. The programmable circuit 160 may be programmed to use the hash table 140 as part of the mapping / alignment unit 170 to perform mapping of short seeds to reference sequences, as described herein. Figure 3 The computer 110 may provide the hash table installation package to a device 160, such as a desktop computer, a laptop computer, a tablet computer, a smart phone, a cloud-based server, a sequencer, or other device housing the programmable circuit 160, using one or more networks, a direct connection such as one or more buses, a USB cable, a USB-C cable, or any combination thereof. The device 160 may receive the hash table installation package and program the programmable circuit 162 to implement the mapping and alignment unit 170 in the hardware logic gates of the programmable circuit 162 using the hardware programming language instructions of the hash table installation package.
[0098] Thus, the corresponding hash table installation package 146 can be used to manage the installation, use, and even removal of the hash table 140 and the seed extension table in a variety of different ways. For example, in some embodiments, the hash table 140 and the set of seed extension tables 132A can each be stored as a file on a hard disk or other storage medium, and then each can be loaded into a common memory such as DRAM including one or more components or modules for implementing runtime flexible seed extension before being accessed at runtime, as described with respect to the reference 1 herein. Figure 3 and Figure 4The process described above. However, in other specific implementations, the hash table 140 or the set of seed extension tables 132A may be stored together or separately, each as one or more different continuous portions in a memory device or non-contiguous portions of a memory device. Similarly, in runtime mapping or other operations, the hash table 140 or the set of seed extension tables 132A may be compressed or uncompressed, stored on a common or separate storage medium and / or memory, or cached or not cached, as long as there is some path and method for the runtime mapping and comparison unit 170 to access selected portions of both the hash table 140 and the set of seed extension tables 132A. In other specific implementations, the hash table 140 may be implemented entirely in hardware logic circuits of the programmable circuit 162, and the set of seed extension tables 132A may be stored in a memory 180 (such as a DRAM memory unit) accessible to the programmable logic circuit 162. In other implementations, hash table 140 may be stored in memory 180 (such as DRAM memory cells) accessible to programmable logic circuit 162 , and set 132A of seed extension tables may be implemented entirely in hardware logic circuits of programmable circuit 162 .
[0099] In some specific implementations, the computer 110 can also generate an installation package including a hash table and a seed extension builder, as described herein. The computer 110 can provide the installation package to another computer via a network. The installation package can be used to install the hash table and seed extension builder on another computer or a different computer so that a party that receives and installs the hash table and seed extension builder can build its own hash table and seed extension table from its own selected reference sequence and using its own selected settings. Therefore, the recipient of the hash table and seed extension builder installation package can build its own hash table from its own selected reference at any time, store the hash table on a disk, load the hash table into a memory 180 accessible to the programmable circuit 162, and use the programmable circuit 162 to perform mapping and comparison.
[0100] Figure 2is a flow diagram 200 of a process for generating a hash table index that facilitates flexible seed extension of hash table genome mapping. In general, process 200 may include: obtaining, by a computer system, a specific nucleotide seed from a reference sequence, the specific seed representing a nucleotide sequence having a nucleotide length of K nucleotides (210); determining, by the computer system, that the specific seed matches more than a predetermined number of reference sequence positions (220); based on determining that the specific seed matches more than a predetermined number of reference sequence positions, generating, by the computer system, a seed extension tree having a plurality of nodes, wherein each of the plurality of nodes corresponds to (i) an extension seed, the extension seed being an extension of the specific seed and having a nucleotide length of K*, wherein K* is one or more nucleotides greater than K, and (ii) a plurality of positions in a seed extension table, the plurality of positions comprising data describing reference sequence positions that match the extension seed (230), and for each of the plurality of nodes: storing, by the computer system, interval information at a position of a hash table corresponding to an index key of the extension seed, wherein the interval information references a plurality of positions in the seed extension table, the plurality of positions comprising data describing reference sequence positions that match the extension seed associated with the node (240), thereby generating the hash table. Process 200 will be described in greater detail below as being performed by a computer system, such as computer 110 .
[0101] In more detail, the computer system may begin executing process 200 by performing the following operations: the computer system obtains a specific nucleotide seed from a reference sequence, the specific seed representing a nucleotide sequence having a nucleotide length of K nucleotides (210). In some implementations, obtaining the specific seed may include determining, by the computer system, a position of a seed access window within the reference sequence. The computer system may then obtain a subset of the reference sequence identified by the seed access window. The computer system may include one or more computers.
[0102] The computer system may continue to perform process 200 by determining, by the computer system, whether the particular seed matches more than a predetermined number of reference sequence positions (220). If the computer system determines that the particular seed does not match more than a predetermined number of reference sequence positions, the computer system may determine not to generate a seed extension tree for the particular seed. Instead, the computer system may obtain data describing each reference sequence position that matches a second seed. The computer system may then store data describing the reference sequence positions that match the particular seed at a second position of the hash table corresponding to the index key of the particular seed.
[0103] Alternatively, if the computer system determines that the particular seed matches more than a predetermined number of reference sequence positions, the computer system may generate a seed extension tree (230) having a plurality of nodes. Each of the plurality of nodes may include data representing: (i) an extension 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 a seed extension table that include data describing reference sequence positions that match the extension seed. In some implementations, the plurality of positions may include a contiguous interval of reference sequence positions in the extension table that match the extension seed associated with the node.
[0104] The computer system may continue to perform process 200 by performing the following operations: for each node of the seed extension tree, storing interval information in a hash position of a hash table. In some embodiments, for each node of the seed extension tree, the computer system may store the interval information at a hash position of the hash table corresponding to the index key of the extension seed, thereby generating a hash table (240). The interval information may include references to multiple seed extension positions, and the multiple seed extension positions include data describing reference sequence positions that match the extension seed associated with the node. In some embodiments, the multiple seed extension table positions described by the interval information may include a continuous interval of positions in the seed extension table that include data describing reference sequence positions that match the extension seed.
[0105] Runtime flexible seed extension using hash table genome mapping
[0106] Figure 3 1 is a diagram of a runtime system 300 for performing runtime flexible seed extension for hash table genome mapping. The runtime system 300 includes programmable logic circuit 162, mapping and alignment unit 170, hash table 140, memory 18, and a plurality of seed extension tables stored in memory 180, such as seed extension table 132. Figure 3 The example of describes the mapping and matching unit 170 and the hash table 140 implemented in hardware using the hardware logic circuit of the programmable logic unit 162, but the present disclosure is not limited thereto. Instead, the mapping and matching 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.
[0107] The runtime flexible seed extension for hash table genome mapping performed by system 300 may first be accessed by mapping and alignment unit 170 to access current read 305. Current read 305 may be generated by a nucleic acid sequencer that has performed preliminary analysis on a biological sample. The preliminary analysis may include receiving a biological sample such as a blood sample, a tissue sample, or sputum by a nucleic acid sequencer, and generating output data such as one or more reads 305, which represent the nucleotide sequence in the nucleic acid sequence in the received biological sample. In some specific implementations, the biological sample may include a DNA sample, and the nucleic acid sequencer may include a DNA sequencer. In such specific implementations, the order of ordered nucleotides 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) forming any combination. In other specific implementations, the nucleic acid sequencer may include an RNA sequencer, and the biological sample may include an RNA sample. In such implementations, the order of ordered nucleotides in the reads generated by the nucleic acid sequencer may include one or more of G, C, A, and uracil (U) in any combination. Figure 3 The example of describes the processing of the read segments composed of G, C, A and T generated by the DNA sequencer based on the DNA sample, but the present disclosure is not limited thereto. On the contrary, other specific implementations can process the read segments composed of C, G, A and U generated by the RNA sequencer based on the RNA sample.
[0108] In general, the mapping and alignment unit 170 can be configured to be unaware of the type of reads it receives, maps, and aligns. For example, in some implementations, the same binary code can be used to represent "T" and "U". The reads received by the mapping and alignment unit 170 may include DNA, cDNA, and / or RNA, and the reference may be DNA, cDNA, and / or RNA. In such implementations, the read bases T and / or U may share a single binary code so that the reads T and / or U match the references T and / or U.
[0109] In some implementations, the nucleic acid sequencer may include a next generation sequencer (NGS) configured to generate sequence reads such as reads 305 for a given sample using massively parallel sequencing technology in a manner that achieves ultra-high throughput, scalability, and speed. NGS enables rapid sequencing of entire genomes, the ability to scale up to target regions for deep sequencing, discovery of novel RNA variants and splice sites using RNA sequencing (RNA-Seq), or quantification of mRNA for gene expression analysis, analysis of epigenetic factors such as genome-wide DNA methylation and DNA-protein interactions, sequencing of cancer samples to study rare somatic variants and tumor subclones, and study of microbial diversity in humans or the environment.
[0110] Sequence reads such as reads 305 generated by the nucleic acid sequencer may be accessed and processed by auxiliary analysis units such as mapping and alignment units 170. In some implementations, auxiliary analysis units such as mapping and alignment units 170 may be implemented in hardware such as digital logic circuits using programmable circuits 162 such as field programmable gate arrays (FPGAs) or application specific integrated circuits (ASICs). In other implementations, auxiliary analysis units such as mapping and alignment units 170 may be implemented using one or more CPUs, GPUs, or a combination of both to implement the functions of mapping and alignment units 170. Although hash tables 140 may be implemented in hardware logic circuits of programmable circuits 162 in some implementations, such as in the case where mapping and alignment units 170 are implemented using programmable circuits 162, the present disclosure is not limited thereto. Instead, hash tables 140 may be stored in a memory device and accessed when needed by: (i) a CPU, a GPU, or a combination of both, which execute software instructions that implement the functions of mapping and alignment units 170, or (ii) a mapping and alignment unit 170 that has been implemented in hardware digital logic circuits.
[0111] In some implementations, the programmable circuit 162 may be integrated with a nucleic acid sequencer that generates the read 305. In such implementations, for example, the programmable circuit 162 may 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 may be part of another computer different from the nucleic acid sequencer and directly connected to the nucleic acid sequencer using an Ethernet cable, a USB cable, a USB-C cable, etc. In other implementations, for example, the programmable circuit 162 may be integrated into a cloud-based server that can be remotely accessed by the nucleic acid sequencer that generates the read 305 using one or more wired or wireless networks such as a local area network (LAN), a wide area network (WAN), a cellular network, the Internet, or a combination thereof.
[0112] The mapping and alignment unit 170 may receive a first hash query 310 including an initial seed "GTTTA" 310a. In some implementations, the hash query may consist of only a seed of a sample read such as the current read 305 used as input to the hash table 140. In other implementations, additional data, metadata, etc. may be added to the seed of the sample read to convert the sample read into a format that can be used to search the hash table 140.
[0113] exist Figure 3 In the example, from the current read segment "AC GTTTAThe initial seed "GTTTA" 310a included in the hash query 310 is obtained by using the first portion of the seed access window 305a identified by using the "GC" 305. The mapping and matching unit 170 can use the hash table 140 to perform the hash query 310 to map the initial short seed 310a to the hash position 144 using the hash function 143. Figure 3 In the example of , execution of hash query 310 determines that seed “GTTTA” 310a matches hash index key “GTTTA” 142 - 2 , which is mapped by hash function 143 to hash position 144 - y .
[0114] The mapping and alignment unit 170 may generate a response 310b to the hash query 310 using the hash table 140. The response 310b may include the content of the hash position 144-y reached by the seed 310a of the hash query 310. The mapping and alignment unit 170 evaluates the response 310b to the hash query 310 and determines whether the content includes a set of matching reference sequence positions, extension records, interval records, or a combination thereof. If the response 310b includes only a set of matching reference sequence positions without extension records or interval records, the mapping and alignment unit 170 may store the set of matching reference sequence positions together with metadata associating the matching reference positions with the received query seed in a seed match set 352. Alternatively, if the mapping and alignment unit 170 determines that the response includes an interval record, an extension record, or both, the mapping and alignment unit 170 must determine 320 whether to use the matching reference seed identified by the interval record or to continue to extend the query seed.
[0115] exist Figure 3 In the example of , evaluation of response 310b indicates that (i) the response does not include a set of matching reference sequence positions, and (ii) response 310b includes extension record 153a and interval record 153b. Based on response 310b, mapping and alignment unit 170 may determine 320 whether to access matching reference positions identified by interval record 153b. In some implementations, if a response to hash query 310, such as 310b, includes extension record 153a, mapping and alignment unit 170 will not access matching reference sequence positions identified by interval records, such as interval record 153b.
[0116] However, in other implementations, the mapping and alignment unit 170 may be configured to evaluate the number of matching reference sequence positions identified by the interval record 153b before extending the seed 310a using the extension record 153b. In such implementations, if the number of matching reference sequence positions is below a predetermined threshold, the mapping and alignment unit 170 may output 310d the matching reference sequence positions in the interval A identified by the interval record. Outputting the matching reference sequence positions may include accessing, by the mapping and alignment unit 170, the matching reference sequence positions stored in the memory 180 for interval A of the seed extension table 132, and storing the accessed matching reference sequence positions in the seed match set storage device 352. Once the accessed matching reference sequence positions are stored in the seed match set 352, Figure 3 The process can then be terminated without further extending the seed 310a. The seed access window 305a can then be adjusted one or more nucleotides forward along the current read segment 305. Once the seed access window 305a is adjusted, Figure 3 The process may then begin again and continue iteratively until the entire current read segment 305 has been queried. On the other hand, in this alternative implementation, if the number of matching reference sequence positions is determined to be not below a predetermined threshold, the extension record 152a may be used to extend the seed 310a.
[0117] Back to Figure 3 , the mapping and alignment unit 170 does not apply the above threshold to the matches identified by interval record 153b. Instead, the mapping and alignment unit 170 determines 320 not to use the matching reference sequence position identified by interval record 153b because the output 310b includes extension record 153a. Therefore, in this case, the mapping and alignment unit 170 determines to extend seed 310a.
[0118] Before proceeding to perform subsequent queries based on the extended seed, the mapping and alignment unit may store information describing interval A 310c in a "best interval" storage device 350. Interval A may be considered the "best interval" for matching reference sequence positions in the seed extension table 132 for seed 310a, since other intervals have not yet been identified and evaluated at this point in the process. However, Figure 3In subsequent iterations of the process, each subsequent interval identified may be heuristically evaluated to determine whether the interval is better than an existing interval stored in the best interval storage device for the initial seed 310a or its extended seed. Storing information describing interval A 310c in the best interval storage device 340 enables the matching reference sequence positions of interval A to be revisited in the event that the extension of the initial seed 310a causes a mapping failure (such as an unread mapping problem or a high confidence mapping problem). The information describing interval A 310c may include data describing the starting position and the ending position of a continuous list of reference sequence positions that match the initial seed. In some specific implementations, the information describing interval A 310c may also include data identifying the seed to which the reference sequence position identified by interval A matches.
[0119] The flexible seed extension performed by the mapping and matching unit 170 may continue by the mapping and matching unit 170 generating a first extended seed 312a which is an extension of the initial seed 310a using the extension record 153a. Figure 3 In the example of , the extension record 153a may include one or more instructions instructing the mapping and alignment unit 170 to symmetrically extend the initial seed 310a by two bases or nucleotides. Figure 3 In the example of , the initial seed "GTTTA" 310a is symmetrically extended by two bases or nucleotides to obtain the extended seed "CGTTTAG" 312a of the read segment 305. In some implementations, the additional nucleotides "C" and "G" used to extend the initial seed 310a can be obtained from the next nucleotide of the read segment 305 on the opposite side of the initial seed 310a identified by the seed access window 305a.
[0120] Although additional seeds are present on each side of the seed access window to facilitate extension of the seed, in other implementations, such as when the seed access window is at the beginning of the read segment 305, extension may result in extension of the initial seed beyond the boundaries of the read segment 305. In such implementations, the seed extension may fail, and the process of mapping the initial seed to a matching reference sequence position using the hash table 140 may terminate without adding any matching reference sequence positions to the seed match set 352 for a query cycle starting from the initial seed. However, in such implementations, the seed access window 305a may be adjusted one or more nucleotides forward along the read segment 305, and the next seed of the read segment 305 identified by the adjusted seed access window may be obtained for use as an initial seed for a hash query of a new query cycle using the hash table 140. This new query cycle is performed for the next seed and each seed thereafter until each seed of the read segment 305 has been processed, which can be used to update the best interval storage device 350, store one or more sets of matching reference sequence positions in the seed matching set storage device 352, or both, and these matching reference sequence positions can be evaluated to identify the best matching reference sequence position set for the read segment 305, such as the reference sequence position set. Figure 5 The above method can be used to map the read segments of the same sequence as those in the conventional method (even if the seed extension fails), thereby solving the problem of unmapped read segments that may exist in the conventional method.
[0121] As the seed access window 305a advances toward the opposite end of the read segment 305, similar seed extension failures may occur for similar reasons. Figure 5 The described evaluation of the best interval storage 250, seed match set 353, or both from previous iterations of hash queries of read segments resolves these seed extension failure issues.
[0122] Back to Figure 3 In the example of , the mapping and matching unit 170 can generate a subsequent hash query 312 including the first extended seed 312a. The mapping and matching unit 170 can obtain the first extended seed 312a from the hash query 312 and use the hash table to map the first extended short seed 312a to the hash position 144 by using the hash function 143. In some specific implementations, generating the hash query 312 using the first extended seed 312a can include providing the first extended seed 312a as an input for seed mapping using the hash table 140 to the mapping and matching unit 170 without generating a query. Figure 3 In the example of , execution of the hash query 312 determines that the seed “CGTTTAG” 312a matches the hash index key “CGTTTAG” 142 - x , which is mapped by the hash function 143 to the hash position 144 - 3 .
[0123] The mapping and alignment unit 170 may generate a response 312b to the hash query 312 using the hash table 140. The response 312b may include the content of the hash position 144-3 reached by the seed 312a of the hash query 312. The mapping and alignment unit 170 may evaluate the response 312b to the hash query 312 and determine that the response 312b (i) does not include a set of matching reference sequence positions and (ii) includes an extension record 152a and an interval record 152b. Based on the response 312b, the mapping and alignment unit 170 may determine 330 whether to access the matching reference position identified by the interval record 152b. In some specific implementations, if the response to the hash query 312, such as 312b, includes the extension record 152a, the mapping and alignment unit 170 will not access the matching reference sequence position identified by the interval record, such as the interval record 152b.
[0124] However, in other implementations, the mapping and alignment unit 170 may be configured to evaluate the number of matching reference sequence positions identified by the interval record 152b before extending the seed 312a using the extension record 152b. In such implementations, if the number of matching reference sequence positions identified by the interval record 152b is below a predetermined threshold, the mapping and alignment unit 170 may output 312d matching reference sequence positions for interval B identified by the interval record 152b. Outputting the matching reference sequence positions may include accessing, by the mapping and alignment unit 170, the matching reference sequence positions stored in the memory 180 for interval B of the seed extension table 132, and storing the accessed matching reference sequence positions in the seed match set storage device 352. Once the accessed matching reference sequence positions are stored in the seed match set storage device 352, Figure 3 The process may then end without further extending the seed 312a. The seed access window 305a may then be adjusted one or more nucleotides along the current read segment 305. Once the seed access window 305a is adjusted, Figure 3 The process may then begin again and continue iteratively until the entire current read segment 305 has been queried. On the other hand, in this alternative implementation, if the number of matching reference sequence positions is determined to be not below a predetermined threshold, the extension record 152a may be used to extend the seed 312a.
[0125] Back to Figure 3 , the mapping and alignment unit 170 does not apply the above threshold to the matches identified by the interval record 152b. Instead, the mapping and alignment unit 170 determines 330 not to use the matching reference sequence position identified by the interval record 152b because the output 312b includes the extension record 152a. Therefore, the mapping and alignment unit 170 determines to extend the seed 312a.
[0126] Before continuing to perform subsequent queries based on the extended seed, the mapping and alignment unit may determine whether to store information describing interval B 312c as the "best interval" in the best interval storage device 350. Determining whether to store information describing interval B 312c as the "best interval" includes heuristically determining whether interval B is a better interval than the interval currently stored in the best interval storage device 352 for the previous iteration of the first extended seed, which in this example is interval A. In one specific implementation, the best interval among multiple intervals can be determined by evaluating the number of target hits returned for each interval. In such specific implementations, the "best" interval can be selected according to the multipart rule. By way of example, the mapping and alignment unit 170 can assign a first priority to an interval that contains at least a predetermined number of matching reference sequence positions, which interval can be referred to by a threshold value such as intvl-target-hits(32) matches. However, if each interval has less than intvl-target-hits(32) matches, the interval with the most matches is stored as the best interval. In addition, the mapping and comparison unit 170 may assign a second priority to intervals associated with longer extension seeds because such intervals may be preferred. In addition, if the mapping and comparison unit 170 determines that at least one interval has at least intvl-target-hits(32) matches, then among all intervals that satisfy at least intvl-target-hits(32) matches, the best interval is selected based on the interval associated with the longest extension seed. Although the examples herein reference a threshold intvl-target-hits(32) with 32 matches, the present disclosure need not be limited thereto. Instead, the threshold intvl-target-hits() may be sent to any number of matching reference sequence positions to implement the multi-part heuristic rule.
[0127] exist Figure 3In the example of , interval A previously stored as the best interval in the best interval storage device 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 the exemplary intvl-target-hits(10) threshold of ten matches, the mapping and alignment unit 170 may apply the multi-part heuristic rule and determine that neither of the two intervals satisfies the intvl-target-hits(10) threshold. Therefore, according to the multi-part heuristic rule, the mapping and alignment unit 170 may select interval A as the best interval because, between interval A and interval B, interval A has the most matches, i.e., six. Based on the application of the exemplary multi-part heuristic rule, the information describing interval B 321c may be discarded, and interval A may remain stored as the best interval. However, in other examples where a different heuristic rule is applied (which need not be a multi-part heuristic rule), interval B may be selected as the best interval and stored in the best interval storage device 350 to replace interval A. Such results may ultimately be left to specific design configuration, such as the setting of the intvl-target-hits() threshold, the design of one or more heuristic rules, etc.
[0128] exist Figure 3 In the example of , the aforementioned heuristic rules are used to compare the interval A previously stored in the optimal interval storage device 350 and the interval B included in the response 312b to the query 312. However, the present disclosure need not be limited to this. For example, in some specific implementations, the response to the hash query may include multiple interval records stored in the hash position 144 reached by a specific seed of the hash query. In such specific implementations, the mapping and comparison unit 170 may apply the above-mentioned heuristic rules to determine which of the multiple interval records should be accessed. Similarly, the mapping and comparison unit 170 may also use such heuristic rules to determine the best interval to be stored in the optimal interval storage device 450 from each interval record returned in the query response. For another example, the mapping and comparison unit 170 may also use such heuristic rules to determine the best interval to be stored in the optimal interval storage device 450 from each interval record returned in the query response and another interval previously stored in the optimal interval storage device 350 for a previous iteration of the seed for the query that returns multiple intervals.
[0129] In some implementations, the system 300 may facilitate storing more than one best interval in the best interval storage 350. For example, in some implementations, up to 2 best intervals may be recorded. In some implementations, up to N best intervals may be recorded. In such implementations, if N>1 best intervals are stored, the criteria for determining which intervals are retained may involve evaluating the candidate intervals, their associated extension seeds, or a relationship between the two, such as requiring that the N best intervals be associated with extension seeds that do not overlap with each other within the read segment.
[0130] The flexible seed extension performed by the mapping and matching unit 170 may continue by the mapping and matching unit 170 generating a second extended seed 314a which is an extension of the first extended seed 312a using the extension record 152a. Figure 3 In the example of , the extension record 152a may include one or more instructions instructing the mapping and alignment unit 170 to symmetrically extend the first extension seed 312a by two bases or nucleotides. Figure 3 In the example of FIG. 3 , the first extension seed “CGTTTAG” 312a is symmetrically extended by two bases or nucleotides to obtain the second extension seed “ACGTTTAGC” 314a of the read 305. In some implementations, the additional nucleotides “A” and “C” used to extend the first extension seed 312a can be obtained from the next nucleotide on the opposite side of the first extension seed “CGTTTAG” 312a of the read 305.
[0131] Back to Figure 3 In the example of , the mapping and matching unit 170 can generate a subsequent hash query 314 including the second extended seed 314a. The mapping and matching unit 170 can obtain the second extended seed 314a from the hash query 314 and use the hash table to map the second extended short seed 314a to the hash position 144 by using the hash function 143. In some specific implementations, generating the hash query 314 using the second extended seed 314a can include providing the second extended seed 314a as an input for seed mapping using the hash table 140 to the mapping and matching unit 170 without generating a query. Figure 3 In the example of , execution of hash query 314 determines that seed “ACGTTTAGC” 314a matches hash index key “ACGTTTAGC” 142 - 1 , which is mapped by hash function 143 to hash position 144 - 2 .
[0132] The mapping and alignment unit 170 can generate a response 314b to the hash query 314 using the hash table 140. The response 314b can include the content of the hash position 144-2 reached by the second extended seed 314a of the hash query 314. The mapping and alignment unit 170 evaluates the response 314b to the hash query 314 and determines that the response 314b (i) includes a set of matched reference sequence positions 155, (ii) does not include an extension record, and (iii) does not include an interval record. Based on the response 314b, the mapping and alignment unit 170 can determine that the matched reference sequence positions 155 should be stored in the seed match set storage device 352.
[0133] Since the response 314b does not include an extension record, the runtime flexible seed extension process for the seed "GTTTA" 310a of the read segment 305 ends. The seed access window 305a may continue to advance one or more nucleotides along the read segment 305 until the reference is executed for each corresponding seed of the read segment 305. Figure 3 Each of the processes described above. This process is also relative to Figure 4 As described above, when the seed access window 305a extends toward the end of the read segment 305, an attempt to extend the seed input to the mapping and alignment unit 170 may fail, thereby generating a potential unmapped read segment problem. However, the present disclosure may use one or more intervals stored in the best interval storage device, one or more read segments stored in the seed match set 352, or a combination of the foregoing to identify a set of matching reference sequence positions for the read segment 305, such as relative to at least Figure 5 described.
[0134] Figure 4 4 is a flow chart of a process 400 for performing runtime flexible seed extension of hash table genome mapping. The process 400 will be explained below as being performed by a computer system consisting of one or more computers. The one or more computers may include, for example, a mapping and alignment unit 170. For the purposes of the present disclosure, the one or more computers may include a CPU or GPU configured to obtain and execute software instructions to implement a specific programming function described by the software instructions. Alternatively or in addition, the one or more computers may include a programmable circuit that has been configured so that the hardware digital logic circuit of the programmable circuit has been configured to implement the specific programming function in hardware.
[0135] The computer system may begin executing process 400 by executing a query to hash table 405. The query may include a nucleotide seed. The nucleotide seed may include a subset of nucleotides obtained from a read. A read may include a set of nucleotides generated by a nucleic acid sequencer based on a biological sample input into the nucleic acid sequencer. The biological sample may include, for example, a blood sample, a tissue sample, sputum, etc.
[0136] By way of example, a read generated by a nucleic acid sequencer based on a biological sample may include a series of nucleotides, such as "ACGTTTAGC". This example includes a read consisting of 9 nucleotides. However, the read consisting of 9 nucleotides is used only as an example. Instead of being limited to 9 nucleotides, the read as described in the present disclosure may have any nucleotide length, including but not limited to 5 bases or nucleotides, 10 bases or nucleotides, 12 bases or nucleotides, 15 bases or nucleotides, 18 bases or nucleotides, 21 bases or nucleotides, 25 bases or nucleotides, 35 bases or nucleotides, 50 bases or nucleotides, 100 bases or nucleotides, 150 bases or nucleotides, 1,000 bases or nucleotides, 1,000,000 bases or nucleotides, or even more bases or nucleotides. The seed of the query may include a portion of the read, such as "GTTTA". The seed obtained from the read for the first hash query during the first iteration of process 400 may have any length K, where K is less than the number of bases or nucleotides in the read. In some implementations, K may be significantly smaller than the read nucleotide length, such as 1 / 100 of the read length, 1 / 10 of the read length, or 1 / 5 of the read length.
[0137] A computer system may perform a query including a seed by obtaining a seed and comparing the seed to a hash key of a hash table. The hash key may correspond to each reference sequence seed, the reverse complement of each reference sequence seed, each extension seed of the reference sequence, and the reverse complement of each extension seed of the reference sequence. The reference sequence may include, for example, a reference genome or portion thereof of a species such as a human or other animal. When the computer system identifies a hash key that matches the seed of the query, the computer system may map the hash key to one or more hash locations using a hash function. In some aspects of the present disclosure, one or more hash locations may store (i) extension records, (ii) interval records, or (iii) one or more reference sequence locations. The computer system may generate a response to the query, the response including the contents of the one or more hash locations reached by the seed of the query.
[0138] The computer system may continue to perform process 400 by obtaining a response to the query executed, the response including information stored by one or more locations of the hash table determined to be reached by the query (410). If it is determined that the seed of the query matches a hash key mapped to the one or more locations of the hash table using a hash function, then it is determined that the query reached the one or more locations.
[0139] The computer system may continue to perform process 400 by performing the following operations: determining whether the response to the query performed includes (i) an extension record, (ii) an interval record, or (iii) one or more matching reference sequence positions (415). Determining by the computer system whether the response to the query performed includes (i) an extension record (ii) an interval record, or (iii) one or more matching reference sequence positions (415) may include parsing the received response and analyzing the parsed response data. The computer system may determine whether the parsed data represents (i) an extension record, (ii) an interval record, or (iii) one or more matching reference sequence positions based on the parsed data. In other specific implementations, the response to the query performed may include one or more data tags indicating whether the response includes (i) an extension record, (ii) an interval record, or (iii) one or more matching reference sequence positions.
[0140] In some cases, the computer system may continue to perform process 400 by performing the following operations: at stage 415, determining that the response does not include an extension record, an interval record, or one or more matching reference sequence positions. If the computer system determines that the response does not include (i) an extension record, (ii) an interval record, or (iii) one or more matching reference sequence positions, the process ends at stage 420 without adding any matching reference sequence positions to the seed match set for the seed for the query. By way of example, if the seed is an extension seed and there is a seed extension error, the obtained response to the query including the seed may not include (i) an extension record, (ii) an interval record, or (iii) one or more matching reference sequence positions. For example, if the computer system attempts to extend the seed beyond the end of the read used to obtain the seed, such a seed extension error may exist.
[0141] Alternatively, in other cases, the computer system may continue to perform process 400 by determining, at stage 415, that the response to the query performed includes (i) an extension record, (ii) an interval record, or (iii) both. In such cases, the computer system may continue to perform process 400 by determining whether to access the extension table to obtain one or more matching reference sequence positions referenced by the interval record in the extension table (430).
[0142] In some cases, the computer system may continue to perform process 400 by determining that a seed extension table is to be accessed to obtain one or more matching reference sequence positions in the extension table referenced by an interval record. For example, in some embodiments, the computer system may be configured to access the seed extension table to obtain one or more matching reference sequence positions identified by the interval record when the number of matching reference sequence positions is below a predetermined threshold. Alternatively or in addition, the computer system may be configured to access the seed extension table to obtain one or more matching reference sequence positions identified by the interval record when the response to the query performed also includes a "stop" record stored at the hash position reached by the seed of the hash query. The "stop" record may instruct the computer system not to perform any additional seed extensions of the seed in the query, and to preferentially access one or more matching reference sequence positions identified by the interval record, such as if the number of matching reference sequence positions drops below a predetermined threshold.
[0143] In such cases, where the computer system determines at stage 430 that the seed extension table is to be accessed, the computer system may continue to perform process 400 by accessing the seed extension table to obtain the one or more reference sequence positions in the seed extension table (450). The computer system may identify a specific set of one or more matching reference sequence positions to be obtained from the seed extension table by using an interval record. The interval record may include information referencing multiple positions in the seed extension table, the multiple positions including data describing the reference sequence positions that match the queried seed. In some specific implementations, the information referencing the multiple positions may include a continuous interval of reference sequence positions in the extension table that match the queried extended seed. Alternatively, in other specific implementations, the information referencing the multiple positions may include one or more non-continuous intervals of reference sequence positions in the extension table that match the queried seed.
[0144] In such cases, the computer system may obtain one or more matching reference sequence positions identified using the interval record from the seed extension table. The obtained one or more reference sequence positions may be added to the seed match set (455). In some specific implementations, adding one or more matching reference sequence positions to the seed match set may include obtaining data representing the one or more matching reference sequence positions and storing it in a location allocated for seed match set storage on a memory device. In other specific implementations, adding one or more matching reference sequence positions to the seed match set may include storing data, such as a pointer, that references an interval of the seed extension table storing the one or more reference sequence positions. Therefore, the seed match set may be a storage location that stores a set of identified and obtained matching reference sequence positions. Alternatively, the seed match set may include one or more storage locations that store references to one or more matching reference sequence positions. After adding one or more matching reference sequence positions identified by the interval record to the seed match, the computer system may end this instance of process 400 at 460.
[0145] In other cases, after the computer system determines (415) that the response includes at least (i) an extension record, (ii) an interval record, or (iii) or both, the computer system may determine (430) not to access the seed extension table to obtain one or more matching reference sequence positions. The computer system's determination not to access the seed extension table to obtain one or more matching reference sequence positions may be based on a variety of factors. By way of example, in some embodiments, if the response returns an extension record, the computer system may determine not to access the seed extension table to obtain matching reference sequence positions identified by the interval record. This determination may be preferred because the extended seed may produce a smaller set of matching reference sequence positions than the set of matching reference sequence positions identified by the interval record.
[0146] For example, in other specific implementations, if the computer system determines that the number of matching reference sequence positions exceeds a predetermined threshold number of matching reference sequence positions, the computer system may determine not to access the seed extension table to obtain the matching reference sequence position identified by the interval record. Similarly, in such specific implementations, when the matching reference sequence position identified by the interval exceeds the matching threshold, the computer system may determine not to access the seed extension table.
[0147] When the computer system determines 430 not to access the seed extension table, the computer system may continue to perform process 400 by determining 465 whether the response obtained includes an interval record and an extension record. If the computer system determines 465 that the response obtained includes an interval record and an extension record, the computer system may determine 435 whether to store the interval record or information describing the interval record included in the response to the executed query as a candidate best interval. 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 record or information describing the interval record as a candidate best interval in the best interval storage of the memory device. Because 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, no other interval records are encountered in the response to other queries for one or more subsequent extension seeds. Therefore, the first interval returned in the response to the query with the initial seed that has not yet been extended must be the "best interval" because no other intervals have yet been identified for comparison.
[0148] However, for subsequent interactions in process 400 after a response to the query with the extended seed has been received, the computer system may obtain the second interval record from the response to the query with the extended seed. In such cases, the computer system may heuristically determine whether the second interval record should be used to replace the candidate best interval previously stored in the best interval storage device. The determination of whether to keep the previously stored candidate best interval or replace the candidate best interval with the second interval or information describing the interval may be made by applying one or more heuristic rules, such as reference Figure 3 In some specific implementations, the heuristic rule may include one or more multi-part heuristic rules.
[0149] While some implementations of the present disclosure may involve iteratively evaluating each subsequently returned interval record against previously stored candidate best intervals to determine a single best interval that should be stored for the current read segment upon which the queried seed is based, the present disclosure need not be limited thereto. Instead, in some implementations, all intervals may be saved in an interval storage device and subsequently evaluated for use in replenishing the seed match set.
[0150] The computer system may continue to perform process 400 by generating an extension seed (440). The extension seed may be generated based on instructions included in the extension record returned in the response to the query. By way of example, the extension record may include one or more instructions that, when executed by a computer such as a central processing unit (CPU) or a graphics processing unit (GPU) or programmable circuit 162 executing software instructions, may cause the CPU, GPU, or programmable circuit to extend the seed used in the hash query to a hash position that stores the extension record by one or more nucleotides. In some implementations, an extension record may be generated so that the extension record instructs the computer to symmetrically extend the seed at each end of the seed. Thus, by way of example, an extension record may be generated to instruct a computer such as a CPU, GPU, or programmable circuit 162 to extend the seed by two nucleotides, four nucleotides, six nucleotides, etc. In such implementations, a symmetrical extension of the seed may be achieved by extending the seed by one nucleotide on each corresponding end of the seed, by two nucleotides on each corresponding end of the seed, by three nucleotides on each corresponding end of the seed, etc. However, the present disclosure should not be limited to symmetrical extension of the seed. Rather, the present disclosure also contemplates asymmetric extension of the seeds.
[0151] The computer system may continue to perform process 400 by generating 445 a hash query including an extended seed. The computer system may then perform another iteration of process 400 by performing a query using the extended query at stage 405, and then continue to perform process 400 until (a) the process ends at 427 or 460 by adding one or more matched reference sequence positions to the seed match set, the process ends at 475 after determining whether to store the interval record as a candidate optimal interval, or (c) the process ends at stage 420 due to one or more errors, such as a seed extension error, which results in no response to the query being performed that includes (i) an extended record, (ii) an interval record, or (iii) one or more matched reference sequence positions.
[0152] Alternatively, if at stage 465 the computer system determines that the obtained response does not include both interval records and extended records, the computer system may continue to perform process 400 by determining whether the obtained response includes extended records.
[0153] If the computer system determines that the obtained response includes an extended record, the computer system may continue to perform process 400 by generating an extended seed at stage 440, generating a hash query 445 including the extended seed, and performing another iteration of process 400 by executing the query using the extended query at stage 405. The computer system may then continue to perform process 400 until (a) the process ends at 427, 420, 460, 475.
[0154] On the other hand, if the computer system determines that the obtained response does not include an extended record, the computer system may continue to perform process 400 by determining whether to store the interval record or information describing the interval record as a candidate best interval at stage 470. The computer system may determine whether to store the interval record as a candidate best interval at stage 470 using the same process described with respect to determining whether to store the interval record as a candidate best interval at stage 435. Regardless of whether the computer system determines at stage 470 to store the interval record as a candidate best interval, process 400 ends at stage 475.
[0155] At least one variation of process 400 may be implemented in which the computer system instead determines whether the obtained response includes an interval record at stage 470. In such a case, logically, if the computer system determines that the obtained response includes an interval record, the computer system may continue to execute the process at stage 470. Alternatively, if the computer system determines that the obtained response does not include an interval record, the process continues by generating an extension seed at stage 440. Other variations of the process flow of process 400 may be similarly implemented and fall within the spirit and scope of the present disclosure.
[0156] Figure 5 is a flow chart of a process 500 for performing iterative runtime flexible seed extension of hash table genome mapping for each seed of a read. In general, process 500 may include: obtaining a read generated by a nucleic acid sequencer (505); determining a location of a seed access window, wherein the seed access window identifies a seed of the read (510); generating a hash query, the hash query including the seed identified by the seed access window (515); and starting to perform Figure 4 The process 400 is specifically performed by executing the generated hash query at stage 410 and continuing the iterative execution of process 400 until the process 400 ends (520); determining whether the read segment includes another seed (525); and if it is determined that the read segment includes another seed (525), adjusting the seed access window to identify the other seed (530); and executing stage 515 to generate a hash query using the other seed (515).
[0157] Process 500 may continue to execute the processing loop of stages 515, 520, 525, and 530 until it is determined at stage 525 that the reads obtained at stage 505 do not include another seed to be mapped and aligned using process 400. In such a case, it may be determined whether to use the best interval to supplement the current seed match set of reads (535). If it is determined at stage 535 that the best interval is to be used to supplement the current seed match set, process 500 may continue by processing the best interval (540) at stage 540, supplementing the current seed match set (545) with one or more matching reference sequence positions obtained from a portion of the seed extension table identified using the best interval, and determining 550 whether there is another read ready to be mapped and aligned using process 500. If there is no another read ready for mapping and alignment, process 500 ends at stage 555. Alternatively, if there is another read ready to be mapped and aligned using process 500, process 500 continues by obtaining another read ready to be mapped and aligned at stage 505. Process 500 can then continue to iteratively perform process 500 until it is determined at stage 550 that there is no another read ready to be mapped and aligned using process 500.
[0158] Process 500 will be described in more detail below as being performed by a computer system consisting of one or more computers. The one or more computers may include, for example, a mapping and comparison unit 170. For purposes of this disclosure, the one or more computers may include a CPU or GPU configured to obtain and execute software instructions to implement a specific programming function described by the software instructions. Alternatively or in addition, the one or more computers may include a programmable circuit that has been configured so that the hardware digital logic circuit of the programmable circuit has been configured to implement a specific programming function in hardware.
[0159] The computer system may begin executing process 500 by obtaining data representing nucleic acid reads (also referred to herein as "reads") generated by a nucleic acid sequencer (505). After the nucleic acid sequencer generates the reads, the reads may be received by the computer system as input from 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 may then obtain the stored reads by accessing the memory to retrieve one or more reads from the memory device. By way of example, a read may include a set of nucleotides, such as "ACGTTTAGC". This example includes a read consisting of 9 nucleotides. However, the read consisting of 9 nucleotides is used only as an example. Instead of being limited to 9 nucleotides, a read as described in the present disclosure may have any nucleotide length, including but not limited to 5 bases or nucleotides, 10 bases or nucleotides, 12 bases or nucleotides, 15 bases or nucleotides, 18 bases or nucleotides, 21 bases or nucleotides, 25 bases or nucleotides, 35 bases or nucleotides, 50 bases or nucleotides, 100 bases or nucleotides, 150 bases or nucleotides, 1,000 bases or nucleotides, 1,000,000 bases or nucleotides, or even more bases or nucleotides.
[0160] The computer system can continue to perform process 500 by determining the position of the seed access window (510). The seed access window can be used to identify a nucleotide seed consisting of a subset of the nucleotides of the read segment. An example of a seed is a set of ordered nucleotides "GTTTA", which is a seed for the read segment "ACGTTTAGC". Although the set of ordered nucleotides "GTTTA" represents an example of a continuous seed for the read segment "ACGTTTAGC", the present disclosure need not be limited to this. On the contrary, in some specific implementations, non-continuous seeds can be obtained and analyzed using the systems and methods described in the present disclosure. For example, non-continuous seeds such as "G_T_A" can also be obtained from the read segment "ACGTTTAGC" and analyzed using the systems and methods described herein. In such specific implementations, the systems and methods of the present disclosure can treat the skip position represented by the underscore "_" as a wildcard that can match any base or nucleotide.
[0161] The seed access window can be configured to have any base or nucleotide length that is less than the read length. The seed access window can be configured to move forward or backward along the ordered reads to identify the seeds to be used for processing of the reads. If non-continuous seeds are to be utilized, the seed access window can be configured accordingly. By way of example, the seed access window can be configured to identify non-continuous seeds of nine nucleotides, with wildcards inserted at nucleotide positions 6 and nucleotide positions 8.
[0162] The computer system may continue process 500 by generating a hash query (515) including the seed identified by the seed access window. In some implementations, the hash query may consist of only the seed "GTTTA" of the reads, such as "ACGTTTAGC". In other implementations, additional data, metadata, etc. may be added to the seed of the sample reads to convert the seed into a format that can be used to search the hash table.
[0163] The computer system may continue to execute process 500 by executing Figure 4 The process 400 (520) described is to map and align the seed of the generated query to one or more reference sequence positions. The computer system begins to perform the process 400 by executing the hash query generated at stage 515 at stage 410. Then, the computer system can continue to iterate the process 400 until the process 400 terminates at stage 420, 427, 460 or 475, at which time the matched reference sequence position may have been added to the seed match set at stage 425 or 455.
[0164] After process 400 terminates, the computer system may determine whether the read obtained at stage 505 includes another seed (525). In some implementations, determining whether the read includes another seed includes considering all possible seed access window positions in the read. Alternatively, determining whether the read includes another seed may include considering only a predetermined subset of all possible seed access window positions, such as only even seed access window positions or only odd seed access window positions. Therefore, the present disclosure does not require that each seed of the read be evaluated using process 500. On the contrary, in some implementations, the computer system may determine at stage 505 whether a predetermined subset of the seeds of the read has another seed to be evaluated using process 500.
[0165] If the computer system determines at stage 525 that the read includes another seed, the computer system may adjust the seed access window to identify the other seed (530), and the computer system may perform stage 515 to generate a hash query for the other seed identified using the adjusted seed access window (515). Adjusting the seed access window may include, for example, moving the seed access window forward by one or more base or nucleotide positions along the read obtained at stage 505. The computer system may continue to perform the processing loop of stages 515, 520, 525, and 530 until the computer system determines at stage 525 that the read obtained at stage 505 does not include another seed to be mapped and aligned using process 400.
[0166] Once the computer system determines that the reads obtained at stage 505 do not include another seed to be mapped and aligned, the computer system may determine whether to use the best interval to supplement the current seed match set of reads (535). In some cases, if the computer system determines that the seed match set should not be supplemented, the computer system may determine (550) whether there is another read ready to be mapped and aligned using process 500. In such cases, if the computer system determines that there is another read ready for mapping and alignment, the computer system may continue to perform process 500 by obtaining another read ready for mapping and alignment at stage 505. The computer system may then continue to iteratively perform process 500 until it is determined at stage 550 that there is no another read ready for mapping and alignment using process 500.
[0167] Alternatively, in other cases, the computer system may determine that the current seed match set of the reads should be supplemented with one or more matching reference sequence positions identified by the optimal interval. The computer system may determine that the current seed match set should be supplemented with one or more matching reference sequence positions identified by the optimal interval by applying one or more heuristic rules to (i) the seed length of the extended seed whose query produces the optimal interval, (ii) the seed length of one or more matching reference sequence positions, (iii) the number of seed chains generated, or a combination thereof. In some specific implementations, the heuristic rules may specify one or more independent trigger conditions that, if triggered, cause the computer system to process the optimal interval.
[0168] By way of example, the first independent trigger condition that can trigger the computer system to process the optimal interval is to determine whether the seed length of the extended seed that its query produces the optimal interval is greater than or equal to intvl-seed-length(60) bases or nucleotides. In this example, the threshold intvl-seed-length(60) is a predetermined threshold that can be used by the computer system to evaluate the length of the extended seed that produces the optimal interval. In this example, the seed length of the extended seed that produces the optimal interval for the computer system to check is sixty nucleotides. However, the present disclosure need not be limited to this. 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 to process the optimal interval.
[0169] As another example, a second independent trigger condition that can trigger the computer system to process the best interval is to determine whether the seed length of the extended seed that generates the best interval by its query is greater than the longest matching reference sequence position processed by at least intvl-seed-longer(8) bases or nucleotides. In this example, the threshold intvl-seed-longer(8) is a predetermined threshold that can be used by the computer system to evaluate (i) the seed length of the extended seed that generates the best interval by its query and (ii) the longest matching reference sequence position. In this example, if the computer system determines that the seed length of the extended seed that generates the best interval by its query is eight bases or nucleotides, or more or greater than any matching seed, the processing of the best interval is triggered.
[0170] As another example, a third independent trigger condition that can trigger the computer system to process the best interval is to determine whether the number of seed chains is less than intvl-min-chains(8). A seed chain can include a set of similarly positioned reference sequence position matches. In this example, the threshold intvl-min-chains(8) is a predetermined threshold that can be used to evaluate the number of seed chains generated. In this example, if less than eight seed chains are generated, processing of the best interval is triggered.
[0171] Although an example of three separate trigger conditions for triggering processing of the best interval to replenish the seed matching set is described, the disclosure need not be limited thereto. Instead, other trigger conditions may be constructed to trigger processing of the best interval as may be required by a particular computer system.
[0172] If the computer system determines at stage 535 that the seed match set is to be supplemented because, for example, one or more thresholds for a trigger condition for processing the best interval have been met, the computer system may determine at stage 535 to supplement the current seed match set with the best interval. Supplementing the current seed match set with the best interval may include the computer system processing the best interval (540). Processing the best interval may include applying one or more heuristic rules to the best interval to identify one or more matching reference sequence positions identified by the best interval and stored in a seed extension table.
[0173] By way of example, if the number of reference sequence positions identified by the best interval is less than or equal to intvl-max-hits(64), the computer system may determine to process all of the one or more reference sequence positions identified by the best interval. In this example, if the computer system determines that the identified best interval is less than or equal to sixty-four matching reference sequence positions, the computer system may obtain all matching reference sequence positions identified by the best interval from a seed extension table using the best interval. Alternatively, if the computer system determines that the best interval identifies more than sixty-four matching reference sequence positions, the computer system may randomly obtain intvl-sample-hits(32) matching reference sequences from the set of matching reference sequence positions identified by the best interval.
[0174] Randomly obtaining a threshold amount of thirty-two matching reference sequence positions may include randomly or by deterministic pseudo-random selection, obtaining the threshold amount of thirty-two matching reference sequence positions from a seed extension table using an optimal interval. The optimal interval may include data identifying (i) one or more stop positions and start positions of the seed extension table, (ii) one or more start positions and one or more offsets, or a combination thereof. Although examples of thresholds are described, such as sixty-four matching reference positions and 32 randomly sampled hits, the present disclosure need not be limited thereto. Instead, other thresholds having other values may be used to achieve the advantages of the present disclosure.
[0175] The matching reference sequence positions obtained using the best interval can be used to supplement the current seed match set 545. Such use of the best interval to supplement the seed match set can solve problems such as unmapped read problems or high confidence mismapping problems, which may result in no matching reference sequence positions being stored in the seed match set or very few matching reference sequence positions being stored in the seed match set, respectively. The matching reference sequence positions may have been or may be obtained from the portion of the seed extension table identified by the best interval (540).
[0176] Once the seed match set has been replenished, the computer system can determine whether there is another read ready for mapping and alignment using process 500. If there is another read ready for mapping and alignment, the computer system continues to perform process 500 by obtaining the other read. Alternatively, if there is no another read ready for mapping and alignment, process 500 can end at 555.
[0177] It should be noted that in the example described with reference to process 500, the best interval is evaluated to determine whether the best interval or a portion thereof can be used to supplement the seed matching set. However, it is not required to store only a single best interval in the best interval storage device. In some embodiments, the computer system may be conducive to storing more than one best interval in the best interval storage device. For example, in some embodiments, up to 2 best intervals may be recorded. In some embodiments, up to N best intervals may be recorded. In such embodiments, if N>1 best intervals are stored, the criteria for determining which intervals are retained may involve evaluating the candidate interval, its associated extension seed, or the relationship between the two, such as requiring that the N best intervals be associated with extension seeds that do not overlap with each other within the read segment. In some embodiments, the computer system may even select a matching reference sequence position from multiple different best intervals. This selection of the matching reference sequence position may be performed randomly, pseudo-randomly, or by applying one or more heuristics from multiple different best intervals.
[0178] System components
[0179] Figure 6 is a schematic diagram of system components that can be used to implement the system described herein in connection with flexible seed extension of hash table genome mapping.
[0180] Computing device 600 is intended to represent various forms of digital computers, such as laptop computers, desktop computers, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. Computing device 650 is intended to represent various forms of mobile devices, such as personal digital assistants, cellular phones, smart phones, 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 can store operating systems and other applications. The USB flash drive may include input / output components, such as a wireless transmitter or USB connector that can be inserted into the USB port of another computing device. The components shown here, their connections and relationships, and their functions are intended only as examples and are not intended to limit the specific implementation of the present invention described and / or claimed in this document.
[0181] The computing device 600 includes a processor 602, a memory 604, a storage device 608, a high-speed interface 608 connected to the memory 604 and a high-speed expansion port 610, and a low-speed interface 612 connected to a low-speed bus 614 and the storage device 608. Each of the components 602, 604, 608, 608, 610, and 612 is interconnected using various buses and can be installed on a common motherboard or installed in other ways as appropriate. The processor 602 can process instructions for execution within the computing device 600, including instructions stored in the memory 604 or on the storage device 608, to display graphical information of a GUI on an external input / output device (such as a display 616 coupled to the high-speed interface 608). In other specific implementations, multiple processors and / or multiple buses can be used with multiple memories and multiple types of memories as appropriate. In addition, multiple computing devices 600 can be connected, each device providing some parts of the necessary operations, for example, as a server library, a group of blade servers, or a multi-processor system.
[0182] The memory 604 stores information within the computing device 600. In one implementation, the memory 604 is one or more volatile memory units. In another implementation, the memory 604 is one or more non-volatile memory units. The memory 604 may also be another form of computer-readable medium, such as a magnetic disk or optical disk.
[0183] The storage device 608 can provide mass storage for the computing device 600. In one specific implementation, the storage device 608 can be or include a computer-readable medium, such as a floppy disk device, a hard disk device, an optical disk device or a magnetic tape device, a flash memory or other similar solid-state memory device, or an array of devices, including devices in a storage area network or other configuration. A computer program product can be tangibly embodied in an information carrier. The computer program product can also include instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer-readable medium or a machine-readable medium, such as the memory 604, the storage device 608, or a memory on the processor 602.
[0184] High-speed controller 608 manages bandwidth-intensive operations of computing device 600, while low-speed controller 612 manages bandwidth-less intensive operations. This functional allocation is only an example. In a specific implementation, high-speed controller 608 is coupled to memory 604, display 616, for example, through a graphics processor or accelerator, and is coupled to high-speed expansion port 610, which can accept various expansion cards (not shown). In this specific implementation, low-speed controller 612 is coupled to storage device 608 and low-speed expansion port 614. Low-speed expansion port (this port can include various communication ports, such as USB, Bluetooth, Ethernet, wireless Ethernet) can be coupled to one or more input / output devices, such as keyboards, pointing devices, microphone / speaker pairs, scanners or networking devices such as switches or routers, for example, through a network adapter. Computing device 600 can be implemented in a variety of different forms, as shown in the figure. For example, the computing device can be implemented as a standard server 620, or it can be implemented multiple times in a group of such servers. It can also be implemented as a part of a rack server system 624. In addition, the computing device can be implemented in a personal computer such as a laptop computer 622. Alternatively, components from computing device 600 may be combined with other components in a mobile device (not shown), such as device 650. Each of such devices may contain one or more of computing devices 600, 650, and the entire system may be comprised of multiple computing devices 600, 650 in communication with each other.
[0185] The computing device 600 can be implemented in a variety of different forms, as shown. For example, the computing device can be implemented as a standard server 620, or multiple times in a group of such servers. It can also be implemented as part of a rack server system 624. In addition, the computing device 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 can contain one or more of the computing devices 600, 650, and the entire system can be composed of multiple computing devices 600, 650 that communicate with each other.
[0186] The computing device 650 includes a processor 652, a memory 664, and input / output devices such as a display 654, a communication interface 666, and a transceiver 668, among other components. The device 650 may also be provided with a storage device, such as a microdrive or other device, to provide additional storage. Each of the components 650, 652, 664, 654, 666, and 668 are interconnected using various buses, and several of these components may be mounted on a common motherboard or otherwise as appropriate.
[0187] The processor 652 can execute instructions within the computing device 650, including instructions stored in the memory 664. The processor can be implemented as a chipset including a plurality of independent analog processors and digital processor chips. In addition, the processor can be implemented using any of a variety of architectures. For example, the processor 610 can be a CISC (complex instruction set computer) processor, a RISC (reduced instruction set computer) processor, or a MISC (minimum instruction set computer) processor. The processor can provide, for example, coordination of other components of the device 650, such as control of a user interface, applications run by the device 650, and wireless communications performed by the device 650.
[0188] The processor 652 can communicate with the user through 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 or an OLED (organic light emitting diode) display or other appropriate display technology. The display interface 656 may include appropriate circuits for driving the display 654 to present graphics and other information to the user. The control interface 658 can receive commands from the user and convert these commands to submit to the processor 652. In addition, an external interface 662 in communication with the processor 652 can be provided to enable close range area communication of the device 650 with other devices. The external interface 662 can, for example, provide wired communication in some specific implementations, or provide wireless communication in other specific implementations, and multiple interfaces can also be used.
[0189] The memory 664 stores information within the computing device 650. The memory 664 may be implemented as one or more computer-readable media, one or more volatile memory units, or one or more non-volatile memory units. An expansion memory 674 may also 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 may provide additional storage space for the device 650, or may also store applications or other information for the device 650. Specifically, the expansion memory 674 may include instructions for executing or supplementing the above-mentioned processes, and may also include security information. Therefore, for example, the expansion memory 674 may be provided as a security module for the device 650, and may be programmed to have instructions for implementing the secure use of the device 650. In addition, a security application may be provided via a SIMM card together with additional information, such as placing identification information on the SIMM card in an unbreakable manner.
[0190] The memory may include, for example, flash memory and / or non-volatile random access memory (NVRAM) memory, as described below. In one embodiment, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer readable medium or machine readable medium, such as memory 664, expansion memory 674, or memory on processor 652 that can be received by, for example, transceiver 668 or external interface 662.
[0191] Device 650 can communicate wirelessly via communication interface 666, which may include digital signal processing circuitry as needed. Communication interface 666 can provide communication in various modes or protocols, such as GSM voice calls, SMS, EMS or MMS messaging, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS, etc. Such communication can occur, for example, via radio frequency transceiver 668. In addition, short-range communication can occur, such as using Bluetooth, Wi-Fi or other such transceivers (not shown). In addition, GPS (Global Positioning System) receiver module 670 can provide additional navigation and location-related wireless data to device 650, which can be used as appropriate by applications running on device 650.
[0192] Device 650 may also communicate audibly using audio codec 660, which may receive verbal information from a user and convert it into usable digital information. Audio codec 660 may also generate audible sounds for the user, such as through a speaker (e.g., in a handset of device 650). Such sounds may include sounds from voice phone calls, may include recorded sounds, such as voice messages, music files, etc., and may also include sounds generated by applications operating on device 650.
[0193] The computing device 650 can be implemented in many different forms, as shown. For example, the computing device can be implemented as a cellular phone 680. The computing device can also be implemented as part of a smart phone 682, a personal digital assistant, or other similar mobile device.
[0194] Various implementations of the systems and methods described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or combinations of such implementations. These various implementations can include implementations in one or more computer programs that can be executed and / or interpreted on a programmable system that includes at least one programmable processor, which can be a special purpose or general purpose processor, coupled to receive data and instructions from a storage system, at least one input device, and at least one output device and to send data and instructions to the storage system, at least one input device, and at least one output device.
[0195] These computer programs (also referred to as programs, software, software applications, or code) include machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages and / or in assembly language / machine language. As used herein, the terms "machine-readable medium," "computer-readable medium," refer to any computer program product, apparatus, and / or device, such as a disk, optical disk, memory, programmable logic device (PLD), for providing machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal for providing machine instructions and / or data to a programmable processor.
[0196] To provide interaction with a user, the systems and techniques described herein may be implemented on a computer having a display device (e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse or trackball) that the user can use to provide input to the computer. Other types of devices may also be used to provide interaction with the user; for example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including sound, voice, or tactile input.
[0197] The systems and techniques described herein may be implemented in a computing system that includes a back-end component (e.g., as a data server) or includes a middleware component (e.g., an application server) or includes a front-end component (e.g., a client computer with a graphical user interface or a web browser) through which a user may interact with a specific implementation of the systems and techniques described herein, or with any combination of such back-end components, middleware components, or front-end components. The components of the system may be interconnected by any form or medium of digital data communication (e.g., a communication network). Examples of communication networks include a local area network ("LAN"), a wide area network ("WAN"), and the Internet.
[0198] The computing system may include clients and servers. Clients and servers are generally remote from each other and generally interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.
[0199] Example
[0200] The disclosure is further described in the following examples, which do not limit the scope of the claims.
[0201] Example 1: Comparison of the system using flexible seed extension and the system not using flexible seed extension Percentage of mapped reads
[0202] In this embodiment, different nucleic acid sequencers are used to sequence specific samples. These nucleic acid sequencers include 2500 sequencer, X Sequencer and Then, using DRAGEN TM The platform maps the reads generated by each respective sequencer with and without the flexible seed extension described herein.Once mapped, the computer system determines the percentage of unmapped reads generated by each mapping operation of each sequencer.
[0203] DRAGEN TM The platform is a mapping and alignment unit implemented in hardware circuits on a field programmable gate array (FPGA). As described in this paper, DRAGEN TM The v7 platform currently does not utilize flexible seed extension, and DRAGEN TM The v8 platform does utilize flexible seed extension. TM The platform is implemented in an FPGA, but in general, DRAGEN TM The platform may also be implemented in other integrated circuits such as application specific integrated circuits (ASICs).
[0204] Specifically, The 2500 sequencer was used to sequence the "DNA_Nexus_hiseq2500" sample. X sequencer is used to sequence the "DNA_Nexus_hiseqX" sample, and The sequencer was used to sequence the "DNA_Nexus_NovaSeq" sample, the "NovaSeq_NA12878_rep1" sample, the "NovaSeq_TruSeq-nano-550" sample, and the "AWS_HG005_40x" sample. The "AWS_HG005_40X" sample was from subject HG005. All other samples were from subject HG001.
[0205] Figure 7 700 is an illustration of a bar graph 700 showing data representing test results as a percentage of unmapped reads in a system using a flexible seed extension method as described herein, and compared to test results for a system not using 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 Illumina, Inc. sequencing instruments.
[0206] In the first embodiment, the test result 710 shows that when The percentage of unmapped reads 710b when the flexible seed extension as described in one or more embodiments of the present invention is used during mapping is significantly lower than when the DNA_Nexus_hiseq2500 sample is sequenced by a 2500 sequencer and the percentage of unmapped reads 710b is significantly lower than when the flexible seed extension as described in one or more embodiments of the present invention is used during mapping. The 2500 sequencer sequences the “DNA_Nexus_hiseq2500” sample and the percentage 710a of unmapped reads that occur during mapping when flexible seed extension as described in one or more implementations herein is not utilized.
[0207] In the second embodiment, the test result 720 shows that when The percentage 720b of unmapped reads that appear when the sequencer sequences the "DNA_Nexus_NovaSeq" sample and utilizes flexible seed extension as described in one or more specific embodiments herein during mapping is significantly less than the percentage 720a of unmapped reads that appear when the NovaSeq sequencer sequences the "DNA_Nexus_NovaSeq" sample and does not utilize flexible seed extension as described in one or more specific embodiments herein during mapping.
[0208] In the third embodiment, the test result 730 shows that when The percentage of unmapped reads 730b that occurs when the X sequencer sequences the "DNA_Nexus_hiseqX" sample and flexible seed extension as described in one or more embodiments herein is used during mapping is significantly less than when the The percentage 730a of unmapped reads that occurred when the X sequencer sequenced the “DNA_Nexus_hiseqX” sample during mapping without utilizing flexible seed extension as described in one or more implementations herein.
[0209] In the fourth embodiment, the test result 740 shows that when The percentage of unmapped reads 740b that occurs when the sequencer sequences the "NovaSeq_NA12878_rep1" sample and utilizes flexible seed extension as described in one or more embodiments herein during mapping is significantly lower than when the The percentage 740a of unmapped reads that occur when the sequencer sequences the “NovaSeq_NA12878_rep1” sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0210] In the fifth embodiment, the test result 750 shows that when The percentage of unmapped reads when the sequencer sequences the "NovaSeq_TruSeq-nano-550" sample and uses flexible seed extension as described in one or more embodiments of the present invention during mapping is significantly lower than when the The percentage 750a of unmapped reads that occur when the sequencer sequences the “NovaSeq_TruSeq-nano-550” sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0211] In the sixth embodiment, the test result 760 shows that when The percentage of unmapped reads when the sequencer sequences the "AWS_HG005_40X" sample and uses flexible seed extension as described in one or more embodiments of the present invention during mapping is significantly lower than when the The percentage 760a of unmapped reads that occur when the sequencer sequences the “AWS_HG005_40X” sample without utilizing flexible seed extension as described in one or more implementations herein during mapping.
[0212] Therefore, compared to conventional methods that do not generate or use the hash tables described herein, the specific implementation of flexible seed stretching using the hash tables described herein achieves significant performance improvements in reducing unmapped reads.
[0213] Example 2: Comparison of read counts between a system using flexible seed extension and a system not using flexible seed extension Segment mapping accuracy
[0214] In this Example 2, DRAGEN TMThe platform maps reads generated by nucleic acid sequencers to reference sequences. TM The platform maps the same set of reads to the same reference sequencer. Once the mapping is complete, the computer system determines the read mapping accuracy as a function of the mapping error rate for each mapping operation.
[0215] DRAGEN TM The platform is a mapping and alignment unit implemented in hardware circuits on a field programmable gate array (FPGA). As described in this paper, DRAGEN TM The v7 platform currently does not utilize flexible seed extension, and DRAGEN TM v8 Platform and DRAGEN TM The v8hi-effort platform does utilize flexible seed extension.
[0216] Although the DRAGEN TM The platform is implemented in an FPGA, but in general, DRAGEN TM The platform may also be implemented in other integrated circuits such as application specific integrated circuits (ASICs).
[0217] DRAGEN TM v8 Platform and DRAGEN TM The differences between the v8 hi-effort platforms lie in the settings of the heuristics and other parameters. TM The v8 platform uses the following heuristics: intvl-target-hits=32, intvl-max-hits=16, and intvl-sample-hits=16. This article describes each of these heuristics. In addition, DRAGEN TMThe v8 platform uses additional parameters: max-hifreq-hits=16, rescue-hifreq=0, and sw-extra-intvl=1. The max-hifreq-hits parameter indicates the maximum number of random sample matches obtained from the matching interval reached before the seed extension fails (e.g., one sample per extension failure until the limit is reached). The rescue-hifreq parameter determines whether the expensive rescue scan operation is used for matches found only by random samples from the matching interval. Rescue scanning is a method for searching for possible paired read alignments near a candidate read alignment. The sw-extra-intvl parameter determines the strategy of using expensive Smith-Waterman alignments for matches found by accessing the best ("extra") interval or by randomly sampling the matching interval. Smith-Waterman is generally not used when gapless alignments are not pruned, but can be used when gapless alignments are pruned, depending on the heuristics that include this setting. A setting of "1" would mean that Smith-Waterman can be used for candidates from the extra / best matching intervals that are accessed in their entirety rather than through random sampling. A setting of "2" would mean that Smith-Waterman can also be used for candidates from a random sampling of matching intervals. A setting of "0" would mean that Smith-Waterman is not applied to candidates from the extra / best interval processing or from a random sampling of matching intervals.
[0218] On the other hand, DRAGEN TM The v8 hi-effort platform uses the following heuristics: intvl-target-hits=32, intvl-max-hits=64, and intvl-sample-hits=48. In addition, DRAGEN TM The v8 hi-effort platform uses additional parameters: max-hifreq-hits=32, rescue-hifreq=0, and sw-extra-intvl=2. Therefore, DRAGEN TM The v8hi-effort platform has a TM A broader set of heuristics for the v8 platform.
[0219] Figure 8is an illustration of a line graph 800 showing data representing test results in the form of read mapping accuracy in a system using a flexible seed extension method as disclosed herein, and compared to test results for a system not using a flexible seed extension method. Specifically, line graph 800 uses an accuracy curve in the form of a receiver operating characteristic ("ROC") curve (or line) to illustrate the tradeoff between false positives and false negatives when a confidence metric is used to stratify the data. Figure 8 In the illustration, the curve (or broken line) closer to the top wall and the left wall of the line graph 800 means a better read mapping accuracy.
[0220] A curve 810 is depicted, which represents the DRAGEN image processing without using flexible seed extension as described in one or more embodiments herein during mapping. TM The read mapping accuracy of the v7 platform is depicted as curve 820, which represents the DRAGEN using flexible seed extension as described in one or more embodiments herein during mapping. TM Read mapping accuracy for the v8 platform. Comparison of curve 810 and curve 820 shows that curve 820 is closer to the top wall and the left wall than curve 810. Thus, improvements in read mapping accuracy are achieved simply by implementing flexible seed extension as described in one or more embodiments of this document in a certain capacity.
[0221] Figure 8 Also depicted is curve 830, which represents DRAGEN TM v8 hi-effort specific implementation. TM v8 is similar in implementation, DRAGEN TM The v8 hi-effort implementation also uses the flexible seed extension method described in this paper during mapping. However, as mentioned above, the DRAGEN TM The specific implementation of v8 hi-effort uses a heuristic method that is different from that used by DRAGEN TM The heuristics used by the v8 implementation (whose performance is represented by the 820 curve) are broader. TM The "hi-effort" v8 version of the DRAGEN TM The v8 implementation (e.g., sw-extra-intvl=1) adds the intention to perform more Smith-Waterman alignment work downstream. Figure 8 As shown, curve 830 is closer to the top wall and the left wall than curves 810 and 820, thereby showing DRAGEN TMv8 hi-effort specifically implements significant performance improvements in read segment mapping accuracy.
[0222] Figure 8 Also shown is a 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 inherently provides similar benefits as those provided by flexible seed extension, such as the ability to retrieve a complete set of matches corresponding to any match length. As shown in curves 830 and 840, DRAGEN TM The v8 “hi-effort” implementation achieves the same read mapping accuracy as the software-based BWA software mapping tool. TM v8 “hi-effort” is able to achieve read mapping accuracy levels comparable to software-based BWA mapping tools because DRAGEN TM v8 “hi-effort” also leverages DRAGEN TM Other benefits of the platform include, for example, fewer memory accesses for mapping seeds. However, before implementing the hardware-based flexible seed extension described in this paper, DRAGEN TM The platform was able to achieve the same read mapping accuracy as that achieved by the BWA software mapping tool.
[0223] Therefore, compared to conventional methods that do not generate or use the hash tables described herein, the specific implementation of flexible seed extension using the hash tables described herein achieves significant performance improvements in read segment mapping accuracy.
[0224] Other Implementations
[0225] A number of embodiments have been described. However, it should be appreciated that various modifications may be made without departing from the spirit and scope of the invention. Furthermore, the logic flows shown in the accompanying drawings do not require the particular order or ordered order shown to achieve the desired results. Additionally, other steps may be provided in the flow, or steps may be eliminated, and other components may be added to or removed from the system. Therefore, other embodiments are also within the scope of the following claims.
Claims
1. A method for improving the mapping of sample reads to reference sequences using a hash table, the method comprising: performing, by a mapping and alignment unit, a query on the hash table, the query comprising a first seed, wherein the first seed comprises a subset of nucleotides obtained from a particular read of the sample reads; Obtaining, by the mapping and matching unit, a response to the executed query, the response comprising information stored by a location of the hash table determined to be responsive to the query; determining, by the mapping and alignment unit, whether the response to the performed query includes (i) an extension record and (ii) an interval record, wherein the interval record identifies a contiguous set of reference sequence positions stored in an extension table that match the first seed; Based on determining by the mapping and matching unit that the response to the executed query includes (i) an extension record and (ii) an interval record: determining, by the mapping and alignment unit, whether to access the extension table to obtain one or more matching reference sequence positions in the extension table referenced by the interval record; and Based on determining to access the extension table: the mapping and alignment unit accesses the extension table to obtain the one or more matching reference sequence positions referenced by the interval record in the extension table; and the mapping and alignment unit adds the one or more matching reference sequence positions to a seed match set.
2. The method of claim 1, further comprising: Based on determining not to access the extension table: Determining by the mapping and comparing unit whether to store the first information describing the interval record as information describing the candidate optimal interval in the memory device; generating, by the mapping and comparison unit, a first extension seed using the extension record, wherein the first extension seed is an extension of the first seed; generating, by the mapping and comparison unit, a subsequent hash query comprising the first extended seed; and Subsequent hash queries on the hash table are performed by the mapping and comparison unit.
3. The method of claim 2, further comprising: determining, by the mapping and alignment unit, that the response to the performed query includes one or more matching reference sequence positions; and Based on determining, by the mapping and alignment unit, that the response to the performed query includes one or more matched reference sequence positions: adding, by the mapping and alignment unit, the one or more matched reference sequence positions to a seed match set.
4. The method of claim 2, wherein: Determining by the mapping and comparison unit whether to store the first information describing the interval record as information describing the candidate optimal interval in the memory device includes: determining, by the mapping and alignment unit, that there is no prior information describing an interval record as a candidate best interval for the particular read; and The first information describing the interval record is stored in the memory device by the mapping and matching unit as information describing a candidate optimal interval.
5. The method of claim 2, further comprising: obtaining, by the mapping and comparison unit, a response to the subsequently executed query, the response comprising information stored by a location of the hash table determined to be responsive to the query; determining, by the mapping and alignment unit, whether the response to the subsequently executed query includes: (i) a second extension record, (ii) a second interval record, and (iii) one or more matching reference sequence positions; Based on determining, by the mapping and matching unit, that the response to the subsequently executed query includes (i) the second extended record and (ii) the second interval record: determining, by the mapping and alignment unit, whether to access an extension table to obtain one or more matching reference sequence positions in the extension table referenced by the second interval record; Based on determining not to access the extension table: using one or more heuristic rules and by the mapping and matching unit, determining whether the second information describing the second interval record or the first information describing the candidate optimal interval will be used as the candidate optimal interval; generating, by the mapping and matching unit, a second extension seed using the second extension record, the second extension seed being an extension of the first extension seed; generating, by the mapping and matching unit, a third hash query including the second extension seed; and executing, by the mapping and matching unit, a third query on the hash table including the second extension seed.
6. The method of claim 5, wherein: Using one or more heuristic rules and determining by the mapping and comparison unit whether the second information describing the second interval record or the first information describing the candidate optimal interval is to be used as the optimal interval comprises: The second information describing the second interval record or the first information describing the candidate best interval record is selected based on multiple factors, the multiple factors including: (i) the number of matching reference sequence positions returned by each of the interval record and the second interval record, (ii) a predetermined threshold level of reference sequence positions, or (iii) each seed length to reach the corresponding seeds of the hash position storing the interval record and the second interval record.
7. A system for improving mapping of sample reads to reference sequences using a hash table, the system comprising one or more computers and one or more storage devices storing instructions, When the instructions are executed by the one or more computers, they are operable to cause the one or more computers to perform operations including: performing, by a mapping and alignment unit, a query on the hash table, the query comprising a first seed, wherein the first seed comprises a subset of nucleotides obtained from a particular read of the sample reads; Obtaining, by the mapping and matching unit, a response to the executed query, the response comprising information stored by a location of the hash table determined to be responsive to the query; determining, by the mapping and alignment unit, whether the response to the performed query includes (i) an extension record and (ii) an interval record, wherein the interval record identifies a contiguous set of reference sequence positions stored in an extension table that match the first seed; Based on determining by the mapping and matching unit that the response to the executed query includes (i) an extension record and (ii) an interval record: determining, by the mapping and alignment unit, whether to access the extension table to obtain one or more matching reference sequence positions in the extension table referenced by the interval record; and Based on determining to access the extension table: the mapping and alignment unit accesses the extension table to obtain the one or more matching reference sequence positions referenced by the interval record in the extension table; and the mapping and alignment unit adds the one or more matching reference sequence positions to a seed match set.
8. The system of claim 7, wherein the operations further comprise: Based on determining not to access the extension table: Determining by the mapping and comparing unit whether to store the first information describing the interval record as information describing the candidate optimal interval in the memory device; generating, by the mapping and comparison unit, a first extension seed using the extension record, wherein the first extension seed is an extension of the first seed; generating, by the mapping and comparison unit, a subsequent hash query comprising the first extended seed; and Subsequent hash queries on the hash table are performed by the mapping and comparison unit.
9. The system of claim 8, wherein the operations further comprise: determining, by the mapping and alignment unit, that the response to the performed query includes one or more matching reference sequence positions; and Based on determining, by the mapping and alignment unit, that the response to the performed query includes one or more matched reference sequence positions: adding, by the mapping and alignment unit, the one or more matched reference sequence positions to a seed match set.
10. The system of claim 8, wherein: Determining by the mapping and comparison unit whether to store the first information describing the interval record as information describing the candidate optimal interval in the memory device includes: determining, by the mapping and alignment unit, that there is no prior information describing an interval record as a candidate best interval for the particular read; and The first information describing the interval record is stored in the memory device by the mapping and matching unit as information describing a candidate optimal interval.
11. The system of claim 8, wherein the operations further comprise: obtaining, by the mapping and comparison unit, a response to the subsequently executed query, the response comprising information stored by a location of the hash table determined to be responsive to the query; determining, by the mapping and alignment unit, whether the response to the subsequently executed query includes: (i) a second extension record, (ii) a second interval record, and (iii) one or more matching reference sequence positions; Based on determining, by the mapping and matching unit, that the response to the subsequently executed query includes (i) the second extended record and (ii) the second interval record: determining, by the mapping and alignment unit, whether to access an extension table to obtain one or more matching reference sequence positions in the extension table referenced by the second interval record; Based on determining not to access the extension table: using one or more heuristic rules and by the mapping and matching unit, determining whether the second information describing the second interval record or the first information describing the candidate optimal interval will be used as the candidate optimal interval; generating, by the mapping and matching unit, a second extension seed using the second extension record, the second extension seed being an extension of the first extension seed; generating, by the mapping and matching unit, a third hash query including the second extension seed; and executing, by the mapping and matching unit, a third query on the hash table including the second extension seed.
12. The system of claim 11, wherein: Using one or more heuristic rules and determining by the mapping and comparison unit whether the second information describing the second interval record or the first information describing the candidate optimal interval is to be used as the optimal interval comprises: The second information describing the second interval record or the first information describing the candidate best interval record is selected based on multiple factors, the multiple factors including: (i) the number of matching reference sequence positions returned by each of the interval record and the second interval record, (ii) a predetermined threshold level of reference sequence positions, or (iii) each seed length to reach the corresponding seeds of the hash position storing the interval record and the second interval record.
13. The system of claim 7, wherein the interval record references one or more locations in the seed extension table, the one or more locations comprising data describing reference sequence locations that match the first seed of the query.
14. The system of claim 13, wherein the one or more positions in the seed extension table that include data describing reference sequence positions that match the first seed of the query include: A contiguous interval of reference sequence positions in the table that match the first seed of the query is extended.
15. A non-transitory computer-readable medium storing software, the software comprising instructions executable by one or more computers, the instructions, when subjected to such execution, causing the one or more computers to perform operations comprising: performing, by a mapping and alignment unit, a query on the hash table, the query comprising a first seed, wherein the first seed comprises a subset of nucleotides obtained from a particular read of the sample reads; Obtaining, by the mapping and matching unit, a response to the executed query, the response comprising information stored by a location of the hash table determined to be responsive to the query; determining, by the mapping and alignment unit, whether the response to the performed query includes (i) an extension record and (ii) an interval record, wherein the interval record identifies a contiguous set of reference sequence positions stored in an extension table that match the first seed; Based on determining by the mapping and matching unit that the response to the executed query includes (i) an extension record and (ii) an interval record: determining, by the mapping and alignment unit, whether to access an extension table to obtain one or more matching reference sequence positions in the extension table referenced by the interval record; Based on determining to access the extension table: the mapping and alignment unit accesses the extension table to obtain the one or more matching reference sequence positions referenced by the interval record in the extension table; and the mapping and alignment unit adds the one or more matching reference sequence positions to a seed match set.
16. The computer readable medium of claim 15, the operations further comprising: Based on determining not to access the extension table: Determining by the mapping and comparing unit whether to store the first information describing the interval record as information describing the candidate optimal interval in the memory device; generating, by the mapping and comparison unit, a first extension seed using the extension record, wherein the first extension seed is an extension of the first seed; generating, by the mapping and comparison unit, a subsequent hash query comprising the first extended seed; and Subsequent hash queries on the hash table are performed by the mapping and comparison unit.
17. The computer readable medium of claim 16, the operations further comprising: determining, by the mapping and alignment unit, that the response to the performed query includes one or more matching reference sequence positions; and Based on determining, by the mapping and alignment unit, that the response to the performed query includes one or more matched reference sequence positions: adding, by the mapping and alignment unit, the one or more matched reference sequence positions to a seed match set.
18. The computer-readable medium of claim 16, wherein: Determining by the mapping and comparison unit whether to store the first information describing the interval record as information describing the candidate optimal interval in the memory device includes: determining, by the mapping and alignment unit, that there is no prior information describing an interval record as a candidate best interval for the particular read; and The first information describing the interval record is stored in the memory device by the mapping and matching unit as information describing a candidate optimal interval.
19. The computer readable medium of claim 16, the operations further comprising: obtaining, by the mapping and comparison unit, a response to the subsequently executed query, the response comprising information stored by a location of the hash table determined to be responsive to the query; determining, by the mapping and alignment unit, whether the response to the subsequently executed query includes: (i) a second extension record, (ii) a second interval record, or (iii) one or more matching reference sequence positions; Based on determining, by the mapping and matching unit, that the response to the subsequently executed query includes (i) the second extended record and (ii) the second interval record: determining, by the mapping and alignment unit, whether to access an extension table to obtain one or more matching reference sequence positions in the extension table referenced by the second interval record; Based on determining not to access the extension table: using one or more heuristic rules and by the mapping and matching unit, determining whether the second information describing the second interval record or the first information describing the candidate optimal interval will be used as the candidate optimal interval; generating, by the mapping and matching unit, a second extension seed using the second extension record, the second extension seed being an extension of the first extension seed; generating, by the mapping and matching unit, a third hash query including the second extension seed; and executing, by the mapping and matching unit, a third query on the hash table including the second extension seed.
20. The computer readable medium of claim 19, wherein: Using one or more heuristic rules and determining by the mapping and comparison unit whether the second information describing the second interval record or the first information describing the candidate optimal interval is to be used as the optimal interval comprises: The second information describing the second interval record or the first information describing the candidate best interval record is selected based on multiple factors, the multiple factors including: (i) the number of matching reference sequence positions returned by each of the interval record and the second interval record, (ii) a predetermined threshold level of reference sequence positions, or (iii) each seed length to reach the corresponding seeds of the hash position storing the interval record and the second interval record.
21. An integrated circuit for improving the mapping of sample reads to reference sequences using a hash table, the integrated circuit comprising a plurality of hardware logic gates, the plurality of hardware logic gates being physically configured into one or more hardware digital logic circuits, the hardware digital logic circuits implementing the functions of a mapping and alignment unit, the integrated circuit comprising: one or more hardware logic circuits to perform a query of the hash table, the query comprising a first seed, wherein the first seed comprises a subset of nucleotides obtained from a particular read of the sample reads; one or more hardware logic circuits to obtain a response to the executed query, the response comprising information stored by a location of the hash table determined to be responsive to the query; one or more hardware logic circuits that determine whether the response to the performed query includes (i) an extension record and (ii) an interval record, wherein the interval record identifies a contiguous set of reference sequence positions stored in an extension table that match the first seed; one or more hardware logic circuits that determine whether to access the extension table to obtain one or more matching reference sequence locations in the extension table referenced by the interval record based on determining that the response to the performed query includes (i) an extension record and (ii) an interval record; as well as One or more hardware logic circuits perform the following operations based on determining to access the extension table: access the extension table to obtain the one or more matching reference sequence positions referenced by the interval record in the extension table; and add the one or more matching reference sequence positions to a seed match set.
22. The integrated circuit of claim 21, wherein the integrated circuit is a field programmable gate array (FPGA).
Citation Information
Patent Citations
Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
US10083276B2