RU2817560C1 - Hardware-accelerated generation of k-dimensional graph - Google Patents

Hardware-accelerated generation of k-dimensional graph Download PDF

Info

Publication number
RU2817560C1
RU2817560C1 RU2021135182A RU2021135182A RU2817560C1 RU 2817560 C1 RU2817560 C1 RU 2817560C1 RU 2021135182 A RU2021135182 A RU 2021135182A RU 2021135182 A RU2021135182 A RU 2021135182A RU 2817560 C1 RU2817560 C1 RU 2817560C1
Authority
RU
Russia
Prior art keywords
graph
hardware
dimensional graph
hardware logic
dimensional
Prior art date
Application number
RU2021135182A
Other languages
Russian (ru)
Inventor
Майкл РЮЛЕ
Original Assignee
Иллюмина, Инк.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Иллюмина, Инк. filed Critical Иллюмина, Инк.
Application granted granted Critical
Publication of RU2817560C1 publication Critical patent/RU2817560C1/en

Links

Abstract

FIELD: computer engineering.
SUBSTANCE: invention relates to methods and systems for hardware-accelerated generation of K-dimensional graphs representing multiple sequencing reads for analysis of variant recognition. In one aspect, the method involves steps for obtaining a first set of nucleotide sequences generated by a nucleic acid sequencer, constructing a K-dimensional graph using the obtained first set of nucleotide sequences and using a plurality of non-pipelined hardware logic units of the programmable logic device, and periodic updating, by means of the data management device, of the graphical representation for the K-dimensional graph after performing one or more operations by each hardware logic unit.
EFFECT: faster generation of a K-dimensional graph, which leads to faster genome analysis as a whole.
34 cl, 5 dwg

Description

ПЕРЕКРЕСТНЫЕ ССЫЛКИ НА РОДСТВЕННЫЕ ЗАЯВКИCROSS-REFERENCES TO RELATED APPLICATIONS

[0001] Данная заявка испрашивает преимущество по предварительной заявке на патент США №63/006 668, поданной 7 апреля 2020 г., которая полностью включена в настоящий документ путем ссылки.[0001] This application claims the benefit of U.S. Provisional Patent Application No. 63/006,668, filed April 7, 2020, which is incorporated herein by reference in its entirety.

ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯPREREQUISITES FOR CREATION OF THE INVENTION

[0002] Для представления множества секвенирующих считываний можно использовать K-мерные графы.[0002] K-dimensional graphs can be used to represent multiple sequencing reads.

ИЗЛОЖЕНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

[0003] В соответствии с одним инновационным аспектом настоящего описания описан способ аппаратно-ускоренного генерирования K-мерного графа с использованием программируемого логического устройства. В одном аспекте способ может включать в себя действия получения первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности, генерирование с использованием множества неконвейерных аппаратных логических блоков программируемого логического устройства, K-мерный граф с использованием полученного первого набора нуклеотидных последовательностей, причем каждая аппаратная логическая единица содержит другую аппаратную логическую схему, выполненную с возможностью выполнения одной или более операций, причем каждый узел K-мерного графа представляет собой K-мер, каждый край K-мерного графа представляет собой связь между парой K-меров, а каждая масса каждого края K-мерного графа представляет собой число вхождений последовательности K-меров, представленной парой K-меров, и в процессе генерирования K-мерного графа: периодическое обновление, на устройстве управления, данных описания графа для K-мерного графа после выполнения одной или более операций каждым аппаратным логическим блоком, который используют для генерирования по меньшей мере участка K-мерного графа, причем данные описания графа представляют собой (i) идентификатор K-мерного графа и (ii) информацию о состоянии K-мерного графа, причем устройство управления создает рабочий процесс операций с использованием неконвейерных аппаратных логических блоков путем запуска выполнения одной или более операций каждого соответствующего аппаратного логического блока во время генерирования K-мерного графа.[0003] In accordance with one innovative aspect of the present disclosure, a method for hardware-accelerated K-dimensional graph generation using a programmable logic device is described. In one aspect, the method may include the steps of obtaining a first set of nucleotide sequences, wherein the first set of nucleotide sequences includes (i) a plurality of reads corresponding to an active region of a reference sequence, and (ii) a portion of the reference sequence generated using a plurality of non-pipelined hardware logic blocks of a programmable logic device, a K-dimensional graph using the resulting first set of nucleotide sequences, each hardware logic unit comprising another hardware logic unit configured to perform one or more operations, each node of the K-dimensional graph representing a K-mer, each edge of a K-mer graph represents the connection between a pair of K-mers, and each mass of each edge of a K-mer graph represents the number of occurrences of a sequence of K-mers represented by a pair of K-mers, and in the process of generating a K-mer graph: periodic updating , at the control device, graph description data for the K-dimensional graph after performing one or more operations by each hardware logical unit, which is used to generate at least a portion of the K-dimensional graph, wherein the graph description data is (i) a K-dimensional identifier graph and (ii) K-dimensional graph state information, wherein the control device creates a workflow of operations using the non-pipelined hardware logic blocks by triggering execution of one or more operations of each corresponding hardware logic block during generation of the K-dimensional graph.

[0004] Другие варианты включают в себя соответствующие системы и устройство, которые были конфигурированы с возможностью выполнения действий вышеупомянутых способов, определяемых аппаратными логическими схемами аппаратно-ускоренного блока генерирования графов.[0004] Other embodiments include corresponding systems and apparatus that have been configured to perform the actions of the above methods determined by the hardware logic circuits of the hardware-accelerated graph generation unit.

[0005] Эти и другие версии могут необязательно включать один или более из приведенных ниже признаков. Например, в некоторых вариантах реализации выходные данные каждого аппаратного логического блока из множества аппаратных логических блоков сохраняются посредством буферной емкости хеш-таблицы.[0005] These and other versions may optionally include one or more of the following features. For example, in some embodiments, the output of each hardware logical block of a plurality of hardware logical blocks is stored by a hash table buffer capacity.

[0006] В некоторых вариантах осуществления устройство управления реализовано с использованием аппаратного логического блока программируемого логического устройства.[0006] In some embodiments, the control device is implemented using a hardware programmable logic device logic block.

[0007] В некоторых вариантах реализации устройство управления реализовано с использованием одного или более ЦП или ГП для выполнения программных команд для реализации функций устройства управления.[0007] In some embodiments, the control device is implemented using one or more CPUs or GPUs to execute software instructions to implement the functions of the control device.

[0008] В некоторых вариантах реализации операции могут дополнительно включать в себя предоставление сгенерированного K-мерного графа для блока распознавания вариантов, причем блок распознавания вариантов обрабатывает K-мерный граф для определения потенциальных вариантов между одним или более из множества считываний и эталонной последовательностью.[0008] In some embodiments, the operations may further include providing the generated K-dimensional graph to a variant recognition unit, wherein the variant recognition unit processes the K-dimensional graph to determine potential variants between one or more of the plurality of reads and a reference sequence.

[0009] В некоторых вариантах реализации программные команды могут исполняться одним или более ЦП или ГП для реализации одной или более функций блока распознавания вариантов.[0009] In some embodiments, software instructions may be executed by one or more CPUs or GPUs to implement one or more functions of the variant recognition unit.

[0010] В некоторых вариантах осуществления программируемое логическое устройство используют для ускорения одной или более функций блока распознавания вариантов.[0010] In some embodiments, a programmable logic device is used to accelerate one or more functions of the variant recognition unit.

[0011] В некоторых вариантах реализации данные описания графа дополнительно включают в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.[0011] In some embodiments, the graph description data further includes (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with a K-dimensional graph identifier.

[0012] В соответствии с другим инновационным аспектом настоящего описания описана система аппаратно-ускоренного генерирования K-мерного графа с использованием программируемого логического устройства. В одном аспекте система может включать в себя аппаратно-ускоренный блок генерирования графов, который включает в себя аппаратные цифровые логические схемы, которые были расположены для выполнения операций. В некоторых вариантах реализации операция может включать в себя: получение первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности, генерирование с использованием множества неконвейерных аппаратных логических блоков программируемого логического устройства, K-мерного графа с использованием полученного первого набора нуклеотидных последовательностей, причем каждая аппаратная логическая единица содержит другую аппаратную логическую схему, выполненную с возможностью выполнения одной или более операций, причем каждый узел K-мерного графа представляет собой K-мер, каждый край K-мерного графа представляет собой связь между парой K-меров, а каждая масса каждого края K-мерного графа представляет собой число вхождений последовательности K-меров, представленной парой K-меров, и в процессе генерирования K-мерного графа: периодическое обновление, на устройстве управления данных описания графа для K-мерного графа после выполнения одной или более операций каждым аппаратным логическим блоком, который используют для генерирования по меньшей мере участка K-мерного графа, причем данные описания графа представляют собой (i) идентификатор K-мерного графа и (ii) информацию о состоянии K-мерного графа, причем устройство управления создает рабочий процесс операций с использованием неконвейерных аппаратных логических блоков путем запуска выполнения одной или более операций каждого соответствующего аппаратного логического блока во время генерирования K-мерного графа.[0012] In accordance with another innovative aspect of the present disclosure, a hardware-accelerated K-dimensional graph generation system using a programmable logic device is described. In one aspect, the system may include a hardware-accelerated graph generation unit that includes hardware-based digital logic circuits that have been arranged to perform operations. In some embodiments, the operation may include: obtaining a first set of nucleotide sequences, wherein the first set of nucleotide sequences includes (i) a plurality of reads corresponding to an active region of a reference sequence, and (ii) a portion of the reference sequence generated using a plurality of non-pipelined hardware logical blocks of a programmable logic device, a K-dimensional graph using the resulting first set of nucleotide sequences, each hardware logic unit comprising another hardware logic circuit configured to perform one or more operations, wherein each node of the K-dimensional graph represents a K-mer , each edge of a K-mer graph represents the connection between a pair of K-mers, and each mass of each edge of a K-mer graph represents the number of occurrences of a sequence of K-mers represented by a pair of K-mers, and in the process of generating a K-mer graph: periodic updating, on the control device, the graph description data for the K-dimensional graph after performing one or more operations by each hardware logical unit that is used to generate at least a portion of the K-dimensional graph, wherein the graph description data is (i) a K-dimensional identifier graph and (ii) K-dimensional graph state information, wherein the control device creates a workflow of operations using the non-pipelined hardware logic blocks by triggering execution of one or more operations of each corresponding hardware logic block during generation of the K-dimensional graph.

[0013] Другие варианты включают соответствующие способы и устройство для выполнения вышеупомянутых операций.[0013] Other embodiments include suitable methods and apparatus for performing the above operations.

[0014] Эти и другие версии могут необязательно включать один или более из приведенных ниже признаков. Например, в некоторых вариантах реализации выходные данные каждого аппаратного логического блока из множества аппаратных логических блоков сохраняются посредством буферной емкости хеш-таблицы.[0014] These and other versions may optionally include one or more of the following features. For example, in some embodiments, the output of each hardware logical block of a plurality of hardware logical blocks is stored by a hash table buffer capacity.

[0015] В некоторых вариантах реализации операции могут дополнительно включать в себя предоставление сгенерированного K-мерного графа для блока распознавания вариантов, причем блок распознавания вариантов сконфигурирован для обработки K-мерного графа для определения потенциальных вариантов между одним или более из множества считываний и эталонной последовательностью.[0015] In some embodiments, the operations may further include providing the generated K-dimensional graph to a variant recognition unit, wherein the variant recognition unit is configured to process the K-dimensional graph to determine potential variants between one or more of the plurality of reads and a reference sequence.

[0016] В некоторых вариантах реализации система может дополнительно включать в себя один или более компьютеров и одно или более запоминающих устройств, в которых хранятся команды, исполнение которых одним или более компьютерами приводит к выполнению одним или более компьютерами вторых операций блока распознавания вариантов. В некоторых вариантах реализации вторые операции блока распознавания вариантов могут включать в себя получение с помощью блока распознавания вариантов сгенерированного K-мерного графа и идентификацию на основе обработки блока распознавания вариантов сгенерированного K-мерного графа, одного или более потенциальных вариантов, причем потенциальный вариант представляет собой разницу между распознаванием оснований одного или более считываний в наборе считываний и нуклеотидом эталонного генома в конкретном местоположении эталонного генома.[0016] In some embodiments, the system may further include one or more computers and one or more storage devices that store instructions that, when executed by one or more computers, cause the one or more computers to execute second variant recognition unit operations. In some embodiments, the second operations of the variant recognition block may include, using the variant recognition block, retrieving a generated K-dimensional graph and, based on processing of the variant recognizing block of the generated K-dimensional graph, identifying one or more candidate variants, wherein the candidate variant is a difference between recognizing the bases of one or more reads in a set of reads and a reference genome nucleotide at a specific location in the reference genome.

[0017] В некоторых вариантах реализации операции могут дополнительно включать в себя получение с помощью блока распознавания вариантов сгенерированного K-мерного графа и идентификацию на основе обработки блока распознавания вариантов сгенерированного K-мерного графа, одного или более потенциальных вариантов, причем потенциальный вариант представляет собой разницу между распознаванием оснований одного или более считываний в наборе считываний и нуклеотидом эталонного генома в конкретном местоположении эталонного генома.[0017] In some embodiments, the operations may further include, by a variant recognition block, obtaining a generated K-dimensional graph and, based on the variant recognition block's processing of the generated K-dimensional graph, identifying one or more candidate variants, wherein a candidate variant is a difference between recognizing the bases of one or more reads in a set of reads and a reference genome nucleotide at a specific location in the reference genome.

[0018] В некоторых вариантах реализации данные описания графа могут дополнительно включать в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.[0018] In some embodiments, the graph description data may further include (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with a K-dimensional graph identifier .

[0019] В соответствии с другим инновационным аспектом настоящего описания описан аппаратно-ускоренный блок генерирования графов. В одном аспекте аппаратно-ускоренный блок генерирования графов может включать в себя аппаратные цифровые логические схемы, которые были расположены с возможностью выполнения операций. В некоторых вариантах реализации операции могут включать в себя получение первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности, генерирование с использованием множества неконвейерных аппаратных логических блоков программируемого логического устройства, K-мерного графа с использованием полученного первого набора нуклеотидных последовательностей, причем каждая аппаратная логическая единица содержит другую аппаратную логическую схему, выполненную с возможностью выполнения одной или более операций, причем каждый узел K-мерного графа представляет собой K-мер, каждый край K-мерного графа представляет собой связь между парой K-меров, а каждая масса каждого края K-мерного графа представляет собой число вхождений последовательности K-меров, представленной парой K-меров, и в процессе генерирования K-мерного графа: периодическое обновление, на устройстве управления, данных описания графа для K-мерного графа после выполнения одной или более операций каждым аппаратным логическим блоком, который используют для генерирования по меньшей мере участка K-мерного графа, причем данные описания графа представляют собой (i) идентификатор K-мерного графа и (ii) информацию о состоянии K-мерного графа, причем устройство управления создает рабочий процесс операций с использованием неконвейерных аппаратных логических блоков путем запуска выполнения одной или более операций каждого соответствующего аппаратного логического блока во время генерирования K-мерного графа.[0019] In accordance with another innovative aspect of the present disclosure, a hardware-accelerated graph generation unit is described. In one aspect, a hardware-accelerated graph generating unit may include hardware-based digital logic circuits that have been arranged to perform operations. In some embodiments, operations may include obtaining a first set of nucleotide sequences, wherein the first set of nucleotide sequences includes (i) a plurality of reads corresponding to the active region of a reference sequence, and (ii) a portion of the reference sequence generated using a plurality of non-pipelined hardware logic blocks of a programmable logic device, a K-dimensional graph using the resulting first set of nucleotide sequences, each hardware logic unit comprising another hardware logic unit configured to perform one or more operations, each node of the K-dimensional graph representing a K-mer, each edge of a K-mer graph represents the connection between a pair of K-mers, and each mass of each edge of a K-mer graph represents the number of occurrences of a sequence of K-mers represented by a pair of K-mers, and in the process of generating a K-mer graph: periodic updating , at the control device, graph description data for the K-dimensional graph after performing one or more operations by each hardware logical unit, which is used to generate at least a portion of the K-dimensional graph, wherein the graph description data is (i) a K-dimensional identifier graph and (ii) K-dimensional graph state information, wherein the control device creates a workflow of operations using the non-pipelined hardware logic blocks by triggering execution of one or more operations of each corresponding hardware logic block during generation of the K-dimensional graph.

[0020] Другие варианты осуществления могут включать в себя способы и системы, выполненные с возможностью осуществления работы аппаратных схем аппаратного-ускоренного блока генерирования графов.[0020] Other embodiments may include methods and systems configured to operate hardware circuits of a hardware-accelerated graph generation unit.

[0021] Эти и другие версии могут необязательно включать один или более из приведенных ниже признаков. Например, в некоторых вариантах реализации выходные данные каждого аппаратного логического блока из множества аппаратных логических блоков сохраняются посредством буферной емкости хеш-таблицы.[0021] These and other versions may optionally include one or more of the following features. For example, in some embodiments, the output of each hardware logical block of a plurality of hardware logical blocks is stored by a hash table buffer capacity.

[0022] В некоторых вариантах реализации операции могут дополнительно включать в себя предоставление сгенерированного K-мерного графа для блока распознавания вариантов, причем блок распознавания вариантов сконфигурирован для обработки K-мерного графа для определения потенциальных вариантов между одним или более из множества считываний и эталонной последовательностью.[0022] In some embodiments, the operations may further include providing the generated K-dimensional graph to a variant recognition unit, wherein the variant recognition unit is configured to process the K-dimensional graph to determine potential variants between one or more of the plurality of reads and a reference sequence.

[0023] В некоторых вариантах реализации операции могут дополнительно включать в себя получение с помощью блока распознавания вариантов сгенерированного K-мерного графа и идентификацию на основе обработки блока распознавания вариантов сгенерированного K-мерного графа, одного или более потенциальных вариантов, причем потенциальный вариант представляет собой разницу между распознаванием оснований одного или более считываний в наборе считываний и нуклеотидом эталонного генома в конкретном местоположении эталонного генома.[0023] In some embodiments, the operations may further include, using the variant recognition block, obtaining a generated K-dimensional graph and identifying, based on the variant recognition block's processing of the generated K-dimensional graph, one or more candidate variants, wherein the candidate variant is a difference between recognizing the bases of one or more reads in a set of reads and a reference genome nucleotide at a specific location in the reference genome.

[0024] В некоторых вариантах реализации данные описания графа могут дополнительно включать в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.[0024] In some embodiments, the graph description data may further include (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with a K-dimensional graph identifier .

[0025] В соответствии с другим инновационным аспектом настоящего описания описан способ аппаратно-ускоренного генерирования K-мерного графа в программируемом логическом устройстве. В одном аспекте способ может включать действия получения первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности для каждой конкретной нуклеотидной последовательности из первого набора нуклеотидных последовательностей: генерирование для хранения в буферной емкости хеш-таблицы и первым аппаратным логическим блоком данных, представляющих узел графа для каждого K-мера конкретной нуклеотидной последовательности, обнаружение устройством управления того, что первый аппаратный логический блок завершил генерирование узла графа для каждого K-мера конкретной нуклеотидной последовательности, конфигурирование устройством управления второго аппаратного логического блока для выполнения генерирования краев графа для сгенерированных графов и для одной или более пар сгенерированных графов узлов: генерирование вторым аппаратным логическим блоком и для хранения в хеш-таблице графов, данные, представляющие границы графа между одной или более парами сгенерированных узлов графа, сгенерированных первым аппаратным логическим блоком, причем данные, представляющие узел графа для каждого K-мера, хранящиеся в буферной емкости хеш-таблицы, и данные, представляющие края графа, хранящиеся в буферной емкости хеш-таблицы, представляют собой граф K-мера первого набора нуклеотидных последовательностей.[0025] In accordance with another innovative aspect of the present disclosure, a method for hardware-accelerated generation of a K-dimensional graph in a programmable logic device is described. In one aspect, the method may include the steps of obtaining a first set of nucleotide sequences, the first set of nucleotide sequences including (i) a plurality of reads corresponding to an active region of a reference sequence, and (ii) a portion of the reference sequence for each specific nucleotide sequence from the first set of nucleotide sequences : generating for storage in a buffer capacity a hash table and the first hardware logical unit of data representing a graph node for each K-mer of a particular nucleotide sequence, detecting by the control device that the first hardware logical unit has completed generating a graph node for each K-mer of a particular nucleotide sequences, configuring by the control device of a second hardware logic unit to perform graph edge generation for the generated graphs and for one or more pairs of generated node graphs: generated by the second hardware logic unit and for storing in a graph hash table, data representing graph boundaries between one or more pairs of generated graph nodes generated by the first hardware logic unit, wherein data representing a graph node for each K-mer stored in a hash table buffer and data representing graph edges stored in a hash table buffer constitute graph K -measure of the first set of nucleotide sequences.

[0026] Другие варианты включают в себя соответствующие системы и устройство, которые были конфигурированы с возможностью выполнения действий вышеупомянутых способов, определяемых аппаратными логическими схемами аппаратно-ускоренного блока генерирования графов.[0026] Other embodiments include corresponding systems and apparatus that have been configured to perform the actions of the above methods determined by the hardware logic circuits of the hardware-accelerated graph generation unit.

[0027] Эти и другие версии могут необязательно включать один или более из приведенных ниже признаков. Например, в некоторых вариантах реализации способ может дополнительно включать в себя периодическое сохранение устройством управления и в блоке памяти, доступном для устройства управления, данных описания графа для экземпляра K-мерного графа, причем данные описания графа представляют собой (i) K-мерный графический идентификатор и (ii) K-мерную информацию о состоянии графа.[0027] These and other versions may optionally include one or more of the following features. For example, in some embodiments, the method may further include periodically storing, by the control device and in a memory unit accessible to the control device, graph description data for a K-dimensional graph instance, wherein the graph description data is (i) a K-dimensional graph identifier and (ii) K-dimensional information about the state of the graph.

[0028] В некоторых вариантах реализации первый аппаратный логический блок может быть дополнительно выполнен с возможностью: определения того, совпадает ли один или более конкретных K-меров конкретной нуклеотидной последовательности с другим K-мером конкретной нуклеотидной последовательности, и на основании определения того, что один или более конкретных K-меров конкретной нуклеотидной последовательности совпадают с другим K-мером конкретной нуклеотидной последовательности, сохранение данных, которые маркируют один или более конкретных K-меров как неуникальные K-меры.[0028] In some embodiments, the first hardware logic block may be further configured to: determine whether one or more particular K-mers of a particular nucleotide sequence are the same as another K-mer of a particular nucleotide sequence, and based on the determination that one or more specific K-mers of a particular nucleotide sequence match another K-mer of a particular nucleotide sequence, storing data that marks one or more specific K-mers as non-unique K-mers.

[0029] В некоторых вариантах реализации вторая аппаратная логика дополнительно выполнена с возможностью: присвоения краевой массы каждому краю K-мерного графа.[0029] In some embodiments, the second hardware logic is further configured to: assign an edge mass to each edge of the K-dimensional graph.

[0030] В некоторых вариантах реализации способ может дополнительно включать в себя команду третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью: получения данных, представляющих K-мерный граф, из буферной емкости хеш-таблицы и предоставления полученных данных, представляющих K-мерный граф, в блок распознавания вариантов.[0030] In some embodiments, the method may further include instructing a third hardware logic block of the programmable logic device to execute hardware logic configured to: obtain data representing a K-dimensional graph from a hash table buffer capacity and provide the resulting data, representing the K-dimensional graph into the variant recognition block.

[0031] В некоторых вариантах реализации способ может дополнительно включать в себя команду третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью: избирательного удаления данных, представляющих узлы графов, и данных, представляющих края K-мерного графа из буферной емкости хеш-таблицы.[0031] In some embodiments, the method may further include instructing a third hardware logic unit of the programmable logic device to execute hardware logic configured to: selectively remove data representing graph nodes and data representing edges of a K-dimensional graph from a buffer capacity hash tables.

[0032] В некоторых вариантах реализации устройство управления реализовано с использованием третьего аппаратного логического блока программируемого логического устройства.[0032] In some embodiments, the control device is implemented using a third hardware logic block of a programmable logic device.

[0033] В некоторых вариантах реализации буферная емкость хеш-таблицы реализована с использованием третьего аппаратного логического блока программируемого логического устройства.[0033] In some implementations, the hash table buffer capacity is implemented using a third hardware logic block of a programmable logic device.

[0034] В некоторых вариантах реализации устройство управления реализовано с использованием одного или более ЦП или ГП, выполняющих программные команды для реализации функций устройства управления.[0034] In some embodiments, the control device is implemented using one or more CPUs or GPUs that execute software instructions to implement the functions of the control device.

[0035] В некоторых вариантах реализации данные описания графа дополнительно включают в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.[0035] In some embodiments, the graph description data further includes (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with a K-dimensional graph identifier.

[0036] В некоторых вариантах реализации способ может дополнительно включать в себя оценку K-мерного графа для проверки наличия циклов графа. В таких вариантах реализации, если во время оценки обнаружен цикл графа: процесс может включать в себя прекращение генерирования K-мерного графа. В альтернативном варианте реализации, если во время оценки цикл графа не обнаружен: способ может включать в себя получение данных из буферной емкости хеш-таблицы, описывающей структуру K-мерного графа, и предоставление в модуль распознавания вариантов полученных данных, которые описывают структуру K-мерного графа.[0036] In some embodiments, the method may further include evaluating a K-dimensional graph to check for the presence of cycles in the graph. In such embodiments, if a graph cycle is detected during evaluation: the process may include stopping generation of the K-dimensional graph. In an alternative implementation, if no graph cycle is detected during evaluation: the method may include obtaining data from a hash table buffer that describes the structure of the K-dimensional graph, and providing the recognition module with variants of the resulting data that describe the structure of the K-dimensional graph.

[0037] В соответствии с другим инновационным аспектом настоящего описания описана система аппаратно-ускоренного генерирования K-мерного графа с использованием программируемого логического устройства. Система может включать в себя аппаратно-ускоренный блок генерирования графов, который включает в себя аппаратные цифровые логические схемы, которые были расположены для выполнения операций. В одном аспекте операции могут включать в себя получение первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности для каждой конкретной нуклеотидной последовательности из первого набора нуклеотидных последовательностей: генерирование для хранения в буферной емкости хеш-таблицы и первым аппаратным логическим блоком данных, представляющих узел графа для каждого K-мера конкретной нуклеотидной последовательности, обнаружение устройством управления того, что первый аппаратный логический блок завершил генерирование узла графа для каждого K-мера конкретной нуклеотидной последовательности, конфигурирование устройством управления второго аппаратного логического блока для выполнения генерирования краев графа для сгенерированных графов и для одной или более пар сгенерированных графов узлов: генерирование вторым аппаратным логическим блоком и для хранения в хеш-таблице графов, данные, представляющие границы графа между одной или более парами сгенерированных узлов графа, сгенерированных первым аппаратным логическим блоком, причем данные, представляющие узел графа для каждого K-мера, хранящиеся в буферной емкости хеш-таблицы, и данные, представляющие края графа, хранящиеся в буферной емкости хеш-таблицы, представляют собой граф K-мера первого набора нуклеотидных последовательностей.[0037] In accordance with another innovative aspect of the present disclosure, a hardware-accelerated K-dimensional graph generation system using a programmable logic device is described. The system may include a hardware-accelerated graph generation unit that includes hardware-based digital logic circuits that have been positioned to perform the operations. In one aspect, the operations may include obtaining a first set of nucleotide sequences, wherein the first set of nucleotide sequences includes (i) a plurality of reads corresponding to the active region of a reference sequence, and (ii) a portion of the reference sequence for each specific nucleotide sequence from the first set of nucleotide sequences sequences: generation for storage in a buffer capacity of a hash table and the first hardware logical block of data representing a graph node for each K-mer of a specific nucleotide sequence, detection by the control device that the first hardware logical block has completed generating a graph node for each K-mer of a specific nucleotide sequence, configuring by the control device of a second hardware logic unit to perform graph edge generation for the generated graphs and for one or more pairs of generated node graphs: generated by the second hardware logic unit and for storing in a graph hash table, data representing the graph boundaries between one or more than pairs of generated graph nodes generated by the first hardware logic unit, wherein data representing a graph node for each K-mer stored in a hash table buffer capacity and data representing graph edges stored in a hash table buffer capacity constitute a graph K-mer of the first set of nucleotide sequences.

[0038] Другие варианты включают соответствующие способы и устройство для выполнения вышеупомянутых операций.[0038] Other embodiments include suitable methods and apparatus for performing the above operations.

[0039] Эти и другие версии могут необязательно включать один или более из приведенных ниже признаков. Например, в некоторых вариантах реализации операции могут дополнительно включать в себя периодическое сохранение устройством управления и в блоке памяти, доступном для устройства управления, данных описания графа для экземпляра K-мерного графа, причем данные описания графа представляют собой (i) K-мерный графический идентификатор и (ii) K-мерную информацию о состоянии графа.[0039] These and other versions may optionally include one or more of the following features. For example, in some embodiments, the operations may further include periodically storing, by the control device and in a memory unit accessible to the control device, graph description data for a K-dimensional graph instance, wherein the graph description data is (i) a K-dimensional graph identifier and (ii) K-dimensional information about the state of the graph.

[0040] В некоторых вариантах реализации первый аппаратный логический блок дополнительно выполнен с возможностью: определения того, совпадает ли один или более конкретных K-меров конкретной нуклеотидной последовательности с другим K-мером конкретной нуклеотидной последовательности, и на основании определения того, что один или более конкретных K-меров конкретной нуклеотидной последовательности совпадают с другим K-мером конкретной нуклеотидной последовательности, сохранение данных, которые маркируют один или более конкретных K-меров как неуникальные K-меры.[0040] In some embodiments, the first hardware logic block is further configured to: determine whether one or more particular K-mers of a particular nucleotide sequence are the same as another K-mer of a particular nucleotide sequence, and based on the determination that one or more specific K-mers of a particular nucleotide sequence match another K-mer of a particular nucleotide sequence, storing data that marks one or more specific K-mers as non-unique K-mers.

[0041] В некоторых вариантах реализации вторая аппаратная логика дополнительно выполнена с возможностью: присвоения краевой массы каждому краю K-мерного графа.[0041] In some embodiments, the second hardware logic is further configured to: assign an edge mass to each edge of the K-dimensional graph.

[0042] В некоторых вариантах осуществления операции могут дополнительно включать в себя команду третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью: получения данных, представляющих K-мерный граф, из буферной емкости хеш-таблицы и предоставления полученных данных, представляющих K-мерный граф, в блок распознавания вариантов.[0042] In some embodiments, the operations may further include instructing a third hardware logic block of the programmable logic device to execute hardware logic configured to: obtain data representing the K-dimensional graph from the hash table buffer capacity and provide the resulting data, representing the K-dimensional graph into the variant recognition block.

[0043] В некоторых вариантах осуществления операции могут дополнительно включать в себя команду третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью: избирательного удаления данных, представляющих узлы графов, и данных, представляющих края K-мерного графа из буферной емкости хеш-таблицы.[0043] In some embodiments, the operations may further include instructing a third hardware logic unit of the programmable logic device to execute hardware logic configured to: selectively remove data representing graph nodes and data representing edges of the K-dimensional graph from the buffer capacity hash tables.

[0044] В некоторых вариантах реализации буферная емкость хеш-таблицы реализована с использованием третьего аппаратного логического блока программируемого логического устройства.[0044] In some implementations, the hash table buffer capacity is implemented using a third hardware logic block of a programmable logic device.

[0045] В некоторых вариантах реализации данные описания графа дополнительно включают в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.[0045] In some embodiments, the graph description data further includes (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with a K-dimensional graph identifier.

[0046] В некоторых вариантах реализации способ может дополнительно включать в себя оценку K-мерного графа для проверки наличия циклов графа. В таких вариантах реализации, если во время оценки обнаружен цикл графа: процесс может включать в себя прекращение генерирования K-мерного графа. В альтернативном варианте реализации, если во время оценки цикл графа не обнаружен: способ может включать в себя получение данных из буферной емкости хеш-таблицы, описывающей структуру K-мерного графа, и предоставление в модуль распознавания вариантов полученных данных, которые описывают структуру K-мерного графа.[0046] In some embodiments, the method may further include evaluating a K-dimensional graph to check for the presence of cycles in the graph. In such embodiments, if a graph cycle is detected during evaluation: the process may include stopping generation of the K-dimensional graph. In an alternative implementation, if no graph cycle is detected during evaluation: the method may include obtaining data from a hash table buffer that describes the structure of the K-dimensional graph, and providing the recognition module with variants of the resulting data that describe the structure of the K-dimensional graph.

[0047] В соответствии с другим инновационным аспектом настоящего описания описан аппаратно-ускоренный блок генерирования графов. Аппаратно-ускоренный блок генерирования графов может включать в себя аппаратные цифровые логические схемы, которые были расположены для выполнения операций. В одном аспекте операции могут включать в себя получение первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности для каждой конкретной нуклеотидной последовательности из первого набора нуклеотидных последовательностей: генерирование для хранения в буферной емкости хеш-таблицы и первым аппаратным логическим блоком данных, представляющих узел графа для каждого K-мера конкретной нуклеотидной последовательности, обнаружение устройством управления того, что первый аппаратный логический блок завершил генерирование узла графа для каждого K-мера конкретной нуклеотидной последовательности, конфигурирование устройством управления второго аппаратного логического блока для выполнения генерирования краев графа для сгенерированных графов и для одной или более пар сгенерированных графов узлов: генерирование вторым аппаратным логическим блоком и для хранения в хеш-таблице графов, данные, представляющие границы графа между одной или более парами сгенерированных узлов графа, сгенерированных первым аппаратным логическим блоком, причем данные, представляющие узел графа для каждого K-мера, хранящиеся в буферной емкости хеш-таблицы, и данные, представляющие края графа, хранящиеся в буферной емкости хеш-таблицы, представляют собой граф K-мера первого набора нуклеотидных последовательностей.[0047] In accordance with another innovative aspect of the present disclosure, a hardware-accelerated graph generation unit is described. The hardware-accelerated graph generation unit may include hardware-based digital logic circuits that have been positioned to perform the operations. In one aspect, the operations may include obtaining a first set of nucleotide sequences, wherein the first set of nucleotide sequences includes (i) a plurality of reads corresponding to the active region of a reference sequence, and (ii) a portion of the reference sequence for each specific nucleotide sequence from the first set of nucleotide sequences sequences: generation for storage in a buffer capacity of a hash table and the first hardware logical block of data representing a graph node for each K-mer of a specific nucleotide sequence, detection by the control device that the first hardware logical block has completed generating a graph node for each K-mer of a specific nucleotide sequence, configuring by the control device of a second hardware logic unit to perform graph edge generation for the generated graphs and for one or more pairs of generated node graphs: generated by the second hardware logic unit and for storing in a graph hash table, data representing the graph boundaries between one or more than pairs of generated graph nodes generated by the first hardware logic unit, wherein data representing a graph node for each K-mer stored in a hash table buffer capacity and data representing graph edges stored in a hash table buffer capacity constitute a graph K-mer of the first set of nucleotide sequences.

[0048] Другие варианты осуществления могут включать в себя способы и системы, выполненные с возможностью осуществления работы аппаратных схем аппаратного-ускоренного блока генерирования графов.[0048] Other embodiments may include methods and systems configured to operate hardware circuits of a hardware-accelerated graph generation unit.

[0049] Эти и другие версии могут необязательно включать один или более из приведенных ниже признаков. Например, в некоторых вариантах реализации операции могут дополнительно включать в себя периодическое сохранение устройством управления и в блоке памяти, доступном для устройства управления, данных описания графа для экземпляра K-мерного графа, причем данные описания графа представляют собой (i) K-мерный графический идентификатор и (ii) K-мерную информацию о состоянии графа.[0049] These and other versions may optionally include one or more of the following features. For example, in some embodiments, the operations may further include periodically storing, by the control device and in a memory unit accessible to the control device, graph description data for a K-dimensional graph instance, wherein the graph description data is (i) a K-dimensional graph identifier and (ii) K-dimensional information about the state of the graph.

[0050] В некоторых вариантах реализации первый аппаратный логический блок может быть выполнен с возможностью определения того, совпадает ли один или более конкретных K-меров конкретной нуклеотидной последовательности с другим K-мером конкретной нуклеотидной последовательности, и на основании определения того, что один или более конкретных K-меров конкретной нуклеотидной последовательности совпадают с другим K-мером конкретной нуклеотидной последовательности, сохранение данных, которые маркируют один или более конкретных K-меров как неуникальные K-меры.[0050] In some embodiments, the first hardware logic block may be configured to determine whether one or more specific K-mers of a particular nucleotide sequence are the same as another K-mer of a particular nucleotide sequence, and based on the determination that one or more specific K-mers of a particular nucleotide sequence match another K-mer of a particular nucleotide sequence, storing data that marks one or more specific K-mers as non-unique K-mers.

[0051] В некоторых вариантах реализации вторая аппаратная логика дополнительно выполнена с возможностью: присвоения краевой массы каждому краю K-мерного графа.[0051] In some embodiments, the second hardware logic is further configured to: assign an edge mass to each edge of the K-dimensional graph.

[0052] В некоторых вариантах осуществления операции могут дополнительно включать в себя команду третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью: получения данных, представляющих K-мерный граф, из буферной емкости хеш-таблицы и предоставления полученных данных, представляющих K-мерный граф, в блок распознавания вариантов.[0052] In some embodiments, the operations may further include instructing a third hardware logic block of the programmable logic device to execute hardware logic configured to: obtain data representing the K-dimensional graph from the hash table buffer capacity and provide the resulting data, representing the K-dimensional graph into the variant recognition block.

[0053] В некоторых вариантах осуществления операции могут дополнительно включать в себя команду третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью: избирательного удаления данных, представляющих узлы графов, и данных, представляющих края K-мерного графа из буферной емкости хеш-таблицы.[0053] In some embodiments, the operations may further include instructing a third hardware logic unit of the programmable logic device to execute hardware logic configured to: selectively remove data representing graph nodes and data representing edges of the K-dimensional graph from the buffer capacity hash tables.

[0054] В некоторых вариантах реализации буферная емкость хеш-таблицы реализована с использованием третьего аппаратного логического блока программируемого логического устройства.[0054] In some implementations, the hash table buffer capacity is implemented using a third hardware logic block of a programmable logic device.

[0055] В некоторых вариантах реализации данные описания графа могут дополнительно включать в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.[0055] In some embodiments, the graph description data may further include (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with a K-dimensional graph identifier .

[0056] В некоторых вариантах реализации операции могут дополнительно включать в себя оценку K-мерного графа для проверки наличия циклов графа, если во время оценки обнаружен граф: прекращение генерирования K-мерного графа, или если во время оценки не обнаружен цикл графа: получение данных из буферной емкости хеш-таблицы, описывающей структуру k-мерного графа, и предоставление в модуль распознавания вариантов полученных данных, которые описывают структуру k-мерного графа.[0056] In some embodiments, the operations may further include evaluating the K-dimensional graph to check for the presence of graph cycles, if a graph is detected during evaluation: stop generating the K-dimensional graph, or if no graph cycle is detected during evaluation: obtain data from the buffer capacity of the hash table describing the structure of the k-dimensional graph, and providing the recognition module with variants of the received data that describe the structure of the k-dimensional graph.

[0057] Эти и другие аспекты настоящего описания более подробно описаны ниже со ссылкой на прилагаемые чертежи.[0057] These and other aspects of the present specification are described in more detail below with reference to the accompanying drawings.

КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВBRIEF DESCRIPTION OF GRAPHIC MATERIALS

[0058] На ФИГ. 1 представлен пример системы для аппаратно-ускоренного генерирования K-мерного графа.[0058] In FIG. Figure 1 shows an example of a system for hardware-accelerated generation of a K-dimensional graph.

[0059] На ФИГ. 2 представлена структурная схема примера способа аппаратно-ускоренного генерирования K-мерного графа.[0059] In FIG. Figure 2 shows a block diagram of an example of a method for hardware-accelerated generation of a K-dimensional graph.

[0060] На ФИГ. 3 представлена структурная схема другого примера способа аппаратно-ускоренного генерирования K-мерного графа.[0060] In FIG. Figure 3 shows a block diagram of another example of a method for hardware-accelerated K-dimensional graph generation.

[0061] На ФИГ. 4 представлен пример K-мерного графа.[0061] In FIG. Figure 4 shows an example of a K-dimensional graph.

[0062] На ФИГ. 5 представлена блок-схема примера компонентов системы, которые могут быть использованы для аппаратно-ускоренного K-мерного графа.[0062] In FIG. Figure 5 shows a block diagram of an example of system components that can be used for a hardware-accelerated K-dimensional graph.

ПОДРОБНОЕ ОПИСАНИЕDETAILED DESCRIPTION

[0063] Настоящее описание относится к аппаратно-ускоренному генерированию K-мерного графа. Создание K-мерного графа с использованием аппаратных схем значительно сокращает время, необходимое для создания K-мерного графа, и выгружает процесс генерирования K-мерного графа с помощью программного процессора на аппаратную логику интегральной схемы, такую как программируемая пользователем вентильная матрица или ASIC. Это освобождает программные ресурсы программного процессора, которые можно использовать для выполнения других задач обработки геномных данных.[0063] The present description relates to hardware-accelerated K-dimensional graph generation. Generating a K-dimensional graph using hardware circuits significantly reduces the time required to generate a K-dimensional graph and offloads the process of generating a K-dimensional graph using a software processor to integrated circuit hardware logic such as a field programmable gate array or ASIC. This frees up software processor resources that can be used to perform other genomic data processing tasks.

[0064] Аппаратно-ускоренное генерирование K-мерных графов может быть достигнуто с помощью устройства управления, которое выполнено с возможностью управления рабочим потоком операций, выполняемых множеством неконвейерных аппаратных логических блоков. В частности, устройство управления может абстрактно обеспечивать высокоуровневые конвейерные функциональные возможности с использованием множества неконвейерных аппаратных логических блоков. Устройство управления может обеспечивать эту функциональность путем хранения и обновления данных описания графа, которые включают в себя (i) идентификатор графа с K-мером, который идентифицирует экземпляр графа с K-мером, и (ii) информацию о состоянии K-мерного графа. Информация о состоянии K-мерного графа может включать в себя, например, данные, указывающие на последнюю логику аппаратного обеспечения, которая работает на исходных графах для конкретного случая K-мерного графа, данные, указывающие, прекратил ли последний блок логики аппаратного обеспечения операцию, данные, указывающие длину K-мера, данные, указывающие список узлов K-мера, данные, указывающие список указателей, которые могут быть использованы для идентификации узлов K-мера в буферной емкости, длину списка узлов K-мера, данные, включающие список неуникальных K-меров, или любое их подмножество или комбинацию. Устройство управления управляет генерированием K-мерных графов путем вызова конкретного аппаратного логического блока, который должен выполнять операцию по исходным графическим данным и предоставлять обновленный набор данных описания графов на вызываемый аппаратный логический блок.[0064] Hardware-accelerated generation of K-dimensional graphs can be achieved using a control device that is configured to control the workflow of operations performed by a plurality of non-pipelined hardware logic units. In particular, the control device may abstractly provide high-level pipelined functionality using multiple non-pipeline hardware logic blocks. The management device may provide this functionality by storing and updating graph description data that includes (i) a K-mer graph identifier that identifies an instance of the K-mer graph, and (ii) information about the state of the K-mer graph. K-dimensional graph state information may include, for example, data indicating the last hardware logic that ran on the source graphs for a particular K-dimensional graph instance, data indicating whether the last block of hardware logic terminated operation, data , indicating the length of the K-mer, data indicating a list of K-mer nodes, data indicating a list of pointers that can be used to identify K-mer nodes in the buffer capacity, the length of a list of K-mer nodes, data including a list of non-unique K-mers measures, or any subset or combination thereof. The control device controls the generation of K-dimensional graphs by calling a specific hardware logic block, which must perform an operation on the original graph data and provide an updated set of graph description data to the called hardware logic block.

[0065] Такое хранение и обновление данных описания графа позволяет устройству управления управлять параллельной обработкой неконвейерных аппаратных логических блоков таким образом, что позволяет каждому из неконвейерных аппаратных логических блоков работать на данных, соответствующих отдельному K-мерному графу. Соответственно, в дополнение к увеличенным преимуществам по скорости, достигаемым с использованием аппаратной логики вместо выполнения программных команд для создания K-мерных графов, настоящее описание обеспечивает дальнейшую ускоренную работу посредством повышения пропускной способности за счет генерирования сегментов различных K-мерных графов одновременно с использованием различных аппаратных логических блоков, управляемых устройством управления.[0065] This storage and updating of the graph description data allows the control device to control parallel processing of the non-pipeline hardware logic units in a manner that allows each of the non-pipeline hardware logic units to operate on data corresponding to a separate K-dimensional graph. Accordingly, in addition to the increased speed benefits achieved by using hardware logic instead of executing software instructions to generate K-dimensional graphs, the present disclosure provides further speedup through increased throughput by generating segments of different K-dimensional graphs simultaneously using different hardware logical blocks controlled by a control device.

[0066] На ФИГ. 1 представлен пример системы 100 для аппаратно-ускоренного генерирования K-мерного графа. В некоторых вариантах реализации система 100 может включать в себя секвенатор 110 нуклеиновых кислот, базу данных 120 эталонных последовательностей, аппаратно-ускоренный блок 130 генерирования графов, множество аппаратных логических блоков 131, 132, 133, 134, 135, 136, 137, 138, устройство управления 140, буферную емкость 150 хеш-таблицы, DRAM 160 и блок распознавания вариантов 180. В некоторых вариантах реализации аппаратно-ускоренный блок 130 генерирования графов может быть реализован с использованием программируемой логической схемы, такой как программируемая пользователем вентильная матрица (FPGA). В других вариантах реализации аппаратно-ускоренный блок 130 генерирования графов может быть реализован с использованием специализированной схемы (ASIC). В любом сценарии функциональные возможности, описанные в отношении аппаратно-ускоренного блока 130 генерирования графов и каждого из компонентов, реализованных на нем, реализованы с использованием логических схем аппаратного обеспечения, выполненных с возможностью реализации функциональных возможностей, описанных в настоящем документе, без выполнения программных команд для реализации функциональных возможностей.[0066] In FIG. 1 shows an example system 100 for hardware-accelerated K-dimensional graph generation. In some embodiments, system 100 may include a nucleic acid sequencer 110, a reference sequence database 120, a hardware-accelerated graph generation unit 130, a plurality of hardware logic units 131, 132, 133, 134, 135, 136, 137, 138, a device control 140, hash table buffer capacity 150, DRAM 160, and variant recognizer 180. In some implementations, hardware-accelerated graph generation unit 130 may be implemented using programmable logic circuitry, such as a field programmable gate array (FPGA). In other implementations, the hardware-accelerated graph generation unit 130 may be implemented using an application specific circuit (ASIC). In any scenario, the functionality described with respect to the hardware-accelerated graph generation unit 130 and each of the components implemented thereon is implemented using hardware logic designed to implement the functionality described herein without executing software instructions to implementation of functionality.

[0067] В настоящем описании термин «блок» используется для описания программного модуля, аппаратного модуля или их комбинации, которая используется для выполнения указанной функции. Определение того, является ли конкретный «блок», описанный в настоящем документе, аппаратным, программным или их комбинацией, может быть выполнено на основании контекста его использования. Например, «блок ввода» 131, «блок графического узла» 132, «краевой блок графа» 133 и т.п., в аппаратно-ускоренном блоке 130 генерирования графов, который реализован с использованием FPGA или ASIC, представляет собой аппаратный блок, функциональные возможности которого реализованы с помощью аппаратных цифровых логических элементов или аппаратных цифровых логических блоков, которые размещены с возможностью реализации функциональных возможностей, описанных в настоящем документе в отношении конкретного «блока». В качестве другого примера «блок 180 распознавания вариантов», который не реализован с использованием аппаратно-ускоренного блока 130 генерирования графов, представленного на ФИГ. 1, представляет собой программный модуль, функциональность которого реализована одним или более компьютерами, исполняющими программные команды, определяющие функциональность «блока 180 распознавания вариантов». В качестве другого примера компьютер или блок обработки может представлять собой аппаратное устройство, реализующее функциональные возможности путем обработки программных команд, и, таким образом, функциональные возможности компьютера или блока обработки представляют собой комбинацию аппаратного и программного обеспечения.[0067] As used herein, the term “block” is used to describe a software module, a hardware module, or a combination thereof that is used to perform a specified function. Determination of whether a particular "block" described herein is hardware, software, or a combination thereof can be made based on the context of its use. For example, an "input block" 131, a "graphics node block" 132, a "graph edge block" 133, etc., in a hardware-accelerated graph generation block 130, which is implemented using an FPGA or ASIC, is a hardware block that functions the capabilities of which are implemented by hardware digital logic gates or hardware digital logic blocks that are arranged to implement the functionality described herein with respect to a particular “block.” As another example, a "variant recognition block 180" that is not implemented using the hardware-accelerated graph generation block 130 shown in FIG. 1 is a software module whose functionality is implemented by one or more computers executing software instructions that define the functionality of the “variant recognition unit 180.” As another example, a computer or processing unit may be a hardware device that implements functionality by processing software instructions, and thus the functionality of the computer or processing unit is a combination of hardware and software.

[0068] Хотя примеры одного или более компонентов, показанных на ФИГ. 1, представлены в настоящем документе в виде аппаратных реализаций, таких как «устройство управления» 140, поскольку «устройство управления» показано на ФИГ. 1 как реализованное в аппаратно-ускоренном блоке 130 генерирования графов, настоящее описание не ограничено такими примерами. Вместо этого можно использовать другие варианты реализации, в которых «устройство управления » 140 реализовано в программном обеспечении в виде программного модуля или комбинации аппаратного и программного обеспечения с компьютером или блоком обработки данных, исполняющим программные команды для реализации функционала описанного в настоящем документе «устройства управления» 140. Аналогичным образом, возможны варианты реализации настоящего описания, в которых определенные компоненты, описанные как программное обеспечение со ссылкой на ФИГ. 1, такие как «блок 180 распознавания вариантов», реализованы в виде аппаратной реализации.[0068] Although examples of one or more components shown in FIG. 1 are represented herein as hardware implementations such as "control device" 140, as "control device" is shown in FIG. 1 as implemented in a hardware-accelerated graph generation unit 130, the present description is not limited to such examples. Instead, other embodiments may be used in which the "control device" 140 is implemented in software as a software module or a combination of hardware and software with a computer or processing unit executing software instructions to implement the functionality of the "control device" described herein. 140. Likewise, embodiments of the present disclosure are possible in which certain components described as software with reference to FIG. 1, such as the “variant recognition unit 180” are implemented as a hardware implementation.

[0069] Секвенатор 110 нуклеиновых кислот представляет собой устройство, выполненное с возможностью выполнения первичного анализа. Первичный анализ может включать размещение в секвенаторе 110 нуклеиновых кислот биологического образца 105, такого как образец крови, образец ткани, мокроты или нуклеиновой кислоты, и генерирование секвенатором 110 нуклеиновых кислот выходных данных, таких как одно или более считываний 112, каждое из которых представляет собой порядок нуклеотидов нуклеотидной последовательности полученного биологического образца. В некоторых вариантах реализации секвенирование с помощью секвенатора 110 нуклеиновых кислот можно выполнять в ходе множества циклов считывания, при этом в первом цикле считывания генерируют одно или более первых считываний, включающих последовательность распознавания оснований, представляющих порядок нуклеотидов от первого конца фрагмента нуклеотидной последовательности, и во втором цикле считывания генерируют одно или более соответствующих вторых считываний, включающих последовательность распознавания оснований, представляющих порядок нуклеотидов с других концов одного из фрагментов нуклеотидной последовательности. В некоторых вариантах реализации считывания можно генерировать с использованием клональной амплификации. В примере, показанном на ФИГ. 1, одно или более считываний 112 могут включать в себя набор считываний для конкретного местоположения эталонного генома, причем местоположение эталонного генома состоит из множества последовательных местоположений эталонного генома.[0069] The nucleic acid sequencer 110 is a device configured to perform primary analysis. The primary analysis may include placing in the nucleic acid sequencer 110 a biological sample 105, such as a blood sample, tissue sample, sputum, or nucleic acid, and the nucleic acid sequencer 110 generating an output, such as one or more reads 112, each of which represents an order nucleotides of the nucleotide sequence of the obtained biological sample. In some embodiments, sequencing by the nucleic acid sequencer 110 can be performed over multiple read cycles, wherein a first read cycle generates one or more first reads comprising a base recognition sequence representing the order of nucleotides from the first end of the nucleotide sequence fragment, and a second the read cycle generates one or more corresponding second reads including a base recognition sequence representing the order of nucleotides at other ends of one of the nucleotide sequence fragments. In some embodiments, reads can be generated using clonal amplification. In the example shown in FIG. 1, one or more reads 112 may include a set of reads for a particular reference genome location, wherein the reference genome location consists of a plurality of sequential reference genome locations.

[0070] Таким образом, каждое считывание представляет собой данные, которые представляют собой часть генома нуклеиновой кислоты для организма, такого как животное, насекомое, растение и т.п. Предполагая, что короткие фрагменты нуклеотидной последовательности имеют приблизительно 600 распознаваний оснований, первое считывание может представлять собой 150 упорядоченных нуклеотидов для первого конца фрагмента нуклеотидной последовательности, а второе считывание может представлять собой 150 упорядоченных нуклеотидов другого конца фрагмента нуклеотидной последовательности. Однако эти числа являются лишь примерами, и любой секвенатор 110 нуклеиновых кислот может быть выполнен с возможностью генерирования считываний, которые могут выполняться аппаратно-ускоренным блоком генерирования графов, как описано в настоящем документе, с использованием любых способов секвенирования. Такие считывания могут иметь длину, отличную от значений длины, упомянутых в настоящем документе. Например, в некоторых вариантах реализации настоящее описание можно использовать для генерирования аппаратно-ускоренных K-мерных графов для считываний, полученных фрагментами нуклеотидной последовательности, имеющими до 1000 нуклеотидов или более, причем каждое считывание имеет, например, 50 распознавания оснований, 75 распознавания оснований, 150 распознавания оснований, 200 распознавания оснований, 300 распознавания оснований, 500 распознавания оснований или более с конца каждого фрагмента. Каждое распознавание оснований может соответствовать нуклеотиду. Настоящее описание также можно использовать для построения аппаратно-ускоренных K-мерных графов для длинных считываний. Соответственно, аппаратно-ускоренный блок 130 генерирования графов можно использовать для генерирования K-мерных графов для любых считываний, сгенерированных любым способом любым типом секвенатора нуклеиновых кислот.[0071] В некоторых вариантах реализации биологический образец 105 может включать образец ДНК, а секвенатор 110 нуклеиновых кислот может включать секвенатор ДНК. В таких вариантах реализации порядок секвенированных нуклеотидов в считывании, полученном секвенатором нуклеиновых кислот, может включать один или более из гуанина (Г), цитозина (Ц), аденина (А) и тимина (Т) в любой комбинации. В некоторых вариантах реализации секвенатор 110 нуклеиновых кислот можно использовать для секвенирования образцов РНК. В некоторых вариантах реализации это может происходить с использованием протоколов RNA-seq. В качестве примера, образец РНК может быть предварительно обработан с применением обратной транскрипции с образованием комплементарной ДНК (кДНК) с помощью фермента обратной транскриптазы. В других вариантах реализации секвенатор 110 нуклеиновых кислот может включать секвенатор РНК, а биологический образец может включать образец РНК. Соответственно, хотя в примере, показанном на ФИГ. 1, описан секвенатор нуклеиновых кислот, который производит считывания, состоящие из Г, Ц, А и Т, генерируемых секвенатором ДНК на основе образца ДНК, настоящее описание не ограничено этим. Вместо этого в других вариантах осуществления процесс может обрабатывать считывания, состоящие из Ц, Г, А и У, которые получены секвенатором РНК на основе образца РНК. В некоторых вариантах осуществления считывания ДНК или считывания РНК, полученные секвенатором нуклеиновых кислот, могут включать в себя распознавание оснований N, причем N указывает на распознавание неизвестных оснований, сгенерированное секвенатором нуклеиновых кислот.[0070] Thus, each read represents data that represents part of a nucleic acid genome for an organism such as an animal, insect, plant, or the like. Assuming that short fragments of nucleotide sequence have approximately 600 base recognitions, the first read may represent 150 ordered nucleotides for the first end of the fragment of nucleotide sequence, and the second read may represent 150 ordered nucleotides of the other end of the fragment of nucleotide sequence. However, these numbers are just examples, and any nucleic acid sequencer 110 may be configured to generate reads that can be performed by a hardware-accelerated graph generation unit as described herein using any sequencing methods. Such reads may have a length different from the lengths mentioned herein. For example, in some embodiments, the present disclosure can be used to generate hardware-accelerated K-mer graphs for reads obtained by nucleotide sequence fragments having up to 1000 nucleotides or more, with each read having, for example, 50 base recognition, 75 base recognition, 150 base recognition, 200 base recognition, 300 base recognition, 500 base recognition or more from the end of each fragment. Each base recognition can correspond to a nucleotide. The present description can also be used to construct hardware-accelerated K-dimensional graphs for long reads. Accordingly, hardware-accelerated graph generation unit 130 can be used to generate K-mer graphs for any reads generated in any manner by any type of nucleic acid sequencer.[0071] In some embodiments, the biological sample 105 may include a DNA sample, and the nucleic acid sequencer 110 may include a DNA sequencer. In such embodiments, the order of sequenced nucleotides in the read produced by the nucleic acid sequencer may include one or more of guanine (G), cytosine (C), adenine (A), and thymine (T) in any combination. In some embodiments, the nucleic acid sequencer 110 can be used to sequence RNA samples. In some embodiments, this may occur using RNA-seq protocols. As an example, an RNA sample can be preprocessed using reverse transcription to form complementary DNA (cDNA) using the enzyme reverse transcriptase. In other embodiments, the nucleic acid sequencer 110 may include an RNA sequencer, and the biological sample may include an RNA sample. Accordingly, although in the example shown in FIG. 1 describes a nucleic acid sequencer that produces reads consisting of G, C, A and T generated by the DNA sequencer from a DNA sample, the present description is not limited to this. Instead, in other embodiments, the process may process reads consisting of C, G, A, and Y that are produced by an RNA sequencer from an RNA sample. In some embodiments, the DNA reads or RNA reads generated by the nucleic acid sequencer may include a base recognition N, wherein N indicates an unknown base recognition generated by the nucleic acid sequencer.

[0072] В некоторых вариантах осуществления секвенатор 110 нуклеиновых кислот может включать секвенатор следующего поколения (NGS), который выполнен с возможностью генерирования считывания последовательностей, например считывания 112, для данного образца таким образом, чтобы обеспечивать сверхвысокую пропускную способность, масштабируемость и скорость за счет использования технологии массового параллельного секвенирования. NGS позволяют быстро секвенировать целые геномы, обеспечивают возможность глубокого изучения секвенированных целевых областей, использования секвенирования РНК (RNA-Seq) для обнаружения новых вариантов РНК и сайтов сплайсинга или количественно определять мРНК для анализа генной экспрессии, проводить анализ эпигенетических факторов, таких как метилирование ДНК в масштабах генома и ДНК-белковые взаимодействия, секвенирование образцов опухолей для исследования редких соматических вариантов и субклонов опухоли, а также изучение разнообразия микроорганизмов у людей или в окружающей среде.[0072] In some embodiments, nucleic acid sequencer 110 may include a next generation sequencer (NGS) that is configured to generate sequence reads, such as read 112, for a given sample in a manner that provides ultra-high throughput, scalability, and speed through the use of massively parallel sequencing technologies. NGS allows the rapid sequencing of entire genomes, the ability to study sequenced target regions in depth, the use of RNA sequencing (RNA-Seq) to discover new RNA variants and splice sites or quantify mRNA for gene expression analysis, and the analysis of epigenetic factors such as DNA methylation in genomic scales and DNA-protein interactions, sequencing tumor samples to study rare somatic variants and tumor subclones, and studying microbial diversity in humans or the environment.

[0073] Секвенатор 110 нуклеиновых кислот может получать эталонный геном 122 из базы данных 122 эталонных геномов. В некоторых вариантах реализации получают только часть эталонного генома 122. Полученная часть эталонного генома 122 может соответствовать эталонным местоположениям эталонного генома 122, с которыми сопоставляют и приводят в соответствие набор считываний 112. База данных 122 данных эталонных геномов может включать в себя хранилище данных, которое организует хранение множества различных эталонных геномов. В некоторых вариантах реализации конкретный эталонный геном 122, выбранный из базы данных эталонных геномов, может быть основан на типе образца 105 ДНК. В некоторых вариантах осуществления тип выбранного эталонного генома 122, выбранного из базы 120 эталонного генома, может быть выбран на основании входных данных от пользователя секвенатора 110 нуклеиновых кислот. В таких вариантах реализации пользователь может, например, выбрать идентификатор эталонного генома 120, который может использоваться секвенатором 110 нуклеиновых кислот для выбора конкретного эталонного генома 122 из базы 120 эталонных геномов. Эталонный геном 122 может включать в себя, например, нуклеотидную последовательность, собранную в качестве репрезентативного примера набора генов для конкретного вида.[0073] The nucleic acid sequencer 110 may obtain the reference genome 122 from the reference genome database 122. In some embodiments, only a portion of the reference genome 122 is obtained. The obtained portion of the reference genome 122 may correspond to reference locations of the reference genome 122 to which the set of reads 112 is mapped and aligned. The reference genome database 122 may include a data store that organizes storage of many different reference genomes. In some embodiments, a particular reference genome 122 selected from a database of reference genomes may be based on the type of DNA sample 105. In some embodiments, the type of selected reference genome 122 selected from the reference genome database 120 may be selected based on input from the user of the nucleic acid sequencer 110. In such embodiments, the user may, for example, select a reference genome identifier 120, which can be used by the nucleic acid sequencer 110 to select a specific reference genome 122 from the reference genome database 120. Reference genome 122 may include, for example, a nucleotide sequence assembled as a representative example of a set of genes for a particular species.

[0074] Комбинация набора считываний 112, сгенерированных секвенатором 110 нуклеиновых кислот, и полученного эталонного генома 122 может быть предоставлена в качестве входных данных для аппаратно-ускоренного блока 130 генерирования графов. Эти входные данные могут обрабатываться одним или более аппаратными логическими блоками 131-138 аппаратно-ускоренного блока 130 генерирования графов для генерирования экземпляра K-мерного графа. Например, каждый аппаратный логический блок из аппаратных логических блоков 131-138 может быть конфигурирован с возможностью выполнения соответствующих операций для каждого считывания из набора считываний 112, включенных в качестве входных данных для аппаратно-ускоренного блока 130 генерирования графов.[0074] A combination of the set of reads 112 generated by the nucleic acid sequencer 110 and the resulting reference genome 122 may be provided as input to a hardware-accelerated graph generation unit 130 . These input data may be processed by one or more hardware logic blocks 131-138 of the hardware-accelerated graph generation unit 130 to generate a K-dimensional graph instance. For example, each hardware logic block of the hardware logic blocks 131-138 may be configured to perform corresponding operations for each read from the set of reads 112 included as input to the hardware-accelerated graph generation block 130.

[0075] В настоящем документе описана система 100, показанная на ФИГ. 1, включающая секвенатор нуклеиновых кислот. В некоторых вариантах реализации, таких как описанные со ссылкой на ФИГ. 1, система может включать в себя секвенатор 110, аппаратно-ускоренный блок 130 генерирования графов, а другие компоненты системы 100 могут быть интегрированы в секвенатор 110 нуклеиновых кислот. Однако настоящее описание не ограничено интеграцией в секвенатор 110 нуклеиновых кислот. Вместо этого в некоторых вариантах реализации аппаратно-ускоренный блок 130 генерирования графов может быть реализован в программируемом логическом устройстве или ASIC, интегрированном или размещенном в компьютере, удаленном от секвенатора 110 нуклеиновых кислот и соединенном с возможностью связи со секвенатором 110 нуклеиновых кислот, например, с помощью одной или более проводных или беспроводных сетей. Аналогичным образом база данных 120, блок 180 распознавания вариантов или и то, и другое могут быть реализованы за пределами секвенатора нуклеиновых кислот. 110. Аналогичным образом, нет необходимости в том, чтобы система 100 вообще включала секвенатор 110 нуклеиновых кислот. Вместо этого в некоторых вариантах реализации аппаратно-ускоренный блок 130 генерирования графов и другие компоненты, показанные на ФИГ. 1, могут быть реализованы в компьютерной системе, которая не включает в себя секвенатор 110 нуклеиновых кислот. В таких вариантах реализации аппаратно-ускоренный блок генерирования графов может получать набор считываний 112, эталонной последовательности 122 или обеих посредством сети из места (мест) хранения одного или более запоминающих устройств или т.п. Соответственно, система 100 изображает пример настоящего описания, но не ограничивает настоящее описание какой-либо конкретной конфигурацией компонентов системы.[0075] Described herein is the system 100 shown in FIG. 1, including a nucleic acid sequencer. In some embodiments, such as those described with reference to FIGS. 1, the system may include a sequencer 110, a hardware-accelerated graph generation unit 130, and other components of the system 100 may be integrated into the nucleic acid sequencer 110. However, the present description is not limited to the integration of 110 nucleic acids into the sequencer. Instead, in some embodiments, the hardware-accelerated graph generation unit 130 may be implemented in a programmable logic device or ASIC integrated or housed in a computer remote from the nucleic acid sequencer 110 and communicatively coupled to the nucleic acid sequencer 110, e.g. one or more wired or wireless networks. Likewise, database 120, variant recognition unit 180, or both may be implemented outside of the nucleic acid sequencer. 110. Likewise, the system 100 does not need to include a nucleic acid sequencer 110 at all. Instead, in some embodiments, the hardware-accelerated graph generation unit 130 and other components shown in FIG. 1 may be implemented on a computer system that does not include a nucleic acid sequencer 110. In such embodiments, the hardware-accelerated graph generating unit may obtain a set of reads 112, reference sequence 122, or both via a network from the storage location(s) of one or more storage devices or the like. Accordingly, system 100 depicts an example of the present description, but does not limit the present description to any particular configuration of system components.

[0076] Один или более аппаратных логических блоков аппаратно-ускоренного блока 130 генерирования графов могут включать в себя блок 131 ввода, блок 132 узла графа, краевой блок 133 графа, блок 134 обратного распространения сигнала, циклический блок 135, блок 136 отсечения, блок 137 вывода графа и блок 138 уничтожения. В некоторых вариантах реализации генерирование K-мерного графа с помощью аппаратно-ускоренного блока 130 генерирования графов может включать в себя устройство 140 управления, активирующее и конфигурирующее каждый из аппаратных логических блоков 131-138 для выполнения соответствующих аппаратных логических операций по набору данных, хранящихся в буферной емкости 150 или DRAM 160. В других вариантах реализации устройство 140 управления может активировать и конфигурировать только подмножество аппаратных логических блоков 131-138 для выполнения их соответствующей аппаратной логической операции на наборе исходных графических данных, хранящихся в буферной емкости 150 или DRAM 160.[0076] One or more hardware logic blocks of the hardware-accelerated graph generation block 130 may include an input block 131, a graph node block 132, a graph edge block 133, a backpropagation block 134, a loop block 135, a pruning block 136, a block 137 graph output and destruction block 138. In some implementations, generating a K-dimensional graph using a hardware-accelerated graph generation block 130 may include a control device 140 activating and configuring each of the hardware logic blocks 131-138 to perform corresponding hardware logic operations on a set of data stored in the buffer. capacity 150 or DRAM 160. In other implementations, control device 140 may activate and configure only a subset of hardware logic blocks 131-138 to perform their respective hardware logic operation on a set of raw graphics data stored in buffer capacity 150 or DRAM 160.

[0077] В качестве примера в некоторых вариантах реализации аппаратно-ускоренный блок 130 генерирования графов можно использовать для генерирования специализированной формы графа де Брёйна. Эту специализированную форму графа де Брёйна можно оптимизировать таким образом, чтобы на графе представляли неуникальные K-меры с использованием множества соответствующих узлов, каждый из которых имеет один край, а не представляли одним узлом с множеством краев. Это может быть частично достигнуто с помощью графического блока 132 для идентификации неуникальных K-меров и маркировки неуникальных K-меров для дальнейшей обработки. Неуникальный K-мер может быть определен как последовательность K-меров, которая возникает по меньшей мере в два раза в любом одном считывании или по меньшей мере два раза в эталонной последовательности. Уникальный K-мер в одном и том же[0077] As an example, in some embodiments, hardware-accelerated graph generation unit 130 may be used to generate a specialized form of the de Bruijn graph. This specialized form of the de Bruijn graph can be optimized such that the graph represents non-unique K-mers using a set of corresponding nodes, each with one edge, rather than being represented by a single node with many edges. This can be achieved in part by using a graphics block 132 to identify non-unique K-mers and mark non-unique K-mers for further processing. A non-unique K-mer can be defined as a sequence of K-mers that occurs at least twice in any one read or at least twice in a reference sequence. Unique K-mer in the same

считывании возникает не более одного раза, но все еще может возникать при множестве считываний.reading occurs at most once, but can still occur on multiple reads.

[0078] Однако в других вариантах реализации можно создавать графы де Брёйна без различения уникальных или неуникальных K-меров. Таким образом, в некоторых вариантах реализации блок 132 узла графа, который может идентифицировать неуникальные K-меры, необязательно должен быть реализован. В еще одном примере блок 134 обратного распространения сигнала не обязательно использовать для генерирования всех K-мерных графов. Вместо этого блок 134 обратного распространения сигнала может быть ограничен вариантами реализации, в которых он может улучшать производительность. В качестве примера блок 134 обратного распространения сигнала можно использовать для повышения качества краевых масс при будущем преобразовании сгенерированного K-мерного графа в граф последовательности.[0078] However, in other implementations it is possible to create de Bruijn graphs without distinguishing between unique and non-unique K-mers. Thus, in some implementations, a graph node block 132 that can identify non-unique K-mers need not be implemented. In yet another example, backpropagation unit 134 does not need to be used to generate all K-dimensional graphs. Instead, backpropagation unit 134 may be limited to implementations in which it may improve performance. As an example, backpropagation block 134 can be used to improve the quality of edge masses in future transformation of the generated K-dimensional graph into a sequence graph.

[0079] Пример генерирования K-мерного графа, описанный в отношении примера, показанного на ФИГ. 1, показывает каждый аппаратный логический блок 131-138, который может быть активирован и сконфигурирован устройством 140 управления. В настоящем описании каждый аппаратный логический блок 131-138 по существу описан как активированный устройством 140 управления, сконфигурированный устройством 140 управления с использованием, например, данных, описывающих граф, хранящихся в устройстве 140 управления, с получением исходных графов, с выполнением одной или более конкретных операций обработки полученных исходных графов или других данных и с последующим обновлением исходных графов, данных описания графов или обоих вариантов осуществления настоящего изобретения, не имеет таких ограничений. Вместе с тем настоящее описание не ограничивается такими вариантами реализации. Вместо этого в некоторых вариантах реализации каждый аппаратный логический блок 131-138 может быть выполнен с возможностью исполнения множества экземпляров соответствующих им функциональных возможностей. Например, блок 132 узла графа может быть выполнен с возможностью приема до 3 отдельных наборов исходных графических данных и одновременного выполнения их операций на нем, логический блок 135 аппаратного обеспечения цикла может быть выполнен с возможностью принятия до 3 отдельных наборов исходных графических данных и одновременного выполнения на нем операций, а PRU может быть выполнен с возможностью принятия до 2 отдельных наборов исходных графических данных и одновременного выполнения на нем операций. Количество отдельных наборов или исходных графических данных, каждое из которых соответствует различным K-мерным графам, может быть принято и обработано конкретным аппаратным логическим блоком 131-138, ограничено только доступными аппаратными ресурсами для системы 100. Например, предполагая, что для использования доступны достаточные уровни логических единиц DRAM и FPGA, число отдельных наборов исходных графических данных, которые могут быть получены и одновременно обработаны логическими блоками аппаратного обеспечения 131-138, может быть более 3. Аналогичным образом, один или более аппаратных логических блоков 131-138 могут быть выполнены с возможностью приема и одновременной обработки меньшего количества наборов исходных графических данных, если такие ресурсы недоступны или если ожидается, что конкретный аппаратный логический блок не будет в значительной степени использован.[0079] An example of K-dimensional graph generation described in relation to the example shown in FIG. 1 shows each hardware logical block 131-138 that can be activated and configured by control device 140. In the present description, each hardware logical block 131-138 is essentially described as being activated by the control device 140, configured by the control device 140 using, for example, graph-describing data stored in the control device 140, obtaining source graphs, executing one or more specific the operations of processing the received source graphs or other data and then updating the source graphs, graph description data, or both embodiments of the present invention have no such limitations. However, the present description is not limited to such embodiments. Instead, in some embodiments, each hardware logical block 131-138 may be configured to execute multiple instances of its corresponding functionality. For example, graph node block 132 may be configured to accept up to 3 separate sets of source graphics data and execute their operations on it simultaneously, loop hardware logic block 135 may be configured to accept up to 3 separate sets of source graphics data and execute them simultaneously on operations, and the PRU can be configured to accept up to 2 separate sets of raw graphics data and perform operations on it simultaneously. The number of distinct sets or raw graphics data, each corresponding to a different K-dimensional graph, that can be received and processed by a particular hardware logic unit 131-138 is limited only by the available hardware resources for the system 100. For example, assuming that sufficient levels are available for use logic units of DRAM and FPGA, the number of separate sets of raw graphics data that can be received and simultaneously processed by hardware logic blocks 131-138 can be more than 3. Likewise, one or more hardware logic blocks 131-138 can be configured to accepting and processing fewer sets of graphics input data simultaneously if such resources are not available or if a particular hardware logic unit is not expected to be significantly used.

[0080] В других вариантах реализации не требуется только один экземпляр каждого аппаратного логического блока 131-138, каждый из которых выполнен с возможностью одновременной обработки отдельных наборов исходных графических данных, каждый из которых соответствует разным K-мерным графам. Вместо этого в некоторых вариантах реализации множество экземпляров каждого аппаратно-ускоренного блока 130 генерирования графов может быть выполнено с возможностью включения множества экземпляров одного или более аппаратных логических блоков 131-138. В таких случаях устройство 140 управления может быть выполнено с возможностью отслеживания состояния и доступности каждого аппаратного логического блока 131-138, а затем активации и конфигурирования каждого аппаратного логического блока таким образом, чтобы уравновешивать операции обработки при нагрузке на каждый соответствующий аппаратный логический блок. Например, в некоторых вариантах реализации аппаратно-ускоренный блок 130 генерирования графов может быть выполнен с возможностью наличия 3 экземпляров блока 132 узла графа, каждый из которых выполнен с возможностью приема до 3 отдельных наборов исходных графических данных и одновременного выполнения их операций с ними, 3 экземпляра краевого блока 133 графа, каждый из которых выполнен с возможностью приема до 3 отдельных наборов исходных графических данных и одновременного выполнения их операций с ними, 2 блока 134 обратного распространения сигнала, каждый из которых выполнен с возможностью приема до 2 отдельных наборов исходных графических данных и одновременного выполнения своих операций на них, и 3 циклических блока 135, каждый из которых выполнен с возможностью приема до 2 отдельных наборов исходных графических данных и одновременного выполнения своих операций на них. Активация/деактивация каждого аппаратного логического блока, конфигурация каждого аппаратного логического блока, входные данные для каждого аппаратного логического блока, выходные данные из каждого аппаратного логического блока и обновление данных описания графа каждым аппаратным логическим блоком управляются и направляются устройством 140 управления.[0080] Other implementations do not require only one instance of each hardware logic block 131-138, each configured to simultaneously process separate sets of raw graphics data, each corresponding to a different K-dimensional graph. Instead, in some embodiments, multiple instances of each hardware-accelerated graph generation block 130 may be configured to include multiple instances of one or more hardware logic blocks 131-138. In such cases, control device 140 may be configured to monitor the state and availability of each hardware logic block 131-138, and then activate and configure each hardware logic block to balance processing operations with load on each corresponding hardware logic block. For example, in some implementations, the hardware-accelerated graph generation block 130 may be configured to have 3 instances of the graph node block 132, each configured to receive up to 3 separate sets of raw graph data and perform their operations on them simultaneously, 3 instances graph edge block 133, each of which is configured to receive up to 3 separate sets of source graphics data and simultaneously perform their operations on them, 2 signal backpropagation blocks 134, each of which is configured to receive up to 2 separate sets of source graphics data and simultaneously performing its operations on them, and 3 cyclic blocks 135, each of which is configured to receive up to 2 separate sets of initial graphic data and simultaneously perform its operations on them. The activation/deactivation of each hardware logic block, the configuration of each hardware logic block, the input data for each hardware logic block, the output data from each hardware logic block, and the update of graph description data by each hardware logic block are controlled and directed by the control device 140.

[0081] Блок ввода[0081] Input block

[0082] Блок 131 ввода может принимать входные данные, которые включают сгенерированный набор считываний 112 и выбранный эталонный геном 122, которые в настоящем документе могут называться исходными графическими данными. Выбранный эталонный геном 122 может включать в себя участок эталонного генома. Исходные графические данные могут включать в себя, например, данные, обрабатываемые одним или более аппаратными логическими блоками 131-138 во время генерирования экземпляра K-мерного графа. Хотя исходные графические данные включают в себя, например, сгенерированные считывания 112 и выбранный эталонный геном 122, исходные графические данные также могут включать в себя, например, K-мерные узлы, сгенерированные блоком 132 узла графа, края, сгенерированные краевым блоком 133 графа, и т.п. Блок 131 ввода может форматировать сгенерированные считывания 112 и полученный эталонный геном 122 для хранения в DRAM 160. Форматирование сгенерированных считываний может включать в себя, например, кодирование считываний для хранения в DRAM 160. В некоторых вариантах реализации кодирование считывания может включать кодирование каждого распознавания оснований, соответствующего нуклеотиду считывания, в 4-битные значения. Например, А может быть закодировано как 0000, Ц может быть закодировано как 0001, Г может быть закодирован как 0010, Т может быть закодировано как 0011, а N может быть закодировано как 0100, где N представляет собой распознавание неизвестного основания. В некоторых вариантах реализации кодированные данные также могут включать в себя данные, которые представляют собой показатель MAPQ, число считываний, длину последовательности, метки SAM, распознавания оснований или нуклеотиды считывания, один или более индикаторов качества считывания, отличных от показателя MAPQ, или любую их комбинацию. Кодированные считанные данные могут находиться в диапазоне от 16-битного значения до 64-битного значения или более, которое описывает считанное значение. Блок 131 ввода может записывать генерируемые считывания на DRAM 160.[0082] Input block 131 may receive input data that includes a generated set of reads 112 and a selected reference genome 122, which may be referred to herein as raw graphics data. The selected reference genome 122 may include a region of the reference genome. The raw graphics data may include, for example, data processed by one or more hardware logic units 131-138 during generation of a K-dimensional graph instance. While the source graph data includes, for example, generated reads 112 and the selected reference genome 122, the source graph data may also include, for example, K-dimensional nodes generated by graph node block 132, edges generated by graph edge block 133, and etc. Input unit 131 may format the generated reads 112 and the resulting reference genome 122 for storage in DRAM 160. Formatting the generated reads may include, for example, encoding the reads for storage in DRAM 160. In some implementations, encoding the read may include encoding each base recognition, the corresponding nucleotide read, into 4-bit values. For example, A could be coded as 0000, C could be coded as 0001, G could be coded as 0010, T could be coded as 0011, and N could be coded as 0100, where N represents recognition of an unknown base. In some embodiments, the encoded data may also include data that is a MAPQ score, read count, sequence length, SAM tags, base recognition or read nucleotides, one or more read quality indicators other than the MAPQ score, or any combination thereof . The encoded read data can range from a 16-bit value to a 64-bit value or more that describes the read value. The input unit 131 may write the generated reads to the DRAM 160 .

[0083] Устройство 140 управления может обнаруживать прием исходных входных данных, активировать блок 131 ввода и инициализировать данные описания графа, которые соответствуют экземпляру K-мерного графа, который должен быть сгенерирован на основе исходных входных данных. Активация блока 131 ввода может включать в себя устройство 140 управления, отправляющее одно или более управляющих сообщений в блок 131 ввода, которые предписывают блоку 131 ввода выполнять операции, определенные аппаратной логической схемой блока 131 ввода в отношении исходных данных, предоставленных в качестве входных данных в блок 131 ввода. В некоторых вариантах осуществления активация аппаратного логического блока, такого как блок 131 ввода, может также включать в себя устройство управления, обеспечивающее для логического блока аппаратного обеспечения данные описания графа, которые можно использовать для конфигурирования аппаратного логического блока для выполнения его операций. Конфигурирование логического блока аппаратного обеспечения может включать в себя, например, предоставление указателей на места хранения буферной емкости, в которых хранятся K-меры, K-мерные узлы, предоставляющие информацию, описывающую длину K-мера т.п., на которых должен работать аппаратный логический блок.[0083] The control device 140 may detect receipt of the original input data, activate the input block 131, and initialize the graph description data that corresponds to the K-dimensional graph instance to be generated based on the original input data. Activation of input block 131 may include control device 140 sending one or more control messages to input block 131 that cause input block 131 to perform operations determined by the hardware logic of input block 131 with respect to source data provided as input to the block. 131 inputs. In some embodiments, activation of a hardware logic block, such as input block 131, may also include a control device that provides the hardware logic block with graph description data that can be used to configure the hardware logic block to perform its operations. Configuring the hardware logic block may include, for example, providing pointers to buffer storage locations where K-mers are stored, K-mer nodes providing information describing the length of the K-mer, etc., on which the hardware is to operate. logical block.

[0084] Инициализация данных описания графа может включать в себя, например, генерирование устройством 140 управления идентификатора K-мерного графа для исходных входных данных, генерирование структуры данных информации о состоянии графа или их комбинацию. Идентификатор K-мерного графа включает в себя строку данных из одного или более символов, одного или более чисел или их комбинацию, которая может быть использована для идентификации экземпляра K-мерного графа в ходе процесса генерирования K-мерного графа с момента приема исходных графических данных блоком 131 ввода до по меньшей мере момента использования блока 138 уничтожения для удаления данных, относящихся к идентификатору K-мерного графа, из буферной емкости 150, DRAM 160 или обоих вариантов после полного создания K-мерного графа для конкретного набора исходных графических данных. В некоторых вариантах реализации идентификатор K-мерного графа может включать в себя число, такое как 6-битное число, имеющее значение в диапазоне 0-63. В некоторых вариантах реализации идентификатор K-мерного графа можно даже использовать для ссылки на K-мерный граф после использования блока уничтожения для удаления вышеупомянутых данных из буферной емкости 150, DRAM 160 или обоих. Структура данных с информацией о состоянии графа представляет собой структуру данных, имеющую одно или более полей, которые хранят данные, описывающие текущее состояние экземпляра K-мерного графа, который должен быть сгенерирован для конкретного набора исходных входных данных. Информация о состоянии может включать в себя, например, данные, указывающие на последнюю логику аппаратного обеспечения, которая работает на исходных графах для конкретного случая K-мерного графа, данные, указывающие, прекратил ли последний блок логики аппаратного обеспечения операцию, данные, указывающие длину K-мера, данные, указывающие список узлов K-мера, данные, указывающие список указателей, которые могут быть использованы для идентификации узлов K-мера в буферной емкости, длину списка узлов K-мера, данные, включающие список неуникальных K-меров, данные, указывающие местоположения исходных входных данных в буферной емкости или DRAM, данные, указывающие базовый адрес в DRAM для узлов экземпляра K-мерного графа, или любое их подмножество или комбинацию.[0084] Initializing the graph description data may include, for example, the control device 140 generating a K-dimensional graph identifier for the original input data, generating a graph state information data structure, or a combination thereof. A K-dimensional graph identifier includes a data string of one or more characters, one or more numbers, or a combination thereof, which can be used to identify an instance of the K-dimensional graph during the K-dimensional graph generation process from the time the initial graph data is received by the block 131 input until at least the time of using the destroy block 138 to remove data related to the K-dimensional graph identifier from the buffer capacity 150, DRAM 160, or both after the K-dimensional graph has been completely created for a particular set of source graphics data. In some implementations, the K-dimensional graph identifier may include a number, such as a 6-bit number having a value in the range 0-63. In some implementations, the K-dimensional graph identifier may even be used to reference the K-dimensional graph after using a kill block to remove the aforementioned data from buffer capacity 150, DRAM 160, or both. A graph state data structure is a data structure having one or more fields that store data describing the current state of a K-dimensional graph instance to be generated for a particular set of original input data. The status information may include, for example, data indicating the last hardware logic that operates on the source graphs for a particular case of a K-dimensional graph, data indicating whether the last block of hardware logic has terminated operation, data indicating the length of K -measure, data indicating a list of K-mer nodes, data indicating a list of pointers that can be used to identify K-mer nodes in a buffer capacity, length of a list of K-mer nodes, data including a list of non-unique K-mers, data, indicating the locations of the original input data in the buffer capacity or DRAM, data indicating the base address in DRAM for nodes of the K-dimensional graph instance, or any subset or combination thereof.

[0085] Блок 131 ввода может форматировать входные считывания 112 и эталонный геном 122 и записывать входные считывания 112 и эталонный геном в DRAM 160. Устройство 140 управления может определять, когда блок 131 ввода завершил форматирование и запись входных считываний 112 и эталонного генома 122 в DRAM 160. После обнаружения устройством управления 140 завершения форматирования и записи входных считываний 112 и эталонного генома 122 в DRAM устройство управления 140 может обновить информацию о состоянии графа для указания того, что блок ввода 131 завершил операции по первым исходным графическим данным для первого экземпляра K-мерного графа.[0085] Input block 131 may format input reads 112 and reference genome 122 and write input reads 112 and reference genome to DRAM 160. Control device 140 may determine when input block 131 has completed formatting and writing input reads 112 and reference genome 122 to DRAM. 160. Upon detection by control unit 140 that formatting has completed and writing of input reads 112 and reference genome 122 to DRAM, control device 140 may update graph state information to indicate that input unit 131 has completed operations on the first raw graph data for the first instance of the K-dimensional graph.

[0086] После того как первые исходные графические данные были введены, отформатированы и сохранены в DRAM 160, устройство управления 140 может определить следующую аппаратную логическую единицу, которая должна быть активирована и сконфигурирована далее. Например, устройство 140 управления может активировать и конфигурировать блок 132 узла графа для генерирования K-мерных узлов на основании части эталонного генома 122 и набора считываний, сформатированных и сохраненных в DRAM 160.[0086] After the first raw graphics data has been entered, formatted, and stored in DRAM 160, control device 140 may determine the next hardware logic unit to be enabled and configured next. For example, control device 140 may activate and configure graph node block 132 to generate K-mer nodes based on a portion of the reference genome 122 and a set of reads formatted and stored in DRAM 160 .

[0087] Блок узла графа[0087] Graph node block

[0088] Устройство 140 управления может активировать и конфигурировать блок 132 узла графа для продолжения генерирования первого экземпляра K-мерного графа путем обработки форматированных считываний 112 и эталонного генома 122, хранящихся в DRAM. Это может включать в себя, например, отправку сигнала управления на блок 132 узла графа, предоставление данных описания графа на блок 132 узла графа или их комбинацию. Данные описания графов могут использоваться для конфигурирования блока 132 узла графа для работы. Например, предоставление данных описания графа блоку 132 узла графа и от устройства 140 управления может привести к конфигурированию блока 132 узла графа для идентификации K-меров определенного размера, который определен данными описания графа. Аналогичным образом для конфигурирования аппаратного логического блока, такого как блок 132 узла графа, можно использовать другие поля данных описания графа, описанных в настоящем документе.[0088] Controller 140 may activate and configure graph node block 132 to continue generating the first instance of the K-dimensional graph by processing formatted reads 112 and reference genome 122 stored in DRAM. This may include, for example, sending a control signal to graph node block 132, providing graph description data to graph node block 132, or a combination thereof. The graph description data may be used to configure the graph node block 132 for operation. For example, providing graph description data to and from graph node block 132 from control device 140 may result in configuring graph node block 132 to identify K-mers of a certain size that is determined by the graph description data. Likewise, other graph description data fields described herein can be used to configure a hardware logic block, such as graph node block 132.

[0089] Кроме того, по существу параллельно устройство 140 управления может обнаруживать, что блок 131 ввода принял вторые исходные графические данные в качестве входных данных. Затем устройство 140 управления может активировать блок 131 ввода, дать блоку 131 указание форматировать считывания и эталонный геном вторых исходных графических данных и генерировать вторые графические данные описания для второго экземпляра K-мерного графа, который должен быть сгенерирован на основе вторых исходных графических данных. Таким образом, управляющее устройство 140 может обеспечивать высокие уровни пропускной способности путем одновременного управления рабочими характеристиками различных аппаратных логических блоков 131, 132, которые выполняют процессы генерирования K-мерного графа для различных наборов исходных графических данных на разных стадиях обработки. Устройство управления 140 выполнено с возможностью управления этой параллельной функцией каждого из аппаратных логических блоков 131, 132, 133, 134, 135, 136, 137, 138, например, в любой конкретный момент времени может быть восемь аппаратных логических блоков, которые работают с восемью различными наборами исходных графических данных, причем аппаратно-ускоренный блок 130 генерирования графов работает с возможностью одновременного генерирования восьми разных K-мерных графов. Устройство управления 140, использующее данные графического описания, управляет этим процессом в течение всего времени путем активации и конфигурирования каждого соответствующего аппаратного логического блока для достижения абстрактно высокоуровневых конвейерных функциональных возможностей неконвейерных аппаратных логических блоков 131, 132, 133, 134, 135, 136, 137, 138, которые не имеют прямого и физического соединения ввода/вывода между каждым соответствующим аппаратным логическим блоком. Хотя проиллюстрирован пример восьми одновременных генерирований K-мерных графов, выполняемых одновременно, настоящее описание может быть выполнено с возможностью достижения гораздо большего числа одновременных генерирований K-мерных графов, например, путем реализации множества аппаратно-ускоренных графов 130 одновременно, множества экземпляров множества аппаратных логических блоков на одном или более аппаратно-ускоренных блоках 130 генерирования графа или их комбинации.[0089] Moreover, in substantially parallel manner, the control device 140 may detect that the input unit 131 has received the second original graphics data as input data. The control device 140 may then activate the input block 131, instruct the block 131 to format the reads and the reference genome of the second raw graphics data, and generate a second graphical description data for a second instance of the K-dimensional graph to be generated based on the second raw graphics data. Thus, the control device 140 can provide high levels of throughput by simultaneously controlling the performance of various hardware logic units 131, 132 that perform K-dimensional graph generation processes for different sets of raw graphics data at different stages of processing. The control device 140 is configured to control this parallel function of each of the hardware logic blocks 131, 132, 133, 134, 135, 136, 137, 138, for example, at any given time there may be eight hardware logic blocks that operate with eight different sets of source graphics data, and the hardware-accelerated graph generation unit 130 operates with the ability to simultaneously generate eight different K-dimensional graphs. The control device 140, using the graphical description data, controls this process at all times by activating and configuring each respective hardware logic block to achieve the abstract high-level pipelined functionality of the non-pipeline hardware logic blocks 131, 132, 133, 134, 135, 136, 137. 138, which do not have a direct and physical I/O connection between each corresponding hardware logical block. Although an example of eight simultaneous K-dimensional graph generation running simultaneously is illustrated, the present disclosure may be capable of achieving many more simultaneous K-dimensional graph generation, for example, by implementing multiple hardware-accelerated graphs 130 simultaneously, multiple instances of multiple hardware logic blocks on one or more hardware-accelerated graph generation units 130 or combinations thereof.

[0090] Блок 132 узла графа может анализировать каждое считывание набора считываний 112 для идентификации каждого из K-меров считывания. Это может включать в себя, например, скольжение окна доступа к K-меру вдоль каждого положения каждого считывания для идентификации каждого конкретного K-мера соответствующего считывания. Блок 132 узла графа может хранить данные, представляющие узел K-мерного графа для каждого идентифицированного K-мера каждого считывания, в буферной емкости 150. Аналогичным образом, блок 132 узла графа также может генерировать и сохранять в DRAM список указателей узла в структуре данных указателей узла, причем каждый указатель узла указывает на местоположение буферной емкости в K-мерном узле. Блок 132 узла графа также может генерировать и хранить информацию, указывающую местоположение и длину списка узлов для каждого K-мерного графа в данных описания графа, хранимых устройством управления. Эти указатели могут использоваться в качестве информации о состоянии графа устройством 140 управления для конфигурирования другого аппаратного логического блока во время последующей части процесса генерирования K-мерного графа. Буферная емкость 150 может использовать одну или более политик когерентности буферной емкости, таких как политика когерентности буферной емкости LRU, выполненная с возможностью воспользоваться самыми старыми объектами буферной емкости 150, причем самые старые объекты определяют на основании времени записи объекта в буферную емкость 150.[0090] The graph node block 132 may analyze each read of the read set 112 to identify each of the K-mers of the read. This may include, for example, sliding the K-mer access window along each position of each read to identify each specific K-mer of the corresponding read. Graph node block 132 may store data representing a K-dimensional graph node for each identified K-mer of each read in buffer capacity 150. Likewise, graph node block 132 may also generate and store in DRAM a list of node pointers in a node pointer data structure. , with each node pointer pointing to the location of a buffer capacity in a K-dimensional node. The graph node unit 132 may also generate and store information indicating the location and length of the node list for each K-dimensional graph in the graph description data stored by the control device. These pointers may be used as graph state information by control device 140 to configure another hardware logic block during a subsequent portion of the K-dimensional graph generation process. Buffer capacity 150 may employ one or more buffer capacity coherence policies, such as an LRU buffer capacity coherence policy configured to take advantage of the oldest objects of buffer capacity 150, with the oldest objects being determined based on the time the object was written to buffer capacity 150.

[0091] Пример данных, сгенерированных блоком 132 узла графа и хранящихся в буферной емкости 150, DRAM 160 или в обоих, показан со ссылкой на ФИГ. 4. На ФИГ. 4 представлена часть эталонного генома 410, считывание 420 и граф 400 де Брёйна. Граф де Брёйна 400, который более подробно описан ниже, включает в себя узел для каждого K-мера в участке генома 410 и считывание 420 и край между каждой парой K-мерных узлов, соединяющий пару узлов, имеющих k-1 перекрывающихся нуклеотидов.[0091] An example of data generated by graph node block 132 and stored in buffer capacity 150, DRAM 160, or both is shown with reference to FIG. 4. In FIG. Figure 4 shows part of the reference genome 410, read 420 and de Bruijn graph 400. The de Bruijn graph 400, which is described in more detail below, includes a node for each K-mer in a region of the genome 410 and a read 420 and an edge between each pair of K-mer nodes connecting a pair of nodes having k-1 overlapping nucleotides.

[0092] Как показано в примере на ФИГ. 4, блок 132 узла графа может генерировать на основе приема части эталонного генома 410 и считывания 420 данные, представляющие узлы 431, 432, 433, 434, 435, 436, 437, 438 первого пути 430 графа де Брёйна 400 и узлы 441, 442, 443, 444. Сначала блок 132 узла графа может выравнивать перекрывающиеся участки эталонного генома 410а, 410b и перекрывающиеся участки считывания 420а, 420b для идентификации перекрывающихся участков, как показано на ФИГ. 4. Блок 132 узла графа может идентифицировать каждый из K-меров участка генома 410 и считывания 420. Этого можно достичь с помощью окна доступа длиной к, которое равно 4 в данном примере, в первом положении участка эталонного генома 410, захватывающего K-мер, идентифицированный окном доступа, генерирования данных, представляющих узел графа, который включает в себя захваченный K-мер, сохранения данных, представляющих узел, в буферной емкости 150, продвижение окна доступа на один нуклеотид, а затем итерационное повторение этого процесса. В данном примере блок графического узла 132 может идентифицировать K-меры АТЦГ, ТЦГЦ, ЦГССС, ГЦЦТ, ЦЦТА, ЦТАГ, ТАГА и АГААА для участка эталонного генома 410 и генерировать соответствующий узел 431, 432, 433, 434, 435, 436, 437, 438, причем один из этих узлов соответствует соответствующему K-меру. Каждый узел создан таким образом, что он имеет длину k, которая в данном примере составляет 4, и имеет число перекрывающихся k-1 K-меров со следующим соседним узлом. Блок 132 узла графа может сохранять сгенерированные узлы в буферной емкости 150, DRAM 160 или в обоих. В некоторых вариантах осуществления буферная емкость может включать в себя буферную емкость хеш-таблицы. В таких вариантах реализации узлы могут храниться в виде ключей хеш-таблицы. Блок 132 узла графа может хранить данные, описывающие местоположения K-мерных узлов в данных описания графа, хранимых устройством 140 управления.[0092] As shown in the example of FIG. 4, the graph node block 132 may generate, based on receiving part of the reference genome 410 and reading 420, data representing nodes 431, 432, 433, 434, 435, 436, 437, 438 of the first path 430 of the de Bruijn graph 400 and nodes 441, 442, 443, 444. First, the graph node block 132 may align overlapping regions of the reference genome 410a, 410b and overlapping read regions 420a, 420b to identify overlapping regions, as shown in FIG. 4. The graph node block 132 can identify each of the K-mers of the genome region 410 and reads 420. This can be achieved using an access window of length k, which is 4 in this example, at the first position of the reference genome region 410 spanning the K-mers. identified by the access window, generating data representing a graph node that includes the captured K-mer, storing data representing the node in buffer capacity 150, advancing the access window one nucleotide, and then repeating this process iteratively. In this example, the graphical node block 132 can identify the K-mers ATCG, TCGC, CGSSSS, GCCT, CCTA, CTAG, TAGA and AGAAA for the reference genome region 410 and generate the corresponding node 431, 432, 433, 434, 435, 436, 437, 438, with one of these nodes corresponding to the corresponding K-measure. Each node is created such that it has a length k, which in this example is 4, and has a number of k-1 overlapping K-mers with the next neighboring node. The graph node block 132 may store the generated nodes in a buffer capacity 150, a DRAM 160, or both. In some embodiments, the buffer capacity may include a hash table buffer capacity. In such implementations, nodes may be stored as hash table keys. The graph node block 132 may store data describing the locations of K-dimensional nodes in the graph description data stored by the control device 140.

[0093] Блок 132 узла графа может выполнять те же операции для считывания 420. Что касается считывания 420, блок 132 узла графа может идентифицировать K-меры АТЦГ, ТЦГС, ЦГСГ, ГЦГТ, ЦГТА, ГТАГ, ТАГА и АГАА. Аналогичным образом этого можно достичь с помощью окна доступа длиной к, которая в данном примере равна 4, в первом положении части считывания 420, захватывающего K-мер, идентифицированный окном доступа, а затем продвигающего окно доступа и повторяющего процесс. Блок 132 узла графа может начинаться с идентификации каждого K-мера для участка генома 410. В некоторых вариантах реализации блок 132 узла графа может генерировать соответствующий узел для каждого из K-меров. В других вариантах реализации блок 132 узла графа может генерировать только 431, 432, 433, 434, 435, 436, 437, 438, соответствующие идентифицированным K-мерам, которые отличаются от K-мерных узлов участка эталонного генома 410. В каждом сценарии каждый узел создан таким образом, что он имеет длину k, которая в данном примере составляет 4, и имеет число перекрывающихся k-1 K-меров со следующим соседним узлом. Это может продолжаться до тех пор, пока узел для каждого K-мера участка эталонного генома 410 не будет создан и сохранен в буферной емкости 150 или DRAM 160.[0093] The graph node block 132 may perform the same operations for the read 420. With respect to the read 420, the graph node block 132 may identify the K-mers ATCG, TCGS, CGSG, GCTG, CGTA, GTAG, TAGA, and AGAA. Similarly, this can be achieved by using an access window of length k, which in this example is 4, at the first position of the read portion 420, capturing the K-mer identified by the access window, and then advancing the access window and repeating the process. The graph node block 132 may begin by identifying each K-mer for a region of the genome 410. In some implementations, the graph node block 132 may generate a corresponding node for each of the K-mers. In other embodiments, graph node block 132 may generate only 431, 432, 433, 434, 435, 436, 437, 438 corresponding to identified K-mers that are different from the K-mer nodes of the reference genome region 410. In each scenario, each node is created such that it has length k, which in this example is 4, and has a number of overlapping k-1 K-mers with the next neighbor node. This may continue until a node for each K-mer region of the reference genome 410 is created and stored in buffer capacity 150 or DRAM 160.

[0094] В некоторых вариантах реализации блок 132 узла графа также может быть выполнен с возможностью идентификации неуникальных K-меров. В таких вариантах реализации блок 132 узла графа может для каждого конкретного считывания первого набора считываний определять, является ли идентифицированный K-мер уникальным K-мером или неуникальным K-мером. Если блок 132 узла графа определяет, что конкретный K-мер представляет собой уникальный K-мер, то блок 132 узла графа может продвигать окно доступа на один нуклеотид для оценки следующего K-мера. Альтернативно, если блок узла графа 132 определяет, что конкретный K-мер представляет собой неуникальный K-мер, то блок узла графа 132 может хранить данные, указывающие на то, что конкретный K-мер представляет собой неуникальный K-мер. Например, блок 132 узла графа может хранить метку данных в данных описания графа, хранимых устройством управления для конкретного экземпляра K-мерного графа, указывающего на то, что K-мер представляет собой неуникальный K-мер. Однако такие данные могут храниться в любом другом компоненте аппаратно-ускоренного блока 130 генерирования графов, храниться в любом другом блоке памяти аппаратно-ускоренного блока 130 генерирования графов или их комбинации. Затем последующие аппаратные логические блоки могут выполнять операции, которые затрагивают неуникальный K-мер, чтобы уменьшить или устранить циклы в экземпляре K-мерного графа.[0094] In some implementations, graph node block 132 may also be configured to identify non-unique K-mers. In such embodiments, graph node block 132 may, for each particular read of the first set of reads, determine whether the identified K-mer is a unique K-mer or a non-unique K-mer. If graph node block 132 determines that a particular K-mer is a unique K-mer, then graph node block 132 may advance the access window one nucleotide to evaluate the next K-mer. Alternatively, if the graph node block 132 determines that a particular K-mer is a non-unique K-mer, then the graph node block 132 may store data indicating that the particular K-mer is a non-unique K-mer. For example, graph node block 132 may store a data label in graph description data stored by a management device for a particular K-dimensional graph instance indicating that the K-mer is a non-unique K-mer. However, such data may be stored in any other component of the hardware-accelerated graph generation unit 130, stored in any other memory unit of the hardware-accelerated graph generation unit 130, or a combination thereof. Subsequent hardware logic units can then perform operations that affect the non-unique K-mer to reduce or eliminate cycles in the K-dimensional graph instance.

[0095] На этом этапе процесса блок 132 узла графа сохраняет данные, представляющие узел K-мерного графа для каждого K-мера в буферной емкости 150, DRAM 160 или в обоих. Таким образом, аппаратно-ускоренный блок 130 генерирования графов еще не сгенерировал края 431а, 432а 433а, 434а, 435а, 436а, 437а, 432b, 441а, 442а, 443а, 444а, массы краев графа или т.п. Эти признаки данного экземпляра K-мерного графа могут быть сгенерированы с помощью одного или более других аппаратных логических блоков аппаратно-ускоренного блока 130 генерирования графов.[0095] At this point in the process, graph node block 132 stores data representing a K-dimensional graph node for each K-mer in buffer capacity 150, DRAM 160, or both. Thus, the hardware-accelerated graph generation unit 130 has not yet generated the edges 431a, 432a, 433a, 434a, 435a, 436a, 437a, 432b, 441a, 442a, 443a, 444a, graph edge masses, or the like. These features of a given K-dimensional graph instance may be generated using one or more other hardware logic blocks of the hardware-accelerated graph generation unit 130.

[0096] Устройство 140 управления может отслеживать работу блока 132 узла графа. После того как блок 132 узла графа генерирует данные, представляющие узел K-мера для каждого K-мера каждого считывания первых исходных графических данных для этого первого экземпляра K-мерного графа, устройство управления может обновлять данные описания графа для указания того, что аппаратно-ускоренный блок 130 генерирования графов завершил операции блока 132 графа на первых исходных графических данных. Кроме того, в устройстве 140 управления также могут храниться данные описания графов, которые включают в себя, например, метку, идентифицирующую каждый из неуникальных K-меров, местоположения хранения для узлов K-мерных графов и данные, указывающие на завершение операций блоком 132 узла графа.[0096] The control device 140 may monitor the operation of the graph node block 132. After graph node block 132 generates data representing a K-mer node for each K-mer of each read of the first raw graph data for that first K-dimensional graph instance, the control device may update the graph description data to indicate that the hardware-accelerated The graph generating unit 130 has completed the operations of the graph unit 132 on the first raw graph data. In addition, manager 140 may also store graph description data, which includes, for example, a label identifying each of the non-unique K-mers, storage locations for K-dimensional graph nodes, and data indicating completion of operations by graph node block 132 .

[0097] После генерирования и сохранения в буферной емкости 150 узлов K-мерного графа устройство 140 управления может определять следующий аппаратный логический блок, который должен быть активирован и сконфигурирован далее. Например, устройство 140 управления может активировать и конфигурировать краевой блок 133 графа для генерирования, взвешивания или и того, и другого краев графа между парами узлов.[0097] After generating and storing 150 K-dimensional graph nodes in the buffer capacity, control device 140 can determine the next hardware logic block to be activated and configured next. For example, control device 140 may activate and configure graph edge block 133 to generate, weight, or both graph edges between pairs of nodes.

[0098] Краевой блок графа[0098] Graph edge block

[0099] Краевой блок 133 графа может генерировать края графа между парами K-мерных узлов, сгенерированных блоком 132 узла графа. Устройство 140 управления может активировать краевой блок 133 графа после определения того, что блок 132 узла графа для первого экземпляра K-мерного графа завершен и что краевой блок 133 графа доступен. В некоторых вариантах реализации устройство 140 управления может предоставлять или иным образом обеспечивать доступ к местоположениям краевого блока 133 графа, хранящим узлы K-мерного графа, сгенерированные блоком 132 узла графа, для конкретного экземпляра K-мерного графа. Например, устройство 140 управления может получать доступ к данным описания K-мерного графа, сгенерированным и сохраненным блоком 132 узла графа в процессе генерирования K-мерных узлов для экземпляра K-мерного графа. Доступные данные о K-мерном графе могут указывать или иным образом описывать список K-меров.[0099] The graph edge block 133 may generate graph edges between pairs of K-dimensional nodes generated by the graph node block 132. The control device 140 may activate the graph edge block 133 after determining that the graph node block 132 for the first instance of the K-dimensional graph is completed and that the graph edge block 133 is available. In some embodiments, control device 140 may provide or otherwise provide access to graph edge block 133 locations storing K-dimensional graph nodes generated by graph node block 132 for a particular K-dimensional graph instance. For example, control device 140 may access K-dimensional graph description data generated and stored by graph node block 132 during the process of generating K-dimensional nodes for a K-dimensional graph instance. Available K-mer graph data may specify or otherwise describe a list of K-mers.

[000100] После получения краевым блоком 133 графа местоположения узлов K-мерного графа для первого экземпляра K-мерного графа краевой блок графа может начинать генерировать один или более краев графа между данными, представляющими K-мерные узлы. В некоторых вариантах реализации краевой блок 133 графа может получать доступ к данным, представляющим узел графа, для каждого из K-меров конкретного считывания из буферной емкости хеш-таблицы. Краевой блок 133 графа может генерировать для хранения в буферной емкости хеш-таблицы данные, представляющие край графа между узлами графов для K-меров. Например, данные, представляющие край графа, могут храниться в буферной емкости хеш-таблицы как часть записи узла графа для исходного узла края. В некоторых вариантах реализации краевой блок 133 графа может присваивать массу каждому краю K-мерного графа. Например, краевой блок 133 графа может добавлять +1 или другую массу для каждого случая края графа, соединяющего соответствующую пару K-меров.[000100] After edge block 133 receives a K-dimensional graph node location graph for the first instance of the K-dimensional graph, the graph edge block may begin generating one or more graph edges between the data representing the K-dimensional nodes. In some embodiments, graph edge block 133 may access data representing a graph node for each of the K-mers of a particular read from the hash table buffer capacity. The graph edge block 133 may generate data representing a graph edge between graph nodes for K-mers for storage in a hash table buffer. For example, data representing a graph edge may be stored in a hash table buffer as part of the graph node entry for the source edge node. In some embodiments, graph edge block 133 may assign a mass to each edge of the K-dimensional graph. For example, graph edge block 133 may add +1 or another mass for each instance of a graph edge connecting a corresponding pair of K-mers.

[000101] В качестве примера краевой блок 133 графа может идентифицировать узлы с помощью данных описания графа, полученных от устройства 140 управления, которые являются соседними узлами. Узлы могут быть определены как соседние узлы на основании различных факторов, включая определение того, что узлы совместно используют k-1 перекрывающихся нуклеотидов и что узлы наблюдаются в двух последовательных положениях скользящего окна доступа к K-меру. Например, краевой блок 133 графа может перемещать окно доступа к K-меру вдоль каждого положения каждого считывания исходных графических данных. В некоторых вариантах реализации краевой блок 133 графа может создавать край или увеличивать краевую массу при определении того, что в считывании наблюдаются два последовательных K-мера, перекрывающихся всем, кроме одного основания. Узел 133 графа создает край или увеличивает краевую массу в таком сценарии, поскольку этот сценарий подразумевает край между узлами графа, соответствующими этим двум последовательным K-мерам.[000101] As an example, graph edge block 133 may identify nodes using graph description data received from control device 140 that are neighboring nodes. Nodes can be determined to be neighboring nodes based on various factors, including determining that the nodes share k-1 overlapping nucleotides and that the nodes are observed at two consecutive positions of the sliding K-mer access window. For example, graph edge block 133 may move the K-mer access window along each position of each read of the original graph data. In some implementations, the graph edge block 133 may create an edge or increase the edge mass upon determining that two consecutive K-mers are observed in the read, overlapping all but one base. Graph node 133 creates an edge or increases edge mass in such a scenario, since this scenario involves an edge between graph nodes corresponding to these two consecutive K-mers.

[000102] В некоторых вариантах реализации данные, представляющие узлы графа, могут храниться в виде хеш-ключей хеш-таблицы. В таких вариантах реализации краевой блок 133 графа может генерировать край от первого узла (или хеш-ключа) ко второму узлу (или хеш-ключу) путем доступа к хеш-положению, с которого сопоставлен первый узел (или хеш-ключ), и генерировать указатель для хранения в хеш-положении, которое указывает на второй узел (или хеш-ключ). Последующие края могут быть сгенерированы таким же образом, что создает траекторию 430 или 440 через граф, который может быть пройден с использованием одного или более алгоритмов прохождения графа.[000102] In some implementations, data representing the nodes of the graph may be stored as hash keys of a hash table. In such embodiments, graph edge block 133 may generate an edge from a first node (or hash key) to a second node (or hash key) by accessing the hash position from which the first node (or hash key) is mapped and generating a pointer to store at a hash location that points to the second node (or hash key). Subsequent edges can be generated in the same manner, creating a path 430 or 440 through the graph that can be traversed using one or more graph traversal algorithms.

[000103] Как показано в примере на ФИГ. 4, краевой блок 133 графа может генерировать данные, представляющие один или более краев между парами узлов 431, 432, 433, 434, 435, 436, 437, 438 первого пути 430, парами узлов 441, 442, 443, 444 второго пути 440 или одну или более пар узлов в первом пути 430 и втором пути 440. Пример этих краев показан на ФИГ. 4 в виде краев 431а, 432а, 433а, 434а, 435а, 436а, 437а, 432b, 441а, 442а, 443а, 444а.[000103] As shown in the example of FIG. 4, graph edge block 133 may generate data representing one or more edges between pairs of nodes 431, 432, 433, 434, 435, 436, 437, 438 of the first path 430, pairs of nodes 441, 442, 443, 444 of the second path 440, or one or more pairs of nodes in the first path 430 and the second path 440. An example of these edges is shown in FIG. 4 in the form of edges 431a, 432a, 433a, 434a, 435a, 436a, 437a, 432b, 441a, 442a, 443a, 444a.

[000104] В данном примере последовательность нуклеотидов 420 называется считыванием. Однако в некоторых вариантах реализации низкокачественное удаление оснований может происходить таким образом, чтобы последовательность нуклеотидов 420 представляла собой контиг, или участок считывания. В таких вариантах реализации края графа, связывающие пару узлов, будут создавать путь только для одного или более соединений в пределах определенного контига, а не от K-мерного узла первого контига к K-мерному узлу второго контига. Контиг может включать в себя последовательность нуклеотидов, возникающую после удаления низкокачественного основания.[000104] In this example, the sequence of nucleotides 420 is called a read. However, in some embodiments, low-quality base removal may occur such that nucleotide sequence 420 constitutes a contig, or read region. In such implementations, the graph edges connecting a pair of nodes will create a path for only one or more connections within a particular contig, rather than from a K-mer node of the first contig to a K-mer node of the second contig. A contig may include a nucleotide sequence resulting from the removal of a low-quality base.

[000105] Блок обратного распространения сигнала[000105] Backpropagation block

[000106] Аппаратно-ускоренный блок 130 генерирования графов может включать в себя блок 134 обратного распространения сигнала. Однако в определенных вариантах реализации устройство 140 управления может активировать и конфигурировать только блок 134 обратного распространения сигнала. Например, устройство 140 управления может активировать блок 134 обратного распространения сигнала, когда устройство 140 управления определяет, что K-мерный граф, генерируемый текущим набором исходных графов, будет впоследствии преобразован в граф последовательности. При активации модуль 134 обратного распространения сигнала может принимать данные описания графа от устройства 140 управления. В таком варианте реализации корректировки краевых масс графа могут сделать массы более надежными при наследовании графом последовательности.[000106] The hardware-accelerated graph generation unit 130 may include a signal backpropagator 134 . However, in certain embodiments, control device 140 may activate and configure only backpropagation unit 134. For example, control device 140 may activate backpropagation unit 134 when control device 140 determines that the K-dimensional graph generated by the current set of source graphs will subsequently be converted to a sequence graph. When activated, backpropagation module 134 can receive graph description data from control device 140. In such an implementation, adjustments to the edge masses of the graph can make the masses more reliable when the graph inherits a sequence.

[000107] Краевой блок графа 133 может создавать края между узлами K-меров контигов путем идентификации соответствующих узлов K-меров в буферной емкости 150, формирования края, соединяющего узлы K-меров, а затем увеличения краевой массы +1 для каждого случая. В некоторых вариантах реализации после добавления к графу K-меров узлов контига и взвешивания с использованием краевого блока 134 графа блок 134 обратного распространения сигнала можно использовать для обратного распространения сигнала +1 инкремент краевой массы k-1 через линейную цепь краев графа «слева» начального узла контига в K-мерном графе. В этом контексте «слева» от начального узла контига в K-мерном графе представляет собой направление K-мерного графа, противоположное направленному краю K-мерного графа. Для иллюстрации этой концепции «слева» узла 434 на графе 400 де Брёйна будет являться узлами 433, 432 и 431.[000107] The graph edge block 133 can create edges between K-mer nodes of contigs by identifying corresponding K-mer nodes in buffer capacity 150, forming an edge connecting the K-mer nodes, and then increasing the edge mass +1 for each case. In some implementations, after adding contig and weighting nodes to the K-mer graph using the graph edge block 134, the signal backpropagation block 134 can be used to backpropagate a +1 increment of k-1 edge mass through a linear chain of graph edges "to the left" of the starting node. contig in a K-dimensional graph. In this context, "to the left" of the start node of a contig in a K-dimensional graph represents the direction of the K-dimensional graph opposite the directional edge of the K-dimensional graph. To illustrate this concept, the “left” of node 434 in de Bruijn graph 400 would be nodes 433, 432, and 431.

[000108] Например, в некоторых вариантах реализации модуль 134 обратного распространения сигнала может получать доступ в буферной емкости хеш-таблицы, к данным, представляющим K-мерный граф, включая его K-мерные узлы, соответствующие края графа или т.п., а затем корректировать краевые массы для узлов K-1, которые возникают до начала нового контига. Блок 135 обратного распространения может определять соответствующие K-мерные узлы и края для корректировки на основании данных описания графа, принятых от устройства 160 управления, которое включает в себя указатели для местоположений буферной емкости, хранящих эту информацию. Данные описания графа могут обновляться при любых изменениях, которые происходят во время обратного распространения сигнала.[000108] For example, in some embodiments, backpropagation module 134 may access, in a hash table buffer, data representing a K-dimensional graph, including its K-dimensional nodes, corresponding graph edges, or the like, and then adjust edge masses for K-1 nodes that occur before the start of the new contig. Backpropagation unit 135 may determine appropriate K-dimensional nodes and edges for adjustment based on graph description data received from control device 160, which includes pointers to buffer locations storing this information. The graph description data can be updated with any changes that occur during signal backpropagation.

[000109] В некоторых вариантах реализации может быть полезно выполнять вышеупомянутое обратное распространение сигнала, поскольку контиг на N-основания может только увеличивать серию краевых масс (N-K). Однако если этот K-мерный граф позднее преобразуется в граф последовательности с (N-1) внутренними краями, соответствующими этому контигу, то первые (K-1) краевые массы не наследовали надлежащим образом приращенные краевые массы. Вышеупомянутое обратное распространение решает большинство случаев этой проблемы. Таким образом, обратное распространение можно использовать для решения этой проблемы с целью повышения надежности наследованных краевых масс при преобразовании K-мерного графа в граф последовательности.[000109] In some embodiments, it may be useful to perform the above signal backpropagation since the N-base contig may only increase the series of edge masses (N-K). However, if this K-dimensional graph is later transformed into a sequence graph with (N-1) inner edges corresponding to this contig, then the first (K-1) edge masses do not inherit the incremented edge masses properly. The above backpropagation solves most cases of this problem. Thus, backpropagation can be used to solve this problem to improve the reliability of inherited edge masses when transforming a K-dimensional graph into a sequence graph.

[000110] Циклический блок[000110] Cyclic block

[000111] Аппаратно-ускоренный блок 130 генерирования графов может включать в себя циклический блок 135. В некоторых вариантах реализации циклический блок 135 может быть активирован и настроен устройством 140 управления для обнаружения циклов в случае K-мерного графа. Например, циклический блок 135 может оценивать K-мерные узлы и K-мерные края исходных графических данных экземпляра K-мерного графа, сгенерированного одним или более из блока 131 ввода, блока 132 узла графа, краевого блока 133 графа и блока 134 обратного распространения сигнала. Циклический блок 135 выполнен с возможностью приема данных описания графа от устройства 140 управления. Циклический блок 135 может итерационно помечать узлы шапки для удаления. Верхний узел может включать в себя узел, который не включает в себя каких-либо внутренних краев. Где внутренний край представляет собой край, который направлен от первого узла к самому первому узлу. После того как каждый узел шапки помечен для удаления, циклический блок 135 может определять, станут ли какие-либо узлы, которые направлены к наружному краю, узлами шапки в результате удаления узла. Если определены такие узлы, они помечены для удаления. Наружный край представляет собой край графа, который указывает от первого узла к другому узлу. Циклический блок 135 может продолжать выполнение этого процесса до тех пор, пока не останется узлов шапки.[000111] The hardware-accelerated graph generation unit 130 may include a loop block 135. In some embodiments, the loop unit 135 may be enabled and configured by the control device 140 to detect loops in the case of a K-dimensional graph. For example, loop block 135 may evaluate K-dimensional nodes and K-dimensional edges of the raw graphics data of a K-dimensional graph instance generated by one or more of input block 131, graph node block 132, graph edge block 133, and backpropagation block 134. The cyclic block 135 is configured to receive graph description data from the control device 140. Loop block 135 may iteratively mark header nodes for removal. The top node may include a node that does not include any inner edges. Where the inner edge is the edge that is directed from the first node to the very first node. After each cap node is marked for deletion, loop block 135 may determine whether any nodes that are directed toward the outer edge become cap nodes as a result of the node being deleted. If such nodes are identified, they are marked for deletion. An outer edge is an edge of the graph that points from the first node to another node. The loop block 135 may continue this process until there are no header nodes left.

[000112] После определения того, что узлов шапки не остались, циклический блок 135 может определить, является ли граф пустым, причем пустой граф означает, что все узлы графа помечены для удаления. Если граф без шапки пуст, то цикл отсутствовал. Альтернативно, если граф без шапки не пустой, то граф должен содержать цикл. Циклы устойчивы к удалению такого типа, поскольку ни один узел в цикле не становится узлом шапки путем удаления узлов за пределами цикла.[000112] After determining that there are no header nodes remaining, loop block 135 may determine whether the graph is empty, where an empty graph means that all nodes in the graph are marked for deletion. If the graph without a header is empty, then there is no cycle. Alternatively, if the unheaded graph is not empty, then the graph must contain a cycle. Loops are resistant to this type of deletion because no node in the loop becomes a head node by deleting nodes outside the loop.

[000113] После выполнения любого из этих определений циклический блок 135 может предоставить устройству 140 управления указание того, был ли обнаружен цикл. Затем, на основании указания, предоставленного циклическим блоком 135, устройство 140 управления может определить, какой аппаратный логический блок следует затем активировать и конфигурировать. Например, если был обнаружен цикл и необходимо прервать генерирование экземпляра K-мерного графа, то устройство 140 управления может активировать и конфигурировать блок 138 уничтожения. В таких случаях блок уничтожения может удалять необработанные графические данные из буферной емкости 150 и DRAM 160, соответствующие экземпляру прерванного K-мерного графа. Если в альтернативном варианте осуществления необходимо продолжить генерирование экземпляра K-мерного графа, то устройство 140 управления может активировать и конфигурировать другой аппаратный логический блок для выполнения последующих операций по исходным графическим данным для генерирования экземпляра K-мерного графа. Например, если необходимо продолжить генерирование K-мерного графа, устройство 140 управления может либо активировать, либо конфигурировать блок 136 отсечения, либо блок 137 вывода графа.[000113] After making any of these determinations, loop block 135 may provide control device 140 with an indication of whether a loop has been detected. Then, based on the indication provided by the cyclic block 135, the control device 140 can determine which hardware logic block should then be activated and configured. For example, if a loop has been detected and generation of a K-dimensional graph instance needs to be aborted, then control device 140 may activate and configure kill block 138. In such cases, the destroy unit may remove raw graphics data from buffer capacity 150 and DRAM 160 corresponding to the interrupted K-dimensional graph instance. If, in an alternative embodiment, it is necessary to continue generating the K-dimensional graph instance, then control device 140 may activate and configure another hardware logic block to perform subsequent operations on the original graphics data to generate the K-dimensional graph instance. For example, if it is necessary to continue generating a K-dimensional graph, the control device 140 can either activate or configure the pruning unit 136 or the graph output unit 137.

[000114] Хотя аппаратно-ускоренный блок 130 генерирования графов может использовать циклический блок 135 для обнаружения циклов в случае генерируемого K-мерного графа, циклический блок 135 может быть избирательно активирован и выполнен аналогично блоку 134 обратного распространения сигнала. Это связано с тем, что некоторые виды K-мерных графов могут включать циклы. Однако для определенных типов K-мерных графов может быть полезно не иметь графов с циклами. Соответственно, аппаратно-ускоренный блок 130 генерирования графов может быть выполнен, например, с возможностью приема входных данных от устройства 140 управления, указывающих, следует ли выполнять циклический блок 135 для конкретного экземпляра графа.[000114] Although hardware-accelerated graph generation block 130 may use round-robin block 135 to detect cycles in the case of a K-dimensional graph being generated, round-robin block 135 can be selectively enabled and implemented similarly to backpropagation block 134. This is because some kinds of K-dimensional graphs may include cycles. However, for certain types of K-dimensional graphs, it may be useful to not have graphs with cycles. Accordingly, hardware-accelerated graph generation block 130 may be configured, for example, to receive input from control device 140 indicating whether loop block 135 should be executed for a particular graph instance.

[000115] Блок отсечения[000115] Cut block

[000116] Аппаратно-ускоренный блок 130 генерирования графов может включать в себя блок 135 отсечения. Подобно блоку 134 обратного распространения сигнала и циклическому блоку 135 блок 136 отсечения может быть избирательно активирован и конфигурирован устройством 160 управления. При активации и конфигурировании блок 135 отсечения может оценивать массу каждого края графа в исходных графических данных для экземпляра K-мерного графа, сгенерированного в этот момент аппаратно-ускоренным блоком 130 генерирования графов. В некоторых вариантах реализации, если блок 136 отсечения определяет, что массовое значение края графа не удовлетворяет заданному пороговому значению, блок 136 отсечения может удалять край графа и любой K-мерный узел, который возникает после идентифицированных краев графа. Альтернативно, если блок 136 отсечения определяет, что массовое значение края графа удовлетворяет заданному пороговому значению, то блок 136 отсечения оставит край графа нетронутым.[000116] The hardware-accelerated graph generation unit 130 may include a pruning unit 135. Like backpropagation block 134 and cyclic block 135, cutoff block 136 can be selectively activated and configured by control device 160. When activated and configured, the pruning unit 135 can estimate the mass of each graph edge in the raw graph data for the K-dimensional graph instance generated at that time by the hardware-accelerated graph generation unit 130. In some implementations, if pruning block 136 determines that the mass value of a graph edge does not satisfy a predetermined threshold, pruning block 136 may remove the graph edge and any K-dimensional node that occurs after the identified graph edges. Alternatively, if pruning block 136 determines that the mass value of a graph edge satisfies a given threshold, then pruning block 136 will leave the graph edge untouched.

[000117] В других вариантах реализации блок 136 отсечения может идентифицировать линейные цепи, причем линейные цепочки представляют собой максимальные пути через граф, причем все внутренние узлы между начальным узлом и концевым узлом имеют ровно один внутренний край и один наружный край. В таких вариантах реализации блок 136 отсечения может определять, не удовлетворяет ли каждый внутренний край линейной цепи пороговому значению отсечения. Если происходит такой сценарий, блок 136 отсечения может удалять всю линейную цепь, включая все внутренние края и все внутренние узлы, за исключением начального узла и/или концевого узла цепи, который блок 136 отсечения может сохранять, если они имеют какие-либо невнутренние края.[000117] In other implementations, pruning unit 136 may identify linear chains, wherein linear chains represent maximal paths through the graph such that all internal nodes between a start node and an end node have exactly one inside edge and one outside edge. In such embodiments, pruning unit 136 may determine whether each inner edge of the linear circuit fails to satisfy a pruning threshold. If such a scenario occurs, pruning block 136 may remove the entire linear chain, including all internal edges and all internal nodes, except for the start node and/or end node of the chain, which pruning block 136 may retain if they have any non-internal edges.

[000118] Блок вывода графа[000118] Graph output block

[000119] Аппаратно-ускоренный блок 130 генерирования графов может включать в себя блок 137 вывода графа. Блок 137 вывода графа может использоваться аппаратно-ускоренным блоком 130 генерирования графов для генерирования конечной версии 170 экземпляра K-мерного графа, поскольку экземпляр K-мерного графа описан данными графа и буферной емкости. Например, блок 137 вывода графа может получать данные, представляющие K-мерный граф, из буферной емкости 150 хеш-таблицы с использованием данных описания графа, которые включают в себя, например, указатели местоположения в буферной емкости хеш-таблицы, в которых хранятся данные K-мерного графа. Затем блок 137 вывода графа может передавать данные, полученные из буферной емкости 150 хеш-таблицы, описывающей конечную версию K-мерного графа 170, в блок 180 распознавания вариантов. Блок 180 распознавания вариантов может выполнять анализ распознавания вариантов на конечной версии K-мерного графа 170 для создания набора вариантов 190. Набор вариантов 190 может включать один или более потенциальных вариантов. Вариант представляет собой изменение геномных данных организма. Потенциальный вариант представляет собой определение по блоку распознавания вариантов, который логически выводится блоком распознавания вариантов на основе обработки K-мерного графа 170. В некоторых вариантах реализации потенциальный вариант может иметь пороговый уровень ошибки при определении варианта.[000119] The hardware accelerated graph generation unit 130 may include a graph output unit 137 . The graph inference block 137 may be used by the hardware-accelerated graph generation block 130 to generate the final version 170 of a K-dimensional graph instance since the K-dimensional graph instance is described by graph and buffer capacity data. For example, graph output unit 137 may obtain data representing a K-dimensional graph from hash table buffer 150 using graph description data that includes, for example, location indicators in hash table buffer 150 that store K data. -dimensional graph. The graph output unit 137 may then pass the data obtained from the hash table buffer 150 describing the final version of the K-dimensional graph 170 to the variant recognition unit 180 . The variant recognition unit 180 may perform variant recognition analysis on the final version of the K-dimensional graph 170 to create a set of variants 190. The set of variants 190 may include one or more candidate variants. A variant is a change in the genomic data of an organism. The candidate is determined by the variant recognition block, which is inferred by the variant recognition block based on processing of the K-dimensional graph 170. In some implementations, the candidate may have a threshold level of error in determining the variant.

[000120] Блок 180 распознавания вариантов может идентифицировать потенциальные варианты путем обработки K-мерного графа 180. В некоторых вариантах реализации, например, блок 180 распознавания вариантов может идентифицировать потенциальный вариант, когда распознавание оснований или нуклеотид одного или более считываний в наборе считываний и нуклеотид эталонного генома отличаются в конкретном местоположении эталонного генома. Данные, описывающие набор вариантов 190, можно генерировать или определить любым количеством способов. Например, в некоторых вариантах реализации могут выполняться операции распознавания вариантов, как более подробно описано, например, в публикации США №2016/0180019, публикации США №2016/0306922 и публикации США №2019/-0259468, содержание каждой из которых полностью включено в настоящий документ путем ссылки. Данные, описывающие набор вариантов 190, могут быть предоставлены для вывода несколькими различными способами. Например, данные, описывающие набор вариантов 190, могут отображаться на дисплее секвенатора 110 нуклеиновых кислот, отображаться на дисплее другого компьютера, выводиться в виде аудио посредством одного или более динамиков вычислительного устройства, выводиться посредством принтера или на любой их комбинации.[000120] Variant recognition block 180 may identify potential variants by processing the K-dimensional graph 180. In some embodiments, for example, variant recognition block 180 may identify a potential variant when the base recognition or nucleotide of one or more reads in a read set and the nucleotide of the reference genomes differ at a specific location in the reference genome. Data describing the set of options 190 may be generated or determined in any number of ways. For example, some implementations may perform variant recognition operations as described in more detail in, for example, US Publication No. 2016/0180019, US Publication No. 2016/0306922, and US Publication No. 2019/-0259468, the contents of each of which are incorporated herein in their entirety. document by reference. Data describing the set of options 190 may be provided for output in several different ways. For example, data describing the set of variants 190 may be displayed on the display of the nucleic acid sequencer 110, displayed on the display of another computer, output as audio through one or more speakers of the computing device, output through a printer, or any combination thereof.

[000121] Блок уничтожения[000121] Kill block

[000122] Блок 138 уничтожения можно использовать для выполнения задач по восстановлению памяти по завершении и вывода экземпляра K-мерного графа аппаратно-ускоренным блоком 130 генерирования графов. Например, блок уничтожения может удалять все исходные графические данные, относящиеся к конкретному экземпляру K-мерного графа, который завершен и выводится аппаратно-ускоренным блоком 130 генерирования графов. В альтернативном или дополнительном варианте осуществления блок 138 уничтожения может удалять все данные, относящиеся к конкретному экземпляру графического блока 130, которые хранятся устройством управления, удалять все данные, относящиеся к конкретному экземпляру графического блока 130, которые хранятся в DRAM 160, или т.п. Соответственно, блок 138 уничтожения может избирательно удалять данные, представляющие узлы графов, и данные, представляющие края K-мерного графа, из буферной емкости хеш-таблицы. Такое удаление является избирательным, поскольку необходимо удалить только часть содержимого буферной емкости, устройства управления или DRAM. Более того, когда граф хранится в виде хеш-таблицы, хеш-таблица часто может быть мало заполнена, и для блока 138 уничтожения быстрее происходит избирательное уничтожение только занятых записей хеш-таблицы, чем очистка всей хеш-таблицы, что приводит к повышению производительности.[000122] The destroy block 138 can be used to perform memory recovery tasks upon completion and output of the K-dimensional graph instance by the hardware-accelerated graph generation block 130 . For example, the destroy block may delete all original graphics data associated with a particular K-dimensional graph instance that is completed and output by the hardware-accelerated graph generation block 130. In an alternative or additional embodiment, the destroy unit 138 may delete all data related to a particular instance of the graphics block 130 that is stored by the control device, delete all data related to a specific instance of the graphics block 130 that is stored in the DRAM 160, or the like. Accordingly, the destroy unit 138 may selectively remove data representing graph nodes and data representing edges of the K-dimensional graph from the hash table buffer capacity. This removal is selective because only part of the contents of the buffer, control device, or DRAM needs to be removed. Moreover, when the graph is stored as a hash table, the hash table can often be sparsely populated, and for kill block 138 it is faster to selectively destroy only busy hash table entries than to clear the entire hash table, resulting in improved performance.

[000123] Однако в некоторых вариантах реализации данные, не относящиеся к хеш-таблице, связанные с графом, не обязательно должны быть поочередно удалены. В таких вариантах осуществления блок 138 уничтожения может задавать нулевую длину списка в данных описания графа, или выделенное пространство памяти может быть просто освобождено для повторного использования без удаления содержимого.[000123] However, in some implementations, the non-hash table data associated with the graph need not be removed one at a time. In such embodiments, destroy block 138 may specify a list length of zero in the graph description data, or the allocated memory space may simply be freed for reuse without deleting the contents.

[000124] На ФИГ. 2 представлена структурная схема примера способа 200 аппаратно-ускоренного генерирования K-мерного графа. Как правило, способ 200 может включать в себя получение первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности (210), генерирующую K-мерный граф с использованием полученного первого набора нуклеотидных последовательностей и с использованием множества неконвейерных аппаратных логических блоков программируемого логического устройства, причем каждый аппаратный логический блок содержит отдельную аппаратную логическую схему, выполненную с возможностью выполнения одной или более операций, причем каждый узел K-мерного графа представляет собой K-мер, каждый край графа представляет связь между парой K-меров, а каждая масса каждого края K-мерного графа представляет собой количество вхождений последовательности K-меров, представленной парой K-меров (220), во время генерирования K-мерного графа: периодическое обновление, с помощью устройства управления, данных описания графа для K-мерного графа после выполнения одной или более операций каждым аппаратным логическим блоком, который используют для генерирования по меньшей мере части K-мерного графа, причем данные описания графа представляют собой (i) идентификатор K-мерного графа и (ii) информацию о состоянии K-мерного графа, причем устройство управления создает рабочий процесс операций с использованием неконвейерных аппаратных логических блоков путем запуска выполнения одной или более операций каждого соответствующего аппаратного логического блока во время генерирования K-мерного графа (230), и предоставление K-мерного графа в модуль распознавания вариантов, причем блок распознавания вариантов обрабатывает K-мерный граф для определения одного или более потенциальных вариантов между одним или более из множества считываний и эталонной последовательностью.[000124] In FIG. 2 is a block diagram of an example method 200 for hardware-accelerated K-dimensional graph generation. Typically, method 200 may include obtaining a first set of nucleotide sequences, wherein the first set of nucleotide sequences includes (i) a plurality of reads corresponding to the active region of a reference sequence, and (ii) a portion of the reference sequence (210) generating a K-mer a graph using the resulting first set of nucleotide sequences and using a plurality of non-pipelined hardware logic blocks of a programmable logic device, each hardware logic block comprising a separate hardware logic circuit configured to perform one or more operations, each node of the K-dimensional graph representing K -mer, each edge of the graph represents the relationship between a pair of K-mers, and each mass of each edge of the K-mer graph represents the number of occurrences of the sequence of K-mers represented by a pair of K-mers (220) during K-mer graph generation: periodic updating, by the control device, graph description data for the K-dimensional graph after performing one or more operations by each hardware logic unit that is used to generate at least a portion of the K-dimensional graph, wherein the graph description data is (i) an identifier K -dimensional graph and (ii) K-dimensional graph state information, wherein the control device creates a workflow of operations using the non-pipelined hardware logic blocks by causing execution of one or more operations of each corresponding hardware logic block during generation of the K-dimensional graph (230) and providing the K-dimensional graph to a variant recognition module, wherein the variant recognition module processes the K-dimensional graph to determine one or more potential variants between one or more of the plurality of reads and a reference sequence.

[000125] На ФИГ. 3 представлена структурная схема другого примера способа 300 аппаратно-ускоренного генерирования K-мерного графа. Как правило, процесс 300 может включать в себя получение первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности (310) для каждой конкретной нуклеотидной последовательности из первого набора нуклеотидных последовательностей: генерирование для хранения в буферной емкости хеш-таблицы и первым аппаратным логическим блоком данных, представляющих узел графа для каждого K-мера конкретной нуклеотидной последовательности (320), обнаружение устройством управления того, что первый аппаратный логический блок завершил генерирование узла графа для каждого K-мера конкретной нуклеотидной последовательности (330), конфигурирование устройством управления второго аппаратного логического блока для выполнения генерирования краев графа для сгенерированных узлов графа (340) и для одной или более пар сгенерированных графов узлов: генерирование вторыми аппаратными логическими блоками и для хранения в хеш-таблице графов, данные, представляющие границы графа между одной или более парами сгенерированных узлов графа, сгенерированных первым аппаратным логическим блоком, причем данные, представляющие узел графа для каждого K-мера, хранящиеся в буферной емкости хеш-таблицы, и данные, представляющие края графа, хранящиеся в буферной емкости хеш-таблицы, представляют собой граф K-мера первого набора нуклеотидных последовательностей (350).[000125] In FIG. 3 is a block diagram of another example of a hardware-accelerated K-dimensional graph generation method 300. Typically, process 300 may include obtaining a first set of nucleotide sequences, wherein the first set of nucleotide sequences includes (i) a plurality of reads corresponding to the active region of a reference sequence, and (ii) a portion of the reference sequence (310) for each specific nucleotide sequence from the first set of nucleotide sequences: generating for storage in a buffer capacity a hash table and the first hardware logical block of data representing a graph node for each K-mer of a particular nucleotide sequence (320), detecting by the control device that the first hardware logical block has completed generating the node graph for each K-mer of a particular nucleotide sequence (330), the control device configuring a second hardware logic unit to perform graph edge generation for the generated graph nodes (340) and for one or more pairs of generated node graphs: generation by the second hardware logic units and for storage in a graph hash table, data representing graph boundaries between one or more pairs of generated graph nodes generated by the first hardware logic unit, wherein data representing a graph node for each K-mer stored in a buffer capacity of the hash table, and data representing the edges of the graph, stored in the buffer capacity of the hash table, represent the K-mer graph of the first set of nucleotide sequences (350).

[000126] На ФИГ. 4 представлен пример K-мерного графа 400. В данном примере K-мерный граф представляет собой граф 400, генерируемый на основе по меньшей мере части эталонного генома 410 и считывания 420. В данном примере K-мерный граф 400 представляет собой граф де Брёйна.[000126] In FIG. 4 shows an example of a K-dimensional graph 400. In this example, the K-dimensional graph is a graph 400 generated based on at least a portion of the reference genome 410 and a read 420. In this example, the K-dimensional graph 400 is a de Bruijn graph.

[000127] K-мерный граф 400 генерируется с использованием множества узлов и одного или более краев между парами узлов. Каждый узел представляет K-мер длиной k, причем в данном примере k=4. Каждый край обеспечивает указание на наличие перекрытия k-1 нуклеотидов K-меров, связанных краем. На K-мерном графе 400 путь 430 включает в себя множество узлов и ребер, представляющих каждый K-мер участка эталонной последовательности 410. Также путь 440 включает в себя множество узлов и ребер, представляющих участки считывания 420, которые отличаются от участка эталонного генома 410.[000127] A K-dimensional graph 400 is generated using a plurality of nodes and one or more edges between pairs of nodes. Each node represents a K-mer of length k, with k=4 in this example. Each edge provides an indication of the presence of k-1 nucleotide overlap of the K-mers connected by the edge. In K-mer graph 400, path 430 includes a plurality of nodes and edges representing each K-mer region of the reference sequence 410. Path 440 also includes a plurality of nodes and edges representing read regions 420 that differ from the region of the reference genome 410.

[000128] На ФИГ. 5 представлена блок-схема примера компонентов системы 500, которые могут быть использованы для аппаратно-ускоренного K-мерного графа.[000128] In FIG. 5 is a block diagram of an example of system components 500 that may be used for a hardware-accelerated K-dimensional graph.

[000129] Вычислительное устройство 500 должно представлять собой различные формы цифровых компьютеров, таких как ноутбуки, настольные компьютеры, рабочие станции, карманные персональные компьютеры, серверы, блейд-серверы, мэйнфреймы и другие подходящие компьютеры. Вычислительное устройство 550 должно представлять собой различные формы мобильных устройств, таких как карманные персональные компьютеры, сотовые телефоны, смартфоны и другие аналогичные вычислительные устройства. Кроме того, вычислительное устройство 500 или 550 может включать флэш-накопители с универсальной последовательной шиной (USB). Во флэш-накопителях USB можно хранить операционные системы и другие приложения. Флэш-накопители USB могут включать компоненты ввода/вывода, такие как беспроводной передатчик или USB-разъем, который может быть вставлен в USB-порт другого вычислительного устройства. Представленные здесь компоненты, их соединения и взаимоотношения, а также их функции являются только примерами и не предназначены для ограничения вариантов реализации изобретения, описанных и/или заявленных в настоящем документе.[000129] The computing device 500 should be various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blades, mainframes, and other suitable computers. The computing device 550 should be various forms of mobile devices, such as personal digital assistants, cell phones, smartphones, and other similar computing devices. Additionally, computing device 500 or 550 may include universal serial bus (USB) flash drives. USB flash drives can store operating systems and other applications. USB flash drives may include I/O components, such as a wireless transmitter or a USB connector that can be inserted into a USB port on another computing device. The components, their connections and relationships, and their functions presented herein are examples only and are not intended to limit the embodiments described and/or claimed herein.

[000130] Вычислительное устройство 500 включает процессор 502, память 504, устройство 506 хранения, высокоскоростной интерфейс 508, соединяющийся с памятью 504 и высокоскоростными расширительными портами 510, и низкоскоростной интерфейс 512, соединяющийся с низкоскоростной шиной 514 и устройством 506 хранения. Все компоненты 502, 504, 506, 508, 510 и 512 соединены друг с другом с помощью различных шин, и могут быть установлены на общей материнской плате или при необходимости другими способами. Процессор 502 может обрабатывать команды, предназначенные для выполнения в вычислительном устройстве 500, включая команды, хранящиеся в запоминающем устройстве 504 или на устройстве 506 хранения, для отображения графической информации графического пользовательского интерфейса на внешнем устройстве ввода/вывода, таком как дисплей 516, соединенный с высокоскоростным интерфейсом 508. В других вариантах реализации при необходимости можно использовать множество процессоров и/или множество шин вместе с множеством запоминающих устройств и типов памяти. Кроме того, множество вычислительных устройств 500 могут быть соединены, причем каждое устройство обеспечивает участок необходимых операций, например это может быть банк серверов, группа блейд-серверов или многопроцессорная система.[000130] Computing device 500 includes a processor 502, memory 504, storage device 506, a high-speed interface 508 coupled to memory 504 and high-speed expansion ports 510, and a low-speed interface 512 coupled to low-speed bus 514 and storage device 506. Components 502, 504, 506, 508, 510 and 512 are all connected to each other using various buses, and can be mounted on a common motherboard or in other ways if necessary. Processor 502 may process instructions intended to be executed on computing device 500, including instructions stored in memory device 504 or storage device 506, to display graphical user interface information on an external input/output device, such as display 516 coupled to a high-speed interface 508. In other embodiments, multiple processors and/or multiple buses may be used, along with multiple storage devices and memory types, as needed. Additionally, multiple computing devices 500 may be connected, with each device providing a site of required operations, such as a bank of servers, a bank of blade servers, or a multiprocessor system.

[000131] Информация в запоминающем устройстве 504 хранится в вычислительном устройстве 500. В одном варианте реализации память 504 представляет собой блок или блоки энергозависимой памяти. В другом варианте реализации память 504 представляет собой блок или блоки энергонезависимой памяти. Память 504 может также представлять собой другую форму машиночитаемого носителя, такую как магнитный или оптический диск.[000131] Information in memory 504 is stored in computing device 500. In one embodiment, memory 504 is a block or blocks of volatile memory. In another embodiment, memory 504 is a block or blocks of non-volatile memory. Memory 504 may also be another form of computer-readable media, such as a magnetic or optical disk.

[000132] Устройство 506 хранения выполнено с возможностью обеспечения большой емкости хранения для вычислительного устройства 500. В одном варианте реализации устройство 506 хранения может представлять собой или содержать машиночитаемый носитель, такой как устройство с гибким диском, устройство с жестким диском, устройство с оптическим диском или устройство с лентой, флэш-память или другое аналогичное твердотельное запоминающее устройство или массив устройств, включая устройства в сети хранения данных или в других конфигурациях. Компьютерный программный продукт может быть на практике реализован на носителе информации. Компьютерный программный продукт может также содержать команды, которые при их исполнении осуществляют один или более способов, таких как описанные выше. Носитель информации представляет собой компьютерочитаемый или машиночитаемый носитель, такой как память 504, устройство 506 хранения данных или память на процессоре 502.[000132] Storage device 506 is configured to provide large storage capacity for computing device 500. In one embodiment, storage device 506 may be or comprise computer-readable media, such as a floppy disk device, a hard disk device, an optical disk device, or a tape device, flash memory, or other similar solid-state storage device or array of devices, including devices in a storage area network or other configurations. The computer program product may be practically implemented on a storage medium. The computer program product may also contain instructions that, when executed, perform one or more methods such as those described above. The storage medium is a computer-readable or machine-readable medium, such as memory 504, storage device 506, or memory on processor 502.

[000133] Высокоскоростной контроллер 508 управляет операциями с большой пропускной способностью для вычислительного устройства 500, а низкоскоростной контроллер 512 управляет операциями с меньшей пропускной способностью. Такое распределение функций является лишь примером. В одном варианте реализации высокоскоростной контроллер 508 соединен с памятью 504, дисплеем 516, например, через графический процессор или ускоритель, и с высокоскоростными расширительными портами 510, в которые можно устанавливать различные платы расширения (не показаны). В варианте реализации низкоскоростной контроллер 512 соединен с устройством 506 хранения и низкоскоростным расширительным портом 514. Низкоскоростной расширительный порт, который может включать различные коммуникационные порты, например USB, Bluetooth, Ethernet, беспроводной Ethernet, может быть соединен с одним или более устройствами ввода/вывода, такими как клавиатура, указательное устройство, пара микрофон/динамик, сканер или сетевое устройство, такое как коммутатор или маршрутизатор, например, с помощью сетевого адаптера. Вычислительное устройство 500 может быть реализовано в нескольких различных формах, как показано на фигуре. Например, оно может быть реализовано как стандартный сервер 520 или многократно, в виде группы таких серверов. Оно может также быть реализовано как часть стоечной серверной системы 524. Кроме того, оно может быть реализовано на персональном компьютере, таком как ноутбук 522. В альтернативном варианте осуществления компоненты вычислительного устройства 500 могут быть объединены с другими компонентами в мобильном устройстве (не показано), таком как устройство 550. Каждое из таких устройств может содержать одно или более вычислительных устройств 500, 550, и вся система может состоять из множества вычислительных устройств 500, 550, взаимодействующих друге другом.[000133] A high-speed controller 508 manages high-bandwidth operations for computing device 500, and a low-speed controller 512 manages lower-bandwidth operations. This distribution of functions is just an example. In one embodiment, high-speed controller 508 is coupled to memory 504, display 516, such as through a graphics processor or accelerator, and high-speed expansion ports 510 into which various expansion cards (not shown) can be installed. In an embodiment, low-speed controller 512 is coupled to storage device 506 and low-speed expansion port 514. The low-speed expansion port, which may include various communications ports, such as USB, Bluetooth, Ethernet, wireless Ethernet, may be connected to one or more input/output devices, such as a keyboard, pointing device, microphone/speaker pair, scanner, or a network device such as a switch or router, such as a network adapter. Computing device 500 may be implemented in several different forms, as shown in the figure. For example, it may be implemented as a standard server 520 or multiple times as a group of such servers. It may also be implemented as part of a rack server system 524. Additionally, it may be implemented on a personal computer such as a laptop 522. In an alternative embodiment, components of the computing device 500 may be combined with other components in a mobile device (not shown) such as device 550. Each of such devices may contain one or more computing devices 500, 550, and the entire system may consist of a plurality of computing devices 500, 550 communicating with each other.

[000134] Вычислительное устройство 500 может быть реализовано в нескольких различных формах, как показано на фигуре. Например, оно может быть реализовано как стандартный сервер 520 или многократно, в виде группы таких серверов. Оно может также быть реализовано как часть стоечной серверной системы 524. Кроме того, оно может быть реализовано на персональном компьютере, таком как ноутбук 522. В альтернативном варианте осуществления компоненты вычислительного устройства 500 могут быть объединены с другими компонентами в мобильном устройстве (не показано), таком как устройство 550. Каждое из таких устройств может содержать одно или более вычислительных устройств 500, 550, и вся система может состоять из множества вычислительных устройств 500, 550, взаимодействующих друге другом.[000134] Computing device 500 may be implemented in several different forms, as shown in the figure. For example, it may be implemented as a standard server 520 or multiple times as a group of such servers. It may also be implemented as part of a rack server system 524. Additionally, it may be implemented on a personal computer such as a laptop 522. In an alternative embodiment, components of the computing device 500 may be combined with other components in a mobile device (not shown) such as device 550. Each of such devices may contain one or more computing devices 500, 550, and the entire system may consist of a plurality of computing devices 500, 550 communicating with each other.

[000135] Вычислительное устройство 550 включает процессор 552, память 564 и устройство ввода/вывода, такое как, помимо прочего, дисплей 554, коммуникационный интерфейс 566 и приемопередатчик 568. Устройство 550 может также быть снабжено устройством хранения, таким как микропривод или другое устройство, для обеспечения дополнительной возможности хранения. Все компоненты 550, 552, 564, 554, 566 и 568 соединяют друг с другом с помощью различных шин, и некоторые из компонентов могут быть установлены на общей материнской плате или иными способами, в зависимости от ситуации.[000135] Computing device 550 includes a processor 552, a memory 564, and an input/output device such as, but not limited to, a display 554, a communications interface 566, and a transceiver 568. The device 550 may also be provided with a storage device such as a microdrive or other device to provide additional storage capacity. The components 550, 552, 564, 554, 566, and 568 are all connected to each other using various buses, and some of the components may be mounted on a common motherboard or in other ways, as appropriate.

[000136] Процессор 552 может выполнять команды, имеющиеся в вычислительном устройстве 550, включая команды, хранящиеся в запоминающем устройстве 564. Процессор может быть реализован в виде набора микросхем, включая отдельные и многокомпонентные аналоговые и цифровые процессоры. Кроме того, процессор может быть реализован с использованием любой из ряда архитектур. Например, процессор 510 может представлять собой процессор CISC (вычислительное устройство с полным набором команд), процессор RISC (вычислительное устройство с сокращенным набором команд) или процессор MISC (вычислительное устройство с минимальным набором команд). Процессор может обеспечивать, например, координацию других компонентов устройства 550, таких как управление пользовательскими интерфейсами, запуск приложений устройством 550, и беспроводную связь с устройством 550.[000136] Processor 552 may execute instructions contained in computing device 550, including instructions stored in storage device 564. The processor may be implemented as a chipset, including individual and multi-component analog and digital processors. In addition, the processor may be implemented using any of a number of architectures. For example, processor 510 may be a CISC (full instruction set computing) processor, a RISC (reduced instruction set computing) processor, or a MISC (minimum instruction set computing) processor. The processor may provide, for example, coordination of other components of device 550, such as managing user interfaces, running applications by device 550, and communicating wirelessly with device 550.

[000137] Процессор 552 может обмениваться данными с пользователем через интерфейс 558 управления и интерфейс 556 дисплея, соединенный с дисплеем 554. Дисплей 554 может представлять собой, например, дисплей типа TFT (жидкокристаллический дисплей на тонкопленочных транзисторах) или типа OLED (на органических светоизлучающих диодах), или другие подходящие технологии отображения. Интерфейс 556 дисплея может содержать соответствующую схему для приведения дисплея 554 в действие и для представления графической и другой информации пользователю. Интерфейс 558 управления может принимать команды от пользователя и преобразовывать их для передачи процессору 552. Кроме того, может быть предусмотрен внешний интерфейс 562, сообщающийся с процессором 552 для обеспечения устройства 550 связью ближнего радиуса действия с другими устройствами. В некоторых вариантах реализации внешний интерфейс 562 может обеспечивать, например, проводную связь, или в других вариантах реализации беспроводную связь, и можно также использовать множество интерфейсов.[000137] The processor 552 may communicate with the user through a control interface 558 and a display interface 556 coupled to the display 554. The display 554 may be, for example, a TFT (thin film transistor) display or an OLED (organic light emitting diode) display. ), or other suitable display technologies. The display interface 556 may include suitable circuitry for driving the display 554 and for presenting graphical and other information to the user. The control interface 558 may receive commands from the user and convert them for transmission to the processor 552. Additionally, an external interface 562 may be provided in communication with the processor 552 to provide the device 550 with near-field communications with other devices. In some embodiments, external interface 562 may provide, for example, wired communications, or in other embodiments, wireless communications, and a variety of interfaces may also be used.

[000138] Информация в запоминающем устройстве 564 хранится в вычислительном устройстве 550. Запоминающее устройство 564 может быть реализована в виде одного или более машиночитаемых носителей или носителей, блока или блоков энергозависимой памяти, или блока или блоков энергонезависимой памяти. Кроме того, может быть предусмотрена расширительная память 574, соединенная с устройством 550 посредством расширительного интерфейса 572, который может включать, например, интерфейс карты SIMM (модуль с однорядным расположением микросхем памяти). Такая расширительная память 574 может обеспечивать устройство 550 дополнительным пространством хранения или может также хранить приложения или другую информацию для устройства 550. В частности, расширительная память 574 может включать команды для выполнения или для дополнения описанных выше процессов, а может также включать защищенную информацию. Таким образом, например, расширительная память 574 может быть обеспечена в качестве защищенного модуля для устройства 550 и может быть запрограммирована командами, которые позволяют использовать устройство 550 защищенным образом. Кроме того, с помощью плат SIMM можно передавать безопасные приложения, а также дополнительную информацию, например размещать идентификационную информацию на карте SIMM без возможности компрометации.[000138] Information in storage device 564 is stored in computing device 550. Storage device 564 may be implemented as one or more computer-readable media or media, a block or blocks of volatile memory, or a block or blocks of non-volatile memory. Additionally, expansion memory 574 may be provided coupled to device 550 via expansion interface 572, which may include, for example, a SIMM (single inline memory module) card interface. Such expansion memory 574 may provide device 550 with additional storage space or may also store applications or other information for device 550. In particular, expansion memory 574 may include instructions to perform or supplement the processes described above, and may also include secure information. Thus, for example, expansion memory 574 may be provided as a secure module for device 550 and may be programmed with instructions that allow device 550 to be used in a secure manner. In addition, SIMM cards can transfer secure applications as well as additional information, such as placing identification information on the SIMM card without the possibility of compromise.

[000139] Память может включать, например, флэш-память и/или память NVRAM, как описано ниже. В одном варианте реализации компьютерный программный продукт на практике реализован на носителе информации. Компьютерный программный продукт содержит команды, при исполнении которых осуществляется один или более способов, такие как описанные выше. Информационный носитель представляет собой компьютерочитаемый или машиночитаемый носитель, такой как запоминающее устройство 564, расширительная память 574 или память на процессоре 552, причем информация может быть принята, например, посредством приемопередатчика 568 или внешнего интерфейса 562.[000139] The memory may include, for example, flash memory and/or NVRAM memory, as described below. In one embodiment, the computer program product is practically implemented on a storage medium. The computer program product contains instructions that, when executed, perform one or more methods such as those described above. The information medium is a computer-readable or machine-readable medium, such as a storage device 564, expansion memory 574, or memory on a processor 552, where the information may be received, for example, through a transceiver 568 or an external interface 562.

[000140] Устройство 550 может обмениваться данными беспроводным способом через коммуникационный интерфейс 566, в который при необходимости может быть включена схема для обработки цифровых сигналов. Коммуникационный интерфейс 566 связи может обеспечивать связь в различных режимах или протоколах, таких как, помимо прочего, голосовые звонки GSM, SMS, EMS или MMS сообщения, CDMA, TDMA, PDC, WCDMA, CDMA2000 или GPRS. Такую передачу данных можно осуществлять, например, при помощи радиочастотного приемопередатчика 568. Кроме того, возможна связь ближнего радиуса действия, например, с помощью Bluetooth, Wi-Fi или другого подобного приемопередатчика (не показан). Кроме того, модуль 570 приемника GPS (глобальной системы позиционирования) может передавать дополнительные относящиеся к навигации и местоположению беспроводные данные на устройство 550, которые можно использовать при необходимости в приложениях, работающих на устройстве 550.[000140] Device 550 may communicate wirelessly through a communications interface 566, which may include circuitry for digital signal processing if desired. The communication communications interface 566 may provide communications in various modes or protocols, such as, but not limited to, GSM voice calls, SMS, EMS or MMS messages, CDMA, TDMA, PDC, WCDMA, CDMA2000, or GPRS. Such data transmission can be accomplished, for example, using radio frequency transceiver 568. In addition, short-range communication is possible, for example, using Bluetooth, Wi-Fi, or another similar transceiver (not shown). In addition, GPS (Global Positioning System) receiver module 570 may transmit additional navigation and location-related wireless data to device 550 that can be used as needed by applications running on device 550.

[000141] Устройство 550 может также передавать звуковой сигнал с использованием аудиокодека 560, который может принимать речевую информацию от пользователя и преобразовывать ее в пригодную для использования цифровую информацию. Аудиокодек 560 может также генерировать звуковой сигнал для пользователя, например, через динамик, например через гарнитуру устройства 550. Такой звуковой сигнал может представлять собой звук от голосовых телефонных звонков, может представлять собой записанный звук, например голосовые сообщения, музыкальные файлы и т.п., а может также включать звук, создаваемый приложениями, работающими на устройстве 550.[000141] Device 550 may also transmit an audio signal using an audio codec 560, which can receive speech information from a user and convert it into usable digital information. Audio codec 560 may also generate an audio signal for the user, for example, through a speaker, such as through the headset of device 550. Such audio signal may be audio from voice telephone calls, may be recorded audio, such as voice messages, music files, and the like. , and may also include audio generated by applications running on device 550.

[000142] Вычислительное устройство 550 может быть реализовано в нескольких различных формах, как показано на фигуре. Например, оно может быть реализовано в виде сотового телефона 580. Оно может также быть реализовано как часть смартфона 582, карманного персонального компьютера или другого подобного мобильного устройства.[000142] Computing device 550 may be implemented in several different forms, as shown in the figure. For example, it may be implemented as a cellular telephone 580. It may also be implemented as part of a smartphone 582, a personal digital assistant, or other similar mobile device.

[000143] Различные варианты реализации систем и способов, описанных в настоящем документе, могут быть реализованы в виде цифровой электронной схемы, интегральной схемы, специально разработанных ASIC (интегральных схем прикладного назначения), компьютерного аппаратного обеспечения, микропрограммного обеспечения, программного обеспечения и/или в виде комбинации таких вариантов реализации. Данные различные реализации могут включать реализацию в одной или более компьютерных программах, выполненных с возможностью исполнения и/или интерпретации в программируемой системе, включающей по меньшей мере один программируемый процессор, который может быть специализированным или общего назначения, присоединенный к системе хранения для приема от нее данных и команд и передачи в нее данных и команд, по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода.[000143] Various implementations of the systems and methods described herein may be implemented in the form of a digital electronic circuit, an integrated circuit, custom ASICs (application integrated circuits), computer hardware, firmware, software, and/or as a combination of such implementation options. These various implementations may include implementation in one or more computer programs configured to be executed and/or interpreted on a programmable system including at least one programmable processor, which may be specialized or general purpose, coupled to a storage system to receive data from it. and commands and transmitting data and commands thereto, at least one input device and at least one output device.

[000144] Эти компьютерные программы (также именуемые программами, программным обеспечением, программными приложениями или кодом), включают машинные команды для программируемого процессора и могут быть реализованы на высокоуровневом процедурном и/или объектно-ориентированном языке программирования, и/или на ассемблерном/машинном языке. Используемые в настоящем документе термины «машиночитаемый носитель», «компьютерочитаемый носитель» относятся к любому компьютерному программному продукту, аппарату и/или устройству, например такому как магнитные диски, оптические диски, запоминающее устройство, программируемые логические устройства (PLD), используемые для передачи машинных команд и/или данных на программируемый процессор, включая машиночитаемый носитель, который принимает машинные команды в качестве машиночитаемого сигнала. Термин «машиночитаемый сигнал» относится к любому сигналу, используемому для передачи машинных команд и/или данных на программируемый процессор.[000144] 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 a high-level procedural and/or object-oriented programming language, and/or assembly/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 magnetic disks, optical disks, storage media, programmable logic devices (PLDs) used to transmit computer data. instructions and/or data to a programmable processor, including a computer-readable medium, that receives the machine instructions as a computer-readable signal. The term "machine-readable signal" refers to any signal used to convey machine instructions and/or data to a programmable processor.

[000145] Для обеспечения взаимодействия с пользователем описанные в настоящем документе системы и методы могут быть реализованы на компьютере, имеющем устройство отображения, например КЛТ - (катодно-лучевая трубка) или ЖК - (жидкокристаллический) монитор, для отображения информации пользователю, и клавиатуру и указывающее устройство, например мышь или трекбол, с помощью которых пользователь может вводить в компьютер входные данные. Для обеспечения взаимодействия с пользователем также можно использовать и другие типы устройств; обратная связь, предоставляемая пользователю, может иметь любую осязаемую форму, например визуальная обратная связь, слуховая обратная связь или тактильная обратная связь; и входные данные от пользователя могут поступать в любой форме, включая звуковые, речевые или тактильные входные данные.[000145] To provide user interaction, the systems and methods described herein may be implemented on a computer having a display device, such as a CRT (cathode ray tube) or LCD (liquid crystal) monitor, to display information to the user, and a keyboard and A pointing device, such as a mouse or trackball, that allows the user to provide input to a computer. Other types of devices can also be used to provide user interaction; the feedback provided to the user can be in any tangible form, such as visual feedback, auditory feedback, or haptic feedback; and input from the user may come in any form, including audio, speech, or tactile input.

[000146] Описанные в настоящем документе системы и методы могут быть реализованы в компьютерной системе, которая включает серверный компонент, например сервер данных, или включает промежуточный компонент, например сервер приложений, или включает клиентский компонент (например, компьютер-клиент с графическим интерфейсом пользователя или веб-браузером, с помощью которых пользователь может взаимодействовать с реализацией описанных в настоящем документе систем и методов), либо любую комбинацию таких серверных, промежуточных и клиентских компонентов. Компоненты системы могут быть связаны между собой любой формой или средой цифрового обмена данными, например сетью связи. К примерам сетей связи относятся локальная вычислительная сеть (LAN), глобальная сеть (WAN) и Интернет.[000147] Компьютерная система может включать клиенты и серверы. Клиент и сервер по существу удалены друг от друга и, как правило, взаимодействуют через сеть связи. Функциональная зависимость клиента и сервера возникает благодаря компьютерным программам, выполняемым на соответствующих компьютерах и имеющим функциональную зависимость клиент-сервер друг от друга.[000146] The systems and methods described herein may be implemented in a computer system that includes a server component, such as a data server, or includes an intermediate component, such as an application server, or includes a client component (for example, a client computer with a graphical user interface or web browser through which a user can interact with an implementation of the systems and methods described herein), or any combination of such server, middleware, and client components. System components can be interconnected by any form or medium of digital data exchange, such as a communications network. Examples of communication networks include a local area network (LAN), a wide area network (WAN), and the Internet.[000147] A computer system may include clients and servers. The client and server are essentially remote from each other and typically communicate through a communications network. The functional dependence of the client and server arises due to computer programs running on the respective computers and having a client-server functional dependence on each other.

[000148] ДРУГИЕ ВАРИАНТЫ ОСУЩЕСТВЛЕНИЯ[000148] OTHER EMBODIMENTS

[000149] Описан ряд вариантов осуществления. Тем не менее будет очевидно, что возможны различные модификации без отклонения от сущности и объема изобретения. Кроме того, логические потоки, изображенные на фигурах, не требуют показанного определенного или последовательного порядка для достижения желаемых результатов. Кроме того, могут быть предусмотрены и другие стадии, или же стадии могут быть исключены из описанных потоков, и в описанные системы могут быть добавлены или удалены из них другие компоненты. Соответственно, нижеследующая формула изобретения охватывает другие варианты осуществления.[000149] A number of embodiments are described. However, it will be appreciated that various modifications are possible without departing from the spirit and scope of the invention. Additionally, the logical flows depicted in the figures do not require the specific or sequential order shown to achieve the desired results. In addition, other steps may be provided or omitted from the described flows, and other components may be added to or removed from the described systems. Accordingly, the following claims cover other embodiments.

Claims (98)

1. Способ аппаратно-ускоренного генерирования K-мерного графа, представляющего множество ридов секвенирования для анализа распознавания вариантов, включающий:1. A method for hardware-accelerated generation of a K-dimensional graph representing a set of sequencing reads for variant recognition analysis, including: получение первого набора нуклеотидных последовательностей, генерируемых секвенатором нуклеиновых кислот, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности;obtaining a first set of nucleotide sequences generated by the nucleic acid sequencer, the first set of nucleotide sequences including (i) a plurality of reads corresponding to the active region of the reference sequence, and (ii) a portion of the reference sequence; генерирование с использованием множества неконвейерных аппаратных логических блоков программируемого логического устройства K-мерного графа с использованием полученного первого набора нуклеотидных последовательностей, причем каждый аппаратный логический блок содержит другую аппаратную логическую схему, выполненную с возможностью выполнения одной или более операций, причем каждый узел K-мерного графа представляет собой K-мер, каждый край K-мерного графа представляет собой связь между парой K-меров, а каждая масса каждого края K-мерного графа представляет собой число вхождений последовательности K-меров, представленной парой K-меров; иgenerating, using a plurality of non-pipeline hardware logic blocks of a programmable logic device, a K-dimensional graph using the obtained first set of nucleotide sequences, each hardware logic block comprising another hardware logic circuit configured to perform one or more operations, wherein each node of the K-dimensional graph represents a K-mer, each edge of the K-mer graph represents a connection between a pair of K-mers, and each mass of each edge of the K-mer graph represents the number of occurrences of the sequence of K-mers represented by the pair of K-mers; And в процессе генерирования K-мерного графа:in the process of generating a K-dimensional graph: периодическое обновление с помощью устройства управления данными описания графа для K-мерного графа после выполнения одной или более операций каждым аппаратным логическим блоком, который используют для генерирования по меньшей мере части K-мерного графа, причем данные описания графа представляют собой (i) идентификатор K-мерного графа и (ii) информацию о состоянии K-мерного графа, причем устройство управления создает рабочий процесс операций с использованием неконвейерных аппаратных логических блоков путем запуска выполнения одной или более операций каждого соответствующего аппаратного логического блока во время генерирования K-мерного графа.periodically updating, by a manager, graph description data for the K-dimensional graph after one or more operations have been performed by each hardware logic unit that is used to generate at least a portion of the K-dimensional graph, wherein the graph description data is (i) a K-identifier dimensional graph and (ii) K-dimensional graph state information, wherein the control device creates a workflow of operations using the non-pipelined hardware logic blocks by triggering execution of one or more operations of each corresponding hardware logic block during generation of the K-dimensional graph. 2. Способ по п. 1, в котором выходные данные каждого аппаратного логического блока из множества аппаратных логических блоков сохраняются посредством буферной емкости хеш-таблицы.2. The method of claim 1, wherein the output data of each hardware logical block of the plurality of hardware logical blocks is stored by a hash table buffer capacity. 3. Способ по п. 1, в котором устройство управления реализовано с использованием аппаратного логического блока программируемого логического устройства.3. The method according to claim 1, in which the control device is implemented using a hardware logic block of a programmable logic device. 4. Способ по п. 1, в котором устройство управления реализовано с использованием одного или более ЦП или ГП для выполнения программных команд для реализации функций устройства управления.4. The method of claim 1, wherein the control device is implemented using one or more CPUs or GPUs to execute software instructions to implement the functions of the control device. 5. Способ по п. 1, в котором операции дополнительно включают: 5. The method according to claim 1, in which the operations further include: предоставление сгенерированного K-мерного графа для блока распознавания вариантов, причем блок распознавания вариантов обрабатывает K-мерный граф для определения потенциальных вариантов между одним или более из множества считываний и эталонной последовательностью.providing a generated K-dimensional graph to the variant recognition unit, wherein the variant recognition unit processes the K-dimensional graph to determine potential variants between one or more of the plurality of reads and a reference sequence. 6. Способ по п. 5, в котором программные команды исполняются одним или более ЦП или ГП для реализации одной или более функций блока распознавания вариантов.6. The method of claim 5, wherein the software instructions are executed by one or more CPUs or GPUs to implement one or more functions of the variant recognition unit. 7. Способ по п. 5, в котором программируемое логическое устройство используется для ускорения одной или более функций блока распознавания вариантов.7. The method of claim 5, wherein the programmable logic device is used to accelerate one or more functions of the variant recognition unit. 8. Способ по п. 1, в котором данные описания графа дополнительно включают в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.8. The method of claim 1, wherein the graph description data further includes (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with the K-identifier dimensional graph. 9. Система аппаратно-ускоренного генерирования K-мерного графа, представляющего множество ридов секвенирования для анализа распознавания вариантов, включающая:9. A system for hardware-accelerated generation of a K-dimensional graph representing many sequencing reads for variant recognition analysis, including: секвенатор нуклеиновых кислот;nucleic acid sequencer; аппаратно-ускоренный блок генерирования графов, который включает в себя аппаратные цифровые логические схемы, выполненные с возможностью выполнения операций, причем операции включают в себя:a hardware-accelerated graph generation unit that includes hardware digital logic circuits configured to perform operations, the operations including: получение первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности;obtaining a first set of nucleotide sequences, the first set of nucleotide sequences including (i) a plurality of reads corresponding to the active region of the reference sequence, and (ii) a portion of the reference sequence; генерирование с использованием множества неконвейерных аппаратных логических блоков программируемого логического устройства K-мерного графа с использованием полученного первого набора нуклеотидных последовательностей, причем каждый аппаратный логический блок содержит другую аппаратную логическую схему, выполненную с возможностью выполнения одной или более операций, причем каждый узел K-мерного графа представляет собой K-мер, каждый край K-мерного графа представляет собой связь между парой K-меров, а каждая масса каждого края K-мерного графа представляет собой число возникновения последовательности K-меров, представленной парой K-меров; иgenerating, using a plurality of non-pipeline hardware logic blocks of a programmable logic device, a K-dimensional graph using the obtained first set of nucleotide sequences, each hardware logic block comprising another hardware logic circuit configured to perform one or more operations, wherein each node of the K-dimensional graph represents a K-mer, each edge of a K-mer graph represents a connection between a pair of K-mers, and each mass of each edge of a K-mer graph represents the occurrence number of a sequence of K-mers represented by a pair of K-mers; And в процессе генерирования K-мерного графа:in the process of generating a K-dimensional graph: периодическое обновление, с помощью устройства управления данными, описания графа для K-мерного графа после выполнения одной или более операций каждым аппаратным логическим блоком, который используют для генерирования по меньшей мере части K-мерного графа, причем данные описания графа представляют собой (i) идентификатор K-мерного графа и (ii) информацию о состоянии K-мерного графа, причем устройство управления создает рабочий процесс операций с использованием неконвейерных аппаратных логических блоков путем запуска выполнения одной или более операций каждого соответствующего аппаратного логического блока во время генерирования K-мерного графа.periodically updating, by a data manager, a graph description for the K-dimensional graph after one or more operations have been performed by each hardware logic unit that is used to generate at least a portion of the K-dimensional graph, wherein the graph description data is (i) an identifier a K-dimensional graph and (ii) information about the state of the K-dimensional graph, wherein the control device creates a workflow of operations using the non-pipelined hardware logic blocks by triggering execution of one or more operations of each corresponding hardware logic block during generation of the K-dimensional graph. 10. Система по п. 9, в которой выходные данные каждого аппаратного логического блока из множества аппаратных логических блоков сохраняются посредством буферной емкости хеш-таблицы.10. The system of claim 9, wherein the output data of each hardware logical block of the plurality of hardware logical blocks is stored by a hash table buffer capacity. 11. Система по п. 9, в которой операции дополнительно включают: 11. The system according to claim 9, in which the operations additionally include: предоставление сгенерированного K-мерного графа для блока распознавания вариантов, причем блок распознавания вариантов выполнен с возможностью обработки K-мерного графа для определения потенциальных вариантов между одним или более из множества считываний и эталонной последовательностью.providing a generated K-dimensional graph to the variant recognition unit, wherein the variant recognition unit is configured to process the K-dimensional graph to determine potential variants between one or more of the plurality of reads and a reference sequence. 12. Система по п. 9, дополнительно включающая:12. The system according to claim 9, additionally including: один или более компьютеров; иone or more computers; And одно или более запоминающих устройств, в которых хранятся команды, исполнение которых одним или более компьютерами приводит к выполнению одним или более компьютерами вторых операций блока распознавания вариантов, причем вторые операции включают получение сгенерированного K-мерного графа с помощью блока распознавания вариантов; иone or more storage devices storing instructions, the execution of which by one or more computers causes the one or more computers to perform second operations of the variant recognition unit, the second operations comprising obtaining a generated K-dimensional graph by the variant recognition unit; And идентификацию на основе обработки блока распознавания вариантов сгенерированного K-мерного графа, одного или более потенциальных вариантов, причем потенциальный вариант представляет собой разницу между распознаванием оснований одного или более считываний в наборе считываний и нуклеотидом эталонного генома в конкретном местоположении эталонного генома.identifying, based on processing of the variant recognition block of the generated K-mer graph, one or more candidate variants, wherein the potential variant is the difference between a base recognition of one or more reads in the set of reads and a nucleotide of the reference genome at a particular location of the reference genome. 13. Система по п. 9, в которой операции дополнительно включают:13. The system according to claim 9, in which the operations additionally include: получение сгенерированного K-мерного графа с помощью блока распознавания вариантов; иobtaining a generated K-dimensional graph using a variant recognition block; And идентификацию на основе обработки блока распознавания вариантов сгенерированного K-мерного графа, одного или более потенциальных вариантов, причем потенциальный вариант представляет собой разницу между распознаванием оснований одного или более считываний в наборе считываний и нуклеотидом эталонного генома в конкретном местоположении эталонного генома.identifying, based on processing of the variant recognition block of the generated K-mer graph, one or more candidate variants, wherein the potential variant is the difference between a base recognition of one or more reads in the set of reads and a nucleotide of the reference genome at a particular location of the reference genome. 14. Система по п. 9, в которой данные описания графа дополнительно включают в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.14. The system of claim 9, wherein the graph description data further includes (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with the K-identifier dimensional graph. 15. Способ аппаратно-ускоренного генерирования K-мерного графа, представляющего множество ридов секвенирования для анализа распознавания вариантов, в программируемом логическом устройстве, включающий:15. A method for hardware-accelerated generation of a K-dimensional graph representing multiple sequencing reads for variant recognition analysis in a programmable logic device, including: получение первого набора нуклеотидных последовательностей, генерируемых секвенатором нуклеиновых кислот, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности;obtaining a first set of nucleotide sequences generated by the nucleic acid sequencer, the first set of nucleotide sequences including (i) a plurality of reads corresponding to the active region of the reference sequence, and (ii) a portion of the reference sequence; для каждой конкретной нуклеотидной последовательности из первого набора нуклеотидных последовательностей:for each specific nucleotide sequence from the first set of nucleotide sequences: генерирование для хранения в буферной емкости хеш-таблицы и первым аппаратным логическим блоком данных, представляющих узел графа для каждого K-мера конкретной нуклеотидной последовательности;generating a hash table for storage in a buffer capacity and a first hardware logical block of data representing a graph node for each K-mer of a specific nucleotide sequence; обнаружение устройством управления того, что первый аппаратный логический блок завершил генерирование узла графа для каждого K-мера конкретной нуклеотидной последовательности;detecting by the control device that the first hardware logic unit has completed generating a graph node for each K-mer of the particular nucleotide sequence; конфигурирование устройством управления второго аппаратного логического блока для выполнения генерирования краев графа для сгенерированных узлов графа; и для одной или более пар сгенерированных узлов графа:configuring, by the control device, a second hardware logic unit to perform graph edge generation for the generated graph nodes; and for one or more pairs of generated graph nodes: генерирование вторым аппаратным логическим блоком и для хранения в хеш-таблице графов данных, представляющих края графа между одной или более парами сгенерированных узлов графов, сгенерированных первым аппаратным логическим блоком, причем данные, представляющие узел графа для каждого K-мера, хранящегося в буферной емкости хеш-таблицы, и данные, представляющие края графа, хранящиеся в буферной емкости хеш-таблицы, представляют собой K-мерный граф первого набора нуклеотидных последовательностей.generating by the second hardware logic unit and storing in a hash table graphs of data representing graph edges between one or more pairs of generated graph nodes generated by the first hardware logic unit, the data representing a graph node for each K-mer stored in the hash buffer capacity -tables, and the data representing the edges of the graph stored in the buffer capacity of the hash table is a K-dimensional graph of the first set of nucleotide sequences. 16. Способ по п. 15, дополнительно включающий:16. The method according to claim 15, additionally including: периодическое сохранение устройством управления и в блоке памяти, доступном для устройства управления, данных описания графа для экземпляра K-мерного графа, причем данные описания графа представляют собой (i) K-мерный графический идентификатор и (ii) K-мерную информацию о состоянии графа.periodically storing, by the control device and in a memory unit accessible to the control device, graph description data for an instance of the K-dimensional graph, the graph description data being (i) a K-dimensional graph identifier and (ii) K-dimensional graph state information. 17. Способ по п. 15,17. Method according to paragraph 15, причем первый аппаратный логический блок дополнительно выполнен с возможностью:wherein the first hardware logical block is further configured to: определения того, соответствуют ли один или более конкретных K-меров конкретной нуклеотидной последовательности другому K-меру конкретной нуклеотидной последовательности; иdetermining whether one or more particular K-mers of a particular nucleotide sequence correspond to another K-mer of a particular nucleotide sequence; And на основании определения того, что один или более конкретных K-меров конкретной нуклеотидной последовательности совпадают с другим K-мером конкретной нуклеотидной последовательности, сохранение данных, которые маркируют один или более конкретных K-меров как неуникальные K-меры.based on determining that one or more particular K-mers of a particular nucleotide sequence match another K-mer of a particular nucleotide sequence, storing data that marks the one or more particular K-mers as non-unique K-mers. 18. Способ по п. 15, в котором вторая аппаратная логика дополнительно выполнена с возможностью:18. The method according to claim 15, in which the second hardware logic is further configured to: присвоить краевую массу каждому краю K-мерного графа.assign an edge mass to each edge of a K-dimensional graph. 19. Способ по п. 15, дополнительно включающий:19. The method according to claim 15, additionally including: выдачу команды третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью:issuing a command to the third hardware logical block of the programmable logic device to execute hardware logic configured to: получения данных, представляющих K-мерный граф, из буферной емкости хеш-таблицы; иobtaining data representing the K-dimensional graph from the hash table buffer capacity; And предоставления полученных данных, представляющих K-мерный граф, в блок распознавания вариантов.providing the received data representing the K-dimensional graph to the variant recognition unit. 20. Способ по п. 15, дополнительно включающий:20. The method according to claim 15, additionally including: выдачу команды третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью:issuing a command to the third hardware logical block of the programmable logic device to execute hardware logic configured to: выборочного удаления данных, представляющих узлы графов, и данных, представляющих края K-мерного графа из буферной емкости хеш-таблицы.selectively removing data representing graph nodes and data representing edges of the K-dimensional graph from the buffer capacity of the hash table. 21. Способ по п. 15, в котором устройство управления реализовано с использованием третьего аппаратного логического блока программируемого логического устройства.21. The method of claim 15, wherein the control device is implemented using a third hardware logic block of the programmable logic device. 22. Способ по п. 15, в котором буферная емкость хеш-таблицы реализована с использованием третьего аппаратного логического блока программируемого логического устройства.22. The method of claim 15, wherein the hash table buffer capacity is implemented using a third hardware logic block of the programmable logic device. 23. Способ по п. 15, в котором устройство управления реализовано с использованием одного или более ЦП или ГП, выполняющих программные команды для реализации функций устройства управления.23. The method of claim 15, wherein the control device is implemented using one or more CPUs or GPUs executing software instructions to implement the functions of the control device. 24. Способ по п. 15, в котором данные описания графа дополнительно включают в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.24. The method of claim 15, wherein the graph description data further includes (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with the K-identifier dimensional graph. 25. Способ по п. 15, дополнительно включающий:25. The method according to claim 15, additionally including: оценку K-мерного графа для проверки наличия циклов графа;K-dimensional graph evaluation to check for cycles in the graph; если во время оценки был обнаружен цикл графа:if a graph cycle was detected during evaluation: прекращение построения K-мерного графа; илиtermination of K-dimensional graph construction; or если во время оценки цикл графа не обнаружен:if no graph cycle is detected during evaluation: получение данных из буферной емкости хеш-таблицы, описывающей структуру K-мерного графа; иobtaining data from the buffer capacity of the hash table describing the structure of the K-dimensional graph; And предоставление в модуль распознавания вариантов полученных данных, которые описывают структуру K-мерного графа.providing the recognition module with variants of the received data that describe the structure of the K-dimensional graph. 26. Система аппаратно-ускоренного генерирования K-мерного графа, представляющего множество ридов секвенирования для анализа распознавания вариантов, с использованием программируемого логического устройства, включающая:26. A system for hardware-accelerated generation of a K-dimensional graph representing multiple sequencing reads for variant recognition analysis, using a programmable logic device, including: секвенатор нуклеиновых кислот; nucleic acid sequencer; аппаратно-ускоренный блок генерирования графов, который включает в себя аппаратные цифровые логические схемы, выполненные с возможностью выполнения операций, причем операции включают в себя:a hardware-accelerated graph generation unit that includes hardware digital logic circuits configured to perform operations, the operations including: получение первого набора нуклеотидных последовательностей, причем первый набор нуклеотидных последовательностей включает в себя (i) множество считываний, соответствующих активной области эталонной последовательности, и (ii) часть эталонной последовательности;obtaining a first set of nucleotide sequences, the first set of nucleotide sequences including (i) a plurality of reads corresponding to the active region of the reference sequence, and (ii) a portion of the reference sequence; для каждой конкретной нуклеотидной последовательности из первого набора нуклеотидных последовательностей:for each specific nucleotide sequence from the first set of nucleotide sequences: генерирование для хранения в буферной емкости хеш-таблицы и первым аппаратным логическим блоком данных, представляющих узел графа для каждого K-мера конкретной нуклеотидной последовательности;generating a hash table for storage in a buffer capacity and a first hardware logical block of data representing a graph node for each K-mer of a specific nucleotide sequence; обнаружение устройством управления того, что первый аппаратный логический блок завершил генерирование узла графа для каждого K-мера конкретной нуклеотидной последовательности;detecting by the control device that the first hardware logic unit has completed generating a graph node for each K-mer of the particular nucleotide sequence; конфигурирование устройством управления второго аппаратного логического блока для выполнения генерирования краев графа для сгенерированных узлов графа; иconfiguring, by the control device, a second hardware logic unit to perform graph edge generation for the generated graph nodes; And для одной или более пар сгенерированных узлов графа:for one or more pairs of generated graph nodes: генерирование вторым аппаратным логическим блоком и для хранения в хеш-таблице графов данных, представляющих края графа между одной или более парами сгенерированных узлов графов, сгенерированных первым аппаратным логическим блоком, причем данные, представляющие узел графа для каждого K-мера, хранящегося в буферной емкости хеш-таблицы, и данные, представляющие края графа, хранящиеся в буферной емкости хеш-таблицы, представляют собой K-мерный граф первого набора нуклеотидных последовательностей.generating by the second hardware logic unit and storing in a hash table graphs of data representing graph edges between one or more pairs of generated graph nodes generated by the first hardware logic unit, the data representing a graph node for each K-mer stored in the hash buffer capacity -tables, and the data representing the edges of the graph stored in the buffer capacity of the hash table is a K-dimensional graph of the first set of nucleotide sequences. 27. Система по п. 26, в которой операции дополнительно включают:27. The system according to claim 26, in which the operations additionally include: периодическое сохранение устройством управления и в блоке памяти, доступном для устройства управления, данных описания графа для экземпляра K-мерного графа, причем данные описания графа представляют собой (i) K-мерный графический идентификатор и (ii) K-мерную информацию о состоянии графа.periodically storing, by the control device and in a memory unit accessible to the control device, graph description data for an instance of the K-dimensional graph, the graph description data being (i) a K-dimensional graph identifier and (ii) K-dimensional graph state information. 28. Система по п. 26,28. System according to clause 26, причем первый аппаратный логический блок дополнительно выполнен с возможностью:wherein the first hardware logical block is further configured to: определения того, соответствуют ли один или более конкретных K-меров конкретной нуклеотидной последовательности другому K-меру конкретной нуклеотидной последовательности; иdetermining whether one or more particular K-mers of a particular nucleotide sequence correspond to another K-mer of a particular nucleotide sequence; And на основании определения того, что один или более конкретных K-меров конкретной нуклеотидной последовательности совпадают с другим K-мером конкретной нуклеотидной последовательности, сохранение данных, которые маркируют один или более конкретных K-меров как неуникальные K-меры.based on determining that one or more particular K-mers of a particular nucleotide sequence match another K-mer of a particular nucleotide sequence, storing data that marks the one or more particular K-mers as non-unique K-mers. 29. Система по п. 26, в которой вторая аппаратная логика дополнительно выполнена с возможностью:29. The system according to claim 26, in which the second hardware logic is additionally configured to: присвоения краевой массы каждому краю K-мерного графа.assigning an edge mass to each edge of a K-dimensional graph. 30. Система по п. 26, в которой операции дополнительно включают:30. The system according to claim 26, in which the operations additionally include: выдачу команды третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью:issuing a command to the third hardware logical block of the programmable logic device to execute hardware logic configured to: получения данных, представляющих K-мерный граф, из буферной емкости хеш-таблицы; иobtaining data representing the K-dimensional graph from the hash table buffer capacity; And предоставления полученных данных, представляющих K-мерный граф, в блок распознавания вариантов.providing the received data representing the K-dimensional graph to the variant recognition unit. 31. Система по п. 26, в которой операции дополнительно включают:31. The system according to claim 26, in which the operations additionally include: выдачу команды третьему аппаратному логическому блоку программируемого логического устройства на выполнение аппаратной логики, выполненной с возможностью:issuing a command to the third hardware logical block of the programmable logic device to execute hardware logic configured to: выборочное удаление данных, представляющих узлы графов, и данных, представляющих края K-мерного графа из буферной емкости хеш-таблицы.selectively removing data representing graph nodes and data representing edges of a K-dimensional graph from the hash table buffer capacity. 32. Система по п. 26, в которой буферная емкость хеш-таблицы реализована с использованием третьего аппаратного логического блока программируемого логического устройства.32. The system of claim 26, wherein the hash table buffer capacity is implemented using a third hardware logic block of the programmable logic device. 33. Система по п. 26, в которой данные описания графа дополнительно включают в себя (iii) данные, представляющие последний аппаратный логический блок из множества аппаратных логических блоков, выполняющих аппаратную логику на K-мерном графе или нуклеотидные последовательности, связанные с идентификатором K-мерного графа.33. The system of claim 26, wherein the graph description data further includes (iii) data representing the last hardware logic block of a plurality of hardware logic blocks performing hardware logic on the K-dimensional graph or nucleotide sequences associated with the K-identifier dimensional graph. 34. Система по п. 26, в которой операции дополнительно включают:34. The system according to claim 26, in which the operations additionally include: оценку K-мерного графа для проверки наличия циклов графа;K-dimensional graph evaluation to check for cycles in the graph; если во время оценки был обнаружен цикл графа:if a graph cycle was detected during evaluation: прекращение построения K-мерного графа; илиtermination of K-dimensional graph construction; or если во время оценки цикл графа не обнаружен:if no graph cycle is detected during evaluation: получение данных из буферной емкости хеш-таблицы, описывающей структуру K-мерного графа; иobtaining data from the buffer capacity of the hash table describing the structure of the K-dimensional graph; And предоставление в модуль распознавания вариантов полученных данных, которые описывают структуру K-мерного графа.providing the recognition module with variants of the received data that describe the structure of the K-dimensional graph.
RU2021135182A 2020-04-07 2021-04-07 Hardware-accelerated generation of k-dimensional graph RU2817560C1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US63/006,668 2020-04-07

Publications (1)

Publication Number Publication Date
RU2817560C1 true RU2817560C1 (en) 2024-04-16

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101188886B1 (en) * 2010-10-22 2012-10-09 삼성에스디에스 주식회사 System and method for managing genetic information
CN102460155B (en) * 2009-04-29 2015-03-25 考利达基因组股份有限公司 Method and system for calling variations in a sample polynucleotide sequence with respect to a reference polynucleotide sequence
RU2586502C1 (en) * 2015-05-13 2016-06-10 Общество с ограниченной ответственностью "СибЭнзайм" METHOD OF MAPPING POSITIONS OF ROW OF METHYLATED NUCLEOTIDE SEQUENCES Pu(5mC)GPy IN EXTENDED DNA FOR CONSTRUCTING EPIGENETIC PROFILE AND DETECTION OF ABNORMAL METHYLATED DNA SECTIONS
US20160306922A1 (en) * 2013-01-17 2016-10-20 Edico Genome, Corp. Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
US20180189444A1 (en) * 2016-01-11 2018-07-05 Edico Genome Corporation Bioinformatics systems, apparatuses, and methods for generating a de bruijn graph

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102460155B (en) * 2009-04-29 2015-03-25 考利达基因组股份有限公司 Method and system for calling variations in a sample polynucleotide sequence with respect to a reference polynucleotide sequence
KR101188886B1 (en) * 2010-10-22 2012-10-09 삼성에스디에스 주식회사 System and method for managing genetic information
US20160306922A1 (en) * 2013-01-17 2016-10-20 Edico Genome, Corp. Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
RU2586502C1 (en) * 2015-05-13 2016-06-10 Общество с ограниченной ответственностью "СибЭнзайм" METHOD OF MAPPING POSITIONS OF ROW OF METHYLATED NUCLEOTIDE SEQUENCES Pu(5mC)GPy IN EXTENDED DNA FOR CONSTRUCTING EPIGENETIC PROFILE AND DETECTION OF ABNORMAL METHYLATED DNA SECTIONS
US20180189444A1 (en) * 2016-01-11 2018-07-05 Edico Genome Corporation Bioinformatics systems, apparatuses, and methods for generating a de bruijn graph

Similar Documents

Publication Publication Date Title
Senol Cali et al. Nanopore sequencing technology and tools for genome assembly: computational analysis of the current state, bottlenecks and future directions
Ye et al. DBG2OLC: efficient assembly of large genomes using long erroneous reads of the third generation sequencing technologies
Hoffmann et al. Fast mapping of short sequences with mismatches, insertions and deletions using index structures
US11803554B2 (en) Flexible seed extension for hash table genomic mapping
US11062793B2 (en) Systems and methods for aligning sequences to graph references
WO2015123269A1 (en) System and methods for analyzing sequence data
US10120656B1 (en) Robotic process automation system for functional evaluation and improvement of back end instructional constructs
US20210313009A1 (en) Hardware accelerated k-mer graph generation
KR20200121225A (en) System and method for mitigation of correlation error events for variant detection
Kim et al. A review on sequence alignment algorithms for short reads based on next-generation sequencing
Sahlin Strobemers: an alternative to k-mers for sequence comparison
US20210193254A1 (en) Rapid Detection of Gene Fusions
RU2817560C1 (en) Hardware-accelerated generation of k-dimensional graph
Ekim et al. mapquik: Efficient low-divergence mapping of long reads in minimizer space
RU2818363C1 (en) Fast detection of gene fusions
RU2796915C1 (en) Flexible seed extension for hash table-based genomic mapping
Guguchkin et al. Enhancing SNV identification in whole-genome sequencing data through the incorporation of known population genetic variants into the minimap2 index
RU2815860C1 (en) Method of compressing genome sequence data
Budden et al. Cautionary tales of inapproximability
US20210285043A1 (en) Incremental secondary analysis of nucleic acid sequences
CN114090840A (en) Sequence searching method, device, equipment and medium
Dash et al. Incremental BLAST: incremental addition of new sequence databases through e-value correction
Vasimuddin et al. Identification of significant computational building blocks through comprehensive deep dive of ngs secondary analysis methods
WO2016040287A1 (en) Variant-calling data from amplicon-based sequencing methods
Vezzi et al. Algorithms and Data Structures for Next‐Generation Sequences