RU2799750C9 - Bioinformation systems, devices and methods for secondary and/or tertiary processing - Google Patents

Bioinformation systems, devices and methods for secondary and/or tertiary processing Download PDF

Info

Publication number
RU2799750C9
RU2799750C9 RU2021118824A RU2021118824A RU2799750C9 RU 2799750 C9 RU2799750 C9 RU 2799750C9 RU 2021118824 A RU2021118824 A RU 2021118824A RU 2021118824 A RU2021118824 A RU 2021118824A RU 2799750 C9 RU2799750 C9 RU 2799750C9
Authority
RU
Russia
Prior art keywords
candidate
reads
alignment
read
data
Prior art date
Application number
RU2021118824A
Other languages
Russian (ru)
Other versions
RU2021118824A (en
RU2799750C2 (en
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
Priority claimed from US15/404,146 external-priority patent/US10847251B2/en
Priority claimed from US15/497,149 external-priority patent/US10068183B1/en
Application filed by Иллюмина, Инк. filed Critical Иллюмина, Инк.
Publication of RU2021118824A publication Critical patent/RU2021118824A/en
Publication of RU2799750C2 publication Critical patent/RU2799750C2/en
Application granted granted Critical
Publication of RU2799750C9 publication Critical patent/RU2799750C9/en

Links

Images

Abstract

FIELD: bioinformatics.
SUBSTANCE: system, method and device for performing bioinformatics analysis on genome sequencing data. In particular, a method and system is provided for improving the accuracy of variant detection by co-scoring reads that map two or more regions of a reference sequence that are homologous. The method includes: accessing a cluster of reads; determining a set of candidate options from the cluster; evaluation of each option; formation of a file of definitions of options. The system contains: a computer and a storage device with instructions for initiating a call to a collection of reads, determining candidate variants and establishing the order of their processing, evaluating each variant and generating a variant definition file. Also provided is a computer-readable storage device with instructions initiating the execution of operations to improve the accuracy of determining options. The invention expands the arsenal of tools for the implementation of bioinformatic protocols.
EFFECT: increased accuracy of determining variants.
20 cl, 51 dwg

Description

Перекрестная ссылка на родственную заявкуCross reference to related application

[001] Настоящая заявка испрашивает приоритет в соответствии с §119(e) раздела 35 Свода законов США по предварительной заявке на патент США №62/347,080, поданной 7 июня 2016 г., озаглавленной «Bioinformatics Systems, Apparatuses, and Methods Executed on an Integrated Circuit Processing Platform»; по предварительной заявке на патент США №62/399,582, поданной 26 сентября 2016 г., озаглавленной «Bioinformatics Systems, Apparatuses, and Methods Executed on an Integrated Circuit Processing Platform»; предварительной заявке на патент США №62/414,637, поданной 28 октября 2016 г., озаглавленной «Bioinformatics Systems, Apparatuses, and Methods Executed on an Integrated Circuit Processing Platform»; по предварительной заявке на патент США №62/462,869, поданной 23 февраля 2017 г., озаглавленной «Bioinformatics Systems, Apparatuses, and Methods Executed on a Quantum Processing Platform»; по предварительной заявке на патент США №62/469,442, поданной 9 марта 2017 г., озаглавленной «Bioinformatics Systems, Apparatuses, and Methods Executed on an Integrated Circuit Processing Platform», ссылки на которые сделаны в соответствии с данным параграфом и которые полностью включены в настоящий документ посредством ссылки. Настоящая заявка является также частично продолжающейся заявкой и испрашивает приоритет в соответствии с §120 раздела 35 Свода законов США по заявке на патент США №15/404,146, поданной 11 января 2017 г., озаглавленной «Genomic Infrastructure for On-Site or Cloud-Based DNA and RNA Processing and Analysis»; и по заявке на патент США №15/497,149, поданной 25 апреля 2017 г., озаглавленной «Bioinformatics Systems, Apparatuses, and Methods Executed on a Quantum Processing Platform».[001] This application claims priority under 35 USC §119(e) to US Provisional Patent Application No. 62/347,080, filed June 7, 2016, entitled “Bioinformatics Systems, Apparatuses, and Methods Executed on an Integrated Circuit Processing Platform"; US Provisional Patent Application No. 62/399,582, filed September 26, 2016, entitled "Bioinformatics Systems, Apparatuses, and Methods Executed on an Integrated Circuit Processing Platform"; US Provisional Patent Application No. 62/414,637, filed October 28, 2016, entitled "Bioinformatics Systems, Apparatuses, and Methods Executed on an Integrated Circuit Processing Platform"; US Provisional Patent Application No. 62/462,869, filed February 23, 2017, entitled "Bioinformatics Systems, Apparatuses, and Methods Executed on a Quantum Processing Platform"; by U.S. Provisional Patent Application No. 62/469,442, filed March 9, 2017, entitled "Bioinformatics Systems, Apparatuses, and Methods Executed on an Integrated Circuit Processing Platform", references made under this paragraph and which are incorporated in their entirety by this document by reference. This application is also a continuation application in part and claims priority under 35 USC §120 to US Patent Application No. 15/404,146, filed January 11, 2017, entitled “Genomic Infrastructure for On-Site or Cloud-Based DNA.” and RNA Processing and Analysis"; and US Patent Application No. 15/497,149, filed April 25, 2017, entitled “Bioinformatics Systems, Apparatuses, and Methods Executed on a Quantum Processing Platform.”

Область техникиTechnical field

[002] Объект изобретения, описанный в настоящем документе, относится к биоинформатике и, в частности, к системам, устройствам и способам реализации биоинформационных протоколов, таких как выполнение одной или более функций для анализа геномных данных на интегральной схеме, такой как платформа аппаратной обработки.[002] The subject matter of the invention described herein relates to bioinformatics and, in particular, to systems, devices and methods for implementing bioinformatics protocols, such as performing one or more functions for analyzing genomic data on an integrated circuit, such as a hardware processing platform.

Уровень техникиState of the art

[003] Как подробно описано в настоящем документе, некоторые основные вычислительные проблемы анализа секвенирования ДНК с высокой пропускной способностью заключаются в необходимости справляться со взрывным ростом доступных геномных данных, потребности в повышенной точности и чувствительности при сборе этих данных и потребности в быстрых, эффективных и точных вычислительных средствах при выполнении анализа на широком диапазоне наборов данных секвенирования, полученных из таких геномных данных.[003] As described in detail herein, some of the major computational challenges of high-throughput DNA sequencing analysis are the need to cope with the explosion of available genomic data, the need for increased accuracy and sensitivity in collecting this data, and the need for fast, efficient, and accurate computationally when performing analysis on a wide range of sequencing data sets derived from such genomic data.

[004] Для того чтобы идти в ногу с такой повышенной пропускной способностью секвенирования, обеспечиваемой секвенаторами нового поколения, обычно применяли многопоточные программные средства, которые исполнялись на все большем и большем количестве более быстрых процессоров в вычислительных кластерах с дорогостоящей высокодоступной памятью, которая требуют существенной энергии и значительных расходов на информационно-техническое обеспечение. Важно отметить, что будущие повышения пропускной способности секвенирования приведут к ускорению роста затрат в реальном денежном выражении на эти решения по вторичной обработке.[004] To keep up with this increased sequencing throughput provided by new generation sequencers, it has been common to employ multi-threaded software that runs on more and more faster processors in computing clusters with expensive, highly available memory that requires significant power. and significant costs for information technology support. It is important to note that future increases in sequencing throughput will result in accelerating real-money cost increases for these downstream processing solutions.

[005] Для решения по меньшей мере частично этих и других подобных проблем предложены устройства, системы и способы их использования, описанные в настоящем документе.[005] To solve at least part of these and other similar problems, the devices, systems, and methods for using them described herein are provided.

Раскрытие сущности изобретенияDisclosure of the invention

[006] Настоящее изобретение относится к устройствам, системам и способам их использования при выполнении одного или более протоколов геномики и/или биоинформатики на данных, формируемых посредством процедуры первичной обработки, например на данных генетической последовательности. Например, согласно различным аспектам в настоящем документе предложены устройства, системы и способы, выполненные с возможностью осуществления протоколов вторичного и/или третичного анализа генетических данных, таких как данные, сформированные путем секвенирования РНК и/или ДНК, например, с помощью секвенатора нового поколения (СНП). В конкретных примерах реализации предусмотрены один или более конвейеров вторичной обработки для обработки данных генетической последовательности. В других вариантах реализации предусмотрены один или более конвейеров третичной обработки для обработки данных генетической последовательности, например, где конвейеры и/или их отдельные элементы обеспечивают превосходную чувствительность и улучшенную точность в более широком диапазоне полученных из последовательности данных по сравнению с доступным в настоящее время в данной области техники.[006] The present invention relates to devices, systems, and methods for using them to perform one or more genomics and/or bioinformatics protocols on data generated by a front-end processing procedure, such as genetic sequence data. For example, in various aspects, provided herein are devices, systems, and methods configured to implement protocols for secondary and/or tertiary analysis of genetic data, such as data generated by RNA and/or DNA sequencing, for example, using a next-generation sequencer ( SNP). In specific embodiments, one or more secondary processing pipelines are provided for processing genetic sequence data. In other embodiments, one or more tertiary processing pipelines are provided for processing genetic sequence data, for example, where the pipelines and/or individual elements thereof provide superior sensitivity and improved accuracy over a wider range of sequence-derived data than is currently available in the field. field of technology.

[007] Например, в настоящем документе предложена система, такая как для осуществления одного или более конвейеров анализа последовательности и/или генома на данных генетической последовательности и/или других полученных из нее данных. В различных вариантах реализации система может включать в себя один или более электронных источников данных, которые обеспечивают цифровые сигналы, представляющие множество ридов генетических и/или геномных данных, например, где каждое из множества ридов геномных данных включает в себя последовательность нуклеотидов. Система может также включать в себя память, например, DRAM или кэш, такую как для хранения одного или более из последовательных ридов, одной или множества генетических референсных последовательностей и одного или более индексов одной или более генетических референсных последовательностей. Система может дополнительно включать в себя одну или более интегральных схем, таких как FPGA, ASIC или sASIC, и/или ЦПУ и/или ГПУ, причем интегральная схема, например, применительно к FPGA, ASIC или sASIC, может быть образована из набора жестко смонтированных цифровых логических схем, которые взаимосвязаны множеством физических электрических межсоединений. Система может дополнительно включать в себя квантовый вычислительный процессор для использования при реализации одного или более способов, описанных в настоящем документе.[007] For example, a system is provided herein, such as for implementing one or more sequence and/or genome analysis pipelines on genetic sequence data and/or other data derived therefrom. In various embodiments, the system may include one or more electronic data sources that provide digital signals representing a plurality of genetic and/or genomic data reads, for example, where each of the plurality of genomic data reads includes a nucleotide sequence. The system may also include a memory, such as DRAM or a cache, such as for storing one or more of the sequential reads, one or more genetic reference sequences, and one or more indexes of the one or more genetic reference sequences. The system may further include one or more integrated circuits, such as an FPGA, ASIC or sASIC, and/or a CPU and/or GPU, wherein the integrated circuit, for example in the case of an FPGA, ASIC or sASIC, may be formed from a set of hard-wired digital logic circuits that are interconnected by many physical electrical interconnections. The system may further include a quantum computing processor for use in implementing one or more of the methods described herein.

[008] В различных вариантах реализации одно или более из множества электрических межсоединений может представлять собой вход в одну или более интегральных схем, которые могут быть соединены или выполнены с возможностью соединения, например, напрямую, через подходящее монтажное соединение или опосредованно, например, посредством беспроводного сетевого соединения (например, облака или гибридного облака), с электронным источником данных. Независимо от соединения с секвенатором интегральная схема по настоящему изобретению может быть выполнена с возможностью приема множества ридов геномных данных, например непосредственно из секвенатора или из связанной памяти. Риды могут быть представлены в цифровом закодированном виде в стандартном файловом формате FASTQ или BCL. Соответственно, система может включать в себя интегральную схему, имеющую одно или более электрических межсоединений, которые могут представлять собой физическое межсоединение, включающее в себя интерфейс памяти, чтобы обеспечивать интегральной схеме возможность доступа к памяти.[008] In various embodiments, one or more of the plurality of electrical interconnections may be an input to one or more integrated circuits that may be connected or connectable, for example, directly, through a suitable wiring connection, or indirectly, for example, through a wireless network connection (for example, cloud or hybrid cloud) to an electronic data source. Regardless of the connection to the sequencer, the integrated circuit of the present invention may be configured to receive multiple reads of genomic data, for example directly from the sequencer or from associated memory. Reads can be digitally encoded in the standard FASTQ or BCL file format. Accordingly, the system may include an integrated circuit having one or more electrical interconnections, which may be a physical interconnection including a memory interface, to enable the integrated circuit to access memory.

[009] В частности, жестко смонтированная цифровая логическая схема интегральной схемы может быть выполнена в виде набора движков обработки, такого где каждый движок обработки может быть сформирован из подмножества жестко смонтированных цифровых логических схем для выполнения одного или более этапов в конвейере анализа последовательности, генома и/или третичного анализа, как описано ниже в настоящем документе, на множестве ридов генетических данных, а также на других данных, полученных из генетических данных. Например, каждое подмножество жестко смонтированных цифровых логических схем может быть в монтажной конфигурации для выполнения одного или более этапов в конвейере анализа. Кроме того, в том случае, когда интегральная схема представляет собой матрицу FPGA, такие этапы в процессе анализа последовательности или дальнейшего анализа могут включать в себя частичное изменение конфигурации матрицы FPGA во время процесса анализа.[009] In particular, a hard-wired digital integrated circuit logic circuit may be implemented as a set of processing engines, such that each processing engine may be formed from a subset of hard-wired digital logic circuits to perform one or more steps in a sequence, genome and /or tertiary analysis, as described below herein, on multiple genetic data reads, as well as other data derived from the genetic data. For example, each subset of hard-wired digital logic circuits may be configured to perform one or more steps in the analysis pipeline. Additionally, in the case where the integrated circuit is an FPGA, such steps in the sequence analysis or further analysis process may include partially reconfiguring the FPGA during the analysis process.

[0010] В частности, набор движков обработки может включать в себя модуль картирования, например в монтажной конфигурации, чтобы в соответствии по меньшей мере с некоторыми из последовательности нуклеотидов в риде из множества ридов осуществлять доступ к индексу одной или более генетических референсных последовательностей из памяти через интерфейс памяти для картирования рида на один или более сегментов указанных одной или более генетических референсных последовательностей на основе индекса. Кроме того, набор движков обработки может включать в себя модуль выравнивания в монтажной конфигурации, чтобы получать доступ к одной или более генетическим референсным последовательностям из памяти через интерфейс памяти для выравнивания рида, например, картированного рида, на одну или более позиций в одном или более сегментах указанных одной или более генетических референсных последовательностей, например, полученных из модуля картирования и/или хранящихся в памяти.[0010] In particular, the set of processing engines may include a mapping module, for example in an installation configuration, to, in accordance with at least some of the nucleotide sequences in a read of the plurality of reads, access an index of one or more genetic reference sequences from memory through a memory interface for mapping the read into one or more segments of said one or more genetic reference sequences based on the index. In addition, the set of processing engines may include an alignment module in a mounting configuration to access one or more genetic reference sequences from memory through a memory interface to align a read, such as a mapped read, to one or more positions in one or more segments said one or more genetic reference sequences, for example obtained from a mapping module and/or stored in memory.

[0011] Набор движков обработки также может включать в себя модуль сортировки, чтобы сортировать каждый выровненный рид в соответствии с одной или более позициями в одной или более генетических референсных последовательностей. Кроме того, набор движков обработки может включать в себя модуль определения вариантов, такой как для обработки картированных, выровненных и/или сортированных ридов, например, относительно референсного генома, для создания тем самым файла записи HMM, и/или определения вариантов для работы с ними, и/или детализации вариаций между секвенированными генетическими данными и данными референсного генома. В различных случаях одно или более из множества физических электрических соединений может включать в себя выход из интегральной схемы для обмена результирующими данными из модуля картирования и/или модулей выравнивания, и/или сортировки, и/или определения вариантов.[0011] The set of processing engines may also include a sorting module to sort each aligned read according to one or more positions in one or more genetic reference sequences. In addition, the set of processing engines may include a variant detection module, such as for processing mapped, aligned and/or sorted reads, for example, against a reference genome, thereby creating an HMM record file, and/or defining variants to operate on them , and/or detailing variations between sequenced genetic data and reference genome data. In various cases, one or more of the plurality of physical electrical connections may include an output from the integrated circuit for exchanging resultant data from the mapping module and/or alignment and/or sorting and/or variant determination modules.

[0012] В частности, что касается модуля картирования, то в различных вариантах реализации предложена система для осуществления конвейера анализа картирования на множестве ридов генетических данных с помощью индекса генетических референсных данных. В различных случаях генетическая последовательность, например, рид и/или генетические референсные данные, могут быть представлены последовательностью нуклеотидов, которая может храниться в памяти системы. Модуль картирования может быть включен в интегральную схему и может быть сформирован из множества предварительно сконфигурированных и/или жестко смонтированных цифровых логических схем, которые соединены между собой множеством физических электрических межсоединений, причем физические электрические межсоединения могут включать в себя интерфейс памяти для обеспечения интегральной схемы возможностью доступа к памяти. В более конкретных вариантах реализации жестко смонтированные цифровые логические схемы могут быть выполнены в виде набора движков обработки, такого где каждый движок обработки может быть сформирован подмножеством жестко смонтированных цифровых логических схем для выполнения одного или более этапов в конвейере анализа последовательностей на множестве ридов геномных данных.[0012] In particular, with respect to the mapping module, various embodiments provide a system for implementing a mapping analysis pipeline on multiple genetic data reads using a genetic reference data index. In various cases, a genetic sequence, such as a read and/or genetic reference data, may be represented by a sequence of nucleotides, which may be stored in the system's memory. The mapping module may be included in an integrated circuit and may be formed from a plurality of preconfigured and/or hardwired digital logic circuits that are interconnected by a plurality of physical electrical interconnections, wherein the physical electrical interconnections may include a memory interface to provide the integrated circuit with access capability to memory. In more specific embodiments, the hard-wired digital logic circuits may be implemented as a set of processing engines, such that each processing engine may be formed by a subset of the hard-wired digital logic circuits to perform one or more steps in a sequence analysis pipeline on a plurality of genomic data reads.

[0013] Например, в одном варианте реализации набор движков обработки может включать в себя модуль картирования в жестко смонтированной конфигурации, где модуль картирования и/или один или более из его движков обработки выполнены с возможностью приема рида геномных данных, например посредством одного или более из множества физических электрических межсоединений, и выделения части рида таким образом, чтобы формировать из него затравку. В таком случае рид может быть представлен последовательностью нуклеотидом, а затравка может представлять подмножество последовательности нуклеотидов, представленной ридом. Модуль картирования может включать в себя память или быть выполнен с возможностью подключения к памяти, которая содержит одно или более ридов, одну или более затравок ридов, по меньшей мере часть одного или более референсных геномов и/или один или более индексов, причем такой индекс построен из одного или более референсных геномов. В определенных случаях движок обработки модуля картирования может использовать затравку и индекс для вычисления адреса в индексе на основе затравки.[0013] For example, in one embodiment, a set of processing engines may include a mapping module in a hard-wired configuration, where the mapping module and/or one or more of its processing engines are configured to receive a read of genomic data, such as through one or more of multiple physical electrical interconnections, and isolating part of the read in such a way as to form a seed from it. In such a case, the read may be represented by a nucleotide sequence, and the primer may be a subset of the nucleotide sequence represented by the read. The mapping module may include or be configured to connect to a memory that contains one or more reads, one or more read seeds, at least a portion of one or more reference genomes, and/or one or more indexes, wherein such index is constructed from one or more reference genomes. In certain cases, the mapping engine processing engine may use the seed and index to calculate an address in the index based on the seed.

[0014] После того, как адрес вычислен или получен и/или сохранен иным образом, например, во встроенной или внешней памяти, к этому адресу можно получать доступ в индексе в памяти, чтобы принимать запись из адреса, например, запись, представляющую информацию о позиции в генетической референсной последовательности. Затем эта информация о позиции может быть использована для определения одной или более совпадающих позиций из рида в генетической референсной последовательности на основе записи. Потом по меньшей мере одна из совпадающих позиций может быть выведена в память через интерфейс памяти.[0014] Once an address is calculated or obtained and/or otherwise stored, such as in on-chip or external memory, the address can be accessed at an index in the memory to receive an entry from the address, such as an entry representing information about positions in the genetic reference sequence. This position information can then be used to identify one or more matching positions from the read in a genetic reference sequence based on the record. At least one of the matching positions may then be output to memory via a memory interface.

[0015] В другом варианте реализации набор движков обработки может включать в себя модуль выравнивания, например в предварительно сконфигурированной и/или жестко смонтированной конфигурации. В этом случае один или более из движков обработки могут быть выполнены с возможностью приема одной или более картированных позиций для данных рида посредством одного или более из множества физических электрических межсоединений. После этого можно получать доступ к каждой картированной позиции в памяти (внутренней или внешней) для извлечения сегмента референсной последовательности/генома, соответствующего картированной позиции. На каждом извлеченном референсном сегменте можно вычислить выравнивание рида вместе с оценкой выравнивания. По завершении вычисления можно выбрать и вывести по меньшей мере одно выравнивание рида с лучшей оценкой выравнивания. В различных случаях модуль выравнивания также реализует динамический алгоритм программирования при вычислении выравнивания, например, один или более алгоритмов Смита-Ватермана, с линейной или аффинной оценкой гэпов, алгоритм выравнивания с гэпами и/или алгоритм выравнивания без гэпов. В конкретных случаях вычисление выравнивания может включать в себя сначала выполнение выравнивания без гэпов с каждым референсным сегментом и на основе результатов выравнивания без гэпов выбор референсных сегментов для дальнейшего выполнения с ними выравниваний с гэпами.[0015] In another embodiment, the set of processing engines may include an alignment module, for example, in a preconfigured and/or hardwired configuration. In this case, one or more of the processing engines may be configured to receive one or more mapped positions for the read data via one or more of a plurality of physical electrical interconnections. Each mapped position in memory (internal or external) can then be accessed to retrieve the reference sequence/genome segment corresponding to the mapped position. On each extracted reference segment, a read alignment can be calculated along with an alignment score. Once the calculation is complete, at least one read alignment with the best alignment score can be selected and output. In various cases, the alignment module also implements a dynamic programming algorithm in computing the alignment, such as one or more Smith-Waterman algorithms with linear or affine gap estimation, a gap alignment algorithm, and/or a gapless alignment algorithm. In specific cases, calculating the alignment may involve first performing a gapless alignment on each reference segment and, based on the results of the gapless alignment, selecting reference segments to further perform gap alignments on them.

[0016] В различных вариантах реализации может быть предусмотрен модуль определения вариантов для выполнения улучшенных функций определения вариантов, которые, когда они реализованы в одной или обоих программной и/или аппаратной конфигурациях, обеспечивают превосходную скорость обработки, более хорошую точность результата обработки и улучшенную общую эффективность, чем способы, устройства и системы, известные в настоящее время в данной области техники. А именно, в соответствии с одним аспектом предложены улучшенные способы выполнения операций определения вариантов в программном обеспечении и/или аппаратном обеспечении, например для выполнения одной или более операций HMM на данных генетической последовательности. Согласно другому аспекту предложены новые устройства, включающие в себя интегральную схему для выполнения таких улучшенных операций определения вариантов, причем по меньшей мере часть операции определения вариантов реализована в аппаратном обеспечении.[0016] In various embodiments, a variant determination module may be provided to perform improved variant determination functions that, when implemented in one or both software and/or hardware configurations, provide superior processing speed, better processing result accuracy, and improved overall efficiency than methods, devices and systems currently known in the art. Namely, in accordance with one aspect, improved methods are provided for performing variant determination operations in software and/or hardware, for example, for performing one or more HMM operations on genetic sequence data. According to another aspect, new devices are provided including an integrated circuit for performing such improved variant determination operations, wherein at least a portion of the variant determination operation is implemented in hardware.

[0017] Соответственно, в различных случаях способы, описанные в настоящем документе, могут включать в себя картирование, с помощью первого подмножества жестко смонтированных и/или квантовых цифровых логических схем, множества ридов на один или более сегментов указанных одной или более генетических референсных последовательностей. Кроме того, способы могут включать в себя получение доступа интегральными и/или квантовыми схемами, например, посредством одного или более из множества физических электрических межсоединений, к одному или более картированным ридам и/или одной или более генетическим референсным последовательностям из связанной с ними памяти или кэша; и выравнивание с помощью второго подмножества жестко смонтированных и/или квантовых цифровых логических схем множества картированных ридов на одном или более сегментах указанных одной или более генетических референсных последовательностей.[0017] Accordingly, in various cases, the methods described herein may include mapping, using a first subset of hard-wired and/or quantum digital logic circuits, a plurality of reads to one or more segments of said one or more genetic reference sequences. In addition, the methods may include integrated circuits and/or quantum accessing, for example, through one or more of a plurality of physical electrical interconnections, one or more mapped reads and/or one or more genetic reference sequences from an associated memory or cache; and aligning, using a second subset of hardwired and/or quantum digital logic circuits, the plurality of mapped reads on one or more segments of said one or more genetic reference sequences.

[0018] В различных вариантах реализации способ может дополнительно включать в себя получение доступа интегральной /или квантовой схемой, например, с помощью одного или более из множества физических электрических межсоединений, к выровненному множеству ридов из связанной с ними памяти или кэша. В таком случае способ может включать в себя сортировку с помощью третьего подмножества жестко смонтированных и/или квантовых цифровых логических схем выровненного множества ридов в соответствии с их позициями в одной или более генетических референсных последовательностей. В определенных случаях способ может также включать в себя вывод, например, с помощью одного или более из множества физических электрических межсоединений интегральной и/или квантовой схемы, результирующих данных картирования, и/или выравнивания, и/или сортировки, например, где результирующие данные содержат позиции картированного, и/или выровненного, и/или сортированного множества ридов.[0018] In various embodiments, the method may further include having the integrated circuit/or quantum circuit, for example, through one or more of a plurality of physical electrical interconnects, access an aligned set of reads from an associated memory or cache. In such a case, the method may include sorting, by a third subset of hardwired and/or quantum digital logic circuits, the aligned set of reads according to their positions in one or more genetic reference sequences. In certain cases, the method may also include outputting, for example, via one or more of a plurality of physical integrated circuit and/or quantum circuit electrical interconnects, the resulting mapping and/or alignment and/or sorting data, for example, where the resulting data comprises positions of the mapped and/or aligned and/or sorted set of reads.

[0019] В некоторых случаях способ может дополнительно включать в себя использование полученных результирующих данных, например, с помощью еще одного подмножества жестко смонтированных и/или квантовых цифровых логических схем, в целях определения того, как картированные, выровненные и/или сортированные данные, полученные из секвенированного генетического образца субъекта, отличается от референсной последовательности, чтобы создать файл определения вариантов, описывающий генетические различия между двумя образцами. Соответственно, в различных вариантах реализации способ может также включать в себя получение доступа интегральной /или квантовой схемой, например, с помощью одного или более из множества физических электрических межсоединений, к картированному, и/или выровненному, и/или сортированному множеству ридов из связанной с ними памяти или кэша. В таком случае способ может включать в себя выполнение функции определения вариантов, например, операции HMM или операции парной HMM, на ридах, к которым получен доступ, с помощью третьего или четвертого подмножества жестко смонтированных и/или квантовых цифровых логических цепей для создания файла определения вариантов, подробно описывающего, как картированные, выровненные и/или сортированные риды отличаются от одной или более референсных последовательностей, например гаплотипа.[0019] In some cases, the method may further include using the resulting resulting data, for example, using another subset of hard-wired and/or quantum digital logic circuits, for the purposes of determining how the resulting data is mapped, aligned, and/or sorted from a subject's sequenced genetic sample differs from the reference sequence to create a variant definition file describing the genetic differences between the two samples. Accordingly, in various embodiments, the method may also include having access by the integrated circuit/or quantum circuit, such as through one or more of a plurality of physical electrical interconnects, to a mapped and/or aligned and/or sorted set of reads from an associated them memory or cache. In such a case, the method may include performing a variant determination function, such as an HMM operation or a paired HMM operation, on the accessed reads using a third or fourth subset of hard-wired and/or quantum digital logic circuits to create a variant determination file. , detailing how the mapped, aligned and/or sorted reads differ from one or more reference sequences, such as a haplotype.

[0020] Соответственно, согласно определенным аспектам изобретения в настоящем документе предложено компактное аппаратное обеспечение, например, на основе микросхемы, или квантовая ускоренная платформа для выполнения вторичного и/или третичного анализа на генетических данных и/или данных геномного секвенирования. В частности, предложены платформа или конвейер из жестко смонтированных и/или квантовых цифровых логических схем, которые специально выполнены с возможностью выполнения вторичного и/или третичного генетического анализа, например на секвенированных генетических данных или полученных из них геномных данных. В частности, может быть предусмотрен набор жестко смонтированных и/или квантовых логических схем, которые могут быть выполнены в виде набора движков обработки, такого где движки обработки могут присутствовать в предварительно сконфигурированной, и/или жестко смонтированной, и/или квантовой конфигурации на платформе обработки по настоящему изобретению, и могут быть специально выполнены с возможностью осуществления вторичных операций картирования, и/или выравнивания, и/или определения вариантов, относящихся к генетическому анализу на данных ДНК и/или РНК, и/или могут быть специально выполнены с возможностью осуществления другой третичной обработки на данных результатов.[0020] Accordingly, in accordance with certain aspects of the invention, a compact hardware, such as a chip-based, or quantum accelerated platform is provided herein for performing secondary and/or tertiary analysis on genetic and/or genomic sequencing data. In particular, a platform or pipeline of hard-wired and/or quantum digital logic circuits is provided that are specifically configured to perform secondary and/or tertiary genetic analysis, for example on sequenced genetic data or genomic data derived therefrom. In particular, a set of hard-wired and/or quantum logic circuits may be provided, which may be implemented as a set of processing engines, such that the processing engines may be present in a pre-configured and/or hard-wired and/or quantum configuration on the processing platform of the present invention, and may be specifically configured to perform secondary operations of mapping and/or alignment and/or variant determination related to genetic analysis on DNA and/or RNA data, and/or may be specifically configured to perform other tertiary processing on these results.

[0021] В конкретных случаях настоящие устройства, системы и способы их использования оптимизированы таким образом, чтобы при выполнении одного или более протоколов геномики и/или биоинформатики вторичной и/или третичной обработки обеспечивать улучшение скорости обработки, которая на порядки величины быстрее стандартных конвейеров вторичной обработки, реализованных в программном обеспечении. Кроме того, конвейеры и/или их компоненты, которые приведены в настоящем документе, обеспечивают повышенную чувствительность и точность на широком диапазоне наборов данных, полученных из последовательности данных, в целях геномной и биоинформационной обработки. В различных вариантах реализации одна или более из этих операций могут быть выполнены интегральной схемой, которая является частью или выполнена в виде центрального процессорного устройства общего назначения, и/или графического процессорного устройства, и/или квантового процессорного устройства.[0021] In specific cases, the present devices, systems and methods of use thereof are optimized to, when executing one or more secondary and/or tertiary processing genomics and/or bioinformatics protocols, provide improved processing speeds that are orders of magnitude faster than standard secondary processing pipelines , implemented in software. In addition, the pipelines and/or their components that are described herein provide increased sensitivity and accuracy on a wide range of sequence-derived datasets for genomic and bioinformatics processing purposes. In various embodiments, one or more of these operations may be performed by an integrated circuit that is part of or implemented as a general purpose central processing unit and/or a graphics processing unit and/or a quantum processing unit.

[0022] Например, геномика и биоинформатика являются областями, связанными с применением информационной технологии и компьютерной науки к сфере генетики и/или молекулярной биологии. В частности, методы биоинформатики могут быть применены к обработке и анализу различных генетических и/или геномных данных, например, от индивида, для определения качественной и количественной информации об этих данных, которая может быть использована различными практикующими медицинскими специалистами при разработке профилактических, терапевтических и/или диагностических способов предотвращения, лечения, уменьшения интенсивности и/или по меньшей мере выявления болезненных состояний и/или их возможности и, таким образом, улучшения безопасности, качества и эффективности здравоохранения на индивидуальном уровне. Следовательно, поскольку области геномики и биоинформатики сконцентрированы на развитии персонализированного здравоохранения, они стимулируют индивидуализированное здравоохранение, которое является упреждающим, а не реагирующим, и это дает нуждающемуся в лечении индивиду возможность большего вовлечения в поддержание собственного здоровья. Преимущество использования технологий генетики, геномики и/или биотехнологии, описанных в настоящем документе, состоит в том, что качественный и/или количественный анализ молекулярно-биологических (например, генетических) данных может быть выполнен на широком диапазоне наборов образцов при значительно более высоком показателе скорости и зачастую более точно, ускоряя тем самым появление системы персонализированного здравоохранения. В частности, в различных вариантах реализации относящиеся к геномике и/или биоинформатике задачи могут формировать геномный конвейер, который включает в себя один или более из конвейера микроматричного анализа, конвейера анализа генома, например, полногеномного анализа, конвейера анализа генотипирования, конвейера анализа экзома, конвейера анализа микробиома, конвейера анализа генотипирования, включая совместное генотипирование, конвейеров анализа вариантов, включая структурные варианты, соматические варианты, и GATK, а также конвейер анализа секвенирования РНК и конвейеры других генетических анализов.[0022] For example, genomics and bioinformatics are fields concerned with the application of information technology and computer science to the field of genetics and/or molecular biology. In particular, bioinformatics methods can be applied to the processing and analysis of various genetic and/or genomic data, for example, from an individual, to determine qualitative and quantitative information about this data, which can be used by various medical practitioners in the development of preventive, therapeutic and/or or diagnostic methods for preventing, treating, reducing the intensity and/or at least identifying disease states and/or their potential and thereby improving the safety, quality and efficiency of healthcare at the individual level. Consequently, as the fields of genomics and bioinformatics focus on the development of personalized healthcare, they encourage individualized healthcare that is proactive rather than reactive, and this empowers the individual in need of treatment to become more involved in their own health. The advantage of using genetics, genomics and/or biotechnology technologies described herein is that qualitative and/or quantitative analysis of molecular biological (e.g., genetic) data can be performed on a wide range of sample sets at a significantly higher rate of speed and often more accurately, thereby accelerating the emergence of personalized healthcare. Specifically, in various embodiments, the genomics and/or bioinformatics-related tasks may form a genomic pipeline that includes one or more of a microarray analysis pipeline, a genome analysis pipeline, e.g., a genome-wide analysis pipeline, a genotyping analysis pipeline, an exome analysis pipeline, a microbiome analysis, genotyping analysis pipeline including co-genotyping, variant analysis pipelines including structural variants, somatic variants, and GATK, and RNA sequencing analysis pipeline and other genetic analysis pipelines.

[0023] Соответственно, для использования этих преимуществ существуют улучшенные и более точные программные реализации для осуществления одного или ряда таких основанных на биоинформатике аналитических методов, например для развертывания с помощью ЦПУ общего назначения и/или ГПУ, и/или они могут быть реализованы в одной или более квантовых схем квантовой платформы обработки. Однако, для способов и систем на основе программного обеспечения традиционной конфигурации, как правило, характерно, что они трудоемкие, требуют много времени для выполнения на таких процессорах общего назначения и подвержены ошибкам. Поэтому реализуемые в данном документе системы биоинформатики, которые могут выполнять эти алгоритмы, например, реализованные в программном обеспечении, с помощью ЦПУ и/или ГПУ квантового процессорного устройства с меньшими затратами труда и/или интенсивностью обработки при более высоком проценте точности, будут полезны.[0023] Accordingly, to take advantage of these advantages, there are improved and more accurate software implementations for performing one or a number of such bioinformatics-based analytical methods, for example for deployment using a general purpose CPU and/or GPU, and/or they can be implemented in one or more quantum processing platform circuits. However, traditionally configured software-based methods and systems tend to be labor intensive, time consuming to execute on such general purpose processors, and error prone. Therefore, bioinformatics systems implemented herein that can execute these algorithms, for example implemented in software, using the CPU and/or GPU of a quantum processing device with less labor and/or processing intensity at a higher percentage of accuracy will be useful.

[0024] Такие реализации разработаны и представлены в настоящем документе, например, где геномные и/или биоинформационные анализы осуществляются оптимизированным программным обеспечением, исполняемым на ЦПУ, и/или ГПУ, и/или квантовом компьютере в системе, которая использует данные генетической последовательности, полученные с помощью процессоров и/или интегральных схем по данному изобретению. Кроме того, необходимо отметить, что стоимость анализа, хранения и совместного использования этих необработанных цифровых данных намного превышает стоимость их создания. Соответственно, в настоящем документе предложены также способы хранения и/или извлечения «точно в срок», которые оптимизируют хранение подобных данных таким образом, что вместо того, чтобы тратиться на коллективное хранение таких данных, применяют быстрое повторное формирование данных. Следовательно, способы формирования, анализа и хранения данных «точно в срок» или «JIT», представленные в настоящем документе, устраняют основное узкое место, которое является давно назревшим, но не устраненным препятствием между постоянно растущим формированием и хранением данных и реальной возможностью проникновения в суть медицинских проблем на их основе.[0024] Such implementations are developed and presented herein, for example, where genomic and/or bioinformatics analyzes are performed by optimized software running on a CPU and/or GPU and/or quantum computer in a system that uses genetic sequence data obtained using processors and/or integrated circuits according to this invention. Additionally, it must be noted that the cost of analyzing, storing and sharing this raw digital data far exceeds the cost of creating it. Accordingly, the present document also proposes just-in-time storage and/or retrieval methods that optimize the storage of such data such that, rather than incurring the expense of collectively storing such data, rapid data regeneration is employed. Therefore, the just-in-time or "JIT" data generation, analysis, and storage techniques presented herein address the major bottleneck that is the long-standing but unresolved obstacle between the ever-increasing data generation and storage and the real possibility of penetrating the essence of medical problems based on them.

[0025] Поэтому в настоящем документе представлены системы, устройства и способы для реализации протоколов геномики и/или биоинформатики или их части, таких как для выполнения одной или более функций анализа геномных данных, например, в одном или обоих из интегральной схемы, такой как аппаратная платформа обработки, и процессора общего назначения, такого как для выполнения одной или более биоаналитических операций в программном обеспечении и/или прошивке. Например, как указано далее в настоящем документе, в различных реализациях предложена интегральная схема и/или квантовая схема для ускорения одного или более процессов на платформе первичной, вторичной и/или третичной обработки. В различных случаях интегральная схема может быть использована при выполнении относящихся к генетической аналитике задач, таких как картирование, определение вариантов, сжатие, распаковка и т.п., ускоренным образом, и поэтому интегральная схема может включать в себя аппаратно ускоренную конфигурацию. Кроме того, в различных случаях может быть предусмотрена интегральная и/или квантовая схема, такая как схема, являющаяся частью процессора, который выполнен с возможностью осуществления одного или более протоколов геномики и/или биоинформатики на сформированных картированных и/или выровненных данных и/или данных с определенными вариантами.[0025] Therefore, provided herein are systems, devices and methods for implementing genomics and/or bioinformatics protocols or portions thereof, such as for performing one or more genomic data analysis functions, for example, in one or both of an integrated circuit, such as hardware a processing platform, and a general purpose processor, such as for performing one or more bioanalytical operations in software and/or firmware. For example, as discussed later herein, various implementations have proposed an integrated circuit and/or a quantum circuit for accelerating one or more processes on a primary, secondary, and/or tertiary processing platform. In various cases, an integrated circuit may be used to perform genetic analytics-related tasks, such as mapping, variant detection, compression, decompression, and the like, in an accelerated manner, and therefore the integrated circuit may include a hardware accelerated configuration. Additionally, in various cases, an integrated and/or quantum circuit may be provided, such as a circuit that is part of a processor, which is configured to implement one or more genomics and/or bioinformatics protocols on the generated mapped and/or aligned data and/or data with certain options.

[0026] В частности, в первом варианте реализации первая интегральная схема может быть образована из FPGA, ASIC и/или sASIC, которые соединены с материнской платой или иным образом прикреплены к ней и сконфигурированы или, в случае FPGA, могут быть запрограммированы с помощью прошивки, которую нужно сконфигурировать как набор жестко смонтированных цифровых логических схем, которые выполнены с возможностью осуществления по меньшей мере первого набора функций анализа последовательности в конвейере геномного анализа, например, где интегральная схема выполнена, как описано в настоящем документе выше, с возможностью включения в себя одной или более цифровых логических схем, которые устроены в виде набора движков обработки, выполненных с возможностью осуществления одного или более этапов в операции картирования, выравнивания и/или определения вариантов на генетических данных для создания данных результатов анализа последовательности. Первая интегральная схема может также включать в себя выход, например, сформированный из множества физических электрических межсоединений, такой как для передачи результирующих данных из процедур картирования, и/или выравнивания, и/или других процедур в память.[0026] Specifically, in a first embodiment, the first integrated circuit may be formed from an FPGA, an ASIC, and/or a sASIC that is coupled to or otherwise attached to a motherboard and configured or, in the case of an FPGA, programmed via firmware , which is to be configured as a set of hard-wired digital logic circuits that are configured to implement at least a first set of sequence analysis functions in a genomic analysis pipeline, for example, wherein the integrated circuit is configured as described herein above, capable of including one or more digital logic circuits that are arranged as a set of processing engines configured to perform one or more steps in the operation of mapping, aligning and/or identifying variants on genetic data to generate sequence analysis result data. The first integrated circuit may also include an output, for example, formed from a plurality of physical electrical interconnections, such as for transferring resultant data from mapping and/or alignment procedures and/or other procedures to memory.

[0027] Кроме того, может быть включена вторая интегральная и/или квантовая схема, соединенная с материнской платой или иным образом прикрепленная к ней и обменивающаяся данными с памятью посредством интерфейса связи. Вторая интегральная и/или квантовая схема может быть образована как центральное процессорное устройство (ЦПУ) или графическое процессорное устройство (ГПУ), или квантовое процессорное устройство (КПУ), которое выполнено с возможностью приема результирующих данных картированной, и/или выровненной, и/или подвергнутой определению вариантов последовательности, и может быть выполнена с возможностью реагирования на один или более программных алгоритмов, которые выполнены с возможностью выдачи ЦПУ или ГПУ инструкции на выполнение одной или более геномных и/или биоинформационных функций конвейера геномного анализа на результирующих данных анализа картированной, выровненной или подвергнутой определению вариантов последовательности. А именно, относящиеся к геномике и/или биоинформатике задачи могут формировать конвейер геномного анализа, который включает в себя один или более из конвейера микроматричного анализа, конвейера анализа генома, например, полногеномного анализа, конвейера анализа генотипирования, конвейера анализа экзома, конвейера анализа микробиома, конвейеров анализов генотипирования, включая совместное генотипирование, конвейеров анализа вариантов, включая структурные варианты, соматические варианты, и GATK, а также конвейер анализа секвенирования РНК и конвейеры других генетических анализов.[0027] Additionally, a second integrated and/or quantum circuit may be included coupled to or otherwise attached to the motherboard and communicating with the memory via a communications interface. The second integrated and/or quantum circuit may be configured as a central processing unit (CPU) or a graphics processing unit (GPU), or a quantum processing unit (CPU), which is configured to receive the resulting data mapped and/or aligned and/or subjected to the determination of sequence variants, and may be configured to respond to one or more software algorithms that are configured to issue instructions to the CPU or GPU to perform one or more genomic and/or bioinformatics functions of the genomic analysis pipeline on the resulting mapped, aligned or subjected to determination of sequence variants. Specifically, genomics and/or bioinformatics-related tasks may form a genomic analysis pipeline that includes one or more of a microarray analysis pipeline, a genome analysis pipeline, e.g., a genome-wide analysis pipeline, a genotyping analysis pipeline, an exome analysis pipeline, a microbiome analysis pipeline, genotyping assay pipelines, including co-genotyping, variant analysis pipelines, including structural variants, somatic variants, and GATK, and the RNA-seq analysis pipeline and other genetic assay pipelines.

[0028] Например, в одном варианте реализации ЦПУ, и/или ГПУ, и/или КПУ второй интегральной схемы может содержать программное обеспечение, которое выполнено с возможностью организации конвейера анализа генома для осуществления конвейера полногеномного анализа, такого как конвейер полногеномного анализа, который включает в себя один или более из анализа вариации по всему геному, анализа ДНК по всему экзому, анализа РНК по всему транскриптому, функционального анализа генов, функционального анализа белков, анализа связывания белков, количественного генного анализа и/или анализа сборки белков. В определенных случаях конвейер полногеномного анализа может быть выполнен в целях одного или более из анализа родства, анализа личного анамнеза, диагностики заболеваний, поиска новых лекарственных средств и/или профилирования белков. В конкретном случае конвейер полногеномного анализа осуществляют в целях анализа онкологии. В различных случаях результаты этих данных могут быть сделаны доступными, например, глобально, по всей системе.[0028] For example, in one embodiment, the CPU and/or GPU and/or CPU of the second integrated circuit may comprise software that is configured to organize a genome analysis pipeline to implement a genome-wide analysis pipeline, such as a genome-wide analysis pipeline that includes including one or more of genome-wide variation analysis, exome-wide DNA analysis, transcriptome-wide RNA analysis, gene functional analysis, protein functional analysis, protein binding analysis, quantitative gene analysis, and/or protein assembly analysis. In certain cases, a genome-wide analysis pipeline may be performed for the purposes of one or more of kinship analysis, personal history analysis, disease diagnosis, drug discovery, and/or protein profiling. In a specific case, the genome-wide analysis pipeline is carried out for the purpose of oncology analysis. In various cases, the results of this data may be made available, for example globally, throughout the system.

[0029] В различных случаях ЦПУ, и/или ГПУ, и/или квантовое процессорное устройство (КПУ) второй интегральной и/или квантовой схемы может содержать программное обеспечение, которое выполнено с возможностью организации конвейера анализа генома для осуществления анализа генотипирования, такого как анализ генотипирования, включающий в себя совместное генотипирование. Например, анализ совместного генотипирования может быть выполнен с помощью вычисления баесовской вероятности, например, вычисления байесовской вероятности, которое дает в результате абсолютную вероятность того, что данный определенный генотип является истинным генотипом. В других случаях программное обеспечение может быть выполнено с возможностью осуществления анализа метагенома для создания результирующих данных метагенома, которые могут быть, в свою очередь, использованы при выполнении анализа микробиома.[0029] In various cases, the CPU and/or GPU and/or quantum processing unit (CPU) of the second integrated circuit and/or quantum circuit may comprise software that is configured to organize a genome analysis pipeline to perform genotyping analysis, such as genotyping, including joint genotyping. For example, a joint genotyping analysis can be performed using a Bayesian probability calculation, such as a Bayesian probability calculation that results in the absolute probability that a given genotype is the true genotype. In other cases, the software may be configured to perform metagenome analysis to generate resulting metagenome data, which can in turn be used to perform microbiome analysis.

[0030] В определенных случаях первая и/или вторая интегральные схемы и/или память могут быть заключены в плату расширения, такую как плата межсоединения периферийных компонентов (PCI). Например, в различных вариантах реализации одна или более из интегральных схем могут быть одной или более микросхемами, соединенными с платой PCIe или иным образом связанными с материнской платой. В различных случаях интегральные и/или квантовые схемы и/или микросхемы могут быть компонентом в секвенаторе, или компьютере, или сервере, таком как часть фермы серверов. В конкретных вариантах реализации интегральные и/или квантовые схемы, и/или платы расширения, и/или компьютеры, и/или серверы могут быть выполнены с возможностью доступа через Интернет, например облако.[0030] In certain cases, the first and/or second integrated circuits and/or memory may be included in an expansion card, such as a peripheral component interconnect (PCI) card. For example, in various embodiments, one or more of the integrated circuits may be one or more chips coupled to a PCIe card or otherwise coupled to a motherboard. In various cases, integrated and/or quantum circuits and/or chips may be a component in a sequencer, or a computer, or a server, such as part of a server farm. In specific embodiments, integrated circuits and/or quantum circuits and/or expansion cards and/or computers and/or servers may be accessible via the Internet, such as the cloud.

[0031] Кроме того, в некоторых случаях память может быть энергозависимой оперативной памятью (ОЗУ), например памятью с прямым доступом (DRAM). В частности, в различных вариантах реализации память может включать в себя по меньшей мере две памяти, такие как первая память, которая представляет собой HMEM, например для хранения данных референсной последовательности гаплотипа, и вторая память, которая представляет собой RMEM, например для хранения рида данных геномной последовательности. В конкретных случаях каждая из двух памятей может содержать порт записи и/или порт считывания, например, где каждый из порта записи и порта считывания имеет доступ к отдельному тактовому генератору. Кроме того, каждая из двух памятей может содержать триггерную конфигурацию для хранения множества данных генетической последовательности и/или результатов обработки.[0031] Additionally, in some cases, the memory may be volatile random access memory (RAM), such as direct access memory (DRAM). Specifically, in various embodiments, the memory may include at least two memories, such as a first memory that is an HMEM, such as for storing haplotype reference sequence data, and a second memory that is an RMEM, such as for storing a read data genomic sequence. In specific cases, each of the two memories may include a write port and/or a read port, for example, where each of the write port and read port has access to a separate clock generator. In addition, each of the two memories may include a trigger configuration for storing a plurality of genetic sequence data and/or processing results.

[0032] Соответственно, согласно другому аспекту система может быть выполнена с возможностью совместного использования ресурсов памяти среди ее составных частей, например, при выполнении некоторых вычислительных задач посредством программного обеспечения, такого как выполняемое с помощью ЦПУ, и/или ГПУ, и/или квантовой платформы обработки, и/или выполнения других вычислительных задач посредством прошивки, например посредством аппаратного обеспечения связанной интегральной схемы, такой как FPGA, ASIC и/или sASIC. Этого можно достичь различными путями, такими как прямое слабое или жесткое связывание между ЦПУ/ГПУ/КПУ и матрицей FPGA, например микросхемой или платой PCIe. Такие конфигурации могут быть особенно полезны при распределении операций, относящихся к обработке больших структур данных, связанных с геномными и/или биоинформационными анализами и предназначенных для использования и доступа, как ЦПУ/ГПУ/КПУ, так и связанной интегральной схемой. В частности, в различных вариантах реализации при обработке данных посредством геномного конвейера, как описано в настоящем документе, например, для ускорения общей функции обработки, синхронизации и эффективности, на данных могут выполняться ряд различных операций, причем эти операции могут вовлекать как программные, так и аппаратные компоненты обработки.[0032] Accordingly, in another aspect, the system may be configured to share memory resources among its constituent parts, for example, when performing certain computing tasks through software, such as executed by a CPU and/or GPU and/or quantum processing platform, and/or performing other computing tasks via firmware, such as via associated integrated circuit hardware such as an FPGA, ASIC and/or sASIC. This can be achieved in various ways, such as direct weak or hard coupling between the CPU/GPU/CPU and the FPGA fabric, such as a chip or PCIe card. Such configurations may be particularly useful in distributing operations related to the processing of large data structures associated with genomic and/or bioinformatics analyzes and intended for use and access by both the CPU/GPU/CPU and the associated integrated circuit. In particular, in various embodiments, when processing data through a genomic pipeline as described herein, for example, to speed up overall processing, timing, and efficiency, a number of different operations may be performed on the data, which operations may involve both software and processing hardware components.

[0033] Следовательно, может потребоваться совместное использование данных или иной обмен ими между программными компонентами, выполняющимися на ЦПУ, и/или ГПУ, и/или КПУ, и/или аппаратным компонентом, встроенным в микросхему, например матрицу FPGA. Соответственно, один или более из различных этапов в конвейере геномной и/или биоинформационной обработки или его части, могут быть выполнены одним устройством, например ЦПУ/ГПУ/КПУ, а один или более из различных этапов может быть выполнен жестко смонтированным устройством, например матрицей FPGA. В таком случае ЦПУ/ГПУ/КПУ и/или матрица FPGA могут быть связаны с возможностью обмена данными таким образом, чтобы обеспечивать возможность эффективной передачи таких данных, причем связывание может включать совместное использование ресурсов памяти. Чтобы достичь такого распределения задач и совместного использования информации для выполнения подобных задач различные ЦПУ/ГПУ/КПУ могут быть слабо или жестко связаны друг с другом и/или аппаратными устройствами, например FPGA или другим набором микросхем, например посредством межсоединения быстрого доступа.[0033] Therefore, it may be necessary to share or otherwise exchange data between software components running on the CPU and/or GPU and/or GPU and/or a hardware component embedded on a chip, such as an FPGA. Accordingly, one or more of the various steps in a genomic and/or bioinformatics processing pipeline, or part thereof, may be performed by a single device, such as a CPU/GPU/CPU, and one or more of the various stages may be performed by a hard-wired device, such as an FPGA . In such a case, the CPU/GPU/CPU and/or FPGA may be coupled to communicate in a manner that allows such data to be transferred efficiently, which coupling may include sharing memory resources. To achieve such distribution of tasks and sharing of information to perform such tasks, various CPUs/GPUs/CPUs may be loosely or tightly coupled to each other and/or hardware devices, such as an FPGA or other chipset, such as through a fast access interconnect.

[0034] В частности, в различных вариантах реализации предложена платформа геномного анализа. Например, платформа может включать в себя материнскую плату, память, множество интегральных и/или квантовых схем, таких как формирующие один или более из ЦПУ/ГПУ/КПУ, модуль картирования, модуль выравнивания, модуль сортировки и/или модуль определения вариантов. А именно, в конкретных вариантах реализации платформа может включать в себя первую интегральную и/или квантовую схему, такую как интегральная схема, формирующая центральное процессорное устройство (ЦПУ) или графическое процессорное устройство (ГПУ), или квантовая схема, формирующая квантовый процессор, которая реагирует на одну или более программ или другие алгоритмы, которые выполнены с возможностью выдачи ЦПУ/ГПУ/КПУ инструкции на выполнение одного или более наборов функций геномного анализа, как описано в настоящем документе, например, где ЦПУ/ГПУ/КПУ включает в себя первый набор физических электронных межсоединений для соединения с материнской платой. В различных случаях память может быть тоже присоединена к материнской плате и может быть также электронно соединена с ЦПУ/ГПУ/КПУ, например, посредством по меньшей мере части первого набора физических электронных межсоединений. В таких случаях память может быть выполнена с возможностью хранения множества ридов геномных данных, и/или по меньшей мере одной или более генетических референсных последовательностей, и/или индекса одной или более генетических референсных последовательностей.[0034] In particular, a genomic analysis platform is provided in various embodiments. For example, the platform may include a motherboard, memory, a plurality of integrated and/or quantum circuits such as forming one or more of a CPU/GPU/CPU, a mapping module, an alignment module, a sorting module, and/or a variant determination module. Namely, in specific embodiments, the platform may include a first integrated circuit and/or quantum circuit, such as an integrated circuit forming a central processing unit (CPU) or a graphics processing unit (GPU), or a quantum circuit forming a quantum processor that responds one or more programs or other algorithms that are configured to issue instructions to the CPU/GPU/CPU to perform one or more sets of genomic analysis functions as described herein, for example, where the CPU/GPU/CPU includes a first set of physical electronic interconnects for connection to the motherboard. In various cases, the memory may also be attached to the motherboard and may also be electronically coupled to the CPU/GPU/CPU, for example, through at least a portion of a first set of physical electronic interconnects. In such cases, the memory may be configured to store multiple reads of genomic data, and/or at least one or more genetic reference sequences, and/or an index of one or more genetic reference sequences.

[0035] Кроме того, платформа может включать в себя одну или более других интегральных схем, например, где каждая из других интегральных схем формирует программируемую пользователем вентильную матрицу (FPGA), имеющую второй набор физических электронных межсоединений для соединения с ЦПУ/ГПУ/КПУ и памятью, например посредством протокола двухточечного соединения. В таком случае, например, когда интегральная схема представляет собой матрицу FPGA, матрица FPGA может быть выполнена с возможностью программирования с помощью прошивки для конфигурирования набора жестко смонтированных цифровых логических схем, которые взаимно соединены множеством физических межсоединений, для выполнения второго набора функций геномного анализа, например, картирования, выравнивания, определения вариантов и т.д. В частности, жестко смонтированные цифровые логические схемы матрицы FPGA могут быть выполнены в виде набора движков обработки для осуществления одного или более предварительно сконфигурированных этапов в конвейере анализа последовательностей геномного анализа, например, где наборы движков обработки включают в себя один или более из модулей картирования, и/или выравнивания, и/или определения вариантов, причем модули могут быть сформированы из отдельных или одних и тех же подмножеств движков обработки.[0035] In addition, the platform may include one or more other integrated circuits, for example, where each of the other integrated circuits forms a field programmable gate array (FPGA) having a second set of physical electronic interconnects for connection to the CPU/GPU/CPU and memory, for example via a point-to-point protocol. In such a case, for example, where the integrated circuit is an FPGA array, the FPGA array may be programmable via firmware to configure a set of hard-wired digital logic circuits that are interconnected by a plurality of physical interconnects to perform a second set of genomic analysis functions, e.g. , mapping, leveling, identifying options, etc. In particular, the hard-wired digital logic circuits of the FPGA may be implemented as a set of processing engines for implementing one or more preconfigured steps in a genomic analysis sequence analysis pipeline, for example, where the sets of processing engines include one or more mapping modules, and /or alignment, and/or definition of variants, and modules can be formed from separate or the same subsets of processing engines.

[0036] Как было указано, система может быть выполнена с возможностью включения в себя одного или более движков обработки, и в различных вариантах реализации включенный движок обработки может сам может быть выполнен с возможностью определения одной или более вероятностей перехода для последовательности нуклеотидов рида геномной последовательности, переходящей из одного состояния в другое, например, из состояния совпадения в состояние индел, или из состояния совпадения в состояние делеции и/или обратно, например из состояния инсерции или делеции обратно в состояние совпадения. Кроме того, в различных случаях интегральная схема может иметь конвейерную конфигурацию и/или может включать в себя второе, и/или третье, и/или четвертое подмножество жестко смонтированных цифровых логических схем, например включающих второй набор движков обработки, где второй набор движков обработки содержит модуль картирования, выполненный с возможностью картирования рида геномной последовательности на референсную последовательность гаплотипа для создания картированного рида. Также может быть включено третье подмножество жестко смонтированных цифровых логических схем, например, где третий набор движков обработки содержит модуль выравнивания, выполненный с возможностью выравнивания картированного рида на одну или более позиций в референсной последовательности гаплотипа. Также может быть дополнительно включено четвертое подмножество жестко смонтированных цифровых логических схем, например где четвертый набор движков обработки содержит модуль сортировки, выполненный с возможностью сортировки картированного и/или выровненного рида по его относительным положениям в хромосоме. Как и выше, в различных подобных случаях модуль картирования, и/или модуль выравнивания, и/или модуль сортировки, например, вместе с модулем определения вариантов, может быть физически встроен в плату расширения. И в определенных вариантах реализации плата расширения может быть физически объединена с генетическим секвенатором, таким как секвенатор нового поколения и т.п.[0036] As noted, the system may be configured to include one or more processing engines, and in various embodiments, the included processing engine may itself be configured to determine one or more transition probabilities for a nucleotide sequence of a genomic sequence read, moving from one state to another, for example, from a match state to an indel state, or from a match state to a deletion state and/or vice versa, for example, from an insertion or deletion state back to a match state. Additionally, in various instances, the integrated circuit may have a pipelined configuration and/or may include a second and/or third and/or fourth subset of hard-wired digital logic circuits, such as including a second set of processing engines, wherein the second set of processing engines comprises a mapping module configured to map a genomic sequence read to a haplotype reference sequence to create a mapped read. A third subset of hard-wired digital logic circuits may also be included, for example, where the third set of processing engines comprises an alignment module configured to align the mapped read to one or more positions in a haplotype reference sequence. A fourth set of hard-wired digital logic circuits may also be further included, for example where the fourth set of processing engines comprises a sorting module configured to sort the mapped and/or aligned read by its relative positions in the chromosome. As above, in various similar cases, the mapping module and/or the alignment module and/or the sorting module, for example, together with the variant determination module, can be physically built into the expansion card. And in certain embodiments, the expansion card may be physically integrated with a genetic sequencer, such as a next generation sequencer or the like.

[0037] Соответственно, согласно одному аспекту предложено устройство для выполнения одного или более этапов конвейера анализа последовательности, например на генетических данных, где генетические данные содержат одну или более генетических референсных последовательностей, таких как последовательность гаплотипа или гипотетического гаплотипа, индекс одной или более генетических референсных последовательностей и/или множество ридов, например генетических и/или геномных данных, причем данные могут храниться в одном или более совместно используемых запоминающих устройств, и/или могут быть обработанными с помощью ресурса распределенной обработки, такого как ЦПУ/ГПУ/КПУ и/или FGPA, которые связаны, например, жестко или слабо, вместе. Таким образом, в различных случаях устройство может содержать интегральную схему, где интегральная схема может содержать одну или более (например, набор) жестко смонтированных цифровых логических схем, причем набор жестко смонтированных цифровых логических схем может быть взаимно соединен, например посредством одного или множества физических электрических межсоединений.[0037] Accordingly, according to one aspect, an apparatus is provided for performing one or more stages of a sequence analysis pipeline, for example on genetic data, where the genetic data comprises one or more genetic reference sequences, such as a haplotype or hypothetical haplotype sequence, an index of one or more genetic reference sequences sequences and/or multiple reads, such as genetic and/or genomic data, wherein the data may be stored in one or more shared storage devices, and/or may be processed by a distributed processing resource such as a CPU/GPU/CPU and/or FGPAs that are connected, for example, tightly or loosely, together. Thus, in various instances, a device may comprise an integrated circuit, wherein the integrated circuit may comprise one or more (e.g., a set) of hard-wired digital logic circuits, wherein the set of hard-wired digital logic circuits may be interconnected, for example, by one or a plurality of physical electrical interconnections.

[0038] Соответственно, система может быть выполнена с возможностью включения в себя интегральной схемы, сформированной из одной или более цифровых логических схем, которые взаимно соединены множеством физических электрических межсоединений, причем одно или более из множества физических электрических межсоединений имеет один или более интерфейсов памяти и/или кэша для доступа интегральной схемы к памяти и/или хранящимся в ней данным и для извлечения их, например, с обеспечением когерентности кэша между ЦПУ/ГПУ/КПУ и связанной микросхемой, например матрицей FPGA. В различных случаях цифровые логические схемы могут включать в себя первое подмножество цифровых логических схема, например, где первое подмножество цифровых логических схем может быть выполнено в виде первого набора движков обработки, причем движок обработки может быть выполнен с возможностью доступа к данным, хранящимся в кэше и/или непосредственно или опосредованно соединенной памяти. Например, первый набор движков обработки может быть выполнен с возможностью осуществления одного или более этапов анализа картирования, и/или выравнивания, и/или сортировки, как описано выше, и/или анализа HMM на риде данных геномной последовательности и данных последовательности гаплотипа.[0038] Accordingly, the system may be configured to include an integrated circuit formed of one or more digital logic circuits that are interconnected by a plurality of physical electrical interconnections, wherein one or more of the plurality of physical electrical interconnections has one or more memory interfaces and /or a cache for the integrated circuit to access and retrieve memory and/or data stored therein, for example, providing cache coherence between the CPU/GPU/CPU and an associated chip, such as an FPGA. In various cases, the digital logic circuits may include a first subset of digital logic circuits, for example, where the first subset of digital logic circuits may be embodied as a first set of processing engines, wherein the processing engine may be configured to access data stored in a cache and /or directly or indirectly connected memory. For example, the first set of processing engines may be configured to perform one or more steps of mapping and/or alignment and/or sorting analysis, as described above, and/or HMM analysis on the genomic sequence data read and the haplotype sequence data.

[0039] Более конкретно, первый набор движков обработки может содержать модуль HMM, например, в первой конфигурации подмножества цифровых логических схем, который выполнен с возможностью доступа в памяти, например, через интерфейс памяти, по меньшей мере к некоторым из последовательности нуклеотидов в риде данных геномной последовательности и данных последовательности гаплотипа, и может быть также выполнен с возможностью выполнения анализа HMM на по меньшей мере некоторых из последовательности нуклеотидов в данных последовательности гаплотипа для создания результирующих данных HMM. Кроме того, одно или более из множества физических электрических межсоединений может включать в себя выход из интегральной цепи, например для передачи результирующих данных HMM из модуля HMM, например, в ЦПУ/ГПУ/КПУ или на сервер или кластер серверов.[0039] More specifically, the first set of processing engines may comprise an HMM module, for example, in a first configuration of a subset of digital logic circuits, that is configured to access in memory, for example through a memory interface, at least some of the nucleotide sequences in the data read. genomic sequence and haplotype sequence data, and may also be configured to perform an HMM analysis on at least some of the nucleotide sequence in the haplotype sequence data to generate the resulting HMM data. In addition, one or more of the plurality of physical electrical interconnections may include output from an integrated circuit, for example, to transfer resultant HMM data from the HMM, for example, to a CPU/GPU/CPU or to a server or server cluster.

[0040] Соответственно, согласно одному аспекту предложен способ осуществления конвейера анализа последовательностей, например на данных генетической последовательности. Генетические данные могут содержать одну или более генетических референсных последовательностей или последовательностей гаплотипа, один или более индексов одной или более генетических последовательностей и/или последовательностей гаплотипа, и/или множество ридов геномных данных. Способ может включать в себя одно или более из приема, получения доступа, картирования, выравнивания, сортировки различных итераций данных генетической последовательности и/или использования их результатов в способе создания одного или более файлов определения вариантов. Например, в определенных вариантах реализации способ может включать в себя прием на вход в интегральную схему из электронного источника данных одного или более из множества ридов геномных данных, где каждый рид геномных данных может содержать последовательность нуклеотидов.[0040] Accordingly, according to one aspect, a method is provided for implementing a sequence analysis pipeline, for example, on genetic sequence data. The genetic data may comprise one or more genetic reference sequences or haplotype sequences, one or more indices of one or more genetic sequences and/or haplotype sequences, and/or a plurality of genomic data reads. The method may include one or more of receiving, accessing, mapping, aligning, sorting various iterations of genetic sequence data and/or using the results thereof in a method for creating one or more variant definition files. For example, in certain embodiments, the method may include receiving as input into an integrated circuit from an electronic data source one or more of a plurality of genomic data reads, where each genomic data read may comprise a nucleotide sequence.

[0041] В различных случаях интегральная схема может быть образована из множества жестко смонтированных цифровых логических схем, которые могут быть выполнены в виде одного или более движков обработки. В таком случае движок обработки может быть сформирован из подмножества жестко смонтированных цифровых логических схем, которые могут быть в монтажной конфигурации. В таком случае движок обработки может быть выполнен с возможностью осуществления одного или более предварительно сконфигурированных этапов, например для реализации одного или более из приема, получения доступа, картирования, выравнивания, сортировки различных итераций данных генетической последовательности и/или использования их результатов в способе создания одного или более файлов определения вариантов. В некоторых вариантах реализации предложенные цифровые логические схемы могут быть взаимно связаны, например с помощью множества физических электрических межсоединений, которые могут включат в себя вход.[0041] In various cases, an integrated circuit may be formed from a plurality of hard-wired digital logic circuits, which may be implemented as one or more processing engines. In such a case, the processing engine may be formed from a subset of hard-wired digital logic circuits that may be in a wiring configuration. In such a case, the processing engine may be configured to perform one or more preconfigured steps, for example to implement one or more of receiving, accessing, mapping, aligning, sorting various iterations of genetic sequence data and/or using the results thereof in a method for creating one or more variant definition files. In some embodiments, the proposed digital logic circuits may be interconnected, such as through a plurality of physical electrical interconnections, which may include an input.

[0042] Способ может также включать в себя получение доступа интегральной схемой по одному или более из множества физических электрических соединений из памяти к данным для выполнения одной из операций, подробно описанных в настоящем документе. В различных случаях интегральная схема может быть частью набора микросхем, например, встроенной или иным образом входящей как часть в матрицу FPGA, ASIC или структурированную ASIC, а память может быть напрямую или опосредованно соединена с одной или обеими микросхемами и/или связанными с ними ЦПУ/ГПУ/КПУ. Например, память может быть множеством памятей, одна из которых соединена с микросхемой и ЦПУ/ГПУ/КПУ, который сам связан с микросхемой, например слабо.[0042] The method may also include having the integrated circuit access one or more of a plurality of physical electrical connections from memory to data to perform one of the operations described in detail herein. In various cases, the integrated circuit may be part of a chipset, such as embedded or otherwise included as part of an FPGA, ASIC, or structured ASIC, and the memory may be directly or indirectly coupled to one or both of the chips and/or associated CPUs. GPU/CPU. For example, the memory can be a plurality of memories, one of which is connected to the chip and the CPU/GPU/CPU, which is itself connected to the chip, for example loosely.

[0043] В других случаях память может быть одинарной памятью, которая может быть соединена с ЦПУ/ГПУ/КПУ, который сам жестко связан с матрицей FPGA посредством сильного межсоединения обработки или межсоединения быстрого доступа, например, QPI, и тем самым доступна для матрицы FPGA, например, с обеспечением когерентности кэша. Соответственно, интегральная схема может быть напрямую или опосредованно соединена с памятью, чтобы получать доступ к данным, имеющим отношение к выполнению функций, представленных в настоящем документе, например для получения доступа к одному или более из множества ридов, одной или более генетических референсных или теоретических референсных последовательностей и/или индексу одной или более генетических референсных последовательностей, например при выполнении операции картирования.[0043] In other cases, the memory may be a single memory that may be coupled to a CPU/GPU/CPU that is itself hardwired to the FPGA via a strong processing interconnect or a fast access interconnect, such as a QPI, and is thereby accessible to the FPGA , for example, ensuring cache coherence. Accordingly, the integrated circuit may be directly or indirectly coupled to memory to access data relevant to performing the functions provided herein, for example, to access one or more of a plurality of reads, one or more genetic references, or theoretical references. sequences and/or an index to one or more genetic reference sequences, for example when performing a mapping operation.

[0044] Поэтому в различных случаях реализации различных аспектов изобретения могут включать в себя, без ограничений: устройства, системы и способы, включающие один или более признаков, которые подробно описаны в настоящем документе, а также изделия, которые содержат материально воплощенный машиночитаемый носитель информации, выполненный с возможностью инициирования осуществления одной или более машинами (например, компьютерами и т.д.) операций, описанных в настоящем документе. Аналогичным образом также описаны компьютерные системы, которые могут содержать один или более процессоров и/или одну или более памятей, соединенных с одним или более процессорами. Соответственно, компьютеризованные способы, соответствующие одной или более реализациям текущего объекта изобретения, могут быть осуществлены одним или более процессорами данных, находящимися в одной вычислительной системе или множестве вычислительных системах, содержащих множество компьютеров, например в вычислительном или супервычислительном банке.[0044] Therefore, in various cases, implementations of various aspects of the invention may include, without limitation: devices, systems and methods including one or more of the features that are described in detail herein, as well as articles that include a tangibly embodied computer-readable storage medium, configured to cause one or more machines (eg, computers, etc.) to perform the operations described herein. Likewise, computer systems are also described that may include one or more processors and/or one or more memories coupled to one or more processors. Accordingly, computerized methods consistent with one or more implementations of the current subject matter may be implemented by one or more data processors located on a single computing system or multiple computing systems comprising multiple computers, such as a computing or supercomputing bank.

[0045] Такие множественные вычислительные системы могут быть соединены и могут обмениваться данными и/или командами либо другими инструкциями и т.п. посредством одного или более соединений, включая, без ограничений, соединение по сети (например, Интернет, беспроводная глобальная сеть, локальная сеть, глобальная сеть, проводная сеть, физическое электрическое межсоединение и т.п.), через прямое соединение между одной или более множественными вычислительными сетями и т.д. Память, которая может быть машиночитаемым носителем информации, может содержать, кодировать, хранить и т.п. одну или более программ, которые вызывают выполнение одним или более процессорами одной или более операций, связанных с одним или более алгоритмами, описанными в настоящем документе.[0045] Such multiple computing systems may be connected and may exchange data and/or commands or other instructions and the like. through one or more connections, including, without limitation, a connection over a network (e.g., the Internet, wireless wide area network, local area network, wide area network, wired network, physical electrical interconnection, etc.), through a direct connection between one or more multiple computer networks, etc. The memory, which may be a computer-readable storage medium, may contain, encode, store, or the like. one or more programs that cause one or more processors to perform one or more operations associated with one or more algorithms described herein.

[0046] Подробные сведения об одном или более вариантах объекта изобретения, описанного в настоящем документе, изложены на прилагаемых чертежах и в описании, приведенном ниже. Другие признаки и преимущества объекта изобретения, описанного в настоящем документе, будут очевидны из описания и чертежей и формулы изобретения. Хотя определенные признаки раскрытого в настоящее время объекта изобретения описаны в целях иллюстрации в связи с программной системой ресурсов предприятия или иным коммерческим программным решением или архитектурой, совершенно ясно, что такие признаки не предназначены для ограничения. Формула изобретения, которая следует за данным описанием, предназначена для определения объема защищенного объекта изобретения.[0046] Details of one or more embodiments of the subject matter described herein are set forth in the accompanying drawings and in the description that follows. Other features and advantages of the subject matter described herein will be apparent from the description and drawings and claims. Although certain features of the presently disclosed subject matter are described for purposes of illustration in connection with an enterprise resource software system or other commercial software solution or architecture, it is understood that such features are not intended to be limiting. The claims that follow this description are intended to define the scope of the protected subject matter of the invention.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

[0047] Прилагаемые чертежи, которые включены в данное описание изобретения и являются его частью, показывают определенные аспекты объекта изобретения, раскрытого в настоящем документе, и, вместе с описанием, помогают объяснять некоторые из принципов, связанных с описанными реализациями.[0047] The accompanying drawings, which are included in and form a part of this specification, show certain aspects of the subject matter disclosed herein and, together with the description, help explain some of the principles associated with the described implementations.

[0048] На ФИГ. 1A изображена платформа секвенирования с множеством генетических образцов на ней, а также изображено множество примеров плиток, как и трехмерное представление секвенированных ридов.[0048] In FIG. 1A depicts a sequencing platform with multiple genetic samples on it, and also depicts multiple example tiles as well as a 3D representation of the sequenced reads.

[0049] На ФИГ. 1B изображено представление проточной кюветы с представленными различными полосами.[0049] In FIG. 1B shows a representation of a flow cell with various bands represented.

[0050] На ФИГ. 1C изображен нижний угол платформы проточной кюветы, приведенной на ФИГ. 1B, показывающий группу секвенированных ридов.[0050] In FIG. 1C depicts the bottom corner of the flow cell platform shown in FIG. 1B showing a panel of sequenced reads.

[0051] На ФИГ. 1D изображен виртуальный массив результатов секвенирования, выполненного на ридах, приведенных на ФИГ. 1 и 2, где риды указаны в выходном столбце в порядке столбцов.[0051] In FIG. 1D shows a virtual array of sequencing results performed on the reads shown in FIG. 1 and 2, where the reads are listed in the output column in column order.

[0052] На ФИГ. 1E изображен способ, с помощью которого можно осуществлять транспозицию итоговых ридов из столбцов в порядке столбцов в ряды в порядке рядов.[0052] In FIG. 1E depicts a method by which the resulting reads can be transposed from columns in column order to rows in row order.

[0053] На ФИГ. 1F изображена транспозиция итоговых ридов из столбцов в порядке столбцов в ряд в порядке рядов.[0053] In FIG. Figure 1F depicts the transposition of the resulting reads from columns in column order to row in row order.

[0054] На ФИГ. 1G изображены компоненты системы для выполнения транспозиции.[0054] In FIG. 1G shows the components of the system for performing transposition.

[0055] На ФИГ. 1H изображен порядок транспозиции.[0055] In FIG. 1H shows the order of transposition.

[0056] На ФИГ. 1I изображена архитектура для электронной транспозиции секвенированных данных.[0056] In FIG. 1I depicts an architecture for electronic transposition of sequenced data.

[0057] На ФИГ. 2 изображена основанная на 3 состояниях модель HMM, иллюстрирующая вероятности транспозиции перехода из одного состояния в другое.[0057] In FIG. Figure 2 depicts a 3-state HMM model illustrating the transposition probabilities of a transition from one state to another.

[0058] На ФИГ. 3A изображено высокоуровневое представление интегральной схемы по изобретению, включающей в себя структуру интерфейса HMM.[0058] In FIG. 3A depicts a high-level view of an integrated circuit of the invention including an HMM interface structure.

[0059] На ФИГ. 3B изображена интегральная схема, приведенная на ФИГ. 3A, более подробно показывающая особенности кластера HMM.[0059] In FIG. 3B illustrates the integrated circuit shown in FIG. 3A showing the features of the HMM cluster in more detail.

[0060] На ФИГ. 4 изображен обзор потока относящихся к HMM данных через систему, включая программные и аппаратные соединения.[0060] In FIG. 4 shows an overview of the flow of HMM-related data through the system, including software and hardware connections.

[0061] На ФИГ. 5 изображен пример соединений манжеты кластера HMM.[0061] In FIG. Figure 5 shows an example of the cuff connections of an HMM cluster.

[0062] На ФИГ. 6 изображено высокоуровневое представление основных функциональных блоков в пределах примера аппаратного ускорителя HMM.[0062] In FIG. 6 depicts a high-level view of the main functional blocks within an example HMM hardware accelerator.

[0063] На ФИГ. 7 изображен пример структуры матрицы HMM и потока аппаратной обработки.[0063] In FIG. Figure 7 shows an example of the HMM matrix structure and hardware processing flow.

[0064] На ФИГ. 8 изображен увеличенный вид части ФИГ. 2, показывающий поток данных и зависимости между соседними ячейками при вычислениях состояния M, I и D HMM в пределах матрицы.[0064] In FIG. 8 is an enlarged view of a portion of FIG. 2, showing the data flow and dependencies between neighboring cells when calculating the M, I and D state of an HMM within a matrix.

[0065] На ФИГ. 9 изображены примеры вычислений, полезных для обновлений состояний M, I, D.[0065] In FIG. Figure 9 shows examples of calculations useful for updating the states of M, I, D.

[0066] На ФИГ. 10 изображены схемы обновления состояний M, I и D, в том числе влияние упрощенных допущений, показанных на ФИГ. 9, которые относятся к вероятностям перехода, и влияние совместного использования некоторых ресурсов сумматора M, I, D с заключительными операциями суммирования.[0066] In FIG. 10 depicts the M, I, and D state update schemes, including the effect of the simplified assumptions shown in FIG. 9, which relate to transition probabilities, and the impact of sharing some adder resources M, I, D with the final adder operations.

[0067] На ФИГ. 11 изображены подробности вычисления состояний M, I, D логарифмической области.[0067] In FIG. 11 shows the details of calculating the states M, I, D of the logarithmic region.

[0068] На ФИГ. 12 изображена диаграмма переходов состояний HMM, показывающая взаимосвязь между GOP, GCP и вероятностями перехода.[0068] In FIG. 12 is a HMM state transition diagram showing the relationship between GOP, GCP and transition probabilities.

[0069] На ФИГ. 13 изображена схема формирования вероятностей перехода HMM и значений Prior для поддержки общей диаграммы переходов состояний, приведенной на ФИГ. 12.[0069] In FIG. 13 depicts a diagram for generating HMM transition probabilities and Prior values to support the general state transition diagram shown in FIG. 12.

[0070] На ФИГ. 14 изображена упрощенная диаграмма переходов состояний HMM, показывающая взаимосвязь между GOP, GCP и вероятностями перехода.[0070] In FIG. 14 is a simplified HMM state transition diagram showing the relationship between GOP, GCP, and transition probabilities.

[0071] На ФИГ. 15 изображена схема формирования вероятностей перехода HMM и значений Prior для поддержки упрощенной диаграммы перехода состояний.[0071] In FIG. Figure 15 shows a diagram for generating HMM transition probabilities and Prior values to support a simplified state transition diagram.

[0072] На ФИГ. 16 изображен пример теоретической матрицы HMM и показано, как можно пройти такую матриц HMM.[0072] In FIG. Figure 16 depicts an example of a theoretical HMM matrix and shows how such an HMM matrix can be traversed.

[0073] На ФИГ. 17A представлен способ выполнения процедуры предварительной обработки совместного обнаружения в множестве областей.[0073] In FIG. 17A illustrates a method for performing a multi-area joint detection pre-processing procedure.

[0074] На ФИГ. 17B представлен пример способа вычисления матрицы связности, такой как в процедуре предварительной обработки, показанной на ФИГ. 17A.[0074] In FIG. 17B illustrates an example of a method for calculating a connectivity matrix such as the preprocessing procedure shown in FIG. 17A.

[0075] На ФИГ. 18A изображен пример события между двумя гомологичными секвенированными областями в скоплении ридов.[0075] In FIG. 18A depicts an example of an event between two homologous sequenced regions in a read pool.

[0076] На ФИГ. 18B изображены построенные риды, приведенные на ФИГ. 18A, обозначающие разницу между двумя последовательностями.[0076] In FIG. 18B depicts the constructed reads shown in FIG. 18A, indicating the difference between the two sequences.

[0077] На ФИГ. 18C изображены различные пузыри графа де Брейна, которые могут быть использованы при выполнении ускоренной операции определения вариантов.[0077] In FIG. 18C depicts various de Bruijn graph bubbles that can be used when performing a fast variant determination operation.

[0078] На ФИГ. 18D изображено представление функции обрезания дерева, как описано в настоящем документе.[0078] In FIG. 18D is a representation of a tree trimming function as described herein.

[0079] На ФИГ. 18E изображен один из пузырей, приведенных на ФИГ. 18C.[0079] In FIG. 18E shows one of the bubbles shown in FIG. 18C.

[0080] На ФИГ. 19 приведено графическое представление примера скопления, относящегося к матрице, показанной на ФИГ. 17.[0080] In FIG. 19 is a graphical representation of an example of a cluster related to the matrix shown in FIG. 17.

[0081] На ФИГ. 20 приведена матрица обработки для выполнения процедуры предварительной обработки, представленной на ФИГ. 17A и B.[0081] In FIG. 20 is a processing matrix for performing the preprocessing procedure shown in FIG. 17A and B.

[0082] На ФИГ. 21 приведен пример образования пузыря в графе де Брейна в соответствии со способами, показанными на ФИГ. 20.[0082] In FIG. 21 shows an example of the formation of a bubble in the de Bruijn graph in accordance with the methods shown in FIG. 20.

[0083] На ФИГ. 22 приведен пример пути варианта через иллюстративный графа де Брейна.[0083] In FIG. Figure 22 shows an example of a variant path through an illustrative de Bruijn graph.

[0084] На ФИГ. 23 приведено графическое представление примера функции сортировки.[0084] In FIG. Figure 23 is a graphical representation of an example sort function.

[0085] На ФИГ. 24 приведен другой пример матрицы обработки для обрезанной процедуры совместного обнаружения в множестве областей.[0085] In FIG. 24 shows another example of a processing matrix for a pruned multi-region joint detection procedure.

[0086] На ФИГ. 25 показано совместное скопление парных ридов для двух областей.[0086] In FIG. Figure 25 shows the joint accumulation of paired reads for two regions.

[0087] На ФИГ. 26 приведена таблица вероятности в соответствии с описанием в настоящем документе.[0087] In FIG. 26 is a probability table as described herein.

[0088] На ФИГ. 27 приведен другой пример матрицы обработки для процедуры совместного обнаружения в множестве областей.[0088] In FIG. 27 shows another example of a processing matrix for a multi-area joint detection procedure.

[0089] На ФИГ. 28 представлен выбор решений-кандидатов для совместного скопления, показанной на ФИГ. 25.[0089] In FIG. 28 shows a selection of candidate solutions for the joint cluster shown in FIG. 25.

[0090] На ФИГ. 29 представлен другой выбор решений-кандидатов для скопления, показанного на ФИГ. 28, после того, как выполнена функция обрезания.[0090] In FIG. 29 shows another selection of candidate solutions for the cluster shown in FIG. 28, after the trimming function is performed.

[0091] На ФИГ. 30 представленные окончательные решения-кандидаты, показаны на ФИГ. 28, и их соответствующие вероятности после выполнения функции MRJD.[0091] In FIG. The 30 final candidate solutions presented are shown in FIG. 28, and their corresponding probabilities after executing the MRJD function.

[0092] На ФИГ. 31 показаны кривые РХП для MRJD и обычного детектора.[0092] In FIG. Figure 31 shows the ROC curves for the MRJD and the conventional detector.

[0093] На ФИГ. 32 показаны те же самые результаты, что и на ФИГ. 3, отображаемые в виде функции от подобия последовательности референсов.[0093] In FIG. 32 shows the same results as FIG. 3, displayed as a function of the similarity of the reference sequence.

[0094] На ФИГ. 33A изображен пример архитектуры, иллюстрирующий слабое связывание между ЦПУ и матрицей FPGA по данному изобретению.[0094] In FIG. 33A is an architectural example illustrating loose coupling between a CPU and an FPGA according to the present invention.

[0095] На ФИГ. 33В изображен пример архитектуры, иллюстрирующий жесткое связывание между ЦПУ и матрицей FPGA по данному изобретению.[0095] In FIG. 33B is an architectural example illustrating hard coupling between the CPU and the FPGA of the present invention.

[0096] На ФИГ. 34A изображено слабое связывание между ЦПУ и FPGA по данному изобретению.[0096] In FIG. 34A illustrates loose coupling between a CPU and an FPGA according to the present invention.

[0097] На ФИГ. 34B изображен альтернативный вариант реализации прямого связывания между ЦПУ и матрицей FPGA, приведенного на ФИГ. 34A.[0097] In FIG. 34B depicts an alternative embodiment of the direct communication between the CPU and the FPGA shown in FIG. 34A.

[0098] На ФИГ. 35 изображен альтернативный вариант реализации корпуса объединенных ЦПУ и матрицы FPFA, где эти два устройства совместно используют общую память и/или кэш.[0098] In FIG. 35 depicts an alternative implementation of a combined CPU and FPFA package, where the two devices share a common memory and/or cache.

[0099] На ФИГ. 36 показано ядро ЦПУ, совместно использующих одну или более памятей и/или кэшей, причем ЦПУ выполнены с возможностью обмена данными с одной или более матрицами FPGA, которые могут также включать в себя совместно используемую или общую память или кэши.[0099] In FIG. 36 shows a CPU core sharing one or more memories and/or caches, the CPUs being configured to communicate with one or more FPGAs, which may also include shared or shared memories or caches.

[00100] На ФИГ. 37 показан пример способа передачи данных по всей системе.[00100] In FIG. Figure 37 shows an example of how data is transferred throughout the system.

[00101] На ФИГ. 38 более подробно изображен вариант реализации, приведенный на ФИГ. 36.[00101] In FIG. 38 shows in more detail the embodiment shown in FIG. 36.

[00102] На ФИГ. 39 изображен пример способа обработки одного или более заданий системы по настоящему изобретению.[00102] In FIG. 39 illustrates an example of a method for processing one or more jobs of the system of the present invention.

[00103] На ФИГ. 40A изображена блок-схема для геномной инфраструктуры местной или облачной геномной обработки и анализа.[00103] In FIG. 40A depicts a block diagram for a genomic infrastructure for local or cloud-based genomic processing and analysis.

[00104] На ФИГ. 40B изображена блок-схема облачной платформы геномной обработки для выполнения BioIT-анализа, описанного в настоящем документе.[00104] In FIG. 40B depicts a block diagram of a cloud-based genomic processing platform for performing the BioIT analysis described herein.

[00105] На ФИГ. 40C изображена блок-схема примера конвейера геномной обработки и анализа.[00105] In FIG. 40C depicts a block diagram of an example genomic processing and analysis pipeline.

[00106] На ФИГ. 40D изображена блок-схема примера конвейера геномной обработки и анализа.[00106] In FIG. 40D depicts a block diagram of an example genomic processing and analysis pipeline.

[00107] На ФИГ. 41A изображена блок-схема местной и/или облачной вычислительной функции, приведенной на ФИГ. 40A, для геномной инфраструктуры локальной или облачной геномной обработки и анализа.[00107] In FIG. 41A is a block diagram of the local and/or cloud computing function shown in FIG. 40A, for genomic infrastructure for local or cloud-based genomic processing and analysis.

[00108] На ФИГ. 41B более подробно изображена блок-схема, приведенная на ФИГ. 41A, в части, касающейся вычислительной функции для геномной инфраструктуры локальной или облачной геномной обработки и анализа.[00108] In FIG. 41B illustrates in more detail the block diagram shown in FIG. 41A, as it relates to the computing function for genomic infrastructure for local or cloud-based genomic processing and analysis.

[00109] На ФИГ. 41C более подробно изображена блок-схема, приведенная на ФИГ. 40, в части, касающейся сторонней функции аналитики для геномной инфраструктуры локальной или облачной геномной обработки и анализа.[00109] In FIG. 41C illustrates in more detail the block diagram shown in FIG. 40, as it relates to third-party analytics functionality for genomic infrastructure for on-premises or cloud-based genomic processing and analysis.

[00110] На ФИГ. 42A изображена блок-схема, иллюстрирующая конфигурацию гибридного облака.[00110] In FIG. 42A is a block diagram illustrating a hybrid cloud configuration.

[00111] На ФИГ. 42B более подробно изображена блок-схема, приведенная на ФИГ. 42A, которая иллюстрирует конфигурацию гибридного облака.[00111] In FIG. 42B illustrates in more detail the block diagram shown in FIG. 42A, which illustrates a hybrid cloud configuration.

[00112] На ФИГ. 42C более подробно изображена блок-схема, приведенная на ФИГ. 42A, которая иллюстрирует конфигурацию гибридного облака.[00112] In FIG. 42C illustrates in more detail the block diagram shown in FIG. 42A, which illustrates a hybrid cloud configuration.

[00113] На ФИГ. 43A изображена блок-схема, иллюстрирующая конвейер первичной, вторичной и/или третичной обработки, который представлен в настоящем документе.[00113] In FIG. 43A is a block diagram illustrating the primary, secondary and/or tertiary processing pipeline that is presented herein.

[00114] На ФИГ. 43B приведен пример анализа эпигенетики третичной обработки для выполнения с помощью способов и устройств системы, описанной в настоящем документе.[00114] In FIG. 43B provides an example of a tertiary processing epigenetics analysis to be performed using the methods and apparatus of the system described herein.

[00115] На ФИГ. 43C приведен пример анализа метилирования третичной обработки для выполнения с помощью способов и устройств системы, описанной в настоящем документе.[00115] In FIG. 43C provides an example of a tertiary processing methylation assay to be performed using the methods and apparatus of the system described herein.

[00116] На ФИГ. 43D приведен пример анализа структурных вариантов третичной обработки для выполнения с помощью способов и устройств системы, описанной в настоящем документе.[00116] In FIG. 43D provides an example analysis of tertiary processing design options to be performed using the methods and apparatus of the system described herein.

[00117] На ФИГ. 43E приведен пример анализа третичной когортной обработки для выполнения с помощью способов и устройств системы, описанной в настоящем документе.[00117] In FIG. 43E provides an example of a tertiary cohort analysis to be performed using the methods and apparatus of the system described herein.

[00118] На ФИГ. 43F приведен пример анализа третичной обработки совместного генотипирования для выполнения с помощью способов и устройств системы, описанной в настоящем документе.[00118] In FIG. 43F provides an example of a tertiary co-genotyping processing analysis to be performed using the methods and apparatus of the system described herein.

[00119] На ФИГ. 44 изображена блок-схема конвейера анализа по изобретению.[00119] In FIG. 44 is a block diagram of an analysis pipeline according to the invention.

[00120] На ФИГ. 45 приведена блок-схема аппаратной архитектуры процессора в соответствии с реализацией изобретения.[00120] In FIG. 45 is a block diagram of a processor hardware architecture in accordance with an embodiment of the invention.

[00121] На ФИГ. 46 приведена блок-схема аппаратной архитектуры процессора в соответствии с другой реализацией.[00121] In FIG. 46 is a block diagram of a processor hardware architecture in accordance with another implementation.

[00122] На ФИГ. 47 приведена блок-схема аппаратной архитектуры процессора в соответствии с еще одной реализацией.[00122] In FIG. 47 is a block diagram of a processor hardware architecture in accordance with yet another implementation.

[00123] На ФИГ. 48 показан конвейер анализа генетических последовательностей.[00123] In FIG. Figure 48 shows the genetic sequence analysis pipeline.

[00124] На ФИГ. 49 показаны этапы обработки с использованием аппаратной платформы анализа генетической последовательности.[00124] In FIG. 49 shows the processing steps using the genetic sequence analysis hardware platform.

[00125] На ФИГ. 50A показано устройство в соответствии с реализацией изобретения.[00125] In FIG. 50A shows a device in accordance with an embodiment of the invention.

[00126] На ФИГ. 50B показано другое устройство в соответствии с реализацией изобретения.[00126] In FIG. 50B shows another device in accordance with an embodiment of the invention.

[00127] На ФИГ. 51 показана система геномной обработки в соответствии с реализацией.[00127] In FIG. 51 shows a genomic processing system according to an implementation.

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

[00128] Как в краткой форме изложено выше, настоящее изобретение относится к устройствам, системам и способам их использования при выполнении одного или более протоколов геномики и/или биоинформатики, таких как протокол картирования, выравнивания, сортировки и/или определения вариантов, на данных, формируемых посредством процедуры первичной обработки, например на данных генетической последовательности. Например, согласно различным аспектам устройства, системы и способы, предложенные в настоящем документе, выполнены с возможностью осуществления протоколов вторичного анализа генетических данных, таких как данные, сформированные секвенированием РНК и/или ДНК, например, с помощью секвенатора нового поколения (СНП). В конкретных вариантах реализации предусмотрены один или более конвейеров вторичной обработки для обработки данных генетической последовательности, например, где конвейеры и/или их отдельные элементы могут быть реализованы в программном обеспечении, аппаратном обеспечении или их сочетании с распределением и/или оптимизацией, чтобы обеспечивать превосходную чувствительность и улучшенную точность в более широком диапазоне данных, полученных из последовательности, по сравнению с доступным в настоящее время в данной области техники. Кроме того, как кратко изложено выше, настоящее изобретение относится к устройствам, системам и способам их использования при выполнении одного или более третичных протоколов геномики и/или биоинформатики, таких как протокол микроматричного анализа, протокол анализа генома, например, полногеномного анализа, протокол анализа генотипирования, протокол анализа экзома, протокол анализа эпигенома, протокол анализа метагенома, протокол анализа микробиома, протокол анализа генотипирования, включая совместное генотипирование, протоколы анализа вариантов, включая структурные варианты, соматические варианты, и GATK, а также протоколы секвенирования РНК и другие протоколы генетических анализов, например, на картированных, выровненных и/или других данных генетической последовательности, например использование одного или более файлов определения вариантов.[00128] As summarized above, the present invention relates to devices, systems and methods for using them in performing one or more genomics and/or bioinformatics protocols, such as a mapping, alignment, sorting and/or variant detection protocol, on data formed through a primary processing procedure, for example on genetic sequence data. For example, in various aspects, the devices, systems and methods provided herein are configured to implement protocols for secondary analysis of genetic data, such as data generated by RNA and/or DNA sequencing, for example, using a next generation sequencer (NGS). In particular embodiments, one or more secondary processing pipelines are provided for processing genetic sequence data, for example, where the pipelines and/or individual elements thereof may be implemented in software, hardware, or a combination thereof with distribution and/or optimization to provide superior sensitivity and improved accuracy over a wider range of sequence data than is currently available in the art. In addition, as summarized above, the present invention relates to devices, systems and methods for using them in performing one or more tertiary genomics and/or bioinformatics protocols, such as a microarray analysis protocol, a genome analysis protocol, e.g., a genome-wide analysis, a genotyping analysis protocol , exome analysis protocol, epigenome analysis protocol, metagenome analysis protocol, microbiome analysis protocol, genotyping analysis protocol including co-genotyping, variant analysis protocols including structural variants, somatic variants, and GATK, as well as RNA sequencing protocols and other genetic analysis protocols, for example, on mapped, aligned and/or other genetic sequence data, such as the use of one or more variant definition files.

[00129] Соответственно, в настоящем документе предложены технологии анализа с использованием программно и/или аппаратно, например, на основе микросхемы, ускоренной платформы для выполнения вторичного и/или третичного анализа данных секвенирования ДНК/РНК. Более конкретно, платформа, или конвейер, движков обработки, например в программно реализованной и/или жестко смонтированной конфигурации, которая специально выполнена с возможностью осуществления вторичного генетического анализа, например, картирования, выравнивания, сортировки и/или определения вариантов; и/или может быть специально выполнена с возможностью осуществления третичного генетического анализа, такого как микроматричный анализ, анализ генома, например, полногеномный анализ, анализ генотипирования, анализ экзома, анализ эпигенома, анализ метагенома, анализ микробиома, анализ генотипирования, включая анализ совместного генотипирования, анализ вариантов, включая анализ структурных вариантов и анализ GATK, а также анализ секвенирования РНК и другие генетические анализы, например, применительно к данным генетического секвенирования, которые могли быть сформированы в оптимизированном формате, обеспечивающем улучшение скорости обработки, которая на порядки величины быстрее стандартных конвейеров, реализованных исключительно в известном программном обеспечении. Кроме того, представленные в настоящем документе конвейеры обеспечивают более хорошую чувствительность и точность на широком диапазоне наборов данных, полученных из последовательности, такой как последовательности, полученные из нуклеиновых кислот или белков.[00129] Accordingly, analysis technologies are provided herein using a software and/or hardware, eg, chip-based, accelerated platform for performing secondary and/or tertiary analysis of DNA/RNA sequencing data. More specifically, a platform, or pipeline, of processing engines, for example in a software-implemented and/or hard-wired configuration, that is specifically configured to perform secondary genetic analysis, such as mapping, alignment, sorting and/or variant detection; and/or may be specifically configured to perform tertiary genetic analysis, such as microarray analysis, genome analysis, e.g. whole genome analysis, genotyping analysis, exome analysis, epigenome analysis, metagenome analysis, microbiome analysis, genotyping analysis, including co-genotyping analysis, variant analysis, including structural variant analysis and GATK analysis, as well as RNA sequencing analysis and other genetic analyses, for example, in relation to genetic sequencing data that may have been generated in an optimized format providing improved processing speeds that are orders of magnitude faster than standard pipelines, implemented exclusively in well-known software. In addition, the pipelines presented herein provide better sensitivity and accuracy on a wide range of sequence-derived datasets, such as sequences derived from nucleic acids or proteins.

[00130] Как указано выше, в различных случаях цель обработки в биоинформатике состоит в определении отдельных геномов и/или белковых последовательностей людей, причем эти определения могут быть использованы в протоколах исследования генов, а также для профилактических и/или терапевтических режимов для улучшения жизнедеятельности каждого отдельного человека и человечества в целом. Кроме того, знание генома и/или комбинации белков индивида может быть использовано, например, в поиске новых лекарственных средств и/или испытаниях FDA для лучшего прогнозирования с учетом специфики, какие лекарственные средства, если они существуют, вероятно, будут воздействовать на индивида, и/или какие лекарственные средствам, вероятно, будут иметь вредные побочные эффекты, например путем анализа генома и/или полученного из него белкового профиля индивида и сравнения их с прогнозируемой биологической реакцией на введение такого лекарственного средства.[00130] As stated above, in various cases, the purpose of bioinformatics processing is to determine individual genomes and/or protein sequences of individuals, and these determinations can be used in gene research protocols, as well as for preventive and/or therapeutic regimens to improve the functioning of everyone individual and humanity as a whole. In addition, knowledge of an individual's genome and/or protein combination can be used, for example, in drug discovery and/or FDA trials to better predict, in a specific manner, which drugs, if any, are likely to affect the individual, and /or which drugs are likely to have harmful side effects, for example by analyzing the genome and/or the resulting protein profile of the individual and comparing them with the predicted biological response to administration of such drug.

[00131] Такая обработка в биоинформатике обычно предполагает три четко определенные, но, как правило, отдельные фазы обработки информации. Первая фаза, называемая первичной обработкой, включает в себя секвенирование ДНК/РНК, где получают ДНК и/или РНК субъекта и подвергают различным обработкам, с помощью которых генетический код субъекта преобразуют в машиночитаемый цифровой код, например в файл FASTQ. Вторая фаза, называемая вторичной обработкой, включает в себя использование сформированного цифрового генетического кода субъекта для определения генетического строения субъекта, например определения геномной нуклеотидной последовательности субъекта. И третья фаза, называемая третичной обработкой, включает в себя выполнение одного или более анализов генетического строения субъекта для определения из него информации, полезной в терапевтических целях.[00131] Such processing in bioinformatics typically involves three well-defined, but typically separate, phases of information processing. The first phase, called primary processing, involves DNA/RNA sequencing, where the subject's DNA and/or RNA is obtained and subjected to various treatments that convert the subject's genetic code into a machine-readable digital code, such as a FASTQ file. The second phase, called secondary processing, involves using the subject's generated digital genetic code to determine the subject's genetic makeup, such as determining the subject's genomic nucleotide sequence. And the third phase, called tertiary processing, involves performing one or more tests on the subject's genetic makeup to determine information from it that is useful for therapeutic purposes.

[00132] Соответственно, после того, как генетический код субъекта секвенирован, например, с помощью секвенатора нового поколения, чтобы получить машиночитаемое цифровое представление генетического кода субъекта, например, в формате файла FASTQ и/или BCL, возможно, будет полезна дальнейшая обработка кодированных в цифровом виде данных генетической последовательности, полученной из секвенатора и/или протокола секвенирования, например, путем применения вторичной обработки к представленным в цифровом виде данным. Эта вторичная обработка, например, может быть использована для картирования, и/или выравнивания, и/или сборки иным образом полногеномного и/или белкового профиля индивида, например, когда определяют полное генетическое строение, где последовательно определяют все до единого нуклеотиды всех без исключения хромосом так, чтобы идентифицировать состав всего генома индивида. При такой обработке геном индивида может быть собран, например, путем сравнения с референсным геномом, таким как референсный стандарт, например, с одним или более геномами, полученными из проекта генома человека и т.п., для определения того, как генетическое строение индивида отличается от генетического состава контрольных индивидов. Этот процесс обычно называют определением вариантов. Поскольку отличия между ДНК одного человека с другим встречаются 1 раз на 1000 пар оснований, такой процесс определения вариантов может быть весьма трудоемким и времязатратным, требующим множества этапов, которые, возможно, потребуется выполнять один за другим и/или одновременно, например, в конвейерном режиме, чтобы проанализировать геномные данные субъекта и определить, как эта генетическая последовательность отличается от данного референса.[00132] Accordingly, after a subject's genetic code has been sequenced, for example, using a next-generation sequencer, to obtain a machine-readable digital representation of the subject's genetic code, for example, in a FASTQ and/or BCL file format, further processing of the encoded in digital form of genetic sequence data obtained from a sequencer and/or sequencing protocol, for example, by applying secondary processing to the digitally represented data. This secondary processing, for example, can be used to map and/or align and/or otherwise assemble a whole genome and/or protein profile of an individual, for example when determining the entire genetic makeup, where every single nucleotide of each and every chromosome is determined sequentially so as to identify the composition of an individual's entire genome. In such processing, the genome of an individual can be assembled, for example, by comparison with a reference genome, such as a reference standard, for example, with one or more genomes obtained from the Human Genome Project, etc., to determine how the genetic makeup of the individual differs on the genetic composition of control individuals. This process is commonly referred to as option identification. Since DNA differences from one person to another occur once every 1000 base pairs, this process of identifying variants can be very labor-intensive and time-consuming, requiring many steps that may need to be performed one after another and/or simultaneously, for example, in a pipeline mode to analyze a subject's genomic data and determine how that genetic sequence differs from a given reference.

[00133] При выполнении конвейера вторичного анализа, такого как для формирования файла определения вариантов для данной исследуемой последовательности отдельного субъекта, от субъекта может быть получен генетический образец, например образец ДНК, РНК, белка. Затем ДНК/РНК субъекта может быть секвенрирована, например, с помощью секвенатора нового поколения (СНП) и/или технологии «секвенатор на микросхеме», например, на этапе первичной обработки, чтобы получить множество сегментов последовательности считывания («ридов»), охватывающее полностью или частично геном индивида, например с избыточностью. Конечный продукт, сформированный с помощью устройства для секвенирования, может представлять собой коллекцию коротких последовательностей, например ридов, которые представляют небольшие сегменты генома субъекта, например, короткие генетические последовательности, представляющие полный геном индивида. Как было указано, информация, представленная этими ридами, может быть файлом изображения или файлом в цифровом формате, таком как FASTQ, BCL или другой аналогичный файловый формат.[00133] When performing a secondary analysis pipeline, such as to generate a variant definition file for a given sequence of interest in an individual subject, a genetic sample, such as a DNA, RNA, protein sample, may be obtained from the subject. The subject's DNA/RNA may then be sequenced, for example using a next-generation sequencer (NGS) and/or sequencer-on-a-chip technology, for example in a front-end processing step, to produce multiple sequence reads covering the entire or part of an individual's genome, for example with redundancy. The final product generated by the sequencing device may be a collection of short sequences, such as reads, that represent small segments of a subject's genome, such as short genetic sequences that represent the entire genome of an individual. As stated, the information represented by these reads may be an image file or a file in a digital format such as FASTQ, BCL or other similar file format.

[00134] В частности, в типичном протоколе вторичной обработки генетическое строение субъекта собирают путем сравнения с референсным геномом. Это сравнение включает в себя реконструкцию генома индивида из миллионов и миллионов коротких последовательностей рида и/или сравнение всего ДНК индивида с примером модели последовательности ДНК, В типичном протоколе вторичной обработки из секвенатора принимают изображение, файл FASTQ и/или BCL, содержащие необработанные секвенированные данные рида. Чтобы сравнить геном субъекта со стандартным референсным геномом, необходимо определить, где каждое из этих ридов картируется на референсный геном, например, как каждый из них выравнивается относительно другого, и/или как каждый рид может быть также отсортирован по порядку хромосом, чтобы определить, в какой позиции находится каждый рид, и какой хромосоме он принадлежит. Одна или более из этих функций могут предшествовать выполнению функция определения вариантов на полноразмерной последовательности, например после сборки. А именно, после того, как определено, какой части генома принадлежит каждый рид, можно определить генетическую полноразмерную последовательность, а затем можно оценить различия между генетическим кодом субъекта и генетическим референсным кодом.[00134] Specifically, in a typical secondary processing protocol, the genetic makeup of a subject is collected by comparison to a reference genome. This comparison involves reconstructing an individual's genome from millions and millions of short read sequences and/or comparing the individual's entire DNA to an example DNA sequence model. In a typical secondary processing protocol, an image, a FASTQ file, and/or a BCL containing the raw sequenced read data is received from the sequencer . To compare a subject's genome to a standard reference genome, it is necessary to determine where each of these reads maps onto the reference genome, such as how each read aligns with the other, and/or how each read can also be sorted by chromosome order to determine what position each read is located in and which chromosome it belongs to. One or more of these functions may precede the execution of the variant determination function on the full-length sequence, for example after assembly. Namely, once it is determined which part of the genome each read belongs to, the full-length genetic sequence can be determined, and the differences between the subject's genetic code and the genetic reference code can then be assessed.

[00135] Например, основанная на референсе сборка в типичном протоколе сборки вторичной обработки включает в себя сравнение секвенированной геномной ДНК/РНК субъекта с секвенированной геномной ДНК/РНК одного или более стандартов, например, известных референсных последовательностей. В качестве помощи для ускорения этих процессов разработаны различные алгоритмы картирования, выравнивания, сортировки и/или определения вариантов. Поэтому данные алгоритмы могут включать в себя некоторый вариант одного или более из: картирования, выравнивания и/или сортировки миллионов ридов, полученных из изображения (файла FASTQ и/или BCL), которые переданы секвенатором, для определения местоположения каждого конкретного рида на каждой хромосоме. Следует отметить, что эти процессы могут быть реализованы в программном обеспечении или аппаратном обеспечении, например, с помощью способов и/или устройств, описанных в патентах США №№ 9,014,989 и 9,235,680, права на которые принадлежат компании Edico Genome Corporation, и которые полностью включены в настоящий документ путем ссылки. Часто общей особенностью функционирования этих различных алгоритмов и/или аппаратных реализаций является использование ими индекса и/или массива для ускорения их функции обработки.[00135] For example, reference-based assembly in a typical secondary processing assembly protocol involves comparing a subject's sequenced genomic DNA/RNA to the sequenced genomic DNA/RNA of one or more standards, such as known reference sequences. Various mapping, alignment, sorting and/or variant identification algorithms have been developed to help speed up these processes. Therefore, these algorithms may include some variation of one or more of: mapping, aligning, and/or sorting the millions of reads obtained from an image (FASTQ and/or BCL file) that are fed by the sequencer to determine the location of each specific read on each chromosome. It should be noted that these processes may be implemented in software or hardware, for example, using methods and/or devices described in US Patent Nos. 9,014,989 and 9,235,680, the rights to which are owned by Edico Genome Corporation, and which are incorporated in their entirety herein. this document by reference. Often a common feature in the operation of these various algorithms and/or hardware implementations is their use of an index and/or array to speed up their processing function.

[00136] Например, что касается картирования, большое количество секвенированных ридов (например, все) могут быть обработаны для определения возможных местоположений в референсном геноме, на который могли бы быть выровнены эти риды. Один из методов, который может быть использован в этих целях, заключается в прямом сравнении рида с референсным геномом, чтобы найти все позиции совпадения. Другой метод состоит в использовании массива префиксов или суффиксов или построении дерева префиксов или суффиксов с целью картирования ридов на различные позиции в референсном геноме. Типичным алгоритмом, полезным при выполнении такой функции, является преобразование Барроуза-Уилера, которое используют для картирования ридов на референс с помощью формулы сжатия, которая сжимает повторяющиеся последовательности данных.[00136] For example, with respect to mapping, a large number of sequenced reads (eg, all) can be processed to determine possible locations in the reference genome to which those reads could be aligned. One method that can be used for this purpose is to directly compare the read to a reference genome to find all match positions. Another method is to use a prefix or suffix array or construct a prefix or suffix tree to map reads to different positions in a reference genome. A typical algorithm useful in performing this function is the Burrows-Wheeler transform, which is used to map reads to a reference using a compression formula that compresses repeated sequences of data.

[00137] Еще один метод заключается в использовании хэш-таблицы, например, когда выбранное подмножество ридов, k-мер выбранной длины «k», например, затравку, помещают в хэш-таблицу в качестве ключей, а референсную последовательность разбивают на части, равные по длине k-меру, и эти части и их местоположения вставляют с помощью алгоритма в хэш-таблицу в те места таблицы, на которые они отображаются в соответствии с функцией хэширования. Типичным алгоритмом для выполнения этой функции является «BLAST», Basic Local Alignment Search Tool. Такие программы на основе хэш-таблицы сравнивают исследуемые нуклеотидные или белковые последовательности с одной или более баз данных стандартных референсных последовательностей и вычисляют статистическую значимость совпадений. Подобным образом можно определить вероятное местоположение любого данного рида относительно референсного генома. Эти алгоритмы полезны, поскольку они требуют меньше памяти, преобразований, таблиц перекодировки (LUT) и, следовательно, требуют меньше вычислительных ресурсов и времени при выполнении своих функций, чем было бы в ином случае, например, если бы геном субъекта собирали путем прямого сравнения, например без использования этих алгоритмов.[00137] Another method is to use a hash table, for example, where a selected subset of reads, k-mers of selected length "k", such as a seed, are placed in the hash table as keys, and the reference sequence is split into parts equal to is a k-measure in length, and these parts and their locations are inserted by an algorithm into the hash table at those places in the table to which they are mapped according to the hash function. A typical algorithm to perform this function is "BLAST", Basic Local Alignment Search Tool. Such hash table-based programs compare the nucleotide or protein sequences of interest to one or more standard reference sequence databases and calculate the statistical significance of the matches. In this way, the likely location of any given read relative to the reference genome can be determined. These algorithms are useful because they require less memory, transformations, lookup tables (LUTs), and therefore require less computational resources and time to perform their functions than would otherwise be the case, for example, if a subject's genome were assembled by direct comparison. for example, without using these algorithms.

[00138] Кроме того, может быть выполнена функция выравнивания для определения всех возможных местоположений картирования данного рида на геном, например в тех случаях, когда рид можно картировать на множество позиций в геноме, которые в действительности являются местоположением, из которого он был фактически получен, например путем секвенирования с этого места с помощью исходного протокола секвенирования. Эту функцию можно выполнить на ряде ридов (например, картированных ридов) генома и можно получить строку упорядоченных нуклеотидных оснований, представляющую частично или полностью геномную последовательность ДНК/РНК субъекта. Наряду с упорядоченной генетической последовательностью каждому нуклеотиду в данной позиции можно присвоить оценку, представляющую для любой данной нуклеотидной позиции вероятность того, что нуклеотид, например, «A», «C», «G», «T» (или «U»), предполагаемый в этой позиции, действительно является нуклеотидом, который принадлежит этой назначенной позиции. В число типичных алгоритмов для выполнения функция выравнивания входят алгоритмы Нидлмана-Вунша и Смита-Ватермана. В любом случае эти алгоритмы выполняют выравнивания последовательностей между строкой исследуемой геномной последовательности субъекта и строкой референсной геномной последовательности, тем самым вместо сравнения полногеномных последовательностей друг с другом сравнивают выбранные сегменты возможных длин.[00138] Additionally, an alignment function can be performed to determine all possible mapping locations of a given read onto the genome, for example in cases where a read can be mapped to multiple positions in the genome that are actually the location from which it was actually obtained. for example, by sequencing from that location using the original sequencing protocol. This function can be performed on a number of reads (eg, mapped reads) of the genome and can produce a string of ordered nucleotide bases representing part or all of the subject's genomic DNA/RNA sequence. Along with the ordered genetic sequence, each nucleotide at a given position can be assigned a score representing, for any given nucleotide position, the probability that the nucleotide, such as "A", "C", "G", "T" (or "U"), predicted at that position is actually the nucleotide that belongs to that designated position. Typical algorithms for performing the alignment function include the Needleman-Wunsch and Smith-Waterman algorithms. In either case, these algorithms perform sequence alignments between a subject's genomic sequence string and a reference genomic sequence string, thereby comparing selected segments of possible lengths instead of comparing whole-genome sequences to each other.

[00139] После того, как ридам назначены позиции, например, относительно референсного генома, что может включать в себя определение принадлежности рида конкретной хромосоме и/или его смещения от начала этой хромосомы, риды можно отсортировать по позиции. Это может позволить в последующих анализах использовать преимущества процедур с избыточной выборкой, описанных в настоящем документе. Все риды, которые перекрывают данную позицию в геноме, будут рядом друг с другом после сортировки и могут быть организованы в скопление (pileup) и без труда исследованы, чтобы определить, согласуются ли большинство из них с референсным значением или нет. Если нет, вариант можно отметить флагом.[00139] Once reads have been assigned positions, for example, relative to a reference genome, which may include determining whether the read belongs to a particular chromosome and/or its offset from the start of that chromosome, the reads can be sorted by position. This may allow subsequent analyzes to take advantage of the oversampling procedures described herein. All reads that overlap a given position in the genome will be adjacent to each other after sorting and can be organized into a pileup and easily examined to determine whether most of them agree with the reference value or not. If not, the option can be flagged.

[00140] Например, в различных вариантах реализации способы по настоящему изобретению могут включать в себя формирование файла определения вариантов (VCF), идентифицирующего один или более (например, все) генетические варианты у индивида, ДНК/РНК которого секвенировали, например, в соответствии с одним или более референсных геномов. Например, после того, как фактический геном образца известен и сравнен с референсным геномом, между этим двумя геномами можно определить вариации и составить список всех вариаций/отклонений между референсными геномами и геномом образца, например можно создать файл определения вариантов. В частности, согласно одному аспекту можно сформировать файл определения вариантов, содержащий все вариации генетической последовательности субъекта относительно референсных последовательностей.[00140] For example, in various embodiments, the methods of the present invention may include generating a variant definition file (VCF) identifying one or more (e.g., all) genetic variants in an individual whose DNA/RNA has been sequenced, for example, in accordance with one or more reference genomes. For example, once the actual genome of a sample is known and compared to a reference genome, variations between the two genomes can be determined and a list of all variations/deviations between the reference genomes and the sample genome can be generated, for example a variant definition file can be created. In particular, in one aspect, a variant definition file may be generated containing all variations in a subject's genetic sequence relative to reference sequences.

[00141] Как указано выше, такие вариации между двумя генетическими последовательностями могут быть обусловлены рядом причин. Следовательно, чтобы сформировать такой файл, геном субъекта необходимо секвенировать и снова построить, прежде чем определять его варианты. Однако существуют несколько проблем, которые могут возникнуть при попытке формирования такой сборки. Например, возможны проблемы с химией, секвенатором и/или человеческими ошибками, которые происходят в процессе секвенирования. Кроме того, возможны генетические артефакты, которые делают такую реконструкцию проблематичной. Например, типичной проблемой при выполнении таких сборок является то, что иногда имеются огромные части генома, которые повторяют сами себя, такие как длинные секции генома, которые включают в себя одни и те же строки нуклеотидов. Следовательно, так как любая генетическая последовательность уникальна не везде, возможны трудности с определением того, где в геноме картируется и выравнивается идентифицированный рид. Кроме того, возможен однонуклеотидный полиморфизм (ОНП), например там, где одно основание в генетической последовательности субъекта было заменено на другое; возможны более обширные замены множества нуклеотидов; возможны инсерция или делеция, например когда одно или множество оснований добавлены в генетическую последовательность субъекта или удалены из нее; и/или возможен структурный вариант, например такой, который вызван скрещиванием двух ножек хромосом, и/или возможно просто смещение, приводящее к сдвигу в последовательности.[00141] As stated above, such variations between two genetic sequences can be due to a number of reasons. Therefore, to generate such a file, the subject's genome must be sequenced and rebuilt before identifying its variants. However, there are several problems that may arise when attempting to form such an assembly. For example, there may be problems with the chemistry, the sequencer, and/or human errors that occur during the sequencing process. In addition, there may be genetic artifacts that make such reconstruction problematic. For example, a typical problem in performing such assemblies is that there are sometimes huge portions of the genome that repeat themselves, such as long sections of the genome that include the same strings of nucleotides. Consequently, since any genetic sequence is not unique everywhere, it may be difficult to determine where in the genome an identified read is mapped and aligned. In addition, single nucleotide polymorphisms (SNPs) are possible, for example where one base in a subject's genetic sequence has been replaced by another; more extensive substitutions of multiple nucleotides are possible; an insertion or deletion is possible, such as when one or more bases are added to or removed from a subject's genetic sequence; and/or there may be a structural variant, such as one caused by the crossing of two chromosome legs, and/or there may simply be a misalignment resulting in a shift in sequence.

[00142] Соответственно, для вариации существую две возможности. Во-первых, существует действительная вариация в данном конкретном месте, например, когда геном человека в конкретном месте действительно отличается от референса, например, имеется естественная вариация, обусловленная ОНП (заменой одного основания), инсерция или делеция (длиной в один или более нуклеотидов), и/или имеется структурный вариант, например, когда материал ДНК из одной хромосомы перекрещивает другую хромосому или ножку, или когда определенная область дважды встречается в ДНК. Или же вариация может быть вызвана наличием проблемы в данных рида, из-за химии или машины, секвенатора или выравнивателя, или иной человеческой ошибки. Способы, описанные в настоящем документе, могут быть использованы таким образом, чтобы компенсировать эти типы ошибок и, в частности, чтобы отличать ошибки в вариации, обусловленные химией, машинной или человеком, от реальных вариаций в секвенированном геноме. Точнее говоря, системы, устройства и способы их использования, описанные в настоящем документе, разработаны таким образом, чтобы четко различать эти два различных типа вариаций и, следовательно, лучше обеспечивать точность любых сформированных файлов вариантов, чтобы правильно выявлять истинные варианты.[00142] Accordingly, there are two possibilities for variation. First, there is actual variation at that particular location, for example, when the human genome at a particular location actually differs from the reference, for example, there is natural variation due to a SNP (single base substitution), insertion or deletion (one or more nucleotides long) , and/or there is a structural variant, such as when DNA material from one chromosome crosses over another chromosome or stem, or when a particular region occurs twice in the DNA. Or the variation may be caused by a problem in the read data, due to chemistry or machine, sequencer or aligner, or other human error. The methods described herein can be used to compensate for these types of errors and, in particular, to distinguish errors in variation due to chemistry, machine or human, from actual variation in the sequenced genome. More specifically, the systems, devices, and methods for using them described herein are designed to clearly distinguish between these two different types of variations and, therefore, to better ensure the accuracy of any generated variation files to correctly identify true variations.

[00143] Поэтому в конкретных вариантах реализации предложена платформа технологий для выполнения генетических анализов, где платформа может включать в себя выполнение одной или более из функций: картирования, выравнивания, сортировки, локального повторного выравнивания, маркировки дубликатов, перекалибровки оценки качества основания, определения вариантов, сжатия и/или распаковки. Например, в соответствии с различными аспектами может быть предусмотрен конвейер, который включает в себя выполнение одной или более аналитических функций, как описано в настоящем документе, на геномной последовательности одного или более индивидов, например, на данных, полученных в файле изображения и/или в цифровом файле формата FASTQ или BCL из автоматизированного секвенатора. Типичный конвейер, подлежащий выполнению, может включать в себя один или более секвернирований генетического материала, например, часть или весь геном, одного или более субъектов, причем генетический материал может содержать ДНК, оцДНК, РНК, рРНК, тРНК и т.п. и/или, в некоторых случаях, генетический материал может представлять кодируемые или некодируемые области, такие как экзомы и/или эписомы ДНК. Конвейер может включать в себя одно или более из выполнения процедуры обработки изображения, операции определения оснований и/или исправления ошибки, например, в оцифрованных генетических данных, и/или может включать в себя одно или более из выполнения функции картирования, выравнивания и/или сортировки на генетических данных. В определенных случаях конвейер может включать в себя выполнение одного или более из повторного выравнивания, удаления дубликатов, перекалибровки оценки качества основания, редукции и/или сжатия и/или распаковки на оцифрованных генетических данных. В определенных случаях конвейер может включать в себя выполнение операции определения вариантов, такой как скрытая марковская модель, на генетических данных.[00143] Therefore, specific embodiments provide a platform of technologies for performing genetic analyses, where the platform may include performing one or more of the functions of: mapping, alignment, sorting, local realignment, duplicate flagging, base quality assessment recalibration, variant detection, compression and/or decompression. For example, in accordance with various aspects, a pipeline may be provided that includes performing one or more analytical functions, as described herein, on the genomic sequence of one or more individuals, for example, on data obtained in an image file and/or digital file in FASTQ or BCL format from an automated sequencer. A typical pipeline to be performed may include one or more sequencing of genetic material, such as part or all of a genome, of one or more subjects, wherein the genetic material may comprise DNA, ssDNA, RNA, rRNA, tRNA, and the like. and/or, in some cases, the genetic material may represent encoded or non-encoded regions, such as exomes and/or episomes of DNA. The pipeline may include one or more of performing an image processing procedure, a base determination operation, and/or error correction, such as in digitized genetic data, and/or may include one or more of performing a mapping, alignment, and/or sorting function on genetic data. In certain cases, the pipeline may include performing one or more of realignment, deduplication, base quality assessment recalibration, reduction, and/or compression and/or decompression on the digitized genetic data. In certain cases, the pipeline may include running a variant detection operation, such as a Hidden Markov Model, on the genetic data.

[00144] Соответственно, в определенных случаях реализация одной или более из этих функций платформы предназначена для выполнения одного или более из определения и/или реконструкции консенсусной геномной последовательности субъекта, сравнения геномной последовательности субъекта с референсной последовательностью, например, референсной или модельной генетической последовательностью, определения того, каким образом геномная ДНК или РНК субъекта отличается от референсной, например, определения вариантов, и/или для выполнения третичного анализа на геномной последовательности субъекта, например, для анализа вариации по всему геному, функционального анализа генов, функционального анализа белков, например, анализа связывания белков, а также для различных анализов диагностической, и/или профилактической, и/или терапевтической оценки.[00144] Accordingly, in certain cases, an implementation of one or more of these platform functions is designed to perform one or more of determining and/or reconstructing a consensus genomic sequence of a subject, comparing the genomic sequence of the subject with a reference sequence, e.g., a reference or model genetic sequence, determining how a subject's genomic DNA or RNA differs from a reference, e.g., identifying variants, and/or to perform tertiary analysis on the subject's genomic sequence, e.g., genome-wide variation analysis, gene functional analysis, protein functional analysis, e.g. protein binding, as well as for various diagnostic and/or prophylactic and/or therapeutic evaluation assays.

[00145] Как указано выше, в соответствии с одним аспектом одна или более из этих функций платформы, например, функций картирования, выравнивания, сортировки, повторного выравнивания, маркировки дубликатов, перекалибровки оценки качества основания, определения вариантов, сжатия и/или распаковки, выполнены с возможностью реализации в программном обеспечении. В соответствии с некоторыми аспектами одна или более из этих функций платформы, например, функций картирования, выравнивания, сортировки, локального повторного выравнивания, маркировки дубликатов, перекалибровки оценки качества основания, распаковки, определения вариантов, сжатия и/или распаковки, выполнены с возможностью реализации в аппаратном обеспечении, например прошивке. В соответствии с определенными аспектами эти технологии генетического анализа могут использовать улучшенные алгоритмы, которые могут быть реализованы программным обеспечением, которое выполняется с менее интенсивной обработкой, и/или с меньшими временными затратами, и/или более высоким процентом точности, например, аппаратно реализованные функциональные возможности более быстрые, требуют менее интенсивной обработки и более точные.[00145] As stated above, in accordance with one aspect, one or more of these platform functions, e.g., mapping, alignment, sorting, re-alignment, duplicate marking, base quality assessment recalibration, variant detection, compression and/or decompression functions, are performed with the possibility of implementation in software. In accordance with some aspects, one or more of these platform functions, e.g., mapping, alignment, sorting, local realignment, duplicate marking, ground quality assessment recalibration, decompression, variant detection, compression, and/or decompression functions, are configured to be implemented in hardware, such as firmware. In accordance with certain aspects, these genetic analysis technologies may use improved algorithms that may be implemented in software that execute with less processing intensity and/or less time and/or a higher percentage of accuracy, such as hardware-implemented functionality faster, require less intensive processing and more accurate.

[00146] Например, в определенных вариантах реализации предусмотрены улучшенные алгоритмы для выполнения такой первичной, вторичной и/или третичной обработки, как описано в настоящем документе. Улучшенные алгоритмы направлены на более эффективное и/или более точное выполнение одной или более из функций картирования, выравнивания, сортировки и/или определения вариантов, например, на файле изображения и/или цифровом представлении данных последовательности ДНК/РНК, полученном с платформы секвенирования, например, в формате файла FASTQ или BCL, полученном из автоматизированного секвенатора, такого как один из описанных выше. В конкретных вариантах реализации улучшенные алгоритмы могут быть направлены на более эффективное и/или более точное выполнение одной или более из функций локального повторного выравнивания, маркировки дубликатов, перекалибровки оценки качества оснований, определения вариантов, сжатия и/или распаковки. Кроме того, как более подробно описано ниже в настоящем документе, в определенных вариантах реализации эти технологии генетического анализа могут использовать один или более алгоритмов, таких как улучшенные алгоритмы, которые могут быть реализованы с помощью одного или более из программного обеспечения и/или аппаратного обеспечения, которые выполняются с менее интенсивной обработкой, и/или с меньшими временными затратами, и/или более высоким процентом точности, чем различные традиционные программные реализации для выполнения того же самого. В различных случаях предусмотрены улучшенные алгоритмы для реализации на квантовой платформе обработки.[00146] For example, certain embodiments provide improved algorithms for performing such primary, secondary, and/or tertiary processing as described herein. Improved algorithms aim to more efficiently and/or more accurately perform one or more of the functions of mapping, alignment, sorting and/or variant detection, for example, on an image file and/or digital representation of DNA/RNA sequence data obtained from a sequencing platform, e.g. , in FASTQ or BCL file format obtained from an automated sequencer such as one described above. In specific embodiments, improved algorithms may be designed to more efficiently and/or more accurately perform one or more of the functions of local realignment, duplicate flagging, base quality score recalibration, variant detection, compression, and/or decompression. Additionally, as described in more detail below herein, in certain embodiments, these genetic analysis technologies may use one or more algorithms, such as enhanced algorithms, that may be implemented using one or more of software and/or hardware, which are performed with less processing intensity, and/or less time, and/or a higher percentage of accuracy than various traditional software implementations for doing the same. In various cases, improved algorithms are provided for implementation on a quantum processing platform.

[00147] Поэтому в соответствии с различными аспектами в настоящем документе предложены системы, устройства и способы для реализации протоколов биоинформатики, таких как для выполнения одной или более функций анализа генетических данных, таких как геномные данные, например, посредством одного или более оптимизированных алгоритмов и/или одной или более интегральных и/или квантовых схем, например на одной или более аппаратных платформах обработки. В одном случае предложены системы и способы для реализации одного или более алгоритмов, например, в программном обеспечении, и/или прошивке, и/или с помощью квантовой схемы обработки, для выполнения одного или более этапов анализа геномных данных в протоколах биоинформатики, например, когда этапы могут включать в себя выполнение одного или более из: картирования, выравнивания, сортировки, локального повторного выравнивания, маркировки дубликатов, перекалибровки оценки качества основания, определения вариантов, сжатия и/или распаковки; и могут также включать в себя один или более этапов на платформе третичной обработки. Соответственно, в определенных случаях в настоящем документе предложены способы, включающие в себя алгоритмы программной, программно-аппаратной, аппаратной и/или квантовой обработки для выполнения способов, где способы включают в себя выполнение алгоритма, такого как алгоритм для реализации одной или более функций генетического анализа, таких как картирование, выравнивание, сортировка, повторное выравнивание, маркировка дубликатов, перекалибровка оценки качества основания, определение вариантов, сжатие, распаковка, и/или одного или более протоколов третичной обработки, где алгоритм, например, включающий в себя прошивку, оптимизирован в соответствии со способом, которым он должен быть реализован.[00147] Therefore, in accordance with various aspects, systems, devices and methods are provided herein for implementing bioinformatics protocols, such as for performing one or more genetic data analysis functions, such as genomic data, for example, through one or more optimized algorithms and/ or one or more integrated and/or quantum circuits, for example on one or more hardware processing platforms. In one case, systems and methods are provided for implementing one or more algorithms, for example, in software and/or firmware, and/or using a quantum processing circuit, to perform one or more steps of analyzing genomic data in bioinformatics protocols, for example, when the steps may include performing one or more of: mapping, alignment, sorting, local realignment, duplicate labeling, ground quality assessment recalibration, variant identification, compression and/or decompression; and may also include one or more steps on a tertiary processing platform. Accordingly, in certain cases, methods are provided herein that include software, firmware, hardware, and/or quantum processing algorithms for performing the methods, where the methods include executing an algorithm, such as an algorithm for implementing one or more genetic analysis functions such as mapping, alignment, sorting, re-alignment, duplicate marking, base quality assessment recalibration, variant detection, compression, decompression, and/or one or more tertiary processing protocols, where the algorithm, for example including firmware, is optimized according with the way in which it should be implemented.

[00148] В частности, когда алгоритм должен быть реализован в программном решении, алгоритм и/или обслуживающие его процессы, оптимизированы таким образом, чтобы они работали быстрее и/или с более высокой точностью при выполнении этой средой. Аналогичным образом, когда функции алгоритма должны быть реализованы в аппаратном решении, например прошивке, аппаратное обеспечение разработано для выполнения этих функций и/или обслуживающих их процессов оптимальным образом, чтобы работать быстрее и/или с более высокой точностью при выполнении этой средой. Кроме того, когда алгоритм должен быть реализован в решении квантовой обработки, алгоритм и/или обслуживающие его процессы, оптимизированы таким образом, чтобы они работали быстрее и/или с более высокой точностью при выполнении этой средой. Эти способы, например, могут быть использованы, например, в итеративных картировании, выравнивании, сортировке, определении вариантов и/или процедуре третичной обработки. В другом случае предложены системы и способы для реализации функций одного или более алгоритмов для выполнения одного или более этапов анализа геномных данных в протоколе биоинформатики, как указано в настоящем документе, причем функции реализуются на аппаратном и/или квантовом ускорителе, который может быть связна или не соединен с одним или более процессорами общего назначения, и/или суперкомпьютерами, и/или квантовыми компьютерами.[00148] In particular, when an algorithm is to be implemented in a software solution, the algorithm and/or its supporting processes are optimized so that they run faster and/or with higher accuracy when executed by that environment. Likewise, when the functions of an algorithm must be implemented in a hardware solution, such as firmware, the hardware is designed to perform those functions and/or the processes that serve them in an optimal manner to perform faster and/or with higher accuracy when executed by that environment. Additionally, when an algorithm is to be implemented in a quantum processing solution, the algorithm and/or its supporting processes are optimized so that they run faster and/or with higher accuracy when executed by that environment. These methods, for example, can be used, for example, in iterative mapping, alignment, sorting, variant determination and/or tertiary processing procedures. Alternatively, systems and methods are provided for implementing the functions of one or more algorithms for performing one or more steps of genomic data analysis in a bioinformatics protocol as defined herein, the functions being implemented on a hardware and/or quantum accelerator, which may or may not be connected. coupled to one or more general purpose processors and/or supercomputers and/or quantum computers.

[00149] Точнее говоря, в некоторых случаях предложены способы и/или оборудование для реализации этих способов с целью выполнения вторичной аналитики на данных, имеющих отношение к генетическому составу субъекта. В одном случае аналитика, подлежащая выполнению, может включать в себя основанную на референсе реконструкцию генома субъекта. Например, основанное на референсе картирование включает в себя использование референсного генома, которым может быть сформирован в результате секвенирования генома одного или множества индивидов, или он может быть объединением принадлежащих различным людям ДНК/РНК, которые объединены таким образом, чтобы создать прототипный стандартный референсный геном, с которым можно сравнить генетический материал, например ДНК/РНК, любого индивида, например, для определения и реконструкции генетической последовательности индивида и/или для определения разницы между их генетическим строением и этим стандартным референсом, например, для определения вариантов.[00149] More specifically, in some cases, methods and/or equipment are provided for implementing these methods for the purpose of performing secondary analytics on data related to the genetic makeup of a subject. In one case, the analytics to be performed may include a reference-based reconstruction of the subject's genome. For example, reference-based mapping involves the use of a reference genome, which may be generated by sequencing the genome of one or more individuals, or it may be a pool of DNA/RNA belonging to different individuals that are combined to create a prototypic standard reference genome. against which the genetic material, such as DNA/RNA, of any individual can be compared, for example, to determine and reconstruct the individual's genetic sequence and/or to determine the difference between their genetic makeup and this standard reference, for example, to identify variants.

[00150] В частности, причина выполнения вторичного анализа на секвенированной ДНК/РНК субъекта состоит в том, чтобы определить, как ДНК/РНК субъекта отличается от ДНК/РНК эталона, чтобы определить одно, множество или все отличия нуклеотидной последовательности субъекта от нуклеотидной последовательности референса. Например, отличия между генетическими последовательностями любых двух случайно выбранных людей встречаются 1 раз на примерно 1000 пар оснований, что с учетом свыше 3 миллиардов пар оснований в полном геноме составляет вариацию из до 3000000 отличающихся пар оснований на человека. Определение этих отличий может быть полезным, например, в протоколе третичного анализа, например, для прогнозирования возможности возникновения болезненного состояния, например, вследствие генетического нарушения, и/или вероятности успеха профилактического или терапевтического воздействия, например, на основе того, каким ожидается взаимодействие профилактики или терапии с ДНК субъекта или формируемыми при этом белками. В различных случаях может оказаться полезным выполнение реконструкции генома субъекта как de novo, так и на основе референса, чтобы подкрепить результаты одной результатами другой, и чтобы улучшить точность протокола определения вариантов, если требуется.[00150] Specifically, the reason for performing a secondary analysis on a subject's sequenced DNA/RNA is to determine how the subject's DNA/RNA differs from the reference DNA/RNA to determine one, many, or all differences in the subject's nucleotide sequence from the reference nucleotide sequence . For example, differences between the genetic sequences of any two randomly selected individuals occur once in about 1,000 base pairs, which, given the over 3 billion base pairs in the entire genome, amounts to a variation of up to 3,000,000 different base pairs per person. Determining these differences may be useful, for example, in a tertiary analysis protocol, for example, to predict the possibility of a disease state, for example, due to a genetic disorder, and/or the likelihood of success of a prophylactic or therapeutic intervention, for example, based on how the prevention or treatment is expected to interact therapy with the subject's DNA or proteins formed in this process. In various cases, it may be useful to perform either de novo or reference-based reconstruction of a subject's genome to reinforce the results of one with those of the other, and to improve the accuracy of the variant detection protocol, if required.

[00151] Соответственно, согласно одному аспекту в различных вариантах реализации после того, как реконструирован геном субъекта и/или сформирован файл VCF, такие данные могут быть затем подвергнуты третичной обработке с целью их интерпретации, например, для определения того, что эти данные означают с точки зрения выявления болезней, которым может подвергнуться или не подвергнуться этот человек, и/или для определения терапий или изменений стиля жизни, которыми, возможно, пожелает воспользоваться данный субъект, чтобы устранить и/или предотвратить болезненное состояние. Например, генетическая последовательность субъекта и/или его файл определения вариантов могут быть проанализированы для определения клинически уместных генетических маркеров, которые указывают на наличие или возможность болезненного состояния и/или эффективность, с которой может воздействовать на субъекта рекомендуемый терапевтический или профилактически режим. Затем эти данные могут быть использованы для обеспечения субъекту одного или более терапевтических или профилактических режимов с тем, чтобы улучшить качество жизни субъекта, например, вылечить и/или предотвратить болезненное состояние.[00151] Accordingly, according to one aspect, in various embodiments, after a subject's genome has been reconstructed and/or a VCF file has been generated, such data may then be subjected to tertiary processing for the purpose of interpretation, for example, to determine what the data means with in terms of identifying diseases that the subject may or may not be exposed to, and/or to identify therapies or lifestyle changes that the subject may wish to take advantage of in order to eliminate and/or prevent the disease state. For example, a subject's genetic sequence and/or its variant definition file may be analyzed to determine clinically relevant genetic markers that indicate the presence or potential of a disease condition and/or the effectiveness with which a recommended therapeutic or prophylactic regimen may affect the subject. These data may then be used to provide the subject with one or more therapeutic or prophylactic regimens in order to improve the subject's quality of life, eg, treat and/or prevent a disease state.

[00152] В частности, после того, как определены одна или более генетических вариаций индивида, такая информация файла определения вариантов может быть использована для подготовки полезной с медицинской точки зрения информации, которая, в свою очередь, может быть использована для определения, например, с помощью известных моделей статистического анализа, относящихся к здоровью данных и/или полезной с медицинской точки зрения информации, например, в диагностических целях, например, для диагностирования болезни или ее возможности, клинической интерпретации (например, поиска маркеров, которые представляют вариант болезни), определения того, следует ли включить субъекта в различные клинических испытания или исключить из них, и других таких целей. Более конкретно, в различных случаях сформированные данные результатов обработки методами геномики и/или биоинформатики могут быть использованы при выполнении одного или более третичных протоколов геномики и/или биоинформатики, таких как протокол микроматричного анализа, протокол анализа генома, например, полногеномного анализа, протокол анализа генотипирования, протокол анализа экзома, протокол анализа эпигенома, протокол анализа метагенома, протокол анализа микробиома, протокол анализа генотипирования, включая совместное генотипирование, протоколы анализов вариантов, включая структурные варианты, соматические варианты, и GATK, а также протоколы секвенирования РНК и другие протоколы генетических анализов.[00152] In particular, once one or more genetic variations of an individual have been determined, such variant definition file information may be used to prepare medically useful information, which in turn may be used to determine, e.g. using known statistical analysis models, health-related data and/or medically useful information, e.g., for diagnostic purposes, e.g., diagnosing a disease or its potential, clinical interpretation (e.g., finding markers that represent a disease variant), determining whether a subject should be included in or excluded from various clinical trials, and other such purposes. More specifically, in various cases, the generated genomics and/or bioinformatics data may be used to perform one or more tertiary genomics and/or bioinformatics protocols, such as a microarray protocol, a genomic analysis protocol, e.g., a genome-wide analysis, a genotyping analysis protocol , exome analysis protocol, epigenome analysis protocol, metagenome analysis protocol, microbiome analysis protocol, genotyping analysis protocol including co-genotyping, variant assay protocols including structural variants, somatic variants, and GATK, as well as RNA sequencing protocols and other genetic assay protocols.

[00153] Поскольку существует конечное число болезненных состояний, которые вызываются генетическими нарушениями, при третичной обработке варианты определенного типа, например, известные тем, что они связаны с возникновением болезненных состояний, могут быть уточнены, например, путем определения того, включены ли один или более генетических маркеров болезни в файл определения вариантов субъекта. Поэтому в различных случаях способы, описанные в настоящем документе, могут включать в себя анализ, например, сканирование, VCF и/или сформированной последовательности на предмет известных связанных с болезнями вариантов последовательности, например, присутствующих по этой причине в базе данных геномных маркеров, чтобы выявить наличие генетического маркера в VCF и/или сформированной последовательности, и при наличии такового проверять присутствие или возможность генетически обусловленного болезненного состояния. Так как существуют огромное количество известных генетических вариаций и огромное количество индивидов, страдающих от болезней, вызываемых такими вариациями, в некоторых вариантах реализации способы, описанные в настоящем документе, могут охватывать формирование одной или более баз данных, связывающих секвенированные данные полного генома и/или связанного с ними файла определения вариантов, например, от одного или множества индивидов, с болезненным состоянием, и/или поиск в сформированных базах данных с целью определения того, имеет ли конкретный субъект генетический состав, который предрасполагает его к наличию такого болезненного состояния. Такой поиск может включать в себя сравнение одного полного генома с одним или более другими, или фрагмента генома, такого как фрагмент, содержащий только вариации, с одним или более фрагментами одного или более других геномов, например, в базе данных референсных геномов или их фрагментов.[00153] Because there are a finite number of disease states that are caused by genetic disorders, in tertiary processing, variants of a particular type, for example, known to be associated with disease conditions, can be refined, for example, by determining whether one or more genetic markers of the disease into the subject's variant definition file. Therefore, in various cases, the methods described herein may include analyzing, for example, scanning, VCF and/or generated sequence for known disease-associated sequence variants, for example, present for this reason in a genomic marker database, to identify presence of a genetic marker in the VCF and/or generated sequence, and if present, check for the presence or possibility of a genetically determined disease state. Because there are a huge number of known genetic variations and a huge number of individuals suffering from diseases caused by such variations, in some embodiments, the methods described herein may include the formation of one or more databases linking whole genome sequenced data and/or associated with them a file identifying variants, for example, from one or multiple individuals with a disease condition, and/or searching generated databases to determine whether a particular subject has a genetic makeup that predisposes him to having such disease condition. Such a search may involve comparing one complete genome with one or more others, or a fragment of a genome, such as a fragment containing only variations, with one or more fragments of one or more other genomes, for example, in a database of reference genomes or fragments thereof.

[00154] Поэтому в различных случаях конвейер по данному изобретению может содержать один или более модулей, где модули выполнены с возможностью осуществления одной или более функций, таких как обработка изображения или определение оснований, и/или операция исправления ошибок, и/или картирование, и/или выравнивание, например, выравнивание с гэпами и без гэпов, и/или функция сортировки генетических данных, например, секвенированных генетических данных. И в различных случаях конвейер может содержать один или более модулей, где модули выполнены с возможностью осуществления одного или более из локального повторного выравнивания, удаления дубликатов, перекалибровки оценки качества основания, определения вариантов, например, HMM, редукции и/или распаковки на генетических данных. Кроме того, конвейер может содержать один или более модулей, где модули выполнены с возможностью осуществления протокола третичного анализа, такого как протоколы микроматричного анализа, протоколы анализа генома, например, полногеномного анализа, протоколы анализа генотипирования, протоколы анализ экзома, протоколы анализа эпигенома, протоколы анализа метагенома, протоколы анализа микробиома, протоколы анализа генотипирования, включая протоколы анализа совместного генотипирования, протоколы анализа вариантов, включая совместное генотипирование, протоколы анализов вариантов, включая структурные варианты, соматические варианты, и протоколы GATK, а также протоколы секвенирования РНК и другие протоколы генетических анализов.[00154] Therefore, in various cases, the pipeline of the present invention may comprise one or more modules, where the modules are configured to perform one or more functions, such as image processing or base detection, and/or error correction operation, and/or mapping, and /or alignment, eg gapped and non-gapped alignment, and/or genetic data sorting function, eg sequenced genetic data. And in various cases, the pipeline may comprise one or more modules, where the modules are configured to perform one or more of local re-alignment, duplicate removal, ground quality score recalibration, variant detection, e.g., HMM, reduction, and/or decompression on genetic data. In addition, the pipeline may comprise one or more modules, where the modules are configured to implement a tertiary analysis protocol, such as microarray analysis protocols, genome analysis protocols, e.g., whole genome analysis, genotyping analysis protocols, exome analysis protocols, epigenome analysis protocols, analysis protocols metagenome, microbiome analysis protocols, genotyping analysis protocols including co-genotyping analysis protocols, variant analysis protocols including co-genotyping, variant analysis protocols including structural variants, somatic variants, and GATK protocols, as well as RNA sequencing and other genetic analysis protocols.

[00155] Многие из этих модулей могут выполняться либо программным обеспечением, либо аппаратным обеспечением, локально или удаленно, например, посредством программного обеспечения или аппаратного обеспечения, скажем, на облаке, например, на удаленном сервере и/или банке серверов, таком как квантовый вычислительный кластер. Кроме того, многие из этих модулей и/или этапов конвейера являются необязательными и/или могут быть расположены в любом логическом порядке и/или полностью опущены. Например, программное обеспечение и/или аппаратное обеспечение, описанные в настоящем документе, могут включать в себя или не включать обработку изображения и/или определение оснований, или алгоритм исправления последовательности, например, когда могут быть опасения, что такие функции могут привести к статистической систематической ошибке. Следовательно, система может включать себя или не включать функцию определения оснований и/или исправления последовательности, соответственно, в зависимости от требуемого уровня точности и/или эффективности. И, как указано выше, одна или более функций конвейера могут быть использованы при формировании геномной последовательности субъекта, например, посредством реконструкции генома на основе референса. Кроме того, в определенных случаях выходными данными из конвейера вторичной обработки может быть файл определения вариантов (VCF, gVCF), указывающий частично или полностью варианты в геноме или его части.[00155] Many of these modules may be executed by either software or hardware, locally or remotely, for example through software or hardware, say, on a cloud, for example, on a remote server and/or a bank of servers, such as a quantum computing cluster. Additionally, many of these modules and/or pipeline stages are optional and/or can be arranged in any logical order and/or omitted entirely. For example, the software and/or hardware described herein may or may not include image processing and/or base detection or a sequence correction algorithm, for example where there may be concerns that such functions may lead to statistical bias error. Therefore, the system may or may not include base detection and/or sequence correction functionality, respectively, depending on the level of accuracy and/or efficiency required. And, as stated above, one or more functions of the pipeline may be used in generating the genomic sequence of a subject, for example, by reconstructing the genome from a reference. Additionally, in certain cases, the output from the secondary processing pipeline may be a variant definition file (VCF, gVCF) indicating partial or complete variants in or part of the genome.

[00156] В частности, после того как ридам назначены позиции относительно референсного генома, что может включать в себя определение того, какой хромосоме принадлежит рид, и/или его смещения от начала этой хромосомы, из них можно удалить дубликаты и/или отсортировать их, например по позиции. Это позволяет в последующих анализах использовать преимущества различных протоколов с избыточной выборкой, описанных в настоящем документе. Все риды, которые перекрывают данную позицию в геноме, могут быть расположены рядом друг с другом после сортировки, и они могут быть накоплены, например чтобы образовать скопление, и без труда исследованы, чтобы определить, согласуются ли большинство из них с референсным значением или нет. Если нет, как указано выше, вариант можно пометить.[00156] In particular, once reads have been assigned positions relative to a reference genome, which may include determining which chromosome the read belongs to and/or its offset from the start of that chromosome, duplicates can be removed from them and/or sorted, for example by position. This allows subsequent analyzes to take advantage of the various oversampling protocols described herein. All reads that overlap a given position in the genome can be located next to each other after sorting, and they can be accumulated, for example to form a cluster, and easily examined to determine whether most of them agree with the reference value or not. If not, as stated above, the option can be checked.

[00157] Соответственно, как указано выше в отношении картирования, файл изображения, файл BCL и/или файл FASTQ, полученные из секвенатора, состоят из множества, например, от миллионов до миллиардов или более, ридов, состоящих из коротких строк данных последовательности нуклеотидов, представляющих часть и или весь геном индивида. Например, первый этап в конвейерах вторичного анализа, описанных в настоящем документе, представляет собой прием геномных и/или биоинформационных данных, например, из устройства формирования геномных данных, такого как секвенатор. Как правило, данные, создаваемые секвенатором, например, секвенатором нового поколения, могут быть в формате файла BCL, который в некоторых случаях может быть преобразован в формат файла FASTQ, до или после передачи, например, на платформу вторичной обработки, описанную в настоящем документе. В частности, при секвенировании человеческого генома необходимо идентифицировать ДНК и/или РНК субъекта, основание за основанием, причем результатом такого секвенирования является файл BCL. Файл BCL - это двоичный файл, который содержит определения оснований и оценки качества, сделанные для каждого основания каждой последовательности коллекции последовательностей, которая составляет по меньшей мере часть или полный геном субъекта.[00157] Accordingly, as discussed above with respect to mapping, the image file, BCL file and/or FASTQ file obtained from the sequencer consists of many, for example millions to billions or more, reads consisting of short strings of nucleotide sequence data, representing part and or the entire genome of an individual. For example, the first step in the secondary analysis pipelines described herein is the ingestion of genomic and/or bioinformatics data, for example, from a genomic data generating device such as a sequencer. Typically, the data produced by a sequencer, such as a next-generation sequencer, may be in a BCL file format, which in some cases may be converted to a FASTQ file format, before or after transfer to, for example, a secondary processing platform described herein. In particular, when sequencing the human genome, it is necessary to identify a subject's DNA and/or RNA, base by base, and the result of such sequencing is a BCL file. A BCL file is a binary file that contains base definitions and quality scores made for each base of each sequence of a collection of sequences that constitutes at least a portion or the entire genome of a subject.

[00158] По традиции сформированный секвенатором файл BCL преобразуют в файл FASTQ, который затем может быть передан на платформу вторичной обработки, такую как описанная в настоящем документе, для дальнейшей обработки, например, для определения из него геномной вариации. Файл FASTQ - это файл в текстовом формате для передачи и хранения как биологической последовательности (например, последовательности нуклеотидов), так и ее соответствующих оценок качества, где каждая буква последовательности, например A, C, G, T и/или U, и оценка качества может быть закодирована одним символов ASCII для краткости. Соответственно, в данной и других системах в целях дальнейшей обработки используют именно файл FASTQ. Хотя использование файла FASTQ для геномной обработки полезно, преобразование сформированного файла BCL в файл FASTQ, которое реализовано в секвенаторе, занимает много времени и неэффективно. Поэтому, в соответствии с одним аспектом предложены устройства и способы для прямого преобразования файла BCL в файл FASTQ и/или непосредственного ввода таких данных в конвейеры представленной платформы, как описано в настоящем документе.[00158] Traditionally, the BCL file generated by the sequencer is converted into a FASTQ file, which can then be transferred to a secondary processing platform, such as the one described herein, for further processing, for example, to determine genomic variation from it. A FASTQ file is a text format file for transmitting and storing both a biological sequence (such as a nucleotide sequence) and its corresponding quality scores, where each letter of the sequence, such as A, C, G, T and/or U, and the quality score may be encoded with a single ASCII character for brevity. Accordingly, in this and other systems, it is the FASTQ file that is used for further processing. Although using a FASTQ file for genomic processing is useful, converting the generated BCL file to a FASTQ file, which is implemented in the sequencer, is time-consuming and inefficient. Therefore, in accordance with one aspect, devices and methods are provided for directly converting a BCL file to a FASTQ file and/or directly inputting such data into pipelines of the present platform, as described herein.

[00159] Например, в различных вариантах реализации секвенатор нового поколения или изготовленный по технологии «секвенатор на микросхеме» может быть выполнен с возможностью осуществления операции секвенирования на принимаемых генетических данных. Например, как показано на ФИГ. 1A, генетические данные 6a могут быть связаны с платформой 6, предназначенной для вставки в секвенатор нового поколения для итеративного секвенирования, таким образом, что каждая последовательность будет наращиваться путем пошагового добавления одного нуклеотида за другим. А именно, платформа 6 секвенирования может содержать ряд шаблонных последовательностей 6a нуклеотидов субъекта, которые расположены в виде сетки с образованием плиток 6b на платформе 6, шаблонные последовательности 6a которой подлежат секвенированию. Платформа 6 может быть добавлена к проточной кювете 6c секвенатора, который выполнен с возможностью выполнения реакций секвенирования.[00159] For example, in various embodiments, a next-generation sequencer or sequencer-on-a-chip technology may be configured to perform a sequencing operation on incoming genetic data. For example, as shown in FIG. 1A, the genetic data 6a may be linked to a platform 6 for insertion into a next-generation sequencer for iterative sequencing such that each sequence is built up by incrementally adding one nucleotide after another. Namely, the sequencing platform 6 may contain a number of template nucleotide sequences 6a of a subject, which are arranged in a grid pattern to form tiles 6b on the platform 6, the template sequences 6a of which are to be sequenced. The platform 6 may be added to a flow cell 6c of a sequencer that is configured to perform sequencing reactions.

[00160] По мере того, как происходят реакции секвенирования, на каждом этапе к платформе 6 проточной кюветы 6с добавляется нуклеотид, имеющий флуоресцентную метку 6d. Если происходит реакция гибридизации, наблюдается флуоресценция и делается снимок, затем изображение обрабатывается, и выполняется соответствующее определение основания. Это повторяется для одного основания за другим до тех пор, пока все шаблонные последовательности, например, полный геном, не будут секвенированы и преобразованы в риды с созданием тем самым данных рида системы. Таким образом, по завершении секвенирования сформированные данные, например риды, необходимо передать с платформы секвенирования в систему вторичной обработки. Например, эти данные изображения, как правило, преобразуют в файл BCL и/или FASTQ, который затем может быть перенесен в систему.[00160] As sequencing reactions occur, at each step a nucleotide having a fluorescent tag 6d is added to the platform 6 of the flow cell 6c. If a hybridization reaction occurs, fluorescence is observed and an image is taken, then the image is processed and the appropriate base determination is made. This is repeated one base after another until all the template sequences, such as the entire genome, have been sequenced and converted into reads, thereby creating the system's read data. Thus, upon completion of sequencing, the generated data, such as reads, must be transferred from the sequencing platform to the secondary processing system. For example, this image data is typically converted into a BCL and/or FASTQ file, which can then be transferred to the system.

[00161] Однако в различных случаях этот процесс преобразования и/или переноса может быть сделан более эффективным. А именно, в настоящем документе представлены способы и архитектуры для ускоренного преобразования файла BCL в файлы, которые могут быть быстро обработаны в системе вторичной обработки. Точнее говоря, в конкретных случаях вместо передачи необработанных файлов BCL или FASTQ созданные изображения, представляющие каждую плитку операции секвенирования, могут быть перенесены непосредственно в систему и подготовлены для картирования, выравнивания и т.д. Например, плитки могут передаваться в потоковом режиме через соответствующим образом сконфигурированную карту PCIe в ASIC, FPGA или КПУ, где из них могут быть непосредственно выделены данные рида, а риды продвинуты в движки картирования и выравнивания и/или другие движки обработки.[00161] However, in various cases this conversion and/or transfer process can be made more efficient. Specifically, this document presents methods and architectures for rapidly converting a BCL file into files that can be quickly processed by a secondary processing system. More specifically, in specific cases, instead of transferring raw BCL or FASTQ files, generated images representing each tile of a sequencing operation can be transferred directly into the system and prepared for mapping, alignment, etc. For example, tiles can be streamed through a suitably configured PCIe card to an ASIC, FPGA, or CPU, where read data can be directly extracted from them and the reads promoted to mapping and alignment engines and/or other processing engines.

[00162] В частности, что касается переноса данных с плиток, полученных секвенатором, в FPGA/ЦПУ/ГПУ/КПУ, как показано на ФИГ. 1A, платформа 6 секвенирования может быть изображена в виде 3-мерного куба 6c, внутри которого могут быть сформированы растущие последовательности 6a. По существу, как показано на ФИГ.1В, платформа 6 секвенирования может состоять из 16 полос, 8 в передней части и 8 в задней части, которые могут быть выполнены с возможностью формирования около 96 плиток 6b. Внутри каждой плитки 6b находятся множество шаблонных последовательностей 6a, подлежащих секвенированию с формированием тем самым ридов, каждый из которых представляет последовательность нуклеотидов для данной области генома субъекта, каждый столбец представляет один файл, а в цифровой кодировке представляет 1 байт для каждого файла, по 8 битов на файл, например, где 2 бита представляют найденное основание, а оставшиеся 6 битов представляют оценку качества.[00162] In particular, with regard to transferring data from tiles obtained by the sequencer to the FPGA/CPU/GPU/CPU, as shown in FIG. 1A, the sequencing platform 6 can be depicted as a 3-dimensional cube 6c within which growing sequences 6a can be generated. Essentially, as shown in FIG. 1B, the sequencing platform 6 may consist of 16 lanes, 8 in the front and 8 in the back, which can be configured to form about 96 tiles 6b. Within each tile 6b are a plurality of template sequences 6a to be sequenced to thereby form reads, each representing a nucleotide sequence for a given region of the subject's genome, each column representing one file, and digitally encoded representing 1 byte for each file, 8 bits each per file, for example, where 2 bits represent the base found and the remaining 6 bits represent the quality score.

[00163] Более конкретно, что касается секвенирования нового поколения, его обычно выполняют на стеклянных пластинах 6, формирующие проточные кюветы 6c, которые вводят в автоматизированный секвенатор для секвенирования. Как показано на ФИГ. 1B, проточная кювета 6c представляет собой платформу 6, состоящую из 8 вертикальных столбцов и 8 горизонтальных рядов (передних и задних), вместе образующих 16 полос, где каждой полосы достаточно для секвенирования полного генома. ДНК и/или РНК 6a субъекта, подлежащую секвенированию, связывают в отведенных позициях между непроницаемыми для текучей среды пересечениями столбцов и рядов платформы 6 с образованием плиток 6b, где каждая плитка содержит шаблонный генетический материал 6a, подлежащий секвенированию. Следовательно, платформа 6 секвенирования содержит множество шаблонных нуклеотидных последовательностей субъекта, причем последовательности расположены в виде сетки плиток на платформе (см. ФИГ. 1B). Затем генетические данные 6 секвенируют итеративным образом, и при этом каждую последовательность наращивают пошаговым введением одного нуклеотида за другим в проточную кювету, причем каждый этап итеративного наращивания представляет цикл секвенирования.[00163] More specifically, with regard to next generation sequencing, it is typically performed on glass plates 6 forming flow cells 6c that are introduced into an automated sequencer for sequencing. As shown in FIG. 1B, flow cell 6c is a platform 6 consisting of 8 vertical columns and 8 horizontal rows (front and back), together forming 16 lanes, where each lane is sufficient for sequencing a complete genome. The subject's DNA and/or RNA 6a to be sequenced is linked at designated positions between the fluid-impermeable intersections of the columns and rows of the platform 6 to form tiles 6b, where each tile contains the template genetic material 6a to be sequenced. Therefore, the sequencing platform 6 contains a plurality of subject template nucleotide sequences, with the sequences arranged in a grid of tiles on the platform (see FIG. 1B). The genetic data 6 is then sequenced in an iterative manner, with each sequence being incrementally introduced one nucleotide at a time into the flow cell, with each incremental step representing a sequencing cycle.

[00164] Как было указано, после каждого этапа получают изображение, а растущая последовательность, например, изображений, образует основу, с помощью которой формируют файл BCL. Как показано на ФИГ. 1C, риды из процедуры секвенирования могут образовывать кластеры, и именно эти кластеры образуют теоретический 3-мерный куб 6c. Соответственно, внутри этого теоретического 3-мерного куба каждое основание каждой растущей нуклеотидной нити, которую секвенируют, будет иметь измерение x и измерение y. Данные изображения, или плитки 6b, из этого 3-мерного куба 6c могут быть выделены и собраны в двумерную карту, из которой можно сформировать матрицу, как показано на ФИГ. 1D. Эту матрицу формируют из циклов секвенирования, которые представляют горизонтальную ось, и идентификаторов ридов, которые представляют вертикальную ось. Соответственно, как показано на ФИГ. 1C, секвенированные риды образуют кластеры в проточной кювете 6c, причем кластеры могут быть определены с помощью вертикальной и горизонтальной оси, цикл за циклом и основание за основанием, и данные из каждого цикла для каждого рида могут быть вставлены в матрицу, приведенную на ФИГ. 1D, например, в потоковом и/или конвейерном режиме.[00164] As stated, after each step, an image is obtained, and the growing sequence, for example, of images, forms the basis with which the BCL file is generated. As shown in FIG. 1C, reads from a sequencing run can form clusters, and it is these clusters that form the theoretical 3-dimensional cube 6c. Accordingly, within this theoretical 3-dimensional cube, each base of each growing nucleotide strand that is sequenced will have an x dimension and a y dimension. Image data, or tiles 6b, from this 3-dimensional cube 6c can be extracted and assembled into a 2-D map from which a matrix can be formed, as shown in FIG. 1D. This matrix is formed from sequencing runs, which represent the horizontal axis, and read IDs, which represent the vertical axis. Accordingly, as shown in FIG. 1C, the sequenced reads form clusters in the flow cell 6c, where the clusters can be defined using a vertical and horizontal axis, run by run and base by base, and data from each run for each read can be inserted into the matrix shown in FIG. 1D, for example, in streaming and/or pipeline mode.

[00165] А именно, каждый цикл представляет потенциальный прирост каждого рида в проточной кювете путем добавления одного нуклеотида, который при секвенировании одного или нескольких человеческих геномов может представлять прирост около 1 миллиарда или более ридов на полосу. Прирост каждого рида, например, за счет добавления нуклеотидного основания, идентифицируют путем итеративного получения изображение плиток 6b проточной кюветы 6c между этапами приращения. С помощью этих изображений выполняют определение оснований, определяют оценки качества и формируют виртуальную матрицу, приведенную на ФИГ. 1D. Соответственно, в матрицу будут введены как определение основания, так и оценка качества, причем каждая плитка из каждого цикла представляет отдельный файл. Необходимо отметить, что при выполнении секвенирования на интегральной схеме считываемые электронные данные могут заменить данные изображения.[00165] Namely, each cycle represents the potential gain of each read in the flow cell by the addition of a single nucleotide, which when sequencing one or more human genomes can represent a gain of about 1 billion or more reads per lane. The increment of each read, for example due to the addition of a nucleotide base, is identified by iteratively imaging the tiles 6b of the flow cell 6c between incremental steps. Using these images, bases are determined, quality scores are determined, and the virtual matrix shown in FIG is formed. 1D. Accordingly, both the base definition and the quality score will be entered into the matrix, with each tile from each cycle representing a separate file. It should be noted that when sequencing is performed on an integrated circuit, the electronic readout data may replace the image data.

[00166] Например, как показано на ФИГ. 1D, сама матрица будет итеративно прирастать по мере получения и обработки изображений, определения оснований и определения оценок для каждого рида, цикл за циклом. Это повторяют для каждого основания в риде для каждой плитки проточной кюветы. Например, кластеры ридов, показанные на ФИГ. 1C, могут быть пронумерованы и введены в матрицу как вертикальная ось. Аналогичным образом номер цикла может быть введен как горизонтальная ось, а затем можно ввести определение основания и оценку качества, чтобы заполнить матрицу по столбцу, ряд за рядом. Соответственно, каждый рид будет представлен некоторым количеством оснований, например, примерно от 100 или 150 до 1000 или более оснований на рид в зависимости от секвенатора, и на каждую плитку может приходиться до 10 миллионов или более ридов. Поэтому, если имеется около 100 плиток, в каждой из которых 10 миллионов ридов, матрица будет содержать около 1 миллиарда ридов, которые нужно организовывать и передавать в потоковом режиме в устройство вторичной обработки.[00166] For example, as shown in FIG. 1D, the matrix itself will iteratively grow as images are acquired and processed, bases are determined, and scores are determined for each read, cycle by cycle. This is repeated for each base in the read for each flow cell tile. For example, the clusters of reads shown in FIG. 1C can be numbered and entered into the matrix as a vertical axis. Likewise, the cycle number can be entered as the horizontal axis, and then the base definition and quality rating can be entered to fill the matrix column by column, row by row. Accordingly, each read will be represented by a number of bases, for example from about 100 or 150 to 1000 or more bases per read depending on the sequencer, and there may be up to 10 million or more reads per tile. So if there are about 100 tiles, each with 10 million reads, the matrix will contain about 1 billion reads that need to be organized and streamed to the secondary processor.

[00167] Соответственно, такая организация имеет основополагающее значение для быстрой и эффективной обработки данных. Поэтому, в соответствии с одним аспектом в настоящем документе предложены способы для транспортировки данных, представленных виртуальной матрицей секвенирования, таким образом, чтобы данные могли эффективно передаваться в потоковом режиме в конвейеры системы, описанной в настоящем документы. Например, формирование данных секвенирования, которые представлены звездообразным кластером, изображенным на ФИГ. 1C, в значительной степени неорганизованные, что создает трудности с точки зрения обработки данных. В частности, по мере формирования данных с помощью операции секвенирования они организуются в виде одного файла на цикл, а это означает, что по завершении операции секвенирования формируются миллионы и миллионы файлов, которые представлены на ФИГ. 1E данными в столбцах, разграниченными сплошными линиями. Однако в целях вторичной и/или третичной обработки, как описано в настоящем документе, данные файла должны быть реорганизованы в данные рида, разграниченные пунктирными линиями на ФИГ. 1E.[00167] Accordingly, such an organization is fundamental to fast and efficient data processing. Therefore, in accordance with one aspect, methods are provided herein for transporting data represented by a virtual sequencing matrix such that the data can be efficiently streamed into pipelines of a system described herein. For example, generating sequencing data that is represented by the star-shaped cluster depicted in FIG. 1C are largely unorganized, which creates difficulties in terms of data processing. In particular, as data is generated by a sequencing operation, it is organized into one file per run, which means that upon completion of the sequencing operation, millions and millions of files are generated, as shown in FIG. 1E with data in columns delimited by solid lines. However, for purposes of secondary and/or tertiary processing as described herein, the file data must be reorganized into the read data delimited by the dotted lines in FIG. 1E.

[00168] Более конкретно, чтобы эффективнее передавать в потоковом режиме формируемые секвенатором данные на вторичную обработку данных, следует переставлять представленные виртуальной матрицей данные, например, путем реорганизации данных файла из построения столбец за столбцом плиток в каждом цикле в построение ряд за рядом, идентифицируя основания каждого рида. А именно, структура данных формируемых файлов, образующих матрицу, по мере их создания секвенатором, организуется цикл за циклом, столбец за столбцом. С помощью процессов, описанных в настоящем документе, эти данные могут быть переставлены, например, по существу одновременно, чтобы они были представлены, как показано в виртуальной матрице, рид за ридом, ряд за рядом, где каждый ряд представляет отдельный рид, а каждый рид представлен порядковым номером определений оснований и оценками качества, идентифицирующими таким образом как последовательность для каждого рида, так и его достоверность. Таким образом, при операции перестановки, как описано в настоящем документе, данные в памяти могут быть реорганизованы, например, в виртуальной матрице, из построения столбец за столбцом, представляющего порядок ввода данных, в построение ряд за рядом, представляющее порядок вывода данных, меняя тем самым порядок данных из вертикальной организации на горизонтальную организацию. Кроме того, хотя этот процесс может быть эффективно реализован в программном обеспечении, он может быть выполнен даже еще эффективнее и быстрее путем реализации в аппаратном обеспечении и/или с помощью квантового процессора.[00168] More specifically, to more efficiently stream sequencer-generated data to secondary data processing, the data represented by the virtual matrix should be rearranged, for example, by reorganizing the file data from a column-by-column construction of tiles in each cycle to a row-by-row construction, identifying the bases each read. Namely, the data structure of the generated files that form a matrix, as they are created by the sequencer, is organized cycle by cycle, column by column. Using the processes described herein, this data can be rearranged, for example, substantially simultaneously so that it is represented, as shown in a virtual matrix, read by read, row by row, where each row represents a separate read and each read is represented by the serial number of base definitions and quality scores, thus identifying both the sequence for each read and its reliability. Thus, in a permutation operation as described herein, data in memory may be reorganized, for example, in a virtual matrix, from a column-by-column arrangement representing the data input order to a row-by-row arrangement representing the data output order, changing the the most order of data from a vertical organization to a horizontal organization. Additionally, while this process can be implemented efficiently in software, it can be done even more efficiently and quickly by implementing it in hardware and/or using a quantum processor.

[00169] Например, в различных случаях этот процесс перестановки может быть ускорен за счет реализации в аппаратном обеспечении. Например, в одной реализации на первом этапе программное обеспечение главного устройства, например, секвенатора, может записывать входные данные в память, связанную с матрицей FPGA, столбец за столбцом, например в порядке ввода. А именно, по мере формирования данных и сохранения их в связанной памяти эти данные могут быть организованы в файлы, цикл за циклом, где данные сохраняются как самостоятельные отдельные файлы. Эти данные могут быть представлены 3-кубом, изображенным на ФИГ. 1A. Эти формируемые данные, которые организованы в столбцы, могут быть затем построены в очередь и/или переданы в потоковом режиме, например, в режиме реального времени, в аппаратное обеспечение, где специализированные движки обработки выстроят в очередь организованные в столбцы данные и переставят эти данные из конфигурации столбец за столбцом в порядке циклов в конфигурацию ряд за рядом в порядке ридов таким образом, как описано выше в настоящем документе, например, путем преобразования 3-мерных данных плиток в 2-мерную матрицу, тем самым данные столбцов могут быть реорганизованы в данные рядов, например рид за ридом. Эти переставленные данные могут быть затем сохранены в памяти в более стратегически важном порядке.[00169] For example, in various cases this rearrangement process can be accelerated by implementation in hardware. For example, in one implementation, in a first step, software on a host device, such as a sequencer, may write input data to memory associated with the FPGA, column by column, such as in input order. Namely, as data is generated and stored in associated memory, the data can be organized into files, cycle by cycle, where the data is stored as its own individual files. This data can be represented by the 3-cube shown in FIG. 1A. This generated data, which is organized into columns, can then be queued and/or streamed, for example in real time, to hardware where specialized processing engines will queue up the columnarized data and rearrange that data from column-by-column configuration in loop order to a row-by-row configuration in read order in a manner as described above herein, for example by converting 3-dimensional tile data into a 2-dimensional matrix, thereby column data can be reorganized into row data , for example, read by read. This rearranged data can then be stored in memory in a more strategic order.

[00170] Например, программное обеспечение главного устройства может быть выполнено с возможностью записи входных данных в память, связанную с микросхемой, например матрицей FPGA, например, по столбцам в порядке ввода, и подобно аппаратному обеспечению может быть выполнено с возможностью построения в очередь данных таким образом, чтобы они считывались в память стратегически важным образом, например, как показано на ФИГ. 1F. А именно, аппаратное обеспечение может включать в себя массив регистров 8a, в которые могут быть распределены файлы циклов и реорганизованы в данные отдельных ридов, например, путем записи одного основания из столбца в регистры, которые организованы в ряды. Точнее говоря, как показано на ФИГ. 1G, аппаратное устройство 1, содержащее движок 8 обработки перестановки, может включать в себя порт 8a DRAM, который может выстраивать в очередь данные, подлежащие перестановке, причем порт выполнен с возможностью функционального соединения с интерфейсом 8b памяти, который связан с множеством регистров и/или внешней памятью 8c, и выполнен с возможностью обработки повышенного количества транзакций за цикл, где выстроенные в очередь данные передаются пакетами.[00170] For example, host software may be configured to write input data to a memory associated with a chip, such as an FPGA, for example, column by column in input order, and like hardware may be configured to queue the data such such that they are read into memory in a strategic manner, for example, as shown in FIG. 1F. Specifically, the hardware may include an array of registers 8a into which loop files can be distributed and reorganized into individual read data, for example by writing one radix from a column to registers that are organized into rows. More precisely, as shown in FIG. 1G, a hardware device 1 including a permutation processing engine 8 may include a DRAM port 8a that can queue data to be swapped, the port being operatively coupled to a memory interface 8b that is coupled to a plurality of registers and/or external memory 8c, and is configured to process an increased number of transactions per cycle, where queued data is transmitted in batches.

[00171] В частности, эта перестановка может происходить по одному сегменту данных за раз, например, когда очередь для доступа к памяти организована таким образом, чтобы максимально использовать преимущество скорости передачи DDR. Например, применительно к DRAM это означает, что минимальная длина пакета DDR может, например, составлять 64 байта. Соответственно, доступ к упорядоченным в столбцы данным, хранящимся в главной памяти, может выполняться таким образом, чтобы при каждом обращении к памяти получать столбец общим размером, соответствующим, например, 64 байтам данных. Следовательно, за одно обращение к памяти можно получить доступ к части плитки, например, представляющей соответствующие «64» цикла или файлов, столбец за столбцом.[00171] In particular, this shuffling may occur one data segment at a time, for example when the memory access queue is organized to take full advantage of DDR transfer rates. For example, in the case of DRAM, this means that the minimum length of a DDR packet can be, for example, 64 bytes. Accordingly, columnarized data stored in main memory can be accessed in such a way that each memory access results in a column with a total size corresponding to, for example, 64 bytes of data. Therefore, in a single memory access, it is possible to access a portion of a tile, for example representing the corresponding "64" loops or files, column by column.

[00172] Однако, как показано на ФИГ. 1F, хотя данные в главной памяти доступны в виде данных столбцов, при передаче в аппаратное обеспечение они могут быть загружены в связанные памяти меньшего объема, например, регистры, в другом порядке, и тем самым данные могут быть преобразованы в байты, например, 64 байта, данных рида ряд за рядом, например, в соответствии с минимальной скоростью передачи пакета DDR, чтобы формировать соответствующие «64» единиц или блоков памяти за каждое обращение к памяти. Это показано на примере виртуальной матрицы, изображенной на ФИГ. 1D, где доступ к множеству ридов, например 64, получают поблочно и считывают их в память в виде сегментов, как представлено на ФИГ. 1E, например, когда на каждый регистр или триггер приходится конкретный рид, например, 64 цикла × 64 рида × 8 бит на рид = 32K триггеров. А именно, этого можно достичь всевозможными разными способами в аппаратном обеспечении, например, когда запись входных данных организована в порядке столбцов, а запись выходных данных организована в порядке рядов. Следовательно, в этой конфигурации аппаратное обеспечение может быть выполнено таким образом, чтобы считывать из и/или записывать в «64» различных адреса за цикл.[00172] However, as shown in FIG. 1F, although data in main memory is available as column data, when transferred to hardware, it can be loaded into associated smaller memories, such as registers, in a different order, and thereby the data can be converted into bytes, for example, 64 bytes , the data is read row by row, for example, in accordance with the minimum transfer rate of the DDR packet, to form the corresponding "64" memory units or blocks for each memory access. This is illustrated by the example of the virtual matrix shown in FIG. 1D, where multiple reads, for example 64, are accessed block by block and read into memory in the form of segments, as shown in FIG. 1E, for example, when there is a specific read per register or flip-flop, for example 64 cycles × 64 reads × 8 bits per read = 32K flip-flops. Namely, this can be achieved in all sorts of different ways in hardware, such as when the input data record is organized in column order and the output data record is organized in row order. Therefore, in this configuration, the hardware can be configured to read from and/or write to "64" different addresses per cycle.

[00173] Более конкретно, аппаратное обеспечение может быть связано с массивом регистров так, что каждое основание рида направляется и записывается в один регистр (или множество регистров, расположенных в ряд), например, когда каждый блок завершен, заново упорядоченные данные ряда могут быть переданы в память в качестве выходных данных, например, данных FASTQ, строка за строкой. После этого к данным FASTQ могут обращаться один или более дальнейших движков обработки системы вторичной обработки для дальнейшей обработки, например, с помощью движка картирования, выравнивания и/или определения вариантов, как описано в настоящем документе. Необходимо отметить, что, как описано в настоящем документе, перестановку выполняют в небольших блоках, однако, в зависимости от обстоятельств, система может быть также выполнена с возможностью обработки более крупных блоков.[00173] More specifically, the hardware may be coupled to an array of registers such that each read base is directed to and written to a single register (or multiple registers arranged in a row), for example, when each block is completed, the row's reordered data may be transferred into memory as output data, such as FASTQ data, line by line. The FASTQ data may then be accessed by one or more further processing engines of the secondary processing system for further processing, for example, using a mapping, alignment and/or variant detection engine as described herein. It should be noted that, as described herein, the rearrangement is performed in small blocks, however, depending on the circumstances, the system may also be configured to process larger blocks.

[00174] Как было указано, после того, как файл BCL преобразован в файл FASTQ, как было описано выше, и/или файл BCL или FASTQ иным образом принят платформой вторичной обработки, на принятых данных может быть выполнена операция картирования. Картирование, как правило, включает в себя нанесение ридов на все местоположения в референсном геноме, где имеется совпадение. Например, в зависимости от размера рида, могут быть одно или множество местоположений, где этот рид по существу совпадает с соответствующей последовательностью в референсном геноме. Следовательно, картирование и/или другие функции, описанные в настоящем документе, могут быть выполнены с возможностью определения того, какое из всех возможных местоположений, где одно или более ридов могут совпадать с референсным геномом, действительно является истинным местом, на которые они картируются.[00174] As stated, after the BCL file is converted to a FASTQ file as described above, and/or the BCL or FASTQ file is otherwise received by the secondary processing platform, a mapping operation can be performed on the received data. Mapping typically involves mapping reads to all locations in the reference genome where there is a match. For example, depending on the size of the read, there may be one or many locations where the read substantially matches the corresponding sequence in the reference genome. Therefore, the mapping and/or other functions described herein can be performed to determine which of all possible locations where one or more reads may match a reference genome is actually the true location to which they are mapped.

[00175] Например, в различных случаях можно сформировать или иным образом обеспечить индекс референсного генома, чтобы можно было искать риды или части ридов, например, в таблице подстановки (LUT), по ссылке на индекс, тем самым извлекая указатели местоположений в референсе для картирования ридов на референс. Такой индекс референса можно построить в различных формах и обращаться к нему различным образом. В некоторых способах индекс может содержат дерево префиксов и/или суффиксов. В конкретных способах индекс может быть получен из референса с помощью преобразования Барроуза-Уилера. Таким образом, в качестве альтернативы или в дополнение к использованию дерева префиксов или суффиксов на данных можно выполнить преобразование Барроуза-Уилера. Например, преобразование Барроуза-Уилера можно использовать для сохранения древовидной структуры данных, абстрактно эквивалентной дереву префиксов и/или суффиксов, в компактном формате, например, в пространстве, выделенном для хранения референсного генома. В различных случаях данные хранятся не в древовидной структуре, а, скорее, данные референсной последовательности представлены в линейном списке, который можно скремблировать в другой порядок, чтобы преобразовать его совершенно особенным образом так, чтобы сопутствующий алгоритм позволял осуществлять поиск референса по ссылке на риды образца, чтобы по существу перемещаться по «дереву».[00175] For example, in various cases, an index of a reference genome may be generated or otherwise provided so that reads or portions of reads, for example in a lookup table (LUT), can be searched by reference to the index, thereby retrieving location locators in the mapping reference reads on the reference. Such a reference index can be constructed in various forms and accessed in various ways. In some methods, the index may contain a tree of prefixes and/or suffixes. In particular methods, the index may be obtained from the reference using the Burrows-Wheeler transform. Thus, as an alternative to or in addition to using a tree of prefixes or suffixes, a Burrows-Wheeler transform can be performed on the data. For example, the Burrows-Wheeler transform can be used to store a tree data structure, abstractly equivalent to a tree of prefixes and/or suffixes, in a compact format, such as the space allocated for storing a reference genome. In various cases, the data is not stored in a tree structure, but rather the reference sequence data is presented in a linear list, which can be scrambled into a different order to transform it in a very special way so that the accompanying algorithm allows reference searching by reference to the sample reads. to essentially move around the "tree".

[00176] Кроме того, в различных случаях индекс может содержать одну или более хэш-таблиц, а способы, описанные в настоящем документе, могут включать в себя хэш-функцию, которую можно выполнять на одной или более частях ридов с целью картирования ридов на референс, например, на индекс референса. Например, в качестве альтернативы или в дополнение к использованию одного или обоих из дерева префиксов/суффиксов и/или преобразования Барроуза-Уилера на референсном геноме и данных последовательности субъекта с целью поиска мест, где они картируются друг на друга, другой такой способ включает в себя создание индекса хэш-таблицы и/или выполнение хэш-функции. Индекс хэш-таблицы может быть крупной ссылочной структурой, которую строят из последовательностей референсного генома, и которую потом можно сравнивать с одной или более частями рида для определения того, где они могут совпасть друг с другом. Аналогичным образом индекс хэш-таблицы может быть построен из частей ридов, который можно затем сравнивать с одной или более последовательностями референсного геном и использования тем самым для определения того, где они могут совпасть друг с другом.[00176] Additionally, in various cases, the index may contain one or more hash tables, and the methods described herein may include a hash function that can be performed on one or more portions of the reads for the purpose of mapping the reads to a reference , for example, to the reference index. For example, as an alternative to or in addition to using one or both of a prefix/suffix tree and/or a Burrows-Wheeler transform on the reference genome and a subject's sequence data to find locations where they map to each other, another such method includes creating a hash table index and/or executing a hash function. A hash table index can be a large reference structure that is built from reference genome sequences, which can then be compared to one or more parts of the read to determine where they might match each other. Similarly, a hash table index can be built from parts of the reads, which can then be compared to one or more reference genome sequences and thereby used to determine where they may match each other.

[00177] Реализация хэш-таблицы - это быстрый способ выполнения сопоставления с шаблоном. Выполнение каждого поиска занимает почти постоянное количество времени. Такой метод можно противопоставить методу Барруоза-Уилера, который может потребовать множество проб (количество может меняться в зависимости от того, сколько битов требуется для нахождения уникального образца) на исследуемую последовательность, чтобы найти совпадение, или методу двоичного поиска, который требует log2(N) проб, где N - количество затравочных образцов в таблице. Кроме того, даже если хэш-функция может разбить референсный геном на сегменты затравок любой данной длины, например, 28 пар оснований, и может затем преобразовать затравки в цифровое, например, двоичное, представление из 56 битов, доступ ко всем 56 битам одновременно или одинаковым образом не требуется. Например, хэш-функция может быть реализована таким образом, чтобы адрес для каждой затравки обозначался числом менее 56 битов, например, от около 18 до около 44 или 46 битов, например, от около 20 до около 40 битов, например, от около 24 до около 36 битов, в том числе от около 28 до около 32 или 30 битов могут быть использованы в качестве начального ключа или адреса для получения доступа к хэш-таблице. Например, в определенных случаях от около 26 до около 29 битов могут использоваться в качестве первичного ключа доступа для хэш-таблицы, и остаются от около 27 до около 30, которые могут использоваться в качестве средства для двойной проверки первого ключа, например, если первый и второй ключи поступают одновременно в одну и ту же ячейку в хэш-таблице, после чего вполне очевидно, что указанное местоположение является тем местом, которому они принадлежат.[00177] Implementing a hash table is a fast way to perform pattern matching. Each search takes a nearly constant amount of time to complete. This method can be contrasted with the Barroos-Wheeler method, which may require many samples (the number may vary depending on how many bits are required to find a unique pattern) per sequence of interest to find a match, or the binary search method, which requires log 2 (N ) samples, where N is the number of seed samples in the table. Moreover, even though a hash function can break a reference genome into segments of seeds of any given length, e.g., 28 base pairs, and can then convert the seeds into a digital, e.g., binary, 56-bit representation, access all 56 bits simultaneously or the same way is not required. For example, the hash function may be implemented such that the address for each seed is designated by a number of less than 56 bits, such as about 18 to about 44 or 46 bits, such as about 20 to about 40 bits, such as about 24 to about 36 bits, including about 28 to about 32 or 30 bits can be used as the initial key or address to access the hash table. For example, in certain cases, about 26 to about 29 bits may be used as the primary access key for a hash table, leaving about 27 to about 30 that can be used as a means to double check the first key, such as if the first and the second keys arrive at the same time in the same cell in the hash table, after which it is quite obvious that the specified location is the place where they belong.

[00178] Например, первая часть представленной в цифровом виде затравки, например, от около 26 до около 32, скажем, около 29 битов, может образовывать первичный ключ доступа и быть хэширована, и ее поиск может быть выполнен на первом этапе. А на втором этапе оставшиеся от около 27 до около 30 битов, например, вторичный ключ доступа, могут быть вставлены в хэш-таблицу, например, в цепочку хэширования, в качестве средства для подтверждения первого прохода. Соответственно, для любой затравки ее первоначальные биты адреса могут быть хэшированы на первом этапе, а биты вторичного адреса могут быть использованы на втором этапе, этапе подтверждения. В таком случае первая часть затравок может быть вставлена в первичное местоположение записи, а вторая часть может быть вставлена в таблицу в местоположении второй цепочки записи. И, как указано выше, в различных случаях эти два разных местоположения записи могут быть позиционно разделены, например записью формата цепочки.[00178] For example, a first portion of the digital seed, for example about 26 to about 32, say about 29 bits, may form the primary access key and be hashed and searched for in a first step. And in a second step, the remaining about 27 to about 30 bits, such as a secondary access key, can be inserted into a hash table, such as a hash chain, as a means to verify the first pass. Accordingly, for any seed, its initial address bits can be hashed in the first stage, and the secondary address bits can be used in the second stage, the confirmation stage. In such a case, the first portion of the seeds may be inserted at the primary record location, and the second portion may be inserted into the table at the location of the second record chain. And, as stated above, in various cases these two different record locations may be positionally separated, such as by a chained format record.

[00179] В конкретных случаях для сравнения референса с ридом или его частями может быть использовано линейное сканирование методом перебора. Однако использование линейного поиска методом перебора для сканирования референсного генома на предмет местоположений, где затравка совпадает, возможно, придется проверить свыше 3 миллиардов местоположений. Такой поиск может быть выполнен в соответствии со способами, описанными в настоящем документе, в программном или аппаратном обеспечении. Тем не менее, при использовании подхода на основе хэширования, который изложен в настоящем документе, каждый поиск затравки может занимать приблизительно постоянное количество времени. Часто местоположение может быть выявлено за несколько, например, одно, обращений к памяти. Однако в случаях, где множество затравок картируют на одно и то же местоположение в таблице, например, они не вполне уникальны, для нахождения текущей искомой затравки могут быть выполнены несколько дополнительных обращений к памяти. Следовательно, даже если может оказаться 30M или более возможных местоположений, в которых рид длиной в 100 нуклеотидов соответствует референсному геному, хэш-таблица и хэш-функция могут быстро определить, где в референсном геноме может появиться этот рид. Поэтому при использовании индекса хэш-таблицы для определения мест, где рид картируется и выравнивается, выполнять поиск полного референсного генома, например, перебором, не требуется.[00179] In specific cases, brute-force linear scanning can be used to compare a reference with a read or its parts. However, using a brute-force linear search to scan the reference genome for locations where the primer matches may have to examine over 3 billion locations. Such a search may be performed in accordance with the methods described herein in software or hardware. However, using the hashing-based approach as set forth herein, each seed search may take an approximately constant amount of time. Often, a location can be revealed in several, for example, one, memory accesses. However, in cases where multiple seeds map to the same location in the table, for example they are not entirely unique, several additional memory accesses may be made to find the current seed being searched. Therefore, even though there may be 30M or more possible locations where a 100-bp read matches the reference genome, the hash table and hash function can quickly determine where in the reference genome that read might appear. Therefore, when using a hash table index to determine where reads are mapped and aligned, there is no need to search for the entire reference genome, for example by brute force.

[00180] Ввиду вышеизложенного, в этих целях можно использовать любую подходящую хэш-функцию, однако в различных случаях хэш-функция, используемая для определения адреса таблицы для каждой затравки, может быть проверкой с использованием циклического избыточного кода (CRC), которая может быть основана на примитивном многочлене 2k-бит, как указано выше. В альтернативном варианте реализации может быть использован сопоставитель тривиальной хэш-функции, например, путем простого отбрасывания некоторых из 2k битов. Однако в различных случаях CRC может быть более сильной хэш-функцией, которая может лучше отделять похожие затравки, избегая при этом переполнения таблицы. Это может оказаться особенно полезным в отсутствии штрафов на скорость при вычислении CRC, как в случае со специализированным программным обеспечением, описанным в настоящем документе. В таких случаях хэшированная запись, заполненная для каждой затравки, может включать в себя позицию референса, где встречается эта затравка, и флаг, указывающий, была ли она обратно комплементирована перед хэшированием.[00180] In view of the above, any suitable hash function can be used for this purpose, however, in various cases, the hash function used to determine the table address for each seed may be a cyclic redundancy check (CRC), which may be based on on a 2k-bit primitive polynomial as above. An alternative implementation could use a trivial hash function matcher, for example by simply discarding some of the 2k bits. However, in various cases, CRC may be a stronger hash function that can better separate similar seeds while avoiding table overflow. This may be particularly useful in the absence of a speed penalty when calculating the CRC, as is the case with the specialized software described in this document. In such cases, the hash entry populated for each seed may include the reference position where that seed occurs and a flag indicating whether it was back-complemented before hashing.

[00181] Результат, возвращаемый после выполнения функции картирования, может представлять собой список возможных вариантов мест, где одно или более, например, каждый рид картируется на один или более референсных геномов. Например, выходными данными каждого картированного рида может быть список возможных местоположений, где рид может быть картирован на совпадающую последовательность в референсном геноме. В различных вариантах реализации может выполняться поиск точного совпадения с референсом для по меньшей мере фрагмента, например затравки рида, если не всего рида. Соответственно, в различных случаях не требуется точного совпадения всех частей всех ридов со всеми частями референсного генома.[00181] The result returned after executing the mapping function may be a list of candidate locations where one or more, for example, each read is mapped to one or more reference genomes. For example, the output of each mapped read could be a list of possible locations where the read could be mapped to a matching sequence in the reference genome. In various embodiments, an exact reference match may be searched for at least a portion, such as a seed read, if not the entire read. Accordingly, in various cases, an exact match of all parts of all reads with all parts of the reference genome is not required.

[00182] Как описано в настоящем документе, все эти операции могут быть выполнены с помощью программного обеспечения или могут быть реализованы аппаратно, например, в интегральной схеме, такой как микросхема, например, как часть печатной платы. Например, функции одного или более алгоритмов могут быть встроены в микросхему, такую как матрица FPGA (программируемая пользователем вентильная матрица) или схема ASIC (специализированная интегральная схема), и могут быть оптимизированы для более эффективной работы за счет реализации их в таком аппаратном обеспечении. Кроме того, одна или более, например, две или все три, из этих функций картирования, могут образовывать модуль, такой как модуль картирования, который может формировать часть системы (например, конвейер), используемую в процессе определения фактической полной геномной последовательности индивида или ее части.[00182] As described herein, all of these operations may be performed in software or may be implemented in hardware, for example, in an integrated circuit such as a chip, for example as part of a printed circuit board. For example, the functions of one or more algorithms may be built into a chip, such as an FPGA (Field Programmable Gate Array) or ASIC (Application Application-Specific Integrated Circuit) circuit, and may be optimized to operate more efficiently by implementing them in such hardware. In addition, one or more, e.g., two or all three, of these mapping functions may form a module, such as a mapping module, which may form part of a system (e.g., a pipeline) used in the process of determining the actual complete genomic sequence of an individual or its parts.

[00183] Преимущество реализации хэш-модуля в аппаратном обеспечении состоит в том, что процессы могут быть ускорены и, следовательно, выполняться значительно быстрее. Например, когда программное обеспечение может включать в себя различные инструкции для выполнения одной или более из этих различных функций, реализация таких инструкций часто требует сохранения, и/или вызова, и/или считывания, и/или интерпретации данных и инструкций, например перед исполнением. Однако, как указано выше и подробно описано в настоящем документе, можно жестко смонтировать микросхему для выполнения этих функций без необходимости вызова, интерпретации и/или выполнения одной или более из последовательностей инструкций. Скорее, микросхему можно подключить для непосредственного выполнения таких функций. Соответственно, согласно различным аспектам изобретение относится к изготовляемой на заказ жестко смонтированной машине, которая может быть сконфигурирована таким образом, чтобы описанный выше модуль картирования, например, хэширования, частично или полностью был реализован с помощью одной или более сетевых схем, жестко смонтированных на микросхеме, такой как матрица FPGA или схема ASIC.[00183] The advantage of implementing a hash module in hardware is that processes can be accelerated and therefore run much faster. For example, when software may include various instructions to perform one or more of these various functions, implementation of such instructions often requires storing and/or recalling and/or reading and/or interpreting the data and instructions, for example, before execution. However, as stated above and described in detail herein, it is possible to hardwire a chip to perform these functions without having to call, interpret, and/or execute one or more of the instruction sequences. Rather, the chip can be wired to perform such functions directly. Accordingly, in various aspects, the invention relates to a custom hard-wired machine that can be configured such that the mapping, e.g., hashing module described above is partially or fully implemented by one or more network circuits hard-wired on a chip, such as an FPGA or an ASIC circuit.

[00184] Например, в различных случаях построение индекса хэш-таблицы и выполнение хэш-функции могут осуществляться на микросхеме, а в других случаях индекс хэш-таблицы может формироваться вне микросхемы, например, с помощью программного обеспечения, выполняемого главным ЦПУ, но после формирования индекс загружается в аппаратное обеспечение или иным образом становится доступны для него и используется микросхемой, например, во время работы хэш-модуля. В частности, в различных случаях микросхема, такая как матрица FPGA, может быть выполнена с возможностью жесткого связывания с главным ЦПУ, например, посредством межсоединения с низкой задержкой, такого как межсоединение QPI. Более конкретно, микросхема и ЦПУ могут быть выполнены с возможностью жесткого связывания соединения вместе таким образом, чтобы совместно использовать один или более ресурсов памяти, например DRAM, в конфигурации с обеспечением когерентности кэша. В таком случае главная память может строить и/или включать в себя индекс референса, например, хэш-таблицу, которая может храниться в главной памяти, но быть легко доступной для матрицы FPGA, например, для использования ее при выполнении хэширования или другой функции картирования. В конкретных вариантах реализации одно или более из ЦПУ и матрицы FPGA могут содержать один или более кэшей или регистров, которые могут быть соединены вместе для образования когерентной конфигурации, такой что данные, хранящиеся в одном кэше, могли быть по существу дублированы другим кэшем.[00184] For example, in various cases, construction of the hash table index and execution of the hash function may be performed on-chip, and in other cases, the hash table index may be generated off-chip, such as by software executed by the host CPU, but after generation the index is loaded into or otherwise made available to the hardware and used by the chip, for example during operation of the hash module. In particular, in various cases, a chip such as an FPGA may be configured to be hard coupled to a host CPU, for example, through a low latency interconnect such as a QPI interconnect. More specifically, the chip and the CPU may be configured to hardwire a connection together so as to share one or more memory resources, such as DRAM, in a cache coherent configuration. In such a case, the main memory may construct and/or include a reference index, such as a hash table, that may be stored in the main memory but be readily accessible to the FPGA array, such as for use when performing a hashing or other mapping function. In particular implementations, one or more of the CPU and FPGA may contain one or more caches or registers that may be connected together to form a coherent configuration such that data stored in one cache can be substantially duplicated by another cache.

[00185] Соответственно, ввиду вышеизложенного, во время выполнения одна или более предварительно построенных хэш-таблиц, например, содержащих индекс референсного генома, или создаваемая или подлежащая созданию хэш-таблица, могут быть загружены во встроенную память или могут по меньшей мере быть сделаны доступными для главного приложения, как более подробно описано ниже в настоящем документе. В таком случае риды, например, хранящиеся в формате файла FASTQ, могут быть отправлены главным приложением во встроенные движки обработки, например, память или кэш или другой регистр, связанный с ними, например, для использования движков картирования, и/или выравнивания, и/или сортировки, например, когда их результаты могут быть отправлены в функцию определения вариантов и использоваться ею. В этой связи, как указано выше, в различных случаях может быть сформировано скопление перекрывающихся затравок, например, с помощью функции формирования затравок, и выделена из секвенированных ридов, или пары ридов, и после того как затравки сформированы, их можно хэшировать, например, относительно индекса, и искать в хэш-таблице, чтобы определять позиции-кандидаты картирования ридов в референсе.[00185] Accordingly, in view of the above, at run time, one or more pre-built hash tables, for example containing an index of a reference genome, or a hash table being created or to be created, may be loaded into on-chip memory or may at least be made available for the main application, as described in more detail later in this document. In such a case, reads, for example stored in the FASTQ file format, can be sent by the host application to built-in processing engines, such as memory or cache or other register associated with them, for example, to use mapping and/or alignment engines and/ or sorting, for example, where their results can be sent to and used by the variant determination function. In this regard, as stated above, in various cases, a cluster of overlapping primers can be generated, for example, using a primer generation function, and extracted from the sequenced reads, or pairs of reads, and after the primers are formed, they can be hashed, for example, relative to index, and search the hash table to identify candidate read mapping positions in the reference.

[00186] Более конкретно, в различных случаях может быть предусмотрен модуль картирования, например, когда модуль картирования выполнен с возможностью осуществления одной или более функций картирования, например, в жестко смонтированной конфигурации. А именно, жестко смонтированный модуль картирования может быть выполнен с возможностью осуществления одной или более функций, обычно совершаемых одним или более алгоритмами, выполняемыми на ЦПУ, например, функций, которые, как правило, реализуют в основанном на программном обеспечении алгоритме, который создает дерево префиксов и/или суффиксов, выполняет преобразование Барроуза-Уилера и/или выполняет хэш-функцию, например, хэш-функцию, которая использует или иным образом опирается на индексирование хэш-таблицы, скажем, референса, например референсной геномной последовательности. В таких случаях хэш-функция может быть структурирована таким образом, чтобы реализовывать стратегию, такую как оптимизированная стратегия картирования, которая может быть осуществлена с возможностью сведения к минимуму количества выполняемых обращений к памяти, например, прямых доступов к памяти большого объема, чтобы таким образом максимально повысить использование пропускной способности встроенной или иным образом связанной памяти, которая может быть существенно ограничена, например пространством внутри архитектуры микросхемы.[00186] More specifically, a mapping module may be provided in various cases, for example, when the mapping module is configured to perform one or more mapping functions, for example, in a hard-wired configuration. Namely, the hard-wired mapping module may be configured to implement one or more functions typically performed by one or more algorithms running on a CPU, for example, functions typically implemented in a software-based algorithm that generates a prefix tree and/or suffixes, performs a Burrows-Wheeler transform, and/or performs a hash function, such as a hash function that uses or otherwise relies on indexing a hash table of, say, a reference, such as a reference genomic sequence. In such cases, the hash function may be structured to implement a strategy, such as an optimized mapping strategy, which may be implemented to minimize the number of memory accesses performed, such as large DMAs, thereby maximizing improve the utilization of on-chip or otherwise associated memory bandwidth, which may be significantly limited, such as by space within the chip architecture.

[00187] Кроме того, в определенных случаях, чтобы сделать систему более эффективной, главное ЦПУ/ГПУ/КПУ может быть жестко связано со связанным аппаратным обеспечением, например матрицей FPGA, например, посредством интерфейса с низкой задержкой, такого как Quick Path Interconnect («QPI»), чтобы обеспечивать движкам обработки интегральной схемы возможность беспрепятственного доступа к главной памяти. В конкретных случаях межсоединение между главным ЦПУ и соединенной микросхемой и ее соответствующими связанными памятями, например одним или более устройствами DRAM, может быть выполнено с возможностью поддержания когерентности кэша. Таким образом, в различных вариантах реализации может быть предусмотрена интегральная схема, которая предварительно сконфигурирована, например, предварительно смонтирована, таким образом, чтобы включать в себя одну или более цифровых логических схем, которые могут быть в монтажной конфигурации и могут быть взаимно соединены, например, с помощью множества физических электрических межсоединений, и в различных вариантах реализации жестко смонтированные цифровые логические схемы могут организованы в один или более движков обработки с образованием одного или более модулей, таких как модуль картирования.[00187] Additionally, in certain cases, to make the system more efficient, the main CPU/GPU/CPU may be hard coupled to associated hardware, such as an FPGA, for example, through a low latency interface such as a Quick Path Interconnect (“ QPI") to allow integrated circuit processing engines to easily access main memory. In specific cases, the interconnect between the main CPU and the connected chip and its associated associated memories, such as one or more DRAM devices, may be configured to maintain cache coherence. Thus, in various embodiments, an integrated circuit may be provided that is pre-configured, e.g., pre-wired, to include one or more digital logic circuits, which may be in a mounting configuration and may be interconnected, e.g. via a plurality of physical electrical interconnections, and in various embodiments, hard-wired digital logic circuits may be organized into one or more processing engines to form one or more modules, such as a mapping module.

[00188] Соответственно, в различных случаях может быть предусмотрен модуль картирования, например, в первой предварительно сконфигурированной монтажной, например, жестко смонтированной, конфигурации, где модуль картирования выполнен с возможностью осуществления различных функций картирования. Например, модуль картирования может быть выполнен с возможностью доступа по меньшей мере к некоторым из последовательности нуклеотидов в риде из множества ридов, полученных из секвенированного генетического образца субъекта, и/или генетической референсной последовательности, и/или индекса одной или более генетических референсных последовательностей в памяти или связанном с ней кэше, например, посредством интерфейса памяти, такого как межсоединение процесса, например Quick Path Interconnect и т.д. Модуль картирования может также быть выполнен с возможностью картирования рида на один или более сегментов указанных одной или более генетических референсных последовательностей, например на основе индекса. Например, в различных конкретных вариантах реализации алгоритм и/или модуль картирования, представленные в настоящем документе, могут быть использованы для построения или создания иным образом хэш-таблицы, с помощью которой можно сравнивать рид, или его часть, секвенированного генетического материала субъекта с одним или более сегментов референсного генома для получения картированных ридов. В таком случае по завершении выполнения картирования может быть выполнено выравнивание.[00188] Accordingly, in various cases, a mapping module may be provided, for example, in a first pre-configured mounting, eg, hard-wired configuration, where the mapping module is configured to perform various mapping functions. For example, the mapping module may be configured to access at least some of the nucleotide sequence in a read of a plurality of reads obtained from a sequenced genetic sample of a subject, and/or a genetic reference sequence, and/or an index of one or more genetic reference sequences in memory or a cache associated with it, for example, via a memory interface such as a process interconnect, such as Quick Path Interconnect, etc. The mapping module may also be configured to map a read to one or more segments of said one or more genetic reference sequences, for example based on an index. For example, in various specific embodiments, the algorithm and/or mapping module provided herein may be used to construct or otherwise create a hash table that can be used to compare a read, or portion thereof, of a subject's sequenced genetic material with one or more more reference genome segments to obtain mapped reads. In such a case, alignment can be performed upon completion of the mapping.

[00189] Например, после того, как определено, где находятся все возможные совпадения затравок с референсным геномом, необходимо определить, какое из всех этих возможных местоположений, где возможно совпадение данного рида, действительно является правильной позицией, с которой он выровнен. Таким образом, после картирования может быть множество позиций, где одно или более ридов, по-видимому, совпадают с референсным геномом. Следовательно, могут существовать множество затравок, которые, как представляется, указывают в точности одно и то же, например, они могут совпадать в точности с одной и той же позицией на референсе, если учитывать позицию затравки в риде. Поэтому для каждого данного рида необходимо определить подлинное выравнивание. Это определение можно осуществить несколькими различными способами. [00189] For example, once it has been determined where all the possible primer matches to the reference genome are, it is necessary to determine which of all those possible locations where a given read could possibly match is actually the correct position to which it is aligned. Thus, after mapping, there may be many positions where one or more reads appear to match the reference genome. Therefore, there may be multiple primers that appear to indicate exactly the same thing, for example they may match exactly the same position on the reference given the position of the primer in the read. Therefore, for any given read, the true alignment must be determined. This determination can be made in several different ways.

[00190] В одном случае можно оценить все риды, чтобы определить их правильное выравнивание относительно референсного генома на основе позиций, указанных каждой затравкой из рида, которое вернуло информацию о позиции во время процесса картирования, например, хэшированного поиска. Однако в различных случаях перед выполнением выравнивания можно выполнить функцию фильтрации затравочной цепочки на одной или более затравок. Например, в определенных случаях затравки, связанные с данным ридом, которые, по-видимому, картируются на одно и то же общее место в референсном геноме, могут быть агрегированы в одну цепочку, которая ссылается на ту же общую область. Все затравки, связанные с одним ридом, могут быть сгруппированы в одну или более затравочных цепочек, чтобы каждая затравка входила только в одну цепочку. Именно такие цепочки затем приводят к выравниваю рида с каждой указанной позицией в референсном геноме.[00190] In one case, all reads can be evaluated to determine their correct alignment to a reference genome based on the positions indicated by each seed from the read that returned position information during a mapping process, such as a hashed search. However, in various cases, it is possible to perform a seed chain filter function on one or more seeds before performing the alignment. For example, in certain cases, primers associated with a given read that appear to map to the same general location in the reference genome may be aggregated into a single strand that references the same general region. All seeds associated with a single read can be grouped into one or more seed chains, so that each seed is included in only one chain. It is these chains that then lead to the alignment of the read with each specified position in the reference genome.

[00191] В частности, в различных случаях все затравки, которые имеют одни и те же подтверждающие данные, указывающие на то, что они принадлежат одним и тем же общим местоположениям в референсе, могут быть собраны вместе для формирования одной или более цепочек. Поэтому затравки, которые группируются вместе или по меньшей создают впечатление, что они окажутся рядом друг с другом в референсном геноме, например, в пределах определенной полосы, будут сгруппированы в цепочку затравок, а те, что находятся за пределами этой полосы, будут превращены в другую цепочку затравок. После того, как эти различные затравки агрегированы в одну или более различных затравочных цепочек, можно определить, какая из цепочек действительно представляет правильную цепочку, подлежащую выравниванию. Этом можно сделать, по меньшей мере частично, с помощью алгоритма фильтрации, который представляет собой эвристический алгоритм, выполненный с возможностью устранения слабых затравочных цепочек, с большой вероятностью не являющихся верными.[00191] In particular, in various cases, all seeds that have the same supporting data indicating that they belong to the same general locations in the reference can be collected together to form one or more chains. Therefore, primers that cluster together or at least give the impression that they will end up next to each other in the reference genome, for example within a certain band, will be grouped into a chain of primers, and those outside that band will be converted into another a chain of seeds. Once these different seeds are aggregated into one or more different seed strands, it can be determined which strand actually represents the correct strand to be aligned. This can be done, at least in part, by using a filtering algorithm, which is a heuristic algorithm designed to eliminate weak seeds that have a high probability of not being true.

[00192] Результатом выполнения одной из этих функций картирования, фильтрации и/или редактирования является список ридов, который для каждого рида содержит список всех возможных местоположений, в которых рид может совпасть с референсным геномом. Следовательно, функцию картирования можно выполнить так, чтобы быстро определить, где риды из файла изображения, файла BCL и/или файла FASTQ, полученного из секвенатора, картируются на референсный геном, например, куда в полном геноме картируются различные риды. Однако при наличии ошибки в любом из ридов или генетической вариации можно не получить точного совпадения с референсом и/или могут быть несколько мест, с которыми, по-видимому, совпадают одно или более ридов. Поэтому необходимо определить, где различные риды действительно выровнены относительно генома в целом.[00192] The result of performing one of these mapping, filtering and/or editing functions is a list of reads, which for each read contains a list of all possible locations at which the read could match the reference genome. Therefore, the mapping function can be performed to quickly determine where reads from an image file, a BCL file, and/or a FASTQ file obtained from a sequencer map to a reference genome, for example, where different reads map in the complete genome. However, if there is an error in any of the reads or genetic variation, there may not be an exact match to the reference and/or there may be multiple locations that one or more reads appear to match. Therefore, it is necessary to determine where different reads are actually aligned relative to the genome as a whole.

[00193] Соответственно, после картирования, и/или фильтрации, и/или редактирования определены позиции местоположений для большого количества ридов, причем для некоторых из отдельных ридов определены множество позиций местоположений, и теперь нужно установить, какие из всех возможных местоположений в действительности являются истинными или наиболее вероятными местоположениями, с которым выравниваются различные риды. Такое выравнивание может быть выполнено с помощью одного или более алгоритмов, таких как алгоритм динамического программирования, который сопоставляет картированные риды с референсным геномом и выполняет функцию выравнивания на нем. В качестве примера функция выравнивания сравнивает одно или более, например все риды с референсом, скажем, путем наложения одного на другое в графическом режиме, например, в таблице, такой как виртуальный массив или матрица, где последовательность одного из референсных геномов или картированных ридов помещают на одно измерение или ось, например, горизонтальную ось, а другую помещают на противоположные измерения или ось, такую как вертикальная ось. Затем поверх массива пропускают воображаемый фронт волны оценки, чтобы определить выравнивание ридов относительно референсного генома, например, путем вычисления оценок выравнивания для каждой ячейки в матрице.[00193] Accordingly, after mapping and/or filtering and/or editing, location positions have been determined for a large number of reads, with multiple location positions defined for some of the individual reads, and it is now necessary to determine which of all possible locations are actually true or the most likely locations to which different reads are aligned. Such alignment can be performed using one or more algorithms, such as a dynamic programming algorithm, which maps mapped reads to a reference genome and performs an alignment function on it. As an example, the alignment function compares one or more, for example, all reads to a reference, say, by overlaying one on top of another in a graphical mode, for example, in a table such as a virtual array or matrix, where the sequence of one of the reference genomes or mapped reads is placed on one dimension or axis, such as the horizontal axis, and the other is placed on the opposite dimensions or axis, such as the vertical axis. An imaginary scoring wavefront is then passed over the array to determine the alignment of the reads relative to a reference genome, for example by calculating alignment scores for each cell in the matrix.

[00194] Фронт волны оценки представляет одну или более, например, все, ячейки матрицы или части тех ячеек, которые могут быть оценены независимо друг от друга и/или одновременно в соответствии с правилами динамического программирования, применимыми в алгоритме выравнивания, например Смита-Ватермана или Нидлмана-Вунша, или родственных алгоритмах. Оценки выравнивания можно сравнить последовательно или в других порядках, например, путем вычисления всех оценок в верхнем ряду слева направо, затем всех оценок в следующем ряду слева направо и т.д. При таком подходе развертывающийся по диагонали диагональный фронт волны представляет оптимальную последовательность пакетов оценок, вычисляемых одновременно или параллельно в серии этапов фронта волны.[00194] The evaluation wavefront represents one or more, for example, all, cells of the matrix or portions of those cells that can be evaluated independently of each other and/or simultaneously in accordance with the rules of dynamic programming applicable in the alignment algorithm, for example Smith-Waterman or Needleman-Wunsch or related algorithms. Alignment scores can be compared sequentially or in other orders, for example by calculating all scores in the top row from left to right, then all scores in the next row from left to right, etc. In this approach, a diagonally unfolding diagonal wavefront represents an optimal sequence of batches of estimates computed simultaneously or in parallel in a series of wavefront stages.

[00195] Например, в одном варианте реализации окно референсного генома, содержащее сегмент, на который был картирован рид, может быть помещено на горизонтальную ось, а рид может быть расположен на вертикальной оси. Подобным образом формируют массив или матрицу, например, виртуальную матрицу, в результате чего нуклеотид в каждой позиции в риде можно сравнить с нуклеотидом в каждой позиции в окне референса. По мере прохождения фронта волны по массиву рассматриваются все потенциальные пути выравнивания рида с окном референса, в том числе нужно ли внести какие-либо изменения в одну последовательностью, чтобы рид совпал с референсной последовательностью, например, путем замены одного или более нуклеотидов рида на другие нуклеотиды, или вставки одного или более нуклеотидов в одну последовательность, или удаления одного или более нуклеотидов из одной последовательности.[00195] For example, in one embodiment, a reference genome window containing the segment to which the read has been mapped may be placed on the horizontal axis, and the read may be placed on the vertical axis. In a similar way, an array or matrix is formed, for example, a virtual matrix, as a result of which the nucleotide at each position in the read can be compared with the nucleotide at each position in the reference window. As the wave front passes through the array, all potential ways to align the read with the reference window are considered, including whether any changes need to be made to one sequence to make the read match the reference sequence, for example, by replacing one or more nucleotides of the read with other nucleotides , or the insertion of one or more nucleotides into one sequence, or the deletion of one or more nucleotides from one sequence.

[00196] Формируют оценку выравнивания, представляющую степень изменений, которые потребовалось бы внести для достижения точного выравнивания, причем эта оценка и/или другие связанные данные могут быть сохранены в данных ячейках массива. Каждая ячейка массива соответствует вероятности того, что нуклеотид в ее позиции на оси ридов выровнен с нуклеотидом в ее позиции на оси референса, а оценка, сформированная для каждой ячейки, представляет частичное выравнивание, заканчивающееся позициями ячейки в риде и окне референса. Наивысшая оценка, сформированная в любой ячейке, представляет лучшее общее выравнивание рида относительно окна референса. В различных случаях выравнивание может быть глобальным, где весь рид должен быть выровнен относительно некоторой части окна референса, например, с помощью алгоритма Нидлмана-Вунша или подобного алгоритма; или в других случаях выравнивание может быть локальным, где только часть рида может быть выровнено относительно части окна референса, например, с помощью алгоритма Смита-Ватермана или подобного алгоритма.[00196] An alignment estimate representing the extent of changes that would be required to achieve accurate alignment is generated, which estimate and/or other associated data may be stored in these array cells. Each array cell corresponds to the probability that a nucleotide at its position on the read axis is aligned with a nucleotide at its position on the reference axis, and the score generated for each cell represents the partial alignment ending with the cell's positions in the read and reference window. The highest score generated in any cell represents the best overall alignment of the read relative to the reference window. In various cases, the alignment may be global, where the entire read must be aligned to some part of the reference window, for example using the Needleman-Wunsch algorithm or a similar algorithm; or in other cases the alignment may be local, where only part of the read may be aligned to part of the reference window, for example using the Smith-Waterman algorithm or similar algorithm.

[00197] Соответственно, в различных случаях функция выравнивания может быть выполнена, например, на данных, полученных из модуля картирования. Таким образом, в различных случаях функция выравнивания может образовывать модуль, такой как модуль выравнивания, который может формировать часть системы (например, конвейер), которую используют, например, в дополнение к модулю картирования, в процессе определения фактической полной геномной последовательности индивида или ее части. Например, результат, возвращаемый после выполнения функции картирования, например, из модуля картирования, такой как список возможных вариантов мест, где одно или более или все риды картируются на одну или более позиций в одном или более референсных геномов, может быть использован функций выравнивания для определения фактического выравнивания последовательности секвенированной ДНК субъекта.[00197] Accordingly, in various cases, the alignment function can be performed, for example, on data obtained from the mapping module. Thus, in various cases, the alignment function may form a module, such as an alignment module, which may form part of a system (e.g., a pipeline) that is used, for example, in addition to the mapping module, in the process of determining the actual complete genomic sequence of an individual or part thereof . For example, the result returned after executing a mapping function, such as from a mapping module, such as a list of candidate locations where one or more or all reads map to one or more positions in one or more reference genomes, can be used by the alignment functions to determine the actual sequence alignment of the subject's sequenced DNA.

[00198] Такая функция выравнивания всегда может пригодиться, поскольку, как описано выше, часто по ряду различных причин секвенированные риды не всегда совпадают в точности с референсным геномом. Например, в одном или более ридов может быть ОНП (однонуклеотидный полиморфизм), например, замена одного нуклеотида другим в одной позиции; может быть «индел» (indel), инсерция или делеция одного или более оснований в одной или более последовательностях рида, причем эта инсерция или делеция не присутствует в референсном геноме; и/или может быть ошибка секвенирования (например, ошибки в приготовлении образца, и/или риде секвенатора, и/или выходных данных секвенатора и т.д.), вызывающая одну или более из этих очевидных вариаций. Соответственно, когда рид отличается от референса, например вследствие ОНП или индела, причина может быть в том, что референс отличается от истинной последовательности ДНК, взятой в качестве образца, или в том, что рид отличается от истинной последовательности ДНК, взятой в качестве образца. Проблема состоит в том, чтобы выяснить, как правильно выровнять риды на референсный геномом с учетом того факта, что, по всей вероятности, между этими двумя последовательностями будет множество различных отличий.[00198] Such an alignment function can always be useful because, as described above, often, for a number of different reasons, sequenced reads do not always match exactly with the reference genome. For example, one or more reads may contain an SNP (single nucleotide polymorphism), for example, the replacement of one nucleotide by another at one position; may be an "indel", an insertion or deletion of one or more bases in one or more read sequences, and this insertion or deletion is not present in the reference genome; and/or there may be a sequencing error (eg, errors in sample preparation and/or sequencer read and/or sequencer output, etc.) causing one or more of these apparent variations. Accordingly, when a read differs from the reference, for example due to a SNP or an indel, the reason may be that the reference differs from the true sample DNA sequence, or that the read differs from the true sample DNA sequence. The challenge is to figure out how to properly align the reads to the reference genome, given the fact that there will likely be many different differences between the two sequences.

[00199] В различных случаях входными данными функции выравнивания, например, из функции картирования, такой как дерево префиксов/суффиксов, или преобразование Барроуза-Уилера, или хэш-таблица и/или хэш-функция, может быть список возможных вариантов мест, где одно или более ридов могут быть картированы на одну или более позиций одного или более референсных последовательностей. Например, любой данный рид может совпадать с любым количеством позиций в референсном геноме, например, в 1 местоположении, или 16, или 32, или 64, или 100, или 500, или 1000 или более местоположениях, где данный рид картируется на геном. Однако любой отдельный рид был получено, например, секвенирован, только из одной определенной части генома. Следовательно, чтобы найти, откуда был получен данный конкретный рид, можно выполнить функцию выравнивания, например, выравнивание Смита-Ватермана с гэпами и без гэпов, выравнивание Нидлмана-Вунша и т.д., чтобы определить, где в геноме в действительности были получены одно или более ридов, например, путем сравнения всех возможных местоположений, где имеет место совпадение, и определения того, какой из всех возможных вариантов является наиболее вероятным местоположением, из которого был секвенирован рид, исходя из наивысшей оценки выравнивания местоположений.[00199] In various cases, the input to an alignment function, for example from a mapping function such as a prefix/suffix tree, or a Burrows-Wheeler transform, or a hash table and/or a hash function, may be a list of possible locations where one or more reads may be mapped to one or more positions of one or more reference sequences. For example, any given read may match any number of positions in the reference genome, such as 1 location, or 16, or 32, or 64, or 100, or 500, or 1000 or more locations where a given read maps to the genome. However, any individual read was obtained, for example sequenced, from only one specific part of the genome. Therefore, to find where a given read came from, one can perform an alignment function, such as a Smith-Waterman gapped and non-gapped alignment, a Needleman-Wunsch alignment, etc., to determine where in the genome one was actually obtained or more reads, for example, by comparing all possible locations where a match occurs and determining which of all possible options is the most likely location from which the read was sequenced based on the highest location alignment score.

[00200] Как было указано, для выполнения такой функции выравнивания обычно используют алгоритм. Например, для выравнивания двух или более последовательностей друг с другом можно использовать алгоритм выравнивания Смита-Ватермана и/или Нидлмана-Вунша. В этом случае они могут быть использованы таким образом, чтобы для любой данной позиции, где рид картируется на референсный геном, определить вероятности того, что картирование действительно выполнено в позиции, откуда происходит рид. Как правило, эти алгоритмы выполнены с возможностью осуществления программным обеспечением, однако в различных случаях, таких как представленные в настоящем документе, один или более из этих алгоритмов может быть выполнен с возможностью осуществления в аппаратном обеспечении, как более подробно описано ниже в настоящем документе.[00200] As stated, an algorithm is typically used to perform such an alignment function. For example, the Smith-Waterman and/or Needleman-Wunsch alignment algorithm can be used to align two or more sequences to each other. In this case, they can be used in such a way that, for any given position where a read is mapped to a reference genome, the probabilities are determined that mapping is actually performed at the position where the read originates. Typically, these algorithms are implemented in software, however, in various cases, such as those presented herein, one or more of these algorithms may be implemented in hardware, as described in more detail below herein.

[00201] В частности, функцию выравнивания используют по меньшей мере частично для выравнивания одного или более, например, всех, ридов с референсным геномом, несмотря на наличие одной или более позиций несовпадений, например, ОНП, инсерций, делеций, структурных артефактов и т.д., чтобы определить, где эти риды, по всей видимости, правильно впишутся в геномом. Например, одно или более ридов сравнивают с референсным геномом и определяют наилучшее возможное совпадение рида с геномом, учитывая при этом замены, и/или инделы, и/или структурные варианты. Однако, чтобы лучше определять, какая из модифицированных версий рида лучше всего вписывается в референсный геном, необходимо учитывать предполагаемые изменения, и поэтому можно также выполнить функцию оценки.[00201] In particular, the alignment function is used at least in part to align one or more, e.g., all, reads to a reference genome despite the presence of one or more mismatch positions, e.g., SNPs, insertions, deletions, structural artifacts, etc. etc. to determine where these reads are likely to fit correctly into the genome. For example, one or more reads are compared to a reference genome and the best possible match of the read to the genome is determined, taking into account substitutions and/or indels and/or structural variants. However, to better determine which modified version of a read fits best into the reference genome, the putative changes need to be taken into account, and therefore a scoring function can also be performed.

[00202] Например, можно выполнить функцию оценки, например, как часть общей функции выравнивания, в рамках которой модуль выравнивания выполняет свою функцию и вводит одно или более изменений в последовательность, сравниваемую с другой последовательностью, например, чтобы достичь более хорошего или наилучшего соответствия между ними, при этом для каждого изменения, вносимого для достижения более хорошего выравнивания, из начальной оценки вычитают некоторое число, например, либо из идеальной оценки, либо из нулевой начальной оценки, таким образом, чтобы при выполнении выравнивания определять также оценку этого выравнивания, например, когда обнаруживают совпадения, оценку увеличивают, а при каждом внесенном изменении накладывают штраф, и таким образом можно определять лучшее возможно соответствие для возможных выравниваний путем выявления из всех возможных модифицированных ридов того рида, соответствие которого геному имеет наивысшую оценку. Соответственно, в различных случаях функция выравнивания может быть выполнена с возможностью определения лучшей комбинации изменений, которые нужно внести в рид (-ы) для достижения выравнивания с наивысшей оценкой, и тогда это выравнивание может быть определено как правильное или наиболее вероятное выравнивание.[00202] For example, it is possible to perform an evaluation function, for example as part of an overall alignment function, in which the alignment module performs its function and introduces one or more changes to a sequence being compared with another sequence, for example, to achieve a better or better match between by them, and for each change made to achieve a better alignment, a number is subtracted from the initial score, for example, either from the ideal score or from the zero initial score, so that when the alignment is performed, the assessment of this alignment is also determined, for example, When matches are found, the score is increased, and each change made is penalized, so that the best possible match for possible alignments can be determined by identifying, from all possible modified reads, the read that has the highest score for its match to the genome. Accordingly, in various cases, the alignment function may be configured to determine the best combination of changes to make to the read(s) to achieve the alignment with the highest score, and then that alignment may be determined to be the correct or most likely alignment.

[00203] Поэтому, ввиду вышеизложенного, существуют по меньшей мере две цели, которые могут быть достигнуты за счет выполнения функции выравнивания. Одна из них - это отчет о наилучшем выравнивании, включающий в себя позицию в референсном геноме и описание изменений, которые необходимы для того, чтобы рид совпал с референсным сегментом в этой позиции, а другая - оценка качества выравнивания. Например, в различных случаях выходными данными из модуля выравнивания может быть Compact Idiosyncratic Gapped Alignment Report, например, строка CIGAR, где выходная строка CIGAR представляет собой отчет, подробно описывающий все изменения, которые вносили в риды, чтобы достичь для них наиболее соответствующего выравнивания, например, подробные инструкции по выравниванию, указывающие, каким образом исследуемая последовательность действительно выравнивает с референсом. Вывод такой строки CIGAR может быть полезным на последующих стадиях обработки для более хорошего определения того, что для данной геномной нуклеотидной последовательности индивида прогнозированные вариации в сравнении с референсным геномом действительно являются истинными вариациями, а не просто обусловлены ошибкой машины, программного обеспечения или человека.[00203] Therefore, in view of the above, there are at least two purposes that can be achieved by performing the alignment function. One is a report of the best alignment, including a position in the reference genome and a description of the changes that are necessary for the read to match the reference segment at that position, and the other is an assessment of the quality of the alignment. For example, in various cases, the output from the alignment module may be a Compact Idiosyncratic Gapped Alignment Report, such as a CIGAR string, where the CIGAR string output is a report detailing all the changes that were made to the reads to achieve the most appropriate alignment for them, e.g. , detailed alignment instructions indicating how the sequence of interest actually aligns with the reference. The output of such a CIGAR string can be useful in subsequent processing steps to better determine that, for a given individual's genomic nucleotide sequence, the predicted variations relative to the reference genome are indeed true variations and not simply due to machine, software, or human error.

[00204] Как было указано выше, в различных вариантах реализации выравнивание, как правило, выполняют последовательно, причем алгоритм и/или прошивка принимают данные последовательности рида (например, из модуля картирования), принадлежащие риду, и одно или более возможных местоположений, где этот рид потенциально может быть картирован на один или более референсных геномов, а также принимают данные геномной последовательности (например из одной или более памятей, такой как связанные DRAM), относящиеся к одной или более позиций в одном или более референсных геномах, на которые может быть картирован рид. В частности, в различных вариантах реализации модуль картирования обрабатывает риды, например, из файла FASTQ, и картирует каждое из них на одну или более позиций в референсном геноме, на которую они, возможно, выровнены. Затем выравниватель берет эти прогнозированные позиции и использует их для выравнивания ридов на референсный геном, например, путем построения виртуального массива, с помощью которого риды можно сравнивать с референсным геномом.[00204] As discussed above, in various implementations, alignment is typically performed sequentially, with the algorithm and/or firmware receiving read sequence data (e.g., from a mapping module) belonging to the read, and one or more possible locations where that read can potentially be mapped to one or more reference genomes, and also receives genomic sequence data (e.g., from one or more memories, such as linked DRAMs) relating to one or more positions in one or more reference genomes that can be mapped to read. Specifically, in various embodiments, the mapping module processes reads, for example from a FASTQ file, and maps each of them to one or more positions in the reference genome to which they may be aligned. The aligner then takes these predicted positions and uses them to align the reads to a reference genome, for example by constructing a virtual array against which the reads can be compared to the reference genome.

[00205] При выполнении этой функции выравниватель оценивает каждую картированную позицию для каждого отдельного рида и, в частности, оценивает те риды, которые картированы на множество возможных местоположений в референсном геноме, и для каждой позиции оценивает возможность того, что она является правильной. Затем он сравнивает лучшие оценки, например, две лучшие оценки, и принимает решение о том, где действительно выравнивается конкретный рид. Например, при сравнении первой и второй лучших оценок выравнивания выравниватель проверяет разницу между оценками, и если разница между ними большая, то оценка достоверности того, что позиция с большей оценкой является правильной, будет высокой. Однако, если разница между ними маленькая, например, нулевая, то оценка достоверности выбора из двух позиций одной из них в качестве правильной позиции, из которой получен рид, низкая и, возможно, будет полезна дополнительная обработка, чтобы четко определить истинное местоположение в референсном геноме, из которого получен рид.[00205] In performing this function, the aligner evaluates each mapped position for each individual read and, in particular, evaluates those reads that are mapped to many possible locations in the reference genome, and for each position evaluates the possibility that it is correct. It then compares the best estimates, such as the two best estimates, and makes a decision about where a particular read actually aligns. For example, when comparing the first and second best alignment scores, the aligner checks the difference between the scores, and if the difference between them is large, then the confidence rating that the position with the higher score is correct will be high. However, if the difference between them is small, for example zero, then the confidence level of choosing one of the two positions as the correct position from which the read was obtained is low and additional processing may be useful to clearly determine the true location in the reference genome , from which the read was obtained.

[00206] Поэтому выравниватель, в частности, ищет наибольшую разницу между первой и второй лучшими оценками достоверности для принятия решения о том, что данный рид картируется на данное местоположение в референсном геноме. В идеале оценка лучшего возможного варианта выравнивания значительно выше оценки второго лучшего выравнивания для данной последовательности. Существуют множество различных способов реализации метода оценки выравнивания, например, можно оценивать каждую ячейку массива или подмножество ячеек, например, в соответствии со способами, описанными в настоящем документе. В различных случаях параметры оценки совпадений нуклеотидов, несовпадений нуклеотидов, инсерций и делеций могут иметь любые различные положительные, отрицательные или нулевые значения. В различных случаях эти параметры оценки могут быть изменены на основе имеющейся информации. Например, точные выравнивания могут быть достигнуты путем изменения параметров оценки, в том числе любого или всех из оценок совпадения нуклеотидов, оценок несовпадения нуклеотидов, штрафов на гэп (инсерция и/или делеция), штрафов на открытие гэпа и/или штрафов на продление гэпов, в соответствии с оценкой качества основания, связанной с текущим нуклеотидом или позицией рида. Например, бонусы и/или штрафы оценки могут быть уменьшены, когда оценка качества основания указывает на высокую вероятность наличия ошибок секвенирования или других ошибок. Чувствительную к качеству основания оценку можно реализовать, например, с помощью фиксированной или выполненной с возможность конфигурирования таблицы подстановки, доступной с помощью оценки качества основания, которая возвращает соответствующие параметры оценки.[00206] Therefore, the aligner specifically looks for the largest difference between the first and second best confidence scores to decide that a given read maps to a given location in the reference genome. Ideally, the score of the best possible alignment is significantly higher than the score of the second best alignment for a given sequence. There are many different ways to implement an alignment evaluation method, for example, you can evaluate each cell of an array or a subset of cells, for example, in accordance with the methods described herein. In various cases, the scoring parameters for nucleotide matches, nucleotide mismatches, insertions, and deletions may have any number of different positive, negative, or zero values. In various cases, these evaluation parameters may be modified based on available information. For example, accurate alignments can be achieved by changing scoring parameters, including any or all of nucleotide match scores, nucleotide mismatch scores, gap penalties (insertion and/or deletion), gap opening penalties, and/or gap extension penalties, according to the base quality score associated with the current nucleotide or read position. For example, scoring bonuses and/or penalties may be reduced when the base quality score indicates a high likelihood of sequencing or other errors. The ground quality-sensitive assessment can be implemented, for example, using a fixed or configurable lookup table accessible by the ground quality score, which returns the corresponding assessment parameters.

[00207] В случае аппаратной реализации в интегральной схеме, такой как матрица FPGA или схема ASIC, фронт волны оценки может быть реализован в виде линейного массива ячеек оценки, например, 16 ячеек, или 32 ячейки, или 64 ячейки, или 128 ячеек и т.п. Каждая из ячеек оценки может быть построена из цифровых логических элементов в монтажной конфигурации для вычисления оценок выравнивания. Таким образом, для каждого этапа фронта волны, например, каждого тактового цикла или некоторых других фиксированных или переменных единиц времени, каждая из ячеек оценки, или часть ячеек, вычисляет оценку или оценки, требуемые для новой ячейки в виртуальной матрице выравнивания. Теоретически различные ячейки оценки считаются находящимися в различных позициях матрицы выравнивания, соответствующих фронту волны оценки, как отмечалось в настоящем документе, например, вдоль прямой линии, проходящей из нижней левой части в верхнюю правую часть матрицы. Как известно из области разработки цифровых логических устройств, физические ячейки оценки и составляющая их цифровая логика не должны быть физически расположены подобным образом на интегрированной схеме.[00207] When implemented in hardware in an integrated circuit such as an FPGA or ASIC, the evaluation wavefront may be implemented as a linear array of evaluation cells, such as 16 cells, or 32 cells, or 64 cells, or 128 cells, etc. .P. Each of the evaluation cells can be constructed from digital gates in a wiring configuration to compute alignment estimates. Thus, for each wavefront stage, such as each clock cycle or some other fixed or variable time unit, each of the evaluation cells, or subset of cells, calculates the evaluation or evaluations required for a new cell in the virtual alignment matrix. Theoretically, different evaluation cells are considered to be at different positions in the alignment matrix corresponding to the front of the evaluation wave, as noted herein, for example, along a straight line extending from the lower left to the upper right of the matrix. As is known from the field of digital logic device design, the physical evaluation cells and their constituent digital logic do not have to be physically located in this manner on an integrated circuit.

[00208] Соответственно, по мере того, как фронт волны шаг за шагом прокатывается по виртуальной матрице выравнивания, воображаемые позиции ячеек оценки соответствующим образом обновляют каждую ячейку, например, умозрительно «перемещаются» на шаг вправо или, например, на шаг вниз в матрице выравнивания. Все ячейки оценки совершают одинаковое относительное воображаемое перемещение, сохраняя порядок диагонального фронта волны. Всякий раз, когда фронт волны перемещается в новое положение, например, за счет шага в вертикальном направлении вниз или шага в горизонтальном направлении вправо в матрице, ячейки оценки прибывают в новые воображаемые позиции и вычисляют оценки выравнивания для ячеек виртуальной матрицы выравнивания, в которые они вошли. В такой реализации соседние ячейки оценки в линейном массиве соединены для обмена исследуемыми (принадлежащими риду) нуклеотидами, референсными нуклеотидами и ранее вычисленными оценками выравнивания. Нуклеотиды окна референса могут последовательно подаваться на один конец фронта волны, например, в верхнюю правую ячейку оценки в линейном массиве, и могут последовательно сдвигаться оттуда вниз вдоль фронта волны, чтобы в любой данный момент времени сегмент референсных нуклеотидов, равный по длине количеству ячеек оценки, присутствовал в этих ячейках, по одному следующему один за другим нуклеотидов в каждой следующей одна за другой ячейке.[00208] Accordingly, as the wave front sweeps step by step through the virtual alignment matrix, the imaginary positions of the evaluation cells update each cell accordingly, for example, speculatively "moving" a step to the right or, for example, a step down in the alignment matrix . All evaluation cells undergo the same relative imaginary movement, maintaining the order of the diagonal wave front. Whenever a wave front moves to a new position, for example by a step in the vertical direction down or a step in the horizontal direction to the right in the matrix, the scoring cells arrive at the new imaginary positions and compute alignment scores for the virtual alignment matrix cells they entered . In such an implementation, adjacent scoring cells in a linear array are connected to exchange test (belonging to a read) nucleotides, reference nucleotides, and previously calculated alignment scores. The reference window nucleotides can be sequentially applied to one end of the wave front, for example, the top right score cell in a linear array, and can be sequentially shifted from there down along the wave front so that at any given time a segment of reference nucleotides equal in length to the number of score cells is was present in these cells, one successive nucleotide in each successive cell.

[00209] Например, всякий раз, когда фронт волны перемещается на шаг в горизонтальном направлении, следующий референсный нуклеотид подают в верхнюю правую ячейку, а другие референсные нуклеотиды сдвигаются вниз влево по фронту волны. Этот сдвиг референсных нуклеотидов может быть реальным отражением воображаемого перемещения фронта волны ячеек оценки вправо в матрице выравнивания. Таким образом, нуклеотиды рида могут последовательно подаваться на противоположный конец фронта волны, например, в нижнюю левую ячейку оценки в линейном массиве, и могут последовательно сдвигаться оттуда вверх вдоль фронта волны, чтобы в любой данный момент времени сегмент исследуемых нуклеотидов, равный по длине количеству ячеек оценки, присутствовал в этих ячейках, по одному следующему один за другим нуклеотидов в каждой следующей одна за другой ячейке. Аналогичным образом всякий раз, когда фронт волны перемещается на шаг в вертикальном направлении, следующий исследуемый нуклеотид подают в нижнюю левую ячейку, а другие исследуемые нуклеотиды сдвигаются вверх вправо по фронту волны. Этот сдвиг исследуемых нуклеотидов может быть реальным отражением воображаемого перемещения фронта волны ячеек оценки вниз в матрице выравнивания. Соответственно, подавая команду на сдвиг референсных нуклеотидов, можно перемещать фронт волны на шаг в горизонтальном направлении, а подавая команду на сдвиг исследуемых нуклеотидов, можно перемещать фронт волны на шаг в вертикальном направлении. Таким образом, для получения в целом диагонального перемещения фронта волны, например, чтобы следовать типичному выравниванию исследуемой и референсной последовательностей без инсерций или делеций, можно попеременно подавать команды на перемещение фронта волны на шаг в вертикальном и горизонтальном направлениях.[00209] For example, whenever the wave front moves one step in the horizontal direction, the next reference nucleotide is fed into the upper right cell, and other reference nucleotides are moved down the left along the wave front. This shift of reference nucleotides may be a real reflection of the imaginary movement of the wavefront of the score cells to the right in the alignment matrix. Thus, the nucleotides of the read can be sequentially fed to the opposite end of the wave front, for example, into the lower left evaluation cell in a linear array, and can be sequentially shifted from there upward along the wave front so that at any given time a segment of the nucleotides under study equal in length to the number of cells estimated to be present in these cells, one successive nucleotide in each successive cell. Likewise, whenever the wave front moves one step in the vertical direction, the next nucleotide of interest is fed into the lower left cell, and other nucleotides of interest are moved up to the right along the wave front. This shift of the test nucleotides may be a real reflection of the imaginary downward movement of the wavefront of the score cells in the alignment matrix. Accordingly, by issuing a command to shift reference nucleotides, one can move the wave front one step in the horizontal direction, and by issuing a command to shift the test nucleotides, one can move the wave front one step in the vertical direction. Thus, to obtain an overall diagonal movement of the wavefront, for example to follow a typical alignment of the test and reference sequences without insertions or deletions, the wavefront can be commanded alternately to move the wavefront one step in the vertical and horizontal directions.

[00210] Соответственно, соседние ячейки оценки в линейном массиве могут быть соединены для обмена ранее вычисленными оценками выравнивания. В различных алгоритмах оценки выравнивания, таких как алгоритм Смита-Ватермана или Нидлмана-Вунша и т.п., оценки в каждой ячейке виртуальной матрицы выравнивания могут быть вычислены с помощью раннее вычисленных оценок в других ячейках матрицы, например, в трех ячейках, расположенных непосредственно слева от текущей ячейки, выше текущей ячейки и вверх влево по диагонали от текущей ячейки. Когда ячейка оценки вычисляет новые оценки для другой позиции матрицы, в которую она входит, она должна извлечь такие ранее вычисленные оценки, соответствующие таким другим позициям матрицы. Эти ранее вычисленные оценки могут быть получены из хранилища ранее вычисленных оценок внутри этой же ячейки и/или из хранилища ранее вычисленных оценок в одной или двух соседних ячейках оценки в линейном массиве. Дело в том, что три вносящие вклад в оценку позиции в виртуальной матрице выравнивания (непосредственно слева, сверху и сверху слева по диагонали) могли быть оценены либо текущей ячейкой оценки, либо одной из ее соседних ячеек оценки в линейном массиве.[00210] Accordingly, adjacent scoring cells in a linear array can be connected to exchange previously computed alignment scores. In various alignment estimation algorithms, such as the Smith-Waterman or Needleman-Wunsch algorithm, etc., the scores in each cell of the virtual alignment matrix can be calculated using previously calculated scores in other matrix cells, for example, in three cells located directly to the left of the current cell, above the current cell, and up to the left diagonally from the current cell. When a score cell computes new scores for another matrix position in which it is included, it must retrieve such previously computed scores corresponding to such other matrix positions. These previously computed scores may be obtained from a store of previously computed scores within the same cell and/or from a store of previously computed scores in one or two adjacent score cells in the linear array. The point is that the three scoring-contributing positions in the virtual alignment matrix (directly left, top, and top left diagonally) could have been scored either by the current score cell or by one of its neighboring score cells in the linear array.

[00211] Например, ячейка непосредственно слева в матрице могла быть оценена текущей ячейкой оценки, если самый последний шаг фронта волны был в горизонтальном направлении (вправо), или могла быть оценена соседней ячейкой снизу слева в линейной матрице, если самый последний шаг фронта волны был в вертикальном направлении (вниз), Аналогичным образом ячейка непосредственно сверху в матрице могла быть оценена текущей ячейкой оценки, если самый последний шаг фронта волны был в вертикальном направлении (вниз), или могла быть оценена соседней ячейкой сверху справа в линейной матрице, если самый последний шаг фронта волны был в горизонтальном направлении (вправо), В частности, ячейка сверху слева по диагонали в матрице могла быть оценена текущей ячейкой оценки, если два самых последних шага фронта волны были в разных направлениях, например, вниз затем направо, или вправо затем вниз, или могла быть оценена соседней ячейкой сверху справа в линейном массиве, если два самых последних шага фронта волны были оба в горизонтальном направлении (вправо), или могла быть оценена соседней ячейкой снизу слева в линейном массиве, если два самых последних шага фронта волны были оба в вертикальном направлении (вниз).[00211] For example, a cell immediately to the left in the matrix could be scored by the current evaluation cell if the most recent wavefront step was in the horizontal direction (to the right), or could be scored by an adjacent cell to the bottom left in a linear matrix if the most recent wavefront step was in the vertical (down) direction. Similarly, a cell immediately above in the matrix could be scored by the current evaluation cell if the most recent wavefront step was in the vertical (down) direction, or could be scored by the adjacent cell on the top right in a linear matrix if the most recent the wavefront step was in the horizontal direction (to the right). Specifically, the top-left diagonal cell in the matrix could be scored as the current scoring cell if the two most recent wavefront steps were in different directions, for example, down then right, or right then down , or could be scored by a top-right neighbor cell in a line array if the two most recent wavefront steps were both in the horizontal direction (to the right), or could be scored by a bottom-left neighbor cell in a line array if the two most recent wavefront steps were both in the vertical direction (down).

[00212] Соответственно, учитывая информацию о направлениях последних одного или двух шагов фронта волны, ячейка оценки может выбрать надлежащие ранее вычисленные оценки, получив доступ к ним внутри себя и/или в соседних ячейках оценки, используя соединение между соседними оценками. В качестве варианта на наружных входах для оценок ячеек оценки на двух концах фронта волны могут быть жестко смонтированы недопустимые нулевые, или имеющие минимальное значение оценки, чтобы они не повлияли на новые вычисления оценок в этих крайних ячейках. Благодаря реализуемому таким образом фронту волны в линейном массиве ячеек оценки при таком соединении для сдвига референсных и исследуемых нуклеотидов по массиву в противоположных направлениях, чтобы умозрительно перемещать фронт волны пошагово в вертикальном и горизонтальном направлении, например, по диагонали, и соединении для доступа к оценкам, ранее вычисленным соседними ячейками, чтобы вычислять оценки выравнивания в новых позициях ячеек виртуальной матрицы, в которых входит фронт волны, можно, соответственно, оценивать в виртуальной матрице полосу ячеек шириной с фронт волны, например, путем подачи команд на последовательное пошаговое перемещение фронта волны, чтобы он прокатился по матрице.[00212] Accordingly, given information about the directions of the last one or two steps of the wave front, an estimation cell can select the appropriate previously calculated estimates by accessing them within itself and/or in neighboring evaluation cells using the connection between adjacent estimates. As an option, invalid zero or minimum value estimates can be hardwired at the outer evaluation inputs of the evaluation cells at the two ends of the wave front so that they do not affect new evaluation calculations in those outer cells. Thanks to the wavefront implemented in this way in a linear array of evaluation cells with such a connection for shifting the reference and test nucleotides across the array in opposite directions, in order to speculatively move the wavefront step by step in the vertical and horizontal direction, for example, diagonally, and a connection for accessing the estimates, previously calculated by neighboring cells, in order to calculate alignment estimates at new positions of the cells of the virtual matrix in which the wave front enters, one can accordingly estimate a strip of cells in the virtual matrix as wide as the wave front, for example, by issuing commands to move the wave front sequentially step by step, so that it rolled across the matrix.

[00213] Следовательно, чтобы выровнять новый рид и окно референса, фронт волны может начинаться изнутри матрицы оценки, или, преимущественно, может постепенно входить в матрицу оценки снаружи, начиная, например, слева, или сверху, или по диагонали слева и сверху с верхнего левого угла матрицы. Например, фронт волны может начинаться с его верхней левой ячейки оценки, расположенной сразу слева от верхней левой ячейки виртуальной матрицы, а затем фронт волны может вкатываться вправо в матрицу с помощью серии горизонтальных шагов, оценивая горизонтальную полосу ячеек в верхней левой области матрицы. Когда фронт волны достигает прогнозированного соотношения выравнивания между референсной и исследуемой последовательностью, или когда обнаруживается совпадение на основе возрастания оценок выравнивания, фронт волны может начать прокатываться по диагонали вниз вправо за счет попеременных вертикальных и горизонтальных шагов, оценивая диагональную полосу ячеек посередине. Когда нижняя левая ячейка оценки фронта волны достигает низа матрицы выравнивания, фронт волны может начать снова прокатываться вправо за счет последовательных горизонтальных шагов, оценивая горизонтальную полосу ячеек в нижней правой области матрицы, до тех пор, пока некоторые или все ячейки фронта волны не выйдут за границы матрицы выравнивания.[00213] Therefore, to align the new read and the reference window, the wave front can start from inside the evaluation matrix, or, advantageously, can gradually enter the evaluation matrix from the outside, starting, for example, from the left, or from the top, or diagonally from the left and from the top left corner of the matrix. For example, the wave front may begin with its top left evaluation cell located immediately to the left of the top left cell of the virtual matrix, and then the wave front may roll to the right of the matrix through a series of horizontal steps, evaluating a horizontal strip of cells in the top left region of the matrix. When the wavefront reaches the predicted alignment relationship between the reference and test sequences, or when a match is detected based on increasing alignment scores, the wavefront can begin to sweep diagonally down to the right by alternating vertical and horizontal steps, evaluating a diagonal stripe of cells in the middle. When the lower left wavefront evaluation cell reaches the bottom of the alignment matrix, the wavefront may begin to roll to the right again through successive horizontal steps, evaluating a horizontal strip of cells in the lower right region of the matrix, until some or all of the wavefront cells exceed the boundaries alignment matrices.

[00214] Одна или более таких процедур выравнивания могут быть выполнены с помощью любого подходящего алгоритма выравнивания, такого как алгоритм выравнивания Нидлмана-Вунша и/или алгоритма выравнивания Смита-Ватермана, которые могут быть изменены для приведения в соответствие с функциональными возможностями, описанными в настоящем документе. Вообще оба эти и подобные им алгоритмы по сути работают, в некоторых случаях, аналогичным образом. Например, как указано выше, эти алгоритмы выравнивания, как правило, строят виртуальный массив похожим образом так, что в различных случаях, горизонтальная верхняя граница может быть выполнена с возможностью представления геномной референсной последовательности, которая может быть выложена по всему верхнему ряду массива в соответствии с ее составов пар оснований. Аналогичным образом вертикальная граница может быть выполнена таким образом, чтобы представлять секвенированные и картированные исследуемые последовательности, которые были расположены в порядке вниз вдоль первого столбца так, что порядок их нуклеотидной последовательности в основном совпадает с нуклеотидной последовательностью референса, на который они картированы. Тогда промежуточные ячейки могут быть заполнены оценками вероятности того, что соответствующее основание исследуемой последовательности в данной позиции расположено в этом местоположении относительно референса. При выполнении этой функции полоса захвата может перемещаться по диагонали по всей матрице, заполняя оценки внутри промежуточных ячеек, и, начиная с указанной позиции, можно определить вероятность для каждого основания исследуемой последовательности.[00214] One or more such alignment procedures may be performed using any suitable alignment algorithm, such as the Needleman-Wunsch alignment algorithm and/or the Smith-Waterman alignment algorithm, which may be modified to conform to the functionality described herein document. In general, both of these and similar algorithms essentially work, in some cases, in a similar way. For example, as stated above, these alignment algorithms typically construct a virtual array in a similar manner such that in various cases, a horizontal top border may be configured to represent a genomic reference sequence that may be laid out across the entire top row of the array according to its base pair compositions. Likewise, the vertical border may be designed to represent sequenced and mapped sequences of interest that have been arranged in order downward along the first column such that their nucleotide sequence order is substantially the same as the nucleotide sequence of the reference to which they are mapped. Then the intermediate cells can be filled with estimates of the probability that the corresponding base of the sequence under study at a given position is located at that location relative to the reference. When performing this function, the capture strip can move diagonally across the matrix, filling in the scores within the intermediate cells, and starting from a specified position, the probability for each base of the sequence being examined can be determined.

[00215] Что касается функции выравнивания Нидлмана-Вунша, которая создает оптимальные глобальные (или полуглобальные) выравнивания, выравнивающие все последовательности рида на некоторый сегмент референсного генома, управление направлением движения фронта волны может быть сконфигурировано так, чтобы он, как правило, прокатывался от самого верхнего края матрицы выравнивания, до самого нижнего края. По завершении проката фронта волны выбирают максимальную оценку на нижней границе матрицы выравнивания (соответствующей концу рида), и выравнивание отслеживают в обратном направлении к ячейке на верхнем крае матрицы (соответствующем началу рида). В различных случаях, описанных в настоящем документе, риды могут быть любой длины, могут быть любого размера, и для описания выполнения выравнивания не требуется обширных параметров, например, в различных случаях длина рида может быть такой же, как у хромосомы. Однако в таком случае размер памяти и длина хромосомы могут быть ограничивающим фактором.[00215] With respect to the Needleman-Wunsch alignment function, which creates optimal global (or semi-global) alignments aligning all read sequences onto some segment of the reference genome, control of the direction of the wave front can be configured so that it generally rolls away from the the top edge of the alignment matrix, to the very bottom edge. Upon completion of the wave front rolling, the maximum score is selected at the bottom edge of the alignment matrix (corresponding to the end of the read), and the alignment is tracked back to the cell at the top edge of the matrix (corresponding to the start of the read). In various cases described herein, reads can be of any length, can be of any size, and extensive parameters are not required to describe how the alignment is performed, for example, in various cases, the length of a read can be the same as a chromosome. However, in this case, memory size and chromosome length may be a limiting factor.

[00216] Что качается алгоритма Смита-Ватермана, который формирует оптимальные локальные выравнивания, выравнивая всею последовательность рида или часть последовательности рида на некоторый сегмент референсного генома, этот алгоритм может быть выполнен с возможностью осуществления поиска лучшей возможной оценки на основе полного или частичного выравнивания рида. Поэтому в различных случаях оцениваемая фронтом волны полоса может не доходить до верхнего и/или нижнего краев матрицы выравнивания, например, если очень длинный рид имеет лишь затравки при картировании его середины на референсный геном, но обычно фронт волны все же может выполнять оценку от верха до низа матрицы. Локальное выравнивание обычно достигают двумя регулировками. Во-первых, запрещено падение оценок выравнивания ниже нуля (или некоторого другого нижнего порога), и если, в противном случае, вычисленная оценка ячейки будет отрицательной, ее заменяют нулевой оценкой, представляющей начало нового выравнивания. Во-вторых, в качестве завершающей точки выравнивания используют максимальную оценку выравнивания, полученную в любой ячейке матрицы, необязательно вдоль нижнего края. Выравнивание отслеживают в обратном порядке от этой максимальной оценки вверх и влево по всей матрице до нулевой оценки, которую используют в качестве начальной позиции локального выравнивания, даже если она не находится в верхнем ряду матрицы.[00216] Similar to the Smith-Waterman algorithm, which generates optimal local alignments by aligning all or part of a read sequence to some segment of a reference genome, this algorithm can be configured to search for the best possible estimate based on a full or partial read alignment. Therefore, in various cases, the band estimated by the wavefront may not reach the top and/or bottom edges of the alignment matrix, for example, if a very long read has only seeds when mapping its middle to the reference genome, but usually the wavefront can still estimate from the top to bottom of the matrix. Local alignment is usually achieved by two adjustments. First, the alignment scores are prohibited from falling below zero (or some other lower threshold), and if the cell's calculated score would otherwise be negative, it is replaced with a zero score representing the start of a new alignment. Secondly, the maximum alignment score obtained in any cell of the matrix, not necessarily along the bottom edge, is used as the final alignment point. The alignment is tracked backwards from this maximum score up and to the left throughout the matrix until the zero score is used as the starting position of the local alignment, even if it is not in the top row of the matrix.

[00217] Ввиду вышеизложенного существуют несколько возможных путей через виртуальный массив. В различных вариантах реализации фронт волны начинается с верхнего левого угла виртуального массива и движется вниз к идентификаторам максимальной оценки. Например, результаты всех возможных выравниваний можно собрать, обработать, коррелировать и оценить, чтобы определить максимальную оценку. Когда достигнут конец границы или конец массива и/или определено вычисление, приведшее к наивысшей оценке для всех обработанных ячеек (например, выявлена общая наивысшая оценка), можно выполнить обратное отслеживание, чтобы найти путь, который привел к достижению этой наивысшей оценки. Например, можно найти путь, который ведет к прогнозированной максимальной оценке, и после этот можно выполнить аудит, чтобы определить, каким образом была получена эта максимальная оценка, например, путем перемещения в обратном направлении, следуя стрелкам выравнивания с лучшей оценкой, указывающими обратное прохождение пути, который привел к достижению выявленной максимальной оценки, например, вычисленной с помощью ячеек оценки фронта волны.[00217] In view of the above, there are several possible paths through the virtual array. In various implementations, the wave front begins at the top left corner of the virtual array and moves down toward the maximum score identifiers. For example, the results of all possible alignments can be collected, processed, correlated, and scored to determine a maximum score. When the end of the boundary or the end of the array is reached and/or the computation that led to the highest score for all processed cells is determined (eg, the overall highest score is identified), you can trace back to find the path that led to that highest score being reached. For example, a path that leads to a predicted maximum score can be found, and an audit can then be performed to determine how that maximum score was arrived at, for example by moving backwards, following the alignment arrows with the best score indicating the path backwards. , which led to the achievement of the identified maximum score, for example, calculated using the wave front score cells.

[00218] Эта обратная реконструкция или обратное отслеживание включает в себя начало движения с определенной максимальной оценки и возвращение в начало через предыдущие ячейки с прокладыванием пути через ячейки, имеющие оценки, которые привели к достижению максимальной оценки, от самого верха таблицы и обратно до начальной границы, такой как начало массива или нулевая оценка в случае локального выравнивания. Во время обратного отслеживания после достижения конкретной ячейки в матрице выравнивания следующий шаг обратного отслеживания совершают в соседнюю ячейку непосредственно слева, или сверху, или по диагонали вверх влево, которая внесла вклад в лучшую оценку, выбранную для построения оценки в текущей ячейке. Таким образом можно отследить эволюцию максимальной оценки, тем самым выяснив, каким образом была достигнута максимальная оценка. Обратное отслеживание может завершиться в углу, или на крае, или на границе, или может закончиться на нулевой оценке, например, в левом верхнем углу массива. Соответственно, именно таким обратным отслеживанием определяют правильное выравнивание и тем самым получают выходную строку CIGAR, которая показывает, как геномная последовательность, или ее часть, из образца, взятого у индивида, совпадает с геномной последовательностью референсной ДНК или иным образом выравнивается на нее.[00218] This backward reconstruction or backtracking involves starting a movement at a certain maximum score and working back through previous cells, tracing a path through the cells having the scores that led to the maximum score, from the very top of the table and back to the starting boundary , such as the start of the array or zero evaluation in the case of local alignment. During backtracking, after reaching a particular cell in the alignment matrix, the next backtracking step is to the adjacent cell immediately to the left, or above, or diagonally up to the left, which contributed to the best estimate selected to construct the estimate in the current cell. In this way, the evolution of the maximum score can be tracked, thereby revealing how the maximum score was achieved. The backtracking may end at a corner, or at an edge, or at a boundary, or may end at a zero score, such as the top left corner of an array. Accordingly, it is this backtracing that determines the correct alignment and thereby produces a CIGAR output string that shows how the genomic sequence, or part thereof, from a sample taken from an individual matches or otherwise aligns with the genomic sequence of the reference DNA.

[00219] После того, как определено, куда картируется каждый рид, и также определено, где выравнивается каждый рид, например, каждому соответствующему риду даны позиция и оценка качества, отражающая вероятность того, что эта позиция является правильным выравниванием, так что нуклеотидная последовательность для ДНК субъекта известна, можно проверить порядок различных ридов и/или геномную последовательность нуклеиновых кислот субъекта, например, путем определения идентичности каждой нуклеиновой кислоты в ее правильном порядке в геномной последовательности образца. Поэтом в соответствии с некоторыми аспектами настоящее изобретение относится к функции обратного отслеживания, например, являющейся частью модуля выравнивания, который выполняет как функцию выравнивания, так и функцию обратного отслеживания, такого как модуль, который может быть частью конвейера модулей, например, конвейера, который предназначен для приема необработанных данных рида последовательности, например, в виде геномного образца индивида, и картирования и/или выравнивания этих данных, которые могут быть затем сохранены.[00219] Once it has been determined where each read maps to, and it has also been determined where each read is aligned, for example, each corresponding read is given a position and a quality score reflecting the likelihood that that position is the correct alignment, so that the nucleotide sequence for Since the subject's DNA is known, the order of the various reads and/or the genomic sequence of the subject's nucleic acids can be verified, for example, by determining the identity of each nucleic acid in its correct order in the genomic sequence of the sample. Therefore, in accordance with some aspects, the present invention relates to a backtracking function, such as one that is part of an alignment module that performs both an alignment function and a backtracking function, such as a module that may be part of a pipeline of modules, e.g., a pipeline that is designed to for receiving raw sequence read data, for example in the form of an individual's genomic sample, and mapping and/or aligning this data, which can then be stored.

[00220] Для облегчения операции обратного отслеживания полезно сохранять вектор оценки для каждой оцененной ячейки в матрице выравнивания, кодирующий решение относительно выбора оценки. В случае классических интерпретаций оценки Смита-Ватермана и/или Нидлмана-Вунша с линейными штрафами на гэп вектор оценки может кодировать четыре возможности, которые могут быть, необязательно, сохранены в виде 2-битового целого числа от 0 до 3, например: 0 = новое выравнивание (выбрана нулевая оценка); 1 = вертикальное выравнивание (выбрана оценка из ячейки сверху, изменена за счет штрафа на гэп); 2 = горизонтальное выравнивание (выбрана оценка из ячейки слева, изменена за счет штрафа на гэп); 3 = диагональное выравнивание (выбрана оценка из ячейки сверху и слева, изменена за счет оценки совпадения или не совпадения нуклеотида). Необязательно, можно также сохранять вычисленные оценки для каждой оцененной ячейки матрицы (в дополнение к максимальной достигнутой оценке выравнивания, которую обычно сохраняют), но для обратного отслеживания в этом нет необходимости, а данная информация может занимать огромные объемы памяти. После этого выполнение обратного отслеживания сводится к следующим векторам оценки; когда обратное отслеживание достигло данной ячейки в матрице, следующий шаг обратного отслеживания определяется сохраненным вектором оценки для этой ячейки, например: 0 = завершить обратное отслеживание; 1 = обратное отслеживание вверх; 2 = обратное отслеживание влево; 3 = обратное отслеживание вверх влево.[00220] To facilitate the backtracking operation, it is useful to store a score vector for each scored cell in an alignment matrix encoding the score selection decision. In the case of classical interpretations of the Smith-Waterman and/or Needleman-Wunsch estimator with linear gap penalties, the estimator vector can encode four possibilities, which can optionally be stored as a 2-bit integer from 0 to 3, for example: 0 = new alignment (zero rating selected); 1 = vertical alignment (score selected from cell above, modified due to gap penalty); 2 = horizontal alignment (score selected from cell on left, modified due to gap penalty); 3 = diagonal alignment (score selected from cell above and left, modified by nucleotide match or mismatch score). Optionally, one can also store the calculated scores for each matrix cell evaluated (in addition to the maximum alignment score achieved, which is usually stored), but this is not necessary for backtracking, and this information can take up huge amounts of memory. The backtracking execution then reduces to the following evaluation vectors; when backtracking has reached a given cell in the matrix, the next backtracking step is determined by the stored score vector for that cell, for example: 0 = end backtracking; 1 = backward tracking up; 2 = back tracking left; 3 = reverse tracking up left.

[00221] Такие векторы оценки могут храниться в двумерной таблице, скомпонованной в соответствии с размерами матрицы выравнивания, которая может заполняться только записями, соответствующими ячейкам, оцениваемым с помощью фронта волны. В альтернативном варианте реализации для экономии памяти, упрощения записи векторов оценки по мере их формирования и более простого приспособления матриц выравнивания различных размеров, векторы оценки можно сохранять в таблице, размер каждой строки которой определяется в зависимости от сохраняемых векторов оценки из одного фронта волны ячеек оценки, например, 128 битов для хранения 64 2-битовых векторов оценки фронта волны, состоящего из 64 ячеек, а количество строк равно максимальному количеству шагов фронта волны в операции выравнивания. Кроме того, для этого варианта можно вести запись направлений различных шагов фронта волны, например, сохраняя дополнительный, например, 129-й, бит в каждой строке таблицы, кодируя, например, с помощью 0 вертикальный шаг фронта волны, предшествующий данному положению фронта волны, а с помощью 1 горизонтальный шаг фронта волны, предшествующий данному положению фронта волны. Этот дополнительный бит можно использовать во время обратного отслеживания для контроля за тем, каким позициям виртуальной матрицы оценки соответствуют векторы оценки в каждой строке таблицы, чтобы после каждого последующего шага можно было извлекать правильный вектор оценки. Если шаг обратного отслеживания вертикальный или горизонтальный, следующий вектор оценки следует извлекать из предыдущей строки таблицы, но если шаг обратного отслеживания диагональный, следующий вектор оценки следует извлекать двумя строками выше, так как фронт волны должен сделать два шага, чтобы перейти от оценки любой одной ячейки к оценке ячейки справа внизу от нее.[00221] Such scoring vectors may be stored in a two-dimensional table arranged according to the dimensions of the alignment matrix, which may be populated only with entries corresponding to the cells being scored by the wavefront. In an alternative implementation, to save memory, make it easier to record score vectors as they are generated, and more easily accommodate alignment matrices of different sizes, the score vectors can be stored in a table, the size of each row of which is determined by the stored score vectors from one wavefront of the score cells. for example, 128 bits to store 64 2-bit wavefront estimate vectors consisting of 64 cells, and the number of rows is equal to the maximum number of wavefront steps in the alignment operation. In addition, for this option, it is possible to record the directions of the various wavefront steps, for example, by storing an additional, for example, 129th, bit in each row of the table, encoding, for example, with 0 the vertical wavefront step preceding a given wavefront position, and using 1, the horizontal step of the wave front preceding a given position of the wave front. This extra bit can be used during backtracking to control which positions of the virtual score matrix the score vectors in each row of the table correspond to, so that the correct score vector can be retrieved after each subsequent step. If the backtrack step is vertical or horizontal, the next estimate vector should be retrieved from the previous row of the table, but if the backtrack step is diagonal, the next estimate vector should be retrieved two rows above, since the wave front must take two steps to move from the estimate of any one cell to the score of the cell below it to the right.

[00222] В случае аффинной оценки гэпов информация вектора оценки может быть расширена, например, до 4 битов на оцениваемую ячейку. В дополнение к, например, 2-битовому индикатору направления выбора оценки, могут быть добавлены два 1-битовых флага - флаг вертикального продления и флаг горизонтального продления. В соответствии с методами расширений аффинной оценки гэпов для алгоритмов Смита-Ватермана, Нидлмана-Вунша или подобных алгоритмов, для каждой ячейки в дополнение к первичной оценке выравнивания, представляющей выравнивания с лучшей оценкой, прекращающееся в этой ячейке, следует формировать «вертикальную оценку», соответствующую максимальной оценке выравнивания, достигаемой этой ячейкой с помощью завершающего вертикального шага, и «горизонтальную оценку», соответствующую максимальной оценке выравнивания, достигаемой этой ячейкой с помощью завершающего горизонтального шага; и при вычислении любой из трех оценок вертикальный шаг в ячейку может быть вычислен либо с помощью первичной оценки из ячейки сверху минус штраф на открытие гэпа, либо с помощью вертикальной оценки из ячейку сверху минус штраф на продление гэпа в зависимости от того, что больше; а горизонтальный шаг в ячейку может быть вычислен либо с помощью первичной оценки из ячейки слева минус штраф на открытие гэпа, либо с помощью горизонтальной оценки из ячейки слева минус штраф на продление гэпа в зависимости от того, что больше. В случае выбора вертикальной оценки минус штраф на продление гэпа в векторе оценки должен быть установлен флаг вертикального продления, например, «1», а в противном случае он должен быть снят, например, «0».[00222] In the case of affine gap estimation, the estimation vector information can be expanded, for example, to 4 bits per cell being estimated. In addition to, for example, a 2-bit evaluation selection direction indicator, two 1-bit flags, a vertical extension flag and a horizontal extension flag, may be added. According to the methods of affine gap estimation extensions to Smith-Waterman, Needleman-Wunsch, or similar algorithms, for each cell, in addition to the primary alignment score representing the best-scoring alignments ending at that cell, a "vertical score" should be generated corresponding a maximum alignment score achieved by that cell using the final vertical step, and a “horizontal score” corresponding to the maximum alignment score achieved by that cell using the final horizontal step; and when calculating any of the three estimates, the vertical step per cell can be calculated using either the primary estimate from the cell above minus the gap opening penalty, or the vertical estimate from the cell above minus the gap extension penalty, whichever is greater; and the horizontal step per cell can be calculated using either the primary estimate from the cell on the left minus the gap opening penalty, or the horizontal estimate from the cell on the left minus the gap extension penalty, whichever is greater. In the case of choosing a vertical estimate minus the penalty for gap extension, the vertical extension flag must be set in the evaluation vector, for example, “1”, and otherwise it must be cleared, for example, “0”.

[00223] В случае выбора горизонтальной оценки минус штраф на продление гэпа в векторе оценки должен быть установлен флаг горизонтального продления, например, «1», а в противном случае он должен быть снят, например, «0». Во время обратного отслеживания в случае аффинной оценки гэпов всякий раз, когда при обратном отслеживании совершают вертикальный шаг вверх из данной ячейки и флаг вертикального продления в векторе оценки этой ячейки установлен, следующий шаг обратного отслеживания тоже должен быть вертикальным независимо от вектора оценки для ячейки сверху. Аналогичным образом всякий раз, когда при обратном отслеживании совершают горизонтальный шаг влево из данной ячейки и флаг горизонтального продления в векторе оценки этой ячейки установлен, следующий шаг обратного отслеживания тоже должен быть горизонтальным независимо от вектора оценки для ячейки слева. Соответственно, такой таблицы векторов оценки, имеющей, например, 129 битов на строку для 64 ячеек при использовании линейной оценки гэпов, или 257 битов на строку для 64 ячеек при использовании аффинной оценки гэпов, и некоторое количество, NR, строк, достаточно для поддержки обратного отслеживания после завершения оценки выравнивания, где фронт волны оценки выполняет NR шагов или менее.[00223] In the case of selecting a horizontal score minus gap extension penalty, the horizontal extension flag should be set in the score vector, for example, "1", and otherwise it should be cleared, for example, "0". During backtracking in the case of affine gap evaluation, whenever backtracking takes a vertical step up from a given cell and the vertical extension flag in that cell's evaluation vector is set, the next backtracking step must also be vertical, regardless of the evaluation vector for the cell above. Likewise, whenever backtracking takes a horizontal step to the left from a given cell and the horizontal extension flag in that cell's evaluation vector is set, the next backtracking step must also be horizontal, regardless of the evaluation vector for the cell to the left. Accordingly, such a table of estimation vectors, having, for example, 129 bits per row for 64 cells when using linear gap estimation, or 257 bits per row for 64 cells when using affine gap estimation, and a certain number, NR, of rows, is sufficient to support the reverse tracking after completion of the alignment evaluation, where the evaluation wave front completes NR steps or less.

[00224] Например, при выравнивании ридов из 300 нуклеотидов количество шагов фронта волны может быть всегда меньше 1024, поэтому таблица может занимать 257×1024 битов, или приблизительно 32 килобайта, что во многих случаях может быть разумной локальной памятью внутри интегральной схемы. Но если требуется выравнивать очень длинные риды, например, из 100000 нуклеотидов, требования к памяти для векторов оценки могут быть довольно большими, например, 8 мегабайтов, что может быть слишком дорогим для включения ее в качестве локальной памяти внутрь интегральной схемы. Для такой поддержки информацию векторов оценки можно записывать в память большой емкости вне интегральной схемы, например, DRAM, но тогда слишком дорогими могут стать требования к полосе пропускания, например, 257 битов на тактовый цикл для каждого модуля выравнивания, что может привести к затору и резко уменьшить производительность выравнивателя. Соответственно, желательно иметь способ для размещения векторов оценки до завершения выравнивания, чтобы сохранять ограниченными требования, предъявляемые ими к памяти, например, для выполнения инкрементальных обратных отслеживаний, формирующих инкрементальные частичные строки CIGAR, например, из начальных частей из истории векторов оценки выравнивания, чтобы такие начальные части векторов оценки могли быть отброшены. Проблема состоит в том, что, как предполагается, обратное отслеживание начинается с завершающей точки выравнивания, ячейки с максимальной оценкой, которая неизвестна до тех пор, пока не завершится оценка выравнивания, поэтому любое обратное отслеживание, начинающееся до завершения выравнивания, может начаться из неверной ячейки, не по возможному окончательному оптимальному пути выравнивания.[00224] For example, when aligning reads of 300 nucleotides, the number of wavefront steps may always be less than 1024, so the table may occupy 257×1024 bits, or approximately 32 kilobytes, which in many cases may be reasonable local memory within the integrated circuit. But if very long reads need to be aligned, for example 100,000 nucleotides, the memory requirements for the score vectors can be quite large, for example 8 megabytes, which may be too expensive to include as local memory inside the integrated circuit. To support such support, the evaluation vector information can be written to a large capacity off-chip memory such as DRAM, but then the bandwidth requirements, such as 257 bits per clock cycle for each equalizer, may become prohibitively expensive, which may result in congestion and abrupt reduce the performance of the equalizer. Accordingly, it would be desirable to have a method for allocating score vectors prior to completion of the alignment to keep their memory requirements limited, for example, to perform incremental backtraces generating incremental partial CIGAR strings, for example, from the initial portions of the history of the alignment score vectors, such that the initial parts of the evaluation vectors could be discarded. The problem is that backtracking is supposed to start from the final alignment point, the cell with the maximum score, which is unknown until the alignment evaluation is complete, so any backtracking that starts before alignment is complete may start from the wrong cell , not along the possible final optimal alignment path.

[00225] Поэтому предложен способ для выполнения инкрементального обратного отслеживания на основе частичной информации о выравнивании, например, содержащей частичные сведения о векторах оценки для ячеек матрицы выравнивания, оцененных на текущий момент. Исходя из границы выполненного на данный момент выравнивания, например, конкретного положения фронта волны, обратное отслеживание начинают из всех позиций ячеек на границе. Такое обратное отслеживание из всех граничных ячеек может быть выполнено последовательно или, преимущественно, особенно в случае аппаратной реализации, все обратные отслеживания могут быть выполнены вместе. Выделять символические записи выравнивания, например, строки CIGAR, из этих многочисленных обратных отслеживаний не требуется; нужно только определять, какие позиции матрицы выравнивания они проходят во время обратного отслеживания. При реализации одновременного обратного отслеживания с границы можно использовать инициализированные, например, установленные на «1», 1-битовые регистры в количестве, соответствующем количеству ячеек выравнивания, которые показывают, проходит ли какое-либо из обратных отслеживаний через соответствующую позицию. Для каждого шага одновременного обратного отслеживания можно проверять векторы оценок, соответствующие всем текущим «1» в этих регистрах, например, из одной строки таблицы векторов оценки, чтобы определять следующий шаг обратного отслеживания, соответствующий каждой «1» в регистрах, ведущий к следующей позиции для каждой «1» в регистрах, для следующего шага одновременного обратного отслеживания.[00225] Therefore, a method is provided for performing incremental backtracking based on partial alignment information, for example, containing partial information about the evaluation vectors for the alignment matrix cells currently evaluated. Based on the boundary of the alignment performed so far, for example, a specific position of the wave front, backtracking begins from all cell positions on the boundary. Such backtracking from all boundary cells may be performed sequentially or, advantageously, especially in the case of a hardware implementation, all backtracking may be performed together. It is not necessary to extract symbolic alignment records, such as CIGAR strings, from these multiple backtraces; one only needs to determine which alignment matrix positions they pass through during backtracking. When implementing simultaneous backtracking from a boundary, it is possible to use initialized, eg set to "1", 1-bit registers in a number corresponding to the number of alignment cells that indicate whether any of the backtracking passes through the corresponding position. For each simultaneous backtracking step, the score vectors corresponding to all the current "1s" in those registers can be examined, for example from one row of the score vectors table, to determine the next backtracking step corresponding to each "1" in the registers leading to the next position for each "1" in the registers, for the next step of simultaneous backtracking.

[00226] Важно отметить, что весьма велика вероятность объединения множества «1» в регистрах в общие позиции, соответствующие множеству одновременных обратных отслеживаний, сливающихся в общие маршруты обратного отслеживания. После того, как два или более одновременных отслеживаний сливаются, далее они все время остаются объединенными, так как с этого момента они будут использовать информацию вектора оценки из одной и той же ячейки. Было замечено, эмпирически и по теоретическим соображениям, что с высокой вероятностью все одновременные отслеживания сольются в сингулярный маршрут обратного отслеживания за относительно малое количество шагов обратного отслеживания, количество которых, например, может быть кратно, количеству ячеек оценки во фронте волны с небольшим коэффициентом, например, 8-кратным. Например, в случае фронта волны из 64 ячеек с высокой вероятностью все обратные отслеживания с данной границы фронта волны сольются в один маршрут обратного отслеживания в пределах 512 шагов обратного отслеживания. Или же, также возможно, и не редко, что все обратные отслеживания завершатся в пределах этого числа, например, 512 шагов обратного отслеживания.[00226] It is important to note that it is very likely that multiple "1's" in the registers will merge into common positions corresponding to multiple simultaneous backtraces merging into common backtracking paths. Once two or more simultaneous tracks are merged, they will remain merged forever since they will use the score vector information from the same cell from that point on. It has been observed, empirically and theoretically, that there is a high probability that all simultaneous tracking will merge into a singular backtracking route in a relatively small number of backtracking steps, the number of which, for example, can be a multiple of the number of estimation cells in the wave front by a small factor, e.g. , 8-fold. For example, in the case of a 64-cell wavefront, there is a high probability that all backtracks from a given wavefront boundary will merge into a single backtrack route within 512 backtrack steps. Or it is also possible, and not uncommon, that all backtracks will complete within this number, for example 512 backtrack steps.

[00227] Соответственно, множество одновременных обратных отслеживаний могут быть выполнены с границы оценки, например, оцененной позиции фронта волны, достаточно далеко, чтобы они все либо завершились, либо слились в единственный маршрут обратного отслеживания, например, за 512 шагов или меньше. Если они все сольются в сингулярный маршрут обратного отслеживания, то начиная с места в матрице, где они слились, или на любом расстоянии дальше по сингулярному маршруту обратного отслеживания возможно инкрементальное обратное отслеживание на основе частичной информации о выравнивании. Далее начинают обратное отслеживание из точки слияния или любого расстояния дальше назад с помощью обычных способов сингулярного обратного отслеживания, включающих в себя запись соответствующей символической записи, например, частичной строки CIGAR. Это инкрементальное обратное отслеживание и, например, частичная строка CIGAR, должны быть частью любого возможного окончательного обратного отслеживания, и, например, полной строки CIGAR, которая получится по завершении выравнивания, если такое окончательное обратное отслеживание не завершится раньше достижения границы оценки, где начались одновременные обратные отслеживания, так как если оно достигнет границы оценки, оно должно следовать одним из маршрутов одновременного отслеживания и слиться с сингулярным маршрутом обратного отслеживания, выделенным теперь инкрементально.[00227] Accordingly, multiple simultaneous backtraces can be performed from an estimation boundary, such as an estimated wavefront position, far enough away that they all either complete or merge into a single backtracking path, for example, in 512 steps or less. If they all merge into a singular backtracking path, then starting from the location in the matrix where they merged, or any distance further along the singular backtracking path, incremental backtracking is possible based on partial alignment information. Backtracking is then started from the merge point or any distance further back using conventional singular backtracking techniques, including writing an appropriate symbolic notation, such as a partial CIGAR string. This incremental backtracking and, for example, the partial CIGAR row, must be part of any eventual final backtracking, and, for example, the full CIGAR row, that will result upon completion of the alignment, unless such final backtracking ends before reaching the estimate boundary where the simultaneous backtracks, since if it reaches the evaluation boundary, it must follow one of the simultaneous tracking routes and merge with the singular backtracking route now allocated incrementally.

[00228] Следовательно, все векторы оценки для областей матрицы, соответствующих инкрементально выделенному обратному отслеживанию, например, во всех строках таблицы для позиций фронта волны, предшествующих началу выделенного сингулярного обратного отслеживания, могут быть безопасно отброшены. Если при выполнении завершающего обратного отслеживание из ячейки с максимальной оценкой оно завершается раньше достижения границы оценки (или же, если оно завершается раньше достижения начала выделенного сингулярного обратного отслеживания), инкрементальную символическую запись, например, частичную строку CIGAR, можно отбросить. Если завершающее обратное отслеживание продолжается до начала выделенного сингулярного обратного отслеживания, тогда символическая запись его выравнивания может быть наращена на инкрементальную символическую запись выравнивания, например, частичную строку CIGAR. Кроме того, при очень длинном выравнивании процесс выполнения одновременного обратного отслеживания с границы оценки, например, оцененной позиции фронта волны, до тех пор, пока все обратные отслеживания не завершатся или не сольются, с последующим сингулярным обратным отслеживанием с выделением символической записи выравнивания можно повторять многократно с различных последовательных границ оценки. Инкрементальная символическая запись выравнивания, например, частичная строка CIGAR, из каждого последовательного инкрементального обратного отслеживания может быть затем наращена на накопленные предыдущие символические записи выравнивания, если новое одновременное обратное наращивание или сингулярное обратное наращивание не завершится раньше, и в этом случае накопленные предыдущие символические записи выравнивания можно отбросить. Аналогичным образом возможное завершающее обратное отслеживание наращивает свою символическую запись на самые последние накопленные символические записи выравнивания для полного описания обратного отслеживания, например, строки CIGAR.[00228] Consequently, all score vectors for matrix regions corresponding to incrementally allocated backtracking, for example, in all table rows for wavefront positions preceding the start of the allocated singular backtracking, can be safely discarded. When executing a trailing backtrack from a cell with a maximum score, if it ends before reaching the score boundary (or if it ends before reaching the start of the allocated singular backtrack), the incremental symbolic record, such as a partial CIGAR row, can be discarded. If the trailing backtrack continues before the start of the dedicated singular backtrack, then its alignment symbolic record may be incremented by an incremental symbolic alignment record, such as a partial CIGAR string. Additionally, for very long alignments, the process of performing simultaneous backtracking from an estimate boundary, such as the estimated wavefront position, until all backtracks are completed or merged, followed by a singular backtracking highlighting the symbolic alignment record, can be repeated many times. from various successive assessment boundaries. An incremental symbolic alignment record, such as a partial CIGAR string, from each successive incremental backtracking may then be incremented by the accumulated previous symbolic alignment entries, unless a new simultaneous backtracking or singular backtracking completes first, in which case the accumulated previous symbolic alignment entries can be discarded. Likewise, a possible terminating backtrack builds its symbolic record onto the most recently accumulated symbolic alignment records to complete a backtrack description, such as a CIGAR string.

[00229] Соответственно, при таком способе память для хранения векторов оценки может оставаться ограниченной в предположении, что одновременные обратные отслеживания всегда сливаются за ограниченное количество шагов, например 512 шагов. В редких случаях, когда одновременным обратным отслеживаниям не удается слиться или завершиться за ограниченное количество шагов, могут быть предприняты различные исключительные действия, в том числе прекращение текущего выравнивания вследствие сбоя или повтор его с более высоким ограничением или без ограничения, возможно, другим или традиционным способом, таким как сохранение всех векторов оценки для полного выравнивания, например, во внешнем DRAM. В качестве варианта, возможно, будет целесообразно прекратить такое выравнивание вследствие сбоя, поскольку это случается крайне редко, и даже еще реже такое неудавшееся выравнивание будет иметь выравнивание с лучшей оценкой, которое будет включено в отчет о выравнивании.[00229] Accordingly, with such a method, the memory for storing the evaluation vectors may remain limited under the assumption that simultaneous backtraces are always merged in a limited number of steps, for example 512 steps. In rare cases where simultaneous backtraces fail to merge or complete within a limited number of steps, various exceptional actions may be taken, including aborting the current alignment due to failure or retrying it with a higher limit or no limit, perhaps in a different or traditional way , such as storing all score vectors for full alignment, for example, in external DRAM. Alternatively, it may be advisable to terminate such an alignment due to failure, as this is extremely rare, and even more rarely, such a failed alignment will have a better-scoring alignment included in the alignment report.

[00230] В необязательном варианте хранилище векторов оценки может быть разделено, физически или логически, на ряд различных блоков, например, по 512 строк каждый, и конечную строку в каждом блоке можно будет использовать в качестве границы оценки для начала одновременного обратного отслеживания. Необязательно, может потребоваться, чтобы одновременное обратное отслеживание завершилось или слилось в пределах одного блока, например, за 512 шагов. Необязательно, если одновременные обратные отслеживания сливаются за меньшее количество шагов, совместное обратное отслеживание, тем не менее, может быть продолжено по всему блоку, прежде чем приступать к выделению сингулярного обратного отслеживания в предыдущем блоке. Соответственно, после того, как векторы оценки полностью записаны в блок N и начинается запись в блок N+1, можно начать одновременное обратное отслеживание в блоке N, а затем сингулярное обратное отслеживание и выделение символической записи выравнивания в блоке N-1. Если скорость одновременного обратного отслеживания, сингулярного обратного отслеживания и оценки выравнивания аналогичны или идентичны, и эти операции могут выполняться одновременно, например, в параллельном аппаратном обеспечении в интегральной схеме, то сингулярное обратное отслеживание в блоке N-1 может происходить одновременно с заполнением векторами оценки блока N+2, а когда наступит пора заполнять блок N+3, блок N-1 может быть освобожден и использован повторно.[00230] Optionally, the score vector store can be divided, physically or logically, into a number of different blocks, for example, 512 rows each, and the ending row in each block can be used as a score boundary to begin simultaneous backtracking. Optionally, simultaneous backtracking may be required to complete or merge within a single block, for example in 512 steps. Optionally, if simultaneous backtracks are merged in fewer steps, the joint backtrack can still be continued throughout the block before proceeding to extract the singular backtrack in the previous block. Accordingly, after the evaluation vectors are completely written to block N and writing to block N+1 begins, simultaneous backtracking can be started in block N, followed by singular backtracking and symbolic alignment record extraction in block N-1. If the speed of simultaneous backtracking, singular backtracking, and alignment evaluation are similar or identical, and these operations can be performed simultaneously, for example in parallel hardware in an integrated circuit, then singular backtracking in block N-1 can occur simultaneously with the block evaluation vectors populating N+2, and when it is time to fill block N+3, block N-1 can be freed and reused.

[00231] Следовательно, при такой реализации можно использовать минимум 4 блока векторов оценки, сменяющих друг друга по циклу. Поэтому общее хранилище векторов оценки для модуля выравнивателя может быть, например, из 4 блоков по 257×512 битов в каждом, или приблизительно 64 килобайта. В качестве варианта, если текущая максимальная оценка выравнивания соответствует более раннему блоку, чем текущая позиция фронта волны, этот блок и предыдущий блок могут быть придержаны, а не использованы повторно, чтобы завершающее обратное отслеживание можно было начать из этой позиции, если она останется позицией с максимальной оценкой; придерживание дополнительных 2 блоков таким образом даст, например, как минимум 6 блоков.[00231] Therefore, with such an implementation, a minimum of 4 blocks of evaluation vectors can be used, replacing each other in a cycle. Therefore, the total storage of evaluation vectors for the equalizer module could be, for example, 4 blocks of 257x512 bits each, or approximately 64 kilobytes. Alternatively, if the current maximum alignment estimate corresponds to an earlier block than the current wavefront position, that block and the previous block may be held rather than reused so that the final backtracking can be started from that position if it remains the position with maximum rating; holding an extra 2 blocks this way will give you at least 6 blocks, for example.

[00232] В другом варианте для поддержки перекрывающихся выравниваний, где фронт волны оценки постепенно перемещается из одной матрицы выравнивания в следующую, как описано выше, могут быть использованы дополнительные блоки, например, 1 или 2 дополнительных блока, например, всего 8 блоков, например, приблизительно 128 килобайтов. Соответственно, при циклическом использовании такого ограниченного количества блоков, например, 4 блока или 8 блоков, возможно выравнивание и обратное отслеживание длинных ридов, например, 100000 нуклеотидов, или всей хромосомы, без использования внешней памяти для векторов оценки. Необходимо понимать, что касается вышеизложенного, то хотя в некоторых случаях функция картирования упоминалась в описаниях как, например, сопоставитель, и/или в некоторых случаях функция выравнивания могла упоминаться как, например, выравниватель, эти различные функции могут выполняться одновременно одной и той же архитектурой, которую в данной области техники обычно называют выравнивателем. Соответственно, в различных случаях функция картирования и функция выравнивания, как описано в настоящем документе, могут выполняться общей архитектурой, которую можно понимать как выравниватель, особенно в тех случаях, когда для выполнения функции выравнивания сначала нужно выполнить функцию картирования.[00232] In another embodiment, additional blocks, e.g., 1 or 2 additional blocks, e.g., a total of 8 blocks, can be used to support overlapping alignments, where the evaluation wavefront gradually moves from one alignment matrix to the next, as described above, e.g. approximately 128 kilobytes. Accordingly, by cycling such a limited number of blocks, such as 4 blocks or 8 blocks, it is possible to align and backtrack long reads, such as 100,000 nucleotides, or an entire chromosome, without using external memory for the score vectors. It should be understood that in relation to the above, although in some cases the mapping function may have been referred to in the descriptions as, for example, a mapper, and/or in some cases the alignment function may have been referred to as, for example, an aligner, these different functions may be performed simultaneously by the same architecture , which is commonly referred to in the art as a leveler. Accordingly, in various cases, the mapping function and the alignment function as described herein may be performed by a common architecture, which can be understood as an aligner, especially in cases where in order to perform the alignment function, the mapping function must first be performed.

[00233] В различных случаях устройства, системы и способы их использования по настоящему изобретению могут быть выполнены с возможностью осуществления одного или более из выравниваний полного рида с гэпами и/или без гэпов, которые затем могут быть оценены для определения надлежащего выравнивания для ридов в наборе данных. Например, в различных случаях на данных, подлежащих обработке, может быть выполнена процедура выравнивания без гэпов, причем за этой процедурой выравнивания без гэпов могут следовать одно или более выравниваний с гэпами и/или процедура выборочного выравнивания Смита-Ватермана. Например, на первом этапе может быть сформирована цепочка выравнивания без гэпов. Как описано в настоящем документе, такие функции выравнивания без гэпов могут выполняться быстро без необходимости учета гэпов, причем после первого этапа выполнения выравнивания без гэпов может следовать выполнение выравнивания с гэпами.[00233] In various cases, the devices, systems, and methods for using them of the present invention may be configured to perform one or more of gapped and/or ungaped alignments of a full read, which can then be evaluated to determine the appropriate alignment for the reads in the set data. For example, in various cases, a gapless alignment procedure may be performed on the data to be processed, and the gapless alignment procedure may be followed by one or more gap alignments and/or a selective Smith-Waterman alignment procedure. For example, at the first stage an alignment chain without gaps can be formed. As described herein, such gapless alignment functions can be performed quickly without the need to consider gaps, where the first step of performing gapless alignment can be followed by performing gap alignment.

[00234] Например, можно выполнить функцию выравнивания, чтобы определить, как любая данная нуклеотидная последовательность, например рид, выравнивается на референсную последовательность, без необходимости вставки гэпов в одном или более ридах и/или референсе. Важная часть выполнения такой функции выравнивания состоит в том, чтобы определить, где и какие несовпадения имеются в исследуемой последовательности по сравнению с последовательностью референсного генома. Однако вследствие колоссальной гомологии в геноме человека любая данная нуклеотидная последовательность, теоретически, имеет склонность к совпадению в значительной степени с репрезентативной референсной последовательностью. Имеющиеся несовпадения, скорее всего, будут обусловлены однонуклеотидным полиморфизмом, который относительно легко обнаружить, или они будут вызваны инсерцией или делецией в исследуемой последовательности, которые намного труднее обнаружить.[00234] For example, an alignment function can be performed to determine how any given nucleotide sequence, such as a read, aligns to a reference sequence, without the need to insert gaps in one or more reads and/or reference. An important part of performing such an alignment function is to determine where and what mismatches exist in the sequence of interest compared to the reference genome sequence. However, due to the enormous homology in the human genome, any given nucleotide sequence, theoretically, tends to match to a significant degree with a representative reference sequence. The mismatches that exist are likely to be due to a single nucleotide polymorphism, which is relatively easy to detect, or they will be caused by an insertion or deletion in the sequence of interest, which is much more difficult to detect.

[00235] Следовательно, при выполнении функции выравнивания в большинстве случаев исследуемая последовательность имеет тенденцию к совпадению с референсной последовательностью, а если имеется несовпадение вследствие ОНП, это будет легко определено. Следовательно, для выполнения такого анализа не требуется относительно большого объема вычислительной мощности. Однако при наличии инсерций или делеций в исследуемой последовательности по сравнению с референсной последовательностью возникают трудности, поскольку такие инсерции и делеции приводят к гэпам при выравнивании. Такие гэпы требуют более обширной и сложной платформы обработки для правильного определения выравнивания. Тем не менее, поскольку процент инделов будет невелик, нужно будет выполнить относительно небольшой процент протоколов выравнивания с гэпами по сравнению с выполняемыми миллионами выравниваний без гэпов. Поэтому лишь небольшой процент всех функций выравнивания без гэпов приведет к необходимости дальнейшей обработки вследствие наличия индела в последовательности и, следовательно, потребует выравнивания с гэпами.[00235] Therefore, when performing an alignment function, in most cases the sequence of interest will tend to match the reference sequence, and if there is a mismatch due to an SNP, this will be easily determined. Therefore, performing such analysis does not require a relatively large amount of computing power. However, if there are insertions or deletions in the test sequence compared to the reference sequence, difficulties arise, since such insertions and deletions lead to gaps in the alignment. Such gaps require a more extensive and complex processing platform to correctly determine the alignment. However, since the percentage of indels will be small, a relatively small percentage of gap alignment protocols will need to be performed compared to the millions of gapless alignments performed. Therefore, only a small percentage of all non-gapped alignment functions will result in the need for further processing due to the presence of an indel in the sequence and therefore require a gap-aligned alignment.

[00236] Когда в процедуре выравнивания без гэпов указан индел, только эти последовательности пропускаются в движок выравнивания для дальнейшей обработки, например, в движок обработки, выполненный с возможностью осуществления продвинутой функции выравнивания, такой как выравнивание Смита-Ватермана (SWA). Поэтому, поскольку нужно выполнять выравнивание либо без гэпов, либо с гэпами, устройства и системы, описанные в настоящем документе, являются намного более эффективным использованием ресурсов. Более конкретно, в определенных вариантах реализации на данной подборке последовательностей выравнивание может быть выполнено как без гэпов, так и с гэпами, например, одно за другим, затем для каждой последовательности сравнивают результаты и лучший результат выбирают. Такая конфигурация может быть реализована, например, когда желательно повышение точности и имеется повышенное количество времени и ресурсов для выполнения требуемой обработки.[00236] When an indel is specified in a gapless alignment procedure, only those sequences are passed to an alignment engine for further processing, for example, a processing engine configured to perform an advanced alignment function such as a Smith-Waterman alignment (SWA). Therefore, since alignment must be performed either without gaps or with gaps, the devices and systems described herein are a much more efficient use of resources. More specifically, in certain embodiments, alignments can be performed on a given set of sequences either without gaps or with gaps, for example, one after the other, then the results for each sequence are compared and the best result is selected. Such a configuration may be implemented, for example, when increased accuracy is desired and an increased amount of time and resources are available to perform the required processing.

[00237] В частности, в различных случаях первый этап выравнивания может быть выполнен без привлечения функции Смита-Ватермана, требующей интенсивной обработки. Следовательно, множество выравниваний без гэпов могут быть выполнены с меньшими требованиями к ресурсам и меньшими временными затратами, а поскольку требуется меньше ресурсов, на микросхеме нужно выделить меньше пространства для такой обработки. Таким образом, можно выполнить больше обработки с использованием меньшего числа обрабатывающих элементов, требующих меньше времени, поэтому можно выполнить больше выравниваний и достичь более высокой точности. Более конкретно, для реализации выполнения выравниваний Смита-Ватермана нужно выделять меньше ресурсов микросхемы с использованием меньшей площади микросхемы, так как для обрабатывающих элементов, необходимых для выполнения выравниваний без гэпов, не требуется такая большая площадь микросхемы, как для выполнения выравнивания с гэпами. Поскольку требования к ресурсам микросхемы снижаются, можно выполнить больший объем обработки за более короткий период времени, а за счет большего объема обработки, который можно выполнить, можно достичь более высокой точности.[00237] In particular, in various cases, the first stage of alignment can be performed without involving the Smith-Waterman function, which requires intensive processing. Therefore, multiple gapless alignments can be performed with fewer resource requirements and less time overhead, and since fewer resources are required, less on-chip space must be allocated for such processing. In this way, more processing can be done using fewer processing elements requiring less time, so more alignments can be performed and higher accuracy can be achieved. More specifically, performing Smith-Waterman alignments requires fewer chip resources using less chip area because the processing elements required to perform gapless alignments do not require as much chip area as to perform gapped alignments. As chip resource requirements are reduced, more processing can be performed in a shorter period of time, and with more processing that can be performed, higher accuracy can be achieved.

[00238] Соответственно, в таких случаях можно использовать протокол выравнивания без гэпов, например, который должен выполняться соответствующим образом сконфигурированными ресурсами для выравнивания без гэпов. Например, как описано в настоящем документе, в различных вариантах реализации предусмотрен движок обработки выравнивания, например, когда движок обработки выполнен с возможностью приема цифровых сигналов, например, представляющих одно или более ридов геномных данных, таких как цифровые данные, выражающие одну или более нуклеотидных последовательностей, из электронного источника данных, и картирования и/или выравнивания этих данных на референсную последовательность, например, путем выполнения сначала функции выравнивания без гэпов на этих данных, причем при необходимости за функцией выравнивания без гэпов может последовать функция выравнивания с гэпами, например, путем выполнения протокола выравнивания Смита-Ватермана.[00238] Accordingly, in such cases, a gapless alignment protocol can be used, for example, which must be executed by suitably configured gapless alignment resources. For example, as described herein, in various embodiments an alignment processing engine is provided, for example where the processing engine is configured to receive digital signals, for example, representing one or more reads of genomic data, such as digital data expressing one or more nucleotide sequences , from an electronic data source, and mapping and/or aligning that data to a reference sequence, e.g. by first performing a gapless alignment function on the data, where the gapless alignment function may be followed by a gap alignment function if necessary, e.g. Smith-Waterman alignment protocol.

[00239] Поэтому в различных случаях выполняют функцию выравнивания без гэпов на сплошной части рида, например, с помощью выравнивателя без гэпов, и если выравнивание без гэпов проходит от начала до конца, например рид является полным, выравнивание с гэпами не выполняют. Однако, если результаты выравнивания без гэпов указывают на наличие индела, например рид обрезан или является неполным по иным причинам, можно выполнить выравнивание с гэпами. Таким образом, результаты выравнивания без гэпов могут быть использованы для определения необходимости выравнивания с гэпами, например, когда выравнивание без гэпов достигло области гэпа, но не распространилось на всю длину рида, например, когда рид, возможно, обрезан, например, слабо обрезан, и в том месте, где он обрезано, затем может быть выполнено выравнивание с гэпами.[00239] Therefore, in various cases, the non-gapped alignment function is performed on a solid portion of the read, for example, using a non-gapped aligner, and if the non-gapped alignment runs from the beginning to the end, for example, the read is complete, the gap alignment is not performed. However, if the results of an alignment without gaps indicate the presence of an indel, such as the read being truncated or otherwise incomplete, an alignment with gaps can be performed. Thus, the results of a gapless alignment can be used to determine whether a gap alignment is necessary, for example when a gapless alignment has reached the gap region but has not extended to the full length of the read, for example when a read may have been trimmed, such as lightly trimmed, and where it is cut, alignment can then be done with the gaps.

[00240] Поэтому в различных вариантах реализации, основанных на полноте и оценках выравнивания, выравнивание с гэпами применяют только в том случае, если выравнивание без гэпов завершается, будучи обрезанным, например, не проходит от начала до конца. Более конкретно, в различных вариантах реализации лучшая оценка выравнивания без гэпов и/или с гэпами, которую можно определить, может быть оценена и использована в качестве линии отсечки для принятия решения о том, является ли оценка достаточно хорошей для оправдания дальнейшего анализа, например путем выполнения выравнивания с гэпами. Таким образом, полнота выравнивания и его оценка могут быть использованы так, чтобы высокая оценка указывала на то, что выравнивание завершено и, следовательно, не имеет гэпов, а низкая оценка указывает на то, что выравнивание не завершено, и нужно выполнить выравнивание с гэпами. Следовательно, когда достигнута высокая оценка, выравнивание с гэпами не выполняют, а выравнивание с гэпами выполняют только тогда, когда оценка достаточно низкая. Конечно, в различных случаях может быть применен подход с выравниванием перебором, например, когда в архитектуре микросхемы развернут ряд выравнивателей с гэпами и/или без гэпов, чтобы обеспечить возможность выполнения большего числа выравниваний, и таким образом может быть проверено большее количество данных.[00240] Therefore, in various implementations based on completeness and alignment assessments, a gapped alignment is only used if a non-gapped alignment ends up being trimmed, eg, does not go from start to finish. More specifically, in various embodiments, the best estimate of the alignment without and/or with gaps that can be determined can be evaluated and used as a cutoff line for deciding whether the estimate is good enough to justify further analysis, for example by performing alignment with gaps. Thus, alignment completeness and its score can be used such that a high score indicates that the alignment is complete and therefore has no gaps, and a low score indicates that the alignment is not complete and an alignment with gaps needs to be performed. Therefore, when a high score is reached, no gap alignment is performed, and gap alignment is performed only when the score is low enough. Of course, in various cases a brute-force alignment approach can be applied, for example when a number of gapped and/or non-gapped aligners are deployed in a chip architecture to allow more alignments to be performed and thus more data can be examined.

[00241] Более конкретно, в различных вариантах реализации каждый движок картирования и/или выравнивания может включать в себя один или более, например, два, модулей выравнивателя Смита-Ватермана. В определенных случаях эти модули могут быть выполнены с возможностью поддержки глобального (от начала до конца) выравнивания без гэпов и/или локального (обрезанного) выравнивания с гэпами, выполнения аффинной оценки гэпов, и могут быть выполнены с возможностью формирования бонусов оценки за отсутствие обрезания на каждом конце. Возможна также поддержка чувствительной к качеству оснований оценки совпадения и несовпадения. Когда в состав входят два модуля выравнивания, например, как часть интегральной схемы, например, каждый выравниватель Смита-Ватермана может быть построен в виде антидиагонального фронта волны ячеек оценки, причем этот фронт волны «перемещается» по виртуальному прямоугольнику выравнивания, оценивая ячейки, через которые он прокатывается.[00241] More specifically, in various embodiments, each mapping and/or alignment engine may include one or more, such as two, Smith-Waterman aligner modules. In certain cases, these modules may be configured to support global (end-to-end) alignment without gaps and/or local (truncated) alignment with gaps, perform affine scoring of gaps, and may be configured to generate score bonuses for not clipping on each end. It is also possible to support a quality-sensitive basis for assessing agreement and disagreement. When two equalizer modules are included, for example as part of an integrated circuit, for example, each Smith-Waterman equalizer can be constructed as an anti-diagonal wavefront of evaluation cells, with this wavefront "moving" across the virtual equalization rectangle, evaluating the cells through which it rolls.

[00242] Однако в случае длинных ридов фронт волны Смита-Ватермана может быть также выполнен с возможностью поддержки автоматического управления направлением движения фронта волны, чтобы отслеживать лучшее выравнивание через накопленные инделы для обеспечения того, чтобы фронт волны выравнивания и оцениваемые ячейки не вышли из полосы оценки. Логические движки могут быть выполнены с возможностью проверки текущих оценок фронта волны, нахождения максимумом, пометки подмножеств ячеек на пороговом расстоянии ниже максимума и назначения в качестве мишени средней точки между двумя флагами экстремумов в фоновом режиме. В таком случае автоматическое управление направлением движения может быть выполнено с возможностью прохождения по диагонали, когда мишень находится в центре фронта волны, но может быть выполнено с возможностью прохождения прямо по горизонтали или вертикали при необходимости возврата мишени в центр, если она смещается, например вследствие наличия инделов.[00242] However, in the case of long reads, the Smith-Waterman wavefront may also be configured to support automatic control of the direction of movement of the wavefront to track better alignment through accumulated indels to ensure that the alignment wavefront and the cells being evaluated do not fall outside the evaluation band . Logic engines can be configured to check current estimates of the wave front, find the maximum, mark subsets of cells at a threshold distance below the maximum, and target the midpoint between two extreme flags in the background. In such a case, the automatic control of the direction of movement may be configured to travel diagonally when the target is in the center of the wave front, but may be configured to travel straight horizontally or vertically when necessary to return the target to the center if it moves, for example due to the presence of indels.

[00243] Выходными данными из модуля выравнивания является файл SAM (текст) или BAM (например, двоичная версия файла SAM) вместе с оценкой качества картирования (MAPA), которая отражает достоверность того, что прогнозированное и выровненное местоположение рида относительно референса действительно то самое, откуда получен рид. Соответственно, после того, как определено, где каждый рид картирован, а также определено, где каждый рид выровнен, например, каждому соответствующему риду даны позиция и оценка качества, отражающая вероятность того, что эта позиция является правильным выравниванием, так что нуклеотидная последовательность для ДНК субъекта известна, как и то, как ДНК субъекта отличается от референса (например, определена строка CIGAR), различные риды, представляющие геномную последовательность нуклеиновых кислот субъекта могут быть отсортированы по местоположению в хромосоме, чтобы можно было определить точное местоположение рида на хромосомах. Поэтому в соответствии с некоторыми аспектами настоящее изобретение относится к функции сортировки, например, которая может быть выполнена модулем сортировки, который может быть частью конвейера модулей, например, конвейера, предназначенного для приема необработанных данных рида последовательности, например, в виде геномного образца индивида, и картирования и/или выравнивания этих данных, которые могут быть затем сохранены.[00243] The output from the alignment module is a SAM (text) or BAM file (e.g., a binary version of a SAM file) along with a Mapping Quality Assessment (MAPA), which reflects the confidence that the predicted and aligned location of the read relative to the reference is actually the same one. where did the read come from? Accordingly, once it is determined where each read is mapped, and it is also determined where each read is aligned, for example, each corresponding read is given a position and a quality score reflecting the likelihood that that position is a correct alignment, so that the nucleotide sequence for the DNA When a subject's DNA is known, and how the subject's DNA differs from a reference (eg, a CIGAR string is defined), the various reads representing the subject's genomic nucleic acid sequence can be sorted by chromosomal location so that the precise chromosomal location of the read can be determined. Therefore, in accordance with some aspects, the present invention relates to a sorting function, for example, that can be performed by a sorting module, which can be part of a pipeline of modules, for example, a pipeline designed to receive raw sequence read data, for example, in the form of a genomic sample of an individual, and mapping and/or alignment of this data, which can then be stored.

[00244] Более конкретно, после того, как ридам назначены позиции, например, относительно референсного генома, что может включать в себя определение того, какой хромосоме принадлежит рид, и/или его смещения от начала этой хромосомы, риды можно отсортировать по позиции. Сортировка может быть полезна, например, в последующих анализах, так как при помощи ее все риды, которые перекрывают данную позицию в геноме, могут быть сформированы в скопление, чтобы находится друг возле друга, например, после обработки модулем сортировки, в результате чего можно легко определить, согласуются ли большинство ридов с референсным значением или нет. Таким образом, если большинство ридов не согласуются с референсным значением, определение варианта может пометить. Следовательно, сортировка может включать в себя одну или более сортировок ридов, которые выровнены относительно одной и той же позиции, например, одной и той же позиции хромосомы, для создания скопления, чтобы все риды, которые покрывают одно и то же местоположение, были физически сгруппированы вместе; и может также включать в себя анализ ридов в скоплении для определения того, где риды могут указывать фактический вариант в геноме по сравнению с референсным геномом, причем этот вариант можно отличить, например, с помощью согласования скопления, от ошибки, такой как ошибка считывания машиной или ошибка в методах секвенирования, которая может проявляться малой частью ридов.[00244] More specifically, once reads have been assigned positions, for example, relative to a reference genome, which may include determining which chromosome the read belongs to and/or its offset from the start of that chromosome, the reads can be sorted by position. Sorting can be useful, for example, in subsequent analyzes, since with its help all reads that overlap a given position in the genome can be formed into a cluster so that they are located next to each other, for example, after processing by the sorting module, as a result of which you can easily determine whether the majority of reads agree with the reference value or not. Thus, if the majority of reads do not agree with the reference value, the variant definition can flag. Therefore, sorting may involve one or more sortings of reads that are aligned to the same position, e.g., the same chromosome position, to create a cluster so that all reads that cover the same location are physically grouped together; and may also include analysis of reads in the assemblage to determine where the reads may indicate an actual variant in the genome compared to a reference genome, which variant can be distinguished, for example, by assemblage reconciliation, from an error such as a machine read error or an error in sequencing methods that may occur in a small portion of the reads.

[00245] После того, как данные получены, имеются один или более других модулей, с помощью которых можно очистить эти данные. Например, один модуль, который может входить, например, в конвейер анализа последовательностей, такой как для определения геномной последовательности индивида, может быть модулем локального повторного выравнивания. Например, часто трудно определить инсерции и делеции, которые возникают в конце рида. Причина в том, что алгоритм Смита-Ватермана или аналогичный процесс выравнивания испытывает недостаток контекста касательно индела, чтобы можно было выполнить оценку для обнаружения его присутствия. Поэтому фактический индел может быть указан в отчете как один или более ОНП. В таком случае точность прогнозированного местоположения для любого данного рида может быть улучшена за счет выполнения локального повторного выравнивания на картированных, и/или выровненных, и/или сортированных данных рида.[00245] Once the data is received, there are one or more other modules that can be used to clean up the data. For example, one module that may be included in, for example, a sequence analysis pipeline, such as for determining the genomic sequence of an individual, may be a local realignment module. For example, it is often difficult to identify insertions and deletions that occur at the end of a read. The reason is that the Smith-Waterman algorithm or similar alignment process lacks context about the indel to allow evaluation to detect its presence. Therefore, the actual indel may be reported as one or more SNPs. In such a case, the accuracy of the predicted location for any given read can be improved by performing local realignment on the mapped and/or aligned and/or sorted read data.

[00246] В таких случаях могут быть использованы конвейеры для помощи в выяснении истинного выравнивания, например, когда рассматриваемая позиция находится в конце любого данного рида, эта же позиция, вероятно, будет посредине некоторого другого рида в данном скоплении. Соответственно, при выполнении локального повторного выравнивания могут быть проанализированы различные риды в скоплении, чтобы определить, указывают ли некоторые риды в скоплении на наличие инсерции или делеции в данной позиции, где другой рид не содержит индела или, скорее, имеет замену в этой позиции, тогда можно вставить индел, например, в референс, где он не присутствует, и можно повторно выровнять риды в локальном скоплении, которое перекрывает эту область, чтобы посмотреть, будет ли при этом достигнута более хорошая совокупная оценка, чем в том случае, когда там не было инсерции и/или делеции. Если улучшение имеется, весь набор ридов в скоплении может быть пересмотрен, и если оценка всего набора улучшилась, то становится понятно, что в этой позиции действительно был индел. Подобным образом можно компенсировать отсутствие достаточного контекста для более точного выравнивания рида в конце хромосомы для любого отдельного рида. Поэтому при выполнении локального повторного выравнивания исследуют одно или более скоплений, где могут находиться один или более инделов, и определяют, можно ли улучшить общую оценку выравнивания путем добавления индела в любую данную позицию.[00246] In such cases, pipelines can be used to assist in figuring out the true alignment, for example, when the position in question is at the end of any given read, that same position is likely to be in the middle of some other read in a given cluster. Accordingly, when performing local realignment, various reads in a cluster can be analyzed to determine whether some reads in the cluster indicate the presence of an insertion or deletion at a given position where another read does not contain an indel or rather has a substitution at that position, then one can insert an indel, for example, into a reference where it is not present, and one can re-align reads in a local cluster that overlaps that region to see if this achieves a better aggregate score than if it were not there insertions and/or deletions. If there is an improvement, the entire set of reads in the cluster can be revised, and if the score of the entire set has improved, then it becomes clear that there was indeed an indel at that position. In a similar way, one can compensate for the lack of sufficient context to more accurately align the read at the end of the chromosome for any individual read. Therefore, when performing a local realignment, one or more clusters that may contain one or more indels are examined and it is determined whether the overall alignment score can be improved by adding an indel at any given position.

[00247]Другой модуль, который может входить, например, в конвейер анализа последовательностей, таком как для определения геномной последовательности индивида, может быть модулем маркировки дубликатов. Например, функция маркировки дубликатов может быть выполнена с возможностью компенсации ошибок химии, которые могут возникать во время фазы секвенирования. Например, как описано выше, во время некоторых процедур секвенирования последовательности нуклеиновых кислот прикрепляют к бусинам и строят на этой основе с помощью меченных нуклеотидных оснований. В идеале получится по одному риду на бусину. Однако иногда к одной бусине прикрепляется множество ридов, что приводит к чрезмерному количеству копий прикрепленных ридов. Это явление известно как дупликация ридов.[00247] Another module that may be included, for example, in a sequence analysis pipeline, such as for determining the genomic sequence of an individual, may be a duplicate tagging module. For example, the duplicate flagging function may be configured to compensate for chemistry errors that may occur during the sequencing phase. For example, as described above, during some sequencing procedures, nucleic acid sequences are attached to beads and built on that basis using labeled nucleotide bases. Ideally, you will get one read per bead. However, sometimes multiple reads are attached to a single bead, resulting in an excessive number of copies of the attached reads. This phenomenon is known as read duplication.

[00248] После выполнения выравнивания и получения результатов и/или выполнения функции сортировки, локальной повторной сортировки и/или удаления дубликатов на полученных данных можно использовать функцию определения вариантов. Например, типичная функция определения вариантов или ее часть может быть выполнена с возможностью реализации в программной и/или аппаратной конфигурации, например в интегральной схеме. В частности, определение вариантов представляет собой процесс, который включает в себя позиционирование всех ридов, выровненных относительно данного местоположения на референсе, в группировки таким образом, что все перекрывающиеся области из всех различных выровненных ридов образуют «скопление». Затем скопление ридов, покрывающее данную область референсного генома, анализируют для определения того, какой наиболее вероятный фактический контент пробы ДНК/РНК индивида находится в этой области. Затем это повторяют поэтапно для каждой области в геноме. Из полученного контента формирует список различий, называемых «вариациями» или «вариантами» референсного генома, с указанием для каждого из них соответствующего уровня доверия и других метаданных.[00248] After performing the alignment and obtaining the results and/or performing the sort, local re-sort and/or deduplication function on the resulting data, the variant detection function can be used. For example, a typical variant determination function, or portion thereof, may be implemented in a software and/or hardware configuration, such as an integrated circuit. Specifically, variant detection is a process that involves positioning all reads aligned to a given reference location into groupings such that all overlapping regions from all the different aligned reads form a “cluster.” The cluster of reads covering a given region of the reference genome is then analyzed to determine what the individual's actual DNA/RNA probe content is most likely to be in that region. This is then repeated in stages for each region in the genome. From the received content, it generates a list of differences called “variations” or “variants” of the reference genome, indicating for each of them the corresponding level of confidence and other metadata.

[00249] Наиболее распространенными вариантами являются однонуклеотидные полиморфизмы (ОНП), при которых одно основание отличается от референса. ОНП встречаются примерно 1 раз на 1000 позиций в геноме человека. Следующими по распространенности являются инсерции (вставки в референс) и делеции (пропуски в референсе). Они чаще всего встречаются при малых длинах, но могут быть любой длины. Однако возникают дополнительные трудности, так как вследствие того, что выбор секвенированных сегментов («ридов») происходит случайным образом, некоторые области будут иметь более глубокое покрытие, чем другие. Существуют также множество сложных вариантов, которые включают в себя замены множества оснований и комбинации инделов и замен, которые могут быть восприняты как замены, изменяющие длину. Стандартные определители вариантов на базе программного обеспечения испытывают трудности при выявлении всего этого и имеют различные ограничения на длины вариантов. Более специализированные определители вариантов в программной и/или аппаратной реализации необходимы для выявления более длинных вариаций и многих вариаций экзотических «структурных вариантов», включающих в себя крупные изменения хромосом.[00249] The most common variants are single nucleotide polymorphisms (SNPs), in which one base differs from the reference. SNPs occur approximately 1 time per 1000 positions in the human genome. The next most common are insertions (insertions in the reference) and deletions (omissions in the reference). They are most often found in short lengths, but can be of any length. However, additional difficulties arise because, due to the random selection of sequenced segments (“reads”), some regions will have deeper coverage than others. There are also many complex variants that involve multiple base substitutions and combinations of indels and substitutions that can be perceived as length-altering substitutions. Standard software-based variant identifiers have difficulty identifying all of this and have varying limitations on variant lengths. More specialized variant detectors in software and/or hardware implementation are needed to detect longer variations and many variations of exotic “structural variants” involving large chromosomal changes.

[00250] Однако определение вариантов является сложной процедурой для реализации в программном обеспечении и на порядки величины более сложной для развертывания в аппаратном обеспечении. Чтобы учесть и/или обнаружить эти типы ошибок, стандартные определители вариантов могут выполнить одну или более из следующих задач. Например, они могут начать с набора гипотетических генотипов (содержимого одной или двух хромосом в локусе) и с помощью байесовских расчетов оценить апостериорную вероятность того, что каждый генотип является истинным в свете наблюдаемых подтверждающих данных, и сообщить наиболее вероятный генотип вместе с уровнем доверия. В силу этого определители вариантов могут быть простыми или сложными. Простые определители вариантов рассматривают только столбцы оснований в скоплении выровненных ридов точно в той позиции, где осуществляется определение. Более совершенные варианты определителей представляют собой «определители на основе гаплотипа», которые могут быть выполнены с возможностью учета контекста, например, в окне вокруг выполняемого определения.[00250] However, identifying variants is complex to implement in software and orders of magnitude more complex to deploy in hardware. To account for and/or detect these types of errors, standard variant determiners may perform one or more of the following tasks. For example, they might start with a set of hypothetical genotypes (the content of one or two chromosomes at a locus) and use Bayesian calculations to estimate the posterior probability that each genotype is true in light of the observed supporting evidence, and report the most likely genotype along with the level of confidence. Because of this, option qualifiers can be simple or complex. Simple variant detectors look only at the columns of bases in the cluster of aligned reads at the exact position where the detection is made. More advanced variants of determinants are "haplotype-based determinants", which can be made to take into account context, for example in a window around the definition being made.

[00251] «Гаплотип» - это конкретное содержимое ДНК (нуклеотидная последовательность, список вариантов и т.д.) в одной общей «нити», например, одна или две диплоидные нити в области, и определитель гаплотипов учитывает байесовские импликации того, какие различия связаны появлением в одном и том же риде. Соответственно, протокол определения вариантов, который представлен в настоящем документе, может реализовывать одну или более функций, например, выполняемых определителем гаплотипов Genome Analysis Tool Kit (GATK), и/или с помощью средства Hidden Markov Model (HMM), и/или функции графа де Брейна, например, когда одна или более из этих функций, обычно выполняемая определителем гаплотипов GATK, и/или средством HMM, и/или функцией графа де Брейна, может быть реализована в программном и/или аппаратном обеспечении.[00251] A "haplotype" is the specific DNA content (nucleotide sequence, list of variants, etc.) in one common "strand", such as one or two diploid strands in a region, and the haplotype determiner takes into account Bayesian implications of what differences are related by appearing in the same read. Accordingly, the variant detection protocol that is presented herein may implement one or more functions, such as those performed by the Genome Analysis Tool Kit (GATK) haplotype determiner and/or the Hidden Markov Model (HMM) tool, and/or the graph function de Bruijn, for example, where one or more of these functions typically performed by the GATK haplotype finder and/or the HMM and/or the de Bruijn graph function may be implemented in software and/or hardware.

[00252] Более конкретно, в соответствии с реализациями в данном документе всевозможные разные операции определения вариантов могут быть выполнены с возможностью осуществления в программном или аппаратном обеспечении, и могут включать в себя один или более из следующих этапов. Например, функция определения вариантов может включать в себя выявление активной области, например, для выявления мест, где множество ридов не согласуются с референсом, и для формирования окна вокруг выявленной активной области, чтобы только эта область могла быть выбрана для дальнейшей обработки. Кроме того, возможна локализованная сборка гаплотипа, например, когда для каждой данной активной области все перекрывающиеся риды могут быть собраны в матрицу «графа де Брейна» (De Bruijn graph, DBG) Из этого DBG можно выделять различные маршруты через матрицу, где каждый маршрут образует гаплотип-кандидат, например, гипотезы о том, какая истинная последовательность ДНК может быть на по меньшей мере одной нити. Кроме того, возможно выравнивание гаплотипа, например, когда каждый выделенный гаплотип-кандидат может быть выровнен, например, с помощью алгоритма Смита-Ватермана, обратно на референсный геном, чтобы определить, какие вариации референса он означает. Кроме того, может быть выполнено вычисление правдоподобия рида, например, когда рид может быть проверен относительно каждого гаплотипа или гипотезы, чтобы оценить вероятность наблюдения рида в предположении, что гаплотип был получен из истинной исходной ДНК.[00252] More specifically, in accordance with the implementations herein, various different variant determination operations may be capable of being implemented in software or hardware, and may include one or more of the following steps. For example, the variant detection function may include hot region detection, for example, to identify locations where multiple reads do not match the reference, and to form a window around the identified hot region so that only that region can be selected for further processing. In addition, localized haplotype assembly is possible, for example when, for each given active region, all overlapping reads can be assembled into a “De Bruijn graph” (DBG) matrix. From this DBG, different routes can be extracted through the matrix, where each route forms candidate haplotype, for example, hypotheses about what the true DNA sequence may be on at least one strand. In addition, haplotype alignment is possible, for example where each isolated candidate haplotype can be aligned, for example using the Smith-Waterman algorithm, back to the reference genome to determine which reference variations it represents. In addition, a read likelihood calculation can be performed, for example where a read can be tested against each haplotype or hypothesis to estimate the likelihood of observing a read under the assumption that the haplotype was derived from the true source DNA.

[00253] Что касается этих процессов, вычисление правдоподобия рида обычно будет наиболее ресурсоемкой и времязатратной операцией, часто требующей оценки парной HMM. Кроме того, построение графов де Брейна для каждого скопления ридов вместе со связанными операциями локального или глобального выявления уникальных K-меров, как описано ниже, тоже может быть ресурсоемким и/или времязатратным. Соответственно, в различных вариантах реализации одно или более из различных вычислений, относящихся к выполнению одного или более из этих этапов, могут быть выполнены с возможностью реализации оптимальным образом в программном или аппаратном обеспечении, например, с возможностью осуществления ускоренным образом интегрированной схемой, как описано в настоящем документе.[00253] With regard to these processes, calculating the read likelihood will typically be the most resource-intensive and time-consuming operation, often requiring pairwise HMM estimation. Additionally, constructing de Bruijn graphs for each cluster of reads, together with the associated operations of local or global identification of unique K-mers, as described below, can also be resource-intensive and/or time-consuming. Accordingly, in various embodiments, one or more of the various calculations related to performing one or more of these steps may be capable of being implemented in an optimal manner in software or hardware, for example, capable of being implemented in an accelerated manner by integrated circuitry, as described in this document.

[00254] Как указано выше, в различных вариантах реализации определитель гаплотипов по данному изобретению, реализованный в программном и/или аппаратном обеспечении или их сочетании, может быть выполнен с возможностью включения в себя одной или более из следующих операций: выявление активной области, локализованная сборка гаплотипа, выравнивание гаплотипа, вычисление правдоподобия рида и/или генотипирование. Например, устройства, системы и/или способы по данному изобретению могут быть выполнены с возможностью осуществления одной или более из операций картирования, выравнивания и/или сортировки на данных, полученных из секвенированной ДНК/РНК субъекта, для формирования картированных, выровненных и/или сортированных данных результатов. Затем эти данные результатов могут быть очищены, например, путем выполнения на них операции удаления дубликатов, и/или эти данные могут быть переданы в один или более специализированных движков обработки определителя гаплотипов для выполнения операции определения вариантов, в том числе одного или более вышеупомянутых этапов, на этих данных результатов, чтобы тем самым сформировать файл определения вариантов. Поэтому все риды, которые были секвенированы, и/или картированы, и/или выровнены на конкретные позиции в референсном геноме, могут быть подвергнуты дальнейшей обработке, чтобы определить, как определенная последовательность отличается от референсной последовательности в любой данной точке в референсном геноме.[00254] As discussed above, in various embodiments, the haplotype determiner of the present invention, implemented in software and/or hardware or a combination thereof, may be configured to include one or more of the following operations: active region detection, localized assembly haplotype, haplotype alignment, read likelihood calculation and/or genotyping. For example, the devices, systems and/or methods of the present invention may be configured to perform one or more of mapping, alignment and/or sorting operations on data obtained from a subject's sequenced DNA/RNA to form mapped, aligned and/or sorted these results. This result data may then be cleaned, for example by performing a duplicate removal operation on it, and/or the data may be passed to one or more specialized haplotype determiner processing engines to perform a variant determination operation, including one or more of the above steps, on these results data to thereby generate a variant definition file. Therefore, all reads that have been sequenced and/or mapped and/or aligned to specific positions in the reference genome can be further processed to determine how a particular sequence differs from the reference sequence at any given point in the reference genome.

[00255] Соответственно, в различных вариантах реализации устройство, система и/или способ их использования, которые описаны в настоящем документе, могут включать в себя систему определителя варианта или гаплотипа, которая реализована в программной и/или аппаратной конфигурации для выполнения операции выявления активной области на полученных данных результатов. Выявление активной области включает в себя выявление и определение мест, где множество ридов, например в скоплении ридов, не согласуются с референсом, а также включает в себя формирование одного или более окон вокруг отличий («активных областей») таким образом, чтобы область внутри окна могли быть выбрана для дальнейшей обработки. Например, во время этапа картирования и/или выравнивания выявленные риды картируют и/или выравнивают на области в референсном геноме, откуда они, как ожидается, взяты из генетической последовательности субъекта.[00255] Accordingly, in various embodiments, an apparatus, system, and/or method of use thereof that are described herein may include a variant or haplotype detector system that is implemented in software and/or hardware configuration for performing an active region detection operation on the obtained results data. Hot spot detection involves identifying and defining locations where multiple reads, such as in a read cluster, are inconsistent with a reference, and also involves forming one or more windows around the differences (“hot spots”) so that the area within the window could be selected for further processing. For example, during the mapping and/or alignment step, identified reads are mapped and/or aligned to the region in the reference genome from which they are expected to come from the subject's genetic sequence.

[00256] Однако, поскольку секвенирование выполняют таким образом, чтобы создать избыточную выборку секвенированных ридов для любой данной области генома, в любой данной позиции в референсной последовательности можно увидеть скопление из любых и/или всех секвенированных ридов, которые привязываются и выравниваются относительно этой области. Все эти риды, которые выравниваются и/или перекрываются в данной позиции области или скопления, могут быть введены в систему определителя вариантов. Таким образом, любое данный анализируемый рид можно сравнить с референсом в его предполагаемой области перекрытия, и этот рид можно сравнить с референсом, чтобы определить, имеет ли ее последовательность какие-либо отличия от известной последовательности референса. Если рид укладывается на референс без всяких инсерций или делеций и все основания одинаковые, то выравнивание определяют как хорошее.[00256] However, because sequencing is performed in such a way as to oversample sequenced reads for any given region of the genome, at any given position in the reference sequence one can see a cluster of any and/or all sequenced reads that are anchored and aligned to that region. All of these reads that align and/or overlap at a given region or cluster position can be entered into the variant finder system. Thus, any given read being analyzed can be compared to a reference in its putative region of overlap, and that read can be compared to the reference to determine whether its sequence has any differences from the known reference sequence. If the read fits onto the reference without any insertions or deletions and all bases are the same, then the alignment is defined as good.

[00257] Следовательно, любой данный картированный и/или выровненный рид может иметь основания, которые отличаются от референса, например, рид может содержать один или более ОНП, образующих позицию, где основание не совпадает; и/или рид может иметь одну или более инсерций и/или делеций, например, создающих гэп в выравнивании. Соответственно, в любом из этих случаев будут одно или более несовпадений, которые нужно учитывать в дальнейшей обработке. Тем не менее, чтобы сэкономить время и повысить эффективность, такие дальнейшие обработки следует ограничить случаями, где выявленное несовпадение является нетривиальным, например, не вызванным помехой, отличием. При определении значимости несовпадения места, где множество ридов в скоплении не согласуются с референсом, могут быть идентифицированы как активная область, затем вокруг этой активной области можно использовать окно, чтобы выбрать локус расхождения, который после этого может быть подвергнут дальнейшей обработке. Однако отличие должно быть нетривиальным. Это можно определить множеством способов, например, для каждого рассматриваемого локуса можно вычислить вероятно его непринадлежности референсу, например, путем анализа оценки качества на основе совпадений и несовпадений оснований таким образом, что превышение данного порога считается достаточно значимым показателем того, что эти риды не согласуются с референсом в значительной мере.[00257] Therefore, any given mapped and/or aligned read may have bases that differ from the reference, for example, a read may contain one or more SNPs forming a position where the base does not match; and/or the read may have one or more insertions and/or deletions, for example creating a gap in the alignment. Accordingly, in any of these cases there will be one or more mismatches that need to be taken into account in further processing. However, to save time and improve efficiency, such further processing should be limited to cases where the detected discrepancy is non-trivial, e.g., non-interfering, difference. When determining the significance of a discrepancy, places where multiple reads in a cluster do not match the reference can be identified as an active region, then a window around this active region can be used to select a divergence locus, which can then be further processed. However, the difference must be non-trivial. This can be determined in a variety of ways, for example, for each locus considered, it can be calculated that it is likely not to belong to the reference, for example, by analyzing a quality score based on base matches and mismatches such that exceeding a given threshold is considered a sufficiently significant indicator that these reads are not consistent with reference to a large extent.

[00258] Например, если 30 из картированных и/или выровненных ридов укладываются и/или накладываются с образование скопления в данной позиции в референсе, например в активной области, и лишь 1 или 2 из этих 30 ридов не согласуются с референсом, то можно считать, что минимальный порог для дальнейшей обработки не удовлетворен, а несогласующиеся риды можно игнорировать, принимая во внимание тот факт, что 28 или 29 ридов согласуются. Однако, если не согласуются 3, или 4, или 5, или 10, или более ридов в скоплении, то это несогласование можно считать достаточно статистически значимым для оправдания дальнейшей обработки, и вокруг выявленный областей отличия можно определить активную область. В таком случае можно рассмотреть окно активной области, определяющее основания, окружающие это отличие, чтобы улучшить контекст области, окружающей отличие, и можно предпринять дополнительные этапы обработки, такие как применение гауссовского распределения и суммирование вероятностей непринадлежности референсу, распределенных по всем соседним частям, чтобы дополнительно изучить и обработать эту область для выявления того, нужно ли объявить активную область и, если да, то какие вариации относительно референса действительно присутствуют в этой области, если таковые имеются. Поэтому определение активной области выявляет те области, где может понадобиться дополнительная обработка, чтобы выяснить, действительно ли имеет место вариация, или произошла ошибка.[00258] For example, if 30 of the mapped and/or aligned reads stack and/or overlap to form a cluster at a given position in the reference, for example in the active region, and only 1 or 2 of these 30 reads do not agree with the reference, then it can be considered that the minimum threshold for further processing is not satisfied and discordant reads can be ignored, given the fact that 28 or 29 reads are consistent. However, if 3, or 4, or 5, or 10, or more reads in a cluster are discordant, then the discordance can be considered statistically significant enough to justify further processing, and an active region can be identified around the identified areas of difference. In such a case, a hot-region window defining the grounds surrounding the difference can be considered to improve the context of the region surrounding the difference, and additional processing steps can be taken such as applying a Gaussian distribution and summing the non-reference probabilities distributed over all adjacent parts to further examine and process this region to determine whether an active region needs to be declared and, if so, what variations relative to the reference are actually present in this region, if any. Therefore, hot spot detection identifies areas where additional processing may be needed to determine whether variation is actually occurring or an error has occurred.

[00259] В частности, поскольку во многих случаях нежелательно подвергать дальнейшей обработке каждую область в скоплении последовательностей, можно определить активную область, в которой находятся только те области, где может потребоваться дальнейшая обработка, чтобы четко определить, действительно ли это вариация, или произошла ошибка, которая может быть определена, как требующая дальнейшей обработки. И, как указано выше, размер окна активной области может определяться размером предполагаемой вариации. Например, в различных случаях границы активного окна могут меняться от 1 или 2 или от около 10 до 20, или даже от около 25 до около 50, и ли от около 200 до около 300, или от около 500 до около 1000 оснований или более, причем дальнейшая обработка происходит только внутри границ активного окна. Конечно, размер активного окна может быть любой подходящей длины, такой, чтобы она обеспечивала контекст для определения статистической важности отличия.[00259] In particular, since in many cases it is not desirable to subject every region in a cluster of sequences to further processing, it is possible to define an active region that contains only those regions where further processing may be required to clearly determine whether it is indeed a variation or an error has occurred , which may be determined to require further processing. And, as stated above, the size of the active region window can be determined by the size of the expected variation. For example, in various cases, the active window boundaries may vary from 1 or 2, or from about 10 to 20, or even from about 25 to about 50, or from about 200 to about 300, or from about 500 to about 1000 bases or more, Moreover, further processing occurs only within the boundaries of the active window. Of course, the active window size can be any suitable length such that it provides context for determining the statistical significance of the difference.

[00260] Следовательно, если имеются только одно или два изолированных отличия, возможно, потребуется, чтобы активное окно охватывало одно или более из нескольких десятков оснований в активной области, чтобы иметь достаточно контекста для статистического определения наличия действительного варианта. Однако, если имеется кластер или группа отличий, или если имеются инделы, для которых требуется больше контекста, окно можно сделать большего размера. В любом случае может потребоваться проанализировать все без исключения отличия, которые могут быть в кластерах, чтобы проанализировать их все в одной или более активных областях, поскольку это может обеспечить вспомогательную информацию о каждом отдельном отличии и сэкономит время обработки за счет уменьшения количества затрагиваемых активных окон. В различных случаях границы активной области могут быть определены с помощью активных вероятностей, которые удовлетворяют данному порогу, такому как от около 0,00001, или около 0,00001, или около 0,0001 или меньше до около 0,002, или около 0,02, или около 0,2 или больше. И если активная область длиннее данного порога, например, около 300-500 оснований или 1000 оснований или более, то эту область можно разбить на подобласти, например, на подобласти, определяемые локусом с наинизшей оценкой активной вероятности.[00260] Therefore, if there are only one or two isolated differences, the active window may need to span one or more of several dozen bases in the active region in order to have enough context to statistically determine the presence of a valid variant. However, if there is a cluster or group of differences, or if there are indels that require more context, the window can be made larger. In any case, it may be necessary to analyze any and all differences that may exist in clusters to analyze them all in one or more active windows, as this can provide supporting information about each individual difference and will save processing time by reducing the number of active windows affected. In various cases, the boundaries of the active region can be defined by active probabilities that satisfy a given threshold, such as from about 0.00001, or about 0.00001, or about 0.0001 or less, to about 0.002, or about 0.02. or about 0.2 or more. And if the active region is longer than this threshold, for example, about 300-500 bases or 1000 bases or more, then this region can be divided into subregions, for example, into subregions defined by the locus with the lowest active probability score.

[00261] В различных случаях после выявления активной области может быть выполнена процедура локализованной сборки гаплотипа. Например, в каждой активной области все собранные в скопление и/или перекрывающиеся риды могут быть собраны в «граф де Брейна» (DBG). DBG может быть ориентированным графом, основанным на всех ридах, которые перекрыли выбранную активную область, где активная область может быть длиной около 200, или около 300, или около 400, или около 500 оснований или более, и внутри этой активной области нужно определить наличие и/или идентичность вариантов. В различных случаях, как указано выше, активная область может быть удлинена, например, путем включения еще около 100 или около 200 или более оснований в каждом направлении исследуемого локуса, чтобы сформировать удлиненную активную область, например, когда может потребоваться дополнительный окружающий контекст. Соответственно, именно в окне активной области, удлиненном или нет, собирают в скопление все риды, которые имеют части, перекрывающие активную область, например, чтобы создать скопление, выявляют перекрывающиеся части и последовательности ридов направляют в систему определителя гаплотипа и тем самым собирают вместе в виде графа де Брейна, что во многом напоминает складывание мозаики.[00261] In various cases, after identifying the active region, a localized haplotype assembly procedure can be performed. For example, in each active region, all clustered and/or overlapping reads can be collected into a “de Bruijn graph” (DBG). The DBG may be a directed graph based on all reads that overlap a selected active region, where the active region may be about 200 bases long, or about 300 bases, or about 400 bases, or about 500 bases or more, and within that active region the presence and /or identity of options. In various cases, as noted above, the active region may be extended, for example by including about 100 more or about 200 or more bases in each direction of the locus of interest to form an extended active region, for example when additional surrounding context may be required. Accordingly, it is in the active region window, elongated or not, that all reads that have parts that overlap the active region are collected into a cluster, for example, to create a cluster, the overlapping parts are identified and the read sequences are sent to the haplotype determiner system and thereby collected together as Count de Bruijn, which is much like putting together a jigsaw puzzle.

[00262] Соответственно, в любом данном активном окне будут риды, которые образуют скопление таким образом, что скопление в целом содержит путь последовательности, с помощью которого перекрывающиеся области различных перекрывающихся ридов в скоплении покрывают всю последовательность внутри активного окна. Таким образом, в любом данном локусе в активной области будет множество ридов, перекрывающих этот локус, хотя и любой данный рид может не простираться на всю активную область. В результате этого различные области различных ридов внутри скопления используют в DBG для определения того, действительно ли имеется вариант для любого данного локуса в последовательности внутри активной области или нет. Поскольку это определение осуществляют именно внутри активного окна, учитываются именно части любого данного рида в пределах границ активного окна, а части за пределами активного окна можно отбросить.[00262] Accordingly, in any given active window there will be reads that form a cluster such that the cluster as a whole contains a sequence path whereby overlapping regions of the various overlapping reads in the cluster cover the entire sequence within the active window. Thus, at any given locus in the active region there will be many reads that overlap that locus, although any given read may not extend across the entire active region. As a result, different regions of different reads within a cluster are used in DBG to determine whether there is actually a variant for any given locus in the sequence within the active region or not. Since this determination is made within the active window, it is the parts of any given read within the boundaries of the active window that are taken into account, and the parts outside the active window can be discarded.

[00263] Как было указано, именно те секции ридов, которые перекрывают референс в пределах активной области, подают в систему DBG. Затем система DBG собирает риды, подобно мозаике, в граф, после чего для каждой позиции в последовательности на основании коллекции перекрывающихся ридов для этой позиции определяют, имеется ли совпадение или несовпадение для любого данного рида, а если несовпадение существует, то какова вероятность этого несовпадения. Например, когда существуют прерывистые места, где сегменты ридов в скоплении перекрывают друг друга, они могут быть выровнены друг с другом на основе их областей совпадения, а объединяя в строку или сшивая вместе совпадающие ридов на основе их точек совпадения, для каждой позиции в пределах этого сегмента можно определить, совпадают ли или не совпадают, и в какой степени, риды в любой данной позиции. Следовательно, если два или более ридов накладываются и тождественно совпадают друг с другом на какое-то время, получается граф с одной строкой; однако, когда как только два или более ридов попадают в точку, где они отличаются, в графе образуется разветвление и получаются две или более расходящихся строк, пока эти два или более ридов снова не совпадут.[00263] As stated, it is those sections of reads that overlap the reference within the active region that are fed into the DBG system. The DBG system then assembles the reads, like a mosaic, into a graph, and then, for each position in the sequence, based on the collection of overlapping reads for that position, it determines whether there is a match or a mismatch for any given read, and if there is a mismatch, what is the probability of that mismatch. For example, when there are discontinuous places where segments of reads in a cluster overlap each other, they can be aligned with each other based on their match areas, and by stringing or stitching together matching reads based on their match points, for each position within that segment, it is possible to determine whether, and to what extent, the reads at any given position match or mismatch. Therefore, if two or more reads overlap and identically coincide with each other for some time, a single-line graph is obtained; however, once two or more reads hit a point where they differ, a branch is formed in the graph and two or more diverging rows are obtained until the two or more reads match again.

[00264] Следовательно, пути через граф часто бывают не прямой линией. Например, когда k-меры рида отличаются от k-меров референса и/или k-меров одного или более перекрывающихся ридов, например в скоплении, в графе образуется «пузырь» в точке отличия, приводящей к двум расходящимся строкам, которые продолжатся вдоль двух разных путей до тех пор, пока эти две последовательности снова не совпадут. Каждой вершине можно присвоить взвешенную оценку, показывающую, сколько раз соответствующие k-меры перекрываются во всех ридах в скоплении. В частности, каждому пути, проходящему через сформированный граф с одной стороны на другую, может быть назначен счетчик. И когда одни и те же k-меры формируются из множества ридов, например, когда каждый k-мер имеет одну и тужу структуры последовательности, они могут быть учтены в графе путем увеличения счетчика для этого пути, где k-мер перекрывает уже существующий путь k-мера. Таким образом, когда один и тот же k-мер формируется из множества перекрывающихся ридов, имеющих одну и ту же последовательность, структура пути по графу будет повторяться снова и снова, и счетчик для прохождения этого пути через граф будет инкрементально увеличиваться соответствующим образом. В таком случае структуру записывают только для первого экземпляра k-мера и счетчик инкрементально увеличивают для каждого k-мера, который повторяет эту структуру. В этом режиме можно получить различные риды в скоплении, чтобы определить, какие вариации имеют место и где.[00264] Consequently, paths through the graph are often not a straight line. For example, when the k-mers of a read differ from the k-mers of the reference and/or the k-mers of one or more overlapping reads, such as in a cluster, a “bubble” is formed in the graph at the point of difference, resulting in two divergent rows that continue along two different paths until the two sequences match again. Each vertex can be assigned a weighted score indicating how many times the corresponding k-mers overlap across all reads in the cluster. In particular, each path passing through the generated graph from one side to the other can be assigned a counter. And when the same k-mers are formed from multiple reads, for example when each k-mer has the same sequence structure, they can be counted in the graph by incrementing the counter for that path, where the k-mer overlaps an already existing path k -measure. Thus, when the same k-mer is formed from many overlapping reads having the same sequence, the structure of the path through the graph will be repeated over and over again, and the counter for that path through the graph will be incremented accordingly. In this case, the structure is recorded only for the first instance of the k-mer, and the counter is incremented for each k-mer that repeats this structure. In this mode, it is possible to obtain different reads in a cluster to determine what variations occur and where.

[00265] Подобным образом можно сформировать матрицу графа, взяв все возможные k-меры из N оснований, например k-меры из 10 оснований, которые могут быть сформированы из каждого данного рида путем последовательного прохождения по всей длине рида сегментами по десять оснований, где начало каждых новых десяти оснований смещено на одно основание от последнего сформированного сегмента из 10 оснований. Затем эту процедуру можно повторить, сделав то же самое для каждого другого рида в скоплении в пределах активного окна. После этого сформированные k-меры можно выровнять друг с другом таким образом, чтобы области идентичного совпадения между сформированными k-мерами совпадали с областями, где они перекрываются, для построения таким образом структуры данных, например, графа, которую можно затем просканировать и определить процент совпадения и несовпадения. В частности, референс и любые ранее обработанные k-меры, выровненные на него, можно отсканировать на предмет следующего формируемого k-мера, чтобы определить, совпадает и/или перекрывается ли текущий формируемый k-мер с какой-либо частью ранее сформированного k-мера, и там, где обнаруживается совпадение, текущий формируемый k-мер может быть вставлен в граф в соответствующей позиции.[00265] Similarly, a graph matrix can be formed by taking all possible N-base k-mers, for example 10-base k-mers, which can be formed from any given read by sequentially traversing the entire length of the read in ten-base segments, where the start every new ten bases is offset by one base from the last 10-base segment formed. This procedure can then be repeated, doing the same for every other read in the cluster within the active window. The formed k-mers can then be aligned with each other so that regions of identical matches between the formed k-mers coincide with the regions where they overlap, thereby constructing a data structure, such as a graph, which can then be scanned and the percentage of match determined and mismatches. In particular, the reference and any previously processed k-mers aligned to it can be scanned against the next generated k-mer to determine whether the current generated k-mer matches and/or overlaps with any part of the previously generated k-mer , and where a match is found, the current k-mer being generated can be inserted into the graph at the appropriate position.

[00266] После того, как граф построен, его можно отсканировать и на основе этого сопоставления можно определить, могут ли любые данные ОНП и/или инделы относительно референса быть действительной вариацией в генетическом коде субъекта, или они являются результатом ошибки обработки или иной ошибки. Например, если все или значительная часть k-меров всех или значительной части ридов в данной области содержат одно и то же несовпадение в виде ОНП и/или индела, но отличаются от референса одинаково, то можно определить, что в геноме субъекта действительно существует вариация в виде ОНП и/или индела по сравнению с референсным геномом. Однако, если только ограниченное количество k-меров из ограниченного количества ридов проявляют артефакт, это, вероятно, вызвано ошибкой машины, и/или обработки, и/или другой ошибкой и не свидетельствует о наличии истинной вариации в этой исследуемой позиции,[00266] Once the graph is constructed, it can be scanned and based on this comparison, it can be determined whether any SNP data and/or indels relative to the reference may be an actual variation in the subject's genetic code, or whether they are the result of a processing error or other error. For example, if all or a significant portion of the k-mers of all or a significant portion of the reads in a given region contain the same mismatch in the form of an SNP and/or indel, but differ from the reference in the same way, then it can be determined that there is indeed a variation in the subject's genome in the form of SNPs and/or indels compared to the reference genome. However, if only a limited number of k-mers from a limited number of reads exhibit an artifact, this is likely due to machine and/or processing error and/or other error and does not indicate the presence of true variation at that position of interest.

[00267] Как было указано, там, где есть подозрение на вариацию, в графе будет сформирован пузырь. А именно, там, где все k-меры во всей данной области ридов соответствуют референсу, они выстроятся таким образом, что образуют линейный граф. Однако там, где имеется отличие между основаниями в данном локусе, в этом локусе с отличием граф разветвится. Этот разветвление может быть в любой позиции в пределах k-мера, и, следовательно, в этой точке отличия k-мер из 10 оснований, включающий в себя это отличие, отклонится от остальных k-меров в графе. В таком случае будет сформирован новый узел, формирующий другой путь через граф.[00267] As stated, where variation is suspected, a bubble will be formed in the graph. Namely, where all k-mers in the entire given region of reads correspond to the reference, they will line up in such a way that they form a linear graph. However, where there is a difference between bases at a given locus, the graph will branch at that locus with a difference. This branch can be at any position within the k-mer, and hence at this point the 10-base k-mer difference that includes this difference will deviate from the rest of the k-mers in the graph. In this case, a new node will be formed, forming a different path through the graph.

[00268] Следовательно, там, где все может быть согласовано, например, последовательность в данном новом k-мере наносимая на граф, совпадает с последовательностью, на которую он выравнивается в графе вплоть до точки отличия, путь для этого k-мера будет соответствовать пути для графа в целом и будет линейным, но после точки несходства появится новый путь через граф для приведения в соответствие с отличием, представленным в последовательности k-мера, вновь нанесенного на граф. Это расхождение будет представлено новым узлом в графе. В таком случае любые новые k-меры, подлежащие добавлению к графу, который совпадает с вновь расходящимся путем, увеличат счетчик в этом узле. Следовательно, для каждого рида, которое поддерживает ребро, счетчик будет увеличен инкрементально.[00268] Therefore, where everything can be consistent, for example, the sequence in a given new k-measure being plotted on the graph is the same as the sequence it is aligned to in the graph up to the point of difference, the path for that k-measure will match the path for the graph as a whole will be linear, but after the point of dissimilarity a new path through the graph will appear to accommodate the dissimilarity represented by the k-mer sequence again plotted on the graph. This divergence will be represented by a new node in the graph. In such a case, any new k-mers to be added to the graph that coincides with the newly diverging path will increment the counter at that node. Therefore, for each read that supports an edge, the counter will be incremented.

[00269] В различных таких случаях k-мер и/или рид, который он представляет, когда-нибудь начнет снова совпадать, например, после точки расхождения, так что теперь появится точка схождения, где k-мер начинает совпадать с главным путем через граф, представленный k-мерами референсной последовательности. Например, естественно, через некоторое время риды, которые поддерживают разветвленный узел, должны вновь присоединиться к графу со временем. Таким образом, со временем k-меры для данного рида снова присоединятся к главному пути. Более конкретно, в случае ОНП в данном локусе в пределах рида k-мер, начинающийся в этом ОНП, отклонится от главного пути и будет оставаться отделенным примерно в течение 10 узлов, так как существуют 10 оснований в k-мере, которые перекрывают этот локус несовпадения между ридом и референсом. Таким образом, в случае ОНП в 11-й позиции k-меры, покрывающие этот локус в пределах рида, вновь присоединятся к главному пути, так как точное совпадение возобновится. Следовательно, для k-меров рида, имеющего ОНП в данном локусе, потребуется десять сдвигов, чтобы вновь присоединиться к главному графу, представленному референсной последовательностью.[00269] In various such cases, the k-mer and/or the read it represents will someday begin to match again, for example after a point of divergence, so that there will now be a convergence point where the k-mer begins to coincide with the main path through the graph , represented by k-mers of the reference sequence. For example, naturally, after some time, reads that support a forked node must rejoin the graph over time. Thus, over time, the k-mers for a given read will rejoin the main path. More specifically, in the case of an SNP at a given locus within a read, the k-mer starting at that SNP will deviate from the main path and remain separated for approximately 10 nodes, since there are 10 bases in the k-mer that overlap this mismatch locus between read and reference. Thus, in the case of a SNP at position 11, the k-mers covering that locus within the read will rejoin the main pathway as the exact match is resumed. Therefore, for the k-mers of a read that has a SNP at a given locus, ten shifts will be required to rejoin the main graph represented by the reference sequence.

[00270] Как указано выше, обычно существует один главный путь, или линия, или остов, т.е., референсный путь, и когда имеется расхождение, на узле, где существует отличие между ридом и остовным графом, образуется пузырь. Таким образом, существуют некоторые риды, которые отклоняются от остова и образуют пузырь, причем этот расхождение может указывать на наличие варианта. По мере обработки графа вдоль референсного остова могут формироваться пузыри в пузырях внутри пузырей, так что они образуют стопку, и можно создать множество путей через граф. В таком случае могут существовать главный путь, представленный референсным остовом, один путь первого расхождения и еще один путь второго расхождения в пределах первого расхождения, все в пределах данного окна, причем каждый путь через граф может представлять действительную вариацию или может быть артефактом, например, вызванным ошибкой секвенирования, и/или ошибкой ПЦР, и/или ошибкой обработки и т.п.[00270] As stated above, there is usually one main path or line or spanning tree, i.e., the reference path, and when there is a divergence, a bubble is formed at the node where there is a difference between the read and the spanning graph. Thus, there are some reads that deviate from the backbone and form a bubble, and this divergence may indicate the presence of a variant. As the graph is processed along the reference skeleton, bubbles within bubbles within bubbles can form so that they form a stack and multiple paths through the graph can be created. In such a case, there may be a main path represented by the reference skeleton, one path of the first divergence, and another path of the second divergence within the first divergence, all within a given window, and each path through the graph may represent a real variation or may be an artifact, for example caused by sequencing error, and/or PCR error, and/or processing error, etc.

[00271] После того, как такой граф построен, необходимо определить, какие пути через граф представляют действительные вариации в пределах генома образца, а какие являются всего лишь артефактами. Хотя и ожидается, что риды, содержащие ошибки обработки или машины, не будут поддерживаться большинством ридов в скоплении образца, тем не менее, это не всегда так. Например, ошибки в обработке ПЦР могут, как правило, быть результатом ошибки клонирования, которое происходит во время приготовления пробы ДНК, причем такие ошибки обычно приводят к добавлению инсерции и/или делеции в клонированную последовательность. Такие ошибки-инделы могут быть более согласованными между ридами и могут накручиваться при формировании множества ридов, которые имеют одну и ту же ошибку вследствие данной ошибки при ПЦР-клонировании. Следовательно, такие ошибки могут привести к более высокой линии подсчета для такой точки.[00271] Once such a graph has been constructed, it is necessary to determine which paths through the graph represent actual variation within the sample's genome and which are merely artifacts. While it is expected that reads containing processing or machine errors will not be supported by the majority of reads in a sample aggregation, this is not always the case. For example, errors in PCR processing may typically result from a cloning error that occurs during DNA sample preparation, with such errors typically resulting in the addition of an insertion and/or deletion to the cloned sequence. Such indel errors can be more consistent between reads and can be twisted to form multiple reads that have the same error due to a given error in PCR cloning. Therefore, such errors may result in a higher count line for such a point.

[00272] Таким образом, после того как сформирована матрица графа с множеством путей через граф, следующая стадия заключается в прохождении, и тем самым выделении, всех путей через граф, например, слева направо. Один путь будет референсным остовом, но будут другие пути, которые следуют различным пузырям вдоль пути. Необходимо пройти все пути и занести их счетчики в таблицу. Например, если граф содержит путь с двухуровневым пузырем в одном месте и трехуровневый пузырь в другом месте, через этот граф будет (2×3)6 путей. Поэтому каждый из путей нужно выделить по отдельности, а выделенные пути называют гаплотипами-кандидатами. Такие гаплотипы-кандидаты представляют гипотезы в отношении того, что могло бы реально представлять действительную ДНК субъекта, которая была секвенирована, и для проверки этих гипотез могут быть использованы последующие этапы обработки, включая одно или более из выравнивания гаплотипа, вычисления правдоподобия рида и/или генотипирования, чтобы найти вероятности того, что какая-либо и/или каждая из этих гипотез верная. Следовательно, реализация реконструкции графа де Брейна представляет способ надежного выделения хорошего набора гипотез для проверки.[00272] Thus, once a graph matrix with multiple paths through the graph has been generated, the next stage is to traverse, and thereby isolate, all paths through the graph, for example, from left to right. One path will be the reference skeleton, but there will be other paths that follow different bubbles along the path. It is necessary to go through all the paths and enter their counters into the table. For example, if a graph contains a path with a two-level bubble in one place and a three-level bubble in another place, there will be (2x3) 6 paths through that graph. Therefore, each of the paths must be isolated separately, and the selected paths are called candidate haplotypes. Such candidate haplotypes represent hypotheses as to what might actually represent the subject's actual DNA that has been sequenced, and subsequent processing steps, including one or more of haplotype alignment, read likelihood calculation, and/or genotyping, can be used to test these hypotheses to find the probabilities that any and/or each of these hypotheses is true. Therefore, implementing de Bruijn graph reconstruction provides a way to reliably isolate a good set of hypotheses to test.

[00273] Например, при выполнении функции определения вариантов, как описано в настоящем документе, может быть реализована операция выявления активной области, например, для выявления мест, где множество ридов в скоплении в пределах области не согласуются с референсом, и для формирования окна вокруг выявленной активной области, чтобы только эта область моглы быть выбрана для дальнейшей обработки. Кроме того, локализованная сборка гаплотипа может иметь место, например, когда для каждой данной активной области все перекрывающиеся риды в скоплении могут быть собраны в матрицу «графа де Брейна» (DBG) Из этого DBG можно выделять различные маршруты через матрицу, где каждый маршрут образует гаплотип-кандидат, например, гипотезы того, для истинная последовательность ДНК может быть на по меньшей мере одной нити.[00273] For example, when performing a variant detection function as described herein, a hot region detection operation may be implemented, for example, to identify locations where multiple reads in a cluster within a region are not consistent with the reference, and to form a window around the identified active area so that only this area can be selected for further processing. In addition, localized haplotype assembly can take place, for example when, for any given active region, all overlapping reads in a cluster can be assembled into a "de Bruijn graph" (DBG) matrix. From this DBG, different routes can be extracted through the matrix, where each route forms a candidate haplotype, for example, a hypothesis for which the true DNA sequence may be on at least one strand.

[00274] Кроме того, возможно выравнивание гаплотипа, например, когда каждый выделенный гаплотип-кандидат может быть выровнен, например, с помощью алгоритма Смита-Ватермана, обратно относительно референсного генома, чтобы определить, какие вариации референса он означает. Кроме того, может быть выполнено вычисление правдоподобия рида, например, когда рид может быть проверен относительно каждого гаплотипа, чтобы оценить вероятность наблюдения рида, предполагающего, что гаплотип был получен из истинной исходной ДНК. Наконец, может быть реализована операция генотипирования и создан файл нахождения вариантов. Как указано выше, любая или все из этих операций могут быть выполнены с возможностью реализации оптимизированным образом в программном и/или аппаратном обеспечении, и в различных случаях в виду ресурсоемкого и времязатратного характера построения матрицы DNG и выделение из нее гаплотипов-кандидатов и/или в виду ресурсоемкого и времязатратного характера выполнения выравнивания гаплотипа и/или вычисление правдоподобия рида, которое может включать в себя использование оценки скрытой марковской модели HMM), эти операции (например, локализованная сборка гаплотипа, и/или выравнивание гаплотипа, и/или вычисление правдоподобия рида) или их части могут быть выполнены с возможностью реализации одной или более функций этих операций в аппаратном виде, например, выполнения их ускоренным образом интегральной схемой, как описано в настоящем документе. В различных случаях эти задачи могут быть выполнены с возможностью реализации одной или более квантовыми схемами, такими как квантовое вычислительное устройство.[00274] In addition, haplotype alignment is possible, for example, where each isolated candidate haplotype can be aligned, for example, using the Smith-Waterman algorithm, back to the reference genome to determine which variations of the reference it represents. In addition, a read likelihood calculation can be performed, for example where a read can be tested against each haplotype to estimate the likelihood of observing a read suggesting that the haplotype was derived from the true source DNA. Finally, a genotyping operation can be implemented and a variant finding file can be created. As stated above, any or all of these operations can be implemented in an optimized manner in software and/or hardware, and in various cases due to the resource-intensive and time-consuming nature of constructing a DNG matrix and isolating candidate haplotypes from it and/or Due to the resource-intensive and time-consuming nature of performing haplotype alignment and/or read likelihood calculation, which may involve the use of Hidden Markov Model HMM estimation), these operations (e.g., localized haplotype assembly, and/or haplotype alignment, and/or read likelihood calculation) or portions thereof may be configured to implement one or more of the functions of these operations in hardware, for example, to perform them in an accelerated manner by an integrated circuit as described herein. In various cases, these tasks may be accomplished by one or more quantum circuits, such as a quantum computing device.

[00275] Соответственно, в различных случаях устройства, системы и способы их использования могут быть выполнены с возможностью осуществления выравнивания гаплотипа и/или вычисления правдоподобия рида. Например, как было указано, каждый выделенный гаплотип может быть выровнен, например, с помощью алгоритма Смита-Ватермана, обратно относительно референсного генома, чтобы определить, какие вариации референса он означает. В различных примерах случаев может выполняться оценка, например, в соответствии со следующими примерами параметров оценки: соответствие = 20,0; несоответствие = -15,0; открытие гэпа = -26,0; и продление гэпа = -1,1; могут быть использованы другие параметры оценки. Соответственно, таким образом можно сформировать строку CIGAR и связать с гаплотипом, чтобы создать собранный гаплотип, причем собранный гаплотип может быть в конечном счете использован для выявления вариантов. Соответственно, подобным образом можно вычислить правдоподобие данного рида, связываемого с данным гаплотипом, для всех комбинаций рид/гаплотип. В таких случаях правдоподобие можно вычислить с помощью скрытой марковской модели (HMM).[00275] Accordingly, in various cases, devices, systems and methods for using them may be configured to perform haplotype alignment and/or read likelihood calculations. For example, as noted, each isolated haplotype can be aligned, for example using the Smith-Waterman algorithm, back to the reference genome to determine which reference variations it represents. In various example cases, evaluation may be performed, for example, according to the following example evaluation parameters: compliance = 20.0; mismatch = -15.0; opening gap = -26.0; and gap extension = -1.1; other evaluation parameters may be used. Accordingly, a CIGAR string can be generated in this manner and associated with a haplotype to create an assembled haplotype, where the assembled haplotype can ultimately be used to identify variants. Accordingly, the likelihood of a given read associated with a given haplotype can be calculated in a similar way for all read/haplotype combinations. In such cases, the likelihood can be calculated using a hidden Markov model (HMM).

[00276] Например, различные собранные гаплотипы могут быть выровнены в соответствии с моделью динамического программирования, аналогично выравниванию Смита-Ватермана. В таком случае можно сформировать виртуальную матрицу, например, где гаплотип-кандидат, например, сформированный с помощью DBG, может быть расположен на одной оси виртуального массива, а рид может быть расположен на другой оси. Затем можно заполнить матрицу оценками, формируемыми путем прохождения выделенных путей через граф и вычисления вероятностей того, что данный путь является истинным путем. Следовательно, в таком случае отличие данного протокола выравнивания от типичного протокола выравнивания Смита-Ватермана состоит в том, что для отыскания наиболее вероятного пути через массив используют вычисление максимального правдоподобия, такое как вычисление, выполняемое с помощью модели HMM, которая выполнена таким образом, чтобы обеспечивать полную вероятность для выравнивания ридов с гаплотипом. Поэтому выполнять реальное выравнивание строки CIGAR в этом случае не требуется. Вместо этого рассматривают все возможные выравнивания и суммируют их вероятности. Оценка парной HMM является ресурсоемкой и времязатратной, и поэтому реализация ее операций в аппаратной конфигурации в интегральной схеме или с помощью квантовых схем на квантовой вычислительной платформе имеет большое преимущество.[00276] For example, different assembled haplotypes can be aligned according to a dynamic programming model, similar to Smith-Waterman alignment. In such a case, a virtual matrix can be formed, for example, where a candidate haplotype, for example generated by DBG, can be located on one axis of the virtual array, and a read can be located on the other axis. The matrix can then be populated with scores generated by walking the highlighted paths through the graph and calculating the probabilities that a given path is the true path. Therefore, in such a case, the difference between this alignment protocol and a typical Smith-Waterman alignment protocol is that to find the most likely path through the array, a maximum likelihood computation is used, such as that performed by an HMM model, which is designed to provide full probability for alignment of reads with a haplotype. Therefore, there is no need to perform actual CIGAR string alignment in this case. Instead, all possible alignments are considered and their probabilities are summed. Evaluating a pairwise HMM is resource-intensive and time-consuming, and therefore implementing its operations in a hardware configuration on an integrated circuit or using quantum circuits on a quantum computing platform is of great advantage.

[00277] Например, можно проверить каждый рид с каждым потенциальным гаплотипом, чтобы оценить вероятность наблюдения рида в предположении, что гаплотип является истинным представлением исходного образца ДНК. В различных случаях это вычисление может быть выполнено путем оценки «парной скрытой марковской модели» (HMM), которая может быть выполнена с возможностью моделирования различных возможных способов, которыми мог быть изменен гаплотип-кандидат, таких как ошибки ПЦР или секвенирования и т п., и вариация, внесенная в наблюдаемый рид. В таких случаях оценка HMM может быть выполнена с использованием метода динамического программирования для вычисления полной вероятности любой последовательности переходов между марковскими состояниями, достигающих наблюдаемого рида в виде возможности того, что любое расхождение в риде может быть результатом модели ошибок. Соответственно, такие вычисления HMM могут быть выполнены с возможностью анализа всех возможных ОНП и инделов, которые могли быть введены в одно или более ридов, например, за счет артефактов усиления и/или секвенирования.[00277] For example, each read with each potential haplotype can be tested to estimate the probability of observing the read under the assumption that the haplotype is a true representation of the original DNA sample. In various cases, this calculation can be done by estimating a "pairwise Hidden Markov Model" (HMM), which can be done to model the various possible ways in which a candidate haplotype could have been altered, such as PCR or sequencing errors, etc. and the variation introduced into the observed read. In such cases, HMM estimation can be performed using a dynamic programming technique to calculate the overall probability of any sequence of transitions between Markov states reaching the observed read, in the form of the possibility that any discrepancy in the read could be the result of an error model. Accordingly, such HMM calculations can be made to analyze all possible SNPs and indels that may have been introduced into one or more reads, for example due to amplification and/or sequencing artifacts.

[00278] В частности, парная HMM учитывает в виртуальной матрице все возможные выравнивания рида с референсными гаплотипами-кандидатами наряду с вероятностью, связанной с каждым из них, где все вероятности суммируют. Чтобы получить одну общую вероятность для каждого рида, суммируют все вероятности всех вариантов вдоль данного пути. Затем этот процесс выполняют для каждой пары гаплотипа и рида. Например, если имеется кластер из шести скоплений, перекрывающих данную область, например, область из шести гаплотипов-кандидатов, и если скопление содержит около ста ридов, потребуется выполнить 600 операций HMM. Более конкретно, если имеются 6 гаплотипов, то на протяжении пути должны быть 6 ветвей, и необходимо вычислить вероятность того, что каждая из них является правильным путем, который соответствует действительному генетическому коду субъекта для данной области. Следовательно, необходимо учитывать каждый путь для всех ридов, и нужно вычислить вероятность для каждого рида, что вы прибудете на этот данный гаплотип.[00278] Specifically, the pairwise HMM takes into account in a virtual matrix all possible alignments of a read to candidate reference haplotypes along with the probability associated with each of them, where all probabilities are summed. To get one overall probability for each read, add up all the probabilities of all options along a given path. This process is then performed for each haplotype and read pair. For example, if there is a cluster of six clusters overlapping a given region, such as a region of six candidate haplotypes, and if the cluster contains about a hundred reads, 600 HMM operations would be required. More specifically, if there are 6 haplotypes, then there must be 6 branches along the path, and the probability must be calculated that each of them is the correct path that matches the subject's actual genetic code for that region. Therefore, you need to consider each path for all reads, and you need to calculate the probability for each read that you will arrive at that given haplotype.

[00279] Парная скрытая марковская модель является приблизительной моделью того, как истинный гаплотип в образце ДНК может превратиться в возможный отличающийся обнаруживаемый рид. Было замечено, что эти типы преобразований являются комбинацией ОНП и инделов, которые были введены в набор генетического образца процессом ПЦР, одним или более других этапов приготовления образца и/или ошибкой, вызванной процессом секвенирования и т.п. Как показано на ФИГ. 2, чтобы учесть эти типы ошибок, можно использовать основополагающую базовую модель из 3 состояний, где: (M = совпадение выравнивания, I = инсерция, D = делеция), и где возможен любой переход, кроме I <-> D.[00279] A pairwise hidden Markov model is an approximate model of how a true haplotype in a DNA sample can evolve into a possible different detectable read. It has been observed that these types of transformations are a combination of SNPs and indels that were introduced into the genetic sample set by the PCR process, one or more other sample preparation steps, and/or error caused by the sequencing process, etc. As shown in FIG. 2, to account for these types of errors, an underlying 3-state base model can be used where: (M = alignment match, I = insertion, D = deletion), and where any transition other than I <-> D is possible.

[00280] Как показано на ФИГ. 2, содержащая переходы базовой модели из 3 состояний совершаются не во временной последовательности, а, скорее, в последовательности продвижения по последовательностям гаплотипа -кандидата и рида, начиная с позиции 0 в каждой последовательности, где первое основание находится в позиции 1. Переход к M означает позицию +1 в обеих последовательностях; переход к I означает позицию +1 только последовательности рида; а переход к D означает позицию +1 только в последовательности гаплотипа. Такую же модель из 3 состояний можно также сконфигурировать в качестве основы для алгоритмов Смита-Ватермана и/или Нидлмана-Вунша, которые описаны в настоящем документе. Соответственно, такая модель из 3 состояний, которая изложена в настоящем документе, может быть использована в процессе Смита-Ватермана и/или Нидлмана-Вунша для обеспечения тем самым аффинной оценки гэпа (индела), в которой предполагается, что открытие гэпа (введение I или D) будет менее вероятно, что продление гэпа (продолжение пребывания в состоянии I или D). Таким образом, в данном случае парную HMM можно рассматривать как выравнивание, и можно создать строку CIGAR для кодирования последовательности различных переходов между состояниями.[00280] As shown in FIG. 2, containing the transitions of the 3-state base model are not made in a time sequence, but rather in a progression sequence through the candidate haplotype and read sequences, starting from position 0 in each sequence, where the first base is at position 1. Transition to M means position +1 in both sequences; going to I means position +1 of the read sequence only; and going to D means position +1 in the haplotype sequence only. The same 3-state model can also be configured as the basis for the Smith-Waterman and/or Needleman-Wunsch algorithms described herein. Accordingly, such a 3-state model as set forth herein can be used in the Smith-Waterman and/or Needleman-Wunsch process to thereby provide an affine gap (indel) estimate, which assumes that the opening of a gap (Introduction I or D) it will be less likely that the gap will be extended (continuing to remain in state I or D). Thus, in this case, the pairwise HMM can be thought of as an alignment, and a CIGAR string can be created to encode the sequence of different state transitions.

[00281] В различных случаях базовая модель из 3 состояний может быть усложнена путем разрешения изменения вероятностей в зависимости от позиции. Например, вероятности всех M-переходов могут быть умножены не априорные вероятности наблюдения следующего основания рида, определяемые его оценкой качества основания и соответствующим следующим основанием гаплотипа. В таком случае оценки качества оснований могут быть преобразованы в вероятность ошибки ОНП при секвенировании. Когда два основания совпадают, в качестве априорной вероятности берут единицу минус вероятность этой ошибки, а когда они не совпадают, берут вероятность ошибки, деленную на 3, так как существуют 3 возможных результата ОНП.[00281] In various cases, the basic 3-state model can be complicated by allowing the probabilities to vary depending on the position. For example, the probabilities of all M transitions can be multiplied by the non-priori probabilities of observing the next base of a read, determined by its estimate of the quality of the base and the corresponding next base of the haplotype. In this case, base quality estimates can be converted into the probability of SNP error during sequencing. When two bases coincide, the prior probability is taken as one minus the probability of this error, and when they do not coincide, the probability of the error divided by 3 is taken, since there are 3 possible results of the SNP.

[00282] Выше рассмотрена абстрактная «марковская» модель. В различных случаях может быть также определена последовательность переходов с максимальным правдоподобием, которая в настоящем документе называется выравниванием, и может быть выполнена с помощью алгоритма Нидлмана-Вунша или другого алгоритма динамического программирования. Но, в различных вариантах, при выполнении функции определения вариантов, как описано в настоящем документе, выравнивание методом максимального правдоподобия или любое конкретное выравнивание не должно иметь первостепенного значения. Скорее, можно вычислить полную вероятность, например, путем расчета полной вероятности наблюдения рида данного гаплотипа, которая является суммой вероятностей всех возможных путей перехода через граф от нулевой позиции рида в любой позиции гаплотипа до конечной позиции рида в любой позиции гаплотипа, где вероятность каждой составляющей пути является просто произведением вероятностей различных составляющих переходов.[00282] The abstract “Markov” model is discussed above. In various cases, a maximum likelihood sequence of transitions, referred to herein as alignment, may also be determined and may be performed using the Needleman-Wunsch algorithm or other dynamic programming algorithm. But, in various embodiments, when performing the variant determination function as described herein, the maximum likelihood alignment or any particular alignment should not be of paramount importance. Rather, one can calculate the total probability, for example, by calculating the total probability of observing a read of a given haplotype, which is the sum of the probabilities of all possible paths through the graph from the zero read position at any haplotype position to the final read position at any haplotype position, where the probability of each component path is simply the product of the probabilities of the various component transitions.

[00283] Нахождение суммы вероятностей пути может быть также выполнено с помощью виртуального массива и алгоритма динамического программирования, как описано выше, например, в каждой ячейке матрицы (0 … N)×(0 … M) существуют три вычисленных значения вероятности, соответствующие переходам в состояния M, D и I (или, что то же, имеются 3 матрицы). Верхняя строка (нулевая позиция рида) матрицы может быть инициализирована вероятностью 1,0 в состояниях D и вероятностью 0,0 в состояниях I и M; а остальная часть левого столбца (нулевая позиция гаплотипа) может быть инициализирована всеми нулями. (В программном обеспечении начальные вероятности D могут быть установлены близкими к максимальному значению двойной точности, например, 2^1020, чтобы избежать обращения в машинный нуль, но этот фактор может быть нормализован позже.)[00283] Finding the sum of path probabilities can also be done using a virtual array and a dynamic programming algorithm as described above, for example, in each cell of the matrix (0 ... N) × (0 ... M) there are three calculated probability values corresponding to the transitions in states M, D and I (or, what is the same, there are 3 matrices). The top row (zero read position) of the matrix can be initialized with probability 1.0 in states D and probability 0.0 in states I and M; and the rest of the left column (the zero haplotype position) can be initialized to all zeros. (In software, the initial probabilities D can be set close to the maximum double precision value, such as 2^1020, to avoid going to machine zero, but this factor can be normalized later.)

[00284] Эта зависимость вычисления «3 к 1» ограничивает порядок, в котором могут быть вычислены ячейки. Они могут быть вычислены слева направо в каждой строке с переходом по строкам сверху вниз или сверху вниз в каждом столбце с переходом вправо. Кроме того, они могут быть вычислены в антидиагональных фронтах волны, где следующий шаг заключается в вычислении всех ячеек (n, m), а n+m равно приращенному номеру шага. Преимущество этого порядка фронта волны состоит в том, что все ячейки на антидиагонали могут быть вычислены независимо друг от друга. Тогда нижняя строка матрицы в конечной позиции рида может быть выполнена с возможностью представления вычисленных выравниваний. В таком случае определитель гаплотипа будет действовать путем суммирования вероятностей I и M всех ячеек нижней строки. В различных вариантах реализации система может быть настроена так, чтобы в нижней строке были запрещены переходы D, или там можно использовать вероятность 0,0 перехода D, чтобы избежать двойного подсчета.[00284] This 3-to-1 calculation dependency limits the order in which cells can be calculated. They can be calculated from left to right in each row, moving from top to bottom, or from top to bottom in each column, moving to the right. In addition, they can be calculated in antidiagonal wavefronts, where the next step is to calculate all cells (n, m), and n+m is equal to the incremental step number. The advantage of this wavefront order is that all cells on the antidiagonal can be calculated independently of each other. Then the bottom row of the matrix at the end position of the read can be configured to represent the calculated alignments. In this case, the haplotype determiner will operate by summing the probabilities I and M of all cells in the bottom row. In various implementations, the system can be configured to disable D transitions in the bottom row, or use a 0.0 D transition probability there to avoid double counting.

[00285] Как описано в настоящем документе, в различных случаях каждая оценка HMM может действовать на паре последовательностей, например, на паре из гаплотипа-кандидата и рида. Например, в пределах данной активной области каждый набор гаплотипов может быть оценен с помощью HMM относительно набора ридов. В таком случае полоса пропускания на входе программного или аппаратного обеспечения может быть уменьшена и/или сведена к минимуму за счет однократной передачи набора ридов и набора гаплотипов и предоставления программному и/или аппаратному обеспечению возможности формировать N×M пар операций. В определенных случаях средство оценки Смита-Ватермана может быть выполнено с возможностью выстраивания в очередь отдельных операций HMM, каждая со своей собственной копией данных рида и гаплотипа. Модуль выравнивания Смита-Ватермана (SW) может быть выполнен с возможностью выполнения вычисления парной HMM в линейном пространстве или может действовать в логарифмическом вероятностном пространстве. Это полезно для сохранения точности по всему огромному диапазону значений вероятности, представленных числами с фиксированной запятой. Однако в других случаях могут быть использованы операции с плавающей запятой.[00285] As described herein, in various cases, each HMM score may operate on a pair of sequences, for example, a pair of a candidate haplotype and a read. For example, within a given active region, each set of haplotypes can be estimated using an HMM relative to a set of reads. In such a case, the bandwidth at the input of the software or hardware can be reduced and/or minimized by transmitting the read set and the haplotype set once and allowing the software and/or hardware to generate N×M pairs of operations. In certain cases, the Smith-Waterman estimator may be configured to queue individual HMM operations, each with its own copy of the read and haplotype data. The Smith-Waterman (SW) alignment module may be configured to perform pairwise HMM computation in linear space or may operate in logarithmic probability space. This is useful for maintaining precision across the huge range of probability values represented by fixed-point numbers. However, in other cases floating point operations may be used.

[00286] Имеются три параллельных умножений (например, суммирований в логарифмическом пространстве), затем два последовательных суммирования (конвейеры ~5-6-ступенчатой аппроксимации), затем еще одно умножение. В таком случае полный конвейер может быть длиной около L = 12-16 циклов. Вычисления I & D могут быть примерно половинной длины. В конвейер может подаваться множество входных вероятностей, например, 2, или 3, или 5, или 7, или более входных вероятностей в каждом цикле, например, из одной или более уже вычисленных соседних ячеек (M и/или D слева, M и/или I сверху, и/или M и/или I и/или D сверху слева). Он может также содержать в каждом цикле одно или более оснований гаплотипа и/или одно или более оснований ридов, например, вместе со связанными параметрами, такими как предварительно обработанные параметры, Он выводит итоговый набор M & I & D для одной ячейки за каждый цикл после сквозной задержки.[00286] There are three parallel multiplications (eg summations in logarithmic space), then two sequential summations (~5-6 step approximation pipelines), then another multiplication. In this case, the complete pipeline can be about L = 12-16 cycles long. I&D calculations can be about half the length. The pipeline may be fed multiple input probabilities, for example 2, or 3, or 5, or 7, or more input probabilities in each cycle, for example, from one or more already calculated neighboring cells (M and/or D on the left, M and/ or I top, and/or M and/or I and/or D top left). It may also contain in each cycle one or more haplotype bases and/or one or more read bases, for example, together with associated parameters such as preprocessed parameters. It outputs a final set of M&I&D for one cell per cycle after end-to-end delay.

[00287] Как указано выше, при выполнении функции определения вариантов, как описано в настоящем документе, может быть составлен граф де Брейна, и когда все риды в скоплении идентичны, DBG будет линейным. Однако, когда имеются отличия, в графе будут формироваться «пузыри», которые указывают на области отличий, приводящие к множеству путей, расходящихся от совпадения при выравнивании с референсом, и затем позже снова соединяющихся в совпадении при выравнивании. Из этого DBG можно выделить различные пути, которые образуют гаплотипы-кандидаты, например, гипотезы относительно того, какой может быть истинная последовательность ДНК на по меньшей мере одной нити, причем эти гипотезы могут быть проверены путем выполнения операции HMM, или модифицированной HMM, на этих данных. Более того, можно использовать функцию генотипирования, например, когда могут быть сформированы диплоидные комбинации гаплотипов-кандидатов, и для каждой из них может быть вычислена условная вероятность наблюдения всего скопления ридов. Затем эти результаты можно ввести в модуль байесовской формулы для вычисления безусловной вероятности того, что каждый генотип является истинным, при условии, что наблюдается все скопление ридов.[00287] As stated above, when performing the variant determination function as described herein, a de Bruijn graph can be constructed, and when all reads in a cluster are identical, the DBG will be linear. However, when there are differences, "bubbles" will form in the graph, which indicate areas of difference, resulting in multiple paths diverging from the alignment match to the reference, and then later reconnecting at the alignment match. From this DBG, it is possible to extract various pathways that generate candidate haplotypes, for example, hypotheses as to what the true DNA sequence on at least one strand might be, and these hypotheses can be tested by performing an HMM, or modified HMM, operation on these data. Moreover, the genotyping function can be used, for example, where diploid combinations of candidate haplotypes can be generated, and for each of them the conditional probability of observing the entire cluster of reads can be calculated. These results can then be fed into a Bayesian formula module to calculate the unconditional probability that each genotype is true, given that the entire population of reads is observed.

[00288] Следовательно, в соответствии с устройствами, системами и способами их использования, описанными в настоящем документе, в различных случаях может быть выполнена операция генотипирования, причем эта операция генотипирования может быть выполнена с возможностью реализации оптимизированным образом в программном обеспечении, и/или аппаратном обеспечении, и/или квантовым процессорным устройством. Например, можно сформировать возможные диплоидные комбинации гаплотипов-кандидатов и для каждой комбинации вычислить условную вероятность наблюдения всего скопления ридов, например, с помощью составных вероятностей наблюдения каждого данного рида каждого гаплотипа на основе оценки парной HMM. Результаты этих вычислений подают в модуль байесовской формулы для вычисления безусловной вероятности того, что каждый генотип является истинным, при условии, что наблюдается все скопление ридов.[00288] Therefore, in accordance with the devices, systems and methods of using them described herein, in various cases, a genotyping operation can be performed, and this genotyping operation can be performed in an optimized manner in software and/or hardware software, and/or a quantum processing device. For example, one can generate possible diploid combinations of candidate haplotypes and, for each combination, calculate the conditional probability of observing the entire cluster of reads, for example, using the composite probabilities of observing each given read of each haplotype based on the pairwise HMM estimate. The results of these calculations are fed into the Bayesian formula module to calculate the unconditional probability that each genotype is true, given that the entire population of reads is observed.

[00289] Соответственно, согласно различным аспектам настоящее изобретение относится к системе для выполнения операции определения гаплотипов или вариантов на сформированных и/или предоставленных данных с целью создания тем самым файла определения вариантов. А именно, как описано выше, в отдельных случаях файл определения вариантов может быть цифровым или иным подобным файлом, который кодирует отличия между одной и другой последовательностью, например, разницу между последовательностью образца и референсной последовательностью. В частности, в различных случаях файл определения вариантов может быть текстовым файлом, который формулирует или иным образом детально излагает генетические и/или структурные вариации в генетическом строении индивида по сравнению с одним или более референсными геномами.[00289] Accordingly, in various aspects, the present invention relates to a system for performing the operation of determining haplotypes or variants on generated and/or provided data, thereby creating a variant definition file. Namely, as described above, in some cases the variant definition file may be a digital or other similar file that encodes the differences between one sequence and another, for example, the difference between a sample sequence and a reference sequence. In particular, in various cases, a variant definition file may be a text file that states or otherwise details genetic and/or structural variations in the genetic makeup of an individual compared to one or more reference genomes.

[00290] Например, гаплотип представляет собой набор генетических, например, ДНК и/или РНК, вариаций, таких как полиморфизм, который присутствует в хромосомах человека и в силу этого может быть передан потомку и тем самым унаследован. В частности, гаплотип может означать комбинацию аллелей, например, одну из множества альтернативных форм гена таких, которые могут возникать в результате мутации, причем аллельные вариации обычно обнаруживают в одном и том же месте хромосомы. Следовательно, при определении идентичности генома человека важно знать, какую форму из множества различных возможных аллелей кодирует генетическая последовательность определенного человека. В конкретных случаях гаплотип может означать один или более, например, набор, нуклеотидных полиморфизмов (например, ОНП), которые могут быть найдены в одной и той же позиции на одной и той же хромосоме.[00290] For example, a haplotype is a set of genetic, eg DNA and/or RNA, variations, such as polymorphisms, that are present on a person's chromosomes and as such can be passed on to a descendant and thereby inherited. In particular, a haplotype may refer to a combination of alleles, such as one of many alternative forms of a gene that may arise as a result of mutation, the allelic variations typically being found at the same location on the chromosome. Therefore, when determining the identity of an individual's genome, it is important to know which form of the many different possible alleles a particular individual's genetic sequence encodes. In specific cases, a haplotype may refer to one or more, for example, a set, of nucleotide polymorphisms (eg, SNPs) that can be found at the same position on the same chromosome.

[00291] Как правило, в различных вариантах реализации для определения генотипа например, аллельных гаплотипов, для субъекта, как описано выше в настоящем документе, можно прибегнуть к основанному на программном обеспечении алгоритму, такому как алгоритм, использующий программу определения гаплотипов, например, GATK, для одновременного определения ОНП, и/или инсерций, и/или делеций, т.е. инделов, в генетической последовательности индивида. В частности, алгоритм может включать в себя один или более протоколов сборки гаплотипа, например, для локальной сборки гаплотипа с самого начала в одной или более активных областях обрабатываемой генетической последовательности. Такая обработка обычно подразумевает развертывание функции обработки, называемой скрытой марковской моделью (HMM), которая представляет собой стохастическую и/или статистическую модель, используемую для воплощения случайно изменяющихся систем, например, в предположении, что будущие состояния в системе зависят только от настоящего состояния, а не от ряда предшествующих ему событий.[00291] Typically, in various embodiments, a software-based algorithm, such as an algorithm using a haplotype determination program, such as GATK, can be used to determine the genotype, e.g., allelic haplotypes, for a subject, as described above herein. for simultaneous determination of SNPs and/or insertions and/or deletions, i.e. indels, in an individual's genetic sequence. In particular, the algorithm may include one or more haplotype assembly protocols, for example, to locally assemble a haplotype from the beginning in one or more active regions of the genetic sequence being processed. Such processing typically involves deploying a processing function called a hidden Markov model (HMM), which is a stochastic and/or statistical model used to implement randomly changing systems, for example, under the assumption that future states in the system depend only on the present state, and not from a series of events preceding it.

[00292] В таких случаях моделируемая система обладает характеристиками или иным образом предполагается марковским процессом с ненаблюдаемыми (скрытыми) состояниями. В конкретных случаях модель может содержать простую динамическую байесовскую сеть. В частности, что касается определения генетической вариации в ее простейшей форме, существует одна из четырех возможностей идентификации любого данного основания в обрабатываемой последовательности, например, при сравнении сегмента референсной последовательности, например, гипотетического гаплотипа, и сегмента последовательности ДНК или РНК субъекта, например рида, полученного из секвенатора. Однако, чтобы определить такую вариацию, в первую очередь нужно секвенировать ДНК/РНК субъекта, например, с помощью секвенатора нового поколения (СНП), чтобы создать считывание или «риды», которые определяют генетический код субъекта. Далее, после того, как геном субъекта секвенирован для получения одного или более ридов, различные представления, представляющие ДНК и/или РНК субъекта, необходимо картировать и/или выровнять, как более подробно описано выше в настоящем документе. Затем следующий этап обработки заключается в определении того, как гены субъекта, которые только что определены, например, картированы и/или выровнены, отличаются от генов прототипной референсной последовательности. Поэтому при выполнении такого анализа предполагается, что рид, потенциально представляющий данный ген субъекта, является представлением прототипного гаплотипа, хотя и с различными ОНП и/или инделами, которые были определены к данному времени.[00292] In such cases, the system being modeled has the characteristics of, or is otherwise assumed to be, a Markov process with unobservable (hidden) states. In specific cases, the model may contain a simple dynamic Bayesian network. In particular, with regard to the definition of genetic variation in its simplest form, there is one of four possibilities for identifying any given base in a processed sequence, for example, by comparing a segment of a reference sequence, such as a hypothetical haplotype, and a segment of a subject's DNA or RNA sequence, such as a read. obtained from the sequencer. However, to identify such variation, the subject's DNA/RNA must first be sequenced, for example using a next-generation sequencer (NGS), to create a read, or “reads,” that define the subject's genetic code. Next, after a subject's genome has been sequenced to obtain one or more reads, the various representations representing the subject's DNA and/or RNA need to be mapped and/or aligned, as described in more detail hereinbefore. The next step of processing is then to determine how the subject's genes that have just been identified, eg, mapped and/or aligned, differ from those of the prototypical reference sequence. Therefore, when performing such an analysis, it is assumed that the read potentially representing a given gene in a subject is a representation of the prototypical haplotype, albeit with different SNPs and/or indels that have been identified to date.

[00293] А именно, в соответствии с конкретными аспектами предложены устройства, системы и/или способы их практического применения, например, для выполнения функции определения гаплотипов и/или вариантов, например, развертывания функции HMM, например, в ускоренном определителе гаплотипов. В различных случаях для преодоления этих и других подобных проблем, известных в данной области техники, представленный в настоящем документе ускоритель HMM может быть выполнен с возможностью выполнения операций таким образом, чтобы его можно было реализовать в программном обеспечении, реализовать в аппаратном обеспечении, или чтобы его реализация и/или управление иным образом осуществлялись комбинированно, частично программным обеспечением и/или частично аппаратным обеспечением, и/или с возможностью использования реализаций квантовых вычислений. Например, в соответствии с конкретным аспектом, изобретение относится к способу, с помощью которого можно определять данные, относящиеся к идентичности последовательности ДНК и/или РНК субъекта, и/или как генетическая информация субъекта может отличаться от референсного генома.[00293] Namely, in accordance with specific aspects, devices, systems and/or methods for their practical application are provided, for example, to perform a haplotype determination function and/or variants, for example, deploying an HMM function, for example, in an accelerated haplotype determiner. In various cases, to overcome these and other similar problems known in the art, the HMM accelerator presented herein may be configured to perform operations in such a way that it can be implemented in software, implemented in hardware, or implemented and/or otherwise controlled in a combination of part software and/or part hardware, and/or with the possibility of using quantum computing implementations. For example, in accordance with a particular aspect, the invention relates to a method by which data relating to the DNA and/or RNA sequence identity of a subject can be determined, and/or how the subject's genetic information may differ from a reference genome.

[00294] В таком случае способ может быть осуществлен путем реализации функции определения гаплотипов или вариантов, например, использующей протокол HMM. В частности, функция HMM может быть выполнена в программном обеспечении, аппаратном обеспечении или посредством одной или более квантовых схем, например, на ускоренном устройстве, в соответствии со способом, описанным в настоящем документе. В таком случае ускоритель HMM может быть выполнен с возможностью приема и обработки секвенированных, картированных и/или выровненных данных для обработки их, например, с целью создания файла определения вариантов, а также для передачи обработанных данных обратно по всей системе. Соответственно, способ может включать в себя развертывание системы, в которой данные могут быть отправлены из процессора, такого как управляемый программным обеспечением ЦПУ или ГПУ или даже КПУ, в определитель гаплотипов, реализующий ускоренную HMM, причем этот определитель гаплотипов может быть развернут на микропроцессорной микросхеме, такой как FPGA, ASIC или структурированная ASIC, или может быть реализован с помощью одной или более квантовых схем. Способ может также включать в себя этапы обработки данных для получения результирующих данных HMM, причем эти результаты могут быть потом возвращены обратно в ЦПУ, и/или ГПУ, и/или КПУ.[00294] In such a case, the method may be implemented by implementing a haplotype or variant detection function, for example, using the HMM protocol. In particular, the HMM function may be implemented in software, hardware, or through one or more quantum circuits, for example, on an accelerated device, in accordance with the method described herein. In such a case, the HMM accelerator may be configured to receive and process the sequenced, mapped and/or aligned data to process it, for example, to create a variant definition file, as well as to transmit the processed data back throughout the system. Accordingly, the method may include deploying a system in which data can be sent from a processor, such as a software-controlled CPU or GPU or even CPU, to a haplotype determiner implementing an accelerated HMM, which haplotype determiner may be deployed on a microprocessor chip, such as an FPGA, ASIC, or structured ASIC, or may be implemented using one or more quantum circuits. The method may also include data processing steps to obtain resultant HMM data, which results may then be fed back to the CPU and/or GPU and/or GPU.

[00295] В частности, в одном варианте реализации, как показано на ФИГ. 3A, предложена конвейерная система для биоинформатики, содержащая ускоритель HMM. Например, в одном случае конвейерная система для биоинформатики может быть выполнена в виде системы 1 определения вариантов. Система на фигуре изображена в аппаратной реализации, но может быть также реализована посредством одной или более квантовых схем, таких как квантовая вычислительная платформа. А именно, на ФИГ. 3A приведено высокоуровневое представление структуры интерфейса HMM. В конкретных вариантах реализации система 1 определения вариантов выполнена с возможностью ускорения по меньшей мере части операции определения вариантов, такой как операция HMM. Поэтому в настоящем документе в различных случаях система определения вариантов может упоминаться как система 1 HMM. Система 1 содержит сервер, имеющий одно или более процессорных устройств 1000 (ЦПУ/ГПУ/КПУ), выполненных с возможностью осуществления одной или более стандартных программ, относящихся к секвенированию и/или обработке генетической информации, например, для сравнения секвенированной генетической последовательности с одной или более референсных последовательностей.[00295] Specifically, in one embodiment, as shown in FIG. 3A, a bioinformatics pipeline system incorporating an HMM accelerator is proposed. For example, in one case, the bioinformatics pipeline system may be implemented as a variant determination system 1. The system in the figure is depicted in hardware implementation, but could also be implemented by one or more quantum circuits, such as a quantum computing platform. Namely, in FIG. 3A is a high-level view of the HMM interface structure. In specific embodiments, the variant determination system 1 is configured to speed up at least a portion of a variant determination operation, such as an HMM operation. Therefore, in this document, in various cases, the variant determination system may be referred to as HMM system 1. System 1 includes a server having one or more processing devices 1000 (CPU/GPU/CPU) configured to execute one or more standard programs related to sequencing and/or processing genetic information, for example, for comparing a sequenced genetic sequence with one or more more reference sequences.

[00296] Кроме того, система 1 содержит периферийное устройство 2, такое как плата расширения, которое содержит микросхему 7, например FPGA, ASIC или sASIC. В некоторых случаях могут быть предусмотрены одна или более квантовых схем, выполненных с возможностью осуществления различных операций, указанных в настоящем документе. Необходимо также отметить, что термин ASIC может в равной степени означать структурированную ASIC (sASIC), когда это уместно. Периферийное устройство 2 содержит межсоединение 3 и интерфейс 4 шины, например, параллельной или последовательной шины, который соединяет ЦПУ/ГПУ/КПУ 1000 с микросхемой 7. Например, устройство 2 может содержать межсоединение периферийных компонентов, такое как PCI, PCI-X, PCIe или QPI (межсоединение быстрого доступа), и может содержать интерфейс 4 шины, который выполнен с возможностью функционального и/или пригодного для обмена данными соединения ЦПУ/ГПУ/КПУ 1000 с устройством 2, например для высокоскоростной передачи данных с низкой задержкой. Соответственно, в конкретных случаях интерфейс может представлять собой интерфейс 4 межсоединения периферийных компонентов типа экспресс (PCIe), который связан с микросхемой 7, причем эта микросхема содержит ускоритель 8 HMM. Например, в конкретных случаях ускоритель 8 HMM выполнен с возможностью осуществления функции HMM, например, когда функция HMM в определенных вариантах реализации может быть по меньшей мере частично реализована в аппаратном обеспечении FPGA, AISC или sASIC или посредством одной или более соответствующим образом сконфигурированных квантовых схем.[00296] In addition, the system 1 includes a peripheral device 2, such as an expansion card, which contains a chip 7, such as an FPGA, ASIC or sASIC. In some cases, one or more quantum circuits may be provided capable of performing various operations specified herein. It should also be noted that the term ASIC can equally mean structured ASIC (sASIC), where appropriate. Peripheral device 2 includes an interconnect 3 and a bus interface 4, such as a parallel or serial bus, that connects the CPU/GPU/CPU 1000 to the chip 7. For example, device 2 may include a peripheral component interconnect such as PCI, PCI-X, PCIe, or QPI (Quick Access Interconnect), and may include a bus interface 4 that is configured to functionally and/or communicatively connect the CPU/GPU/CPU 1000 to the device 2, for example for high-speed, low-latency data transfer. Accordingly, in specific cases, the interface may be a peripheral component interconnect express (PCIe) interface 4, which is coupled to a chip 7, the chip including an HMM accelerator 8. For example, in specific cases, the HMM accelerator 8 is configured to implement the HMM function, for example, where the HMM function in certain embodiments may be at least partially implemented in FPGA, AISC, or sASIC hardware or through one or more suitably configured quantum circuits.

[00297] В частности, на ФИГ. 3A представлено высокоуровневое изображение ускорителя 8 HMM с приведенной в качестве примера организацией одного или более движков 13, таких как множество движков 13a-13m+1, для осуществления одного или более процессов функции определения вариантов, например, включая задачу HMM. Соответственно, ускоритель 8 HMM, который может состоять из распределителя 9 данных, например, CentCom, и одного или множества кластеров 11-11n+1 обработки, которое могут быть организованы как, или иным образом включать в себя, один или более экземпляров 13, например, когда каждый экземпляр может быть выполнен в виде движков обработки, такого как малогабаритный движок 13a-13m+1. Например, распределитель 9 может быть выполнен с возможностью приема данных, например, из ЦПУ/ГПУ/КПУ 1000, и распределения или передачи иным образом этих данных в один или более из множества кластеров 11 обработки HMM.[00297] Specifically, in FIG. 3A is a high-level view of an HMM accelerator 8 with an exemplary arrangement of one or more engines 13, such as a plurality of m+1 engines 13a-13, to perform one or more case determination function processes, eg, including an HMM task. Accordingly, the HMM accelerator 8, which may consist of a data distributor 9, such as CentCom, and one or a plurality of n+1 processing clusters 11-11, which may be organized as, or otherwise include, one or more instances 13, for example, when each instance can be implemented in the form of processing engines, such as the small-sized engine 13a-13 m+1 . For example, the distributor 9 may be configured to receive data, for example, from the CPU/GPU/CPU 1000, and distribute or otherwise transmit this data to one or more of a plurality of HMM processing clusters 11.

[00298] В частности, в определенных вариантах реализации распределитель 9 может быть расположен логически между встроенным интерфейсом 4 PCIe и модулем 8 ускорителя HMM, например, когда интерфейс 4 обменивается данными с распределителем 9, например, по межсоединению или иной соответствующим образом сконфигурированной шине 5, например, по шине PCIe. Модуль распределителя 9 может быть выполнен с возможностью обмена данными с одним или более кластерами 11 ускорителя HMM, например по одной или более кластерным шинам 10. Например модуль 8 ускорителя HMM может быть выполнен в виде, или иным образом включать в себя, массив кластеров 11a-11n+1, например, когда каждый кластер 11 HMM может быть выполнен в виде или иным образом включать в себя концентратор 11 кластеров и/или может включать в себя один или более экземпляров 13, причем экземпляр может представлять собой движок 13 обработки, который выполнен с возможностью осуществления одной или более операций на данных, принимаемых им. Соответственно, в различных вариантах реализации каждый кластер 11 может быть сформирован как, или иным образом включать в себя, концентратор 11a-11n+1, где каждый из концентраторов может быть выполнен с возможностью функциональной связи с множеством экземпляров 13a-13m+1 движка ускорителя HMM, например когда каждый концентратор 11 кластеров может быть выполнен с возможностью направления данных во множество движков 13a-13m+1 обработки в пределах кластера 11.[00298] In particular, in certain embodiments, the distributor 9 may be located logically between the embedded PCIe interface 4 and the HMM accelerator module 8, for example, when the interface 4 communicates with the distributor 9, for example, over an interconnect or other suitably configured bus 5, for example, via the PCIe bus. The distributor module 9 may be configured to communicate with one or more HMM accelerator clusters 11, for example, over one or more cluster buses 10. For example, the HMM accelerator module 8 may be configured as, or otherwise include, an array of clusters 11a- 11 n+1 , for example, where each HMM cluster 11 may be configured as or otherwise include a cluster hub 11 and/or may include one or more instances 13, wherein the instance may be a processing engine 13 that is executed with the ability to perform one or more operations on the data received by it. Accordingly, in various embodiments, each cluster 11 may be configured as, or otherwise include, a hub 11a-11 n+1 , where each of the hubs may be configured to operably communicate with a plurality of engine instances 13a-13 m+1 HMM accelerator, for example where each cluster hub 11 may be configured to route data to a plurality of m+1 processing engines 13a-13 within the cluster 11.

[00299] В различных случаях ускоритель 8 HMM выполнен с возможностью сравнения каждого основания секвенированного генетического кода субъекта, например, в формате рида, с различными известными или сформированными гаплотипами-кандидатами референсной последовательности и определения вероятности того, что любое данное основание в изучаемой позиции либо совпадает, либо не совпадает с соответствующим гаплотипом, например, рид содержит ОНП, инсерцию или делецию, что приводит к вариации основания в исследуемой позиции. В частности, в различных вариантах реализации ускоритель 8 HMM выполнен с возможностью присвоения вероятностей перехода для последовательности оснований рида, осуществляемых между каждым из этих состояний, совпадение («M»), инсерция («I») или делеция («D»), как более подробно описано ниже в настоящем документе.[00299] In various cases, the HMM accelerator 8 is configured to compare each base of a subject's sequenced genetic code, for example in read format, with various known or generated candidate reference sequence haplotypes and determine the probability that any given base at the position being studied is either the same , or does not coincide with the corresponding haplotype, for example, the read contains an SNP, insertion or deletion, which leads to a variation of the base at the position being studied. Specifically, in various embodiments, the HMM accelerator 8 is configured to assign transition probabilities for a sequence of base reads occurring between each of these states, match (“M”), insertion (“I”), or deletion (“D”), as is described in more detail later in this document.

[00300] Более конкретно, в зависимости от конфигурации, функция ускорения HMM может быть реализована в программном обеспечении, например, с помощью ЦПУ/ГПУ/КПУ 1000 и/или микросхемы 7, и/или может быть реализована в аппаратном обеспечении и может быть представлена в микросхеме 7, например, расположенной на карте или плате 2 расширения периферии. В различных вариантах реализации эта функциональная возможность может быть реализована частично в виде программного обеспечения, например, выполняемого ЦПУ/ГПУ/КПУ 1000, и частично в виде аппаратного обеспечения, реализованного на микросхеме 7 или посредством одной или более схем квантовой обработки. Соответственно, в различных вариантах реализации микросхема 7 может быть представлена на материнской плате ЦПУ/ГПУ/КПУ 1000 или она может быть частью периферийного устройства 2, или и то, и другое. Соответственно, модуль 8 ускорителя HMM может содержать или иным образом быть связанным с различными интерфейсами, например, 3, 5, 10 и/или 12, чтобы обеспечивать эффективную передачу данных в движки 13 обработки и из них.[00300] More specifically, depending on the configuration, the HMM acceleration function may be implemented in software, for example, by the CPU/GPU/GPU 1000 and/or chip 7, and/or may be implemented in hardware and may be represented by in a chip 7, for example, located on a card or peripheral expansion board 2. In various implementations, this functionality may be implemented partly in software, such as executed by the CPU/GPU/CPU 1000, and partly in hardware implemented on chip 7 or through one or more quantum processing circuits. Accordingly, in various embodiments, chip 7 may be present on the CPU/GPU/CPU motherboard 1000, or it may be part of a peripheral device 2, or both. Accordingly, HMM accelerator module 8 may comprise or otherwise be associated with various interfaces, for example, 3, 5, 10 and/or 12, to enable efficient transfer of data to and from processing engines 13.

[00301] Соответственно, как показано на ФИГ. 2 и 3, в различных вариантах реализации предусмотрена микросхема 7, выполненная с возможностью осуществления функции определения вариантов, например гаплотипов. Микросхема 7 может быть связана с ЦПУ/ГПУ/КПУ 1000, например, непосредственно сопряжена с ними, например, установлена на материнскую плату компьютера, или опосредованно соединена с ними, например, являться частью периферийного устройства 2, которое выполнено с возможностью функционального соединения с ЦПУ/ГПУ/КПУ 1000, например, посредством одного или более межсоединений, например 3, 4, 5, 10 и/или 12. В данном случае микросхема 7 присутствует на периферийном устройстве 2. Необходимо понимать, что хотя ускоритель выполнен в виде микросхемы, он может быть также выполнен в виде одной или более квантовых схем квантового процессорного устройства, где квантовые схемы выполнены в виде одного или более движков обработки для выполнения одной или более функций, описанных в настоящем документе.[00301] Accordingly, as shown in FIG. 2 and 3, in various embodiments, a chip 7 is provided, configured to perform the function of determining variants, for example haplotypes. The chip 7 can be connected to the CPU/GPU/CPU 1000, for example, directly coupled with them, for example, installed on a computer motherboard, or indirectly connected to them, for example, be part of a peripheral device 2, which is configured to be functionally connected to the CPU /GPU/CPU 1000, for example, through one or more interconnects, for example 3, 4, 5, 10 and/or 12. In this case, the chip 7 is present on the peripheral device 2. It must be understood that although the accelerator is in the form of a chip, it may also be embodied in the form of one or more quantum circuits of a quantum processing device, wherein the quantum circuits are embodied in the form of one or more processing engines for performing one or more of the functions described herein.

[00302] Следовательно, периферийное устройство 2 может содержать параллельную или последовательную шину 4 расширения, например, для соединения периферийного устройства 2 с центральным процессорным устройством (ЦПУ/ГПУ/КПУ) 1000 компьютера и/или сервера, например, посредством интерфейса 3, например DMA. В конкретных случаях периферийное устройство 2 и/или последовательная шина 4 расширения может представлять собой интерфейс межсоединения периферийных компонентов типа экспресс (PCIe), который выполнен с возможностью обмена данными с микросхемой 7, например через соединение 5. Как описана в настоящем документе, микросхема 7 может, по меньшей мере частично, быть выполнена как, или включать в себя иным образом, ускоритель 8 HMM. Ускоритель 8 HMM может быть выполнен как часть микросхемы 7, например, в аппаратной реализации и/или в виде кода, предназначенного для исполнения вместе с ней, и выполнен с возможностью осуществления функции определения вариантов, например, для выполнения одной или более операций скрытой марковской модели, на данных, подаваемых в микросхему 7 с помощью ЦПУ/ГПУ/КПУ 1000, например, через интерфейс 4 PCIe. Аналогичным образом после того, как одна или более функций определения вариантов выполнены, например, одна или более операций HMM выполнены, их результаты могут быть переданы из ускорителя 8 HMM схемы 7 по шине 4 в ЦПУ/ГПУ/КПУ 1000, например посредством соединения 3.[00302] Therefore, the peripheral device 2 may include a parallel or serial expansion bus 4, for example, to connect the peripheral device 2 to the central processing unit (CPU/GPU/CPU) 1000 of a computer and/or server, for example, through an interface 3, such as DMA . In specific cases, the peripheral device 2 and/or serial expansion bus 4 may be a Peripheral Component Interconnect Express (PCIe) interface that is configured to communicate with the chip 7, for example via connection 5. As described herein, the chip 7 may , at least in part, be configured as, or otherwise include, the HMM accelerator 8. The HMM accelerator 8 may be implemented as part of the chip 7, for example, in hardware implementation and/or as code designed to be executed along with it, and is configured to perform a variant determination function, for example, to perform one or more hidden Markov model operations. , on the data supplied to the chip 7 using the CPU/GPU/CPU 1000, for example, via PCIe interface 4. Likewise, after one or more case determination functions are performed, for example, one or more HMM operations are performed, the results thereof may be transferred from the HMM accelerator 8 of the circuit 7 via bus 4 to the CPU/GPU/GPU 1000, for example via connection 3.

[00303] Например, в конкретных случаях предусмотрен ЦПУ/ГПУ/КПУ 1000 для обработки и/или передачи информации и/или исполнения инструкций наряду с микросхемой 7, которая лишь частично выполнена в виде ускорителя 8 HMM. ЦПУ/ГПУ/КПУ 1000 обменивается данными с микросхемой 7 посредством интерфейса 5, который выполнен с возможностью содействия обмену данными между ЦПУ/ГПУ/КПУ 1000 и ускорителем 8 HMM микросхемы 7 и, следовательно, может соединять с возможностью обмена данными ЦПУ/ГПУ/КПУ 1000 с ускорителем 8 HMM, который является частью микросхемы 7. Для содействия этим функция микросхема 7 содержит модуль 9 распределителя, который может представлять собой модуль CentCom, выполненный с возможностью передачи данных на множество движков 13 HMM, например посредством одного или более кластеров 11, где каждый движок 13 выполнен с возможностью приема и обработки данных, например, посредством выполнения на них протокола HMM, вычисления конечных значений, вывода его результатов и повторения этих действий. В различных случаях выполнение протокола HMM может включать в себя определение одной или более вероятностей перехода, как описано ниже в настоящем документе. В частности, каждый движок 13 HMM может быть выполнен с возможностью осуществления заданий, в том числе таких, как одно или более формирований и/или оценок виртуальной матрицы HMM, для создания тем самым и вывода конечного суммарного значения, причем конечное суммарное значение выражает вероятное правдоподобие того, что определенное основание совпадает или отличается от соответствующего основания в последовательности гипотетического гаплотипа, как описано ниже в настоящем документе.[00303] For example, in specific cases, a CPU/GPU/CPU 1000 is provided for processing and/or transmitting information and/or executing instructions along with a chip 7 that is only partially implemented as an HMM accelerator 8. The CPU/GPU/CPU 1000 communicates with the chip 7 via an interface 5 that is configured to facilitate communication between the CPU/GPU/CPU 1000 and the HMM accelerator 8 of the chip 7 and can therefore communicate with the CPU/GPU/CPU. 1000 with an HMM accelerator 8, which is part of the chip 7. To facilitate this function, the chip 7 includes a distributor module 9, which may be a CentCom module configured to communicate data to a plurality of HMM engines 13, for example through one or more clusters 11, where each engine 13 is configured to receive and process data, for example, by executing the HMM protocol on them, calculating the final values, outputting its results, and repeating these actions. In various cases, execution of the HMM protocol may include determining one or more transition probabilities, as described later herein. In particular, each HMM engine 13 may be configured to perform tasks, including one or more formations and/or evaluations of the virtual HMM matrix, thereby creating and outputting a final summary value, wherein the final summary value expresses the probable likelihood that a particular base is the same as or different from a corresponding base in the sequence of a hypothetical haplotype, as described below herein.

[00304] На ФИГ. 3B приведено подробное изображение кластера 11 HMM, показанного на ФИГ. 3A. В различных вариантах реализации каждый кластер 11 HMM содержит один или более экземпляров 13 HMM. Могут быть предусмотрены один или множество кластеров, например, в соответствии объемом предоставляемых ресурсов, например, на микросхеме или квантовом вычислительном процессоре. В частности, может быть предусмотрен кластер HMM, который выполнен в виде концентратора 11 кластеров. Концентратор 11 кластеров получает данные, относящиеся к одному или более заданий 20, из распределителя 9 и дополнительно соединен с возможностью обмена данными с одним или более, например, множеством, экземпляров 13 HMM, например, посредством одной или более шин 12 экземпляров HMM, на которые концентратор 11 кластеров передает данные заданий 20.[00304] In FIG. 3B is a detailed view of the HMM cluster 11 shown in FIG. 3A. In various embodiments, each HMM cluster 11 contains one or more HMM instances 13. One or multiple clusters may be provided, for example, according to the amount of resources provided, for example, on a chip or quantum computing processor. In particular, an HMM cluster may be provided, which is configured as a cluster hub 11. The cluster hub 11 receives data related to one or more jobs 20 from the distributor 9 and is further connected to communicate with one or more, e.g., multiple, HMM instances 13, e.g., via one or more HMM instance buses 12 to which cluster hub 11 transmits job data to 20.

[00305] Полоса пропускания для передачи данных по всей системе может быть процессом с относительно низкой полосой пропускания, и после того, как задание 20 принято, система 1 может быть выполнена с возможностью выполнения этого задания, например, без необходимости обращения из микросхемы 7 к памяти. В различных вариантах реализации в любой данный момент времени одно задание 20a отправляют на один движок 13a обработки, а несколько заданий 20a-n могут быть распределены концентратором 11 кластеров на несколько движков 13a-13m+1 обработки, например, когда каждый из движков обработки 13 будет работать над одним заданием 20, например, один сравнением между одним или более ридами и одной или более последовательностями гаплотипа, параллельно и высокими скоростями. Как описано ниже, выполнение такого задания 20 может, как правило, включать в себя формирование виртуальной матрицы, посредством которой последовательности «рида» субъекта могут быть сравнены с одной или более, например, двумя, последовательностями гипотетического гаплотипа, чтобы определить различия между ними. В таких случаях одно задание 20 может включать в себя обработку одной или более матриц, имеющих множество ячеек, которые нужно обработать для каждого выполняемого сравнения, например, основание за основанием. Поскольку геном человека насчитывает около 3 миллиардов пар оснований, при анализе генома человека с 30-кратным избыточным покрытием (что эквивалентно примерно 20 триллионам ячеек в матрицах всех связанных заданий по HMM) нужно будет выполнить порядка от 1 до 2 миллиардов различных заданий.[00305] The bandwidth for transmitting data throughout the system may be a relatively low-bandwidth process, and once job 20 is received, system 1 may be configured to execute that job, for example, without requiring chip 7 to access memory . In various implementations, at any given time, one job 20a is sent to one processing engine 13a, and multiple jobs 20 an can be distributed by the cluster hub 11 to multiple processing engines 13a-13 m+1 , for example, when each of the processing engines 13 is work on one task 20, for example one comparison between one or more reads and one or more haplotype sequences, in parallel and at high speeds. As described below, performing such task 20 may typically include generating a virtual matrix whereby the subject's read sequences can be compared to one or more, eg, two, hypothetical haplotype sequences to determine differences between them. In such cases, one job 20 may include processing one or more matrices having multiple cells that need to be processed for each comparison performed, eg, base by base. Since the human genome is about 3 billion base pairs long, analyzing the human genome with 30 times excess coverage (equivalent to about 20 trillion cells in the matrices of all associated HMM jobs) would require running on the order of 1 to 2 billion different jobs.

[00306] Соответственно, как описано в настоящем документе, каждый экземпляр 13 HMM может быть выполнен с возможностью осуществления протокола HMM, например, формирования и обработки матрицы HMM, на данных последовательности, таких как данные, принятые из ЦПУ/ГПУ/КПУ 1000. Например, как объяснялось выше, при секвенировании генетического материала субъекта, такого как ДНК или РНК, ДНК/РНК разбивают на сегменты, например, длиной до около 100 оснований. Затем проверяют идентичность этих сегментов из 100 оснований, например, с помощью автоматизированного секвенатора, и «считывают» в текстовый файл FASTQ или другой формат, который хранит идентичность каждого основания рида вместе с оценкой качества Phred (например, это обычно число от 0 до 63 на логарифмической шкале, где оценка 0 означает минимальную величину достоверности того, что определенное основание является верным, а оценки от 20 до 45 обычно считают приемлемыми как относительно точные).[00306] Accordingly, as described herein, each HMM instance 13 may be configured to implement an HMM protocol, such as generating and processing an HMM matrix, on sequence data, such as data received from the CPU/GPU/GPU 1000. For example, As explained above, when sequencing a subject's genetic material, such as DNA or RNA, the DNA/RNA is broken down into segments, for example, up to about 100 bases in length. These 100-base segments are then checked for identity, for example using an automated sequencer, and "read" into a FASTQ text file or other format that stores the identity of each base of the read along with a Phred quality score (for example, this is typically a number from 0 to 63 per logarithmic scale, where a score of 0 indicates the minimum amount of confidence that a particular basis is true, and scores of 20 to 45 are generally considered acceptable as being relatively accurate).

[00307] В частности, как указано выше, оценка качества Phred является индикатором качества, который измеряет качество идентификации идентичностей нуклеотидов, сформированных процессором секвенирования, например, автоматизированным секвенатором ДНК/РНК. Следовательно, каждое основание рида содержит свою собственную оценку качества, например, Phred, основанную на том, как секвенатор оценил качество данной конкретной идентификации. Phred представляет достоверность, с которой секвенатор оценивает, что он правильно определил идентичность основания. Затем эта оценка Phred используется модулем 8 HMM, как подробно описано ниже, для дальнейшего определения точности каждого определенного основания в риде по сравнению с гаплотипом, на который оно было картировано и/или выровнено, например, определения ее вероятностей перехода в состояния «совпадение», «инсерция» и/или «делеция», например в состояние «совпадение» и из него. Необходимо отметить, что в различных вариантах реализации система 1 может модифицировать или иным образом корректировать первоначальную оценку Phred перед выполнением протокола HMM с ее использованием, например, с учетом соседних оснований/оценок и/или фрагментов соседней ДНК и в предположении влияния таких факторов на оценку Phred основания, например, исследуемую ячейку.[00307] In particular, as stated above, the Phred quality score is a quality indicator that measures the quality of identification of nucleotide identities generated by a sequencing processor, such as an automated DNA/RNA sequencer. Therefore, each read base contains its own quality score, such as Phred, based on how the sequencer judged the quality of that particular identification. Phred represents the confidence with which the sequencer judges that it has correctly determined the identity of the base. This Phred score is then used by HMM Module 8, as detailed below, to further determine the accuracy of each identified base in a read compared to the haplotype to which it was mapped and/or aligned, such as determining its probabilities of transitioning to "match" states. "insertion" and/or "deletion", for example into and out of the "match" state. It should be noted that in various embodiments, system 1 may modify or otherwise adjust the initial Phred score before executing the HMM protocol using it, for example, by taking into account neighboring bases/scores and/or neighboring DNA fragments and assuming the influence of such factors on the Phred score base, for example, the cell under study.

[00308] В таких случаях, как показано на ФИГ. 4, система 1, например, компьютер/квантовое программное обеспечение, может определить и идентифицировать различные активные области 500n в пределах секвенированного генома, которые могут быть использованы и/или иным образом подвергнуты дальнейшей обработке, как описано в настоящем документе, и которая может быть разбита на задания 20n, которые могут быть распараллелены среди различных ядер и доступных потоков 1007 по всей системе 1. Например, такие активные области 500 могут быть выявлены в качестве источников вариации между секвенированным и референсным геномом. В частности, ЦПУ/ГПУ/КПУ 1000 может иметь множество выполняющихся потоков 1007, идентифицируя активные области 500a, 500b и 500c, компилируя и агрегируя всевозможные разные задания 20n, которые нужно выполнить, например, посредством надлежащим образом сконфигурированного агрегатора 1008, на основе активных областей 500a-c, исследуемых в данный момент. Для того чтобы система 1 могла работать эффективно, может быть использовано любое подходящее количество потоков 1007, например, чем больше потоков, тем меньше потрачено активного времени на ожидание.[00308] In such cases, as shown in FIG. 4, system 1, e.g., computer/quantum software, can determine and identify various active regions 500 n within the sequenced genome, which can be used and/or otherwise subjected to further processing as described herein, and which can be is broken down into 20 n jobs that can be parallelized among the various cores and available threads 1007 throughout the system 1. For example, such active regions 500 can be identified as sources of variation between the sequenced and reference genome. In particular, the CPU/GPU/CPU 1000 may have multiple threads 1007 running, identifying active regions 500a, 500b and 500c, compiling and aggregating all sorts of different jobs 20 n to be executed, for example, through a suitably configured aggregator 1008, based on the active areas 500a-c currently being explored. In order for system 1 to operate efficiently, any suitable number of threads 1007 may be used, for example, the more threads, the less active time spent waiting.

[00309] По завершении идентификации, компиляции и/или агрегирования потоки 1007/1008 передадут активные задания 20 в распределитель 9 данных, например, CentCom, модуля 8 HMM, например, через интерфейс 4 PCIe, например, в режиме «самонаведения», и затем перейдут к другим процессам в ожидании, когда модуль 8 HMM отправит выходные данные обратно, чтобы согласовать их обратно с соответствующей активной областью 500, на которую они картируются и/или выравниваются. После этого распределитель 9 данных распределяет задания 20 всевозможных разным кластерам 11 HMM, например, задание за заданием. Если все работает эффективно, это может быть в формате «первым пришел, первым обслужен», но это необязательно. Например, в различных вариантах реализации необработанные данные задания и обработанные результаты задания могут быть отправлены по всей системе по мере их доступности.[00309] Upon completion of identification, compilation and/or aggregation, threads 1007/1008 will transmit active jobs 20 to data distributor 9, e.g., CentCom, HMM module 8, e.g., via PCIe interface 4, e.g., in “homing” mode, and then will move on to other processes while waiting for the HMM module 8 to send the output back to align it back with the corresponding active region 500 to which it is mapped and/or aligned. After this, the data distributor 9 distributes the jobs 20 to various different HMM clusters 11, for example, job by job. If everything is running efficiently, it could be a first come, first served format, but it doesn't have to be. For example, in various implementations, raw job data and processed job results may be sent throughout the system as they become available.

[00310] В частности, на ФИГ. 2, 3 и 4 различные данные задания 20 могут быть агрегированы в страницы по 4K байтов, которые могут быть отправлены посредством PCIe 4 в и через CentCom 9 и далее в движки 13 обработки, например, посредством кластеров 11. Количество отправляемых данных может быть больше или меньше 4K байтов, но, как правило, они будут содержать 100 заданий HMM на страницу данных объемом 4K (например, 1024). В частности, эти данные потом перевариваются распределителем 9 данных и подаются в каждый кластер 11, например, одну страницу объемом 4K посылают на один кластер 11. Однако это необязательно, так как каждое отдельное задание 20 может быть послан в любой данный кластер 11 в зависимости от того, какой кластер становится доступным и когда.[00310] Specifically, in FIG. 2, 3 and 4, the various data of job 20 can be aggregated into pages of 4K bytes, which can be sent via PCIe 4 to and through CentCom 9 and onwards to processing engines 13, for example, via clusters 11. The amount of data sent can be greater than or equal to less than 4K bytes, but will typically contain 100 HMM jobs per 4K data page (e.g. 1024). In particular, this data is then digested by the data distributor 9 and sent to each cluster 11, for example, one 4K page is sent to one cluster 11. However, this is not necessary, since each individual job 20 can be sent to any given cluster 11 depending on which cluster becomes available and when.

[00311] Соответственно, подход на основе кластера 11, который представлен здесь, эффективно и с высокой скоростью распределяет поступающие данные движкам 13 обработки. В частности, по мере поступления данных на интерфейс 4 PCIe из ЦПУ/ГПУ/КПУ 1000, например, по соединению 3 DMA, принимаемые данные затем отправляются по шине 5 PCIe в распределитель 9 CentCom микросхемы 7 определителя вариантов. После чего распределитель 9 отправляет данные в один или более кластеров 11 обработки HMM, например, по одной или более специализированным шинам 10 кластеров, причем кластер 11 может затем передать эти данные в один или более экземпляров 13 обработки, например, по одной или более шин 12 экземпляров, например, для обработки. В этом случае интерфейс 4 PCIe выполнен с возможностью подачи данных через периферийную шину 5 расширения, распределитель 9 и/или шины 10 и/или 12 кластера и/или экземпляра с быстрой скоростью, например, с такой, которая может обеспечивать занятость одного или более, например, всех экземпляров 13a-(m+1) ускорителя HMM в пределах одного или более, например, всех, кластеров 11a-(n+1) HMM, например, в течение длительного периода времени, например, полного времени, причем на протяжении периода, в течение которого система 1 работает, задания 20 обрабатываются, и в то же время система успевает выводить данные HMM, которые должны быть отправлены обратно в один или более ЦПУ 1000, через интерфейс 4 PCIe.[00311] Accordingly, the cluster-based approach 11 as presented here distributes incoming data to processing engines 13 efficiently and at high speed. Specifically, as data arrives on PCIe interface 4 from the CPU/GPU/CPU 1000, for example via DMA connection 3, the received data is then sent via PCIe bus 5 to CentCom distributor 9 of variant determiner chip 7. The distributor 9 then sends the data to one or more HMM processing clusters 11, for example, on one or more dedicated cluster buses 10, which cluster 11 can then send this data to one or more processing instances 13, for example, on one or more buses 12 instances, for example, for processing. In this case, the PCIe interface 4 is configured to supply data through the peripheral expansion bus 5, the distributor 9, and/or the cluster and/or instance buses 10 and/or 12 at a fast speed, for example, one that can keep one or more busy. for example, all a-(m+1) HMM accelerator instances 13 within one or more, for example all, a-(n+1) HMM clusters 11, for example, over a long period of time, for example full time, and for During the period during which the system 1 operates, jobs 20 are processed, and at the same time the system manages to output HMM data to be sent back to one or more CPUs 1000 via PCIe interface 4.

[00312] Например, любая неэффективность интерфейсов 3, 5, 10 и/или 12, которая приводит к периоду простоя одного или более экземпляров 13 ускорителя HMM, может увеличивать общее время обработки системы 1. В частности, при анализе генома человека могут быть порядка двух или более миллиардов различных заданий 20, которые должны быть распределены различным кластерам 11 HMM и обработаны в течение некоторого периода времени, например, менее 1 часа, менее 45 минут, менее 30 минут, менее 20 минут, включая 15 минут, 10 минут, 5 минут или менее.[00312] For example, any inefficiency of interfaces 3, 5, 10 and/or 12 that results in a period of downtime of one or more HMM accelerator instances 13 may increase the overall processing time of system 1. In particular, when analyzing the human genome, there may be on the order of two or more than 20 billion different jobs that must be distributed to different 11 HMM clusters and processed over some period of time, for example, less than 1 hour, less than 45 minutes, less than 30 minutes, less than 20 minutes, including 15 minutes, 10 minutes, 5 minutes or less.

[00313] Соответственно, на ФИГ. 4 дан обзор примера потока данных по всему программному и/или аппаратному обеспечению системы 1, как описано в целом выше. Как показано на ФИГ. 4, система 1 может быть выполнена, частично, с возможностью передачи данных, например, между интерфейсом 4 PCIe и распределителем 9, таким как, CentCom, например, по шине 5 PCIe. Кроме того, система 1 может быть также выполнена, частично, с возможностью передачи принимаемых данных, например, между распределителем 9 и одним или более кластерами 11 HMM, например, посредством одной или более шин 10 кластеров. Таким образом, в различных вариантах реализации ускоритель 8 HMM может содержать один или более кластеров 11, например, один или более кластеров 11, выполненных с возможностью осуществления одного или более процессов функции HMM. В таком случае имеется интерфейс, такой как кластерная шина 10, которая соединяет CentCom 9 с кластером 11 HMM.[00313] Accordingly, in FIG. 4 provides an overview of an example of data flow throughout the software and/or hardware of system 1, as described generally above. As shown in FIG. 4, the system 1 can be configured, in part, to transfer data, for example, between the PCIe interface 4 and a distributor 9, such as CentCom, for example, over a PCIe bus 5. In addition, the system 1 may also be configured, in part, to transmit received data, for example, between the distributor 9 and one or more HMM clusters 11, for example, via one or more cluster buses 10. Thus, in various embodiments, the HMM accelerator 8 may comprise one or more clusters 11, for example, one or more clusters 11 configured to implement one or more HMM function processes. In such a case, there is an interface, such as a cluster bus 10, that connects the CentCom 9 to the HMM cluster 11.

[00314] Например, на ФИГ. 5 приведена высокоуровневая схема, изображающая интерфейс входа в модуль 8 HMM и выхода из него, такой как вход и выход модуля кластера. Как показано на ФИГ. 6, каждый кластер 11 HMM может быть выполнен с возможностью обмена данными, например, приема данных из и/или отправки результирующих данных, например, суммарных данных, с распределителем 9 данных CentCom через кластерную шину 10. В частности, может быть предусмотрен любой подходящий интерфейс 5, если он позволяет интерфейсу 4 PCIe обмениваться данными с распределителем 9 данных. Более конкретно, шина 5 может представлять собой межсоединение, содержащее логику интерпретации, полезную для сообщения распределителю 9 данных, какая логика интерпретации может быть выполнена с возможностью приспособления к любому протоколу, используемому для обеспечения этой функциональной возможности. А именно, в различных случаях межсоединение может выполнено в виде шины 5 PCIe.[00314] For example, in FIG. 5 is a high-level diagram showing an input and output interface of the HMM module 8, such as the input and output of a cluster module. As shown in FIG. 6, each HMM cluster 11 may be configured to communicate, such as receiving data from and/or sending resulting data, such as summary data, with the CentCom data distributor 9 via the cluster bus 10. In particular, any suitable interface may be provided 5 if it allows PCIe interface 4 to communicate with data distributor 9. More specifically, bus 5 may be an interconnect containing interpretation logic useful for telling data distributor 9 what interpretation logic may be configured to adapt to any protocol used to provide that functionality. Namely, in various cases, the interconnect can be implemented as a 5 PCIe bus.

[00315] Кроме того, кластер 11 может быть выполнен с возможностью использования в нем одной или более областей тактовой частоты и, следовательно, в пределах кластера 11 могут быть представлены один или более тактовых генераторов. В конкретных случаях могут быть предусмотрено множество областей тактовой частоты. Например, может быть предусмотрен более медленный тактовый генератор, например, для передач данных, скажем, в кластер 11 и из него. Кроме того, может быть предусмотрен более быстрый, например, высокоскоростной, тактовый генератор, который может использоваться экземплярами 13 HMM при выполнении различных вычислений состояний, описанных в настоящем документе.[00315] In addition, cluster 11 may be configured to utilize one or more clock regions and, therefore, one or more clock generators may be present within cluster 11. In specific cases, multiple clock frequency regions may be provided. For example, a slower clock may be provided, for example, for data transfers, say, to and from cluster 11. In addition, a faster, eg, high-speed, clock generator may be provided that can be used by the HMM instances 13 when performing the various state calculations described herein.

[00316] В частности, в различных вариантах реализации, как показано на ФИГ. 6, система 1 может быть установлена таким образом, чтобы в первом случае, когда распределитель 9 данных использует существующий CentCom IP, может быть предусмотрена манжета, такая как уплотнительное кольцо, причем уплотнительное кольцо выполнено с возможностью трансляции сигнала в интерфейс 5 CentCom из интерфейса или шины 10 кластера HMM и обратно. Например, кластерная шина 10 HMM может соединять с возможностью обмена данными и/или функционально ЦПУ/ГПУ 1000 с различными кластерами 11 модуля 8 ускорителя HMM. Таким образом, как показано на ФИГ. 6, структурированные записанные и/или считанные данные для каждого гаплотипа и/или каждого рида могут быть отправлены по всей системе 1.[00316] Specifically, in various embodiments, as shown in FIG. 6, the system 1 may be installed such that, in the first case where the data distributor 9 uses an existing CentCom IP, a collar such as an O-ring may be provided, the O-ring being configured to transmit a signal to the CentCom interface 5 from the interface or bus 10 HMM clusters and vice versa. For example, the HMM cluster bus 10 may communicate communicatively and/or functionally between the CPU/GPU 1000 and various clusters 11 of the HMM accelerator module 8. Thus, as shown in FIG. 6, structured written and/or read data for each haplotype and/or each read can be sent throughout the system 1.

[00317] Вслед за заданием 20, вводимым в движок HMM, движок 13 HMM может, как правило, приступать к работе либо: a) немедленно, если она находится в состоянии простоя (IDLE), либо b) по завершении текущей назначенной задачи. Необходимо отметить, что каждый движок 13 ускорителя HMM может обрабатывать входные сигналы с попеременным переключением (например, может работать с одним набором данных во время загрузки другого), тем самым сводя к минимуму непроизводственную потерю времени между заданиями. Соответственно, манжета 11 кластера HMM может быть выполнена с возможностью автоматического приема входного задания 20, отправленного распределителем 9 данных и назначения его одному или более экземпляров 13 движка HMM в кластере 11, который может принять новое задание. На стороне программного обеспечения не требуется управления, которое может выбирать определенный экземпляр 13 движка HMM для определенного задания 20. Однако в различных случаях программное обеспечение может быть выполнено с возможностью управления такими экземплярами.[00317] Following a task 20 entered into the HMM engine, the HMM engine 13 may typically begin work either: a) immediately if it is in an idle state (IDLE), or b) upon completion of the currently assigned task. It should be noted that each HMM accelerator engine 13 can process input signals in a staggered manner (e.g., can work on one set of data while loading another), thereby minimizing wasted time between jobs. Accordingly, the HMM cluster cuff 11 may be configured to automatically receive an input job 20 sent by the data distributor 9 and assign it to one or more HMM engine instances 13 in the cluster 11, which can accept the new job. There is no control required on the software side that can select a specific HMM engine instance 13 for a specific job 20. However, in various cases, the software may be configured to control such instances.

[00318] Соответственно, ввиду вышеизложенного, система 1 может быть рационализирована при передаче данных результатов обратно в ЦПУ/ГПУ/КПУ, и благодаря этой эффективности имеется не много данных, которые нужно вернуть в ЦПУ/ГПУ/КПУ, чтобы добиться пользы от результатов. Это позволяет системе достигать времени выполнения операции определения вариантов около 30 минут или меньше, например, около 25, или около 20 минут или меньше, например, около 18 или около 15 минут или меньше, включая около 10 или около 7 минут или меньше, даже около 5 или около 3 минут или меньше в зависимости от конфигурации системы.[00318] Accordingly, in view of the above, the system 1 can be rationalized in sending result data back to the CPU/GPU/CPU, and due to this efficiency, there is not much data that needs to be returned to the CPU/GPU/CPU to benefit from the results. This allows the system to achieve a variant determination operation time of about 30 minutes or less, for example about 25, or about 20 minutes or less, for example about 18 or about 15 minutes or less, including about 10 or about 7 minutes or less, even about 5 or about 3 minutes or less depending on system configuration.

[00319] На ФИГ. 6 приведено высокоуровневое представление различных функциональных блоков примера движка 13 HMM в пределах аппаратного ускорителя 8 на FPGA или ASIC 7. В частности, в пределах аппаратного ускорителя 8 HMM имеются множество кластеров 11, и в пределах каждого кластера 11 имеются множество движков 13. На ФИГ. 6 приведен пример движка 13 HMM. Как показано на ФИГ. 6, движок 13 может содержать интерфейс 12 шины экземпляра, множество памятей, например, HMEM 16 и RMEM 18, различные другие компоненты 17, логику 15 управления HMM, а также интерфейс 19 вывода результатов. В частности, на стороне движка шина 12 экземпляра HMM выполнена с возможность функционального соединения с памятями, HMEM 16 и RMEM 18, и может содержать логику интерфейса, которая обменивается данными с концентратором 11 кластеров, причем концентратор кластеров обменивается данными с распределителем 9, который, в свою очередь, обменивается данными с интерфейсом 4 PCIe, который обменивается данными с программным обеспечением определения вариантов, выполняемым ЦПУ/ГПУ и/или сервером 1000. Таким образом, шина 12 экземпляра HMM принимает данные из ЦПУ 1000 и загружает их в одну или более памятей, например HMEM и RMEM. Эта конфигурация может быть также реализована в одной или более квантовых схем и адаптирована соответствующим образом.[00319] In FIG. 6 is a high-level view of various functional blocks of an example HMM engine 13 within a hardware accelerator 8 on an FPGA or ASIC 7. Specifically, within a hardware HMM accelerator 8 there are a plurality of clusters 11, and within each cluster 11 there are a plurality of engines 13. In FIG. Figure 6 shows an example of a 13 HMM engine. As shown in FIG. 6, engine 13 may include an instance bus interface 12, a plurality of memories, such as HMEM 16 and RMEM 18, various other components 17, HMM control logic 15, and a result output interface 19. In particular, on the engine side, the HMM instance bus 12 is configured to be operatively connected to the memories, HMEM 16 and RMEM 18, and may contain interface logic that communicates with the cluster hub 11, wherein the cluster hub communicates with the allocator 9, which, in in turn communicates with PCIe interface 4, which communicates with variant determination software executed by the CPU/GPU and/or server 1000. Thus, HMM instance bus 12 receives data from CPU 1000 and loads it into one or more memories, for example HMEM and RMEM. This configuration can also be implemented in one or more quantum circuits and adapted accordingly.

[00320] В этих случаях должен быть выделен достаточный объем памяти, чтобы можно было загружать по меньшей мере два или более гаплотипов, например, два гаплотипа, в HMEM 16, для данной последовательности рида, которую загружают, например, в RMEM 18, что в случае загрузки множества гаплотипов снижает нагрузку на полосу пропускания шины 5 PCIe. В конкретных случаях два гаплотипа или две последовательности рида могут быть загружены в их соответствующие памяти, что позволит обрабатывать четыре последовательности вместе во всех соответствующих комбинациях. В других случаях могут быть загружены, например, четыре, или восемь или шестнадцать, пар последовательностей и аналогичным образом обработаны в комбинации, например, чтобы еще более облегчить нагрузку на полосу пропускания, если требуется.[00320] In these cases, sufficient memory must be allocated to allow at least two or more haplotypes, such as two haplotypes, to be loaded into HMEM 16 for a given read sequence that is loaded into, for example, RMEM 18, which When loading multiple haplotypes, it reduces the load on PCIe bus 5 bandwidth. In specific cases, two haplotypes or two read sequences can be loaded into their respective memories, allowing the four sequences to be processed together in all relevant combinations. In other cases, for example, four, or eight, or sixteen, pairs of sequences may be downloaded and similarly processed in combination, for example, to further lighten the bandwidth load if required.

[00321] Кроме того, может быть зарезервировано достаточно памяти, чтобы в ней можно было реализовать структуру с попеременным переключением, так чтобы после того, как памяти загружены новым заданием 20a, например, на одной стороне памяти, подавался сигнал о новом задании, и логика управления 15 могла начать обработку нового задания 20a, например, путем формирования матрицы и выполнения необходимых вычислений, как описано ниже в настоящем документе. Соответственно, благодаря этому другая сторона памяти остается доступной, чтобы в нее можно было загрузить другое задание 20b, которое может быть загружена туда, пока первое задание 20a обрабатывается, а по завершении задания 20a можно было сразу же начинать обработку задания 20b с помощью логики 15 управления.[00321] In addition, enough memory may be reserved to allow a toggling structure to be implemented so that once the memories are loaded with a new job 20a, for example on one side of the memory, a new job is signaled and the logic control 15 could begin processing a new job 20a, for example, by generating a matrix and performing the necessary calculations, as described below herein. Accordingly, this leaves the other side of the memory available so that another job 20b can be loaded into it, which can be loaded there while the first job 20a is being processed, and upon completion of job 20a, processing of job 20b can immediately begin using the control logic 15 .

[00322] В таком случае матрица для задания 20b может быть обработана фактически без непроизводственной потери времени, например, одного или двух тактовых циклов, между завершением обработки первого задания 20a и началом обработки второго задания 20b. Следовательно, при использовании обеих сторон структуры памяти с попеременным переключением HMEM 16 может, как правило, хранить 4 последовательности гаплотипа, например, два фрагмента, а RMEM 18 может хранить, как правило, 2 последовательности рида. Эта конфигурация с попеременным переключением полезна, так как требует лишь немного дополнительного объема памяти, но позволяет удвоить пропускную способность движка 13.[00322] In such a case, the matrix for job 20b can be processed with virtually no overhead, such as one or two clock cycles, between the completion of processing of the first job 20a and the start of processing of the second job 20b. Therefore, when using both sides of the toggled memory structure, HMEM 16 can typically store 4 haplotype sequences, eg two fragments, and RMEM 18 can typically store 2 read sequences. This alternating switching configuration is useful because it requires only a little extra memory, but allows double the throughput of the 13 engine.

[00323] Во время и/или после обработки памяти 16, 18 снабжают данными блок 17a калькулятора вероятностей перехода и таблицы подстановки (LUT), который выполнен с возможностью вычисления различной информации, относящейся к значениям «Prior», как объясняется ниже, и который, в свою очередь, подает данные результатов Prior в блок 17b калькулятора состояний M, I и D для использования при вычислении вероятностей перехода. Кроме того, могут быть включены одна или более сверхоперативных ОЗУ 17c, например, для хранения состояний M, I и D на границе полосы захвата, например, значений нижней строки полосы захвата обработки, которые, как было указано, в различных случаях могут быть любым подходящим количеством ячеек, например, около 10 ячеек, в длину, чтобы быть соразмерными с длиной полосы захвата 35.[00323] During and/or after processing, the memories 16, 18 provide data to a transition probability calculator and lookup table (LUT) unit 17a, which is configured to calculate various information related to the "Prior" values, as explained below, and which, in turn, supplies the Prior results data to the M, I and D state calculator block 17b for use in calculating the transition probabilities. In addition, one or more flash RAMs 17c may be included, for example, to store the states M, I and D at the edge of the capture strip, for example, the values of the bottom line of the processing capture strip, which, as noted, in various cases, can be any suitable number of cells, for example about 10 cells, in length, to be commensurate with the length of the 35 strip.

[00324] Кроме того, может быть включен отдельный блок 19 интерфейса вывода результатов, чтобы по завершении суммирований они, например, 4 32-битовых слова, могли быть немедленно переданы обратно в программное обеспечение определения вариантов ЦПУ/ГПУ/КПУ 1000. Необходимо отметить, что эта конфигурация может быть сконфигурирована таким образом, чтобы система 1, а именно, калькулятор 17b M, I и D, не дожидались, пока интерфейс 19 вывода очистится, например, до тех пор, пока он не очистит результаты после того, как выполнит задание 20. Поэтому в данной конфигурации могут быть три ступени конвейере, функционирующие в унисон, чтобы создать общесистемный конвейер, такой как загрузка памяти, выполнение вычислений MID и вывод результатов. Кроме того, следует отметить, что любой данный движок 13 HMM является одним из многих со своими собственными интерфейсами 19 вывода, однако они могут совместно использовать общий интерфейс 10 для возврата в распределитель 9 данных. Следовательно, концентратор 11 кластеров будет включать в себя возможности управления для управления передачей («xfer») информации через ускоритель 8 HMM во избежание конфликтов.[00324] Additionally, a separate result output interface block 19 may be included so that upon completion of the summations they, for example 4 32-bit words, can be immediately transferred back to the CPU/GPU/CPU variant determination software 1000. It should be noted that that this configuration can be configured so that system 1, namely the M, I and D calculator 17b, does not wait for the output interface 19 to clear, for example, until it clears the results after it has completed the job 20. Therefore, in a given configuration, there may be three pipeline stages operating in unison to create a system-wide pipeline such as loading memory, performing MID calculations, and outputting results. Additionally, it should be noted that any given HMM engine 13 is one of many with its own output interfaces 19, however they may share a common interface 10 to return to the data distributor 9. Therefore, the cluster hub 11 will include management capabilities to control the transfer (“xfer”) of information through the HMM accelerator 8 to avoid collisions.

[00325] Соответственно, далее подробно описаны процессы, выполняемые в каждом модуле движков 13 HMM, когда он принимает данные гаплотипа и рида, обрабатывает их и выводит полученные в результаты данные, относящиеся к ним, как большей часть описано в общих чертах выше. А именно, вычисления с широкой полосой пропускания в движке 13 HMM в пределах кластера 11 HMM направлены на вычисление и/или обновление значений состояний вставки (M), инсерции (I) и делеции (D), которые используют при определении того, совпадает ли конкретный исследуемый рид с референсом гаплотипа, а также в какой степени совпадает, как описано выше. В частности, рид вместе с оценкой Phred и значением штрафа на открытие гэпа (GOP) для каждого основания в риде передают в кластере 11 из распределителя 9 и тем самым назначают конкретному движку 13 обработки для обработки. Затем эти данные используются калькулятором 17 M, I и D движка 13 обработки для определения того, является ли определенное основание в риде более или менее правдоподобным, чтобы быть правильным и/или совпадать с соответствующим ему основанием в гаплотипе, или быть результатом вариации, например, инсерцией или делецией; и/или если имеется вариация, то вызвана ли эта вариация, по всей видимости, действительной изменчивостью в гаплотипе, или, скорее, артефактом вследствие ошибки в системах формирования последовательности, и/или картирования, и/или выравнивания.[00325] Accordingly, the following describes in detail the processes performed in each module of the HMM engines 13 as it receives haplotype and read data, processes it, and outputs the resulting data relating thereto, as largely described above. Namely, high-bandwidth computations in the HMM engine 13 within the HMM cluster 11 are aimed at calculating and/or updating the values of the insertion (M), insertion (I) and deletion (D) states, which are used in determining whether a particular the read being studied with the reference haplotype, and also to what extent it matches, as described above. In particular, the read, along with the Phred score and the gap opening penalty (GOP) value for each base in the read, is transmitted to the cluster 11 from the allocator 9 and thereby assigned to a specific processing engine 13 for processing. This data is then used by the M, I and D calculator 17 of the processing engine 13 to determine whether a particular base in the read is more or less likely to be correct and/or match its corresponding base in the haplotype, or be the result of a variation, e.g. insertion or deletion; and/or if there is variation, whether the variation appears to be caused by actual variation in the haplotype, or rather by an artifact due to error in the sequence generation and/or mapping and/or alignment systems.

[00326] Как указано выше, часть такого анализа включает в себя калькулятор 17 MID, определяющий вероятности перехода от одного основания к другому в риде, переходящим из одного состояния M, I или D в другое, в сравнении с референсом, например, из состояния совпадения в другое состояние совпадения, или из состояния совпадения либо в состояния инсерции, либо в состояния делеции. При выполнении таких определений каждую из связанных вероятностей перехода определяют и учитывают, когда оценивают, является ли наблюдаемый переход между ридом и референсом истинной вариацией, а не просто какой-то ошибкой машины или обработки. В этих целях полезно использовать оценку Phred для каждого рассматриваемого основания при определении вероятностей переходов в состояние совпадения и из него, например, из состояния совпадения в состояние инсерции или делеции, например, с гэпом, при сравнении. Подобным образом определяют также вероятности перехода продления гэпа или выход из состояния с гэпом, например, состояния инсерции или делеции, обратно в состояние совпадения. В конкретных случаях вероятности входа в состояние делеции или инсерции и выхода из него, например, выхода из состояния продления гэпа, могут быть фиксированный величины, и могут упоминаться в настоящем документе как вероятность продления гэпа или штраф на продление гэпа. Тем не менее, в различных случаях такие штрафы на продление гэпа могут быть плавающими и, следовательно, подверженными изменению в зависимости от требований к точности конфигурации системы.[00326] As stated above, part of such analysis includes a MID calculator 17 that determines the probabilities of a base-to-base transition in a read moving from one M, I, or D state to another, compared to a reference, such as a match state. to another match state, or from a match state to either insertion or deletion states. In making such determinations, each of the associated transition probabilities is determined and taken into account when assessing whether the observed transition between read and reference is a true variation and not simply some kind of machine or processing error. For these purposes, it is useful to use the Phred score for each base considered when determining the probabilities of transitions into and out of a match state, for example, from a match state to an insertion or deletion state, such as a gap, in a comparison. In a similar way, the probabilities of transition of gap extension or exit from a state with a gap, for example, an insertion or deletion state, back to a match state are also determined. In particular cases, the probabilities of entering and exiting a deletion or insertion state, such as exiting a gap extension state, may be fixed values, and may be referred to herein as the gap extension probability or the gap extension penalty. However, in various cases, such gap extension penalties may be floating and therefore subject to change depending on the accuracy requirements of the system configuration.

[00327] Соответственно, как показано на ФИГ. 7 и 8, для каждой возможной пары рида и гаплотипа вычисляют значение каждого из состояний M, I и D. В таком случае можно сформировать виртуальную матрицу 30 из ячеек, содержащих оцениваемый рид на одной оси матрицы и связанную последовательность гаплотипа на другой оси матрицы, таким образом, что каждая ячейка в матрице представляет позицию основания в риде и референсе гаплотипа. Следовательно, если каждая из последовательности рида и гаплотипа имеет длину в 100 оснований, матрица 30 будет содержать 100 на 100 ячеек, данную часть которой нужно будет обработать, чтобы определить правдоподобие и/или степень, в которой каждый конкретный рид совпадает с данных конкретным референсом. Поэтому после того как виртуальная матрица 30 сформирована, она может быть использована для определения различных переходов состояний, которые имеют место при перемещении от одного основания в последовательности рида к другому, и сравнения с такими же переходами последовательности гаплотипа, например, как изображено на ФИГ. 7 и 8. А именно, движок 13 обработки выполнен с возможностью обработки множества ячеек параллельно и/или последовательно при прохождении матрицы с помощью логики 15. Например, как изображено на ФИГ. 7, виртуальная полоса 35 захвата обработки распространяется и перемещается поперек и в низ матрицы 30, например, слева направо, обрабатывая отдельные ячейки матрицы 30 по диагонали вниз справа налево.[00327] Accordingly, as shown in FIG. 7 and 8, for each possible pair of read and haplotype, the value of each of the states M, I and D is calculated. In such a case, a virtual matrix 30 can be formed from cells containing the read being evaluated on one axis of the matrix and the associated haplotype sequence on the other axis of the matrix, such that such that each cell in the matrix represents the position of a base in the read and reference haplotype. Therefore, if the read and haplotype sequences are each 100 bases long, the matrix 30 will contain 100 by 100 cells, this portion of which will need to be processed to determine the likelihood and/or degree to which each particular read matches that particular reference. Therefore, once the virtual matrix 30 is generated, it can be used to determine the various state transitions that occur when moving from one base in the read sequence to another, and compare with the same haplotype sequence transitions, for example, as depicted in FIG. 7 and 8. Namely, the processing engine 13 is configured to process multiple cells in parallel and/or sequentially while passing through the matrix using logic 15. For example, as shown in FIG. 7, the virtual processing capture strip 35 extends and moves across and to the bottom of the matrix 30, for example, from left to right, processing individual cells of the matrix 30 diagonally downward from right to left.

[00328] Точнее говоря, как показано на ФИГ. 7, каждая отдельная виртуальная ячейка в пределах матрицы 30 содержит значение состояния M, I и D, которое нужно вычислить, чтобы оценить характер идентичности найденного основания и, как изображено на ФИГ. 7, можно четко увидеть зависимости между этими данными для каждой ячейки в этом процессе. Следовательно, для определения данного состояния M текущей обрабатываемой ячейки, в текущую ячейку необходимо передвинуть состояния совпадения, инсерции и делеции ячейки, расположенной сверху по диагонали от нее, и использовать при вычислении состояния M ячейки, вычисляемого в данный момент (например, таким образом, продвижение диагонали вниз вперед по матрице указывает на совпадение),[00328] More precisely, as shown in FIG. 7, each individual virtual cell within the matrix 30 contains a state value M, I and D that must be calculated to evaluate the nature of the identity of the found base and, as depicted in FIG. 7, the dependencies between these data for each cell in this process can be clearly seen. Therefore, to determine a given state M of the current cell being processed, it is necessary to move the match, insertion and deletion states of the cell located diagonally above it into the current cell and use it in calculating the state M of the cell being calculated at the moment (for example, thus promoting diagonally downward along the matrix indicates a match),

[00329] Однако для определения состояния I в текущую обрабатываемую ячейку нужно передвинуть только состояния совпадения и инсерции из ячейки непосредственно выше текущей обрабатываемой ячейки (таким образом, при переходе в состояние инсерции получаем продвижение вертикально вниз «с гэпом»). Аналогичным образом для определения состояния D в текущую обрабатываемую ячейку нужно передвинуть только состояния совпадения и делеции из ячейки непосредственно слева от текущей ячейки (таким образом, при переходе в состояние делеции получаем продвижение горизонтально поперек «с гэпом»). Как показано на ФИГ, 7, после того, как начинается вычисление ячейки 1 (затененная ячейка в крайней сверху строке), можно также начать обработку ячейки 2 (затененная ячейка во второй строке), не ожидая никаких результатов из ячейки 1, поскольку между этой ячейкой в строке 2 и ячейкой в строке 1, где начинается обработка, нет зависимости по данным. В результате образуется обратная диагональ 35, где продвижение продолжается вниз и влево, как показано красной стрелкой. Этот подход с продвижение обратной диагонали 35 повышает эффективность обработки и пропускную способность всей системы. Аналогичным образом данные, формируемые в ячейке 1, могут быть немедленно продвинуты в ячейку внизу и прямо справа от крайней сверху ячейки 1, тем самым продвигая полосу 35 захвата.[00329] However, to determine the I state into the current cell being processed, only the match and insertion states from the cell immediately above the current cell being processed need to be moved (thus, when moving to the insertion state, we get a vertical downward “gapped” movement). Similarly, to determine the D state, only the match and deletion states from the cell immediately to the left of the current cell need to be moved into the current cell being processed (thus, when moving to the deletion state, we get a horizontal advancement across the “gap”). As shown in FIG. 7, after the computation of cell 1 (the shaded cell in the topmost row) begins, processing of cell 2 (the shaded cell in the second row) can also begin processing without expecting any results from cell 1, because between that cell in line 2 and the cell in line 1 where processing begins, there is no data dependency. The result is a reverse diagonal of 35, where the progression continues down and to the left, as shown by the red arrow. This reverse diagonal 35 forward approach improves processing efficiency and throughput of the entire system. Likewise, data generated in cell 1 can be immediately advanced to the cell below and directly to the right of the topmost cell 1, thereby advancing capture strip 35.

[00330] Например, на ФИГ. 7 изображен пример структуры 35 матрицы HMM, показывающей поток аппаратной обработки. Матрица 30 включает в себя индекс оснований гаплотипа, например, содержащий 36 оснований, расположенных слева направо вдоль верхнего края горизонтальной оси, а также включает в себя индекс оснований рида, например, содержащий 10 оснований, расположенных сверху вниз вдоль бокового края вертикальной оси таким образом, что формировать структуру ячеек, где выбранная ячейка может быть заполнена состояниями вероятности M, I и D и вероятностями перехода из текущего состояния в соседнее состояние. В таком случае, как более подробно описано выше, перемещение из состояния совпадения в состояние совпадения приводит к продвижению вперед по диагонали по матрице 30, тогда как перемещение из состояния совпадения в состояние инсерции приводит к продвижению вертикально вниз с образованием гэпа, а перемещение из состояния совпадения в состояние делеции приводит к продвижению по горизонтали с образованием гэпа. Следовательно, как показано на ФИГ. 8, для данной ячейки при определении состояний совпадения, инсерции и делеции для каждой ячейки используют вероятности совпадения, инсерции и делеции ее трех примыкающих ячеек.[00330] For example, in FIG. 7 illustrates an example of an HMM matrix structure 35 showing a hardware processing flow. Matrix 30 includes a haplotype base index, for example, containing 36 bases arranged from left to right along the top edge of the horizontal axis, and also includes a read base index, for example, containing 10 bases, arranged from top to bottom along the side edge of the vertical axis such that that to form a structure of cells, where the selected cell can be filled with probability states M, I and D and the probabilities of transition from the current state to the neighboring state. In such a case, as described in more detail above, moving from a match state to a match state results in moving forward diagonally across the matrix 30, while moving from a match state to an insertion state results in moving vertically downward to form a gap, and moving from a match state into the deletion state leads to horizontal movement with the formation of a gap. Therefore, as shown in FIG. 8, for a given cell, the match, insertion, and deletion probabilities of its three adjacent cells are used to determine the match, insertion, and deletion states for each cell.

[00331] Указывающая вниз стрелка на ФИГ. 7 представляет параллельный и последовательный характер движков обработки, которые выполнены с возможностью создания полосы захвата 35 или волны, перемещающейся поступательно вдоль виртуальной матрицы в соответствии с зависимостями данных (см. ФИГ. 7 и 8) для определения состояний M, I и D для каждой конкретной ячейки в структуре 30. Соответственно, в определенных случаях может потребоваться вычислить идентичности каждой ячейки в направлении вниз и по диагонали, как объяснено выше, а не просто рассчитать каждую ячейку исключительно вдоль вертикальной или горизонтальной оси, хотя это можно сделать, если требуется. Это обусловлено повышенным временем ожидания, например, задержкой, которое потребуется при обработке виртуальных ячеек матрицы 30 по отдельности и последовательно только вдоль вертикальной или горизонтальной оси, например, посредством аппаратной конфигурации.[00331] The downward arrow in FIG. 7 represents the parallel and serial nature of the processing engines, which are configured to create a swath 35 or wave that moves translationally along the virtual matrix in accordance with data dependencies (see FIGS. 7 and 8) to determine the states M, I and D for each specific cells in structure 30. Accordingly, in certain cases it may be necessary to calculate the identities of each cell in the downward and diagonal direction, as explained above, rather than simply calculating each cell solely along the vertical or horizontal axis, although this can be done if required. This is due to the increased latency, eg latency, that would be required when processing the virtual cells of the matrix 30 individually and sequentially along only the vertical or horizontal axis, eg by hardware configuration.

[00332] Например, в таком случае при движении линейно и последовательно по виртуальной матрице 30, например, строка за строкой или столбец за столбцом, для обработки каждой новой ячейки вычисления каждой предыдущей ячейки должны быть завершены, что повышает время ожидания в целом. Однако при распространении вероятностей M, I, D каждой новой ячейки в направлении вниз и по диагонали системе 1 не нужно дожидаться, пока обработка ее предшествующей ячейки, например, строки один, завершится, прежде чем начинать обработку примыкающей ячейки в строке два матрицы. Это позволяет параллельно и последовательно обрабатывать ячейки по диагонали, а также позволяет скрывать различные задержки вычислений конвейера, связанные с расчетами состояний M, I и D. Соответственно, по мере перемещения полосы 35 захвата по матрице 30 слева направо вычислительная обработка перемещается по диагонали вниз, например, влево (как показано стрелкой на ФИГ. 7). Эта конфигурация может быть особенно полезна для аппаратных и/или основанных на квантовых схемах реализаций, например, когда задержка памяти и/или межтактовая задержка имеют первостепенное значение.[00332] For example, in such a case, when moving linearly and sequentially through the virtual matrix 30, for example, row by row or column by column, in order to process each new cell, the calculations of each previous cell must be completed, which increases the overall latency. However, by propagating the probabilities M, I, D of each new cell downward and diagonally, system 1 does not have to wait for its predecessor cell, such as row one, to complete processing before processing the adjacent cell in row two of the matrix. This allows parallel and sequential processing of diagonal cells, and also allows the various pipeline computation delays associated with calculations of the M, I, and D states to be hidden. Accordingly, as the capture strip 35 moves across the matrix 30 from left to right, the computational processing moves diagonally downward, e.g. , to the left (as shown by the arrow in FIG. 7). This configuration can be particularly useful for hardware and/or quantum-based implementations, for example, when memory latency and/or clock-to-clock latency are of paramount importance.

[00333] В таких конфигурациях действительно ценным результатом каждого вызова движка 13 HMM, например, по завершении вычисления всей матрицы 30, может быть нижняя строка (например, строка 35 на ФИГ. 21), содержащая состояния M, и D, где состояния M и I могут быть суммированы (состояния D можно игнорировать на этом этапе, так как они уже выполнили свою функцию при обработке вычислений вверху), чтобы получить конечное суммарное значение, которое может быть единственной вероятностью, оценивающей для каждого индекса рида и гаплотипа вероятность наблюдения рида, например, в предположении, что гаплотип был действительно взят из исходной ДНК.[00333] In such configurations, the truly valuable result of each call to the HMM engine 13, for example, upon completion of the calculation of the entire matrix 30, may be the bottom row (for example, row 35 in FIG. 21) containing the states M, and D, where the states M and I can be summed (the D states can be ignored at this stage since they have already served their function in processing the calculations above) to obtain a final summed value, which can be a single probability estimating for each read index and haplotype the probability of observing the read, e.g. , assuming that the haplotype was actually taken from the original DNA.

[00334] В частности, результатом обработки матрицы 30, например, изображенной на ФИГ. 7, может быть одно значение, представляющее вероятность того, что рид является фактическим представлением данного гаплотипа. Эта вероятность представляет собой значение между 0 и 1 и получается путем суммирования всех состояний M и I с нижней строки ячеек в матрице 30 HMM. По существу оценивается именно возможность того, что произошла какая-то ошибка в секвенаторе или соответствующих методах приготовления ДНК перед секвенированием, приведшая к неправильному возникновению несовпадения, инсерции или делеции в риде, в действительности отсутствующих в генетической последовательности субъекта. В таком случае рид не является истинным отражением фактической ДНК субъекта.[00334] In particular, the result of processing the matrix 30, for example, shown in FIG. 7, there may be a single value representing the probability that a read is an actual representation of a given haplotype. This probability is a value between 0 and 1 and is obtained by summing all M and I states from the bottom row of cells in the 30 HMM matrix. Essentially, what is being assessed is the possibility that some error occurred in the sequencer or in the associated DNA preparation methods prior to sequencing, resulting in the incorrect occurrence of a mismatch, insertion, or deletion in the read that is not actually present in the subject's genetic sequence. In such a case, the read is not a true reflection of the subject's actual DNA.

[00335] Следовательно, учитывая такие производственные ошибки, можно определять, что в действительности представляет любой данный рид относительно гаплотипа, что позволяет системе лучше определять, как генетическая последовательность субъекта, например, в целом, может отличаться от референсной последовательности. Например, можно сравнивать множество гаплотипов с множеством последовательностей считывания, формируя оценки для всех них и определяя на основе того, какие совпадения имеют лучшие оценки, какова действительная идентичности геномной последовательности индивида, и/или как она в действительности отличается от референсного генома.[00335] Therefore, by accounting for such production errors, it is possible to determine what any given read actually represents relative to the haplotype, allowing the system to better determine how a subject's genetic sequence, for example, as a whole, may differ from the reference sequence. For example, one can compare multiple haplotypes to multiple read sequences, generating scores for all of them and determining, based on which hits have the best scores, what the actual identity of an individual's genomic sequence is, and/or how it actually differs from the reference genome.

[00336] Более конкретно, на ФИГ. 8 изображена увеличенная часть матрицы 30 состояний HMM, показанной на ФИГ. 7. Как показано на ФИГ. 8, при данном внутреннем составе каждой ячейки в матрице 30, как и структуре матрицы в целом, вероятность состояний M, I и D для любой данной «новой» вычисляемой ячейки зависит от состояний M, I и D нескольких окружающих ее соседей, которые уже вычислены. В частности, как более подробно показано на ФИГ. 1 и 16, в примере конфигурации вероятность переход из состояния совпадения в другое состояние совпадения может составлять приблизительно 0,9998, а вероятность перехода из состояния совпадения в состояние инсерции или делеции, например, с гэпом, (штраф на открытие гэпа) составляет только 0,0001. Кроме того, при пребывании в состоянии гэпа вследствие инсерции или в состоянии гэпа вследствие делеции вероятность остаться в состоянии гэпа (штраф на продление или продолжение) может составлять лишь 0,1, тогда как вероятность возврата в состояние совпадения составляет 0,9. Необходимо отметить, что в соответствии с этой моделью все вероятности входа в данное состояние или выхода из него в сумме должны давать единицу. В частности, обработка матрицы 30 вращается вокруг вычисления вероятностей перехода с учетом различных штрафом на открытие гэпа или продолжение гэпа, в конце вычисляют сумму.[00336] More specifically, in FIG. 8 is an enlarged view of the HMM state matrix 30 shown in FIG. 7. As shown in FIG. 8, given the internal composition of each cell in matrix 30, as well as the structure of the matrix as a whole, the probability of states M, I and D for any given “new” calculated cell depends on the states M, I and D of several surrounding neighbors that have already been calculated . In particular, as shown in more detail in FIG. 1 and 16, in the configuration example, the probability of transitioning from a match state to another match state may be approximately 0.9998, and the probability of transitioning from a match state to an insertion or deletion state, such as a gap, (penalty for opening a gap) is only 0. 0001. In addition, when in a gap state due to an insertion or in a gap state due to a deletion, the probability of remaining in the gap state (extension or continuation penalty) may be only 0.1, while the probability of returning to the match state is 0.9. It should be noted that, in accordance with this model, all probabilities of entering or exiting a given state must add up to one. In particular, the processing of matrix 30 revolves around calculating the transition probabilities, taking into account the various penalties for opening a gap or continuing a gap, finally calculating the sum.

[00337] Следовательно, эти вычисленные вероятности перехода в состояния получают главным образом их непосредственно примыкающих ячеек в матрице 30, например, из ячеек, которые находятся непосредственно слева, сверху и слева по диагонали от данной вычисляемой ячейки, как показано на ФИГ. 16. Кроме того, вероятности перехода в состояния могут частично получать из оценки качества «Phred», которая прилагается к каждому основанию рида. Поэтому данные вероятности перехода полезны при вычислении значений состояний M, I и D для конкретной ячейки и, аналогичным образом, для любой связанной новой вычисляемой ячейки. Необходимо отметить, что, как описано в настоящем документе, штрафы на открытие гэпа и продолжение гэпа могут быть фиксированными значениями, однако в различных случаях штрафы на открытие гэпа и продолжение гэпа могут быть переменными и, следовательно, могут быть запрограммированы в системе, хотя и с использованием дополнительных аппаратных ресурсов, специально предназначенных для определения таких расчетов переменной вероятности перехода. Такие случаи могут быть полезны, если требуется повышенная точность. Тем не менее, когда такие значения предполагаются постоянными, можно уменьшить использование ресурсов и/или размер микросхемы, что приводит к повышению скорости обработки, как объяснено ниже.[00337] Therefore, these calculated state transition probabilities are derived primarily from their immediately adjacent cells in the matrix 30, for example, from the cells that are immediately to the left, above, and diagonally to the left of a given calculated cell, as shown in FIG. 16. Additionally, state transition probabilities can be derived in part from the “Phred” quality score that is attached to each read base. Therefore, these transition probabilities are useful in calculating the values of the M, I, and D states for a particular cell and, similarly, for any associated new cell being calculated. It should be noted that, as described herein, the gap opening and gap continuation penalties may be fixed values, however, in various cases, the gap opening and gap continuation penalties may be variable and therefore can be programmed into the system, albeit with using additional hardware resources specifically designed to determine such variable transition probability calculations. Such cases can be useful if increased accuracy is required. However, when such values are assumed constant, it is possible to reduce resource usage and/or chip size, resulting in increased processing speed, as explained below.

[00338] Соответственно, при получении каждого нового значения состояния M, I и D используют множество вычислений и/или других математических операций, таких как умножения и/или сложения. В таком случае, чтобы максимально увеличить пропускную способность вычисления, примитивные математические операции, используемые при каждом вычислении состояния перехода M, I и D, можно организовать в виде конвейера. Такая конвейерная организация может быть выполнена таким образом, чтобы соответствующие тактовые частоты были высокими, но при этом глубина конвейера могла быть нетривиальной. Кроме того, такой конвейер можно выполнить таким образом, чтобы он имел конечную глубину, и в таких случаях для выполнения операций может потребоваться более одного тактового цикла.[00338] Accordingly, when each new state value is obtained, M, I, and D use a variety of calculations and/or other mathematical operations, such as multiplications and/or additions. In such a case, to maximize computational throughput, the primitive mathematical operations used in each computation of the transition state M, I, and D can be organized as a pipeline. Such pipeline organization can be designed in such a way that the corresponding clock frequencies are high, but the depth of the pipeline can be non-trivial. Additionally, such a pipeline can be designed to have a finite depth, and in such cases, operations may require more than one clock cycle to complete.

[00339] Например, эти вычисления могут выполняться при высоких скоростях внутри процессора 7, например, около 300 МГц. Этого можно достичь путем тщательной конвейерной организации FPGA или ASIC с помощью регистров, чтобы между каждым триггерным переключением производилось мало математических операций. Эта структура конвейера приводит к множеству циклов задержки при переходе от ввода состояния совпадения до вывода, но при данной обратной диагональной структуре вычисления, показанной на ФИГ. 7 выше, эти задержки могут быть скрыты по всей матрице 30 HMM, например, когда каждая ячейка представляет один тактовый цикл.[00339] For example, these calculations may be performed at high speeds within processor 7, such as about 300 MHz. This can be achieved by carefully pipelining the FPGA or ASIC using registers so that little math is done between each flip-flop switch. This pipeline structure results in multiple latency cycles from match state input to output, but given the reverse diagonal computation structure shown in FIG. 7 above, these delays may be hidden throughout the HMM matrix 30, for example, when each cell represents one clock cycle.

[00340] Следовательно, количество вычислений состояний M, I и D может быть ограничено. В таком случае движок 13 обработки может быть выполнен таким образом, чтобы группировка, например, полоса 35 захвата, ячеек во множестве строк матрицы 30 могла быть обработана как группа (например, по диагонали вниз влево, как показано на ФИГ. 7), прежде чем переходить к обработке второй полосы захваты ниже, например, когда вторая полоса захвата содержит такое же количество подлежащих обработке ячеек в строках, что и первая. Подобным образом аппаратная реализация ускорителя 8, описанная в настоящем документе, может быть выполнена с возможностью повышения общей эффективности системы, как описано выше.[00340] Therefore, the number of calculations of the M, I and D states may be limited. In such a case, the processing engine 13 may be configured such that a grouping, e.g., capture strip 35, of cells in a plurality of rows of the matrix 30 may be processed as a group (e.g., diagonally down to the left, as shown in FIG. 7) before proceed to processing the second stripe of captures below, for example, when the second stripe of capture contains the same number of cells in rows to be processed as the first. Likewise, the hardware implementation of accelerator 8 described herein may be configured to improve overall system efficiency as described above.

[00341] В частности, на ФИГ. 9 показан пример вычислительной структуры для выполнения различных вычислений состояний, описанных в настоящем документе. Более конкретно, на ФИГ. 9 показаны три специализированных логических блока 17 движка 13 обработки для производства вычислений состояний, используемых при формировании каждого значения состояния M, I и D для каждой конкретной ячейки или группировки ячеек, обрабатываемой в матрице 30 HMM. Эти логические блоки могут быть реализованы в аппаратном обеспечении, но в некоторых случаях могут быть реализованы в программном обеспечении, например, выполняемом одной или более квантовыми схемами. Как показано на ФИГ. 9, вычисление 15a состояния совпадения задействует больше операций, чем вычисления 15b инсерции или 15c делеции, поскольку при вычислении 15a состояния совпадения текущей обрабатываемой ячейки текущее вычисление совпадения включает в себя все предыдущие состояния совпадения, инсерции и делеции примыкающих ячеек наряду с различными данными «Prior» (см. ФИГ. 9 и 10), тогда как вычисления состояний инсерции и делеции включают в себя только состояния совпадения и либо инсерции, либо делеции, соответственно. Поэтому, как показано на ФИГ. 9, при вычислении состояния совпадения используют три умножителя состояний, а также два сумматора и, наконец, конечный умножитель, который учитывает значение Prior, например, Phred. Однако при вычислении состояния I или D задействуют только два умножителя и один сумматор. Следует отметить, что в аппаратном обеспечении умножители более ресурсоемкие, чем сумматоры.[00341] Specifically, in FIG. 9 shows an example of a computational structure for performing various state computations described herein. More specifically, in FIG. 9 shows three dedicated logic blocks 17 of the processing engine 13 for performing state calculations used in generating each state value M, I and D for each specific cell or grouping of cells processed in the HMM matrix 30. These logic blocks may be implemented in hardware, but in some cases may be implemented in software, such as those executed by one or more quantum circuits. As shown in FIG. 9, the match state calculation 15a involves more operations than the insertion or deletion calculations 15b 15b because when the match state of the currently processed cell is calculated 15a, the current match calculation includes all previous match, insertion and deletion states of the adjacent cells along with various "Prior" data. (see FIGS. 9 and 10), while calculations of insertion and deletion states include only match and either insertion or deletion states, respectively. Therefore, as shown in FIG. 9, when calculating the match state, three state multipliers are used, as well as two adders and, finally, a final multiplier that takes into account the Prior value, for example, Phred. However, when calculating the I or D state, only two multipliers and one adder are used. It should be noted that in hardware, multipliers are more resource intensive than adders.

[00342] Соответственно, в различной степени значения состояний M, I и D для обработки каждой новой ячейки в матрице 30 HMM используют знание или предварительное вычисление следующих значений, таких как «предыдущие» значения состояний M, I и D слева, сверху и/или по диагонали слева и выше текущей вычисляемой ячейки в матрице HMM. Кроме того, такие значения, представляющие предыдущую информацию или значения «Prior», могут быть, по меньшей мере частично, основаны на оценке качества «Phred» и зависеть от того, совпадают ли основание рида и основание референса в данной ячейке в матрице 30, или они разные. Такая информация особенно полезна при определении состояния совпадения. А именно, как показано на ФИГ. 9, в таких случаях в основном существуют семь «вероятностей перехода» (из M в M, из I в M, из D в M, из I в I, из M в I, из D в D и из M в D), которые указывают и/или оценивают вероятность наблюдения открытия гэпа, например, наблюдения перехода из состояния соответствия в состояние инсерции или делеции; наблюдения закрытия гэпа, например, перехода из состояния инсерции или делеции обратно в состояние совпадения; и наблюдения следующего состояния, остающегося в прежнем состоянии, например, из соответствия в соответствие, из инсерции в инсерцию, из делеции в делецию.[00342] Accordingly, to varying degrees, the values of the M, I, and D states to process each new cell in the HMM matrix 30 use knowledge or pre-computation of the following values, such as the “previous” values of the M, I, and D states to the left, top, and/or diagonally to the left and above the current calculated cell in the HMM matrix. In addition, such values representing previous information or "Prior" values may be based at least in part on the "Phred" quality score and depend on whether the read base and the reference base are the same in a given cell in matrix 30, or they are different. This information is especially useful in determining the match status. Namely, as shown in FIG. 9, in such cases, there are basically seven "transition probabilities" (from M to M, from I to M, from D to M, from I to I, from M to I, from D to D and from M to D), which indicate and/or estimate the probability of observing a gap opening, for example, observing a transition from a match state to an insertion or deletion state; observing the closure of a gap, for example, the transition from an insertion or deletion state back to a match state; and observing the next state remaining in the same state, for example, from match to match, from insertion to insertion, from deletion to deletion.

[00343] Значения состояния (например, в любой ячейке, подлежащей обработке в матрице 30 HMM), значения Prior и вероятности перехода являются значениями в диапазоне[00343] State values (e.g., in any cell to be processed in the HMM matrix 30), Prior values, and transition probabilities are values in the range

[0,1]. Кроме того, известны также начальные условия для ячеек, которые находятся слева и правя по краям матрицы 30 HMM. Как видно из логики 15a на ФИГ. 9, существуют четыре операции умножения и две операции сложения, которые могут быть использованы при вычислении конкретного состояния M, определяемого для любой данной обрабатываемой ячейки. Аналогичным образом, как видно из логик 15b и 15c, при вычислении каждого состояния I и каждого состояния D, соответственно, используют два умножения и одно сложение. В совокупности вместе с умножителем предварительных данных это дает в сумме восемь операций умножения и четыре операции сложения для вычислений состояний M, I и D каждой одной ячейки матрицы 30 HMM, подлежащей обработке.[0,1]. In addition, the initial conditions for the cells that are on the left and right along the edges of the 30 HMM matrix are also known. As can be seen from logic 15a in FIG. 9, there are four multiplication operations and two addition operations that can be used in computing the particular state M determined for any given cell being processed. Similarly, as seen in Logics 15b and 15c, the computation of each state I and each state D, respectively, involves two multiplications and one addition. Together with the pre-data multiplier, this results in a total of eight multiplications and four additions for computing the M, I and D states of each single cell of the HMM matrix 30 to be processed.

[00344] Результат заключительного суммирования, например, строки 34 на ФИГ. 16, вычисления матрицы 30, например, для одного задания 20 сравнения одного рида с одним или двумя гаплотипами, представляет собой сумму окончательных состояний M и I по всей нижней строке 34 матрицы 30, которая является суммарным окончательным значением, выводимым из ускорителя 8 HMM и подаваемым в ЦПУ/ГПУ/КПУ 1000. Данное окончательное суммарное значение представляет, насколько хорошо рид совпадает с гаплотипом (-ами). Это значение является вероятностью, например, меньше единицы, для отдельного задания 20a, которая затем может быть сравнена с выходным результатом другого задания 20b, например, относящегося к той же самой активной области 500. Следует отметить, что существуют порядка 20 триллионом ячеек HMM, которые нужно оценить в «типичном» геноме человека с 30-кратным покрытием, причем эти 20 триллионов ячеек HMM распределены по от 1 до 2 миллиардов матриц 30 HMM всего соответствующего задания 20 HMM.[00344] The result of the final summation, for example, line 34 in FIG. 16, the calculation of matrix 30, for example, for one comparison job 20 of one read with one or two haplotypes, is the sum of the final states M and I across the entire bottom row 34 of matrix 30, which is the total final value output from HMM accelerator 8 and supplied in CPU/GPU/GPU 1000. This final total represents how well the read matches the haplotype(s). This value is a probability, for example, less than one, for a particular job 20a, which can then be compared with the output of another job 20b, for example, belonging to the same active region 500. It should be noted that there are on the order of 20 trillion HMM cells that needs to be estimated in a "typical" human genome with 30-fold coverage, with these 20 trillion HMM cells distributed across 1 to 2 billion 30 HMM matrices of the entire corresponding 20 HMM job.

[00345] После этого результаты таких вычислений могут быть сравнены друг с другом, чтобы более точно определить, например, путем сравнения оснований одного за другим, как генетическая последовательность субъекта отличается от последовательности одного или более референсных геномов. Для заключительного вычисления суммы можно повторно использовать сумматор, который уже применялся для вычисления состояний M, I и/или D отдельных ячеек, чтобы вычислить окончательное суммарное значение, например, путем включения мультиплексора в выбор повторно используемых сумматоров, тем самым включая одну последнюю дополнительную строку, например, к времени вычисления, в матрицу, чтобы она вычисляла эту окончательную сумму, что в случае рида длиной в 100 оснований приводит к непроизводственным затратам ресурсов около 1%. В альтернативных вариантах реализации для выполнения таких вычислений можно использовать специально предназначенные аппаратные ресурсы. В различных случаях логика сумматоров для вычислений состояний M и D может быть использована для вычисления окончательной суммы, причем сумматор состояния D может быть эффективно применен таким образом, чтобы он не использовался иным образом в заключительной обработке, приводящей к суммарным значениями.[00345] The results of such calculations can then be compared with each other to more accurately determine, for example by comparing bases one by one, how the subject's genetic sequence differs from the sequence of one or more reference genomes. For the final sum calculation, it is possible to reuse the adder that has already been used to calculate the M, I and/or D states of the individual cells to calculate the final sum value, for example by including a multiplexer in the selection of reused adders, thereby including one final additional row, for example, to the computation time, into the matrix so that it calculates this final sum, which in the case of a read of 100 bases in length leads to a resource overhead of about 1%. In alternative implementations, dedicated hardware resources may be used to perform such calculations. In various cases, the adder logic for calculating states M and D can be used to calculate the final sum, and the adder of state D can be effectively applied so that it is not otherwise used in the final processing leading to the total values.

[00346] В определенных случаях эти вычисления и соответствующие процессы могут быть выполнены с возможностью соответствия выходу данной платформы секвенирования, например, содержащей множество секвенаторов, который в совокупности могут быть в состоянии вывода (в среднем) нового генома человека с 30-кратным покрытием каждые 28 минут (хотя они выходят из множества секвенаторов группами примерно по 150 геномов раз в три дня), В таких случаях, когда текущие операции картирования, выравнивания и определения вариантов выполнены с возможностью вписывания в такую платформу секвенирования технологий обработки, часть из 28 минут (например, около 10 минут), которую занимает секвенирование генома кластером секвенирования, может быть использована соответствующим образом сконфигурированным средством картирования и/или выравнивателем, как описано в настоящем документе, для получения результаты файла изображения /BCL/FASTQ из секвенатора и выполнения этапов картирования и/или выравнивания генома, например, последующей обработки после секвенатора. В результате остается около 18 минут периода времени секвенирования для выполнения этап определения вариантов, основной вычислительной частью которого является операция HMM, например, до того, как секвенатор нуклеотидов секвенирует следующий геном, например, в течение следующих 28 минут. Соответственно, в таких случаях 18 минут могут быть выделены на вычисление 20 триллионов ячейке HMM, которые нужно обработать в соответствии с обработкой генома, например, когда обработка ячеек HMM включают в себя около двенадцати операций (например, восемь операций умножения и/или четыре операции сложения). Такая пропускная способность делает возможной следующую вычислительную динамику (20 триллионов ячеек HMM) × (12 математических операций на ячейку)/(18 минут × 60 секунд/минуту), что дает пропускную способность около 222 миллиардов операций в секунду при непрерывной работе.[00346] In certain cases, these calculations and associated processes may be capable of matching the output of a given sequencing platform, for example, containing multiple sequencers, which collectively may be able to output (on average) a new human genome with 30-fold coverage every 28 minutes (although they emerge from multiple sequencers in groups of about 150 genomes every three days), In such cases, where ongoing mapping, alignment, and variant identification operations are made to fit into such a sequencing processing technology platform, part of the 28 minutes (e.g. approximately 10 minutes) that it takes to sequence a genome by a sequencing cluster can be used by a suitably configured mapper and/or aligner as described herein to obtain the /BCL/FASTQ image file results from the sequencer and perform the mapping and/or alignment steps genome, for example, post-processing after the sequencer. This leaves about 18 minutes of sequencing time to perform the variant detection step, the main computational part of which is the HMM operation, for example, before the nucleotide sequencer sequences the next genome, for example, within the next 28 minutes. Accordingly, in such cases, 18 minutes can be allocated to calculate the 20 trillion HMM cells that need to be processed according to the genome processing, for example, when the HMM cell processing involves about twelve operations (for example, eight multiplication operations and/or four addition operations ). This throughput enables the following computational dynamics (20 trillion HMM cells) × (12 math operations per cell)/(18 minutes × 60 seconds/minute), which gives a throughput of about 222 billion operations per second when running continuously.

[00347] На ФИГ. 10 показаны логические блок 17 движка обработки, приведенного на ФИГ. 9, в том числе схемы обновления состояний M, I и D, которые представляют упрощение схемы, приведенной на ФИГ. 9. Система может быть выполнена с возможностью неограничения памяти, чтобы один экземпляр 13 движка HMM (например, который вычисляет все одиночные ячейки в матрице 30 HMM со скоростью одна ячейка за тактовый цикл, в среднем, плюс непроизводственные затраты ресурсов) мог быть дублирован множество раз (по меньшей мере 65~70 раз, чтобы добиться эффективной пропускной возможности, как описано выше). Тем не менее, чтобы свести к минимуму размер аппаратного обеспечения, например размер микросхемы 2 и/или использование связанных с ней ресурсов и/или предпринять дальнейшую попытку включить на микросхему 2 столько экземпляров 13 движка HMM, сколько требуется и/или возможно, можно внести упрощения в логические блоки 15a'-c' экземпляра обработки 13 для вычисления одной или более вероятностей перехода, которые нужно вычислить.[00347] In FIG. 10 shows the logical block 17 of the processing engine shown in FIG. 9, including M, I and D state update circuits, which are a simplification of the circuit shown in FIG. 9. The system may be configured to have unlimited memory such that a single instance of the HMM engine 13 (for example, which computes all single cells in the HMM matrix 30 at a rate of one cell per clock cycle, on average, plus resource overhead) can be duplicated multiple times. (at least 65~70 times to achieve effective throughput as described above). However, to minimize the size of the hardware, such as the size of chip 2 and/or the use of associated resources, and/or to further attempt to include as many instances of the HMM engine 13 on chip 2 as required and/or possible, simplifications can be made to logic blocks 15a'-c' of processing instance 13 to calculate one or more transition probabilities to be calculated.

[00348] В частности, можно предположить, что штраф на открытие гэпа (GOP) и штраф на продолжение гэпа (GCP), как описано выше, например, для инсерций и делеций, одинаковые и известны заранее конфигурации микросхемы. Данное упрощение означает, что вероятности перехода из I в M и из D в M идентичны. В таком случае один или более умножителей, например, показанных на ФИГ. 9, могут быть устранены, например, предварительным сложением состояний I и D перед умножением на общую вероятность перехода из индела в M. Например, в различных вариантах, если вычисления состояний I и D предполагаются одинаковыми, то вычисления состояний для ячейки можно упростить, как показано на ФИГ. 10. В частности, если значения состояний I и D одинаковые, то состояние I и состояние D можно сложить, а затем сумму умножить на одно значение, тем самым сэкономив умножение. Это можно сделать, поскольку, как показано на ФИГ. 10, штраф на продолжение и/или закрытие гэпа для состояний I и D одинаковые. Однако, как указано выше, система может быть выполнена с возможностью вычисления разных значений вероятностей переходов для обоих состояний I и D, и в таком случае данное упрощение не будет использоваться.[00348] In particular, it can be assumed that the gap opening penalty (GOP) and the gap continuation penalty (GCP), as described above, for example, for insertions and deletions, are the same and the chip configurations are known in advance. This simplification means that the probabilities of transition from I to M and from D to M are identical. In such a case, one or more multipliers, such as those shown in FIG. 9 can be eliminated, for example, by first adding states I and D before multiplying by the total probability of transition from indel to M. For example, in various embodiments, if the calculations of states I and D are assumed to be the same, then the state calculations for the cell can be simplified, as shown in FIG. 10. In particular, if the values of states I and D are the same, then state I and state D can be added and then the sum multiplied by one value, thereby saving the multiplication. This can be done because, as shown in FIG. 10, the penalty for continuing and/or closing the gap for states I and D are the same. However, as stated above, the system may be configured to calculate different transition probabilities for both states I and D, in which case this simplification will not be used.

[00349] Кроме того, в дальнейшем описании вместо того, чтобы специально предназначенная схема или другие вычислительные ресурсы, выполненные определенным образом с возможностью выполнения заключительной операции суммирования внизу матрицы HMM, настоящий ускоритель 8 HMM может быть выполнен с возможностью эффективного присоединения одной или более дополнительных строк к матрице 30 HMM с точки зрения вычислительного времени, например, непроизводственных затрат ресурсов, которое он тратит на выполнение вычисления, и может также быть выполнен с возможностью «одалживать» один или более сумматоров из логики вычисления 15a M-состояния и 15c D-состояния, например, путем мультиплексирования в окончательных суммарных значений в существующие сумматоры по мере надобности для выполнения фактического окончательного вычисления суммирования. В таком случае заключительная логика, включающая блоки логики 15a M-состояния, логики 15b I-состояния и логики 15c D-состояния, которые вместе образуют часть экземпляра 17 MID HMM, может содержать 7 умножителей и 4 сумматора наряду с различным задействуемым мультиплексированием.[00349] Additionally, in the following description, rather than having dedicated circuitry or other computing resources configured in a particular manner to perform a final sum operation at the bottom of the HMM matrix, the present HMM accelerator 8 may be configured to efficiently append one or more additional rows to the HMM matrix 30 in terms of computational time, such as resource overhead, it spends to perform the calculation, and may also be configured to “borrow” one or more adders from the M-state calculation logic 15a and D-state 15c, for example, by multiplexing the final summation values into existing adders as needed to perform the actual final summation calculation. In such a case, the final logic, including blocks of M-state logic 15a, I-state logic 15b, and D-state logic 15c, which together form part of the MID HMM instance 17, may contain 7 multipliers and 4 adders along with the various multiplexing involved.

[00350] Соответственно, на ФИГ. 10 показаны схемы 15a', 15b' и 15c' обновления состояний M, I и D с учетом упрощающих допущений в отношении вероятностей перехода, а также с учетом совместного использования различных ресурсов M, I и/или D, например, ресурсов сумматоров, для заключительных операций суммирования. Кроме того, к блоку вычисления M-состояния может быть добавлен блок задержки в путь M-состояния, как показано на ФИГ. 10. Эта задержка может быть добавлена для компенсации задержек в фактической аппаратной реализации операций умножения и сложения и/или для упрощения логики управления, например, 15.[00350] Accordingly, in FIG. 10 shows circuits 15a', 15b' and 15c' for updating the states of M, I and D, taking into account simplifying assumptions regarding the transition probabilities, and also taking into account the sharing of various resources M, I and/or D, for example, adder resources, for the final summation operations. In addition, a delay block may be added to the M-state calculating block in the M-state path, as shown in FIG. 10. This delay may be added to compensate for delays in the actual hardware implementation of the multiply and add operations and/or to simplify the control logic, e.g. 15.

[00351] Как показано на ФИГ. 9 и 10, эти соответствующие умножители и/или сумматоры могут быть умножителями и сумматорами с плавающей запятой. Однако в различных случаях, как показано на ФИГ. 11, может быть реализована конфигурация логарифмической области, где в такой конфигурации все умножители превращаются в сумматоры. На ФИГ. 12 показано, как выглядели вычисления в логарифмической области, если все умножители превратились бы в сумматоры, например, 15a", 15b" и 15c", как это происходит при использовании вычислительной конфигурации логарифмической области. В частности, вся логика умножителей превращается в сумматор, но сам сумматор превращается или иным образом включает в себя функцию, такую как: f(a,b) = max(a,b) - log2(1+2^(-[a-b])), например, когда логарифмическая часть уравнения может поддерживаться в LUT, глубина и физический размер которой определяются требуемой точностью.[00351] As shown in FIG. 9 and 10, these respective multipliers and/or adders may be floating point multipliers and adders. However, in various cases, as shown in FIG. 11, a logarithmic domain configuration can be implemented, where in such a configuration all the multipliers are converted into adders. In FIG. Figure 12 shows what a log-domain computation would look like if all the multipliers were turned into adders, such as 15a", 15b", and 15c", as happens when using a log-domain computing configuration. In particular, all the multiplier logic turns into an adder, but the adder itself becomes or otherwise includes a function such as: f(a,b) = max(a,b) - log 2 (1+2^(-[ab])), for example when the logarithmic side of the equation can be maintained in a LUT whose depth and physical size are determined by the required accuracy.

[00352] При типичных длинах последовательностей рида и гаплотипа и значениях, обычно наблюдаемых для оценок качества (Phred) и соответствующих вероятностей перехода, требования к динамическому диапазону значений состояний HMM могут быть довольно серьезными. Например, при реализации модуля HMM в программном обеспечении различные задания 20 HMM могут приводить к неполному выполнению, например, при реализации на значениях состояний одинарной (32-битовой) точности с плавающей запятой. Это означает динамический диапазон, который больше 80 степеней 10, и поэтому требует повышения программного обеспечения определения вариантов до работы со значениями состояний двойной (64-битовой) точности с плавающей запятой. Однако полное 64-битовое представление двойной точности с плавающей запятой во многих случаях имеет некоторые отрицательные последствия, например, если должны быть реализован высокоскоростное аппаратное обеспечение, нужно будет повысить требования к памяти и ресурсам вычислительного конвейера, тем самым занимая больше места на микросхеме и/или замедляя согласование по времени. В таких случаях может быть реализовано представление чисел в линейной области только с фиксированной запятой. Тем не менее, требования по динамическому диапазону к значениям состояний в данном варианте реализации делают битовые ширины в определенных обстоятельствах менее желательными. Соответственно, в таких случаях может быть реализовано представление чисел в логарифмической области только с фиксированной запятой, как описано в настоящем документе.[00352] Given the typical read and haplotype sequence lengths and values typically observed for quality scores (Phred) and associated transition probabilities, the dynamic range requirements for HMM state values can be quite severe. For example, when implementing an HMM in software, various HMM jobs 20 may result in incomplete execution, such as when implemented on single precision (32-bit) floating point state values. This means a dynamic range that is greater than 80 powers of 10, and therefore requires upgrading the case detection software to handle double precision (64-bit) floating point state values. However, full 64-bit double-precision floating point representation has some negative consequences in many cases, for example, if high-speed hardware is to be implemented, the memory and compute pipeline resource requirements will need to be increased, thereby taking up more chip space and/or slowing down coordination over time. In such cases, only a fixed point representation of numbers in the linear domain can be implemented. However, the dynamic range requirements on state values in this implementation make bitwidths less desirable in certain circumstances. Accordingly, in such cases, a logarithmic-domain fixed-point-only representation of numbers may be implemented, as described herein.

[00353] В такой схеме, как показано на ФИГ. 11, вместо представления в памяти и вычисления фактического значения состояния может быть представлен -log по основанию 2. Это может дать несколько преимуществ, в том числе использование операций умножения в линейном пространстве, которое переводит в операции сложения в логарифмическое пространстве; и/или данное представление чисел в логарифмической области по своей природе поддерживает более широкий динамический диапазон лишь при небольшом увеличении количества целочисленных битов. Эти вычисления обновлений состояний M, I, D в логической области показаны на ФИГ. 11 и 12.[00353] In such a circuit as shown in FIG. 11, instead of representing in memory and computing the actual value of the state, -log in base 2 can be represented. This can provide several advantages, including the use of multiplication operations in linear space, which translates to addition operations in logarithmic space; and/or a given logarithmic domain representation of numbers inherently supports a wider dynamic range with only a small increase in the number of integer bits. These calculations of state updates M, I, D in the logical domain are shown in FIG. 11 and 12.

[00354] Как можно заметить при сравнении конфигурации логики 17 на ФИГ. 11 и ФИГ. 9, операции умножения исчезают в логарифмической области. Вернее, они заменяются операциями сложения, а операции сложения преобразуются в функцию, которая может быть выражена как операция максимума с последующим добавлением поправочного коэффициента, например, посредством LUT, где поправочный коэффициент является функцией от разницы между двумя значениями, суммируемыми в логарифмической области. Такой поправочный коэффициент может быть либо вычислен, либо сформирован из таблицы подстановки. Что эффективнее использовать, вычисление поправочного коэффициента или реализация его с помощью таблицы подстановки, зависит от требуемой точности (битовой ширины) разницы между значениями суммы. Поэтому в конкретных случаях количество битов для представления состояния в логарифмической области может быть примерно от 8 до 12 целочисленных битов плюс от 6 до 24 битов для дробных битов в зависимости от требуемого уровня качества для любой данной реализации. Это означает где-то от 14 до 36 битов всего для представления значения состояния в логарифмической области. Кроме того, было определено, что существуют представления с фиксированной запятой в логарифмической области, которые могут обеспечивать приемлемое качество и приемлемые размер и скорость аппаратного обеспечения.[00354] As can be seen by comparing the configuration of logic 17 in FIG. 11 and FIG. 9, multiplication operations disappear in the logarithmic region. Rather, they are replaced by addition operations, and the addition operations are converted into a function that can be expressed as a maximum operation followed by the addition of a correction factor, for example by means of a LUT, where the correction factor is a function of the difference between two values summed in the logarithmic domain. This correction factor can either be calculated or generated from a lookup table. What is more effective to use, calculating the correction factor or implementing it using a lookup table, depends on the required precision (bit width) of the difference between the sum values. Therefore, in specific cases, the number of bits to represent state in the logarithmic domain may be approximately 8 to 12 integer bits plus 6 to 24 bits for fractional bits, depending on the required level of quality for any given implementation. This means anywhere from 14 to 36 bits total to represent the state value in the logarithmic domain. In addition, it was determined that there are logarithmic domain fixed-point representations that can provide acceptable quality and acceptable hardware size and speed.

[00355] В различных случая для каждого задания 20 HMM обычно обрабатывают одну последовательность рида, что, как было указано, может включать в себя сравнение с двумя последовательностями гаплотипа. Аналогично вышесказанному в отношении памяти гаплотипа, в памяти 18 последовательности рида тоже может быть использована структура с попеременным переключением, чтобы обеспечить различным программно реализованным функциям возможность записи информации нового задания 20b HMM в то время, когда текущее задание 20b все еще выполняется экземпляром 13 движка HMM. Следовательно, в качестве памяти для хранения последовательности рида может потребоваться одна память 1024×32 с двумя портами (например, один порт для записи, один порт для чтения, и/или отдельные тактовые генераторы для портов записи и чтения).[00355] In various cases, each HMM job 20 typically processes one sequence read, which, as stated, may involve comparison to two haplotype sequences. Similar to the above with respect to the haplotype memory, the read sequence memory 18 may also employ a toggled structure to allow various software functions to write the information of the new HMM job 20b while the current job 20b is still being executed by the HMM engine instance 13. Therefore, the memory for storing the read sequence may require one 1024x32 memory with two ports (eg, one write port, one read port, and/or separate clock generators for the write and read ports).

[00356] В частности, как описано выше, в различных случаях архитектура, используемая системой 1 выполнена с возможностью формирования виртуальной матрицы 30 при определении того, совпадает ли данное основание в секвенированном геноме образца с соответствующим основанием в одном или более референсных геномах, где референсный геном теоретически расположен по горизонтальной оси, тогда как секвенированные последовательности, представляющие геном образца, теоретически расположены в порядке убывания вдоль вертикальной оси. Следовательно, при выполнении вычисления HMM движка 13 обработки HMM, который описан в настоящем документе, выполнен с возможностью прохождения этой виртуальной матрицы 30 HMM. Такая обработка может быть изображена как на ФИГ. 7, когда полоса 35 захвата движется по диагонали виз и поперек виртуального массива, выполняя различные вычисления HMM для каждой ячейки виртуального массива, как показано на ФИГ. 8.[00356] In particular, as described above, in various cases, the architecture used by the system 1 is configured to generate a virtual matrix 30 when determining whether a given base in the sequenced genome of a sample matches a corresponding base in one or more reference genomes, where the reference genome is theoretically arranged along the horizontal axis, while the sequenced sequences representing the genome of the sample are theoretically arranged in descending order along the vertical axis. Therefore, when performing an HMM calculation, the HMM processing engine 13, which is described herein, is configured to traverse this virtual HMM matrix 30. Such processing may be depicted as in FIG. 7 as the capture strip 35 moves across the visa diagonal and across the virtual array, performing various HMM calculations for each cell of the virtual array, as shown in FIG. 8.

[00357] Более конкретно, данный теоретический проход подразумевает обработку первой группировки строк ячейки 35a из матрицы 30 во всей ее полноте, например, для всех оснований гаплотипа и рида в пределах группировки, прежде чем переходить вниз к следующей группировке строк 35b (например, к следующей группе оснований рида). В таком случае значения состояний M, I и D для первой группировки сохраняют на нижнем крае этой первоначальной группировки строк, чтобы эти значения состояний M, I и D могли быть затем использованы для подачи верхней строки следующей группировки (полосы захвата) вниз в матрице 30. В различных случаях система 1 может быть выполнена с возможностью обеспечения подачи в ускоритель 8 HMM гаплотипов и/или ридов длиной до 1008, и так как числовое представление использует W-битов для каждого состояния, это вытекает в память размером 1008 слов × W битов для хранения состояний M, I и D.[00357] More specifically, this theoretical pass involves processing the first grouping of rows of cell 35a from matrix 30 in its entirety, for example, for all haplotype bases and reads within the grouping, before moving down to the next grouping of rows 35b (for example, the next read base group). In such a case, the M, I and D state values for the first grouping are stored at the bottom edge of this initial row grouping so that these M, I and D state values can then be used to feed the top row of the next grouping (swap) down in the matrix 30. In various cases, the system 1 may be configured to feed the HMM accelerator 8 haplotypes and/or reads up to 1008 in length, and since the numeric representation uses W-bits for each state, this results in a memory of 1008 words x W-bits for storage states M, I and D.

[00358] Соответственно, как было указано, такая память может быть памятью с одним портом или с двумя портами. Кроме того, может быть также предусмотрена сверхоперативная память уровня кластера, например, для хранения результатов границы полосы захвата. Например, в соответствии с вышеизложенным описанием обсуждаемые памяти уже сконфигурированы для каждого экземпляра 13 движка. В конкретных реализациях HMM множество экземпляров 13a-(n+1) движков могут быть сгруппированы в кластер 11, который обслуживается одним соединением, например, шиной 5 PCIe, с интерфейсом 4 PCIe и 3 DMA посредством 9 CentCom. Чтобы более эффективно использовать полосу пропускания PCIe с помощью существующих функциональных возможностей CentCom 9, можно создать множество экземпляров кластеров 11a-(n+1).[00358] Accordingly, as stated, such a memory may be a single-port memory or a dual-port memory. In addition, cluster-level memory may also be provided, for example to store swath boundary results. For example, in accordance with the above description, the memories discussed are already configured for each engine instance 13. In specific HMM implementations, multiple instances of 13a- (n+1) engines can be grouped into a cluster 11, which is served by a single connection, for example a 5 PCIe bus, with a 4 PCIe and 3 DMA interface via 9 CentCom. To make more efficient use of PCIe bandwidth using existing CentCom 9 functionality, multiple 11a- (n+1) cluster instances can be created.

[00359] Следовательно, в типичной конфигурации в пределах кластера 11n создают где-то от 16 до 64 экземпляров движков 13m, а в типичной реализации модуля 8 HMM на FPGA/ASIC могут быть созданы от одного до четырех кластеров (например, в зависимости от того, является ли это специально предназначенной для HMM FPGA для обработки изображений, или должна ли HMM делить полезную площадь FPGA с секвенатором/сопоставителем/выравнивателем и/или другими модулями, как описано в настоящем документе). В конкретных случаях на уровне кластера 11 в аппаратном обеспечении HMM может быть небольшой объем используемой памяти. Эта память может быть использована в качестве эластичной памяти «первым пришел, первым обслужен» («FIFO») для сбора выходных данных из экземпляра 13 движка HMM в кластере и передачи их на CentCom 9 для дальнейшей передачи обратно в программное обеспечение на ЦПУ 1000 посредством интерфейса 3 DMA и 4 PCIe. Теоретически эта FIFO может быть очень маленькой (порядка двух 32-битовых слов), поскольку, как правило, после поступления FIFO данные почти сразу же передаются в 9 CentCom. Однако для поглощения потенциальных разрывов на пути выходных данных размер этой памяти FIFO может быть параметризуемым. В конкретных случаях FIFO может использоваться с глубиной в 512 слов. Таким образом, требованием к памяти уровня кластера может быть одна память 512×32 с двумя портами (отдельные порты чтения и записи, одна и та же тактовая область).[00359] Therefore, in a typical configuration, anywhere from 16 to 64 engine instances 13 m are created within a cluster 11 n , and in a typical FPGA/ASIC HMM module 8 implementation, anywhere from one to four clusters can be created (e.g., depending whether it is a dedicated HMM FPGA for image processing, or whether the HMM must share the FPGA's usable area with the sequencer/matcher/aligner and/or other modules as described herein). In specific cases at the cluster level 11, the HMM hardware may have a small amount of memory used. This memory can be used as a first-in, first-out (“FIFO”) elastic memory to collect output data from the HMM engine instance 13 in the cluster and transfer it to the CentCom 9 for further transmission back to the software on the CPU 1000 via an interface 3 DMA and 4 PCIe. In theory, this FIFO could be very small (on the order of two 32-bit words), since, as a rule, after the FIFO arrives, the data is transferred almost immediately to 9 CentCom. However, to absorb potential discontinuities in the output data path, the size of this FIFO memory can be parameterized. In specific cases, FIFO can be used with a depth of 512 words. So the cluster level memory requirement could be one 512x32 memory with two ports (separate read and write ports, same clock region).

[00360] На ФИГ. 12 приведены различные переходы 17b состояний HMM, изображающие взаимосвязь между штрафами на открытие гэпа (GOP), штрафами на продление гэпа (GCP) и вероятностями перехода, участвующими в определении того, совпадает ли данная последовательность рида с конкретной последовательностью гаплотипа, и насколько. При выполнении такого анализа движка 13 HMM содержит по меньшей мере три логических блока 17b, таких как логический блок 15a для определения состояния совпадения, логический блок 15b для определения состояния инсерции и логический блок 15c для определения состояния делеции. Эти логики 17 для вычисления состояний M, I и D при надлежащей конфигурации функционируют эффективно во избежание узких мест с широкой полосой пропускания, например, с потоком вычислений HMM. Однако после того, как базовая архитектура вычисления M, I, D определена, можно также сконфигурировать и реализовать другие улучшения системы, чтобы избежать образования других узких мест в системе.[00360] In FIG. Figure 12 shows various HMM state transitions 17b depicting the relationship between gap opening penalties (GOP), gap extension penalties (GCP), and transition probabilities involved in determining whether and how much a given read sequence matches a particular haplotype sequence. When performing such analysis, the HMM engine 13 includes at least three logic blocks 17b, such as a logic block 15a for determining a match state, a logic block 15b for determining an insertion state, and a logic block 15c for determining a deletion state. These logics 17 for calculating M, I and D states, when properly configured, function efficiently to avoid high bandwidth bottlenecks such as the HMM computation flow. However, once the basic M,I,D,computation architecture is defined, other system improvements,can also be configured and implemented to avoid other,system bottlenecks.

[00361] В частности, система 1 может быть выполнена с возможностью максимального повышения эффективности подачи информации из ядра 1000 компьютера в модуль 2 определителя вариантов и обратно, чтобы не создавать узких мест, которые могли бы ограничить общую пропускную способность. Одним из таких блоков, который снабжает логику 17 вычисления состояний M, I, D ядра HMM, является блок вычисления вероятностей перехода и предварительных данных. Например, как показано на ФИГ. 9, каждый тактовый цикл использует представление семи вероятностей перехода и одно значение Prior на входе в блок 15a вычисления состояний M, I, D. Однако после упрощений, которые приводят к архитектуре, приведенной на ФИГ. 10, для каждого цикла на входе блока вычисления состояний M, I, D используются только четыре уникальные вероятности перехода и одно значение Prior. Соответственно, в различных случаях эти расчеты могут быть упрощены и могут быть сформированы результирующие значения. Таким образом достигаются повышение пропускной способности, эффективности и снижение возможности формирования узких мест на этой стадии процесса.[00361] In particular, the system 1 may be configured to maximize the efficiency of information flow from the computer core 1000 to the option determiner module 2 and vice versa, so as not to create bottlenecks that could limit the overall throughput. One of these blocks, which supplies the logic 17 for calculating the states M, I, D of the HMM core, is the block for calculating transition probabilities and preliminary data. For example, as shown in FIG. 9, each clock cycle uses a representation of seven transition probabilities and one Prior value as input to the M, I, D state calculation block 15a. However, after simplifications that lead to the architecture shown in FIG. 10, for each cycle at the input of the block for calculating the states M, I, D, only four unique transition probabilities and one Prior value are used. Accordingly, in various cases these calculations can be simplified and the resulting values can be generated. This results in increased throughput, increased efficiency and reduced potential for bottlenecks at this stage of the process.

[00362] Кроме того, как описано выше, значения Prior являются значениями, формируемыми с использованием качества рида, например, оценки Phred, конкретного основания для текущей оцениваемой ячейки в виртуальной матрице 30 HMM. Эту взаимосвязь можно описать с помощью следующих уравнений: Во-первых, исследуемого рида Phred можно выразить как вероятность = 10^(-(Phred рида/10)). Затем можно вычислить Prior в зависимости от того, совпадает ли основание рида с основанием гипотетического гаплотипа: Если основание рида и основание гипотетического гаплотипа совпадают: Prior = 1 - Phred рида, выраженную как вероятность. В противном случае: Prior = (Phred рида, выраженная как вероятность)/3. Операция деления на три в этом последнем уравнении отражает тот факт, что существуют только четыре возможных основания (A, C, G, T). Следовательно, если основание рида и основание гаплотипа не совпали, значит совпасть должно одно из трех оставшихся оснований, и каждую из трех вероятностей моделируют как одинаково правдоподобную.[00362] Additionally, as described above, Prior values are values generated using the quality of a read, eg, a Phred score, a particular basis for the current cell being evaluated in the virtual HMM matrix 30. This relationship can be described using the following equations: First, the Phred read of interest can be expressed as probability = 10^(-(Phred read/10)). Prior can then be calculated depending on whether the base of the read matches the base of the hypothetical haplotype: If the base of the read and the base of the hypothetical haplotype match: Prior = 1 - Phred of the read, expressed as a probability. Otherwise: Prior = (Phred read expressed as probability)/3. The division by three operation in this last equation reflects the fact that there are only four possible bases (A, C, G, T). Therefore, if the read base and the haplotype base do not match, then one of the three remaining bases must match, and each of the three probabilities is modeled as equally plausible.

[00363] Оценки Phred для каждого основания подают в аппаратный ускоритель 8 HMM в виде 6-битовых значений. Поэтому уравнения для значений Prior имеют 64 возможных результата для случая «совпадение» и 64 возможных результата для случая «несовпадение». Это можно эффективно реализовать в аппаратном обеспечении в виде таблицы подставки размером в 128 слов, где адрес в таблице подстановки представляет собой 7-битовую величину, образованную путем конкатенации значения Phred с одним битом, который указывает, совпадает ли основание рида с основание гипотетического гаплотипа или нет.[00363] The Phred scores for each base are provided to the HMM hardware accelerator 8 as 6-bit values. Therefore, the equations for Prior values have 64 possible results for the “match” case and 64 possible results for the “mismatch” case. This can be effectively implemented in hardware as a 128-word lookup table, where the lookup table address is a 7-bit value formed by concatenating the Phred value with a single bit that indicates whether the base of the read matches the base of the hypothetical haplotype or not .

[00364] Кроме того, что касается определения вероятностей перехода совпадения в инсерцию и/или совпадения в делецию, в различных вариантах реализации архитектуры для аппаратного ускорителя 8 HMM можно определить отдельные штрафы на открытие гэпа (GOP) для перехода состояния из совпадения в инсерцию и перехода из совпадения в делецию, как указано выше. Это равносильно тому, что значениям M2I и M2D на диаграмме переходов состояний, изображенной на ФИГ. 12, различаются. Поскольку значения GOP получают из аппаратного ускорителя 8 HMM в виде 6-битовых значений типа Phred, вероятности перехода в состояние открытия гэпа могут быть вычислены в соответствии со следующими уравнениями: Вероятность перехода M2I = 10^(-(GOP(I) рида/10)) и вероятность перехода M2D = 10^(-(GOP(D) рида/10)). Аналогично получению значений Prior в аппаратном обеспечении для получения значений M2I и M2D можно использовать простую таблицу подставки размером в 64 слова. Если GOP(I) и GOP(D) вводят в аппаратный ускоритель 8 HMM как потенциально разные значения, то можно использовать две такие таблицы подстановки (или одну таблицу подстановки с совместным использованием ресурсов, потенциально работающую с удвоенной тактовой частотой по сравнению с остальной схемы).[00364] Additionally, with respect to determining the probabilities of a match-to-insertion and/or match-to-deletion transition, in various architecture implementations for the HMM hardware accelerator 8, separate gap opening penalties (GOP) can be defined for the match-to-insertion state transition and transition from match to deletion as above. This is equivalent to the fact that the values of M2I and M2D in the state transition diagram shown in FIG. 12, vary. Since the GOP values are obtained from the 8 HMM hardware accelerator as 6-bit Phred values, the transition probabilities to the gap open state can be calculated according to the following equations: Transition probability M2I = 10^(-(GOP(I) read/10) ) and transition probability M2D = 10^(-(GOP(D) read/10)). Similar to retrieving Prior values in hardware, a simple 64-word standby table can be used to obtain M2I and M2D values. If GOP(I) and GOP(D) are fed into the hardware accelerator 8 HMM as potentially different values, then two such lookup tables can be used (or one resource-sharing lookup table, potentially running at twice the clock speed of the rest of the circuit) .

[00365] Кроме того, что касается определения вероятностей перехода совпадения в совпадение, в различных случаях вероятность перехода из совпадения в совпадение можно вычислить следующим образом: Вероятность перехода M2M = 1 - (вероятность перехода M2I + вероятность перехода M2D). Если вероятности перехода M2I и M2D могут быть сконфигурированы так, чтобы быть меньшими или равными значению ½, то в различных вариантах реализации приведенное выше уравнение может быть реализовано в аппаратном оборудовании таким образом, чтобы повысить общую эффективность и пропускную способность, например за счет переработки уравнения: Вероятность перехода M2M = (0,5 - вероятность перехода M2I) + (0,5 - вероятность перехода M2D). Эта перезапись уравнения позволяет получать M2M с использованием двух 64-элементных таблиц подстановки с последующим сумматором, где таблицы подстановки хранят результаты.[00365] In addition, regarding the determination of match-to-match transition probabilities, in various cases, the match-to-match transition probability can be calculated as follows: M2M transition probability = 1 - (M2I transition probability + M2D transition probability). If the M2I and M2D transition probabilities can be configured to be less than or equal to the value of ½, then in various implementations the above equation can be implemented in hardware in a manner that improves overall efficiency and throughput, for example by reworking the equation: M2M transition probability = (0.5 - M2I transition probability) + (0.5 - M2D transition probability). This rewrite of the equation allows M2M to be obtained using two 64-element lookup tables followed by an adder where the lookup tables store the results.

[00366] Более того, что касается определения вероятностей перехода инсерции в инсерцию и/или делеции в делецию, вероятности перехода I2I и D2D являются функциями от значений вероятности продолжения гэпа (GCP), вводимых в аппаратный ускоритель 8 HMM. В различных случаях эти значения GCP могут быть 6-битовыми значениями типа Phred, присваеваемыми каждому основанию рида. Значения I2I и D2D могут быть получены следующим образом: Вероятность перехода I2I = 10^(-(GCP(I) рида/10)) и вероятность перехода D2D = 10^(-(GCP(D) рида/10)). Аналогично некоторым другим вероятностям перехода, рассмотренным выше, значения I2I и D2D могут быть эффективно реализованы в аппаратном обеспечении и могут включать две таблицы подстановки (или одну таблицу подстановки с совместно используемыми ресурсами), например, в той же форме и с таким же контекстом, что и таблицы подставки перехода из совпадения к инделу, рассмотренные выше. То есть, каждая таблица постановки имеет 64 слова.[00366] Moreover, with regard to determining the insertion-to-insertion and/or deletion-to-deletion transition probabilities, the transition probabilities I2I and D2D are functions of the gap continuation probability (GCP) values input into the HMM hardware accelerator 8. In various cases, these GCP values may be 6-bit Phred values assigned to each base of the read. The values of I2I and D2D can be obtained as follows: Transition probability I2I = 10^(-(GCP(I) read/10)) and transition probability D2D = 10^(-(GCP(D) read/10)). Similar to some of the other transition probabilities discussed above, I2I and D2D values can be implemented efficiently in hardware and can include two lookup tables (or one lookup table with shared resources), for example, in the same form and with the same context as and the match-to-indel transition tables discussed above. That is, each staging table has 64 words.

[00367] Кроме того, что касается определения вероятностей перехода инсерции и/или делеции в совпадение, вероятности перехода I2M и D2M являются функциями от значений вероятности продолжения гэпа (GCP), которые можно вычислить следующим образом: Вероятность перехода I2M = 1 - вероятность перехода I2I и вероятность перехода D2M = 1 - вероятность перехода D2D, где вероятности перехода I2I и D2D могут быть получены, как обсуждалось выше. Простая операция вычитания для реализации вышеуказанных уравнений может быть более дорогой по аппаратным ресурсам, чем просто реализация другой состоящей из 64 слов таблицы подстановки и использование двух ее экземпляров для реализации получения I2M и D2M. В таких случаях каждая таблица постановки имеет 64 слова. Конечно, во всех соответствующих вариантах реализации простые и сложные операции могут формироваться с помощью программного обеспечения, сконфигурированного подходящим образом.[00367] In addition, with regard to determining the probabilities of an insertion and/or deletion transitioning into a match, the transition probabilities I2M and D2M are functions of the gap continuation probability (GCP) values, which can be calculated as follows: Transition probability I2M = 1 - transition probability I2I and the transition probability D2M = 1 is the transition probability of D2D, where the transition probabilities I2I and D2D can be obtained as discussed above. A simple subtraction operation to implement the above equations may be more expensive in hardware resources than simply implementing another 64-word lookup table and using two instances of it to implement I2M and D2M retrieval. In such cases, each staging table has 64 words. Of course, in all relevant embodiments, simple and complex operations can be configured using software suitably configured.

[00368] На ФИГ. 13 приведена электрическая схема 17a для упрощенного вычисления вероятностей перехода HMM и значений Prior, как описано выше, которая поддерживает общую диаграмму переходов состояний, изображенную на ФИГ. 12. Как показано на ФИГ. 13, в различных случаях представлена простая архитектура 17a программного ускорителя, причем ускоритель может быть выполнен с возможностью включения отдельных значений GOP для переходов инсерции и делеции и/или в ней могут быть отдельные значения GCP для переходов инсерции и делеции. В таком случае стоимость формирования семи уникальных вероятностей перехода и одного значения Prior за каждый тактовый цикл может быть сконфигурирована таким образом, как указано ниже: восемь таблиц подстановки по 64 слова, одна таблица подстановки на 128 слов и один сумматор.[00368] In FIG. 13 shows a circuit diagram 17a for simplified calculation of HMM transition probabilities and Prior values as described above, which supports the general state transition diagram depicted in FIG. 12. As shown in FIG. 13, in various cases, a simple software accelerator architecture 17a is presented, wherein the accelerator may be configured to include separate GOP values for insertion and deletion transitions and/or may have separate GCP values for insertion and deletion transitions. In such a case, the cost of generating seven unique branch probabilities and one Prior value per clock cycle can be configured as follows: eight 64-word lookup tables, one 128-word lookup table, and one adder.

[00369] Кроме того, аппаратное обеспечение 2, которое представлено в настоящем документе, может быть выполнена с возможностью вмещения стольких экземпляров 13 движка HMM, сколько возможно поместить на целевую микросхему (такую как FPGA, sASIC или ASIC). В таком случае стоимость реализации логики 17a формирования вероятностей перехода и значений Prior может быть существенно снижена относительно стоимостей, которые обеспечиваются приведенными ниже конфигурациями. Во-первых, вместо поддержки более общей версии переходов состояний, таких как показаны на ФИГ. 13, например, где могут быть отдельные значения для GOP(I) и GOP(D), в различных случаях можно предполагать, что значения GOP для инсерции и делеции одинаковые для данного основания. Это приводит к нескольким упрощениям аппаратного обеспечения, как указано выше.[00369] In addition, the hardware 2 that is presented herein may be configured to accommodate as many HMM engine instances 13 as can be placed on a target chip (such as an FPGA, sASIC, or ASIC). In this case, the cost of implementing logic 17a for generating transition probabilities and Prior values can be significantly reduced relative to the costs provided by the configurations below. First, instead of supporting a more general version of state transitions such as those shown in FIG. 13, for example, where there may be separate values for GOP(I) and GOP(D), in different cases it can be assumed that the GOP values for insertion and deletion are the same for a given base. This results in several hardware simplifications as stated above.

[00370] В таких случаях можно использовать только одну таблицу подстановки объемом 64 слова для формирования значения M2Индел, заменяющего оба значения вероятности M2I и M2D, тогда как в более общем случае, как правило, используют две таблицы. Аналогичным образом для формирования значения вероятности перехода M2M можно использовать только одну таблицу подстановки объемом 64 слова, тогда как в общем случае могут использоваться две таблицы и сумматор, поскольку M2M может быть теперь вычислено как 1-2×M2Индел.[00370] In such cases, it is possible to use only one 64-word lookup table to generate an M2Indel value that replaces both the M2I and M2D probability values, whereas in the more general case, two tables would typically be used. Similarly, only one 64-word lookup table can be used to generate the M2M transition probability value, whereas in general two tables and an adder can be used, since M2M can now be calculated as 1-2×M2Indel.

[00371] Во-вторых, можно сделать допущение, что зависимое от секвенатора значение GCP как для инсерции, так и для делеции, одинаковое, И что это значение не изменяется в течение задания 20 HMM. Это означает, что: вместо отдельных значений I2I и D2D можно вычислять одну вероятность перехода из индела в индел с использованием таблицы подстановки объемом 64 слова вместо двух таблиц; и вместо отдельных значений I2M и D2M можно вычислять одну вероятность перехода из индела в совпадение с использованием одной таблицы подстановки объемом 64 слова вместо двух таблиц.[00371] Second, it can be assumed that the sequencer-dependent GCP value for both insertion and deletion is the same, AND that this value does not change during HMM job 20. This means that: instead of separate I2I and D2D values, one indel-to-indel transition probability can be calculated using a 64-word lookup table instead of two tables; and instead of having separate I2M and D2M values, a single indel-to-match probability can be calculated using one 64-word lookup table instead of two tables.

[00372] Кроме того, можно сделать еще одно упрощающее допущение, которое предполагает, что значения из инсерции в инсерцию и из делеции в делецию (I2I и D2D) и от инсерции к совпадению и от делеции к совпадению (I2M и D2M) не только идентичны между переходами инсерции и делеции, но могут быть статическим для конкретного задания 20 HMM. Таким образом, всего в более общей архитектуре с вероятностями перехода I2I, D2D, I2M и D2M можно удалить четыре таблицы подстановки. В различных подобных случаях можно сделать так, чтобы статические вероятности из индела в индел и из индела в совпадение вводились посредством программного обеспечения или через параметр RTL (и чтобы их можно было программировать в двухпотоковом режиме в FPGA). В определенных случаях эти значения могут быть выполнены с возможностью двухпотокового программирования, и в определенных случаях может быть реализован режим тренировки, использующий тренировочную последовательность для дальнейшего улучшения точности вероятности перехода для данного прогона секвенатора или геномного анализа.[00372] In addition, one further simplifying assumption can be made which assumes that the values from insertion to insertion and deletion to deletion (I2I and D2D) and from insertion to match and deletion to match (I2M and D2M) are not only identical between insertion and deletion transitions, but can be static for a specific job 20 HMM. Thus, in a more general architecture with transition probabilities I2I, D2D, I2M, and D2M, a total of four lookup tables can be deleted. In various such cases, it is possible to have the static indel-to-indel and indel-to-match probabilities be entered via software or via an RTL parameter (and so that they can be programmed in dual-threaded mode in the FPGA). In certain cases, these values can be made dual-stream programmable, and in certain cases a training mode can be implemented that uses the training sequence to further improve the accuracy of the transition probability for a given sequencer run or genomic analysis.

[00373] На ФИГ. 14 показано, как может выглядеть диаграмма новой логики 17b перехода состояния при реализации этих различных упрощающих допущений. А именно, на ФИГ. 14 показана упрощенная диаграмма переходов состояния HMM, изображающая взаимосвязи между GOP, GCP и вероятностями перехода с упрощениями, изложенными выше.[00373] In FIG. 14 shows what a diagram of the new state transition logic 17b might look like when these various simplifying assumptions are implemented. Namely, in FIG. 14 shows a simplified HMM state transition diagram depicting the relationships between GOPs, GCPs, and transition probabilities with the simplifications outlined above.

[00374] Аналогичным образом на ФИГ. 15 показана электрическая схема 17a,b для формирования вероятностей перехода и величин Prior HMM, которая поддерживает упрощенную диаграмму переходов состояний, изображенную на ФИГ. 14. На ФИГ 15 приведена реализация схемы данной диаграммы переходов. Таким образом, в различных случаях для аппаратного ускорителя 8 HMM стоимость формирования вероятностей переходов и Prior за каждый тактовый цикл сокращена на: две таблицы подстановки объемом 64 слова, одну таблицу подстановки объемом 128 слов.[00374] Similarly, in FIG. 15 shows a circuit diagram 17a,b for generating transition probabilities and Prior HMM values that supports the simplified state transition diagram depicted in FIG. 14. FIG 15 shows the implementation of the circuit diagram of this transition diagram. Thus, in various cases for the 8 HMM hardware accelerator, the cost of generating transition probabilities and Prior for each clock cycle is reduced by: two lookup tables of 64 words, one lookup table of 128 words.

[00375] Как указано выше, логика 15 управления движка выполнена с возможностью формирования виртуальной матрицы и/или прохода матрицы таким образом, чтобы достигать края полосы захвата, например, посредством высокоуровневых конечных автоматов, где результирующие данные могут быть окончательно суммированы, например, посредством логики 19 управления заключительным суммированием, и сохранены, например посредством логики put/get.[00375] As stated above, the engine control logic 15 is configured to generate a virtual matrix and/or pass the matrix so as to reach the edge of the swath, for example, by means of high-level state machines, where the resulting data can be finally summarized, for example, by means of logic 19 control the final summation, and are stored, for example through put/get logic.

[00376] Соответственно, как показано на ФИГ. 16, в различных вариантах реализации предложен способ создания и/или прохождения матрицы 30 ячеек HMM. А именно, на ФИГ. 16 показан пример того, как логика 15 управления укорителем HMM проходит по виртуальным ячейкам в матрице HMM туда и обратно. Например, предположим для примера, что каждая операция умножения и сложения имеют задержку в 5 тактовых циклов, тогда худшая задержка вычислений обновления состояний M, I, D составит 20 тактовых циклов и будет иметь место при вычислении обновления M. В вычислениях обновления состояния I и D на половину меньше операций, то есть задержка для этих операций составляет 10 тактовых циклов.[00376] Accordingly, as shown in FIG. 16, various embodiments provide a method for creating and/or traversing a matrix of 30 HMM cells. Namely, in FIG. 16 shows an example of how the HMM accelerator control logic 15 traverses back and forth across the virtual cells in the HMM matrix. For example, let's say for example that each multiply and add operation has a latency of 5 clock cycles, then the worst case latency of the M, I, D state update calculations would be 20 clock cycles and would occur in the M update calculation. In the I and D state update calculations half as many operations, meaning the latency for these operations is 10 clock cycles.

[00377] Последствия задержки для операций вычисления M, I и D можно понять с помощь ФИГ. 16, на котором показаны различные примеры зависимостей данных между ячейками. В таких случаях информация о состоянии I, M и D данной ячейки подается в вычисления состояния D ячейки в матрице HMM, которая находится непосредственно справа (т.е. имеет то же самое основание рида, что и данная ячейка, но имеет следующее основание гаплотипа). Аналогичным образом информация о состоянии I, M и D данной ячейки подается в вычисления состояния I ячейки в матрице HMM, которая находится непосредственно ниже (т.е. имеет то же самое основание гаплотипа, что и данная ячейка, но имеет следующее основание рида). Поэтому в конкретных случаях состояния M, I и D текущей ячейки подаются в вычисления состояний D и I ячеек на следующей диагонали матрицы ячеек HMM.[00377] The effects of delay on the M, I, and D calculation operations can be understood using FIG. 16, which shows various examples of data dependencies between cells. In such cases, information about the I, M and D state of a given cell is fed into calculations of the D state of the cell in the HMM matrix that is immediately to the right (i.e. has the same read base as the given cell, but has the next haplotype base) . Likewise, information about the I, M, and D state of a given cell is fed into the computation of the I state of the cell in the HMM matrix that is immediately below (i.e., has the same haplotype base as the given cell, but has the next read base). Therefore, in specific cases, the M, I, and D states of the current cell are fed into the computation of the D and I states of cells on the next diagonal of the HMM cell matrix.

[00378] Аналогичным образом состояния M, I и D данной ячейки подаются в вычисление состояния M ячейки, которая находится справа и снизу (т.е. имеет следующее основание гаплотипа И следующее основание рида). Эта ячейка фактически отдалена на две диагонали от ячейки, которую она снабжает (ввиду того, что вычисления состояний I и D опираются на состояния из ячейки, которая отдалена на одну диагональ). Это качество, когда вычисления состояний I и D, опирающихся на ячейки, отдаленные на одну диагональ, тогда как вычисления состояния M опираются на ячейки, отдаленные на две диагонали, благотворно влияет на разработку аппаратного обеспечения.[00378] Likewise, the M, I, and D states of a given cell are fed into the calculation of the M state of the cell that is to the right and below (i.e., has the next haplotype base AND the next read base). This cell is actually two diagonals away from the cell it supplies (due to the fact that the calculations of states I and D rely on states from a cell that is one diagonal away). This quality of having I and D state computations rely on cells one diagonally distant, while M state computations rely on cells two diagonals distant, has a beneficial effect on hardware design.

[00379] В частности, при таких конфигурациях вычисления состояний I и D могут быть выполнены с возможностью убыстрения вдвое (например, 10 циклов) по сравнению с вычислениями состояния M (например, 20 циклов). Следовательно, если вычисления состояния M начинаются за 10 циклов до вычислений состояний I и D для той же ячейки, то вычисления состояний M, I и D для ячейки в матрице 30 HMM все завершатся одновременно. Кроме того, если проходить матрицу 30 по диагонали так, что полоса 35 захвата содержит примерно 10 ячеек (например, с охватом десяти оснований рида), то: Состояния M и D, создаваемые данной ячейкой в координатах (i, j), где i относится к гаплотипу, а j относится к риду, могут быть использованы в вычислениях состояния D ячейки (i+1, j), как только они пройдут весь вычислительный конвейер ячейки (i, j).[00379] In particular, with such configurations, I and D state calculations can be performed at twice the speed (eg, 10 cycles) compared to M state calculations (eg, 20 cycles). Therefore, if the M state computations begin 10 cycles before the I and D state computations for the same cell, then the M, I, and D state computations for a cell in the 30 HMM matrix will all complete simultaneously. In addition, if the matrix 30 is traversed diagonally such that the capture strip 35 contains approximately 10 cells (for example, covering ten read bases), then: The M and D states created by a given cell at coordinates (i, j), where i refers to the haplotype, and j refers to the read, can be used in the calculations of the state D of cell (i+1, j) as soon as they go through the entire computational pipeline of cell (i, j).

[00380] Состояния M и I, создаваемые данной ячейкой в координатах (i, j), где i относится к гаплотипу, а j относится к риду, могут быть использованы в вычислениях состояния I ячейки (i, j+1) через один тактовый цикл после того, как только они пройдут весь вычислительный конвейер ячейки (i, j). Аналогичным образом состояния M, I и D, создаваемые данной ячейкой в координатах (i, j), где i относится к гаплотипу, а j относится к риду, могут быть использованы в вычислениях состояния M ячейки (i+1, j+1) через один тактовый цикл после того, как только они пройдут весь вычислительный конвейер ячейки (i, j). В своей совокупности вышеизложенное означает, что для состояний M, I и D вдоль диагонали полосы захвата, которая простирается на длину полосы захвата, например, десять оснований, требуется очень маленькая специализированная память. В таком случае требуются лишь регистры для задержки на один тактовый цикл значений M, I и D ячейки (i, j), чтобы использовать их в вычислениях M в ячейке (i+1, j+1) M и в вычислениях I в ячейке (i, j+1) за один тактовый цикл. Более того, все это происходит неким волшебным образом, так как вычисления состояния M для данной ячейки начинаются за 10 тактовых циклов до вычислений состояний I и D для этой же ячейки, что естественным образом приводит к одновременному выводу новых состояний M, I и D для любой данной ячейки.[00380] The M and I states produced by a given cell at coordinates (i, j), where i refers to the haplotype and j refers to the read, can be used in calculating the I state of the cell (i, j+1) after one clock cycle after they have gone through the entire computational pipeline of cell (i, j). Similarly, the states M, I and D produced by a given cell at coordinates (i, j), where i refers to the haplotype and j refers to the read, can be used in calculating the state M of the cell (i+1, j+1) via one clock cycle after they have gone through the entire computational pipeline of cell (i, j). Taken together, the above means that states M, I, and D along a capture stripe diagonal that extends the length of the capture stripe, say ten bases, require very little dedicated memory. In such a case, only registers are required to delay by one clock cycle the values M, I and D of cell (i, j) for use in the calculations of M in cell (i+1, j+1) M and in the calculations of I in cell ( i, j+1) in one clock cycle. Moreover, all this happens in some magical way, since the calculation of the M state for a given cell begins 10 clock cycles before the calculation of the I and D states for the same cell, which naturally leads to the simultaneous output of new states M, I and D for any of this cell.

[00381] Ввиду вышеизложенного, и как показано на ФИГ. 16, логика 15 управления ускорителем HMM может быть выполнена с возможностью обработки данных в каждой ячейке виртуальной матрицы 30 с прохождением матрицы. В частности, в различных вариантах реализации операции начинаются в ячейке (0,0), причем вычисления состояния M начинаются за 10 тактовых циклов до начала вычислений состояний I и D. Следующей ячейкой должна быть ячейка (1,0). Однако результаты вычислений состояний I и D из ячейки (0,0) будут доступны с задержкой в десять циклов после их начала. Поэтому аппаратное обеспечение вставляет девять «мертвых» циклов в вычислительный конвейер. Это показано в виде ячеек с индексом гаплотипа ниже нуля на ФИГ. 16.[00381] In view of the above, and as shown in FIG. 16, the HMM accelerator control logic 15 may be configured to process data in each cell of the virtual traversal matrix 30. Specifically, in various implementations, operations begin at cell (0,0), with computations of state M beginning 10 clock cycles before computations of states I and D begin. The next cell should be cell (1,0). However, the results of the calculations of states I and D from cell (0,0) will be available with a delay of ten cycles after they begin. Therefore, the hardware inserts nine dead cycles into the computation pipeline. This is shown as cells with a haplotype index below zero in FIG. 16.

[00382] По завершении мертвого цикла, который имеет эффективную позицию ячейки в матрице (-9,-9), значения состояний M, I и D для ячейки (0,0) доступны. После этого они (например, выводы состояний M и D ячейки (0,0)) могут быть сразу же использованы для вычислений состояния D ячейки (0,1). Спустя один тактовый цикл значения состояний M, I и D из ячейки (0,0) могут быть использованы для начала вычислений состояния I ячейки (0,1) и вычислений состояния M ячейки (1,1).[00382] Upon completion of a dead cycle that has an effective cell position in the matrix (-9,-9), the M, I, and D state values for cell (0,0) are available. After this, they (for example, the outputs of the M and D states of cell (0,0)) can be immediately used to calculate the D state of cell (0,1). After one clock cycle, the M, I, and D state values from cell (0,0) can be used to begin calculations of the I state of cell (0,1) and calculations of the M state of cell (1,1).

[00383] Следующей ячейкой для прохождения может быть ячейка (2,0). Однако результаты вычислений состояний I и D из ячейки (1,0) будут доступны с задержкой в десять циклов после их начала. Поэтому аппаратное обеспечение вставляет восемь «мертвых» циклов в вычислительный конвейер. Это показано в виде ячеек с индексом гаплотипа ниже нуля, как на ФИГ. 16 вдоль той же диагонали, где находятся ячейки (1,0) и (0,1). По завершении мертвого цикла, который имеет эффективную позицию ячейки в матрице (-8,-9), значения состояний M, I и D для ячейки (1,0) доступны. После этого они (например, выводы состояний M и D ячейки (1,0)) сразу же используются для вычислений состояния D ячейки (2,0).[00383] The next cell to go through may be cell (2,0). However, the results of the calculations of states I and D from cell (1,0) will be available with a delay of ten cycles after they begin. Therefore, the hardware inserts eight dead cycles into the computation pipeline. This is shown as cells with a haplotype index below zero, as in FIG. 16 along the same diagonal where cells (1,0) and (0,1) are located. Upon completion of a dead cycle, which has an effective cell position in the matrix (-8,-9), the M, I and D state values for cell (1,0) are available. After this, they (for example, the outputs of the M and D states of cell (1,0)) are immediately used to calculate the D state of cell (2,0).

[00384] Спустя один тактовый цикл значения состояний M, I и D из ячейки (1,0) могут быть использованы для начала вычислений состояния I ячейки (1,1) и вычислений состояния M ячейки (2,1). К тому же значения состояний M и D из ячейки (0,1) могут быть одновременно использованы для вычислений состояния D ячейки (1,1). Спустя один тактовый цикл значения состояний M, I и D из ячейки (0,1) используются для начала вычислений состояния I ячейки (0,2) и вычислений состояния M ячейки (1,2).[00384] After one clock cycle, the M, I, and D state values from cell (1,0) can be used to begin cell (1,1) I state calculations and cell (2,1) M state calculations. In addition, the values of states M and D from cell (0,1) can be simultaneously used to calculate the state D of cell (1,1). One clock cycle later, the M, I, and D state values from cell (0,1) are used to begin the I state calculations of cell (0,2) and the M state calculations of cell (1,2).

[00385] Теперь следующей ячейкой для прохождения может быть ячейка (3,0). Однако результаты вычислений состояний I и D из ячейки (2,0) будут доступны с задержкой в десять циклов после их начала. Поэтому аппаратное обеспечение вставляет семь «мертвых» циклов в вычислительный конвейер. Это опять же показано в виде ячеек с индексом гаплотипа ниже нуля на ФИГ. 16 вдоль той же диагонали, где находятся ячейки (2,0), (1,1) и (0,2). По завершении мертвого цикла, который имеет эффективную позицию ячейки в матрице (-7,-9), значения состояний M, I и D для ячейки (2,0) доступны. После этого они (например, выводы состояний M и D ячейки (2,0)) сразу же используются для вычислений состояния D ячейки (3,0). И, таким образом, начинается вычисление других десяти ячеек на диагонали.[00385] Now the next cell to go through could be cell (3,0). However, the results of the calculations of states I and D from cell (2,0) will be available with a delay of ten cycles after they begin. Therefore, the hardware inserts seven dead cycles into the computation pipeline. This is again shown as cells with a haplotype index below zero in FIG. 16 along the same diagonal where cells (2,0), (1,1) and (0,2) are located. Upon completion of a dead cycle, which has an effective cell position in the matrix (-7,-9), the values of the M, I and D states for cell (2,0) are available. After this, they (for example, the outputs of the M and D states of cell (2,0)) are immediately used to calculate the D state of cell (3,0). And thus begins the calculation of the other ten cells on the diagonal.

[00386] Такая обработка может продолжаться до конца последней полной диагонали в полосе 35a захвата, что, в данном примере (с длиной рида 35 и длиной гаплотипа 14), произойдет после диагонали, которая начинается в ячейке с координатами гаплотипа и рида (13,0). После прохождения ячейки (4,9) на ФИГ. 16 следующей ячейкой для прохождения должна быть ячейка (13,1). Однако результаты вычислений состояний I и D из ячейки (12,1) будут доступны с задержкой в десять циклов после их начала.[00386] Such processing may continue until the end of the last full diagonal in capture lane 35a, which, in this example (with a read length of 35 and a haplotype length of 14), will occur after the diagonal that begins at the cell with haplotype and read coordinates (13.0 ). After passing through cell (4,9) in FIG. 16, the next cell to go through should be cell (13,1). However, the results of the calculations of states I and D from cell (12,1) will be available with a delay of ten cycles after they begin.

[00387] Поэтому аппаратное обеспечение может быть выполнено с возможностью начала операций, связанных с первой ячейкой в следующей полосе 35 захвата, например, в ячейке с координатами (0, 10). После обработки ячейки (0, 10) может быть пройдена ячейка (13, 1). Затем проходят всю диагональ ячеек, начиная с ячейки (13, 1), пока не будет достигнута ячейка (5, 9). Аналогичным образом после прохождения ячейки (5, 9) следующей ячейкой для прохождения должна быть ячейка (13, 2). Однако, как и прежде, результаты вычислений состояний I и D из ячейки (12, 2) могут быть доступны с задержкой в десять циклов после их начала. Поэтому аппаратное обеспечение может быть выполнено с возможностью начала операций, связанных с первой ячейкой на второй диагонали следующей полосы 35b захвата, например, в ячейке с координатами (1, 10), за которой следует ячейка (0, 11).[00387] Therefore, the hardware may be configured to begin operations associated with the first cell in the next capture strip 35, for example, at the cell at coordinates (0, 10). After processing cell (0, 10), cell (13, 1) can be traversed. Then the entire diagonal of cells is traversed, starting with cell (13, 1), until cell (5, 9) is reached. Similarly, after passing cell (5, 9), the next cell to pass must be cell (13, 2). However, as before, the results of the calculations of states I and D from cell (12, 2) may be available with a delay of ten cycles after they begin. Therefore, the hardware may be configured to begin operations associated with the first cell on the second diagonal of the next capture strip 35b, for example, at a cell at coordinates (1, 10) followed by cell (0, 11).

[00388] После обработки ячейки (0, 11) может быть пройдена ячейка (13, 2) в соответствии со способами, описанными выше. Затем проходят всю диагональ 35 ячеек, начиная с ячейки (13, 2), пока не будет достигнута ячейка (6, 9). Кроме того, после прохождения ячейки (6, 9) следующей ячейкой для прохождения должна быть ячейка (13, 3). Однако и здесь результаты вычислений состояний I и D из ячейки (12, 3) могут быть доступны с периодом задержки в десять циклов после их начала. Поэтому аппаратное обеспечение может быть выполнено с возможностью начала операций, связанных с первой ячейкой на третьей диагонали следующей полосы 35c захвата, например, в ячейке с координатами (2, 10), за которой следуют ячейки (1, 11) и (0, 12) и т.п.[00388] After cell (0, 11) has been processed, cell (13, 2) may be processed in accordance with the methods described above. The entire diagonal of 35 cells is then traversed, starting at cell (13, 2), until cell (6, 9) is reached. In addition, after passing cell (6, 9), the next cell to pass must be cell (13, 3). However, here again the results of calculations of states I and D from cell (12, 3) can be available with a delay period of ten cycles after their start. Therefore, the hardware may be configured to begin operations associated with the first cell on the third diagonal of the next capture strip 35c, for example, at the cell at coordinates (2, 10) followed by cells (1, 11) and (0, 12) and so on.

[00389] Это продолжается, как указано выше, до тех пор, пока не будет пройдена последняя ячейка в первой полосе 35a захвата (ячейка с координатами гаплотипа и рида (13, 9)), и в этот момент логика может полностью переключиться на прохождение второй диагонали во второй полосе 35b захвата, начиная с ячейки (9, 10). Схема, кратко описанная выше, повторяется столько раз, сколько полос захвата из 10 оснований потребуется, пока не будет достигнута нижняя полоса 35c захвата (в данном примере это ячейки, которые связаны с основаниями рида, имеющими индекс 30 или больше).[00389] This continues as above until the last cell in the first capture stripe 35a (the cell with haplotype and read coordinates (13, 9)) has been traversed, at which point the logic can completely switch to traversing the second diagonally in the second capture strip 35b, starting from cell (9, 10). The pattern briefly described above is repeated as many times as 10-base capture bands are required until the bottom capture band 35c is reached (in this example, cells that are associated with read bases having an index of 30 or greater).

[00390] Внизу полосы 35 захвата может быть вставлено больше мертвых ячеек, как показано на ФИГ. 16, в качестве ячеек с индексами рида больше 35 и индексами гаплотипа больше 13. Кроме того, в заключительной полосе 35c захвата может быть фактически добавлена дополнительная строка ячеек. Эти ячейки указаны на линии 35 на ФИГ. 16 и относятся к специальному тактовому циклу, в котором происходят заключительные операции суммирования в каждой диагонали заключительной полосы захвата. В этих циклах складываются состояния M и I ячеек непосредственно вверху, и этот результат сам суммируется с текущей заключительной суммой (которая инициализируется нулем на левом крае матрицы 30 HMM).[00390] More dead cells may be inserted at the bottom of the capture strip 35, as shown in FIG. 16, as cells with read indices greater than 35 and haplotype indices greater than 13. In addition, an additional row of cells may actually be added in the final capture strip 35c. These cells are indicated on line 35 in FIG. 16 and refer to a special clock cycle in which the final summation operations occur in each diagonal of the final capture strip. In these loops, the M and I states of the cells immediately above are added, and this result is itself summed to the current final sum (which is initialized to zero at the left edge of the 30 HMM matrix).

[00391] В контексте вышесказанного и с учетом ФИГ. 16 можно отметить, что в данном примере с ридом длиной 35 и гаплотипом длиной 14 имеются 102 мертвых цикла, 14 циклов, связанных с заключительными операциями суммирования, и 20 циклов задержки конвейера, что в итоге дает 102+14+20 = 146 циклов непроизводственных затрат ресурсов. Также можно отметить, что любого задания 20 HMM с длиной рида более 10 мертвые циклы в верхнем левом углу ФИГ. 16 не зависят от длины рида. Кроме того, можно отметить, что мертвые циклы в нижней и нижней правой части ФИГ. 16 зависят от длины рида, причем минимальное количество мертвых циклов для ридов равно mod(длина рида, 10) = 9, а минимальное количество мертвых циклов равно mod(длина рида, 10) = 0. Также можно отметить, что процент циклов непроизводственных затрат ресурсов от общего количества циклов оценки матрицы 30 HMM уменьшается по мере увеличения длин гаплотипов (матрица больше при частично фиксированном количестве циклов непроизводственных затрат ресурсов) или по мере увеличения длин ридов (примечание: это касается процента непроизводственных затрат ресурсов, связанных с заключительным суммированием в матрице, снижаемым по мере увеличения разности между длиной рида и количеством строк). С помощью таких данных гистограммы из анализов репрезентативных полных геномов человека было установлено, что прохождение матрицы HMM описанным выше образом приводите к менее чем 10% непроизводственных затрат ресурсов для обработки полного генома.[00391] In the context of the above and in view of FIG. 16, it can be noted that in this example with a read of length 35 and a haplotype of length 14, there are 102 dead cycles, 14 cycles associated with the final sum operations, and 20 pipeline delay cycles, which ultimately gives 102 + 14 + 20 = 146 overhead cycles resources. It can also be noted that any HMM job 20 with a read length greater than 10 has dead cycles in the upper left corner of FIG. 16 do not depend on the read length. In addition, it can be noted that the dead cycles in the lower and lower right parts of FIG. 16 depend on the read length, and the minimum number of dead cycles for reads is mod(read length, 10) = 9, and the minimum number of dead cycles is mod(read length, 10) = 0. It can also be noted that the percentage of cycles of non-productive resource costs of the total number of matrix evaluation cycles, 30 HMM decreases as haplotype lengths increase (the matrix is larger for a partially fixed number of resource overhead cycles) or as read lengths increase (note: this refers to the percentage of resource overhead associated with the final summation in the matrix decreasing as the difference between the read length and the number of lines increases). Using such histogram data from analyzes of representative complete human genomes, it was found that traversing the HMM matrix in the manner described above results in less than 10% of the overhead of processing the entire genome.

[00392] Для сокращения количества циклов непроизводственных затрат ресурсов можно также использовать дополнительные способы, в том числе приведенные ниже. Наличие специализированной логики для заключительных операций суммирования вместо использования сумматоров совместно с логикой вычисления состояний M и D. Этим устраняется одна строка матрицы 30 HMM. Использование мертвых циклов для начала операций матрицы HMM для следующего задания HMM в очереди.[00392] Additional methods, including those described below, can also be used to reduce the number of overhead resource cycles. Having dedicated logic for the final summation operations instead of using adders in conjunction with logic for calculating the M and D states. This eliminates one row of the 30 HMM matrix. Using dead loops to start HMM matrix operations for the next HMM job in the queue.

[00393] Каждая группировка из десяти строк матрицы 30 HMM составляет «полосу 35 захвата» в функции ускорителя HMM. Следует отметить, что полоса захвата может быть увеличена или уменьшена для удовлетворения требований к эффективности и/или пропускной способности системы. Следовательно, длина полосы захвата может иметь длину от около пяти строк до менее чем около пятидесяти строк, скажем, от около десяти строк до около сорока пяти строк, например, от около пятнадцати или около двадцати строк до около сорока или около тридцати пяти строк, в том числе от около двадцати пяти строк до около тридцати строк.[00393] Each grouping of ten rows of the HMM matrix 30 constitutes a “capture strip 35” in the HMM accelerator function. It should be noted that the acquisition bandwidth can be increased or decreased to meet system efficiency and/or throughput requirements. Therefore, the length of the capture strip may range from about five lines to less than about fifty lines, say from about ten lines to about forty-five lines, for example from about fifteen or about twenty lines to about forty or about thirty-five lines, in including from about twenty-five lines to about thirty lines.

[00394] С учетом исключений, отмеченных в разделе выше, относящиеся к циклам получения данных, которые иначе были бы мертвыми циклами на правом крае матрицы на ФИГ. 16, матрицу HMM можно обрабатывать по одной полосе захвата за раз. Как показано на ФИГ. 16, состояния ячеек в нижней строке каждой полосы 35a захвата подают в логику вычисления состояний в верхней строке следующей полосы 35b захвата. Следовательно, возможно, потребуется сохранять (put) и извлекать (get) информацию о состоянии для этих ячеек в нижней строке, или на крае, каждой полосы захвата.[00394] Subject to the exceptions noted in the section above, relating to data acquisition cycles that would otherwise be dead cycles at the right edge of the matrix in FIG. 16, the HMM matrix can be processed one capture strip at a time. As shown in FIG. 16, the states of the cells in the bottom row of each capture strip 35a are fed into logic for calculating the states in the top row of the next capture strip 35b. Therefore, it may be necessary to store (put) and retrieve (get) state information for these cells in the bottom row, or edge, of each capture strip.

[00395] Логика для выполнения этого, может включать в себя одно или более из следующего: по завершении вычислений состояний M, I и D для ячейки в матрице 30 HMM с mod(индекс рида, 10) = 9 результат сохраняют в память для хранения состояний M, I, D. При начале вычислений состояний M и I (например, когда вычисления состояния D не требуют информации из ячеек сверху в матрице) для ячейки в матрице 30 HMM с ячейки с mod(индекс рида, 10) = 0 извлекают ранее сохраненную информацию о состояниях M, I и D из соответствующего места в памяти для хранения состояний M, I, D. Следует отметить, что в этих случаях при подаче значений состояний M, I и D в строку 0 (верхнюю строку) вместо вычисления состояний M и I в матрице 30 HMM использую просто заданное постоянное значение и его не нужно вызвать из памяти, что справедливо и в отношении значений состояний M и D, которые подают в столбец 0 (левый столбец) вычислений состояния D.[00395] The logic for doing this may include one or more of the following: upon completion of the M, I, and D state calculations for a cell in the HMM matrix 30 with mod(read index, 10) = 9, the result is stored in state storage memory M, I, D. When computations of states M and I begin (for example, when computations of state D do not require information from cells at the top in the matrix) for a cell in the 30 HMM matrix, the previously stored cell with mod(read index, 10) = 0 is retrieved information about the states M, I and D from the appropriate memory location for storing the states M, I, D. It should be noted that in these cases, when feeding the values of the states M, I and D to line 0 (top row) instead of computing the states M and I in the HMM matrix 30 simply uses a given constant value and does not need to be recalled from memory, which is also true for the values of the states M and D, which are fed into column 0 (left column) of the D state calculations.

[00396] Как отмечено выше, ускоритель HMM может содержать или не содержать специализированные ресурсы для суммирования в аппаратном ускорителе HMM, который существует просто в целях заключительных операций суммирования. Однако, в конкретных случаях, как описано в настоящем документе, к нижней части матрицы 30 HMM может быть добавлена дополнительная строка, а тактовые циклы, связанные с этой дополнительной строкой, могут быть использованы для заключительных операций суммирования. Например, собственно суммирования можно достичь путем заимствования (например, как показано на ФИГ. 13) сумматора из логики вычисления состояния M для выполнения операции M+I, а также заимствования сумматора из логики вычисления состояния D для сложения вновь полученной суммы M+I с текущим накопленным значением заключительного суммирования. В таком случае логика управления, чтобы активировать операцию заключительного суммирования, может вклиниваться всякий раз, когда индекс рида, который направляет операцию прохождения HMM, равен длине последовательности рида, вводимой для задания. Эти операции можно наблюдать на линии 34 в направлении в низ матрицы 30 HMM, изображенной на ФИГ. 16.[00396] As noted above, the HMM accelerator may or may not contain dedicated summation resources in the hardware HMM accelerator, which exists simply for the purpose of final summation operations. However, in specific cases, as described herein, an additional row may be added to the bottom of the HMM matrix 30, and the clock cycles associated with this additional row may be used for final summation operations. For example, the actual summation can be achieved by borrowing (for example, as shown in FIG. 13) an adder from the state calculation logic M to perform the operation M+I, and also borrowing an adder from the state calculation logic D to add the newly obtained sum M+I with the current one. the accumulated value of the final summation. In such a case, the control logic to activate the final summation operation may intervene whenever the read index that directs the HMM traversal operation is equal to the length of the read sequence input for the job. These operations can be observed on line 34 towards the bottom of the HMM matrix 30 shown in FIG. 16.

[00397] Следовательно, как можно было заметить выше, в одной реализации определитель вариантов может использовать движки сопоставителя и/или выравнивателя для определения правдоподобия мест происхождения различных ридов, например, в отношении данного местоположения, такого как местоположение на хромосоме. В таких случаях определитель вариантов может быть выполнен с возможностью обнаружения лежащей в основе последовательности в этом местоположении, например, независимо от других областей, не примыкающих непосредственно к нему. Это, в частности, полезно и хорошо работает, когда интересующая область не похожа ни на никакую другую область генома на протяжении одного рида (ли пары ридов для секвенирования спаренных концов). Однако значительная часть генома человека не удовлетворяет этому критерию, что может создать проблемы с выполнением определения вариантов, например, с процессом реконструкции генома субъекта из ридов, полученных с помощью СНП.[00397] Therefore, as may be noted above, in one implementation, the variant detector may use matcher and/or aligner engines to determine the plausibility of the origins of various reads, for example, with respect to a given location, such as a location on a chromosome. In such cases, the variant detector may be configured to detect the underlying sequence at that location, for example, independently of other regions not immediately adjacent to it. This is particularly useful and works well when the region of interest is not similar to any other region of the genome throughout a single read (or pair of paired-end sequencing reads). However, a significant portion of the human genome does not meet this criterion, which can create problems in performing variant detection, for example, in the process of reconstructing a subject's genome from reads obtained using SNP.

[00398] В частности, хотя в секвенировании ДНК произошли громадные улучшения, определение вариантов остается трудной проблемой, по большей части вследствие избыточной структуры генома. Тем не менее, как описано в настоящем документе, сложности, представляемые избыточностью генома, можно преодолеть, по меньшей мере частично, с использованием подхода на основе данных коротких ридов. Более конкретно, устройства, системы и способы их применения, описанные в настоящем документе, могут быть выполнены с возможностью концентрации на гомологичных или подобных областях, которые в противном случае могли бы отличаться низкой точностью определения вариантов. В определенных случаях такая низкая точность определения вариантов может объясняться трудностями, наблюдаемыми в картировании и выравниваниях ридов на гомологичные области, которые, как правило, могут приводить к риду с очень низким качеством рида (MAPQ). Соответственно, в настоящем документе предложены стратегические реализации, которые точно определяют варианты (ОНП, инделы и т.п.) в гомологичных областях, например, путем совместного рассмотрения информации, представленной в этих гомологичных областях.[00398] In particular, although there have been tremendous improvements in DNA sequencing, identifying variants remains a difficult problem, due in large part to the redundant structure of the genome. However, as described herein, the challenges presented by genomic redundancy can be overcome, at least in part, using a short-read approach. More specifically, the devices, systems, and methods for using them described herein may be configured to focus on homologous or similar regions that might otherwise have low variant detection accuracy. In certain cases, this low variant detection accuracy may be due to difficulties observed in mapping and aligning reads to homologous regions, which can typically result in reads with very low read quality (MAPQ). Accordingly, this document proposes strategic implementations that pinpoint variants (SNPs, indels, etc.) in homologous regions, for example, by jointly considering information presented in these homologous regions.

[00399] Например, многие области генома являются гомологичными, например, они имеют почти идентичные копии, находящиеся повсюду в геноме, например во множестве местоположений, и в результате истинное исходное местоположение может отличаться высокой неопределенностью. А именно, если группа ридов картирована с низкой достоверностью, например, вследствие явной гомологии, типичный определитель вариантов может игнорировать и не обрабатывать эти риды, даже если они могут содержать полезную информацию. В других случаях, если рид ошибочно картирован (например, первичное выравнивание не является истинным источником рида), это может привести к ошибкам обнаружения. Точнее говоря, ранее реализованные технологии секвенирования с короткими ридами были подвержены этим проблемам, и традиционные способы обнаружения часто сохраняют полную неясность в отношении больших областей.[00399] For example, many regions of the genome are homologous, eg, having nearly identical copies found throughout the genome, eg, at multiple locations, and as a result, the true original location may be highly uncertain. Namely, if a group of reads is mapped with low confidence, for example due to obvious homology, a typical variant detector may ignore and not process these reads, even though they may contain useful information. In other cases, if the read is mismapped (for example, the primary alignment is not the true source of the read), this can lead to detection errors. More specifically, previously implemented short-read sequencing technologies have been susceptible to these problems, and traditional detection methods often remain completely unclear over large regions.

[00400] В некоторых случаях для смягчения данных проблем можно использовать секвенирование длинных ридов, однако это, как правило, стоит намного дороже и/или чаще приводит к ошибкам, занимает больше времени и/или отличается другими недостатками. Поэтому в различных случаях, возможно, будет полезно выполнить операцию совместного обнаружения во множестве областей, которая описана в настоящем документе. Например, вместо рассмотрения каждой области по отдельности и/или выполнения и анализа секвенирования длинных ридов можно использовать метод совместного обнаружения во множестве областей (MRJD), например, когда протокол MRJD рассматривает множество, например все, местоположений, из которых могла быть получена каждая группа ридов, и пытается обнаружить лежащие в основе последовательности вместе, например, совместно, используя всю имеющуюся информацию, что можно сделать вне зависимости от низких или ненормальных оценок достоверности и/или определенности.[00400] In some cases, long read sequencing can be used to mitigate these problems, but this typically costs much more and/or is more error prone, takes longer, and/or has other disadvantages. Therefore, in various cases, it may be useful to perform the multi-area joint detection operation that is described herein. For example, instead of considering each region individually and/or performing and analyzing sequencing of long reads, a multiple region joint discovery (MRJD) approach can be used, for example where the MRJD protocol considers many, such as all, locations from which each group of reads could have been obtained , and attempts to discover the underlying sequences together, eg jointly, using all available information, which can be done regardless of low or abnormal confidence and/or certainty scores.

[00401] Например, в случае диплоидного организма со статистически равномерным покрытием в анализе поиска вариантом можно выполнить байесовское вычисление методом перебора. Однако при вычислении MLRD методом перебора сложность вычисления быстро растет с количеством областей N и количеством K гаплотипов-кандидатов, которые нужно рассмотреть. В частности, чтобы рассмотреть все комбинации гаплотипов-кандидатов, количество решений для гаплотипов-кандидатов, для которых нужно вычислить вероятности, часто может увеличиваться экспоненциально. Например, как более подробно описано ниже, при реализации перебора ряд гаплотипов-кандидатов включают в себя множество активных позиций, причем в случае использования метода сборки на основе графа для формирования списка гаплотипов-кандидатов в операции поиска вариантов, например путем построения графа де Брейна, как описано в настоящем документе, количество активных позиций является количеством независимых «пузырей» в графе. Следовательно, реализация такого вычисления методом перебора может быть непозволительно дорогой, и сами по себе байесовские вычисления методом перебора могут быть непозволительно сложными.[00401] For example, in the case of a diploid organism with statistically uniform coverage in a variant search analysis, a brute-force Bayesian computation can be performed. However, when computing MLRD by brute force, the computational complexity increases rapidly with the number of regions N and the number K of candidate haplotypes to consider. In particular, to consider all combinations of candidate haplotypes, the number of candidate haplotype solutions for which probabilities must be computed can often increase exponentially. For example, as described in more detail below, when implementing an enumeration, a number of candidate haplotypes include multiple active positions, and in the case of using a graph-based assembly method to generate a list of candidate haplotypes in a variant search operation, for example, by constructing a de Bruijn graph, as described herein, the number of active positions is the number of independent "bubbles" in the graph. Consequently, implementing such a brute-force computation may be prohibitively expensive, and the Bayesian brute-force computation itself may be prohibitively complex.

[00402] Соответственно, согласно одному аспекту, как показано на ФИГ. 17A, предложен способ снижения сложности таких вычислений методом перебора. Например, как описано выше, хотя скорость и точность секвенирования ДНК/РНК резко улучшились, особенно в отношении способов, описанных в настоящем документе, определение вариантов, например, процесс реконструкции генома субъекта из ридов, которые создает секвенатор, остается сложной проблемой, по большей части вследствие избыточной структуры генома. Устройства, системы и способы, описанные в настоящем документе, выполнены с возможностью снижения сложностей, предъявляемых избыточностью генома, с помощью подхода, основанного на данных коротких ридов, в отличие от секвенирования длинных ридов. В частности, в настоящем документе предложены способы выполнения обнаружения очень длинного рида с учетом гомологичных и/или подобных областей генома, которые обычно отличаются низкой точностью определения вариантов, без необходимости выполнения секвенирования длинного рида.[00402] Accordingly, according to one aspect, as shown in FIG. 17A, a brute-force method for reducing the complexity of such calculations is proposed. For example, as described above, although the speed and accuracy of DNA/RNA sequencing have improved dramatically, particularly with respect to the methods described herein, identifying variants, such as the process of reconstructing a subject's genome from the reads that a sequencer produces, remains a challenging problem for the most part due to redundant genome structure. The devices, systems and methods described herein are designed to reduce the challenges presented by genomic redundancy using a short-read data-based approach, as opposed to long-read sequencing. In particular, this document provides methods for performing very long read detection based on homologous and/or similar regions of the genome that typically have low variant detection accuracy, without the need to perform long read sequencing.

[00403] Например, в одном варианте реализации предложены система и способ для выполнения совместного обнаружения во множестве областей. А именно, в первом случае может быть выполнена обычная операция определения вариантов, например, с использованием способов, описанных в настоящем документе. В частности, обычный определитель вариантов может использовать референсную геномную последовательность, которая представляет все основания в модельном геноме. Эти референсы образуют остов анализа, с помощью которого геном субъекта сравнивают с референсным геномом. Например, как отмечалось выше, с помощью секвенатора нового поколения геном субъекта может быть разбит на подпоследовательности, например риды, обычно около 100-1000 оснований в каждом, причем эти риды могут быть картированы и выровнены на референс, что во многом напоминает сборку мозаики из фрагментов.[00403] For example, in one embodiment, a system and method for performing collaborative detection across multiple domains is provided. Namely, in the first case, a conventional variant determination operation can be performed, for example, using the methods described herein. In particular, a conventional variant detector may use a reference genomic sequence that represents all bases in a model genome. These references form the backbone of the analysis by which the subject's genome is compared with the reference genome. For example, as noted above, using a next-generation sequencer, a subject's genome can be broken down into subsequences, such as reads, typically about 100-1000 bases each, and these reads can be mapped and aligned to a reference, much like assembling a jigsaw puzzle of fragments .

[00404] После того, как геном субъекта картирована и/или выровнен с использованием данного референсного генома для сравнения с фактическим геномом субъекта, можно определить, в какой степени и как геном субъекта отличается от референсного генома, например, последовательно для каждого основания. В частности, при сравнении генома субъекта с одним или более референсных геномов, например, одного основания за другим, анализ выполняют, итеративно перемещаясь вдоль последовательности и сравнивая одну последовательность с другими, чтобы определить, согласуются ли они или нет. Соответственно, каждое основание в пределах последовательности представляет позицию, которую нужно определить, например, как представлено позицией A на ФИГ. 18A.[00404] Once a subject's genome has been mapped and/or aligned using a given reference genome for comparison with the subject's actual genome, it is possible to determine to what extent and how the subject's genome differs from the reference genome, for example, base-by-base sequentially. Specifically, when comparing a subject's genome to one or more reference genomes, for example, base by base, the analysis is performed by iteratively moving along the sequence and comparing one sequence to others to determine whether they are consistent or not. Accordingly, each base within the sequence represents a position to be determined, for example, as represented by position A in FIG. 18A.

[00405] А именно, для каждой позиции A референса, которую нужно определить относительно генома субъекта, скопление последовательностей, или ридов, будут картированы или выровнены таким образом, чтобы все риды из более крупного набора образов могли покрывать друг друга в любой данной позиции A. В частности, эта избыточная выборка может содержать ряд ридов, например, от одного до сотни или более, где каждый рид в скоплении имеет нуклеотиды, перекрывающие определяемую область. Следовательно, определение этих ридов от одного основания к другому включает в себя формирование окна обработки, которое скользит вдоль последовательности, выполняя определения, причем длина окна, например, количество оснований, исследуемых в любой данный момент времени, образует активную область определения. Следовательно, окно представляет активную область оснований в определяемом образце, где определение включает в себя сравнение каждого основания в данной позиции, например, A, во всех ридах скопления в пределах активной области, при этом идентичность основания в данной позиции в ряде скоплений ридов обеспечивает доказательство истинной идентичности основания в данной определяемой позиции.[00405] Namely, for each reference position A to be determined relative to a subject's genome, a collection of sequences, or reads, will be mapped or aligned such that all reads from the larger set of images can cover each other at any given A position. In particular, this oversampling may contain a number of reads, for example from one to a hundred or more, where each read in the cluster has nucleotides overlapping the region being defined. Therefore, determining these reads from one base to another involves forming a processing window that slides along the sequence making determinations, with the length of the window, such as the number of bases being examined at any given time, forming the active determination region. Therefore, the window represents the active region of bases in a defined pattern, where the definition involves comparing each base at a given position, such as A, across all reads in a cluster within the active region, with the identity of the base at a given position across a number of clusters of reads providing evidence of true identity of the base in a given defined position.

[00406] Для этой цели на основании соответствующей оценки достоверности MAPQ, получаемой для каждого сегмента рида, можно в целом определить, в рамках определенной оценки достоверности, что картирование или выравнивание было выполнено точно. Однако по-прежнему остается вопрос, каким бы незначительным он ни был, по поводу того, является ли картирование или выравнивание ридов точным или нет, и действительно ли одно или более ридов принадлежат еще какому-нибудь месту. Соответственно, согласно одному аспекту в настоящем документе предложены устройства и способы для улучшения достоверности при выполнении определения вариантов.[00406] For this purpose, based on the corresponding MAPQ confidence score obtained for each read segment, it can generally be determined, within a certain confidence score, that the mapping or alignment has been performed accurately. However, there is still a question, however minor, about whether the mapping or alignment of reads is accurate or not, and whether one or more reads actually belong somewhere else. Accordingly, in one aspect, devices and methods are provided herein for improving confidence in performing variant determinations.

[00407] В частности, в различных случаях определитель вариантов может быть выполнен с возможностью осуществления одной или более операций совместного обнаружения во множестве областей, как описано в настоящем документе, что можно использовать для придания большей достоверности достижимых результатов. Например, в таком случае определитель вариантов может быть выполнен с возможностью анализа различных областей в геном для определения конкретных областей, которые представляются похожими. Например, как показано на ФИГ. 18A, могут существовать референсная область A и референсная область B, где используемые в качества референса области очень схожи друг с другом, например за исключением нескольких областей с несходством пар оснований, таких как где пример Ref A имеет «A», и пример Ref B имеет «T», но за пределами этих несходств в любом другом месте исследуемой области могут совпадать. Благодаря степени схожести эти две области, например, Ref A и Ref B, как правило, будут считаться гомологичными, или паралогичными, областями.[00407] In particular, in various cases, the variant determiner may be configured to perform one or more joint detection operations in multiple areas, as described herein, which can be used to impart greater confidence to the achievable results. For example, in such a case, the variant detector may be configured to analyze different regions in the genome to determine specific regions that appear similar. For example, as shown in FIG. 18A, there may be a reference region A and a reference region B, where the reference regions are very similar to each other, for example, except for a few regions with base pair dissimilarity, such as where example Ref A has "A" and example Ref B has "T", but beyond these dissimilarities anywhere else in the study area may be the same. Due to the degree of similarity, these two regions, for example, Ref A and Ref B, will generally be considered homologous, or paralogous, regions.

[00408] Как показано на фигуре, референсные области A и B похожи на 99%. Могут быть другие области, например, Ref C и Ref D, которые относительно похожи, например, похожи примерно на 93%, но по сравнению с похожестью на 99% между референсными областями A и B, референсные области C и D не будут считаться гомологичными, или по меньшей мере будет иметь меньше шансов реально быть гомологичными. В таком случае процедуры определения вариантов могут быть выполнены с возможностью адекватного определения различий между референсными областями С и D, но могут, в определенных случаях, иметь трудности с определением различий между высокогомологичными референсными областями A и B, например вследствие их высокой гомологии. В частности, ввиду степени несхожести референсных последовательностей A и B с референсными последовательностями C и D не следует ожидать, что картирование и выравнивание на референсную последовательность A или B, будет ошибочно принято за картирование на референсную последовательность C или D. Однако можно ожидать, что риды, которые картируются и выравниваются на референсную последовательность A, могут быть ошибочно картированы на референсную последовательность B.[00408] As shown in the figure, reference regions A and B are 99% similar. There may be other regions, such as Ref C and Ref D, that are relatively similar, for example about 93% similar, but compared to the 99% similarity between Reference Regions A and B, Reference Regions C and D will not be considered homologous. or at least will have less chance of actually being homologous. In such a case, variant detection procedures may be capable of adequately distinguishing between reference regions C and D, but may, in certain cases, have difficulty distinguishing between highly homologous reference regions A and B, for example due to their high homology. In particular, due to the degree of dissimilarity between reference sequences A and B and reference sequences C and D, mapping and alignment to reference sequence A or B should not be expected to be mistaken for mapping to reference sequence C or D. However, reads can be expected to , which map and align to reference sequence A may be incorrectly mapped to reference sequence B.

[00409] Учитывая степень гомологии, ошибочное картирование между областями A и B может быть вполне вероятным. Соответственно, для повышения точности, было бы целесообразно, чтобы была в состоянии различать и/или учитывать разницу между гомологичными областями, например, при выполнении процедуры картирования, выравнивания и/или определения вариантов. А именно, при формировании скопления ридов, которые картируют или выравнивают на область в пределах Ref A, и при формировании скопления ридов, которые картируют и выравнивают на область в пределах Ref B, любое из ридов может быть в действительности ошибочно картировано на неверное место и, поэтому, чтобы добиться более высокой точности, при выполнении операций определения вариантов, описанных в настоящем документе, эти гомологичные области и риды, сопоставляемые и выравнивание не них, должны рассматриваться вместе, например, в протоколе совместного обнаружения, таком как протокол совместного обнаружения во множестве областей, который описан в настоящем документе.[00409] Given the degree of homology, mismapping between regions A and B may be quite likely. Accordingly, to improve accuracy, it would be advantageous to be able to distinguish and/or account for differences between homologous regions, for example, when performing a mapping, alignment and/or variant determination procedure. Namely, when generating a cluster of reads that map or align to a region within Ref A, and when generating a cluster of reads that map and align to a region within Ref B, either read may in fact be incorrectly mapped to the wrong location and, Therefore, to achieve higher accuracy, when performing the variant detection operations described herein, these homologous regions and the reads being mapped and aligned thereon must be considered together, for example, in a co-discovery protocol such as a multi-region co-discovery protocol , which is described in this document.

[00410] Соответственно, в настоящем документе представлены устройства, системы, а также способы их использования, которые относятся к совместному обнаружению во множестве областей (MRJD), например когда множество, например все, ридов из различных скоплений различных выявленных гомологичных областей рассматривают вместе, например, когда вместо выполнения одно определения вариантов для каждого местоположения осуществляют совместное обнаружение для всех местоположений, которые представляются гомологичными. Выполнение таких совместных определений обладает преимуществом, так как прежде чем пытаться проделать определение для каждого референса по отдельности, сначала нужно было бы определить, на какую область какого референса различные исследуемые риды действительно картируются и выравниваются, а это по своей сути точно не известно, и именно эту проблему решает предлагаемое совместное обнаружение. Следовательно, поскольку области двух референсов настолько похожи, очень трудно определить, какие риды на какие области картируются. Однако, если определение этих областей выполняется совместно, нет необходимости принимать предварительное решение о том, какие гомологичные риды на какую референсную область картируются, Поэтому при выполнении совместного определения можно предположить, что любые риды в скоплении области на одной референсе, например, A, которые гомологичны другой области на втором референсе, например, B, могли бы принадлежать либо Ref. A, либо Ref. B.[00410] Accordingly, devices, systems, and methods of using them are provided herein that relate to multiple-region collaborative discovery (MRJD), such as when multiple, e.g., all, reads from different clusters of different identified homologous regions are considered together, e.g. where instead of performing one candidate determination for each location, joint discovery is performed for all locations that appear homologous. Making such joint determinations has the advantage that before attempting to make determinations for each reference individually, one would first need to determine to which region of which reference the various reads under study are actually mapped and aligned, and this is inherently not known with certainty, and precisely this problem is addressed by the proposed collaborative detection. Consequently, since the regions of two references are so similar, it is very difficult to determine which reads are mapped to which regions. However, if the definition of these regions is performed jointly, there is no need to make a prior decision about which homologous reads map to which reference region. Therefore, when performing joint definition, it can be assumed that any reads in a cluster of a region on one reference, for example, A, that are homologous another area in the second reference, for example B, could belong to either Ref. A, or Ref. B.

[00411] Следовательно, если требуется, в дополнение к алгоритму определения вариантов, реализованному в устройствах, системах и способах, изложенных в настоящем документе, может быть реализован протокол MRJD. Например, за одну итерацию алгоритм определения вариантов принимает во внимание подтверждающие данные, представленные в картированных и/или выровненных ридах для данной области в геноме образца и референсном геноме, на основе сравнения с референсным геномом анализирует возможность фактического наличия в геноме образца того, что могло бы в нем присутствовать, и с учетом данного доказательства принимает решение по поводу того, как образец действительно отличается от референса, например, с учетом данного доказательства алгоритм определения вариантов определяет наиболее вероятный ответ, в чем разница между ридом и референсом. Однако MRJD является также алгоритмом, который может быть реализован наряду с алгоритмом определения вариантов, причем MRJD выполнен с возможностью оказания помощи определителю вариантов в более точном определении, является ли наблюдаемое отличие, например, в риде субъекта, действительно истинным отклонением от референса.[00411] Therefore, if desired, the MRJD protocol may be implemented in addition to the variant determination algorithm implemented in the devices, systems, and methods set forth herein. For example, in one iteration, the variant detection algorithm takes into account the supporting data presented in mapped and/or aligned reads for a given region in the sample genome and the reference genome, based on comparison with the reference genome, analyzes the possibility of the actual presence in the sample genome of something that could be present in it, and, taking into account this evidence, makes a decision about how the sample really differs from the reference, for example, taking into account this evidence, the algorithm for determining the options determines the most likely answer, what is the difference between the read and the reference. However, MRJD is also an algorithm that can be implemented alongside a variant detector algorithm, wherein the MRJD is configured to assist the variant detector in more accurately determining whether an observed difference, for example in a subject's read, is actually a true deviation from the reference.

[00412] Соответственно, первый этап в анализе MRJD включает в себя выявление гомологических областей на основе процента соответствия между последовательностью в множестве областей одного или более референсов, например, Ref. A и Ref. B, и последовательностями скоплений в одной или более областей ридов субъекта. В частности, Ref. A и Ref. B могут быть в действительности диплоидными формами одного и того же генетического материала, например, когда существуют два копии данной области хромосомы. Следовательно, при анализе диплоидных референсов в различных позициях Ref A может иметь один конкретный нуклеотид, а в той же самой позиции в Ref. B может присутствовать другой нуклеотид. В данном примере Ref. A и Ref. B являются гомозиготными в позиции A для «A». Однако, как показано на ФИГ. 18A, ДНК субъекта является гетерозиготной в этой позиции A, например, когда по отношению к ридам скопления области Ref. A один аллель хромосомы субъекта имеет «A», а другой аллель имеет «C», а что касается Ref. B, другая копия хромосомы субъекта имеет «A» в обоих аллелях в позиции A. Это тоже приобретает более сложный характер, когда анализируемая проба содержит мутацию, например, в одной из тех естественным образом возникающих переменных позициях, таких как гетерозиготный ОНП в позиции A (не показан).[00412] Accordingly, the first step in MRJD analysis involves identifying homologous regions based on the percentage of sequence correspondence between multiple regions of one or more references, for example, Ref. A and Ref. B, and sequences of clusters in one or more regions of the subject's reads. In particular, Ref. A and Ref. B may actually be diploid forms of the same genetic material, for example when there are two copies of a given region of the chromosome. Therefore, when analyzing diploid references, Ref A may have one specific nucleotide at different positions, but at the same position in Ref. B another nucleotide may be present. In this example Ref. A and Ref. B are homozygous at the A position for "A". However, as shown in FIG. 18A, the subject's DNA is heterozygous at this position A, for example, when relative to the cluster reads of the region Ref. A one allele of the subject's chromosome has "A" and the other allele has "C", and as for Ref. B, another copy of the subject's chromosome has an "A" in both alleles at position A. This too becomes more complex when the sample being analyzed contains a mutation, for example at one of those naturally occurring variable positions, such as a heterozygous SNP at position A ( not shown).

[00413] Как показано на Ref. A, изображенном на ФИГ. 18B, в позиции A образец субъекта может содержать риды, которые указывают на наличие гетерозиготности в позиции A, например, когда некоторые из ридов содержат «C» в этой позиции, а некоторые из ридов указывают «A» в этой позиции (например, гаплотипa1 = «A», Ha2 = «C»); что касается Ref. B, риды в позиции A указывают гомозиготность, например, когда все риды в скоплении имеют «A» в этой позиции (например, Hb1 = «A», Hb2 = «A»). Однако MJRD преодолевает эти трудности за счет одновременного выполнения совместного определения путем анализа всех ридов, которые картируются на обе области референса, с учетом при этом возможности того, что риды могут быть в неверном местоположении. После выявления различных гомологичных областей следующим этапом является определение соответствия между гомологичными референсными областями и затем, в соответствии с MRJD, определение с помощью сопоставителя и/или выравнивателей того, где различные подходящие риды «предположительно картируются» между двумя гомологичными областями, может быть отброшено, а, вернее, все риды в любом из скоплений в этих гомологичных областях могут быть рассмотрены совместно с учетом знания того, что любое из этих ридов может принадлежать любой из сравниваемых гомологичных областей. Следовательно, вычисления для определения этих совместных определений, как подробно изложено ниже, учитывают возможность того, что любое из этих ридов поступает из любой гомологических референсных областей и, где применимо, из любого из гаплотипов любой из референсных областей.[00413] As shown in Ref. A shown in FIG. 18B, at position A, a subject's sample may contain reads that indicate the presence of heterozygosity at position A, for example, when some of the reads contain "C" at that position and some of the reads indicate "A" at that position (e.g., haplotype a1 = "A", H a2 = "C"); as for Ref. B, reads at position A indicate homozygosity, e.g. when all reads in a cluster have “A” at that position (e.g. H b1 = “A”, H b2 = “A”). However, MJRD overcomes these difficulties by simultaneously performing joint determination by analyzing all reads that map to both reference regions, while taking into account the possibility that reads may be in the wrong location. Once the various homologous regions have been identified, the next step is to determine the correspondence between the homologous reference regions and then, in accordance with the MRJD, determining, using the mapper and/or aligners, where the various suitable reads are “putatively mapped” between the two homologous regions can be discarded and , or rather, all reads in any of the clusters in these homologous regions can be considered together, taking into account the knowledge that any of these reads can belong to any of the homologous regions being compared. Therefore, the calculations to determine these joint definitions, as detailed below, take into account the possibility that any of these reads come from any of the homology reference regions and, where applicable, from any of the haplotypes of any of the reference regions.

[00414] Необходимо отметить, что хотя вышесказанное касалось множества областей гомологии в пределах референса, тот же самый анализ может быть также применен к обнаружению одной области. Например, как показано на ФИГ. 18B, даже если область одна, в любой данной области могут присутствовать два отдельных гаплотипа, например, H1 и H2, которые генетический образец субъекта может иметь для конкретной области, а поскольку они являются гаплотипами, они, скорее всего, будут очень похожи друг на друга. Следовательно, если бы эти позиции анализировались отдельно друг от друга, было бы трудно определить, имеются ли здесь учитываемые истинные вариации. Таким образом, вычисления, выполняемые в отношении гомологичных областей, также полезны для негомологичных областей, так как любая конкретная область, вероятно, будет диплоидом, например, имеющим как первый гаплотип (H1), так и второй гаплотип (H2), и поэтому совместный анализ этих областей улучшит точность системы. Аналогичным образом в случае области с двумя референсами, например, гомологичной области, как описано выше, определяют именно HA1 и HA2 для первой области и HA1 и HA2 для второй области (что равносильно двум нитям для каждой хромосомы и двум областям для каждой нити = 4 диплоидным типам, как правило).[00414] It should be noted that although the above was concerned with multiple regions of homology within a reference, the same analysis can also be applied to the detection of a single region. For example, as shown in FIG. 18B, even if there is one region, in any given region there may be two distinct haplotypes, such as H 1 and H 2 , that a subject's genetic pattern may have for a particular region, and since they are haplotypes they are likely to be very similar to each other on a friend. Therefore, if these items were analyzed separately from each other, it would be difficult to determine whether there is true variation being accounted for. Thus, calculations performed on homologous regions are also useful for non-homologous regions, since any given region is likely to be a diploid, for example having both a first haplotype ( H1 ) and a second haplotype ( H2 ), and therefore joint analysis of these areas will improve the accuracy of the system. Similarly, in the case of a region with two references, for example, a homologous region, as described above, it is H A1 and H A2 for the first region and H A1 and H A2 for the second region that are determined (which is equivalent to two strands for each chromosome and two regions for each strands = 4 diploid types, typically).

[00415] Соответственно, MRJD можно использовать для определения первоначального ответа по поводу одной или более, например, всех, гомологичных областей, а затем можно применить обнаружение одной области обратно к одной или более, например, всем, одинарным или негомологичным областям, например, с использованием того же самого базового анализа, и, таким образом, можно достичь большей точности. Следовательно, можно также выполнить несовместное определение одной области. Например, что касается определения одной области, для гаплотипов-кандидатов HA1 в текущих итерациях референсный геном может быть длиной около 300-500 пар оснований, и сверху референса строят граф, например, де Брейна, как показано на ФИГ. 18C, например, из K-меров из ридов, где любое местоположение, которое отличается от референса, образует отклоняющийся путь или «пузырь» на графе, из которого выделяют гаплотипы, где каждый выделенный гаплотип, например, отклоняющийся путь, образует потенциальную гипотезу о том, что могло быть на одной из двух нитей хромосомы в конкретном месте исследуемой активной области.[00415] Accordingly, MRJD can be used to determine an initial response about one or more, e.g., all, homologous regions, and then the detection of one region can be applied back to one or more, e.g., all, single, or non-homologous regions, e.g. using the same basic analysis, and thus greater accuracy can be achieved. Therefore, it is also possible to perform non-joint determination of one region. For example, regarding the definition of one region, for candidate H A1 haplotypes in current iterations, the reference genome can be about 300-500 base pairs in length, and a graph, for example, a de Bruijn, is built on top of the reference, as shown in FIG. 18C, for example, from K-mers from reads, where any location that differs from the reference forms a deviant path or "bubble" in the graph from which haplotypes are extracted, where each isolated haplotype, for example, a divergent path, forms a potential hypothesis about , which could be on one of the two strands of the chromosome at a specific location in the active region being studied.

[00416] Однако если имеется много отклоняющихся путей, например, по всему графу образуется много пузырей, как показано на ФИГ. 18C, и выделено большое количество гаплотипов, то можно ввести отсечку по максимуму для поддержания управляемости вычислений. Отсечка может быть на любом статистически значимом количестве, таком как 35, 50, 100, 125-128, 150, 175, 200 или более и т.п. Тем не менее, в определенных случаях может быть рассмотрено большее количество, например, все, гаплотипы.[00416] However, if there are many divergent paths, for example, many bubbles are formed throughout the graph, as shown in FIG. 18C, and a large number of haplotypes have been identified, then a maximum cutoff can be introduced to keep the calculations manageable. The cutoff may be at any statistically significant number, such as 35, 50, 100, 125-128, 150, 175, 200 or more, etc. However, in certain cases a larger number, e.g. all, haplotypes may be considered.

[00417] В таких случаях вместо выделения полных гаплотипов от истока до стока с начала до конца, например, от начала последовательности до ее конца, выделять нужно только последовательности, связанные с отдельными пузырями, например, выравнивать на референс нужно только пузыри. Соответственно, из DBG выделяют пузыри, последовательности выравнивают на референс и из этих выравниваний можно определить конкретные ОНП, инсерции, делеции и т.п. с точки зрения того, почему последовательности различных пузырей отличаются от референса. Следовательно, в этом смысле все разные гипотетические гаплотипы для анализа можно получить путем смешивания и сопоставления последовательностей, относящихся ко всем различным пузырям в различных комбинациях. При таком подходе не требуется перечислять все гаплотипы, подлежащие выделению. Эти способы для выполнения совместного обнаружения во множестве областей описаны более подробно ниже в настоящем документе.[00417] In such cases, instead of isolating complete haplotypes from source to sink from beginning to end, for example, from the beginning of a sequence to its end, only the sequences associated with individual bubbles need to be isolated, for example, only bubbles need to be aligned to a reference. Accordingly, bubbles are isolated from the DBG, the sequences are aligned to the reference, and from these alignments specific SNPs, insertions, deletions, etc. can be identified. in terms of why the sequences of different bubbles differ from the reference. Therefore, in this sense, all the different hypothetical haplotypes for analysis can be obtained by mixing and matching sequences belonging to all the different bubbles in different combinations. With this approach, it is not necessary to list all the haplotypes to be isolated. These methods for performing joint detection in multiple areas are described in more detail later in this document.

[00418] Кроме того, гипотетически, даже если все из этих гаплотипов-кандидатов могут быть проверены, алгоритм выращивания дерева может быть выполнен там, где создаваемый граф начинает выглядеть как растущее дерево. Например, ветвящийся древовидный граф совместных гаплотипов/диплотипов может быть построен таким образом, что по мере роста дерева лежащий в основе алгоритм функционирует как для выращивания, так и для обрезания дерева одновременно по мере того, как производится все больше и больше вычислений и становится очевидно, что всевозможные разные гипотезы-кандидаты просто слишком неправдоподобные. Следовательно, по мере выращивания и обрезания дерева не все гипотетические гаплотипы нужно вычислять.[00418] Additionally, hypothetically, even if all of these candidate haplotypes could be tested, the tree growing algorithm could be executed where the graph being created begins to look like a growing tree. For example, a branching tree graph of joint haplotypes/diplotypes can be constructed such that, as the tree grows, the underlying algorithm functions to both grow and prune the tree simultaneously as more and more calculations are performed and it becomes apparent that that all the different candidate hypotheses are simply too implausible. Therefore, as the tree is grown and pruned, not all hypothetical haplotypes need to be calculated.

[00419] А именно, что касается функции выравнивания дерева, когда существует несогласованность между двумя референсами или между референсами и ридами по поводу того, какое основание присутствует в данных решаемых позициях, необходимо определить, какое основание действительно принадлежит какой позиции, и ввиду таких несогласованностей необходимо определить, какие различия могут быть вызван ОНП, инделами и т.п., а какие являются ошибками машины. Соответственно, при выращивании дерева, например, путем выделения пузырей из графа де Брейна, например, с помощью выравнивания Смита-Ватермана или Нидлмана-Вунша, и позиционирования их в пределах появляющегося древовидного графа, каждый пузырь, подлежащий выделению, становится в древовидном графе событием, которое представляет возможные ОНП, инделы и/или другие отличия от референса (см. ФИГ. 18C).[00419] Namely, with regard to the tree alignment function, when there is inconsistency between two references or between references and reads about which base is present at given positions being solved, it is necessary to determine which base actually belongs to which position, and in view of such inconsistencies, it is necessary determine which differences may be caused by SNPs, indels, etc., and which are machine errors. Accordingly, when growing a tree, for example by extracting bubbles from the de Bruijn graph, for example using Smith-Waterman or Needleman-Wunsch alignment, and positioning them within the emerging tree graph, each bubble to be extracted becomes an event in the tree graph. which represents possible SNPs, indels and/or other differences from the reference (see FIG. 18C).

[00420] В частности, на DBG пузыри представляют несовпадения с референсом, например, представляющие инделы (когда основания были добавлены или удалены), ОНП (когда основания отличаются) и т.п. Поэтому по мере выравнивания пузырей на референс (-ы) различные отличия между ними распределяют по категориям как события и формируют список различных событий, например пузырей. В силу этого определение тогда превращается в следующее: какая комбинация возможных событий, например, возможных ОНП и инделов, привела к фактическим вариациям в генетической последовательности субъекта, например, является истинной в каждом из фактических различных гаплотипах, например, 4, исходя из вероятности. Более конкретно, любой один кандидат, например, совместный диплотип-кандидат, формирующий корень G0 (представляющий события для данного сегмента) может иметь 4 гаплотипа, и какой из четырех гаплотипов будет формировать идентифицированное подмножество событий.[00420] In particular, on the DBG, bubbles represent mismatches to the reference, such as representing indels (when bases have been added or removed), SNPs (when bases are different), and the like. Therefore, as bubbles are aligned to the reference(s), the various differences between them are categorized as events and a list of different events, such as bubbles, is generated. Because of this, the definition then becomes: what combination of possible events, e.g., possible SNPs and indels, that led to the actual variation in a subject's genetic sequence, e.g., is true in each of the actual different haplotypes, e.g., 4, based on probability. More specifically, any one candidate, for example the joint candidate diplotype forming the G0 root (representing events for a given segment) could have 4 haplotypes, and which of the four haplotypes would form the identified subset of events.

[00421] Однако, как показано на ФИГ. 18D, при выполнении функции выращивания и/или обрезания дерева полный список всего подмножества комбинаций событий может быть, а может и не быть, определен весь сразу. Вместо этого определение начинают в одной позиции G0, например, с одного события, и из него выращивают дерево по одному событию за раз, что в результате функция обрезания может оставить различные маловероятные события нерешенными. Таким образом, что касается функции выращивания дерева, то, как показано на ФИГ. 18D, вычисление начинается с определения гаплотипов, например, HA1, HA2, HB1, HB2 (для диплоидного организма), причем начальные гаплотипы считаются все нерешенными по отношению к их соответствующим референсам, например, Ref. A и Ref. B, по существу ни с одним из присутствующих событий.[00421] However, as shown in FIG. 18D, when performing the function of growing and/or pruning a tree, a complete list of the entire subset of event combinations may or may not be determined all at once. Instead, the definition starts at one position of G 0 , for example with one event, and grows the tree from there one event at a time, which can result in the pruning function leaving various low-probability events unresolved. Thus, regarding the tree growing function, as shown in FIG. 18D, the calculation begins by defining haplotypes, eg, H A1 , H A2 , H B1 , H B2 (for a diploid organism), with the initial haplotypes considered all unresolved with respect to their respective references, eg, Ref. A and Ref. B, with essentially none of the events present.

[00422] Соответственно, первоначальной отправной точкой является корень дерева, представляющий собой G0, и совместный диплотип, у которого все события нерешенные. Затем конкретное событие, например начальный пузырь, выбирают в качестве начала для определения, тем самым начальное событие должно быть решено для всех гаплотипов, где это событие может быть первой точкой расхождения с референсом, например, по отношению к потенциальному присутствию ОНП или индела в позиции один. Как объяснено на ФИГ. 18E, в позиции один имеется событие или пузырь, например, ОНП, где «C» заменено на «A», так что референс имеет «A» в позиции один, а исследуемый рид имеет «C». В таком случае, так как для этой позиции в скоплении имеются 4 гаплотипа, и каждый может иметь либо «A», как референс, или событие «C», потенциально существуют 24 = 16 возможностей для решения этой позиции. Следовательно, вычисление переходит сразу с корня на 16 ветвей, представляющих потенциальные разрешения для каждого события в позиции один.[00422] Accordingly, the initial starting point is the root of the tree, which is G 0 , and a joint diplotype in which all events are unresolved. A specific event, such as the initial bubble, is then selected as the start for determination, whereby the starting event must be resolved for all haplotypes, where this event may be the first point of divergence from the reference, for example, in relation to the potential presence of a SNP or indel at position one . As explained in FIG. 18E, at position one there is an event or bubble, such as an SNP, where "C" is replaced by "A", so that the reference has an "A" at position one and the read in question has a "C". In this case, since there are 4 haplotypes in the cluster for this position, and each can have either an “A” as a reference or a “C” event, there are potentially 2 4 = 16 possibilities for resolving this position. Therefore, the computation goes straight from the root to the 16 branches representing potential resolutions for each event at position one.

[00423] Поэтому, как показано на ФИГ. 18D, можно определить все потенциальные последовательности для всех четырех гаплотипов, например, HA1, HA2, HB1, HB2, где в позиции один имеется либо «A», что соответствует референсу, либо событие «C», указывающее на наличие ОНП, для этого одного события, где событие «C» определяется путем изучения различных путей пузыря через граф. Итак, для каждой ветви или дочернего узла каждая ветвь может отличаться на основе правдоподобия основания в позиции один, соответствующего или вытекающего из референса, тогда как остальные события остаются нерешенными. Затем этот процесс будет повторен для каждого узла ветвления и для каждого основания в пределах пузырей вариации, чтобы решить все события для всех гаплотипов. Следовательно, можно пересчитать вероятности наблюдения любого конкретного рида при условии различных потенциальны гаплотипов.[00423] Therefore, as shown in FIG. 18D, it is possible to determine all potential sequences for all four haplotypes, for example, H A1 , H A2 , H B1 , H B2 , where at position one there is either an “A”, which corresponds to the reference, or a “C” event, indicating the presence of an SNP , for this one event, where event "C" is determined by examining the different bubble paths through the graph. So, for each branch or child node, each branch can be distinguished on the basis of the plausibility of the base in position one, corresponding to or implied by the reference, while the remaining events remain unresolved. This process will then be repeated for each branch node and for each base within the variation bubbles to resolve all events for all haplotypes. Therefore, it is possible to recalculate the probabilities of observing any particular read given different potential haplotypes.

[00424] В частности, для каждого узла могут быть четыре гаплотипа, и каждый гаплотип можно сравнить с каждым ридом в скоплении. Например, в одном варианте реализации движка Смита-Ватермана, Нидлмана-Вунша и/или HMM анализирует каждый узел и рассматривает каждый из четырех гаплотипов для каждого узла. Следовательно, формирование каждого узла активирует движок Смита-Ватермана и/или HMM для анализа этого узла путем рассмотрения всех гаплотипов, например, 4, для этого узла в сравнении с каждым ридом, где движок Смита-Ватермана и/или HMM рассматривает по одному гаплотипу на один рид для каждого из гаплотипов и каждого из ридов для всех жизнеспособных узлов.[00424] Specifically, there can be four haplotypes for each node, and each haplotype can be compared to each read in the cluster. For example, in one embodiment, a Smith-Waterman, Needleman-Wunsch, and/or HMM engine analyzes each node and considers each of the four haplotypes for each node. Therefore, generating each node activates the Smith-Waterman engine and/or HMM to analyze that node by considering all haplotypes, for example 4, for that node compared to each read, where the Smith-Waterman engine and/or HMM considers one haplotype per one read for each of the haplotypes and each of the reads for all viable nodes.

[00425] Таким образом, если в данном примере предположить, что имеется гетерозиготный ОНП «C» для одной области одного гаплотипа, например, одна нить хромосомы имеет «C», а все остальные нити имеют в этой позиции другие основания, например, они все совпадают с референсом «A», то следует ожидать, что все риды в скоплении поддерживают эти данные, например, большинство из них имеют «A» в позиции один, а меньшинство, например, около ¼, ридов имеют «C» в позиции один в случае истинного узла. Поэтому, если любые ранее наблюдаемые события в другом узле демонстрирую множество «C» в позиции один, то этот узел вряд ли будет истинным узлом, например, будет иметь низкую вероятность, поскольку в скоплении не будет достаточно ридов с «C» в этой позиции, чтобы сделать его появление вероятным. А именно, более вероятно будет то, что существование «C» в этой позиции в исследуемых ридах свидетельствует об ошибке секвенирования или другой ошибке исследования, а не о наличии истинного гаплотипа-кандидата. Следовательно, если определенные узлы обрываются, имея низкие вероятности по сравнению с истинным узлом, причина в том, что они не поддерживаются большинством ридов, например в скоплении, и поэтому эти узлы можно обрезать, тем самым отбросив узлы низкой вероятности, но при этом сохранив истинные узлы.[00425] Thus, if in this example we assume that there is a heterozygous “C” SNP for one region of one haplotype, for example, one strand of the chromosome has a “C”, and all other strands have different bases at this position, for example, they all match the reference "A", then we would expect that all reads in the cluster support this data, for example, most of them have "A" in position one, and a minority, for example about ¼, of reads have "C" in position one in case of a true node. Therefore, if any previously observed events in another node show a set of "C" at position one, then that node is unlikely to be a true node, for example, will have a low probability since there will not be enough reads in the cluster with "C" at that position. to make its appearance probable. Namely, it is more likely that the existence of a “C” at this position in the reads under study indicates a sequencing error or other research error rather than the presence of a true candidate haplotype. Therefore, if certain nodes are pruned having low probabilities compared to the true node, the reason is that they are not supported by the majority of reads, such as in a cluster, and so these nodes can be pruned, thereby discarding the low probability nodes but still retaining the true ones nodes.

[00426] Соответственно, после того, как позиция один события определена, можно определить следующую позицию события, и описанный здесь процесс может быть потом повторен для этой новой позиции по отношению к любому из выживших узлов, которые до сих пор не обрезаны. В частности, событие два может быть выбрано из существующих доступных узлов, и это событие может служить в качестве корня G1 для определения вероятной идентичности основания в позиции два, например, опять путем определения новых гаплотипов, например, 4, а также их различных ветвей, например, 16, объясняющих возможные вариации в отношении позиции 2. Таким образом, повторяя этот же самый процесс теперь можно решить событие 2. Следовательно, как показано на ФИГ. 18D, после того, как позиция 1 определена, можно выбрать новый узел для позиции 2 и рассмотреть его 16 гаплотипов-кандидатов. В таком случае можно определить кандидатов для каждого HA1, HA2, HB1, HB2, но теперь, поскольку позиция 1 уже решена в отношении определения идентичности нуклеотида для каждого гаплотипа в позиции 1, именно позиция 2 будет теперь решена для каждого гаплотипа в позиции 2, как указано на ФИГ. 18D, показывающей позицию 2.[00426] Accordingly, once event position one has been determined, the next event position can be determined, and the process described herein can then be repeated for that new position with respect to any of the surviving nodes that have not yet been pruned. In particular, event two can be selected from existing available nodes, and this event can serve as the G 1 root for determining the probable identity of the base at position two, for example again by defining new haplotypes, for example 4, as well as their various branches, for example, 16, explaining possible variations regarding position 2. Thus, by repeating this same process, event 2 can now be resolved. Therefore, as shown in FIG. 18D, once position 1 is determined, a new node for position 2 can be selected and its 16 candidate haplotypes considered. In such a case, it is possible to determine candidates for each H A1 , H A2 , H B1 , H B2 , but now, since position 1 has already been solved for determining the nucleotide identity for each haplotype at position 1, it is position 2 that will now be resolved for each haplotype in position 2, as indicated in FIG. 18D showing position 2.

[00427] По завершении этого процесса после того, как все события обработаны и решены, например, включая дочерние узлы и их дочерние узлы, которые не были обрезаны, можно изучить необрезанные узлы дерева и на основе оценок вероятности определить, какое дерево представляет совместный диплотип, например, какая последовательность имеет наивысшую вероятность быть деревом. Следовательно, таким образом, ввиду функции обрезания, нет необходимости в построении полного дерева, например, большая часть дерева оборвется, будучи обрезанной по мере продолжения анализа, поэтому общий объем вычислений сильно сокращен по сравнению с функциями без обрезания, хотя он и существенно больше, чем при выполнении определения несовместного диплотипа, например определения одной области. Соответственно, представленные модули аналитики могут с высокой степенью точности определять и решать две или более областей высокой гомологии, например, используя анализ совместного диплотипа, где традиционные способы просто не в состоянии вообще решать такие области, например, вследствие ложно положительных вариантов и неразрешимости.[00427] At the end of this process, after all events have been processed and resolved, for example, including child nodes and their children nodes that were not pruned, the unpruned nodes of the tree can be examined and, based on probability estimates, determined which tree represents the joint diplotype, for example, which sequence has the highest probability of being a tree. Therefore, in view of the pruning function, there is no need to build a complete tree, for example, most of the tree will break off by being pruned as the analysis continues, so the overall computational effort is greatly reduced compared to functions without pruning, although it is significantly larger than when performing a non-shared diplotype determination, such as a single region determination. Accordingly, the presented analytics modules can identify and resolve two or more regions of high homology with a high degree of accuracy, for example using joint diplotype analysis, where traditional methods are simply unable to resolve such regions at all, for example due to false positives and undecidability.

[00428] В частности, различные реализации определителя вариантов могут быть выполнены с возможностью просто невыполнения анализа на областях высокой гомологии. Представленные итерации преодолевают эти и другие подобные проблемы в данной области техники. Более конкретно, представленные устройства, системы и способы их использования могут быть выполнены с возможностью рассмотрения большей части, например, всех, гаплотипов, несмотря на наличие областей высокой гомологии. Конечно, скорость этих вычислений может быть дополнительно увеличена за счет невыполнения вычислений, когда можно определять, что результаты таких вычислений имеют низкую вероятность в плане истинности, например за счет реализации функции обрезания, как описано в настоящем документе.[00428] In particular, various implementations of the variant detector may be configured to simply not perform the analysis on regions of high homology. The presented iterations overcome these and other similar problems in the art. More specifically, the presented devices, systems and methods of using them can be configured to consider most, for example all, haplotypes, despite the presence of regions of high homology. Of course, the speed of these calculations can be further increased by not performing the calculations when the results of such calculations can be determined to have a low probability of being true, for example by implementing a cutoff function as described herein.

[00429] Преимущество этих конфигураций, например, решение и обрезание совместного диплотипа, состоит в том, что размер окна активной области, например, анализируемых оснований, может быть увеличен от около нескольких сотен обрабатываемых оснований до нескольких тысяч или даже десятков тысяч оснований, которые могут быть обработаны вместе, например в одной непрерывной активной области. Такое увеличение размера активного окна анализа позволяет рассматривать больше подтверждающих данных при определении идентичности любого конкретного нуклеотида в любой данной позиции, тем самым обеспечивая больше контекста, в рамках которого можно выполнить более точное определение идентичности нуклеотида. Аналогичным образом более широкий контекст позволяет лучше связывать вместе подтверждающие данные при сравнении одного или более ридов, покрывающих одну или более областей, которые имеют одно или более отклонений от референса. Следовательно, таким образом одно событие может быть соединено с другим, которое само может быть соединено с еще одним событием и т.д., и на основе этих связей можно выполнять более точное определение по отношению к данному конкретному рассматриваемому событию, тем самым обеспечивая информативность подтверждающих данных из еще более отдаленных, например, от сотен до тысяч или более отдаленных оснований, при выполнении настоящего определения вариантов (несмотря на тот факт, что любой данный рид, как правило, имеет длину в сотни оснований), и благодаря этому еще больше повышая точность процессов, описанных в настоящем документе.[00429] The advantage of these configurations, such as joint diplotype solution and trimming, is that the window size of the active region, such as the bases being analyzed, can be increased from about a few hundred bases being processed to several thousand or even tens of thousands of bases that can be processed together, for example in one continuous active region. This increase in the size of the active analysis window allows more supporting data to be considered when determining the identity of any particular nucleotide at any given position, thereby providing more context within which a more precise determination of nucleotide identity can be made. Likewise, broader context allows better tying together of supporting evidence when comparing one or more reads covering one or more regions that have one or more deviations from the reference. Therefore, in this way, one event can be connected to another, which itself can be connected to yet another event, etc., and based on these connections, a more precise determination can be made in relation to this particular event in question, thereby providing informative confirmation data from even further away, such as hundreds to thousands or more distant bases, while performing true variant detection (despite the fact that any given read is typically hundreds of bases in length), thereby further increasing accuracy processes described in this document.

[00430] В частности, подобным образом можно добиться дальнейшего включения в активную область от тысяч до десятков тысяч, даже сотен тысяч или более оснований и, следовательно, можно избежать способа формирования графа де Брейна путем выделения всех гаплотипов, поскольку нужно исследовать лишь ограниченное число гаплотипов, тех, что имеют пузыри, которые могут быть жизнеспособными, причем даже те из них, которые жизнеспособны, могут быть обрезаны после того, как становятся нежизнеспособными, а для остающихся жизнеспособными можно использовать связывание в цепочку, чтобы улучшить точность осуществляемого в конечном счете определения вариантов. Все это стало возможным благодаря квантовому и/или аппаратному вычислению. Это также может быть выполнено, но медленнее, в программном обеспечении с помощью ЦПУ или ГПУ,[00430] In particular, further incorporation of thousands to tens of thousands, even hundreds of thousands or more bases into the active region can be achieved in this manner, and therefore the method of forming a de Bruijn graph by isolating all haplotypes can be avoided, since only a limited number of haplotypes need to be examined , those that have bubbles that may be viable, and even those that are viable can be trimmed after they become nonviable, and for those that remain viable, chaining can be used to improve the accuracy of the eventual variant determination . All of this is made possible by quantum and/or hardware computing. This can also be done, but more slowly, in software using a CPU or GPU.

[00431] Касательно приведенных выше примеров необходимо отметить, что вероятности входных данных, например, ридов, определяются с учетом гипотетических гаплотипов, созданных с помощью граф де Брейна. Однако, возможно, также будет полезно использовать теорему Байеса, например, для определения вероятности ридов с учетом совместного диплотипа вплоть до противоположной вероятности определения из теории совместного диплотипа наилучшего соответствия с учетом оцениваемых ридов и подтверждающих данных. Соответственно, как показано на ФИГ. 18C, на основе сформированного графа де Брейна после того, как выполнено совместное обнаружение во множестве областей и/или обрезание, будет получен набор потенциальных гаплотипов, и затем эти гаплотипы будут проверены на соответствие фактическим ридами субъекта. А именно, каждое горизонтальное поперечное сечение представляет гаплотип, например, B1, который может быть затем подвергнут обработке с помощью другого протокола HMM для проверки на соответствие ридам, чтобы определить вероятность конкретного рида при условии гаплотипа B1.[00431] Regarding the above examples, it should be noted that the probabilities of the input data, such as reads, are determined taking into account the hypothetical haplotypes created using the de Bruijn graph. However, it may also be useful to use Bayes' theorem, for example, to determine the probability of reads given a joint diplotype, up to the opposite probability of determining from the joint diplotype theory the best fit, given the reads being evaluated and the supporting data. Accordingly, as shown in FIG. 18C, based on the generated de Bruijn graph, after multi-region co-detection and/or pruning is performed, a set of potential haplotypes will be obtained, and these haplotypes will then be checked against the subject's actual reads. Specifically, each horizontal cross-section represents a haplotype, such as B1, which can then be subjected to a different read-matching HMM protocol to determine the probability of a particular read given the B1 haplotype.

[00432] Однако, в определенных случаях гаплотип, например, B1, может быть еще не полностью определен, однако выполнение HMM все же может принести пользу, и в таком случае можно выполнить модифицированное вычисление HMM, например, операцию частично определенной HMM, (PD)-HMM, обсуждаемую ниже, когда в гаплотипе допускается наличие неопределенных вариантов, например, ОНП и/или инделов, которые еще предстоит определить, и по сути это вычисление подобно вычислению наилучшей возможной вероятности достижимого ответа с учетом любой комбинации вариантов в нерешенных позициях. Таким образом, это еще больше облегчает функцию итеративного выращивания дерева, где фактическое выращивание дерева, например, выполнение операций PD-HMM, не должно ограничиваться только теми вычислениями, где все возможные варианты известны. Следовательно, таким образом можно выполнить ряд вычислений PD-HMM итеративным путем, чтобы вырастить дерево узлов несмотря на тот факт, что в конкретных гаплотипах-кандидатах все еще имеются неопределенные области неизвестных возможных событий, и так, где появляется возможность обрезать дерево, ресурсы PD-HMM могут быть плавно переключены с вычисления обрезанных узлов на обработку только тех возможностей, которые имеют наивысшую вероятность успешного охарактеризования истинного генотипа.[00432] However, in certain cases the haplotype, such as B1, may not yet be fully determined, but running an HMM may still be beneficial, in which case a modified HMM calculation, such as a partially determined HMM, (PD) operation, can be performed. -HMM, discussed below, where the haplotype is allowed to have undetermined variants, such as SNPs and/or indels that have yet to be determined, and the calculation is essentially like calculating the best possible probability of an achievable response given any combination of variants at unresolved positions. Thus, this further facilitates the iterative tree growing function, where the actual tree growing, such as performing PD-HMM operations, does not have to be limited to only those calculations where all possible options are known. Therefore, in this way, it is possible to perform a series of PD-HMM calculations in an iterative way to grow a tree of nodes despite the fact that there are still undefined regions of unknown possible events in specific candidate haplotypes, and so where it becomes possible to prune the tree, PD-resources HMMs can be seamlessly switched from computing pruned nodes to processing only those possibilities that have the highest probability of successfully characterizing the true genotype.

[00433] Соответственно, при определении вероятности конкретного основания действительно присутствующего в любой одной позиции, идентичность основания в этой позиции может быть определена на основе идентичности в этой позиции в каждой области хромосомы, например, в каждом гаплотипе, который представляет жизнеспособный кандидат. Следовательно, любой кандидат, определение которого выполняется, является идентичностью данного основания в рассматриваемой позиции в каждом из четырех гаплотипов одновременно. В частности, определяется именно вероятность наблюдения ридов каждом из скоплении при условии определенного правдоподобия. А именно, каждый кандидат представляет совместный диплотип, и в силу этого каждый кандидат содержит около четырех гаплотипов, которые могут быть представлены в следующем уравнении как G = генотип, где G = четырем гаплотипам одной диплоидной области хромосомы генома, например совместного диплотипа. В таком случае вычислять нужно именно вероятность фактического наблюдения каждого из выявленных оснований-кандидатов рида последовательностей в скоплениях в предположении, что они действительно истинные. Это начальное определение может быть выполнено с помощью вычисления гаплотипа HMM, как указано ниже в настоящем документе.[00433] Accordingly, when determining the likelihood of a particular base actually being present at any one position, the identity of the base at that position can be determined based on the identity at that position in each region of the chromosome, for example, in each haplotype that represents a viable candidate. Therefore, any candidate whose determination is made is the identity of a given base at the position in question in each of the four haplotypes simultaneously. In particular, the probability of observing reads in each cluster is determined, subject to a certain likelihood. Namely, each candidate represents a joint diplotype, and by virtue of this, each candidate contains about four haplotypes, which can be represented in the following equation as G = genotype, where G = four haplotypes of one diploid chromosome region of the genome, such as a joint diplotype. In this case, it is necessary to calculate the probability of actually observing each of the identified candidate bases of the sequence read in clusters, assuming that they are indeed true. This initial determination can be made by calculating the HMM haplotype as described below in this document.

[00434] Например, «СовместныйДиплотип» = 4 гаплотипа: (область A: HA1HA2, и область B:⋅HB1HB2) = G → P(R/G) как определено с помощью HMM (модель ошибок) = ΠP(r/G) =[00434] For example, "JointDiplotype" = 4 haplotypes: (region A: H A1 H A2 , and region B:⋅H B1 H B2 ) = G → P(R/G) as determined by HMM (error model) = ΠP(r/G) =

[00435] Следовательно, если предполагается, что конкретный гаплотип Ha1 является истинной последовательностью в этой области, и рид происходит оттуда, то каковы шансы, что данный Ha1 этой последовательности рида действительно наблюдался. Соответственно, вычислитель HMM работает над тем, чтобы определить, в предположении, что гаплотип Ha1 истинным, каково правдоподобие реального наблюдения данной исследуемой последовательности рида.[00435] Therefore, if a particular H a1 haplotype is assumed to be the true sequence in that region, and the read originates from there, then what are the chances that the given H a1 of that read sequence was actually observed. Accordingly, the HMM evaluator works to determine, assuming that the H a1 haplotype is true, what is the likelihood of actually observing a given read sequence of interest.

[00436] А именно, если рид действительно совпадает с гаплотипом, вероятность, конечно, будет очень высокой. Однако, если конкретный исследуемый рид не совпадает с гаплотипом, то любое отклонение от него должно объясняться ошибкой исследования, например, ошибкой секвенирования или оборудования для секвенирования, а не действительной вариацией. Следовательно, вычисление HMM является функцией от моделей ошибок. А именно, возникает вопрос, какова вероятность необходимой комбинации ошибок, которые должны были бы произойти, чтобы наблюдались эти конкретные анализируемые риды. Следовательно, в данной модели рассматривается не только одна область, но и множество позиций в множестве областей на множестве нитей одновременно (например, вместо рассмотрения, скорее всего, двух гаплотипов в одной области, теперь одновременно рассматривается вероятность четырех гаплотипов для любой данной позиции, одновременно, с использованием всех данных ридов из всех исследуемых областей). Теперь рассмотрим более подробно эти процессы, например, обрезание дерева, совместное обнаружение во множестве областей и PD-HMM.[00436] Namely, if the read actually matches the haplotype, the probability, of course, will be very high. However, if a particular read being examined does not match a haplotype, then any deviation from it must be attributed to research error, such as sequencing or sequencing equipment error, rather than actual variation. Therefore, the calculation of the HMM is a function of the error models. Namely, the question is what is the probability of the necessary combination of errors that would have to occur in order for these particular analyzed reads to be observed. Consequently, this model considers not only one region, but also multiple positions in multiple regions on multiple strands simultaneously (e.g., instead of considering the likelihood of two haplotypes in one region, it now simultaneously considers the likelihood of four haplotypes for any given position, simultaneously, using all read data from all study areas). Let us now take a closer look at these processes, such as tree pruning, multi-region collaborative detection, and PD-HMM.

[00437] А именно, как показано на ФИГ. 17 и 18, предложена цепочка обработки высокого уровня, например, когда цепочка обработки может включать в себя один или более из следующих этапов: выявление и ввод гомологичных областей, выполнение предварительной обработки входных гомологичных областей, выполнение обнаружения очень длинного рида (VLRD) или совместного обнаружения во множестве областей (MJRD) и вывод файла определения вариантов. В частности, что касается выявления гомологичных областей, в качестве первичных входных данных в движок обработки совместного обнаружения во множестве областей, реализующий алгоритм MRJD, может быть введен файл картированных, выровненных и/или сортированных данных SAM и/или BAM, например, CRAM. Движок обработки MRJD может быть частью интегральной схемы, например, ЦПУ, и/или ГПУ, и/или квантовой вычислительной платформы, исполняющей программное обеспечение, например, квантовый алгоритм, или может быть реализован в FPGA, ASIC и т.п. Например, описанный выше сопоставитель и/или выравниватель может быть использован для формирования файла CRAM и настроен для вывода N вторичных выравниваний для каждого рида вместе с первичными выравниваниями. Затем эти первичные и вторичные выравнивания могут быть использованы для определения списка гомологичных областей, причем гомологические области могут вычислены на основе определяемого пользователем порога подобия между N областями референсного генома. Этот список выявленных гомологичных областей может быть затем подан на стадию предварительной обработки соответствующим образом сконфигурированного модуля MRJD.[00437] Namely, as shown in FIG. 17 and 18, a high-level processing chain is proposed, for example, where the processing chain may include one or more of the following steps: identifying and inputting homologous regions, performing preprocessing of input homologous regions, performing very long read detection (VLRD) or co-detection in multiple regions (MJRD) and output a variant definition file. In particular, with respect to identifying homologous regions, a file of mapped, aligned and/or sorted SAM and/or BAM data, such as CRAM, may be input as primary input to the multi-region joint detection processing engine implementing the MRJD algorithm. The MRJD processing engine may be part of an integrated circuit, such as a CPU and/or GPU, and/or a quantum computing platform executing software, such as a quantum algorithm, or may be implemented in an FPGA, ASIC, or the like. For example, the mapper and/or aligner described above can be used to generate a CRAM file and configured to output N secondary alignments for each read along with the primary alignments. These primary and secondary alignments can then be used to determine a list of homologous regions, where homologous regions can be calculated based on a user-defined threshold of similarity between N regions of the reference genome. This list of identified homologous regions can then be fed to the preprocessing stage of a suitably configured MRJD module.

[00438] Соответственно, на стадии предварительной обработки для каждого набора гомологичных областей сначала может быть сформировано совместной скопление, например, с помощью первичных выравниваний из одной или более, например каждой из, областей в наборе. См., например, ФИГ. 19. Затем с помощью этого совместного скопления может быть сформирован список активных/кандидатов позиций вариантов (ОНП/инделов), с помощью которого каждый из этих вариантов-кандидатов может быть обработан и оценен с посредством движка (-ов) предварительной обработки MRJD. Чтобы уменьшить сложность вычислений, можно вычислить матрицу связности, с помощью которой можно определить порядок обработки вариантов-кандидатов.[00438] Accordingly, in the preprocessing step, for each set of homologous regions, a co-cluster may first be formed, for example, using primary alignments from one or more, for example, each of the regions in the set. See, for example, FIG. 19. Using this co-aggregation, a list of active/candidate variant positions (SVPs/indels) can then be generated, with which each of these candidate variants can be processed and scored through the MRJD pre-processing engine(s). To reduce computational complexity, a connectivity matrix can be computed, which can be used to determine the order in which candidate variants are processed.

[00439] В таких вариантах реализации алгоритм совместного обнаружения во множестве областей оценивает каждый выявленный вариант-кандидат на основе порядка обработки, определенного в сформированной матрице связности. Во-первых, можно сформировать и выдать один или более совместных диплотипов-кандидатов (Gi) для варианта-кандидата. Затем можно вычислить апостериорные вероятности каждого совместного диплотипа (P(Gi|R)). На основе этих апостериорных вероятностей можно вычислить матрицу генотипа. Затем N диплотипов с самыми низкими апостериорными вероятностями можно обрезать, чтобы сократить вычислительную сложность расчетов. После этого можно включить следующий вариант-кандидат, который обеспечивает подтверждающие данные для текущего оцениваемого варианта-кандидата, и повторить вышеописанный процесс. Включив информацию, например, из одного или более, например, всех, вариантов-кандидатов из одной или более, например, всех, областей в наборе гомологических областей для текущего варианта, можно выполнить определение вариантов на основе заключительной матрицы генотипирования. Таким образом, каждую из активных позиций можно оценить, как описано выше, и тем самым получить окончательный файл VCF.[00439] In such embodiments, the multi-domain joint detection algorithm evaluates each identified candidate variant based on the processing order determined in the generated connectivity matrix. First, one or more joint candidate diplotypes (G i ) for a candidate variant can be generated and returned. The posterior probabilities of each joint diplotype (P(G i |R)) can then be calculated. From these posterior probabilities, a genotype matrix can be calculated. The N diplotypes with the lowest posterior probabilities can then be pruned to reduce the computational complexity of the calculations. You can then include the next candidate that provides supporting evidence for the current candidate being evaluated and repeat the above process. By including information from, for example, one or more, for example, all, candidate variants from one or more, for example, all, regions in the set of homology regions for the current variant, variant detection can be performed based on the final genotyping matrix. Thus, each of the active positions can be evaluated as described above, thereby obtaining the final VCF file.

[00440] В частности, как показано на ФИГ. 17B, этап обработки MRJD может быть реализован, например, включением одного или более следующих этапов или блоков. Загружают выявленное и собранное совместное скопление, затем из собранного совместного скопления создают список вариантов-кандидатов и вычисляют матрицу связности. В частности, в различных вариантах может быть осуществлен метод предварительной обработки, например, для выполнения одной или более операций определения вариантов, таких как операция совместного обнаружения множества ридов. Такие операции могут включать в себя один или более блоков предварительной обработки, в том числе: этапы, относящиеся к загрузке совместных скоплений, формированию из совместного скопления списка вариантов-кандидатов и вычисление матрицы связности. Теперь рассмотрим подробнее каждый из блоков и связанных с ними потенциальных этапов.[00440] Specifically, as shown in FIG. 17B, the MRJD processing step may be implemented, for example, by including one or more of the following steps or blocks. The identified and collected co-cluster is loaded, then a list of candidate variants is created from the collected co-cluster and a connectivity matrix is calculated. In particular, in various embodiments, a preprocessing technique may be implemented, for example, to perform one or more variant determination operations, such as a multiple read co-discovery operation. Such operations may include one or more preprocessing blocks, including steps related to loading co-clusters, generating a candidate list from the co-cluster, and computing a connectivity matrix. Now let's take a closer look at each of the blocks and the potential stages associated with them.

[00441] А именно, в процедуру анализа может быть включен первый блок предварительной обработки совместного скопления. Например, для идентифицируемого промежутка могут быть выделены различные референсные области, например, из картированных и/или выровненных ридов. В частности, с помощью списка гомологичных областей можно сформировать совместное скопление для каждого набора гомологичных областей. После этого с помощью задаваемого пользователем промежутка можно выделить N референсных областей, соответствующих N гомологичным областям в наборе. Затем можно выровнять одну или более, например, все референсные области, например с помощью выравнивания Смита-Ватермана, что можно использовать для формирования системы универсальных координат всех оснований в N референсных областях. Далее, затем можно выделить из входного файла SAM или BAM все первичные риды, соответствующие каждой области, и картировать на универсальные координаты. Это картирование можно выполнить, как описано в настоящем документе, например, с помощью информации о выравнивании (CIGAR), представленной в файле CRAM для каждого картирования. В условиях, когда некоторые риды не были ранее картированы, эти риды можно картировать и/или выровнять, например, с помощью алгоритма Смита-Ватермана, на их соответствующую референсную область.[00441] Namely, a first co-cluster pre-processing block may be included in the analysis procedure. For example, for the identified gap, various reference regions can be extracted, for example, from mapped and/or aligned reads. In particular, using a list of homologous regions, a joint cluster can be formed for each set of homologous regions. After this, using a user-specified gap, N reference regions can be identified corresponding to N homologous regions in the set. One or more, for example, all reference regions can then be aligned, for example using a Smith-Waterman alignment, which can be used to form a universal coordinate system of all bases in the N reference regions. Next, all primary reads corresponding to each region can then be extracted from the input SAM or BAM file and mapped to universal coordinates. This mapping can be performed as described herein, for example, using the alignment information (CIGAR) provided in the CRAM file for each mapping. In settings where some reads have not been previously mapped, these reads can be mapped and/or aligned, for example using the Smith-Waterman algorithm, to their corresponding reference region.

[00442] Более конкретно, после того, как совместное скопления сформировано и загружено (см., например, ФИГ. 19), можно создать список вариантов-кандидатов, например из совместного скопления. Например, чтобы выделить различные варианты-кандидаты (ОНП/инделы), которые могут быть выявлены из совместного скопления, можно создать граф де Брейна (DBG) или другой граф сборки. После создания DBG на нем можно найти различные пузыри, чтобы получить список вариантов-кандидатов.[00442] More specifically, after a joint cluster has been generated and loaded (see, for example, FIG. 19), a list of candidate candidates can be created, for example, from the joint cluster. For example, to highlight the different candidate variants (SNPs/indels) that can be identified from a co-assembly, a de Bruijn graph (DBG) or other assembly graph can be created. Once the DBG is created, various bubbles can be searched on it to obtain a list of candidate variants.

[00443] В частности, при наличии всех ридов можно построить граф, используя каждую референсную область в качестве остова. Затем все позиции выявленного варианта-кандидата можно выровнять на универсальные координаты. Затем можно вычислить матрицу связности, которая определяет порядок обработки активных позиций, который может быть функций от длин ридов и/или размера инсерции. На ФИГ. 19 показан упоминаемый в настоящем документе пример совместного скопления из двух гомологичных областей в хромосоме 1. Хотя это скопление построено на основании двух гомологичных областей хромосомы 1, это сделано лишь для примера, так как данный процесс создания скопления можно использовать для любых и всех гомологичных областей вне зависимости от хромосомы.[00443] In particular, given all the reads, a graph can be constructed using each reference region as a skeleton. All positions of the identified candidate variant can then be aligned to universal coordinates. A connectivity matrix can then be computed, which determines the order in which active positions are processed, which can be a function of read lengths and/or insertion size. In FIG. 19 shows an example referenced herein to a joint cluster of two homologous regions on chromosome 1. Although this cluster is constructed from two homologous regions of chromosome 1, this is for illustrative purposes only, as this clustering process can be used for any and all homologous regions outside depending on the chromosome.

[00444] Как показано на ФИГ. 20, список вариантов-кандидатов можно создать следующим образом. Сначала можно сформировать совместное скопление и построить граф де Брейна (DBG) или другой граф сборки в соответствии со способами, описанными в настоящем документе. Затем с помощью DBG можно выделить варианты-кандидаты из совместных скоплений. DBG строят таким образом, чтобы формировать пузыри, которые указывают вариации, представляющие альтернативные пути через граф, причем каждый альтернативный путь является гаплотипом-кандидатом. См., например, ФИГ. 20 и 21.[00444] As shown in FIG. 20, a candidate list can be generated as follows. You can first form a joint cluster and construct a de Bruijn graph (DBG) or other assembly graph in accordance with the methods described herein. DBG can then be used to isolate candidate variants from co-clusters. DBGs are constructed to form bubbles that indicate variations representing alternative paths through the graph, with each alternative path being a candidate haplotype. See, for example, FIG. 20 and 21.

[00445] Соответственно, различные пузыри на графе представляют список позиций гаплотипов варианта-кандидата. Поэтому при наличии всех ридов можно построить DBG, используя каждую референсную область в качестве остова. Затем все позиции варианта-кандидата можно выровнять на универсальные координаты. В частности, на ФИГ. 20 приведена блок-схема, показывающая процесс формирования DBG и использования его для создания гаплотипов-кандидатов. Точнее говоря, граф де Брейна можно использовать для создания списка вариантов-кандидатов ОНП и инделов. С учетом наличия N областей, которые совместно обрабатываются с помощью MRJD, можно построить N графов де Брейна. В таком случае в каждом графе может использовать одну референсную область в качестве остова и все риды, соответствующие N областям.[00445] Accordingly, the various bubbles in the graph represent a list of haplotype positions of a candidate variant. Therefore, if all the reads are available, a DBG can be constructed using each reference region as a scaffold. All candidate variant positions can then be aligned to universal coordinates. In particular, in FIG. 20 is a flowchart showing the process of generating a DBG and using it to generate candidate haplotypes. More precisely, the de Bruijn graph can be used to generate a list of candidate SNP variants and indels. Given that there are N regions that are jointly processed by MRJD, N de Bruijn graphs can be constructed. In this case, each graph can use one reference region as a backbone and all reads corresponding to N regions.

[00446] Например, в одном методе реализации после построения графа DBG из него можно выделить гаплотипы-кандидаты на основе событий-кандидатов. Однако при использовании протокола предварительной обработки MRJD, как описано в настоящем документе, можно совместно обрабатывать N областей, например, когда длина областей может составлять несколько тысяч или более оснований и количество гаплотипов, которые нужно выделить, может расти очень быстро по экспоненциальному закону. Соответственно, чтобы уменьшить вычислительную сложность, вместо выделения всех гаплотипов из графов нужно выделить только пузыри, которые представляют варианты-кандидаты.[00446] For example, in one implementation method, after constructing a DBG graph, candidate haplotypes can be extracted from it based on candidate events. However, when using the MRJD preprocessing protocol as described herein, N regions can be processed together, for example, where the length of the regions may be several thousand bases or more and the number of haplotypes to be isolated may grow exponentially very quickly. Accordingly, to reduce computational complexity, instead of extracting all haplotypes from the graphs, we need to extract only the bubbles that represent candidate variants.

[00447] Пример структур пузырей, образуемых на графе де Брейна, показан на ФИГ. 21. Выделен ряд областей, подлежащих совместной обработке. Это определяет один из двух путей обработки, которым можно следовать. Если выявлены все совместные области, для формирования DBG можно использовать все риды. Можно выделить пузыри, показывающие возможные варианты, чтобы идентифицировать различные гаплотипы-кандидаты. А именно, для каждого пузыря можно выполнить выравнивание Смита-Ватермана на альтернативные пути к референсному остову. Отсюда можно выделить варианты-кандидаты и сохранить события из каждого графа.[00447] An example of bubble structures formed on a de Bruijn graph is shown in FIG. 21. A number of areas that are subject to joint processing have been identified. This determines one of two processing paths that can be followed. If all matching regions are identified, all reads can be used to form a DBG. Bubbles showing possible variants can be highlighted to identify different candidate haplotypes. Namely, for each bubble, a Smith-Waterman alignment can be performed on alternative paths to the reference skeleton. From here, candidate options can be selected and events from each graph can be stored.

[00448] Однако, в других случаях после того, как выполнен первый процесс для формирования одного или более DBG и/или i теперь равно 0, можно сформировать объединение всех событий-кандидатов из всех DBG и удалить оттуда любые дубликаты. В таком случае можно все варианты-кандидаты можно картировать, например, на систему универсальных координат, чтобы создать список вариантов-кандидатов, и этот список вариантов-кандидатов можно отправить в качестве входных данных в модуль обрезания, такой как модуль MRJD. Пример выполнения выделения пузыря вместо выделения всех гаплотипов показан на ФИГ. 22. В данном случае выделяют и обрабатывают именно только область пузыря, показывающую возможные варианты, как описано в настоящем документе.[00448] However, in other cases, after the first process to form one or more DBGs has been performed and/or i is now 0, a union of all candidate events from all DBGs can be formed and any duplicates removed from there. In such a case, all candidate variants can be mapped, for example, onto a universal coordinate system to create a list of candidate variants, and this list of candidate variants can be sent as input to a pruning module, such as an MRJD module. An example of performing bubble extraction instead of all haplotypes is shown in FIG. 22. In this case, only the area of the bubble showing possible options is isolated and processed, as described herein.

[00449] А именно, после того, как репрезентативные пузыри выделены, можно выполнить глобальное выравнивание, например, выравнивание Смита-Ватермана, путей пузыря и соответствующего референсного остова, чтобы получить варианты-кандидаты и их позиции в референсе. Это можно сделать для всех выделенных пузырей на всех графах де Брейна. Далее, из N графов можно получить объединение всех выделенных вариантов-кандидатов, удалить дубликаты потенциально возможных вариантов, при наличии таковых, а позиции уникальных вариантов-кандидатов можно картировать на систему универсальных координат, полученную из совместного скопления. Это дает окончательный список позиций вариантов-кандидатов для N областей, которые могут действовать в качестве входных данных «обрезанного» алгоритма MRJD.[00449] Namely, once representative bubbles are isolated, a global alignment, such as a Smith-Waterman alignment, of the bubble paths and the corresponding reference scaffold can be performed to obtain candidate variants and their positions in the reference. This can be done for all selected bubbles in all de Bruijn graphs. Next, from N graphs one can obtain a union of all selected candidate options, remove duplicates of potential options, if any, and the positions of unique candidate options can be mapped to a universal coordinate system obtained from the joint cluster. This produces a final list of candidate variant positions for N regions that can act as input to the “pruned” MRJD algorithm.

[00450] В частности, с помощью блоков обработки, которые описаны выше в настоящем документе, можно построить матрицу связности. Например, матрицу связности можно использовать для определения порядка обработки активных, например, кандидатов, позиций, например, как функцию от длины рида и размера инсерции. Например, для дальнейшего снижения вычислительной сложности можно вычислить матрицу связности, чтобы определить порядок обработки выявленных вариантов-кандидатов, которые получены из графа де Брейна. Эту матрицу можно построить и использовать в качестве функции сортировки или вместе с ней для определения того, какие варианты-кандидаты нужно обрабатывать в первую очередь. Поэтому данная матрица связности может быть функцией от средней длины ридов и размера инсерции ридов со спаренными концами. Соответственно, для данного варианта-кандидата другие позиции потенциально возможных вариантов, которые являются целочисленными кратными размера инсерции или находятся в пределах длины рида, имеют более высокие веса по сравнению с вариантами-кандидатами в других позициях. Причина в том, что эти варианты-кандидаты с большей вероятностью обеспечивают подтверждающие данные для текущего оцениваемого варианта. На ФИГ. 23 показан пример функции сортировки, которая реализована в настоящем документе, для средней длины ридов 101 и размера инсерции 300.[00450] In particular, using the processing blocks that are described above herein, a connectivity matrix can be constructed. For example, the connectivity matrix can be used to determine the order in which active, e.g. candidate, positions are processed, for example, as a function of the read length and insertion size. For example, to further reduce computational complexity, a connectivity matrix can be computed to determine the processing order of identified candidate variants that are derived from the de Bruijn graph. This matrix can be constructed and used as a sorting function or in conjunction with it to determine which candidate variants should be processed first. Therefore, this connectivity matrix can be a function of the average length of reads and the insertion size of paired-end reads. Accordingly, for a given candidate variant, other candidate candidate positions that are integer multiples of the insertion size or are within the read length are weighted higher than candidate variants at other positions. The reason is that these candidate options are more likely to provide supporting evidence for the current option being evaluated. In FIG. Figure 23 shows an example of the sorting function that is implemented herein, for an average read length of 101 and an insertion size of 300.

[00451] Что касается функции обрезания MRJD, примеры этапов обрезанного алгоритма MRJD, упоминаемого в настоящем документе, показан на ФИГ. 24. Например, входными данными платформы и алгоритма MRJD является совместное скопление из N областей, например все варианты-кандидаты (ОНП/инделы), априорные вероятности, основанные на модели мутации, и матрица связности. Соответственно, входными данными платформы обработки обрезанного MRJD могут быть совместное скопление, выявленные активные позиции, сформированная матрица связности и модель апостериорной вероятности и/или ее результаты.[00451] Regarding the MRJD trimming function, examples of steps of the MRJD trimming algorithm referred to herein are shown in FIG. 24. For example, the input to the MRJD platform and algorithm is a joint cluster of N regions, such as all candidate variants (SNPs/indels), prior probabilities based on the mutation model, and a connectivity matrix. Accordingly, the input data of the trimmed MRJD processing platform may be the co-cluster, the identified active positions, the generated connectivity matrix and the posterior probability model and/or its results.

[00452] Далее, можно обработать каждый вариант-кандидат в списке, а остальные варианты можно последовательно добавлять в качестве подтверждающих данных для текущего обрабатываемого варианта-кандидата с помощью матрицы связности. Соответственно, при наличии текущего варианта-кандидата и каких-либо поддерживающих вариантов-кандидатов можно сформировать совместные диплотипы-кандидаты. Например, совместный диплотип представляет собой набор из 2N гаплотипов, где N - количество совместно обрабатываемых областей. Количество совместных диплотипов-кандидатов M является функцией от количества совместно обрабатываемых областей, количества рассматриваемых активных/кандидатов вариантов и количества фаз. Пример формирования совместных диплотипов показан ниже.[00452] Next, each candidate in the list can be processed, and the remaining candidates can be sequentially added as supporting data for the currently processed candidate using a connectivity matrix. Accordingly, given the current candidate variant and any supporting candidate variants, joint candidate diplotypes can be generated. For example, a co-diplotype is a set of 2N haplotypes, where N is the number of co-processed regions. The number of co-candidate diplotypes M is a function of the number of co-processed regions, the number of active/candidate variants considered, and the number of phases. An example of the formation of joint diplotypes is shown below.

Для: P = 1, количество позиций рассматриваемых активных/кандидатов вариантов;For: P = 1, number of positions of active/candidate options under consideration;

N = 2, количество совместно обрабатываемых областей;N = 2, number of jointly processed areas;

M = 22⋅N⋅P = 24 = 16 совместных диплотипов-кандидатовM = 2 2⋅N⋅P = 2 4 = 16 joint candidate diplotypes

[00453] Следовательно, пусть имеется одна активная позиция-кандидат и даны все риды и обе референсные области, и пусть этими двумя гаплотипами будут «A» и «G».[00453] Therefore, let there be one active candidate position and all the reads and both reference regions are given, and let the two haplotypes be “A” and “G”.

Уникальные гаплотипы = «A» и «G».Unique haplotypes = "A" and "G".

Гаплотипы-кандидаты = «AA», «AG», «GA» и «GG»’, (4 потенциально возможных гаплотипа на 1 область).Candidate haplotypes = 'AA', 'AG', 'GA' and 'GG', (4 potential haplotypes per region).

Совместные диплотипы-кандидаты =Joint candidate diplotypes =

[00454] Соответственно, используя совместные диплотипы-кандидаты, можно вычислить правдоподобия ридов с учетом гаплотипа для каждого гаплотипа в каждом наборе совместных диплотипов-кандидатов. Это можно сделать с помощью алгоритма HMM, как описано в настоящем документе. Однако, при этом алгоритм HMM может быть модифицирован по сравнению с его стандартным применением, чтобы учитывать варианты-кандидаты (ОНП/инделы) в гаплотипе, которые еще не обработаны. Соответственно, правдоподобия ридов можно вычислить при наличии совместного диплотипа (P(ri|Gm)) с помощью результатов из модифицированной HMM. Это можно сделать с помощью следующей формулы.[00454] Accordingly, using the joint diplotype candidates, haplotype-aware read likelihoods can be calculated for each haplotype in each set of joint diplotype candidates. This can be done using the HMM algorithm as described herein. However, the HMM algorithm can be modified from its standard application to take into account candidate variants (SNPs/indels) in the haplotype that have not yet been processed. Accordingly, the likelihoods of reads can be calculated in the presence of a joint diplotype (P(r i |G m )) using the results from the modified HMM. This can be done using the following formula.

[00455] В случае совместного определения в 2 областях:[00455] In case of joint definition in 2 areas:

Gm = G m =

11,m, ϑ12,m, ϑ21,m, ϑ22,m], причем в ϑij,m, i - область, а j - фаза, P(ri|Gm) = 11,m, ϑ 12,m, ϑ 21,m, ϑ 22,m ], and in ϑ ij,m , i is the region, and j is the phase, P(r i |G m ) =

P(R|Gm) = . При наличии P(ri|Gm) можно легко вычислить P(R|Gm) для всех ридов. Далее, с помощью формулы Байеса можно вычислить априорную вероятность (P(Gi|R)) из P(R|Gi) и априорные вероятности (P(Gi)).P(R| Gm ) = . Given P(r i |G m ), one can easily calculate P(R|G m ) for all reads. Next, using Bayes' formula, you can calculate the prior probability (P(G i |R)) from P(R|G i ) and the prior probabilities (P(G i )).

P(Gi|R) = P(R|Gi) P(Gi)/.P(G i |R) = P(R|G i ) P(G i )/ .

[00456] Кроме того, можно вычислить промежуточную матрицу генотипа для каждой области с учетом апостериорных вероятностей для всех совместных диплотипов-кандидатов. Для каждой комбинации событий в матрице генотипа можно суммировать все апостериорные вероятности всех совместных диплотипов, поддерживающих данное события. На этом этапе матрицу генотипа можно рассматривать как «промежуточную», так как включены не все варианты-кандидаты, поддерживающие текущий кандидат. Однако, как было замечено ранее, количество совместных диплотипов-кандидатов растет экспоненциально в зависимости от количества позиций вариантов-кандидатов и количества областей. Это, в свою очередь, экспоненциально увеличивает вычисления, требуемые для расчета апостериорных вероятностей. Следовательно, чтобы снизить вычислительную сложность на этой стадии, ряд совместных диплотипов можно обрезать на основе апостериорных вероятностей, для поддержания количества совместных диплотипов, которое может быть определено пользователем и запрограммировано. Наконец, можно обновить окончательную матрицу генотипов на основе определяемой пользователем метрики вариантов, которые вычисляют с помощью промежуточной матрицы генотипа. Различные этапы этих процессов показаны на блок-схеме процесса, изображенной на ФИГ. 24.[00456] In addition, an intermediate genotype matrix can be calculated for each region, taking into account the posterior probabilities for all joint candidate diplotypes. For each combination of events in the genotype matrix, all posterior probabilities of all joint diplotypes supporting that event can be summed. At this stage, the genotype matrix can be considered as "intermediate" since not all candidate variants supporting the current candidate are included. However, as noted earlier, the number of joint candidate diplotypes grows exponentially depending on the number of candidate variant positions and the number of regions. This in turn exponentially increases the computation required to calculate the posterior probabilities. Therefore, to reduce the computational complexity at this stage, the number of joint diplotypes can be pruned based on posterior probabilities to maintain a number of joint diplotypes that can be defined by the user and programmed. Finally, the final genotype matrix can be updated based on the user-defined variant metrics that are computed using the intermediate genotype matrix. The various steps of these processes are shown in the process flow diagram depicted in FIG. 24.

[00457] Вышеуказанный процесс можно повторять до тех пор, пока все варианты-кандидаты не будут включены в качестве подтверждающих данных для текущих вариантов-кандидатов, обрабатываемых с помощью матрицы связности. После того, как все варианты-кандидаты включены, выполняется обработка текущего варианта-кандидата. Для обработки вариантов-кандидатов возможны также другие критерии остановки. Например, процесс может быть остановлен, когда достоверность перестала расти при добавления очередных вариантов-кандидатов. Этот анализ, как показано в качестве примера на ФИГ. 24, может быть перезапущен и повторен аналогичным образом для всех других вариантов-кандидатов в списке, что приведет к окончательному файлу определения вариантов на выхода MRJD. Соответственно, вместо рассмотрения каждой области по отдельности можно использовать протокол совместного обнаружения во множестве областей, который описан в настоящем документе, чтобы рассматривать все местоположения, из которых, возможно, произошла группа ридов, поскольку он пытается обнаружить лежащие в основе последовательности совместно, используя всю имеющуюся информацию.[00457] The above process can be repeated until all candidate variants are included as supporting data for the current candidate variants processed by the connectivity matrix. Once all candidate variants are included, the current candidate variant is processed. Other stopping criteria are also possible for candidate processing. For example, the process can be stopped when the confidence stops increasing with the addition of further candidate options. This analysis, as exemplified in FIG. 24 can be restarted and repeated in a similar manner for all other candidate options in the list, resulting in a final MRJD output option definition file. Accordingly, rather than considering each region individually, the multi-region co-discovery protocol described herein can be used to consider all locations from which a group of reads may have originated, as it attempts to discover the underlying sequences together using all available information.

[00458] Соответственно, в случае совместного обнаружения во множестве областей в примере протокола MRJD могут быть использованы одно или более из следующих уравнений в соответствии со способами, описанными в настоящем документе. А именно, вместо рассмотрения каждой области по отдельности, MRJD рассматривает множество местоположений, из которых, возможно, произошла группа ридов, и пытается совместно обнаружить лежащие в их основе последовательности, например, используя столько доступной информации, например, всю, сколько будет полезно. Например, в одном примере варианта осуществления:[00458] Accordingly, in the case of joint detection in multiple areas, in an example MRJD protocol, one or more of the following equations may be used in accordance with the methods described herein. Namely, rather than looking at each region individually, MRJD considers multiple locations from which a group of reads may have originated and attempts to jointly discover their underlying sequences, e.g., using as much of the available information, e.g., as all of it, as is useful. For example, in one example embodiment:

[00459] Пусть N будет количеством областей, подлежащих совместной обработке. И пусть Hk будет гаплотипом-кандидатом, k = 1…K, каждый из которых содержит различные ОНП, инсерции и/или делеции по сравнению с референсной последовательностью. Каждый гаплотип Hk представляет одну область вдоль одной нити (или «фазу», например, материнскую или отцовскую), и они необязательно непрерывные (например, могут содержат гэпы или «безразличные» последовательности).[00459] Let N be the number of areas to be jointly processed. And let H k be a candidate haplotype, k = 1...K, each of which contains different SNPs, insertions and/or deletions compared to the reference sequence. Each H k haplotype represents one region along one strand (or "phase", e.g. maternal or paternal), and they are not necessarily continuous (e.g., may contain gaps or "don't care" sequences).

[00460] Пусть Gm будет решением-кандидатом для обеих фаз Φ = 1,2 (для диплоидного организма) и всех областей n = 1…N:[00460] Let G m be the candidate solution for both phases Φ = 1.2 (for a diploid organism) and all regions n = 1...N:

Gm = G m =

где каждый элемент Gm,Φ,n является гаплотипом, выбранным из набора гаплотипов-кандидатов {H1…Hk}.where each element G m,Φ,n is a haplotype selected from the set of candidate haplotypes {H 1 ...H k }.

[00461] Во-первых, можно вычислить вероятность каждого рида для каждого гаплотипа P(ri|Hk), например, с помощью скрытой марковской модели (HMM). В случае наборов данных с парными ридами ri указывает пару {ri,1, ri,2}, а P(ri|Hk) = P(ri,1|Hk) P(ri,2|Hk). В случае наборов данных со связанными ридами (например, риды в штрихкодах), ri указывает группу ридов {ri,1…ri,NL}, которые образуются из одной и той же молекулы, а P(ri|Hk) = .[00461] First, one can calculate the probability of each read for each haplotype P(r i |H k ), for example, using a hidden Markov model (HMM). In the case of data sets with paired reads, r i specifies the pair {r i,1 , r i,2 }, and P(r i |H k ) = P(r i,1 |H k ) P(r i,2 | Hk ). In the case of datasets with related reads (e.g. reads in barcodes), r i indicates a group of reads {r i,1 ...r i,NL } that are formed from the same molecule, and P(r i |H k ) = .

[00462] Далее, для каждого решения-кандидата Gm, m=1…M вычисляют условную вероятность каждого рида P(ri|Gm) = и условную вероятность каждого полного скопления R ={r1…rNR}: P(R|Gm) = .[00462] Next, for each candidate solution G m , m=1...M, calculate the conditional probability of each read P(r i |G m ) = and the conditional probability of each complete cluster R ={r 1 …r NR }: P(R|G m ) = .

[00463] Далее, вычисляют апостериорную вероятность каждого решения-кандидата при условии наблюдаемого скопления: P(Gm|R) = , геде P(Gm) указывает апостериорную вероятность решения-кандидата, которое подробно описано ниже в настоящем документе.[00463] Next, calculate the posterior probability of each candidate solution given the observed cluster: P(G m |R) = , where P(G m ) indicates the posterior probability of a candidate solution, which is described in detail later in this document.

[00464] Наконец, вычисляют относительную вероятность каждого варианта-кандидата Vj = / , например, где Gm → Vj указывает, что Gm поддерживает вариант Vj, а Gm → ref указывает, что Gm поддерживает референс. В файле VCF это может быть указано как оценка качества по шкале phred: QUAL(Vj) = -10log10 .[00464] Finally, the relative probability of each candidate variant V j is calculated = / , for example, where G m → V j indicates that G m supports the variant V j , and G m → ref indicates that G m supports the reference. In the VCF file this can be reported as a quality rating on the phred scale: QUAL(V j ) = -10log 10 .

[00465] Пример процесса выполнения различных операций определения вариантов описан в настоящем документе со ссылкой на ФИГ. 25, где сравниваются традиционный процесс обнаружения и MRJD. А именно, на ФИГ. 25 показано совместное скопление парных ридов для двух областей, референсные последовательности которых отличаются только 3 основаниями во всем диапазоне, представляющем интерес. Известно, что все риды происходят либо из области №1, либо из области №2, но не известно с определенностью, из какой области происходит любой отдельный рид. Отметим, как описано выше, основания показаны только для позиций, где два референса отличаются, например, области пузырей, или где риды отличаются от референса. Эти области называют активными позициями. Все другие позиции можно игнорировать, так как они не влияют на вычисление.[00465] An example of a process for performing various variant determination operations is described herein with reference to FIG. 25, which compares the traditional detection process and MRJD. Namely, in FIG. Figure 25 shows a co-aggregation of paired-end reads for two regions whose reference sequences differ by only 3 bases across the entire range of interest. All reads are known to originate from either region #1 or region #2, but it is not known with certainty which region any individual read originates from. Note, as described above, bases are shown only for positions where the two references differ, such as bubble regions, or where reads differ from the reference. These areas are called active positions. All other positions can be ignored as they do not affect the calculation.

[00466] Соответственно, как показано на ФИГ. 25, в традиционном детекторе пары ридов 1-16 будут картированы на область №2, и только они будут использованы для определения вариантов в области №2. Все эти риды совпадают с референсом в области №2, поэтому варианты не будут найдены. Аналогичным образом пары ридов 17-23 будут картированы на область №1, и только они будут использованы для определения вариантов в области №1. Как можно заметить, все эти риды совпадают с референсом в области №1, поэтому варианты не будут найдены. Однако, пары ридов 24-32 в равной мере пригодны области №1 и области №2 (каждая отличается одним основанием от референса №1 и референса №2), поэтому картирование неопределенное, и типичный определитель вариантов просто проигнорирует эти риды. Поэтому традиционный определитель вариантов не выполнит определение вариантов ни для одной из двух областей, как показано на ФИГ. 25.[00466] Accordingly, as shown in FIG. 25, in a traditional detector, pairs of reads 1-16 will be mapped to region #2, and only these will be used to identify variants in region #2. All these reads match the reference in area No. 2, so no variants will be found. Similarly, read pairs 17-23 will be mapped to region #1, and only these will be used to identify variants in region #1. As you can see, all these reads coincide with the reference in area No. 1, so no variants will be found. However, read pairs 24-32 are equally suitable for region #1 and region #2 (each differing by one base from reference #1 and reference #2), so the mapping is uncertain and a typical variant resolver will simply ignore these reads. Therefore, a traditional variant determiner will not perform variant determination for either of the two regions, as shown in FIG. 25.

[00467] Однако, в случае MRJD как показано на ФИГ. 25, результат полностью отличается от результата, полученного путем применения традиционных способов. Соответствующие вычисления приведены ниже. В данном случае N = 2 областям. Кроме того, имеются три позиции, каждая с 2 основаниями-кандидатами (основания, число которых достаточно низкое, можно безопасно игнорировать, и в данном примере число равно нулю для всех, кроме 2 оснований, в каждой позиции). Если рассматривать все комбинации, это даст K = 23 = 8 гаплотипов-кандидатов: H1 = CAT, H2 = CAA, H3 = CCT, H4 = CCA, H5 = GAT, H6 = GAA, H7 = GCT, H8 = GCA.[00467] However, in the case of MRJD as shown in FIG. 25, the result is completely different from the result obtained by applying traditional methods. The corresponding calculations are given below. In this case, N = 2 areas. In addition, there are three positions, each with 2 candidate bases (bases whose number is low enough can be safely ignored, and in this example the number is zero for all but 2 bases at each position). If all combinations are considered, this will give K = 2 3 = 8 candidate haplotypes: H 1 = CAT, H 2 = CAA, H 3 = CCT, H 4 = CCA, H 5 = GAT, H 6 = GAA, H 7 = GCT, H 8 = GCA.

[00468] При вычислении перебором, когда учитывают все комбинации из всех гаплотипов-кандидатов, количество потенциально возможных решений будет M = K2N = 82·2 = 4096, и для каждого решения-кандидата Gm можно вычислить P(Gm/R). Это вычисление для двух решений-кандидатов проиллюстрировано ниже.[00468] In a brute force calculation where all combinations from all candidate haplotypes are taken into account, the number of potential solutions will be M = K 2N = 8 2 2 = 4096, and for each candidate solution G m one can calculate P(G m /R ). This calculation for two candidate solutions is illustrated below.

Gm1 = , Gm2 = G m1 = , G m2 =

Где Gm1 не имеет вариантов (это решение, найденное традиционным детектором), а Gm2 имеет единственный гетерозиготный ОНП A→C в позиции №2 области №1.Where G m1 has no variants (this is the solution found by a traditional detector), and G m2 has a single heterozygous A→C SNP at position No. 2 of region No. 1.

[00469] Вероятность P(ri|Hk) зависит от различных факторов, в том числе от качества основания и других параметров HMM. Можно предположить, что присутствуют только ошибки определения основания и все ошибки определения основания одинаково вероятны, поэтому P(ri|Hk) = (1 - pe)Np(i)-Ne(i)(pe/3)Ne(i), где pe - вероятность ошибки определения основания, Np(i) - количество активных позиций основания (-ий), перекрываемых ридом i, а Ne(i) - количество ошибок для рида i в предположении гаплотипа Hk. Соответственно, можно предположить, что pe = 0,01, что соответствует качеству основания 20 по шкале phred. В таблице, приведенной на ФИГ. 26, показаны P(ri|Hk) для всех пар ридов и всех гаплотипов-кандидатов. В двух крайних справа столбцах показаны P(ri|Gm1) и P(ri|Gm2) с указанием произведения внизу. На ФИГ. 26 показано, что P(R|Gm1) = 3,5-30 и P(R|Gm2) = 2,2-15, то есть разница в 15 порядков величины в пользу Gm2.[00469] The probability P(r i |H k ) depends on various factors, including the quality of the base and other parameters of the HMM. It can be assumed that only base determination errors are present and all base determination errors are equally probable, therefore P(r i |H k ) = (1 - p e ) Np(i)-Ne(i) (p e /3) Ne( i) , where p e is the probability of error in determining the base, N p (i) is the number of active positions of the base(s) covered by read i, and N e (i) is the number of errors for read i assuming the haplotype H k . Accordingly, we can assume that p e = 0.01, which corresponds to a base quality of 20 on the phred scale. In the table shown in FIG. 26 shows P(r i |H k ) for all pairs of reads and all candidate haplotypes. The two rightmost columns show P(r i |G m1 ) and P(r i |G m2 ) with the product at the bottom. In FIG. Figure 26 shows that P(R|G m1 ) = 3.5 -30 and P(R|G m2 ) = 2.2 -15 , that is, a difference of 15 orders of magnitude in favor of G m2 .

[00470] Апостериорные вероятности P(Gm|R) зависят от априорных вероятностей P(Gm). В завершение этого примера можно предположить простую модель независимо и одинаково распределенных (IID) случайных величин таким образом, что априорная вероятность решения-кандидата с Nv вариантами составляет (1 - pv)N·Np-Nv(pv/9)Nv, где Np - количество активных позиций (3 в данном случае) , а Pv - вероятность варианта, в данном примере предполагаемая равной 0,01. Это дает P(Gm) = 7,22e-13, и P(Gm2) = 0,500. Следует отметить, что Gm2 является гетерозиготным по все области № 1, и все гетерозиготные пары гаплотипов имеют зеркально отображенное представление с одинаковой вероятностью (полученное простым обменом местами фаз). В данном случае сумма вероятностей для Gm2 и его зеркального отражения составляет 1,000. Вычислив вероятности отдельных вариантов, можно увидеть гетерозиготный ОНП A→C в позиции 2 области № 1 с оценкой качества 50,4 по шкале phred.[00470] The posterior probabilities P(G m |R) depend on the prior probabilities P(G m ). To complete this example, we can assume a simple model of independently identically distributed (IID) random variables such that the prior probability of a candidate solution with Nv options is (1 - p v ) N·Np-Nv (p v /9) Nv , where N p is the number of active positions (3 in this case), and Pv is the probability of the option, in this example assumed to be 0.01. This gives P(G m ) = 7.22e-13, and P(G m2 ) = 0.500. It should be noted that G m2 is heterozygous for all region No. 1, and all heterozygous pairs of haplotypes have a mirror image with the same probability (obtained by simply swapping phases). In this case, the sum of the probabilities for G m2 and its mirror image is 1.000. Having calculated the probabilities of individual variants, one can see a heterozygous SNP A→C in position 2 of region No. 1 with a quality score of 50.4 on the phred scale.

[00471] Соответственно, как можно заметить, что вычислительная сложность операции определения вариантов перебором колоссальная, причем эту сложность можно снизить путем выполнения совместного обнаружения во множестве областей, как описано в настоящем документе. Например, сложность вычисления вышеприведенных расчетов быстро растет с количеством областей N и количеством K гаплотипов-кандидатов. Чтобы рассмотреть все комбинации гаплотипов-кандидатов, количество решений-кандидатов, для которых нужно вычислить вероятности, составляет M = K2N. В реализации перебора количество гаплотипов-кандидатов составляет K = 2Np, где Np - количество активных позиций (например, как объяснено выше, если для формирования списка гаплотипов-кандидатов используют методы сборки графа, то Np - число независимых пузырей на графе). Следовательно, вычисление простым перебором может оказаться непозволительно дорогим для реализации. Например, если N = 3 и Np =10, количество решений-кандидатов составляет M = 23⋅2⋅10 = 260 = 1018. Поэтому на практике не приняты значения Np намного выше этого.[00471] Accordingly, it can be seen that the computational complexity of the brute-force detection operation is enormous, and this complexity can be reduced by performing joint detection across multiple domains, as described herein. For example, the computational complexity of the above calculations increases rapidly with the number of regions N and the number K of candidate haplotypes. To consider all candidate haplotype combinations, the number of candidate solutions for which probabilities need to be calculated is M = K 2N . In the enumeration implementation, the number of candidate haplotypes is K = 2 Np , where Np is the number of active positions (for example, as explained above, if graph assembly methods are used to generate a list of candidate haplotypes, then Np is the number of independent bubbles in the graph). Therefore, brute-force computation may be prohibitively expensive to implement. For example, if N = 3 and N p =10, the number of candidate solutions is M = 2 3⋅2⋅10 = 2 60 = 10 18 . Therefore, in practice, values of N p much higher than this are not accepted.

[00472] Следовательно, поскольку байесовское вычисление перебором может быть непозволительно сложным, далее описаны дальнейшие способы снижения сложности таких вычислений. Например, на первом этапе другого варианта реализации, начинающегося с небольшого количества позиций (или даже одной позиции = 1), на этих позициях может быть выполнено байесовское вычисление. В конце вычисления варианты-кандидаты, чья вероятность попадает ниже заданного порога, могут быть удалены, например, с помощью функции обрезания дерева, как описано выше. В таком случае порог может быть адаптивным.[00472] Therefore, since Bayesian brute-force computation can be prohibitively complex, further methods for reducing the complexity of such computations are described below. For example, in the first stage of another implementation starting with a small number of positions (or even one position = 1), Bayesian computation can be performed on these positions. At the end of the computation, candidate variants whose probability falls below a given threshold can be removed, for example, using the tree pruning function as described above. In this case, the threshold may be adaptive.

[00473] Далее, на втором этапе количество позиция может быть увеличено на небольшое число ΔNp (например, так: = + ΔNp), и выжившие кандидаты могут быть объединены с одним или более, например, всеми, возможными кандидатами новых позициях, например, в функции выращивания дерева. Затем этапы (1) выполнения байесовского вычисления, (2) обрезания дерева и (3) выращивания дерева можно повторять, например, последовательно, до тех пор, пока не будут удовлетворены критерии остановки. Затем история порога может быть использована для определения достоверности результата (например, вероятность того, что истинное решение было найдено или не найдено). Этот процесс проиллюстрирован блок-схемой на ФИГ. 27.[00473] Next, at the second stage, the quantity position can be increased by a small number ΔN p (for example, like this: = + ΔN p ), and the surviving candidates can be combined with one or more, for example all, possible candidates for new positions, for example in the tree growing function. The steps of (1) performing Bayesian computation, (2) pruning the tree, and (3) growing the tree can then be repeated, for example, sequentially, until the stopping criteria are satisfied. The history of the threshold can then be used to determine the confidence of the result (for example, the probability that a true solution was found or not found). This process is illustrated by the flow chart in FIG. 27.

[00474] Необходимо понимать, что у этого подхода существует множество возможных вариантов. Например, как было указано, порог обрезания может быть адаптивным, например, основанным на количестве выживших кандидатов. Например, в простой реализации порог может устанавливаться для поддержания количества кандидатов ниже фиксированного числа, тогда как в более сложной реализации порог может устанавливаться на основе анализа затрат и выгод включения дополнительных кандидатов. Кроме того, критерии остановки могут состоять в том, что результат найден с достаточным уровнем достоверности, или что достоверность в начальной позиции перестала расти при добавлении новых позиций. Более того, в более сложной реализации может выполняться анализ затрат и выгод продолжения добавления еще позиций. Кроме того, как показано на ФИГ. 27, порядок добавления новых позиций может зависеть от нескольких критериев, таких как расстояние до начальных позиций, или насколько высоко соединены эти позиции с уже включенными позициями (например, величина перекрытия с парными ридами).[00474] It should be understood that there are many possible variations on this approach. For example, as noted, the cutoff threshold may be adaptive, eg based on the number of surviving candidates. For example, in a simple implementation, the threshold may be set to keep the number of candidates below a fixed number, while in a more complex implementation, the threshold may be set based on a cost-benefit analysis of including additional candidates. In addition, stopping criteria may be that the result is found with a sufficient level of confidence, or that the confidence in the starting position has stopped increasing when new positions are added. Moreover, a more complex implementation may perform a cost-benefit analysis of continuing to add more items. In addition, as shown in FIG. 27, the order in which new positions are added may depend on several criteria, such as the distance to the starting positions, or how highly connected these positions are to already included positions (eg, the amount of overlap with paired reads).

[00475] Полезным признаком данного алгоритма является то, что вероятность того, что истинное решение не было найдено, может быть определена количественно. Например, полезную оценку получают путем простого суммирования вероятностей всех обрезанных ветвей на каждом этапе: Ppruned = Ppruned + . Такая оценка полезна для вычисления достоверности получающихся в результате определений вариантов: = /. Хорошие оценки достоверности существенны для создания хороших кривых рабочей характеристики приемника (РХП). Это главное преимущество данного способа обрезания над другими методами сокращениями сложности, подходящими к данному случаю.[00475] A useful feature of this algorithm is that the probability that a true solution was not found can be quantified. For example, a useful estimate is obtained by simply summing the probabilities of all pruned branches at each stage: P pruned = P pruned + . This assessment is useful for calculating the confidence of the resulting variant definitions: = / . Good confidence estimates are essential to creating good receiver operating characteristic (ROC) curves. This is the main advantage of this pruning method over other complexity reduction methods suitable for this case.

[00476] Вернемся к примеру скопления на ФИГ. 25 и, начиная с крайней левой позиции (позиция №1), будем продвигаться вправо по одной позиции основания за раз, используя в качестве порога обрезания оценку 60 по шкале phred на каждой итерации. Пусть {, m=1…Mj} представляет решения-кандидаты на j-й итерации. На ФИГ. 28 показаны решения-кандидаты на первой итерации, представляющие все комбинации оснований C и G, перечисленные в порядке убывания вероятности. Для любого решения с эквивалентными зеркально-отраженными представлениями (полученными путем обмена местами фаз) здесь показано только одно представление. Для всех решений-кандидатов можно вычислить вероятности, и те вероятности, которые ниже порога обрезания (указанного сплошной линией на ФИГ. 28), можно отбросить. Как показано на ФИГ. 28, в результате способов обрезания, описанных в настоящем документе, выживут шесть кандидатов.[00476] Returning to the cluster example in FIG. 25 and, starting from the leftmost position (position #1), we will move to the right one base position at a time, using a phred score of 60 as the cutoff threshold at each iteration. Let be { , m=1…M j } represents candidate solutions at the jth iteration. In FIG. Figure 28 shows the candidate solutions in the first iteration, representing all combinations of bases C and G, listed in descending order of probability. For any solution with equivalent mirror-image representations (obtained by exchanging phase positions), only one representation is shown here. For all candidate solutions, probabilities can be calculated, and those probabilities that are below a cutoff threshold (indicated by the solid line in FIG. 28) can be discarded. As shown in FIG. 28, six candidates will survive as a result of the circumcision methods described herein.

[00477] Далее, как показано на ФИГ. 29, дерево можно выращивать путем нахождения всех комбинаций выживших на итерации №1 кандидатов и оснований-кандидатов (C и A) в позиции №2. Частичный список новых кандидатов показан на ФИГ. 29 опять в порядке убывания вероятности. Снова можно вычислить вероятности и сравнить с порогом обрезания, и в данном случае выживут 5 кандидатов.[00477] Next, as shown in FIG. 29, the tree can be grown by finding all combinations of candidates surviving at iteration #1 and candidate bases (C and A) at position #2. A partial list of new candidates is shown in FIG. 29 again in descending order of probability. Again the probabilities can be calculated and compared to the cutoff threshold, and in this case 5 candidates will survive.

[00478] Наконец, можно определить все комбинации выживших на итерации №2 кандидатов и оснований кандидатов в позиции №3(A и T). Окончательные кандидаты и их связанные вероятности показаны на ФИГ. 30. Соответственно, при вычислении вероятностей отдельных вариантов получится гетерозиготный ОНП A→C в позиции №2 области №1с оценкой качества 50,4 по шкале phred, что совпадает с результатом, полученным с помощью вычисления перебором. В данном примере обрезание не оказало значительного влияния на конечный результат, но в целом обрезание может влиять на вычисление, часто приводя к более достоверной оценке.[00478] Finally, all combinations of candidates surviving at iteration #2 and candidate bases at position #3 (A and T) can be determined. The final candidates and their associated probabilities are shown in FIG. 30. Accordingly, when calculating the probabilities of individual variants, the result will be a heterozygous SNP A→C in position No. 2 of region No. 1 with a quality score of 50.4 on the phred scale, which coincides with the result obtained using brute force calculation. In this example, trimming did not have a significant effect on the final result, but in general, trimming can affect the calculation, often leading to a more reliable estimate.

[00479] Существуют множество возможных вариантов реализации этого подхода, которые могут влиять на рабочие характеристики и сложность системы, и разные варианты могут подходить для разных сценариев. Например, возможны отличия в принятии решения о том, какие области нужно включать. Например, определитель вариантов может быть выполнен таким образом, чтобы перед выполнением совместного обнаружения во множестве областей определять, нужно ли обрабатывать данную активную область отдельно или совместно с другими областями, и если совместно, то может затем определять, какие области нужно включать. В других случаях некоторые реализации могут опираться на список вторичных выравниваний, предоставляемый сопоставителем для информации или принятия решения иным образом. В других реализациях может использоваться база данных гомологичных областей, вычисленных в автономном режиме, например, на основе поиска референсного генома.[00479] There are many possible implementations of this approach that can affect system performance and complexity, and different options may be suitable for different scenarios. For example, there may be differences in deciding which areas to include. For example, the variant determiner may be configured to determine, before performing joint detection across multiple regions, whether a given hot region should be processed separately or in conjunction with other regions, and if jointly, may then determine which regions to include. In other cases, some implementations may rely on the list of secondary alignments provided by the matcher for information or otherwise making a decision. Other implementations may use a database of homologous regions computed offline, for example based on a reference genome search.

[00480] Соответственно, полезным этапом в таких операциях является принятие решения о том, какие позиции нужно включать. Например, необходимо отметить, что различные области, представляющие интерес, могут быть не самодостаточными и/или изолированными от примыкающих областей. Следовательно, информация в скоплении может влиять на вероятность разделенных оснований значительно сильнее, чем общая длина рида (например, длина парного рида или длина длинной молекулы). Поэтому необходимо принимать решение, какие позиции включать в вычисление MRJD, и количество позиций не ограничено (даже при обрезании). Например, в некоторых реализациях могут обрабатываться перекрывающиеся блоки позиций и обновляться результаты для подмножества позиций на основе уровня достоверности в этих позициях или полноты подтверждающих данных в этих позициях (например, позиции возле середины блока, как правило, имеют более полные подтверждающие данные, чем те, что расположены возле края).[00480] Accordingly, a useful step in such operations is to decide which items to include. For example, it should be noted that the various regions of interest may not be self-contained and/or isolated from adjacent regions. Therefore, the information in the cluster can influence the probability of separated bases much more than the overall read length (e.g., pairwise read length or long molecule length). Therefore, decisions must be made as to which positions to include in the MRJD calculation, and the number of positions is not limited (even if trimmed). For example, some implementations may process overlapping blocks of positions and update results for a subset of positions based on the level of confidence in those positions or the completeness of the supporting data in those positions (for example, positions near the middle of a block tend to have more complete supporting data than those that are located near the edge).

[00481] Другим определяющим фактором может быть порядок, в котором могут добавляться новые позиции. Например, в случае обрезанного MRJD порядок добавления новых позиций может влиять на рабочие характеристики. Например, в некоторых реализациях новые позиции могут добавляться на основе расстояния до уже включенных позиций или степени связности с этими позициями (например, количества ридов, перекрывающих обе позиции). Кроме того, существуют также множество вариантов того, как может выполняться обрезание. В примере, приведенном выше, обрезание основывалось на фиксированном пороге вероятности, но обычно порог обрезания может быть адаптивным или основанным на количестве выживших кандидатов. Например, в простой реализации порог может устанавливаться для поддержания количества кандидатов ниже фиксированного числа, тогда как в более сложной реализации порог может устанавливаться на основе анализа затрат и выгод включения дополнительных кандидатов.[00481] Another determining factor may be the order in which new items may be added. For example, in the case of a trimmed MRJD, the order in which new positions are added may affect performance. For example, in some implementations, new positions may be added based on the distance to already included positions or the degree of connectivity to those positions (eg, the number of reads that overlap both positions). Additionally, there are also many variations in how circumcision can be performed. In the example above, the cutoff was based on a fixed probability threshold, but typically the cutoff threshold can be adaptive or based on the number of surviving candidates. For example, in a simple implementation, the threshold may be set to keep the number of candidates below a fixed number, while in a more complex implementation, the threshold may be set based on a cost-benefit analysis of including additional candidates.

[00482] В различных реализациях обрезание может выполняться на основе вероятностей P(R|Gm) вместо априорных вероятностей P(Gm|R). Преимуществом здесь является возможность устранения эквивалентных зеркально отраженных представлений по всем областям (в дополнение к фазам). Данное преимущество, по меньшей мере частично, компенсируется недостатком, заключающимся в том, то кандидаты с очень низкими априорными вариантами не обрезаются, что в различных случаях может быть полезным. Поэтому полезное решение может зависеть от сценария. Если обрезание выполняется, например, на основе P(R|Gm), то после заключительной итерации будет выполняться байесовское вычисление.[00482] In various implementations, pruning may be performed based on probabilities P(R|G m ) instead of prior probabilities P(G m |R). The advantage here is the ability to eliminate equivalent mirrored representations across all regions (in addition to phases). This advantage is at least partially offset by the disadvantage that candidates with very low priors are not pruned, which can be useful in various cases. Therefore, the useful solution may depend on the scenario. If the pruning is performed based on P(R|G m ), for example, then a Bayesian computation will be performed after the final iteration.

[00483] Кроме того, в приведенном выше примере процесс останавливался после обработки все позиций оснований в показанном скоплении, но возможны и другие критерии остановки. Например, если поиск решения осуществляется только для подмножества позиций оснований (например, при обработке перекрывающихся блоков), процесс может быть остановлен, когда результат для этого подмножества найден с достаточным уровнем достоверности, или когда достоверность перестала расти по мере добавления еще позиций. Однако в более сложны реализациях может выполняться какого-либо рода анализ затрат и выгод с присвоением весом стоимости вычисления в зависимости потенциальной ценности добавления дополнительных позиций.[00483] Additionally, in the example above, the process stopped after processing all base positions in the cluster shown, but other stopping criteria are possible. For example, if the search for a solution is carried out only for a subset of the base positions (for example, when processing overlapping blocks), the process can be stopped when a result for this subset is found with a sufficient level of confidence, or when the confidence stops increasing as more positions are added. However, more sophisticated implementations may perform some sort of cost-benefit analysis, assigning a weight to the cost of the computation depending on the potential value of adding additional items.

[00484] Возможно, априорные вероятности тоже будут полезны. Например, в приведенных выше примерах использовалась простая модель IID, но могут быть использованы и другие модели. Например, необходимо отметить, что кластеры вариантов более распространены, чем можно было предсказать с помощью модели IID. Также необходимо отметить, что варианты с большей степенью вероятности встречаются в позициях, где референсы отличаются друг от друга. Следовательно, учет таких знаний в априорных вероятностях P(Gm) может улучшить характеристики обнаружения и дать более хорошие кривые РХП. В частности, необходимо отметить, что среди специалистов в области геномики нет четкого понимания в отношении априорных вероятностей для гомологических областей. Поэтому в некоторых реализациях возможно обновление априорных моделей по мере появления более качественной информации. Это может происходить автоматически по мере получения дополнительных результатов. Такие обновления могут основываться на других биологических образцах или других областях генома того же образца, изучение которых может быть применено к способам, изложенным в настоящем документе, для дальнейшего продвижения более быстрого и точного анализа.[00484] Perhaps prior probabilities will also be useful. For example, the examples above used a simple IID model, but other models can be used. For example, it should be noted that variant clusters are more common than would be predicted by the IID model. It should also be noted that variants are more likely to occur in positions where the references differ from each other. Therefore, incorporating such knowledge into the prior probabilities P(G m ) can improve detection performance and produce better ROC curves. In particular, it should be noted that there is no clear understanding among genomics experts regarding prior probabilities for homology regions. Therefore, in some implementations it is possible to update prior models as better information becomes available. This may happen automatically as more results are obtained. Such updates may be based on other biological samples or other genomic regions of the same sample, the study of which can be applied to the methods set forth herein to further advance faster and more accurate analysis.

[00485] Соответственно, в некоторых случаях может быть реализован итеративный процесс MRJD. А именно, методика, описанная в настоящем документе, может быть расширена, чтобы обеспечить возможность передачи сообщений между связанными областями с целью дальнейшего снижения сложности и/или повышения характеристик обнаружения системы. Например, результаты вычисления в одном месте могут быть использованы в качестве входной априорной вероятности для вычисления в соседнем месте. Кроме того, в некоторых реализациях может использоваться сочетание обрезания и выполнения итераций для достижения требуемого компромисса между рабочими характеристиками и сложностью.[00485] Accordingly, in some cases an iterative MRJD process may be implemented. Namely, the technique described herein can be extended to allow messages to be passed between related domains to further reduce complexity and/or improve the detection performance of the system. For example, the results of a computation at one location can be used as an input prior probability for a computation at a nearby location. Additionally, some implementations may use a combination of pruning and iteration to achieve the desired trade-off between performance and complexity.

[00486] Кроме того, возможна реализация приготовления образца для оптимизации процесса MRJD. Например, в случае секвенирования спаренных концов, возможно, будет полезно иметь жесткое распределение по размеру инсерции при использовании традиционного обнаружения. Однако в различных случаях введение вариации в размер инсерции могло бы значительно улучшить рабочие характеристики MRJD. Например, образец может быть приготовлен для умышленного введения бимодального распределения, многомодального распределения или распределения с колоколообразной кривой с более высокой вариацией, чем, как правило, реализуют для традиционного обнаружения.[00486] It is also possible to implement sample preparation to optimize the MRJD process. For example, in the case of paired-end sequencing, it may be useful to have a rigid insertion size distribution when using traditional detection. However, in various cases, introducing variation in the insertion size could significantly improve the performance of MRJDs. For example, a sample may be prepared to intentionally introduce a bimodal distribution, a multimodal distribution, or a bell curve distribution with higher variation than is typically implemented for traditional detection.

[00487] На ФИГ. 31 показаны кривые РХП для MRJD и традиционного детектора для человеческого образца NA12878 в выбранных областях генома с одной гомологичной копией, так что N = 2, с меняющимися степенями подобия референсной последовательности. Для этого набора данных использовано секвенирование спаренных концов с длиной рида 101 и средним размер инсерции приблизительно 400. Как показано на ФИГ. 31, MRJD обеспечивает резко улучшенную чувствительность и специфичность в этих областях по сравнению с традиционными способами обнаружения. На ФИГ. 32 показаны те же самые результаты как функция от подобия последовательности, измеряемой в окне из 1000 оснований (например, если референсы отличаются 10 основаниями из 1000, то подобие составляет 99,0 процента). Можно заметить, что в случае этого набора данных традиционное обнаружение начинает плохо работать при подобии последовательности ~0,98, тогда как MRJD работает достаточно хорошо вплоть до 0,995 и даже выше.[00487] In FIG. Figure 31 shows ROC curves for MRJD and the conventional detector for the human sample NA12878 in selected regions of the genome with one homologous copy, so N = 2, with varying degrees of similarity to the reference sequence. For this data set, paired-end sequencing was used with a read length of 101 and an average insertion size of approximately 400. As shown in FIG. 31, MRJD provides dramatically improved sensitivity and specificity in these areas compared to traditional detection methods. In FIG. Figure 32 shows the same results as a function of sequence similarity measured over a 1000-base window (e.g., if the references differ by 10 bases out of 1000, then the similarity is 99.0 percent). It can be observed that for this dataset, traditional detection starts to perform poorly at sequence similarity of ~0.98, while MRJD performs quite well up to 0.995 and even higher.

[00488] Кроме того, в различных случаях данная методика может быть расширена, чтобы обеспечить возможность передачи сообщений между связанными областями с целью дальнейшего снижения сложности и/или повышения характеристик обнаружения. Например, результаты вычисления в одном месте могут быть использованы в качестве входной априорной вероятности для вычисления в соседнем месте, и в некоторых реализациях может использоваться сочетание обрезания и выполнения итераций для достижения требуемого компромисса между рабочими характеристиками и сложностью. В конкретных случаях, как указано выше, перед выполнением совместного обнаружения во множестве областей определитель вариантов может определять, следует ли обрабатывать данную активную область отдельно или совместно с другими областями. Кроме того, как указано выше, некоторые реализации могут опираться на список вторичных выравниваний, предоставляемый сопоставителем, для принятия такого решения. В других реализациях может использоваться база данных гомологичных областей, вычисленных в автономном режиме на основе поиска референсного генома.[00488] Additionally, in various cases, this technique can be extended to allow messages to be passed between related areas to further reduce complexity and/or improve detection performance. For example, the results of a computation at one location may be used as an input prior to a computation at an adjacent location, and some implementations may use a combination of pruning and iteration to achieve the desired tradeoff between performance and complexity. In specific cases, as noted above, before performing joint detection across multiple regions, the variant determiner may determine whether a given active region should be processed separately or in conjunction with other regions. Additionally, as noted above, some implementations may rely on the list of secondary alignments provided by the matcher to make this decision. Other implementations may use a database of homologous regions computed offline based on a reference genome search.

[00489] Ввиду вышеизложенного, можно реализовать частично определенную скрытую марковскую модель (PD-HMM) таким образом, чтобы использовать преимущества MRJD. Например, MRJD может отдельно оценивать вероятность наблюдения части или всех ридов при данном возможном совместном диплотипе, который содержит по одному гаплотипу на каждую плоидию в каждой гомологичной референсной области, например, в случае двух гомологичных областей в диплоидных хромосомах каждый совместный диплотип будет содержать четыре гаплотипа. В таких случаях можно рассматривать все или часть возможных гаплотипов, например, путем конструирования, например, за счет изменения каждой референсной области с помощью каждого возможного подмножества из всех вариантов, для которых имеются нетривиальные подтверждающие данные. Однако, в случае длинных гомологичных референсных областей количество возможных вариантов большое, поэтому количество гаплотипов (комбинаций вариантов) вырастает экспоненциально, и количество совместных диплотипов (комбинаций гаплотипов) может стать астрономическим.[00489] In view of the above, it is possible to implement a partially defined hidden Markov model (PD-HMM) in such a way as to take advantage of the MRJD. For example, MRJD can separately estimate the probability of observing part or all of the reads for a given possible joint diplotype that contains one haplotype per ploidy in each homologous reference region, e.g., in the case of two homologous regions in diploid chromosomes, each joint diplotype will contain four haplotypes. In such cases, all or part of the possible haplotypes can be considered, for example by construction, for example by changing each reference region using each possible subset from all variants for which there is non-trivial supporting evidence. However, in the case of long homologous reference regions, the number of possible variants is large, so the number of haplotypes (combinations of variants) grows exponentially, and the number of joint diplotypes (combinations of haplotypes) can become astronomical.

[00490] Следовательно, для сохранения управляемости вычислениями MRJD, возможно, нецелесообразно проверять все возможные совместные диплотипы. Скорее, в некоторых случаях систему можно выполнить с возможностью проверки только небольших подмножеств «наиболее вероятных» совместных диплотипов. Эти «наиболее вероятные» совместные диплотипы могут быть определены путем инкрементального построения дерева частично определенных совместных диплотипов. В таких случаях каждый узел дерева может быть частично определенным диплотипом, который содержит частичной определенный гаплотип на каждую плоидию каждой гомологичной референсной области. В этом случае частично определенный гаплотип может содержать референсную область, модифицированную частично определенным подмножеством возможных вариантов. Соответственно, частично определенное подмножество возможных вариантов может для каждого возможного варианта содержать индикацию одного из трех состояний: вариант определен и присутствует, или вариант определен и отсутствует, или вариант еще не определен, например, он может присутствовать или отсутствовать. В корне дерева все варианты не определены во всех гаплотипах; узлы дерева, разветвляющиеся последовательно при отдалении от корня имеют последовательно больше вариантов, определенных как присутствующие или отсутствующие в каждом гаплотипе каждого совместного диплотипа узла.[00490] Therefore, to keep MRJD calculations manageable, it may not be practical to test all possible joint diplotypes. Rather, in some cases the system can be designed to test only small subsets of the “most likely” joint diplotypes. These "most likely" joint diplotypes can be determined by incrementally constructing a tree of partially identified joint diplotypes. In such cases, each node of the tree may be a partially defined diplotype, which contains a partially defined haplotype for each ploidy of each homologous reference region. In this case, a partially defined haplotype may contain a reference region modified by a partially defined subset of possible variants. Accordingly, the partially defined subset of possible options may, for each possible option, comprise an indication of one of three states: the option is defined and present, or the option is defined and absent, or the option is not yet defined, for example, it may be present or absent. At the root of the tree, all variants are not defined in all haplotypes; tree nodes that branch successively further away from the root have successively more variants identified as being present or absent in each haplotype of each joint diplotype of the node.

[00491] Кроме того, в контексте данного дерева совместных диплотипов, как описано выше, объем вычислений MRJD сохраняется ограниченным и управляемым за счет обрезания ветвей дерева, в которых все узлы совместных диплотипов маловероятны, например, с вероятностью от умеренной до крайней, по сравнению с другими более вероятными ветвями или узлами. Соответственно, такое обрезание можно выполнять на ветвях или узлах, которые до сих пор лишь частично определены, например несколько или много вариантов еще не определены как присутствующие или отсутствующие в гаплотипах совместного диплотипа обрезанного узла. Следовательно, в таком случае полезно иметь возможность оценки или связывания правдоподобия каждого наблюдаемого рида в предположении истинности частично определенного гаплотипа. Вычисление модифицированной парной скрытой марковской модели (pHMM), обозначаемой «PD-HMM» в случае «частично определенной парной скрытой марковской модели», полезно для оценки вероятности P(R|H) наблюдения рида R в предположении, что истинный гаплотип H* согласуется с частично определенным гаплотипом H. В данном контексте «согласуется» означает, что некоторый конкретный истинный гаплотип H* согласуется с частично определенным гаплотипом H с точки зрения всех вариантов, присутствие или отсутствие которых определено в H, но для вариантов, не определенных в H, H* может согласоваться с референсной последовательностью, как модифицированной, так и немодифицированной каждым неопределенным вариантом.[00491] Additionally, in the context of a given co-diplotype tree as described above, the amount of MRJD computation is kept limited and manageable by pruning branches of the tree in which all co-diplotype nodes are unlikely, e.g., moderate to extreme, compared to other more likely branches or nodes. Accordingly, such pruning can be performed on branches or nodes that are still only partially determined, for example, several or many variants have not yet been determined to be present or absent in the haplotypes of the joint diplotype of the pruned node. Therefore, in such a case, it is useful to be able to estimate or associate the likelihood of each observed read under the assumption of the truth of a partially defined haplotype. Computing a modified pairwise hidden Markov model (pHMM), denoted "PD-HMM" in the case of a "partially defined pairwise hidden Markov model", is useful for estimating the probability P(R|H) of observing read R, assuming that the true haplotype H* is consistent with partially defined haplotype H. In this context, "consistent" means that some particular true haplotype H* is consistent with the partially defined haplotype H for all variants whose presence or absence is defined in H, but for variants not defined in H, H * may be consistent with the reference sequence, either modified or unmodified by each unspecified variant.

[00492] Отметим, что простого выполнения обычного вычисления pHMM, как правило, недостаточно для охвата некоторым выбранным подгаплотипом H только определенных позиций вариантов. Вообще важно построить дерево совместных диплотипов с неопределенными вариантами, решаемыми в эффективном порядке, который обычно отличается от их геометрического порядка, поэтому частично определенный гаплотип H будет, как правило, иметь много неопределенных позиций вариантов, перемежающихся с определенными. Для правильного рассмотрения связанных с инделами ошибок ПЦР полезно использовать напоминающее pHMM вычисление, охватывающее все определенные варианты и значительный радиус вокруг них, что может быть не совместимо с попытками избежать неопределенных позиций вариантов.[00492] Note that simply performing a conventional pHMM calculation is generally not sufficient to ensure that some selected H subhaplotype covers only certain variant positions. In general, it is important to construct a tree of co-diplotypes with uncertain variants resolved in an efficient order, which is usually different from their geometric order, so that a partially defined haplotype H will tend to have many uncertain variant positions interspersed with certain ones. To properly address indel-related PCR errors, it is useful to use a pHMM-like calculation that covers all defined variants and a significant radius around them, which may be inconsistent with attempts to avoid uncertain variant positions.

[00493] Соответственно, входные данные PD-HMM могут включать в себя подвергнутую определению вариантов нуклеотидную последовательность рида R, оценки качества основания (например, по шкале phred) определенных нуклеотидов рида R, исходный гаплотип H0 и список неопределенных вариантов (редакций) из H0. В число неопределенных вариантов могут входить замены одного основания (ОНП), замены множества оснований (МНП), инсерции и делеции. Преимуществом является то, что этого может быть достаточно для поддержки неопределенных ОНП и делеций. Неопределенные МНП могут быть неполностью, но в достаточной степени представлены как множество независимых ОНП, Неопределенная инсерция может быть представлена первой редакцией инсерции в исходном гаплотипе с последующим указанием неопределенной делеции, которая отменяет данную инсерцию.[00493] Accordingly, PD-HMM input data may include the variant-determined nucleotide sequence of the R read, base quality scores (eg, phred scale) of specific nucleotides of the R read, the initial H0 haplotype, and a list of undefined variants (revisions) from H0. Undefined variants may include single base substitutions (SBS), multiple base substitutions (MBS), insertions, and deletions. The advantage is that this may be sufficient to support undefined SNPs and deletions. Undefined SNPs may be incompletely but sufficiently represented as multiple independent SNPs. An undefined insertion may be represented by the first edition of the insertion in the original haplotype followed by an undefined deletion that abolishes the insertion.

[00494] На неопределенные делеции можно наложить ограничения, чтобы облегчить реализацию жестко смонтированного движка с ограниченной памятью и логикой, например, запретить перекрытие двух неопределенных делеций (удаление одних и тех же оснований исходного гаплотипа). При необходимости проверки частично определенного гаплотипа с помощью неопределенных вариантов, нарушающих такие ограничения, это можно решить путем преобразования одного или более неопределенных вариантов в определенные варианты за счет большего числа операций PD-HMM, охватывающих случаи с присутствием и отсутствием этих вариантов. Например, если две неопределенные делеции A и B нарушают ограничение вследствие перекрытия друг с другом в исходном гаплотипе H0, то делеция B может быть отредактирована в H0 с получением H0B, и могут быть выполнены две операции PD-HMM, использующие только неопределенную делецию A, одну для исходного гаплотипа H0, а другую для исходного гаплотипа H0B, и полученная в результате этих двух операций PD-HMM максимальная вероятность может быть сохранена.[00494] Restrictions can be placed on undefined deletions to facilitate the implementation of a hard-wired engine with limited memory and logic, such as preventing two undefined deletions from overlapping (removing the same bases of the original haplotype). If there is a need to test a partially defined haplotype with undefined variants that violate such constraints, this can be addressed by converting one or more undefined variants into defined variants through a larger number of PD-HMM operations covering cases with and without those variants. For example, if two undefined deletions A and B violate the constraint due to overlap with each other in the original H0 haplotype, then deletion B can be edited into H0 to produce H0B, and two PD-HMM operations using only the undefined deletion A, one for the original haplotype H0, and the other for the original haplotype H0B, and the resulting maximum probability from these two PD-HMM operations can be retained.

[00495] Результатом операции PD-HMM может быть оценка максимума P(R|H*) среди всех гаплотипов H*, которые могут быть сформированы путем редактирования H0 с использованием только любого подмножества неопределенных вариантов. Максимизация может выполняться локально и вносить вклад в напоминающее pHMM динамическое программирование в данной ячейке, как если бы примыкающий неопределенный вариант присутствовал или отсутствовал в гаплотипе в зависимости от того, какая оценка выше, например, вносить вклад в более высокую частную вероятность. Такая максимизация во время динамического программирования может привести к более высоким оценках максимума P(R|H*), чем истинная максимизация она отдельных чистых гаплотипах H*, но разница обычно несущественная.[00495] The result of the PD-HMM operation may be an estimate of the maximum P(R|H*) among all H* haplotypes that can be formed by editing H0 using only any subset of undefined variants. The maximization can be performed locally and contribute to pHMM-like dynamic programming in a given cell as if an adjacent uncertain variant were present or absent in the haplotype depending on which score is higher, for example contributing to a higher partial probability. Such maximization during dynamic programming may result in higher estimates of the P(R|H*) maximum than true maximization of individual pure H* haplotypes, but the difference is usually negligible.

[00496] Неопределенные ОНП могут быть включены в PD-HMM путем разрешения задания одного или более значений совпадающих нуклеотидов для каждой позиции гаплотипа. Например, если основание 30 гаплотипа H0 представляет собой «C», а неопределенный ОНП заменяет это основание «C» на «T», то гаплотип в операции PD-HMM может указывать позицию 30 как оба основания, «C» и «T». При обычном динамическом программировании pHMM любой переход в состояние «M» приводит к умножению вероятности пути на вероятность правильного определения основания (если позиция гаплотипа совпадает с позицией рида) или на вероятность определенной ошибки определения основания (если позиция гаплотипа не совпадает с позицией рида); в случае PD-HMM это изменено путем использования вероятности правильного определения, если позиция рида совпадает с любой из возможных позиций гаплотипа (например, «C» или «T»), и вероятности ошибки определения основания в противном случае.[00496] Undefined SNPs can be included in the PD-HMM by allowing one or more matching nucleotide values to be specified for each haplotype position. For example, if base 30 of haplotype H0 is "C" and an undefined SNP replaces that base "C" with "T", then the haplotype in the PD-HMM operation may specify position 30 as both bases "C" and "T". In normal dynamic programming of pHMM, any transition to the “M” state results in the path probability being multiplied by the probability of a correct base determination (if the haplotype position matches the read position) or by the probability of a certain base determination error (if the haplotype position does not coincide with the read position); in the case of PD-HMM, this is modified by using the probability of a correct assignment if the read position matches any of the possible haplotype positions (e.g., “C” or “T”), and the probability of a base assignment error otherwise.

[00497] Неопределенные делеции гаплотипа могут быть включены в PD-HMM путем пометки флагом необязательно удаляемых позиций гаплотипа и изменения динамического программирования pHMM с тем, чтобы позволить путям выравнивания проходить, минуя по горизонтали сегменты гаплотипа с неопределенной делецией без потери вероятности. Это можно сделать различными способами, но с соблюдением общего правила, заключающегося в том, что значения вероятности состояний M, I и/или D могут переходить по горизонтали (вдоль оси гаплотипа) по всему промежутку неопределенной делеции без уменьшения обычных вероятностей открытия гэпа и продления гэпа.[00497] Uncertain haplotype deletions can be included in the PD-HMM by flagging optionally deleted haplotype positions and changing the dynamic programming of the pHMM to allow alignment paths to bypass laterally the haplotype segments with an undefined deletion without losing probability. This can be done in a variety of ways, but the general rule is that the probabilities of states M, I and/or D can move horizontally (along the haplotype axis) across the entire span of an unspecified deletion without reducing the normal probabilities of gap opening and gap extension .

[00498] В одном конкретном варианте реализации позиции, где начинаются неопределенные делеции, помечают флагом «F1», а позиции, где неопределенные делеции заканчиваются, помечают флагом «F2». В дополнение к «состояниям» M, I и D (представлениям частной вероятности) для каждой ячейки матрицы HMM (гаплотип по горизонтали/рид по вертикали) каждая ячейка PD-HMM может дополнительно содержать состояния «обхода» BM, BI и BD. В помеченных флагом F1 столбцах гаплотипа состояния BM, BI и BD принимают значения, копируемые из состояний M, I и D ячейки слева, соответственно. В не помеченных флагом F2 столбцах гаплотипа, в частности, в столбцах, начинающихся со столбца, помеченного флагом F1, и далее внутрь неопределенной делеции, состояния BM, BI и BD передают свои значения состояниям BM, BI и BD ячейки справа, соответственно. В помеченных флагом F2 столбцах гаплотипа вместо состояний M, I и D, используемых для вычисления состояний примыкающих ячеек, используют максимум M и BM, максимум I и BI и максимум D и BD, соответственно. Это показано в качестве примера в столбце F2 как мультиплексированный выбор сигналов из регистров M и BM, I и BI, D и BD.[00498] In one particular embodiment, positions where undefined deletions begin are marked with a flag "F1", and positions where undefined deletions end are marked with a flag "F2". In addition to the M, I, and D “states” (partial probability representations) for each cell of the HMM matrix (horizontal haplotype/vertical read), each PD-HMM cell may additionally contain the “bypass” states BM, BI, and BD. In the haplotype columns flagged with the F1 flag, the states BM, BI and BD take values copied from the states M, I and D of the cell on the left, respectively. In non-F2-flagged haplotype columns, particularly in columns starting from the F1-flagged column and continuing into the undefined deletion, the BM, BI, and BD states transfer their values to the BM, BI, and BD states of the cell on the right, respectively. In haplotype columns flagged with the F2 flag, the maximum M and BM, maximum I and BI, and maximum D and BD are used instead of the states M, I, and D used to calculate the states of adjacent cells, respectively. This is shown as an example in column F2 as a multiplexed selection of signals from registers M and BM, I and BI, D and BD.

[00499] Отметим, что хотя регистры состояния BM, BI и DB могут быть представлены в столбцах с F1 по F2, и максимизирующие мультиплексоры M/BM, I/BI и D/BD могут быть показаны в столбце F2, эти компоненты могут присутствовать для вычислений всех ячеек, позволяя обрабатывать неопределенные делеции в любой позиции и обеспечивая возможность множества неопределенных делеций с соответствующими флагами F1 и F2 по всему гаплотипу. Отметим также, что флаги F1 и F2 могут быть в одном и том же столбце, когда неопределенная делеция состоит из одного основания. Так же необходимо отметить, что матрицу PD-HMM ячеек можно изобразить в виде схематического представления логических вычислений состояний M, I, D, BM, BI и BD, но в аппаратной реализации может присутствовать меньшее количество ячеек, вычисляющих логические элементы, причем организованных в конвейер соответствующим образом для вычисления значений состояний M, D, I, BM, BI и BD с высокими тактовыми частотами, а ячейки матрицы могут вычисляться с различной степенью распараллеливания аппаратного обеспечения в различных порядках в соответствии с внутренне присущими логическими зависимостями вычисления PD-HMM.[00499] Note that although the status registers BM, BI and DB may be shown in columns F1 through F2, and the maximizing multiplexers M/BM, I/BI and D/BD may be shown in column F2, these components may be present for calculations of all cells, allowing the processing of undefined deletions at any position and allowing multiple undefined deletions with corresponding F1 and F2 flags throughout the haplotype. Note also that flags F1 and F2 can be in the same column when the undefined deletion consists of a single base. It should also be noted that the matrix of PD-HMM cells can be depicted as a schematic representation of logical calculations of the states M, I, D, BM, BI and BD, but in the hardware implementation there may be a smaller number of cells that calculate logical elements, and organized in a pipeline appropriately to compute the values of the M, D, I, BM, BI and BD states at high clock rates, and the matrix cells can be computed with varying degrees of hardware parallelization in different orders according to the inherent logical dependencies of the PD-HMM computation.

[00500] Таким образом, в данном варианте реализации значения состояний pHMM в одном столбце могут находиться непосредственно слева от делеции, причем они могут быть захвачены и переданы вправо, без изменения, в крайний справа столбец этой промежуточной делеции, где они будут подставлены в вычисления pHMM всякий раз, когда превзойдут оценки нормального пути. В случае выбора этих максимальных значений значения состояний «обхода» BM, BI и BD представляют результаты локального динамического программирования в предположении наличия делеции, тогда как значения «нормальных» состояний M, и D представляют результаты локального динамического программирования в предположении отсутствия неопределенной делеции.[00500] Thus, in this embodiment, the pHMM state values in one column can be immediately to the left of the deletion, and they can be captured and passed right, without modification, to the rightmost column of this intermediate deletion, where they will be substituted into the pHMM calculations whenever they exceed the normal path estimates. When these maximum values are selected, the values of the bypass states BM, BI, and BD represent the results of local dynamic programming assuming the presence of a deletion, while the values of the normal states M, and D represent the results of local dynamic programming assuming the absence of an indeterminate deletion.

[00501] В другом варианте реализации может быть использовано одно состояние обхода, например, состояние BM, принимающее значение из состояния M столбца, помеченного флагом F1, или принимающее сумму состояний M, D и/или I. В другом варианте реализации вместо использования состояний «обхода» удаляют штрафы на открытие гэпа/продление гэпа в столбцах неопределенных делеций. В другом варианте реализации состояния обхода вносят аддитивный вклад в динамическое программирование вправо от неопределенных делеций, а не используются для локальной максимизации. В еще одном варианте реализации используют в большем или меньшем количестве, или по-другому определенные, или по-другому располагаемые флаги позиции гаплотипа для инициирования обхода или подобных действий, например, один флаг, указывающий на принадлежность к неопределенной делеции. В дополнительном варианте реализации могут участвовать две или более перекрывающиеся неопределенные делеции, например, с использованием дополнительных флагом и/или состояний обхода. Кроме того, поддерживаются неопределенные инсерции в гаплотипе вместо или в дополнение к неопределенным делециям. Аналогичным образом поддерживаются неопределенные инсерции и/или делеции на оси рида вместо или в дополнение к неопределенным делециям и/или инсерциям на оси гаплотипа. В другом варианте реализации поддерживаются неопределенные замены множества оснований в качестве неделимых вариантов (все присутствуют или все отсутствуют). В еще одно варианте реализации поддерживаются неопределенные замены переменной длины в качестве неделимых вариантов. В другом варианте реализации неопределенные варианты штрафуют с использованием фиксированной или конфигурируемой вероятности или коррекций оценки.[00501] In another implementation, a single bypass state may be used, for example, the BM state taking the value from the M state of the column flagged with the F1 flag, or taking the sum of the M, D and/or I states. In another implementation, instead of using the states " bypass" remove penalties for opening a gap/extending a gap in columns of undefined deletions. In another implementation, bypass states contribute additively to dynamic programming to the right of undefined deletions, rather than being used for local maximization. In yet another embodiment, more or less, or differently defined, or differently positioned haplotype position flags are used to initiate bypass or similar actions, for example, one flag indicating membership in an unspecified deletion. In an additional embodiment, two or more overlapping undefined deletions may be involved, for example, using additional flags and/or bypass states. In addition, undefined insertions in the haplotype are supported instead of or in addition to undefined deletions. Similarly, undefined insertions and/or deletions on the read axis are supported instead of or in addition to undefined deletions and/or insertions on the haplotype axis. In another embodiment, indefinite substitutions of multiple bases are supported as indivisible variants (all present or all absent). In yet another embodiment, variable length unspecified substitutions are supported as indivisible variants. In another implementation, uncertain options are penalized using fixed or configurable probability or scoring adjustments.

[00502] Данное вычисление PD-HMM может быть реализовано в виде аппаратного движка, например, в технологии FPGA или ASIC, путем расширения архитектуры аппаратного движка для «обычного» вычисления pHMM, или может быть реализовано с помощью одной или более квантовых схем на квантовой вычислительной платформе. В дополнение к конвейерной логике движка для вычисления, передачи и хранения значений состояний M, I и D для различных или последовательных ячеек может быть создана параллельная логика для вычисления, передачи и хранения значений состояний BM, BI и BD, как описано выше в настоящем документе. Ресурсы памяти и порты для хранения и извлечения значений состояний M, I и D могут быть дополнены аналогичными или более широкими или глубокими ресурсами памяти и портами для хранения и извлечения значений состояний BM, BI и BD. Флаги, такие как F1 и F2, могут храниться в памятях наряду со связанными основаниями гаплотипов.[00502] This PD-HMM calculation may be implemented as a hardware engine, such as in FPGA or ASIC technology, by extending the hardware engine architecture for a “conventional” pHMM calculation, or may be implemented using one or more quantum circuits on a quantum computing machine. platform. In addition to the engine pipeline logic for computing, transmitting, and storing M, I, and D state values for different or sequential cells, parallel logic can be created to calculate, transmit, and storing BM, BI, and BD state values, as described above herein. The memory resources and ports for storing and retrieving state values M, I and D may be complemented by similar or wider or deeper memory resources and ports for storing and retrieving state values BM, BI and BD. Flags such as F1 and F2 can be stored in memories along with associated haplotype bases.

[00503] Множество совпадающих нуклеотидов для, например, позиций неопределенного ОНП гаплотипа, могут быть закодированы таким образом, чтобы использовать вектор, содержащий по одному биту на каждое возможное значение нуклеотида. Зависимости вычисления ячеек в матрице pHMM остаются неизменными в PD-HMM, поэтому порядок и организация конвейера вычислений множества ячеек может оставаться тем же самым для PD-HMM. Однако, задержка по времени и/или тактовым циклам для полного вычисления ячейки несколько увеличивается в случае PD-HMM, поскольку требуется сравнивать значения «обычных» и «обходных» состояний и выбирать из них те, что больше. Соответственно, возможно, что преимуществом будет включение одной или более дополнительных стадий конвейера для вычисления ячеек PD-HMM, что приведет к дополнительной задержке в тактовых цикла. Кроме того, другим преимуществом может быть расширение каждой «полосы захвата» ячеек, вычисляемых с помощью одной или более строк, чтобы дольше поддерживать конвейер в заполненном состоянии без проблем с зависимостями.[00503] Multiple matching nucleotides for, for example, positions of an undefined haplotype SNP may be encoded such that a vector containing one bit for each possible nucleotide value is used. The computation dependencies of the cells in the pHMM matrix remain unchanged in the PD-HMM, so the order and organization of the computation pipeline of multiple cells can remain the same for the PD-HMM. However, the delay in time and/or clock cycles for a complete cell computation increases slightly in the case of PD-HMM, since it is necessary to compare the values of the “normal” and “bypass” states and select those that are larger. Accordingly, it is possible that it would be advantageous to include one or more additional pipeline stages for computing PD-HMM cells, which would introduce additional latency in clock cycles. Additionally, another benefit could be to extend each "swap" of cells calculated with one or more rows to keep the pipeline full longer without dependency issues.

[00504] Данное вычисление PD-HMM в два раза больше значений состояний (BM, BI, и BD в дополнение к M, I и D), чем обычное вычисление pHMMВ, и может потребовать примерно в два раза больше аппаратных ресурсов для реализации движка с эквивалентной пропускной способностью. Однако движок PD-HMM обладает преимуществами экспоненциальной скорости и эффективности с точки зрения увеличения неопределенных вариантов по сравнению с обычным движком pHMM, совершающего один прогон для каждого гаплотипа, представляющего отличающуюся комбинацию присутствующих или отсутствующих неопределенных вариантов. Например, если частично определенный гаплотип имеет 30 неопределенных вариантов, каждый из которых может независимо присутствовать или отсутствовать, то существуют 2^30, или более 1 миллиарда, различных специфических гаплотипов, которые пришлось бы обрабатывать с помощью pHMM в противном случае.[00504] This PD-HMM calculation has twice the number of state values (BM, BI, and BD in addition to M, I, and D) than a conventional pHMMB calculation, and may require approximately twice the hardware resources to implement the engine with equivalent throughput. However, the PD-HMM engine has the advantages of exponential speed and efficiency in terms of increasing uncertain variants compared to the conventional pHMM engine, making one run for each haplotype representing a different combination of uncertain variants present or absent. For example, if a partially defined haplotype has 30 undefined variants, each of which may be independently present or absent, then there are 2^30, or over 1 billion, different specific haplotypes that would otherwise have to be handled by pHMM.

[00505] Соответственно, эти и другие подобные операции, описанные в настоящем документе, могут быть выполнены таким образом, чтобы лучше понимать и точнее прогнозировать, что случилось с геномом субъекта, что риды изменились относительно референса. Например, даже если мутации, возможно, встречаются случайным образом, существуют случаи, когда правдоподобие их появления представляется потенциально предсказуемой до некоторой степени. В частности, в некоторых случаях, когда встречаются мутации, они могут возникать в определенных известных местах и в определенных формах. Более конкретно, мутации, если они происходят, будут возникать на одном или другом аллеле, или на том и другом, и обычно чаще возникают в одних местах, чем в других, например, на концах хромосом. Следовательно, эта и другая связанная информация может быть использована для разработки моделей мутации, которые могут быть сформированы и использованы для лучшей оценки вероятного присутствия мутации в одной или более областях генома. Например, учитывая различные априорные знания, например, одну или более моделей мутации, при выполнении анализов геномных вариаций, можно добиться более хороших и более точных результата геномного анализа, например, с более точными разграничениями генетических мутаций.[00505] Accordingly, these and other similar operations described herein can be performed in such a way as to better understand and more accurately predict what has happened to a subject's genome that the reads have changed relative to the reference. For example, even though mutations may occur randomly, there are cases in which the likelihood of their occurrence seems potentially predictable to some extent. In particular, in some cases where mutations occur, they may occur in certain known locations and in certain forms. More specifically, mutations, if they occur, will occur on one or the other allele, or both, and usually occur more often in some places than others, such as at the ends of chromosomes. Therefore, this and other related information can be used to develop mutation models that can be generated and used to better estimate the likely presence of a mutation in one or more regions of the genome. For example, by taking into account various a priori knowledge, such as one or more mutation patterns, when performing analyzes of genomic variations, better and more accurate genomic analysis results can be achieved, for example, with more accurate delineations of genetic mutations.

[00506] Такие модели мутации могут позволить учитывать частоту и/или местоположение различных известных мутаций и/или мутаций, которые, как представляется, происходят в сочетании друг с другом или иным неслучайным образом. Например, установлено, что вариации встречаются преимущественно ближе к концам данной хромосомы. Таким образом, известные модели мутаций могут быть сформированы, сохранены в базе данных, описанной в настоящем документе и использоваться системой для более хорошего прогнозирования наличия одной или более вариаций в анализируемых геномных данных. Кроме того, можно также реализовать процесс машинного обучения, как описано более подробно ниже в настоящем документе, чтобы различные данные результатов, получаемые с помощью анализов, выполняемых здесь, могли быть проанализированы и использованы для более хорошего информирования системы о том, когда нужно предпринимать конкретное определение вариантов, например, в соответствии с принципами машинного обучения, описанными в настоящем документе. А именно, машинное обучение может быть реализовано на совокупных наборах данных, особенно в отношении определенных вариаций, и это обучение может быть использовано для более хорошего формирования более всеобъемлющих моделей мутации, которые, в свою очередь, могут быть использованы для выполнения более точных определений вариаций.[00506] Such mutation models may allow consideration of the frequency and/or location of various known mutations and/or mutations that appear to occur in combination with each other or in an otherwise non-random manner. For example, it has been established that variations occur predominantly closer to the ends of a given chromosome. Thus, known mutation patterns can be generated, stored in the database described herein, and used by the system to better predict the presence of one or more variations in the genomic data being analyzed. In addition, a machine learning process can also be implemented, as described in more detail later in this document, so that the various outcome data generated by the analyzes performed here can be analyzed and used to better inform the system when to make a particular determination. options, for example, in accordance with the machine learning principles described in this document. Namely, machine learning can be implemented on aggregate data sets, especially for specific variations, and this learning can be used to better form more comprehensive mutation models, which in turn can be used to make more accurate variation determinations.

[00507] Следовательно, система может быть выполнена с возможностью рассмотрения различных данных вариаций, проверять данные на различные корреляции и, в случае обнаружения корреляции, такая информация может быть использована для более хорошего взвешивания и, следовательно, более точного определения наличия других вариаций в других образцах генома, например на регулярной основе. Соответственно, подобным образом система, в особенности движок определения вариантов, может постоянно обновляться изученными данными о корреляции варианта, чтобы достигать прогресса в более качественном определении вариантов для получения более хороших и более точных данных результатов.[00507] Therefore, the system can be configured to look at various variation data, check the data for various correlations and, if a correlation is found, such information can be used to better weigh and therefore more accurately determine the presence of other variations in other samples genome, for example on a regular basis. Accordingly, in a similar manner, the system, especially the variant identification engine, can be continuously updated with the learned variant correlation data to make progress in better variant identification to obtain better and more accurate outcome data.

[00508] А именно, можно использовать телеметрию для обновления растущей модели мутации, чтобы достигать улучшенного анализа в системе. Это может быть особенно полезно при анализе образцов, которые некоторым образом связаны друг с другом, например, принадлежат одной и той же географической популяции, и/или может быть использовано для определения того, какой референсный геном из множества референсных геномов может быть лучшим референсным геномом для анализа с его помощью конкретного образца. Кроме того, в различных случаях модель мутации и/или телеметрия могут быть использованы, чтобы лучше выбирать референсный геном для использования в процессах системы и тем самым улучшать точность и эффективность результатов системы. В частности, когда в одном или более описанных в настоящем документе анализов могут быть использованы множество референсных геномов, при выборе для использования преимущество может быть отдано конкретному референсному геному, например, благодаря применению модели мутации при выборе наиболее подходящего референсного генома для применения.[00508] Namely, telemetry can be used to update a growing mutation model to achieve improved analysis in the system. This can be particularly useful when analyzing samples that are related to each other in some way, such as from the same geographic population, and/or can be used to determine which reference genome from a set of reference genomes may be the best reference genome for analysis of a specific sample using it. Additionally, in various cases, mutation model and/or telemetry can be used to better select a reference genome for use in system processes and thereby improve the accuracy and efficiency of system outputs. In particular, when multiple reference genomes may be used in one or more of the assays described herein, the selection for use may be given preference to a particular reference genome, for example, through the use of a mutation model in selecting the most appropriate reference genome for use.

[00509] Необходимо отметить, что при выполнении вторичного анализа фундаментальная структура для каждой картируемоей или выравниваемой области генома может содержать один или более основополагающих генов. Соответственно, в различных случаях это понимание основополагающих генов/или функций белков, которые они кодируют, может обеспечить полезную информацию при выполнении вторичного анализа. В частности, третичные показатели и/или результаты могут быть полезны в протоколах вторичного анализа, выполняемых представленной системой, например, в процессе биологической контекстно-зависимой модели мутации. Более конкретно, поскольку ДНК кодирует гены, а гены кодируют белки, информация о таких белках, которые приводят к мутациям и/или одиозным функциям, может быть использована для информирования моделей мутации, используемых при выполнении вторичного и/или третичного анализа на геноме субъекта.[00509] It should be noted that when performing secondary analysis, the underlying structure for each genomic region being mapped or aligned may contain one or more underlying genes. Accordingly, in various cases, this understanding of the underlying genes/or the functions of the proteins they encode can provide useful information when performing secondary analyses. In particular, tertiary metrics and/or results can be useful in secondary analysis protocols performed by the presented system, for example, in the process of biological context-sensitive mutation model. More specifically, since DNA encodes genes and genes encode proteins, information about such proteins that lead to mutations and/or odious functions can be used to inform mutation models used when performing secondary and/or tertiary analyzes on a subject's genome.

[00510] Например, третичный анализ, например, набор образцов генов, кодирующих мутированные белки, может быть информативным при выполнении вторичного анализа геномных областей, о которых известно, что они кодируют такие мутации. Следовательно, как указано выше, различные результат третичной обработки могут быть использованы для информирования и/или обновления моделей мутации, описанных в настоящем документе, для достижения более высокой точности и эффективности при выполнении различных операций вторичного анализа, описанных в настоящем документе. А именно, информация о мутированных белках, например, контекстуальный третичный анализ, может быть использована для обновления модели мутации прим выполнении вторичного анализа тех областей, о которых известно, что они кодируют белки и/или потенциально содержат такие мутации.[00510] For example, a tertiary analysis, such as a set of samples of genes encoding mutated proteins, can be informative when performing a secondary analysis of genomic regions known to encode such mutations. Therefore, as stated above, the various tertiary processing results can be used to inform and/or update the mutation models described herein to achieve higher accuracy and efficiency when performing the various secondary analysis operations described herein. Namely, information about mutated proteins, such as contextual tertiary analysis, can be used to update the mutation model by performing secondary analysis on regions known to encode proteins and/or potentially harbor such mutations.

[00511] Соответственно, ввиду вышеизложенного, в случае вариантов реализации, включающих в себя ускоренные с помощью FPGA приложения картирования, выравнивания, сортировки и/или определения вариантов, одна или более из этих функций могут быть реализованы в одном или обоих из программных или аппаратных (АО) компонентах обработки, например, в программном обеспечении, исполняемом на традиционных ЦПУ, ГПУ, КПУ, и/или в прошивке, которая может быть внедрена в FPGA, ASIC, sASIC и т.п. В таких случаях ЦПУ и FPGA должны быть выполнены с возможностью обмена данными, чтобы передавать результаты с одного этапа в одном устройстве, например, ЦПУ или FPGA, для обработки на следующем этапе в другом устройстве. Например, при выполнении функции картирования построение больших структур данных, таких как индекс референса, может быть реализовано с помощью ЦПУ, а выполнение хэш-функции применительно к ним может быть реализовано с помощью FPGA. В таком случае ЦПУ может строить структуры данных, сохранять их в связанной памяти, такой как DRAM, причем память затем может быть доступна для движков обработки, выполняемых на FPGA.[00511] Accordingly, in view of the foregoing, for embodiments including FPGA accelerated mapping, alignment, sorting, and/or variant determination applications, one or more of these functions may be implemented in one or both of software or hardware ( AO) processing components, for example, in software running on traditional CPUs, GPUs, CPUs, and/or in firmware that can be embedded in FPGAs, ASICs, sASICs, etc. In such cases, the CPU and FPGA must be configured to communicate to transfer results from one stage in one device, such as a CPU or FPGA, for processing in the next stage in another device. For example, when performing a mapping function, constructing large data structures such as a reference index can be implemented using the CPU, and executing a hash function on them can be implemented using an FPGA. In such a case, the CPU can build data structures, store them in associated memory such as DRAM, which memory can then be accessed by processing engines running on the FPGA.

[00512] Например, в некоторых вариантах реализации обмены данными между ЦПУ и FPGA могут быть реализованы с помощью любого подходящего межсоединения, такого как периферийная шина, например, шина PCIe, USB или сетевой интерфейс, такой как Ethernet. Однако шина PCIe может обеспечивать сравнительно слабую интеграцию между ЦПУ и FPGA, за счет чего задержки передачи между ними могут быть довольно высокими. Соответственно, хотя одно устройство (например, ЦПУ или FPGA) может получать доступ к памяти, прикрепленной к другому устройству (например, посредством передачи DMA), вызываемые области памяти выполнены без возможности кэширования, поскольку не имеют средств для поддержания когерентности кэша между двумя устройствами. В результате передачи между ЦПУ и FPGA ограничены выполнением между большими этапами обработки высокого уровня, и большое количество заданий на ввод и вывод должны быть организованы в очередь между устройствами, чтобы не замедлять друг друга в ожидании операций с высокой задержкой. Это замедляет различные операции обработки, описанные в настоящем документе. Кроме того, когда FPGA получает доступ к выполненной без возможности кэширования памяти ЦПУ, вся нагрузка такого обращения к памяти ложится на внешние интерфейсы памяти ЦПУ, которые ограничены по полосе пропускания по сравнению с их внутренними интерфейсами кэша.[00512] For example, in some embodiments, communications between the CPU and the FPGA may be implemented using any suitable interconnect, such as a peripheral bus such as a PCIe bus, USB, or a network interface such as Ethernet. However, the PCIe bus can provide relatively poor integration between the CPU and FPGA, which means that transfer latencies between them can be quite high. Accordingly, although one device (e.g., CPU or FPGA) can access memory attached to another device (e.g., through a DMA transfer), the recalled memory regions are non-cacheable because they have no means to maintain cache coherence between the two devices. As a result, transfers between the CPU and FPGA are limited to execution between large stages of high-level processing, and large numbers of input and output jobs must be queued between devices to avoid slowing each other down while waiting for high-latency operations. This slows down various processing operations described in this document. Additionally, when an FPGA accesses uncacheable CPU memory, the entire load of that memory access falls on the CPU's external memory interfaces, which are limited in bandwidth compared to their internal cache interfaces.

[00513] Соответственно, вследствие таких слабых интеграций ЦПУ/FPGA обычно требуется иметь «централизованное» программное управление интерфейсом FPGA. В таких случаях различные программные потоки могут обрабатывать различные единицы данных, но когда эти потоки формируют работу для выполнения движком FPGA, эта работа должна быть агрегирована в «центральных» буферах, например, с помощью программного потока с одним агрегатором или с помощью доступа с агрегированием множества потоков посредством семафоров, причем управление передачей агрегированной работы с помощью пакетов DMA осуществляется центральным программным модулем, таким как драйвер пространства ядра. Следовательно, по мере создания результатов аппаратными движками происходит обратный процесс, причем программный драйвер принимает пакеты DMA из аппаратного обеспечения, а деагрегатор потоков распределяет результаты различным ожидающим программным рабочим потокам. Однако, это централизованное программное управление обменом данными с аппаратной логикой FPGA является громоздким и ресурсоемким, снижает эффективность программной поточно обработки и обмена данными между аппаратным и программным обеспечением, ограничивает практическую полосу пропускания обмена данными между аппаратным и программным обеспечением и резко повышает ее задержку.[00513] Accordingly, due to such loose CPU/FPGA integrations, it is typically necessary to have “centralized” software control of the FPGA interface. In such cases, different software threads may process different units of data, but when those threads generate work for execution by the FPGA engine, that work must be aggregated into "central" buffers, such as using a single aggregator software thread or using multiple aggregation access threads via semaphores, with control of the transfer of aggregated work via DMA packets being handled by a central software module such as a kernel space driver. Therefore, as the hardware engines produce results, the reverse process occurs, with the software driver receiving DMA packets from the hardware and the thread deaggregator distributing the results to various waiting software worker threads. However, this centralized software control of communication with the FPGA hardware logic is cumbersome and resource-intensive, reduces the efficiency of software threading and communication between hardware and software, limits the practical bandwidth of communication between hardware and software, and dramatically increases its latency.

[00514] Кроме того, как показано на ФИГ. 33A, слабая интеграция между ЦПУ 1000 и FPGA 7 может потребовать наличия у каждого устройства своей собственной специализированной внешней памяти, такой как DRAM 1014, 14. Как показано на ФИГ. 33A, ЦПУ 1000 имеет свою собственную DRAM 1014 на системной материнской плате, например, модули DIMM DDR3 или DDR4, тогда как FPGA 7 имеет свою собственную DRAM 14, например, 8 ГБ SODIMM, которая может быть напрямую соединена с FPGA 7 посредством одной или более шин 6 для DDR3, таких как шина PCIe с большой задержкой. Аналогичным образом ЦПУ 1000 может быть соединен с возможностью обмена данными со своим собственным DRAM 1014, например с помощью соответствующим образом сконфигурированной шины 1006. Как указано выше, FPGA 7 может быть выполнена с возможностью содержания одного или более движков 13 обработки, причем эти движки обработки могут быть выполнены с возможностью осуществления одной или более функций в биоинформационном конвейере, как описано в настоящем документе, например, когда FPGA 7 содержит движок 13a картирования, движок 13b выравнивания и движок 13c определения вариантов. Также могут быть включены другие движки, описанные в настоящем документе. В различных вариантах реализации один или оба из ЦПУ и FPGA могут быть выполнены с возможностью содержания кэш-памяти 1014a, 14a, соответственно, которая выполнена с возможностью хранения данных, например, результирующих данных, которые передаются в нее одним или более различными компонентами системы, такими как одна или более памятей и/или один или более движков обработки.[00514] Additionally, as shown in FIG. 33A, loose integration between CPU 1000 and FPGA 7 may require each device to have its own dedicated external memory, such as DRAM 1014, 14. As shown in FIG. 33A, CPU 1000 has its own DRAM 1014 on the system motherboard, such as DDR3 or DDR4 DIMMs, while FPGA 7 has its own DRAM 14, such as 8 GB SODIMM, which can be directly coupled to FPGA 7 via one or more 6 buses for DDR3, such as the high latency PCIe bus. Likewise, the CPU 1000 may be communicatively coupled to its own DRAM 1014, for example via a suitably configured bus 1006. As discussed above, the FPGA 7 may be configured to contain one or more processing engines 13, which processing engines may be configured to implement one or more functions in a bioinformatics pipeline as described herein, for example, when the FPGA 7 includes a mapping engine 13a, an alignment engine 13b, and a variant detection engine 13c. Other engines described herein may also be included. In various embodiments, one or both of the CPU and the FPGA may be configured to contain a cache memory 1014a, 14a, respectively, that is configured to store data, such as resultant data, that is passed thereto by one or more different system components, such as one or more memories and/or one or more processing engines.

[00515] Многие операции, описанные в настоящем документе, которые подлежат выполнению с помощью FPGA 7 для геномной обработки, требуют доступа к большой памяти для выполнения основополагающих операций. А именно, ввиду использования больших единиц данных, например, референсных геномов из более 3 миллиардов нуклеотидов, свыше 100 миллиардов нуклеотидов необработанных данных секвенатора и т.д., FPGA 7 может потребоваться многократный доступ к главной памяти 1014, например, для доступа к индексу, такому как хэш-таблица объемом 30 ГБ, или другому индексу референсного генома, например, в целях картирования затравок из исследуемой секвенированной ДНК/РНК на референсный геном из 3 миллиардов пар оснований и/или выборки сегментов-кандидатов, например, из референсного генома, для выравнивания на них.[00515] Many of the operations described herein to be performed by the FPGA 7 for genomic processing require access to large memory to perform the underlying operations. Namely, due to the use of large data units, such as reference genomes of over 3 billion nucleotides, over 100 billion nucleotides of raw sequencer data, etc., the FPGA 7 may need to access the main memory 1014 multiple times, for example, to access an index, such as a 30 GB hash table, or other reference genome index, e.g. for the purpose of mapping seeds from the sequenced DNA/RNA of interest to a 3 billion base pair reference genome and/or sampling candidate segments, e.g. from the reference genome, for alignment on them.

[00516] Соответственно, в различных реализациях системы, описанной в настоящем документе, может понадобиться множество быстрых доступов к оперативной памяти одним или более жестко смонтированных движков 13, например, при выполнении операции картирования, выравнивания и/или определения вариантов. Однако, совершение FPGA 7 такого большого количества небольших произвольных доступов к памяти посредством периферийной шины 3 или другой сетевой линии связи с памятью 1014, присоединенной к главному ЦПУ 1000, может оказаться непозволительно непрактичным. Например, в таких случаях задержки возвращаемых данных могут быть очень большими, эффективность шины может быть очень низкой, например, для таких небольших произвольных доступов, и нагрузка на интерфейс 1006 внешней памяти ЦПУ может быть непозволительно большой.[00516] Accordingly, in various implementations of the system described herein, multiple fast accesses to main memory by one or more hard-wired engines 13 may be necessary, for example, when performing mapping, alignment, and/or variant determination operations. However, for the FPGA 7 to make such a large number of small random memory accesses via the peripheral bus 3 or other network link to the memory 1014 attached to the main CPU 1000 may be prohibitively impractical. For example, in such cases, return data latencies may be very large, bus efficiency may be very low, such as for such small random accesses, and the load on the CPU's external memory interface 1006 may be prohibitively large.

[00517] Кроме того, в результате каждое устройство нуждается в своей собственной внешней памяти, причем полный форм-фактор полной платформы ЦПУ 1000 + FPGA 7 вынужден быть больше, чем было бы желательно, например, для некоторых областей применения. В таких случаях в дополнение к стандартной системной материнской плате для одного или более ЦПУ 1000 и поддерживающих микросхем 7 и памятей 1014 и/или 14, требуется пространство на плате для большого корпуса FPGA (которое может оказаться даже еще больше вследствие необходимости достаточного количества контактов для нескольких шин внешней памяти) и нескольких модулей памяти 1014, 14. Однако стандартные материнские платы не содержат этих компонентов, да и найти на них свободного пространства трудно, поэтому практический вариант реализации может быть выполнен с возможностью использования платы 2 расширения, содержащей FPGA 7, ее память 14 и другие поддерживающие компоненты, такие как источник питания, которая, например, соединена с гнездом расширения PCIe на материнской плате ЦПУ. Чтобы иметь пространство для платы расширения 2, система может быть выполнена в достаточно большом корпусе, например, в виде сервера 1U или 2U или более крупного сервера, монтируемого в стойке.[00517] Additionally, the result is that each device needs its own external memory, forcing the overall form factor of a full 1000 CPU + FPGA 7 platform to be larger than would be desirable, for example, for some applications. In such cases, in addition to a standard system motherboard for one or more 1000 CPUs and 7 supporting chips and 1014 and/or 14 memories, board space is required for a large FPGA package (which may be even larger due to the need for sufficient pins for several external memory buses) and several memory modules 1014, 14. However, standard motherboards do not contain these components, and it is difficult to find free space on them, so a practical implementation could be made with the possibility of using an expansion board 2 containing an FPGA 7, its memory 14 and other supporting components, such as a power supply, which, for example, is connected to the PCIe expansion slot on the CPU motherboard. To have space for expansion card 2, the system can be implemented in a fairly large enclosure, such as a 1U or 2U server or a larger rack-mounted server.

[00518] Ввиду вышеизложенного, в различных случаях, как показано на ФИГ. 33B, для преодоления этих факторов, возможно, потребуется конфигурировать ЦПУ 1000 в компоновке с жестким связыванием с FPGA 7. В частности, в различных случаях FPGA 7 может быть жестко связана с ЦПУ 1000, например, с помощью межсоединения 3 с малой задержкой, такого как межсоединение быстрого доступа (QPI). А именно, чтобы организовать более жесткую интеграцию ЦПУ + FPGA, эти два устройства могут быть соединены с помощью любого подходящего интерфейса с низкой задержкой, такого как «межпроцессорное соединение» и т.п, например INTELS® Quick Path Interconnect (QPI) или HyperTransport (HT).[00518] In view of the above, in various cases, as shown in FIG. 33B, to overcome these factors, it may be necessary to configure the CPU 1000 in a hard-coupled arrangement with the FPGA 7. Specifically, in various cases, the FPGA 7 may be hard-coupled to the CPU 1000, for example, using a low-latency interconnect 3 such as fast access interconnect (QPI). Namely, to enable tighter CPU+FPGA integration, the two devices can be connected using any suitable low latency interface such as "inter-processor interconnect" etc., such as INTELS® Quick Path Interconnect (QPI) or HyperTransport ( HT).

[00519] Соответственно, как показано на ФИГ. 33B, система 1, предложенная в настоящем документе, содержит ЦПУ 1000 и процессор, такой как FPGA 7, причем оба устройства связаны с одним или более модулями памяти. Например, ЦПУ 1000 может быть соединено, например, с помощью соответствующим образом сконфигурированной шины 1006, с DRAM 1014, и, аналогичным образом, FPGA 7 соединена с возможностью обмена данными со связанной память 14 посредством шины 6 DDR3. Однако, в данном случае вместо того, чтобы соединяться друг с другом, например, посредством типичного межсоединения с низкой задержкой, например, интерфейса PCIe, ЦПУ 1000 соединено с FPGA 7 с помощью межсоединения 3 HyperTransport, такого как QPI. В таком случае благодаря низкой задержке, присущей таким межсоединениям, связанные памяти 1014, 14 ЦПУ 1000 и FPGA 7 легко доступны друг для друга. Кроме того, в различных случаях ввиду этой жестко связанной конфигурации один или более кэшей 1114a/14a, связанных с устройствами, могут быть выполнены с возможностью поддержания когерентности друг с другом.[00519] Accordingly, as shown in FIG. 33B, system 1 proposed herein includes a CPU 1000 and a processor such as an FPGA 7, both devices coupled to one or more memory modules. For example, CPU 1000 may be coupled, for example, via a suitably configured bus 1006, to DRAM 1014, and likewise, FPGA 7 is communicatively coupled to associated memory 14 via DDR3 bus 6. However, in this case, instead of being connected to each other, for example, through a typical low latency interconnect, such as a PCIe interface, the CPU 1000 is connected to the FPGA 7 using a HyperTransport interconnect 3, such as QPI. In such a case, due to the low latency inherent in such interconnects, the associated memories 1014, 14 of the CPU 1000 and FPGA 7 are easily accessible to each other. Moreover, in various cases, due to this tightly coupled configuration, one or more caches 1114a/14a associated with the devices may be configured to maintain coherence with each other.

[00520] В число некоторых основных свойств такого жестко связанного межсоединения ЦПУ/FPGA входят широкая полоса пропускания, например, 12,8 ГБ/с; низкая задержка, например, 100-300 нс; адаптированный протокол, выполненный с возможностью обеспечения эффективных удаленных доступов к памяти и эффективных небольших передач в память, например, порядке 64 байтов или менее; и интеграция поддерживаемого протокола и ЦПУ для доступа к кэшу и когерентности кэша. В таких случаях естественным межсоединением для использования такой жесткой интеграции с данным ЦПУ 1000 может быть его собственное межпроцессорное соединение 1003, которое может быть использовано здесь для обеспечения возможности параллельной работы множества ядер и множества ЦПУ в пространстве совместно используемой памяти 1014, тем самым обеспечивая возможность доступа к стекам кэша друг друга и внешней памяти с поддержание когерентности кэша.[00520] Some of the key properties of such a tightly coupled CPU/FPGA interconnect include high bandwidth, such as 12.8 GB/s; low latency, for example, 100-300 ns; an adapted protocol configured to provide efficient remote memory accesses and efficient small memory transfers, for example, on the order of 64 bytes or less; and integration of supported protocol and CPU for cache access and cache coherence. In such cases, a natural interconnect for exploiting such tight integration with a given CPU 1000 may be its own inter-processor interconnect 1003, which can be used here to enable multiple cores and multiple CPUs to operate in parallel in shared memory space 1014, thereby allowing access to each other's cache stacks and external memory while maintaining cache coherence.

[00521] Соответственно, как показано на ФИГ. 34A и 34B, может быть предусмотрена плата 2, например, когда плата может быть выполнена с возможностью приема одного или более ЦПУ 1000, например, посредством множества межсоединений 1003, таких как собственные межпроцессорные соединения 1003a и 1003b. Однако в данном случае, как показано на ФИГ. 34A, ЦПУ 1000 выполнено с возможностью соединения с межсоединением 1003a, но вместо соединения с ним другого ЦПУ посредством межсоединения 1003b, с возможностью соединения с ним выполнена FPGA 7 по настоящему изобретению. Кроме того, система 1 выполнена таким образом, что ЦПУ 1000 может быть соединен со связанной FPGA 7, например, посредством межсоединения 3 жесткого связывания с малой задержкой. В таких случаях каждая память 1014, 14, связанная с соответствующим устройством 1000, 7, может быть выполнена с возможностью получения доступа друг к другу, например, с широкой полосой пропускания и поддержанием когерентности кэша.[00521] Accordingly, as shown in FIG. 34A and 34B, a card 2 may be provided, for example where the card may be configured to receive one or more CPUs 1000, for example, via a plurality of interconnects 1003, such as native inter-processor connections 1003a and 1003b. However, in this case, as shown in FIG. 34A, the CPU 1000 is connected to the interconnect 1003a, but instead of connecting another CPU to it via the interconnect 1003b, the FPGA 7 of the present invention is connected to it. In addition, the system 1 is configured such that the CPU 1000 can be coupled to a coupled FPGA 7, for example, via a low latency hard coupled interconnect 3. In such cases, each memory 1014, 14 associated with a corresponding device 1000, 7 may be configured to access each other, for example, with wide bandwidth and maintaining cache coherence.

[00522] Аналогичным образом, как показано на ФИГ. 34B, система также может быть выполнена с возможностью приема корпусов 1002a и/или 1002b, например, когда корпусы содержат один или более ЦПУ 1000a, 1000b, которые сильно связаны, например, посредством межсоединений 3a и 3b с низкой задержкой, с одной или более FPGA 7a, 7b, например, когда при данной архитектура системы каждый корпус 2a и 2b может быть соединен один с другим, например, посредством межсоединения 3 с жестким связыванием. Кроме того, как показано на ФИГ. 35, в различных случаях может быть предусмотрен корпус 1002a, причем корпус 1002a содержит ЦПУ 1000, выполненный с возможностью сильного связывания с интегральной схемой, такой как FPGA 7. В таком случае за счет сильного связывания ЦПУ 1000 и FPGA 7 система может быть построена с возможностью непосредственного совместного использования кэша 1014a с обеспечением согласованности, когерентности и легкодоступности для каждого из двух устройств, например, в отношении данных, хранящихся там.[00522] Likewise, as shown in FIG. 34B, the system may also be configured to receive packages 1002a and/or 1002b, for example where the packages contain one or more CPUs 1000a, 1000b that are tightly coupled, for example via low latency interconnects 3a and 3b, to one or more FPGAs 7a, 7b, for example, when, given the system architecture, each housing 2a and 2b can be connected to one another, for example by means of a hardwired interconnect 3. In addition, as shown in FIG. 35, in various cases, a package 1002a may be provided, wherein the package 1002a contains a CPU 1000 configured to be tightly coupled to an integrated circuit such as an FPGA 7. In such a case, by tightly coupling the CPU 1000 to the FPGA 7, a system can be built to directly sharing the cache 1014a to ensure consistency, coherence and easy accessibility for each of the two devices, for example, with respect to data stored there.

[00523] Следовательно, в таких случаях FPGA 7 и один из корпусов 2a/2b может, в сущности, выдавать себя за другой ЦПУ и тем самым работать в среде поддерживающей когерентность кэша совместной используемой памяти с одним или более ЦПУ точно так же, как это делали бы множество ЦПУ на многогнездовой материнской плате 1002 или множество ядер ЦПУ в многоядерном ЦПУ. При таком межсоединении FPGA/ЦПУ FPGA 7 может эффективно совместно использовать память 1014 ЦПУ, а не иметь свою собственную специализированную внешнюю память 14, которая может или не может быть включена или доступа. Следовательно, в такой конфигурации быстрые, краткие, произвольные доступы эффективно поддерживаются межсоединением 3, например, с малой задержкой. Это делает ее практичной и эффективной для доступа различных движков 13 обработки в FPGA 7 к большим структурам данных в памяти ЦПУ 1000.[00523] Therefore, in such cases, FPGA 7 and one of the packages 2a/2b can essentially impersonate another CPU and thereby operate in a shared memory cache coherence environment with one or more CPUs just like this would make multiple CPUs on a multi-slot motherboard 1002, or multiple CPU cores on a multi-core CPU. With this FPGA/CPU interconnect, FPGA 7 can effectively share CPU memory 1014 rather than having its own dedicated external memory 14 that may or may not be enabled or accessed. Therefore, in such a configuration, fast, short, random accesses are effectively supported by interconnect 3, for example, with low latency. This makes it practical and efficient for various processing engines 13 in the FPGA 7 to access large data structures in the memory of the CPU 1000.

[00524] Например, как показано на ФИГ. 37, предложена система для осуществления одного или более способов, описанных в настоящем документе, например, когда способ включает в себя один или более этапов для выполнения функций по настоящему изобретению, таких как одна или более из функций картирования, и/или выравнивания, и/или определения вариантов, которые описаны в настоящем документе, стандартным образом. В частности, на этапе (1) может быть сформирована или иным образом обеспечена структура данных, например, с помощью СНП и/или ЦПУ 1000, после чего эта структура данных может быть сохранена (2) в связанной памяти, такой как DRAM 1014. Структура данных может быть любой структурой данных, например, в том, что касается тех, что описаны в настоящем документе, но в этом случае может быть множеством ридов секвенированных данных, и/или референсным геномом, и/или индексом референсного генома, например, для выполнения функций картирования, и/или выравнивания, и/или определения вариантов.[00524] For example, as shown in FIG. 37, a system is provided for performing one or more of the methods described herein, for example where the method includes one or more steps for performing functions of the present invention, such as one or more of mapping and/or alignment functions and/ or defining options that are described herein in a standard manner. In particular, in step (1), a data structure may be generated or otherwise provided, for example, by the NAS and/or CPU 1000, after which the data structure may be stored (2) in associated memory, such as DRAM 1014. Structure data may be any data structure, such as those described herein, but in this case may be a set of reads of sequenced data, and/or a reference genome, and/or an index of a reference genome, for example, to perform mapping and/or alignment and/or option identification functions.

[00525] На втором этапе (2), например в том, что касается функций картирования и/или выравнивания и т.п, FPGA 7, связанная с ЦПУ 1000, например, посредством интерфейса 3 с тесным связыванием, может получать доступ к связанной памяти 1014 ЦПУ для выполнения одного или более действий в отношении хранящихся секвенированных ридов, референсных геномов и/или их индексов. В частности, на этапе (3), например, в операции картирования, FPGA 7 может получать доступ к структуре данных, например, к секвенированным ридами и/или референсным последовательностям, для создания из них одной или более затравок, например, когда структура данных содержит одно или более ридов и/или последовательностей генома. В таком случае затравки, например, последовательности референса и/или рида, могут быть использованы в целях выполнения с ними хэш-функции, например, для создания одного или более ридов, которое картировано на одну или более позиций относительно референсного генома.[00525] In a second step (2), for example with regard to mapping and/or alignment functions and the like, the FPGA 7 coupled to the CPU 1000, for example via a tightly coupled interface 3, can access the associated memory 1014 CPUs for performing one or more actions on stored sequenced reads, reference genomes, and/or indexes thereof. In particular, in step (3), for example, in a mapping operation, the FPGA 7 may access a data structure, for example, sequenced reads and/or reference sequences, to create one or more seeds from them, for example, when the data structure contains one or more genome reads and/or sequences. In such a case, primers, eg reference and/or read sequences, can be used to perform a hash function on them, eg to create one or more reads that map to one or more positions relative to the reference genome.

[00526] На дальнейшем этапе (3) полученные картированные результирующие данные могут быть сохранены, например, либо в главной памяти 1014, либо в связанном DRAM 14. Кроме того, после того, как данные картированы, FPGA 7, или ее движок 13 обработки, может быть реконфигурирована, например, частично реконфигурирована, в качестве движка выравнивания, который может затем получить доступ к сохраненной структуре картированных данных для выполнения на ней функции выравнивания с целью создания одного или более ридов, выровненных на референсный геном. На дополнительном этапе (4) главное ЦПУ может затем получить доступ к картированным и/или выровненным данным для выполнения на них одной или более функций, например, для создания графа де Брейна («DBG»), который затем может быть сохранен в его связанной памяти. Аналогичным образом на одном или более дополнительных этапов FPGA 7 может снова обратиться к памяти 1014 главного ЦПУ для получения доступа к DBG и выполнения на нем анализа HMM с целью создания одного или более файлов определения вариантов.[00526] In a further step (3), the resulting mapped result data may be stored, for example, in either the main memory 1014 or the associated DRAM 14. In addition, after the data has been mapped, the FPGA 7, or its processing engine 13, can be reconfigured, for example, partially reconfigured, as an alignment engine, which can then access the stored mapped data structure to perform an alignment function on it to generate one or more reads aligned to the reference genome. In an additional step (4), the main CPU can then access the mapped and/or aligned data to perform one or more functions on it, for example to create a de Bruijn graph (“DBG”), which can then be stored in its associated memory . Likewise, in one or more additional steps, FPGA 7 may again access host CPU memory 1014 to access the DBG and perform HMM analysis thereon to create one or more case definition files.

[00527] В конкретных случаях ЦПУ 1000 и FPGA 7 могут иметь одну или более кэш-памятей, которые благодаря жесткому связыванию интерфейса между этими двумя устройствами обеспечат когерентность отдельных кэшей, например, в отношении промежуточных данных, например, данных результатов, хранящихся в них, например, в результате выполнения в них одной или более функций. Подобным образом данные могут совместно использоваться по существу беспрепятственно жестко связанными устройствами, тем самым позволяя функциям конвейера переплетаться, например, в биоинформационном конвейере. Поэтому в таком случае FPGA 7 больше не нужно иметь свою собственную присоединенную специализированную внешнюю память 14, и, следовательно, благодаря такой жестко связанной конфигурации сохраненные риды, референсный геном и/или индекс референсного генома, которые описаны в настоящем документе, могут интенсивно совместно использоваться, например, с поддержанием когерентности кэша, например, для картирования и выравнивания ридов и других операций обработки геномных данных.[00527] In specific cases, the CPU 1000 and FPGA 7 may have one or more cache memories that, by tightly coupling the interface between the two devices, will ensure coherence of the individual caches, for example, with respect to intermediate data, such as result data, stored therein. for example, as a result of the performance of one or more functions in them. Likewise, data can be shared essentially seamlessly between tightly coupled devices, thereby allowing pipeline functions to be intertwined, for example in a bioinformatics pipeline. Therefore, in such a case, the FPGA 7 no longer needs to have its own attached dedicated external memory 14, and therefore, thanks to such a tightly coupled configuration, the stored reads, reference genome and/or reference genome index, which are described herein, can be intensively shared. for example, maintaining cache coherence, such as for read mapping and alignment and other genomic data processing operations.

[00528] Кроме того, как показано на ФИГ. 38, жестко связанные и поддерживающие когерентность кэша конфигурации, как и другие конфигурации компонентов, рассмотренные в настоящем документе, позволяют выполнять более мелкие операции низкого уровня в одном устройстве (например, ЦПУ или FPGA), прежде чем возвращать структуру данных или поток 20 обработки на другое устройство, например, для дальнейшей обработки. Например, в одном случае поток 20a ЦПУ может быть выполнен с возможностью организации больших количеств работ в очередь в аппаратной логику 13 FPGA для выполнения, и этот же или другой поток 20b может быть выполнен с возможностью последующей обработки большой очереди сформированных таким образом результатов, например, существенно позже. Однако, в различных случаях, возможно, будет более эффективно, если поток 20 ЦПУ, будет, как описано в настоящем документе, блокировать «вызов функции» в связанный аппаратный движок 13 FPGA, причем ЦПУ может быть установлено на возобновление исполнения программного обеспечения сразу по завершении аппаратной функции FPGA. Следовательно, вместо того, чтобы упаковывать структуры данных для потоковой передачи с помощью DMA 14 в FPGA 7 и распаковывать результаты по их возвращении, программный поток 20 мог бы просто предоставлять указатель памяти в движок 13 FPGA, который мог бы получать доступ к совместно используемой памяти 1014/14 и вносить изменения на месте с поддержанием когерентности кэша.[00528] Additionally, as shown in FIG. 38, tightly coupled and cache coherent configurations, like other component configurations discussed herein, allow smaller, low-level operations to be performed on one device (e.g., CPU or FPGA) before returning the data structure or processing thread 20 to another device, for example, for further processing. For example, in one case, CPU thread 20a may be configured to queue large quantities of work into FPGA hardware logic 13 for execution, and the same or another thread 20b may be configured to subsequently process a large queue of results so generated, e.g. much later. However, in various cases, it may be more efficient if CPU thread 20, as described herein, blocks a "function call" to the associated FPGA hardware engine 13, where the CPU can be set to resume software execution immediately upon completion. FPGA hardware function. Therefore, instead of packing data structures for streaming using DMA 14 into the FPGA 7 and unpacking the results when they return, the software thread 20 could simply provide a memory pointer to the FPGA engine 13, which could access the shared memory 1014 /14 and make changes in place while maintaining cache coherence.

[00529] В частности, при такой взаимосвязи между структурами, предложенной в настоящем документе, глубина детализации взаимодействия программного обеспечения/аппаратного обеспечения может быть более мелкой, чтобы назначать более мелкие операции низкого уровня для выполнения различными аппаратными движками 13, например, путем вызова функций из различных выделенных программных потоков 20. Например, на слабо связанной платформе ЦПУ/FPGA для эффективного ускорения картирования, выравнивания и/или определения вариантов рида ДНК/РНК, может быть создан полный конвейер картирования/выравнивания/определения вариантов в виде одного или более программных и/или реализованных в FPGA движков, причем некартированные и невыровненные риды передаются в потоковом режиме из программного обеспечения в аппаратное обеспечение, где процесс может быть повторен, например, для определения вариантов. Что касается конфигураций, описанных в настоящем документе, они могут быть очень быстрыми. Однако в различных случаях такая система может страдать от ограничений гибкости, сложности и/или программируемости, например, вследствие того, что весь конвейер картирования/выравнивания и/или определения вариантов реализован в аппаратной схеме, которая, хотя и выполнена с возможностью реконфигурирования в FPGA, как правило, значительно менее гибкая и программируемая, чем программное обеспечение, и может быть поэтому ограничена меньшей алгоритмической сложностью.[00529] In particular, with such interconnections between structures proposed herein, the granularity of software/hardware interactions can be finer-grained to assign smaller low-level operations to be performed by different hardware engines 13, for example by calling functions from various dedicated software threads 20. For example, on a loosely coupled CPU/FPGA platform to efficiently accelerate the mapping, alignment and/or variant determination of a DNA/RNA read, a complete mapping/alignment/variant determination pipeline can be created in the form of one or more software and/or or FPGA-implemented engines, where unmapped and unaligned reads are streamed from software to hardware, where the process can be repeated, for example, to identify variants. As for the configurations described in this document, they can be very fast. However, in various cases, such a system may suffer from limitations in flexibility, complexity and/or programmability, for example due to the fact that the entire mapping/alignment and/or variant detection pipeline is implemented in hardware circuitry, which, although reconfigurable in the FPGA, typically much less flexible and programmable than software, and may therefore be limited by lower algorithmic complexity.

[00530] В отличие от этого за счет использования жесткого межсоединения ЦПУ/FPGA, такого как QPI или другое межсоединение, в конфигурациях, описанных в настоящем документе, несколько ресурсоемких дискретных операций, таких как формирование затравки и/или картирование, восстановительное сканирование, выравнивание без гэпов, выравнивание с гэпами, например, выравнивание Смита-Ватермана и т.д., могут быть реализованы в виде различных доступных по отдельности аппаратных движков 13 (см., например, ФИГ. 38), и общие алгоритмы картирования/выравнивания и/или определения вариантов могут быть реализованы в программном обеспечении, причем ускорение низкого уровня осуществляется за счет обращения к FPGA за специальными дорогостоящими этапами обработки. Такая инфраструктура обеспечивает полную возможность программирования программного обеспечения за рамками определенных вызовов ускорения, и делает возможной более высокую алгоритмическую сложность и гибкость, чем в случае стандартных жестко смонтированных операций.[00530] In contrast, by using a hard CPU/FPGA interconnect, such as a QPI or other interconnect, in the configurations described herein, several resource-intensive discrete operations such as seeding and/or mapping, recovery scanning, alignment without gaps, gap alignment, e.g., Smith-Waterman alignment, etc., may be implemented as various separately available hardware engines 13 (see, e.g., FIG. 38), and general mapping/alignment algorithms and/or case definitions can be implemented in software, with low-level acceleration achieved by calling on the FPGA for special, expensive processing steps. Such an infrastructure provides full software programmability beyond specific acceleration calls, and enables greater algorithmic complexity and flexibility than with standard hard-wired operations.

[00531] Кроме того, в такой инфраструктуре исполнения программного обеспечения, ускоренного путем вызовов низкоуровневого аппаратного ускорения FPGA, функции аппаратного ускорения могут более легко совместно использоваться для множества целей. Например, когда аппаратные движки 13 формируют большие монолитные конвейеры, отдельные подкомпоненты конвейера могут быть, как правило, специально предназначены для их среды и взаимно соединены между собой только в пределах одного конвейера, который, если он не тесно связан, может, вообще говоря, не быть доступным для любой цели. Но многие операции обработки геномных данных, такие как выравнивание Смита-Ватермана, построение графа де Брейна или графа сборки и другие подобные операции, могут быть использованы в различных родительских алгоритмах верхнего уровня. Например, как описано в настоящем документе, выравнивание Смита-Ватермана может быть использовано в картировании и выравнивании рида ДНК/РНК, например, относительно референсного генома, но может быть также выполнено с возможностью применения определителями вариантов на основе гаплотипа, для выравнивания гаплотипов-кандидатов на референсный геном или друг на друга, или для секвенированных последовательностей, например, в анализе HMM и/или функции определения вариантов. Следовательно, привлечение различных дискретных низкоуровневых функций аппаратного ускорения посредством вызовов функций общим программным обеспечением может позволить максимально использовать одну и ту же логику ускорения, например, 13, по всему приложению обработки геномных данных, например, при выполнении как выравнивания, так и определения вариантов, например операций HMM.[00531] Moreover, in such a software execution infrastructure accelerated by low-level FPGA hardware acceleration calls, hardware acceleration functions can be more easily shared for multiple purposes. For example, when hardware engines 13 form large monolithic pipelines, the individual pipeline subcomponents may typically be specifically designed for their environment and interconnected only within a single pipeline, which, if not tightly coupled, may not generally be available for any purpose. But many genomic data processing operations, such as Smith-Waterman alignment, de Bruijn graph or assembly graph construction, and other similar operations, can be used in various top-level parent algorithms. For example, as described herein, a Smith-Waterman alignment may be used in mapping and aligning a DNA/RNA read, for example, to a reference genome, but may also be capable of being used by haplotype-based variant definers to align candidate haplotypes to reference genome either to each other or to sequenced sequences, for example in HMM analysis and/or variant detection functions. Therefore, invoking various discrete low-level hardware acceleration functions through common software function calls may allow the same acceleration logic, e.g., 13, to be leveraged across an entire genomic data processing application, e.g., when performing both alignment and variant detection, e.g. HMM operations.

[00532] В случае тесного межсоединения ЦПУ/FPGA, с практической точки зрения целесообразно также иметь распределенное, а не централизованное, управление с помощью программного обеспечения ЦПУ 1000 по каналам связи с различными аппаратными движками 13 FPGA, описанными в настоящем документе. В широко распространенных на практике многопотоковых, многоядерных и многопроцессорных архитектурах программного обеспечения множество программных потоков и процессов обмениваются данными и взаимодействуют беспрепятственно без каких-либо центральных программных модулей, драйверов или потоков для управления внутренним обменом данными. В таком формате это практично ввиду совместно используемой памяти с поддержанием когерентности кэша, которая видна для потоков во всех ядрах всех ЦПУ, хотя физически когерентное совместное использование памяти ядрами и ЦПУ происходит за счет внутреннего обмена данными посредством процессорного межсоединения, например QPI или HT.[00532] In the case of a tight CPU/FPGA interconnect, it is also practical from a practical standpoint to have distributed, rather than centralized, control by the CPU 1000 software over communications links with the various FPGA hardware engines 13 described herein. In widely used multi-threaded, multi-core, and multi-processor software architectures, multiple software threads and processes communicate and interact seamlessly without any central software modules, drivers, or threads to manage internal communications. In this format, it is practical due to the shared cache-coherent memory that is visible to threads on all cores on all CPUs, although physically coherent memory sharing between the cores and the CPU occurs through internal communication via a processor interconnect such as QPI or HT.

[00533] Подобным образом, как показано на ФИГ. 36-38, системы, предложенные в настоящем документе, могут иметь ряд ЦПУ и/или FPGA, которые могут быть в конфигурации тесно связанного межсоединения ЦПУ/FPGA, включающей в себя множество потоков, например, 20a, b, c, и множество процессов, выполняющихся в одном или множестве ядер и/или ЦПУ, например 1000a, 100b и 1000c. Поэтому компоненты системы выполнены с возможностью обмена данными и взаимодействия с распределением между друг другом, например, между всевозможными разными ЦПУ и/или аппаратными движками ускорения FPGA, например, за счет совместного использования памяти с поддержание когерентности кэша различными ЦПУ и FPGA. Например, как показано на ФИГ. 36, множество ядер ЦПУ 1000a, 1000b и 1000c могут быть связаны вместе так, чтобы совместно использовать одну или более памятей, например, DRAM 1014, и/или один или более кэшей, имеющих один или более слоев, например, L1, L2, L3 и т.д, или уровней, связанных с ними. Аналогичным образом, как показано на ФИГ, 38, в другом варианте реализации одно ЦПУ 1000 может быть выполнено с возможностью содержания множества ядер 1000a, 1000b и 1000c, которые могут быть связаны вместе таким образом, чтобы совместно использовать одну или более памятей, например, DRAM 1014, и/или один или более кэшей 1014a, имеющих один или более слоев или уровней, связанных с ними.[00533] Likewise, as shown in FIG. 36-38, systems proposed herein may have a number of CPUs and/or FPGAs, which may be in a tightly coupled CPU/FPGA interconnect configuration including multiple threads, e.g., 20a, b, c, and multiple processes. running on one or more cores and/or CPUs, such as 1000a, 100b and 1000c. Therefore, the system components are configured to exchange data and interact with distribution among each other, for example, between various different CPUs and/or FPGA hardware acceleration engines, for example, by sharing memory with maintaining cache coherence among different CPUs and FPGAs. For example, as shown in FIG. 36, multiple CPU cores 1000a, 1000b, and 1000c may be linked together to share one or more memories, such as DRAM 1014, and/or one or more caches having one or more layers, such as L1, L2, L3. etc., or levels associated with them. Likewise, as shown in FIG. 38, in another embodiment, a single CPU 1000 may be configured to contain multiple cores 1000a, 1000b, and 1000c that may be linked together so as to share one or more memories, such as DRAM. 1014, and/or one or more caches 1014a having one or more layers or levels associated therewith.

[00534] Поэтому в другом варианте реализации подлежащие обработке данные из одного или более программных потоков 20 из одного или более ядер 1000 ЦПУ в аппаратный движок 13, например, из FPGA, или наоборот может непрерывно и/или беспрепятственно обновляться в совместно используемой памяти 1014 или кэше и/или его слое, который виден каждому устройству. Кроме того, запросы на обработку данных в совместно используемой памяти 1014 или уведомления о результатах, обновляемых там, могут передаваться посредством сигнализации между программным и/или аппаратным обеспечением, например, по соответствующим образом сконфигурированной шине, например, шине DDR4, например, в очередях, которые могут быть реализованы внутри самой совместно используемой памяти. Для координации программного/аппаратного обеспечения могут быть также реализованы стандартные программные движки управления, передачи и защиты данных, такие как семафоры, взаимоисключающие блокировки и неразложимые целые числа.[00534] Therefore, in another embodiment, data to be processed from one or more software threads 20 from one or more CPU cores 1000 to a hardware engine 13, such as from an FPGA, or vice versa, can be continuously and/or seamlessly updated in shared memory 1014 or cache and/or its layer, which is visible to every device. Additionally, requests to process data in shared memory 1014, or notifications of results updated there, may be communicated via signaling between software and/or hardware, e.g., over a suitably configured bus, e.g., a DDR4 bus, e.g., in queues, which can be implemented within the shared memory itself. Standard software control, transmission, and data protection engines, such as semaphores, mutex locks, and non-decomposable integers, can also be implemented for software/hardware coordination.

[00535] Следовательно, в некоторых вариантах реализации, пример которых приведен на ФИГ. 36, и которые не требуют наличия своей собственной специализированной памяти 14 или иных внешних ресурсов у FPGA 7 ввиду когерентного совместного использования памяти посредством тесной межсоединения ЦПУ/FPGA, становится намного практичнее упаковывать FPGA 7 более компактным и присущим исходной системе образом в пределах традиционных материнских плат ЦПУ 1000 без использования плат расширения. См., например, ФИГ. 34A и 34B и ФИГ. 35. Существуют несколько вариантов упаковки. А именно, FPGA 7 может быть установлена на многопроцессорную материнскую плату в гнездо ЦПУ, как показано на ФИГ. 34A и 34B, например, с помощью надлежащей переходной платы, такой как небольшая плата 2 PC или альтернативная связанная проводами упаковка кристалла FPGA в пределах корпуса 2a микросхемы ЦПУ, где контакты гнезда ЦПУ соответствующим образом соединены с контактами FPGA, включая соединения питания и заземления, процессорное межсоединение 3 (QPI, HT и т.д.) и другие системные соединения. Соответственно, кристалл FPGA и кристалл ЦПУ могут быть включены в один и тот же многокристальный корпус (MCP) с необходимыми соединениями, включая питание, заземление и межсоединение ЦПУ/FPGA, созданные внутри корпуса 2a. Межкристальные соединения могут быть выполнены методом межкристального проволочного монтажа, или путем соединения с общей подложкой или переходной платой, или с помощью связанных контактных площадок или сквозных отверстий через кремний между многоуровневыми кристаллами.[00535] Therefore, in some embodiments exemplified in FIG. 36 and which do not require the FPGA 7 to have its own dedicated memory 14 or other external resources due to coherent memory sharing via a tight CPU/FPGA interconnect, it becomes much more practical to package the FPGA 7 in a more compact and native system manner within the confines of traditional CPU motherboards 1000 without the use of expansion cards. See, for example, FIG. 34A and 34B and FIG. 35. There are several packaging options. Namely, FPGA 7 can be installed on a multi-processor motherboard in a CPU socket as shown in FIG. 34A and 34B, for example, using a suitable riser board, such as a small PC board 2 or an alternative wired FPGA die package within the CPU chip package 2a, where the CPU socket pins are suitably connected to the FPGA pins, including power and ground connections, the processor Interconnect 3 (QPI, HT, etc.) and other system connections. Accordingly, the FPGA die and the CPU die can be included in the same multi-chip package (MCP) with the necessary connections, including power, ground, and CPU/FPGA interconnect, created within the package 2a. Inter-chip connections can be made by inter-chip wire bonding, or by bonding to a common substrate or riser board, or by bonded pads or vias across the silicon between stacked dies.

[00536] Кроме того, в различных реализациях FPGA и ядра ЦПУ могут быть изготовлены на одном кристалле (см. ФИГ. 35) методом «система на микросхеме» (SOC). В любом из этих случаев заказная логика, например, 17, может быть реализована внутри FPGA 7, как для обмена данными по межсоединению 3 ЦПУ/FPGA, например, с помощью надлежащим образом созданных протоколов, так и обслуживания, преобразования и/или маршрутизации запросов на доступ к памяти из внутренних движков 13 FPGA через межсоединение 3 ЦПУ/FPGA посредством надлежащих протоколов в совместно используемую память 1014a. Кроме того, вся эта логика или ее некоторая часть могут быть реализованы в заказном кремниевом кристалле во избежание использования пространства логики FPGA в этих целях, например, когда отвержденная логика может находиться на кристалле ЦПУ и/или кристалле FPGA, или на отдельном кристалле. Кроме того, в любом из этих случаев требования к подаче электропитания и теплоотдаче могут быть достигнуты соответствующим образом, например, в одном корпусе (MCP или SOC). Кроме того, размер FPGA и количество ядер ЦПУ можно выбрать так, чтобы оставаться в пределах безопасной мощности огибающей, и/или можно использовать динамические методы (управление тактовой частотой, тактовое стробирование, отключение ядра, силовые острова и т.д.) для регулирования потребления энергии в соответствии с изменением потребности в вычислениях ЦПУ и/или FPGA.[00536] Additionally, in various implementations, the FPGA and CPU cores may be fabricated on the same chip (see FIG. 35) in a system-on-chip (SOC) manner. In any of these cases, custom logic, for example 17, can be implemented within the FPGA 7, both to communicate across the CPU/FPGA interconnect 3, for example using properly crafted protocols, and to serve, transform and/or route requests to accessing memory from internal FPGA engines 13 via CPU/FPGA interconnect 3 via proper protocols to shared memory 1014a. Additionally, all or some of this logic may be implemented on a custom silicon die to avoid using FPGA logic space for these purposes, such as where the committed logic may reside on a CPU die and/or FPGA die, or on a separate die. Moreover, in any of these cases, the power supply and heat dissipation requirements can be achieved accordingly, for example in a single package (MCP or SOC). Additionally, the FPGA size and number of CPU cores can be selected to remain within safe power envelope limits, and/or dynamic techniques (clock control, clock gating, core shutdown, power islands, etc.) can be used to regulate power consumption energy in accordance with changes in CPU and/or FPGA calculation demand.

[00537] Все эти варианты упаковки имеют ряд общих преимуществ. Жестко интегрированная платформа ЦПУ/FPGA становится совместимой со стандартными материнскими платами и/или корпусами системы различных размеров. В случае установки FPGA через переходную плату в гнездо ЦПУ (см. ФИГ. 34A и 34B) можно использовать по меньшей мере двухгнездовую материнскую плату 1002. В других случаях можно использовать четырехгнездовую материнскую плату, чтобы обеспечить возможность реализации конфигураций 3 ЦПУ + 1 FPGA, 2 ЦПУ + 2 FPGA или 1 CPU + 3 FPGA и т.д. Если FPGA находится в одном корпусе с ЦПУ CPU (либо MCP, либо SOC), то можно использовать одногнездовую материнскую плату, потенциально в очень маленьком корпусе системы (хотя изображена двухгнездовая материнская плата); это также очень хорошо подходить для масштабирования в сторону увеличения, например, 4 FPGA и 4 многоядерных ЦПУ на 4-гнездовой серверной материнской плате, которые, тем не менее, могут работать в компактном корпусе, например в виде сервера 1U, монтируемого в стойке.[00537] All of these packaging options have a number of common advantages. The tightly integrated CPU/FPGA platform becomes compatible with standard motherboards and/or system chassis sizes. In the case of installing an FPGA via a riser card into a CPU socket (see FIGS. 34A and 34B), at least a two-slot motherboard 1002 can be used. In other cases, a four-slot motherboard can be used to enable 3 CPU + 1 FPGA, 2 CPU + 2 FPGA or 1 CPU + 3 FPGA, etc. If the FPGA is in the same package as the CPU CPU (either MCP or SOC), then a single-socket motherboard can be used, potentially in a very small system case (although a dual-socket motherboard is shown); it is also very well suited for scaling up, such as 4 FPGAs and 4 multi-core CPUs on a 4-socket server motherboard, which can still run in a compact package, such as a 1U rackmount server.

[00538] Соответственно, в различных случаях поэтому может существовать потребность в установке платы расширения, чтобы интегрировать ЦПУ и ускорение FPGA, так как FPGA 7 может быть интегрирована в гнездо 1003 ЦПУ. Такая реализация избавляет от дополнительных требований к пространству и электропитанию для платы расширения, и исключает вероятность появления различных дополнительных отказов, которые иногда возникают с картами расширения вследствие компонентов с относительно низкой надежностью. Кроме того, к FPGA или ЦПУ/FPGA в корпусах или в гнездах ЦПУ можно применять стандартные решения для охлаждения ЦПУ (теплоотводы, тепловые трубки и/или вентиляторы), которые эффективны даже при их низкой стоимости, поскольку изготовляются в больших объемах, тогда как охлаждение плат расширения может быть дорогостоящим и неэффективным.[00538] Accordingly, in various cases there may therefore be a need to install an expansion card to integrate the CPU and FPGA acceleration, since the FPGA 7 can be integrated into the CPU socket 1003. This implementation eliminates the additional space and power requirements for the expansion card, and eliminates the possibility of various additional failures that sometimes occur with expansion cards due to relatively low reliability components. In addition, standard CPU cooling solutions (heat sinks, heat pipes and/or fans) can be applied to FPGAs or CPU/FPGAs in packages or CPU sockets, which are effective even at low cost because they are manufactured in high volumes, while cooling Expansion cards can be expensive and ineffective.

[00539] Аналогичным образом FPGA/переходная плата и/или ЦПУ/FPGA в одном корпусе могут полностью использовать питание из гнезда ЦПУ, например, 150 Вт, тогда как плата расширения может быть ограничена по питанию, например, 25 Вт или 75 Вт из шины PCIe. В различных случаях для приложений обработки геномных данных все эти варианты упаковки могут облегчить установку тесно связанной платформы вычисления ЦПУ + FPGA, например внутри секвенатора ДНК. Например, типичные современные секвенаторы ДНК «нового поколения» содержат оборудование для секвенирования (хранилище для образцов и реагентов, трубки и средства регулирования для текучей среды, матрицы датчиков, средства первичной обработки изображения и/или сигнала) в корпусе, который также содержит стандартную или заказную серверную материнскую плату, соединенную проводами с устройством секвенирования для управления секвенированием и получения данных секвенирования. Жестко интегрированная платформа ЦПУ + FPGA, описанная в настоящем документе, может быть получена в таком секвенаторе, например, путем простой установки в гнезда ЦПУ имеющейся у него материнской платы одного или более комплекса FPGA/материнская плата и/или FPGA/ЦПУ в одном корпусе, или, в альтернативном варианте реализации, путем установки новой материнской платы с ЦПУ и FPGA, например, тесно связанных, как описано в настоящем документе. Кроме того, все эти варианты упаковки могут быть выполнены с возможностью способствования упрощению разработки тесно интегрированной платформы ЦПУ + FPGA, например, в доступной из облака и/или находящей в центре данных серверной стойке, в которую входят компактные/плотные серверы с очень высокой надежностью/доступностью.[00539] Similarly, an FPGA/riser card and/or CPU/FPGA in the same package may utilize full power from the CPU socket, e.g., 150 W, while an expansion card may be power limited, e.g., 25 W or 75 W from the bus PCIe. In various use cases for genomic data processing applications, all of these packaging options can facilitate the installation of a tightly coupled CPU+FPGA compute platform, such as inside a DNA sequencer. For example, typical modern "next generation" DNA sequencers contain sequencing hardware (sample and reagent storage, fluid tubing and controls, sensor arrays, image and/or signal processing) in a housing that also contains standard or custom a server motherboard wired to the sequencing device to control sequencing and receive sequencing data. The tightly integrated CPU+FPGA platform described herein can be achieved in such a sequencer, for example, by simply installing one or more FPGA/motherboard and/or FPGA/CPU complexes in a single package into the CPU sockets of its existing motherboard, or, in an alternative implementation, by installing a new motherboard with a CPU and FPGA, for example, tightly coupled, as described herein. Additionally, all of these packaging options can be configured to help facilitate the development of a tightly integrated CPU+FPGA platform, for example, in a cloud-accessible and/or data center-based server rack containing compact/dense servers with very high reliability/ accessibility.

[00540] Следовательно, в соответствии с идеями, изложенными в настоящем документе, существует множество этапов обработки для картирования и выравнивания, сортировки и/или удаления дубликатов, для определения вариантов данных секвенирования ДНК (или РНК), которые могут меняться в зависимости от используемых технологий первичной, и/или вторичной, и/или третичной обработки и их применений. В число таких этапов обработки могут входить одно или более из следующего: обработка сигнала на электрических измерениях из секвенатора, обработка изображения на оптических измерениях из секвенатора, определение оснований с помощью обработанных данных сигнала или изображения для определения наиболее вероятной нуклеотидной последовательности и оценок достоверности, фильтрация секвенированных ридов с низким качеством или поликлональными кластерами, обнаружение и обрезание адаптеров, ключевых последовательностей, штрихкодов и концов ридов низкого качества, а также de novo сборка последовательности, формирование и/или использование графов де Брейна и/или графов последовательности, например, построение графа де Брейна и графа последовательности, редактирование, обрезание, очистка, окрашивание, аннотирование, сравнение, преобразование, расщепление, анализ, выбора подграфа, прохождение, обратное прохождение, поиск, фильтрация, импорт, экспорт, в том числе картирование ридов на референсный геном, выравнивание ридов на возможные местоположения картирования в референсном геноме, локальная сборка ридов, картированных на референсную область, сортировка ридов по выровненным позициям, маркировка и/или удаление перекрывающихся ридов для соответствия инделов, перекалибровка оценки качества оснований, определение вариантов (одного образца или совместно), анализ структурных вариантов, анализ количество копий вариантов, определение соматических вариантов (например, только образца опухоли, совпадений опухоль/нормальная или опухоль/несовпавшая нормальная и т.д.), обнаружение границы сплайсинга РНК, анализ альтернативного сплайсинга РНК, сборка транскрипта РНК, анализ экспрессии транскрипта РНК, анализ дифференциальной экспрессии РНК, определение вариантов РНК, анализ отличия ДНК/РНК, анализ и определение метилирования ДНК, перекалибровка оценки качества вариантов, фильтрация вариантов, аннотирование вариантов с помощью баз данных известных вариантов, обнаружение и оценка загрязнения образца, прогнозирование фенотипа, тестирование на заболевание, прогнозирование реакции на терапию, разработка индивидуальной терапии, анализ родословной и истории мутации, анализ ДНК популяции, выявление генетических маркеров, кодирование геномных данных в стандартные форматы и/или файлы сжатия (например, FASTA, FASTQ, SAM, BAM, VCF, BCF), декодирование геномных данных из стандартных форматов, запрос, выбор или фильтрация подмножеств геномных данных, общие сжатие или распаковка геномных файлов (сжатие gzip, BAM), специализированные сжатие и распаковка геномных данных (CRAM), шифрование и расшифрование геномных данных, вычисление статистики, сравнение и представление геномных данных, сравнение результирующих геномных данных, анализ точности и составление отчета, сохранение, архивирование, извлечение, резервное копирование, восстановление и передача геномного файла, а также построение геномной базы данных, выполнение запросов, управление доступом, выделение данных и т.п.[00540] Therefore, in accordance with the ideas set forth herein, there are multiple processing steps for mapping and alignment, sorting and/or deduplication, to identify variants of DNA (or RNA) sequencing data, which may vary depending on the technologies used primary and/or secondary and/or tertiary processing and their applications. Such processing steps may include one or more of the following: signal processing on electrical measurements from the sequencer, image processing on optical measurements from the sequencer, base determination using processed signal or image data to determine the most likely nucleotide sequence and confidence estimates, filtering sequenced low quality reads or polyclonal clusters, detection and trimming of adapters, key sequences, barcodes and ends of low quality reads, as well as de novo sequence assembly, generation and/or use of de Bruijn graphs and/or sequence graphs, e.g. and sequence graph, editing, trimming, cleaning, coloring, annotation, comparison, transformation, splitting, analysis, subgraph selection, traversal, reverse traversal, search, filtering, import, export, including mapping of reads to the reference genome, alignment of reads to possible mapping locations in the reference genome, local assembly of reads mapped to the reference region, sorting of reads into aligned positions, tagging and/or removal of overlapping reads to match indels, recalibration of base quality assessment, identification of variants (same sample or jointly), analysis of structural variants , analysis of copy number of variants, determination of somatic variants (e.g. tumor sample only, tumor/normal matches or tumor/mismatched normal, etc.), RNA splicing boundary detection, alternative RNA splicing analysis, RNA transcript assembly, RNA transcript expression analysis , RNA differential expression analysis, RNA variant identification, DNA/RNA difference analysis, DNA methylation analysis and determination, variant quality assessment recalibration, variant filtering, variant annotation using known variant databases, sample contamination detection and assessment, phenotype prediction, testing for disease, prediction of response to therapy, development of individualized therapy, pedigree and mutation history analysis, population DNA analysis, identification of genetic markers, encoding genomic data into standard formats and/or compression files (e.g. FASTA, FASTQ, SAM, BAM, VCF, BCF ), decoding genomic data from standard formats, querying, selecting or filtering subsets of genomic data, general compression or decompression of genomic files (gzip, BAM compression), specialized compression and decompression of genomic data (CRAM), encryption and decryption of genomic data, calculation of statistics, comparison and presentation of genomic data, comparison of resulting genomic data, accuracy analysis and reporting, storage, archiving, retrieval, backup, recovery and transfer of genomic file, as well as genomic database construction, query execution, access control, data extraction, etc. P.

[00541] Все эти операции могут быть довольно медленными и дорогостоящими при реализации на традиционных вычислительных платформах. Медлительность таких операций, реализованных исключительно программным способом, может быть, отчасти, вызвана сложностью алгоритмов, но, как правило, обусловлена очень вводом и выводом очень больших наборов данных, что приводит к большой задержке по сравнению с движением данных. Устройства или системы, описанные в настоящем документе, преодолевают эти проблемы, в частности, за счет конфигурации различных аппаратных движков обработки, ускорения с помощью различных аппаратных реализаций и/или, частично, за счет тесного связывания ЦПУ/FPGA. Соответственно, как показано на ФИГ. 39, одна или более, например, все, из этих операций могут быть ускорены за счет взаимодействия ЦПУ 1000 и FPGA 7, например, в модели распределенной обработки, как описано в настоящем документе. Например, в некоторых случаях (шифрование, общее сжатие, картирование и/или выравнивание ридов) вся операционная функция может быть по существу или полностью реализована в заказной логике FPGA (например, с помощью методики разработки аппаратного обеспечения, например, RTL), например, когда программное обеспечение ЦПУ в основном исполняет функцию компиляции пакетов больших данных для обработки рабочими потоками 20, например, путем агрегирования данных в различные задания, подлежащие обработке одним или более жестко смонтированными движками обработки, и подачи различных входных данных, например, в формате «первым пришел, первым обслужен», в один или более движков 13 FPGA и/или принимает результаты из них.[00541] All of these operations can be quite slow and expensive when implemented on traditional computing platforms. The slowness of such software-only operations may be due in part to the complexity of the algorithms, but is generally due to the input and output of very large data sets, resulting in a large latency compared to the movement of the data. The devices or systems described herein overcome these problems, in part, through the configuration of different hardware processing engines, acceleration through different hardware implementations, and/or, in part, through tight CPU/FPGA coupling. Accordingly, as shown in FIG. 39, one or more, for example, all, of these operations may be accelerated through interaction between the CPU 1000 and the FPGA 7, for example, in a distributed processing model as described herein. For example, in some cases (encryption, general compression, mapping, and/or read alignment), the entire operational function may be implemented substantially or entirely in custom FPGA logic (e.g., using a hardware design technique such as RTL), e.g. The CPU software primarily performs the function of compiling batches of big data for processing by worker threads 20, for example by aggregating the data into various jobs to be processed by one or more hard-wired processing engines, and supplying various input data, for example, in a first-come, first-serve format. first served" into one or more FPGA engines 13 and/or receives results from them.

[00542] Например, как показано на ФИГ. 39, в различных вариантах реализации рабочий поток формирует различные пакеты данных задания, которые могут быть скомпилированы и/или переданы в потоковом режиме в более крупные пакеты заданий, которые могут быть поставлены в очередь и/или дополнительно агрегированы в качестве подготовки для передачи, например, посредством DDR3 в 7, например, посредством протокола широкополосной двухточечной связи с малой задержкой, например QPI 3. В конкретных случаях данные могут быть буферизованы в соответствии с конкретными наборами данных, передаваемыми в FPGA. После того, как объединенные в пакет данные приняты FPGA 7, например, с поддержкой когерентности кэша, они могут обработаны и отправлены в один или более специализированных кластеров 11, откуда они могут быть направлены далее в один или более наборов движков обработки для обработки их там в соответствии с одной или более операций конвейера, описанных в настоящем документе.[00542] For example, as shown in FIG. 39, in various embodiments, the worker thread generates various job data batches that can be compiled and/or streamed into larger job batches that can be queued and/or further aggregated in preparation for transmission, e.g. via DDR3 in 7, for example via a low latency broadband point-to-point protocol such as QPI 3. In specific cases, data can be buffered according to specific data sets being passed to the FPGA. Once the packaged data is received by the FPGA 7, for example with cache coherence support, it can be processed and sent to one or more specialized clusters 11, from where it can be forwarded further to one or more sets of processing engines for processing therein. in accordance with one or more pipeline operations described herein.

[00543] После обработки данные результатов могут быть отправлены обратно в кластер и поставлены в очередь на отправку обратно по двухточечному межсоединению тесного связывания в ЦПУ для последующей обработки. В определенных вариантах реализации данные могут быть отправлены в поток деагрегатора для последующей обработки. По завершении последующей обработки данные могут быть отправлен обратно в первоначальный рабочий поток 20, который может ожидать эти данные. Такая распределенная обработка особенно полезна в случае функций, описанных выше в настоящем документе. В частности, эти функции отличаются тем, что их алгоритмическая сложность (хотя и требующая очень больших затрат сетевых вычислительных ресурсов) довольно ограничена и каждая из них может быть выполнена с возможностью обладания довольно равномерной вычислительной стоимостью всех своих различных подопераций.[00543] Once processed, the result data can be sent back to the cluster and queued to be sent back over the point-to-point tightly coupled interconnect to the CPU for further processing. In certain implementations, data may be sent to a deaggregator thread for subsequent processing. Once post-processing is complete, the data can be sent back to the original worker thread 20, which can wait for the data. This distributed processing is especially useful in the case of the functions described earlier in this document. In particular, these functions are distinguished by the fact that their algorithmic complexity (although very demanding of network computing resources) is quite limited and each of them can be implemented with the ability to have a fairly uniform computational cost of all its various sub-operations.

[00544] Однако в различных случаях вместо обработки данных в больших пакетах могут выполняться более мелкие подпрограммы или протоколы отдельно взятых функций или элементов, например, относящиеся к одной или более функциям конвейера, а не выполняющие функции полной обработки для этого конвейера на этих данных. Следовательно, полезная стратегия может заключаться в выявлении одной или более критических функций для ресурсоемких вычислений в любой данной операции и затем реализовать эту подфункцию в заказной логике FPGA (аппаратное ускорение), например, для ресурсоемких подфункций, а остальную часть операции, и в идеале большую или значительную часть алгоритмической сложности, реализовать в программном обеспечении для выполнения в ЦПУ/ГПУ/КПУ, как описано в настоящем документе, например, в соответствии с ФИГ. 39.[00544] However, in various cases, instead of processing data in large batches, smaller subroutines or protocols of individual functions or elements may be executed, for example, related to one or more functions of a pipeline, rather than performing full processing functions for that pipeline on that data. Therefore, a useful strategy may be to identify one or more critical functions for a computationally intensive operation in any given operation and then implement that subfunction in custom FPGA (hardware acceleration) logic, for example, for the computationally intensive subfunctions, and the rest of the operation, and ideally most or a significant portion of the algorithmic complexity is implemented in software for execution on the CPU/GPU/CPU, as described herein, for example, in accordance with FIG. 39.

[00545] Как правило, многие операции обработки геномных данных отличаются именно тем, что на небольшой процент алгоритмической сложности приходится большой процент общей вычислительной нагрузки. Вот типичный пример: на 20% алгоритмической сложности для выполнения данной функции могут приходиться 90% вычислительной нагрузки, тогда как на остальные 80% алгоритмической сложности может приходиться только 10% вычислительной нагрузки. Следовательно, в различных случаях компоненты системы, описанной в настоящем документе, могут быть выполнены с возможностью реализации большой, например, 20% или более, части сложности для осуществления с высокой эффективностью в заказной логике FPGA, которая может быть выполнена с возможностью отслеживания и управления в аппаратной конструкции и, таким образом, может быть выполнена с возможностью осуществления этого в FPGA; что, в свою очередь, может снизить вычислительную нагрузку на ЦПУ на 90%, тем самым обеспечив 10-кратное общее ускорение. Другие типичные примеры могут быть даже еще более экстремальными, например, когда на 10% логарифмической сложности может приходиться 98% вычислительной нагрузки, и в таком случае применения ускорения FPGA, как описано в настоящем документе, к составляющей 10% части сложности может быть даже еще проще, но может также обеспечить до 50-кратного чистого ускорения. В различных случаях, где требуется предельно ускоренная обработки, одна или более функций могут выполняться квантовым вычислительным устройством.[00545] In general, many genomic data processing operations are characterized by the fact that a small percentage of the algorithmic complexity accounts for a large percentage of the total computational load. Here's a typical example: 20% of the algorithmic complexity for a given function might account for 90% of the computational load, while the remaining 80% of the algorithmic complexity might account for only 10% of the computational load. Therefore, in various cases, components of the system described herein may be configured to implement a large, e.g., 20% or more, portion of the complexity to be implemented with high efficiency in custom FPGA logic, which may be configured to be monitored and controlled in hardware design and thus can be configured to implement this in an FPGA; which in turn can reduce the processing load on the CPU by 90%, thereby providing a 10x overall speedup. Other typical examples may be even more extreme, such as where 10% of the logarithmic complexity may account for 98% of the computational load, in which case applying FPGA acceleration as described herein to the 10% portion of the complexity may be even simpler , but can also provide up to 50x net acceleration. In various cases where extremely accelerated processing is required, one or more functions can be performed by a quantum computing device.

[00546] Однако такие подходы к ускорению на основе «раздробленной» или распределенной обработки могут более практичными при реализации на тесно интегрированной платформе ЦПУ/ГПУ + FPGA, а не на слабо интегрированной платформе ЦПУ/ГПУ + FPGA. В частности, на слабо интегрированной платформе часть, например, функции, подлежащие реализации в логике FPGA, могут быть выбраны таким образом, чтобы свести к минимуму ввод данных в движки FPGA и свести к минимуму вывода данных из движков FPGA, например, для каждой единицы обработанных данных, и дополнительно можно было выполнить их с возможностью поддержания границы между программным/аппаратным обеспечением, способной выдерживать большие задержки. В таких случаях граница между аппаратной и программной частями может усиливаться, например, на слабо интегрированной платформе, для протаскивания через определенные точки стыка узкой полосы пропускания/широкой полосы пропускания, причем эти разделения могут быть в противном случае нежелательны в других отношениях при оптимизации разбиения на части алгоритмической сложности и вычислительной нагрузки. Этом может зачастую приводить к удлинению границ аппаратной части, охватывающих нежелательно большую часть алгоритмической сложности в жестко смонтированном формате, или к сжатию границ аппаратной части с нежелательным исключением частей с плотной вычислительной нагрузкой.[00546] However, such "fragmented" or distributed processing-based acceleration approaches may be more practical when implemented on a tightly integrated CPU/GPU + FPGA platform rather than a loosely integrated CPU/GPU + FPGA platform. In particular, on a loosely integrated platform, the portion, for example, the functions to be implemented in the FPGA logic, can be selected in such a way as to minimize data input to the FPGA engines and to minimize data output from the FPGA engines, for example, for each unit processed data, and could additionally be executed with the ability to maintain a software/hardware boundary capable of withstanding high latency. In such cases, the hardware/software boundary may be reinforced, for example on a loosely integrated platform, to pull through certain narrow-bandwidth/high-bandwidth junctions, where these splits may otherwise be undesirable when optimizing the partitioning algorithmic complexity and computational load. This can often result in elongated hardware boundaries, undesirably capturing much of the algorithmic complexity in a hard-wired format, or in compressed hardware boundaries, undesirably excluding computationally dense parts.

[00547] В отличие от этого на жестко связанной платформе ЦПУ/ГПУ + FPGA благодаря совестно используемой памяти с поддержанием когерентности кэша и широкополосному межсоединению с малой задержкой ЦПУ/ГПУ/FPGA части операции обработки геномных данных с низкой сложностью/высокой вычислительной нагрузкой могут быть выбраны очень точно для реализации в заказной логике FPGA (например, с помощью аппаратных движков, описанных в настоящем документе), при оптимизированных границах между программным/аппаратным обеспечением. В таком случае, даже если единица данных на желательной границе между программным/аппаратным обеспечением большая, она все равно может быть передана на обслуживание в аппаратный движок FPGA для обработки, просто за счет передачи указателя в конкретную единицу данных. В частности, в случае, который показан на ФИГ. 33B, аппаратный движок 13 FPGA 7 может обойтись без доступа к каждому элементу единицы данных, хранящихся в DRAM 1014; вместо этого он может получать доступ к необходимым элементам, например, в кэше 1014a, с помощью небольших эффективных доступов по межсоединению 3' с малой задержкой, обслуживающему кэш ЦПУ/ГПУ, те самым потребляя меньше совокупной полосы пропускания, чем в случае, если бы нужно было получить доступ ко всей единице данных и/или передать ее на FPGA 7, например, с помощью DMA памяти DRAM 1014 по слабому межсоединению 3, как показано на. 33A.[00547] In contrast, on a tightly coupled CPU/GPU+FPGA platform, due to shared memory with cache coherence and a high-bandwidth, low-latency CPU/GPU/FPGA interconnect, low-complexity/high-computation-load parts of the genomic data processing operation can be selected very precisely for implementation in custom FPGA logic (e.g., using the hardware engines described herein), with optimized software/hardware boundaries. In such a case, even if a data unit at the desired software/hardware boundary is large, it can still be handed over to the FPGA hardware engine for processing, simply by passing a pointer to the specific data unit. Particularly in the case shown in FIG. 33B, the hardware engine 13 of the FPGA 7 can dispense with access to each element of the data unit stored in the DRAM 1014; instead, it can access needed entries, such as those in cache 1014a, using small, efficient, low-latency 3' interconnects serving the CPU/GPU cache, thereby consuming less overall bandwidth than it otherwise would have. was to access the entire data unit and/or transfer it to FPGA 7, for example, using the DMA of DRAM 1014 over weak interconnect 3, as shown in. 33A.

[00548] В таких случаях аппаратный движок 13 может аннотировать результаты обработки единице данных на месте в памяти 1014 ЦПУ/ГПУ, не передавая в потоковом режиме полную копию единицы данных с помощью DMA в память ЦПУ/ГПУ. Даже если требуемая граница между программным/аппаратным обеспечением не подходит для того, чтобы программный поток 20 выполнял с большой задержкой неблокирующую передачу на обслуживание в порядке очереди в аппаратный движок 13, она потенциально может создать блокирующий вызов функции в аппаратный движок 13, переходя в режим сна на время короткой задержки, пока аппаратные движки не завершат работу, причем эта задержка резко уменьшается с помощью совместной памяти с поддержанием когерентности кэша, высокоскоростного межсоединения с малой задержкой и распределенной модели координации между программным/аппаратным обеспечением, как показано на ФИГ. 33B.[00548] In such cases, the hardware engine 13 may annotate the processing results to a data unit in place in CPU/GPU memory 1014 without streaming a complete copy of the data unit via DMA to the CPU/GPU memory. Even if the required software/hardware boundary is not suitable for software thread 20 to make a high-latency, non-blocking, first-in, first-out handoff to hardware engine 13, it could potentially make a blocking function call to hardware engine 13 by going to sleep. for a short delay until the hardware engines complete their operation, which latency is dramatically reduced by cache-coherent shared memory, high-speed, low-latency interconnect, and a distributed software/hardware coordination model, as shown in FIG. 33B.

[00549] В конкретных случаях ввиду того, специфические алгоритмы и требования к обработке сигнала/изображения и определению оснований меняются от одной технологии секвенатора к другой, и поскольку количество необработанных данных с датчика секвенатора обычно колоссальное (оно сокращается до огромного после обработки сигнала/изображения и до умеренно большого после определения оснований), такие обработка сигнала/изображения и определение оснований могут эффективно выполняться в самом секвенаторе или на расположенном по соседству вычислительном сервере, соединенном посредством широкополосного канала передачи с секвенатором. Однако пропускная способность секвенаторов ДНК постоянно увеличивалась с темпами роста, превышающими закон Мура, так что существующих основанных на центральном процессорном устройстве(«ЦПУ») и/или графическом процессорном устройстве («ГПУ») обработок сигнала/изображения и определения оснований, реализуемых по отдельности и каждый сам по себе, стало все больше и больше не хватать для выполнения этой задачи. Тем не менее, поскольку жестко интегрированные платформы ЦПУ + FPGA и/или ЦПУ + FPGA и/или ГПУ/ЦПУ + FPGA могут быть выполнены компактными и легко реализуемыми в таком секвенаторе, например, в виде микросхемы ЦПУ, и/или ГПУ, и/или FPGA, помещенной на материнскую плату секвенатора, или легко устанавливаемое в сервер возле секвенатора, или облачную серверную систему с дистанционным доступом из секвенатора, такой секвенатор может быть идеальной платформой для обеспечения ускорения громоздких вычислений, оказываемого аппаратными движками FPGA/ASIC, описанными в настоящем документе.[00549] In specific cases, because the specific algorithms and requirements for signal/image processing and base determination vary from one sequencer technology to another, and because the amount of raw data from a sequencer sensor is usually enormous (it is reduced to enormous after signal/image processing and to moderately large after base determination), such signal/image processing and base determination can be efficiently performed within the sequencer itself or at a nearby computing server connected via a broadband link to the sequencer. However, the throughput of DNA sequencers has steadily increased at rates exceeding Moore's Law, such that existing central processing unit (“CPU”) and/or graphics processing unit (“GPU”) based signal/image processing and base detection are implemented separately and each on his own, became more and more insufficient to complete this task. However, since tightly integrated CPU + FPGA and/or CPU + FPGA and/or GPU/CPU + FPGA platforms can be made compact and easily implemented in such a sequencer, for example, in the form of a CPU chip and/or GPU and/ or an FPGA placed on the sequencer motherboard, or easily installed in a server near the sequencer, or a cloud server system with remote access from the sequencer, such a sequencer can be an ideal platform to provide the computational acceleration provided by the FPGA/ASIC hardware engines described herein .

[00550] Например, система, предложенная в настоящем документе, может быть выполнена с возможностью осуществления первичной, вторичной и/или третичной обработки, или ее части таким образом, чтобы реализовывать ее с помощью ускоренной платформы ЦПУ, ГПУ и/или FPGA; ЦПУ + FPGA; ГПУ + FPGA; ГПУ/ЦПУ + FPGA; КПУ; ЦПУ/КПУ; ГПУ/КПУ; ЦПУ и/или, ГПУ, и/или КПУ + FPGA. Кроме того, такие ускоренные платформы, например, содержащие один или более аппаратных движков FPGA и/или КПУ, полезны для реализации в облачных системах, как описано в настоящем документе. Например, обработка сигнала/изображения, алгоритмы определения оснований, картирования, выравнивания, сортировки, удаления дубликатов и/или определения вариантов, или их части, обычно требуют большого количества математических операций с плавающей запятой и/или фиксированной запятой, в особенности сложений и умножений. Эти функции могут быть также выполнены с возможностью осуществления одной или более схем квантовой обработки, например, реализованы на квантовой платформе обработки.[00550] For example, the system proposed herein may be configured to perform primary, secondary, and/or tertiary processing, or a portion thereof, so as to be implemented using an accelerated CPU, GPU, and/or FPGA platform; CPU + FPGA; GPU + FPGA; GPU/CPU + FPGA; KPU; CPU/CPU; GPU/CPU; CPU and/or GPU and/or CPU + FPGA. In addition, such accelerated platforms, for example, containing one or more FPGA and/or CPU hardware engines, are useful for implementation in cloud systems, as described herein. For example, signal/image processing, radixing, mapping, alignment, sorting, deduplication and/or variant detection algorithms, or parts thereof, typically require a large amount of floating point and/or fixed point mathematical operations, especially additions and multiplications. These functions may also be configured to implement one or more quantum processing circuits, for example, implemented on a quantum processing platform.

[00551] В частности, большие современные FPGA/квантовые схемы содержат тысячи высокоскоростных ресурсов умножения и сложения. Более конкретно, эти схемы могут содержать заказные движки, которые могут быть реализованы в них или с их помощью, причем заказные движки могут быть выполнены с возможностью осуществления параллельных арифметических операций со скоростями далеко превышающими возможности простых ЦПУ общего назначения. Аналогичным образом простые ГПУ имеют более сравнимые ресурсы для параллельных арифметических операций. Тем не менее, ГПУ часто имеют неудобные ограничения в отношении архитектуры и программирования, которые могут сделать невозможным использование их в полной мере. Соответственно, эти арифметические ресурсы FPGA, и/или квантовой обработки, и/или ГПУ могут быть собраны в схему или иным образом сконфигурированную конструкцию для работы в точности предусмотренным образом с эффективностью почти 100%, например, для осуществления вычислений, необходимых функций, описанных в настоящем документе. Соответственно, можно добавить плату ГПУ в гнезда расширения на материнской плате с жестко интегрированными ЦПУ и/или FPGA, тем самым обеспечив возможность взаимодействия всех трех типов процессоров, хотя ГПУ может все же взаимодействовать со всеми своими собственным ограничениями и ограничениями слабой интеграции.[00551] In particular, large modern FPGA/quantum circuits contain thousands of high-speed multiply and add resources. More specifically, these circuits may contain custom engines that can be implemented in or with them, and the custom engines can be configured to perform parallel arithmetic operations at speeds far beyond the capabilities of simple general purpose CPUs. Likewise, simple GPUs have more comparable resources for parallel arithmetic operations. However, GPUs often have inconvenient architectural and programming limitations that can make it impossible to use them to their full potential. Accordingly, these FPGA and/or quantum processing and/or GPU arithmetic resources can be assembled into a circuit or otherwise configured structure to operate in exactly the intended manner with nearly 100% efficiency, for example, to perform the calculations required by the functions described in this document. Accordingly, it is possible to add a GPU card into expansion slots on a motherboard with a tightly integrated CPU and/or FPGA, thereby allowing all three types of processors to interoperate, although the GPU may still interoperate with all of its own and loosely integrated limitations.

[00552] Более конкретно, что касается графических процессорных устройств (ГПУ), в различных случаях ГПУ может быть выполнено с возможностью реализации одной или более функций, как описано в настоящем документе, для ускорения скорости обработки основополагающих вычислений, необходимых для выполнения данной функции, полностью или частично. Более конкретно, ГПУ может быть выполнено с возможностью осуществления одной или более задач в протоколе картирования, выравнивания, сортировки, удаления дубликатов и/или определения вариантов, например, для ускорения одного или более вычислений, например, большого количества математических операций с плавающей запятой и/или фиксированной запятой, например, связанных с ними сложений и умножений, для совместной работы с ЦПУ и/или FPGA сервера с целью ускорения выполнения приложения или обработки и сокращения циклов вычислений, требуемых для осуществления таких функций. Облачные серверы, описанные в настоящем документе, с платами ГПУ/ЦПУ/FPGA могут быть выполнены с возможностью решения без труда ресурсоемких вычислительных задачам и обеспечения менее проблемного взаимодействия с пользователем при использовании для визуализации. Такие задачи, требующие ресурсоемких вычислений, могут быть также сброшены на облако, например, для выполнения квантовым вычислительным устройством.[00552] More specifically, with respect to graphics processing unit (GPU) devices, in various cases the GPU may be configured to implement one or more functions, as described herein, to accelerate the processing speed of the underlying calculations required to perform a given function, completely or partially. More specifically, the GPU may be configured to perform one or more tasks in the mapping, alignment, sorting, deduplication, and/or variant detection protocol, for example, to speed up one or more calculations, such as large numbers of floating point math operations and/or or fixed point, such as associated additions and multiplications, to work in conjunction with the server's CPU and/or FPGA to speed up application or processing execution and reduce the computation cycles required to implement such functions. The cloud servers described herein with GPU/CPU/FPGA cards can be designed to handle computationally intensive tasks with ease and provide a less problematic user experience when used for visualization. Such computationally intensive tasks could also be offloaded to the cloud, for example to be executed by a quantum computing device.

[00553] Соответственно, если жестко интегрированные платформы ЦПУ + FPGA или ГПУ + FPGA и/или ЦПУ/ГПУ/FPGA с совместно используемой памятью применяются в секвенаторе или на прикрепленном или облачном сервере, например, для обработки сигнала/изображения, функций определения оснований, картирования, выравнивания, сортировки. удаления дубликатов и/или определения вариантов, то можно добиться выигрыша, например, в процессе инкрементальной разработки. Например, первоначально ограниченную часть вычислительной нагрузки, такую как программирование функции для определения оснований, картирования, выравнивания, сортировки, удаления дубликатов и/или определения вариантов, можно реализовать в одном или более движках FPGA, тогда как остальная работа может выполняться в платах расширения ЦПУ и/или ГПУ, Однако, модель с жесткой интеграцией ЦПУ/ГПУ/FPGA совместно используемой памятью, представленная в настоящем документе, может быть позже дополнительно сконфигурирована, чтобы облегчить инкрементальный выбор дополнительных требующих ресурсоемких вычислений функций для ускорения с помощью ГПУ, FPGA и/или квантового ускорения, которые могут быть затем реализованы в виде движков обработки, и различные их функции могут быть сброшены для выполнения в FPGA и/или в некоторых случаях могут быть сброшены на облако, например, для выполнения с помощью КПУ, тем самым ускоряя обработку сигнала/изображения/определения оснований/картирования/выравнивания/определения вариантов. Такие инкрементальные продвижения могут быть реализованы по мере необходимости, чтобы не отставать от растущей пропускной способности различных технологий первичной, и/или вторичной, и/или третичной обработки.[00553] Accordingly, if tightly integrated CPU+FPGA or GPU+FPGA and/or CPU/GPU/FPGA shared memory platforms are used in a sequencer or on an attached or cloud server, for example, for signal/image processing, base detection functions, mapping, leveling, sorting. By removing duplicates and/or identifying variants, gains can be achieved, for example, in the incremental development process. For example, an initially limited portion of the computational workload, such as programming a function for radixing, mapping, alignment, sorting, deduplication, and/or variant detection, may be implemented in one or more FPGA engines, while the rest of the work may be performed in CPU expansion cards and /or GPU However, the tight CPU/GPU/FPGA shared memory integration model presented herein can be later further configured to facilitate the incremental selection of additional compute-intensive functions for GPU, FPGA, and/or quantum acceleration. accelerations, which can then be implemented as processing engines, and their various functions can be offloaded to be executed in the FPGA and/or in some cases can be offloaded to the cloud, for example, to be executed by a CPU, thereby speeding up signal/image processing /defining bases/mapping/aligning/identifying variants. Such incremental advances may be implemented as needed to keep up with the increasing throughput of various primary and/or secondary and/or tertiary processing technologies.

[00554] Следовательно, картирование и выравнивание ридов, например, одного или более ридов, на референсный геном, как и сортировка, удаление дубликатов и/или определение вариантов, могут выиграть от такого ускорения с помощью ГПУ и/или FPGA, или КПУ. А именно, картирование и выравнивание и/или определение вариантов, или их части, могут быть реализованы частично или полностью виде заказной логики FPGA, например, с помощью потоковой передачи «подлежащих картированию, и/или выравниванию, и/или определению вариантов» ридов из памяти ЦПУ/ГПУ в движки картирования/выравнивания/определения вариантов FPGA и обратной потоковой передачи записей картированных, и/или выровненных, и/или подвергнутых определению вариантов ридов, которые могут быть затем отправлены в потоковом режиме на плату, например, при выполнении сортировки и/или определения вариантов. Ускорение FPGA работает только на слабо связанной платформе ЦПУ/ГПУ + FPGA, и в конфигурациях, описанных в настоящем документе, может быть чрезвычайно быстрым. Тем не менее, существуют некоторые дополнительные преимущества, которые могут быть достигнуты за счет перехода на жестко интегрированную платформу ЦПУ/ГПУ/КПУ + FPGA. [00554] Consequently, mapping and alignment of reads, eg, one or more reads, to a reference genome, as well as sorting, duplicate removal, and/or variant detection, can benefit from such acceleration using a GPU and/or FPGA or CPU. Namely, mapping and alignment and/or variant determination, or parts thereof, can be implemented partially or entirely as custom FPGA logic, for example, by streaming "to be mapped and/or aligned and/or variant determination" reads from CPU/GPU memory to FPGA mapping/alignment/variant detection engines and stream back records of mapped and/or aligned and/or variant reads that can then be streamed to the board, e.g. when performing sorting and /or definition of options. FPGA acceleration only works on a loosely coupled CPU/GPU + FPGA platform, and in the configurations described herein can be extremely fast. However, there are some additional benefits that can be achieved by moving to a tightly integrated CPU/GPU/CPU + FPGA platform.

[00555] Соответственно, что касается картирования, выравнивания и определения вариантов, в некоторых вариантах реализации общее преимущество жестко интегрированных ЦПУ/ГПУ + FPGA и/или квантовой платформы обработки, как описано в настоящем документе, состоит в том, что ускорение картирования/выравнивания/определения вариантов, например, аппаратное ускорение, может быть эффективно разбито на несколько дискретных требующих ресурсоемких вычислений операций, таких как формирование и/или картирование затравки, формирование цепочки затравки, восстановительное сканирование спаренных концов, выравнивание без гэпов и выравнивание с гэпами (Смита-Ватермана или Нидлмана-Вунша), формирование графа де Брейна, выполнение вычисления HMM и т.п., например, когда программное обеспечение ЦПУ, и/или ГПУ, и/или квантового вычисления выполняет более легкие (но необязательно менее сложные) задачи и может совершать вызовы ускорения из дискретных аппаратных и/или других движков квантового вычисления по мере надобности. Такая модель может быть менее эффективной на типичной слабо интегрированной платформе ЦПУ/ГПУ + FPGA, например, вследствие больших объемов данных, подлежащих передаче туда и обратно между этапами, и больших задержек, но могут быть более эффективными на жестко интегрированной платформе ЦПУ + FPGA, ГПУ + FPGA и/или квантового вычисления с совместно используемой памятью с поддержание когерентности кэша, широкополосным межсоединением с малой задержкой и распределенной моделью координации программного/аппаратного обеспечения. Кроме того, например, в том, что касается определения вариантов, алгоритмы скрытой марковской модели (HMM) и/или динамического программирования (ДП), включая алгоритмы Витерби и алгоритм прямого хода, могут быть реализованы совместно с операцией определения оснований/картирования/выравнивания/сортировки/удаления дубликатов, например, для сравнения наиболее вероятной исходной последовательности, объясняющей наблюдаемые измерения датчика, в конфигурации, например, хорошо подходящей для параллельной ячеистых схем FPGA и/или квантовых схем, описанных в настоящем документе.[00555] Accordingly, with respect to mapping, alignment, and variant determination, in some embodiments, the overall benefit of a tightly integrated CPU/GPU+FPGA and/or quantum processing platform as described herein is that faster mapping/alignment/ defining options, such as hardware acceleration, can be effectively broken down into several discrete computationally intensive operations, such as seed generation and/or mapping, seed chaining, paired-end recovery scanning, gapless alignment, and gapped alignment (Smith-Waterman or Needleman-Wunsch), generating a de Bruijn graph, performing an HMM calculation, etc., for example when CPU and/or GPU and/or quantum computing software performs lighter (but not necessarily less complex) tasks and can make calls acceleration from discrete hardware and/or other quantum computing engines as needed. Such a model may be less efficient on a typical loosely integrated CPU/GPU + FPGA platform, for example, due to large amounts of data to be transferred back and forth between stages and high latencies, but may be more efficient on a tightly integrated CPU + FPGA, GPU platform + FPGA and/or quantum computing with shared memory with cache coherence, high-bandwidth low-latency interconnect, and distributed software/hardware coordination model. In addition, for example, with regard to variant determination, Hidden Markov Model (HMM) and/or Dynamic Programming (DP) algorithms, including Viterbi and forward algorithms, can be implemented in conjunction with the base/mapping/alignment operation. sorting/removing duplicates, for example, to compare the most likely source sequence that explains the observed sensor measurements, in a configuration, for example, well suited for parallel mesh FPGA circuits and/or quantum circuits described herein.

[00556] А именно, эффективное использование аппаратных и/или программных ресурсов в распределенной конфигурации обработки может быть результатом сокращения ускорения с помощью аппаратного обеспечения и/или квантового вычисления для дискретных требующих ресурсоемких вычислений функций. В таких случаях несколько функций, описанных в настоящем документе, могут выполняться в монолитном строго аппаратном движке, чтобы требовать меньше ресурсоемких вычислений, но могут, несмотря на это, оставаться алгоритмически сложными и, следовательно, могут потреблять значительные количества физических ресурсов FPGA (таблицы подстановки, триггеры, блочные ОЗУ и т.д.). В таких случаях переход части или всех различных дискретных функций на программное обеспечение взял бы на себя имеющиеся циклы ЦПУ взамен на освобождение площади FPGA существенного размера. В определенных подобных случаях освобожденная площадь FPGA может быть использована для организации большей параллельности требующих ресурсоемких вычислений подфункций картирования/выравнивания/определения вариантов и таким образом усиления ускорения, или для других геномных функций ускорения. Таких преимуществ можно также достичь за счет реализации требующих ресурсоемких вычислений функций в одной или более специализированных квантовых схем для реализации квантовой вычислительной платформы.[00556] Namely, efficient use of hardware and/or software resources in a distributed processing configuration can result from reduced acceleration using hardware and/or quantum computing for discrete computationally intensive functions. In such cases, several of the functions described herein may be executed in a monolithic strictly hardware engine to require less computationally intensive processing, but may nonetheless remain algorithmically complex and therefore may consume significant amounts of physical FPGA resources (lookup tables, flip-flops, block RAM, etc.). In such cases, moving some or all of the various discrete functions to software would take over existing CPU cycles in exchange for freeing up significant FPGA space. In certain such cases, the freed up FPGA area can be used to provide greater parallelism to computationally intensive mapping/alignment/variant detection subfunctions and thus enhance acceleration, or for other genomic acceleration functions. Such benefits can also be achieved by implementing computationally intensive functions in one or more dedicated quantum circuits to implement a quantum computing platform.

[00557] Следовательно, в различных вариантах реализации алгоритмическая сложность одной или более функций, описанных в настоящем документе, может быть несколько снижена путем выполнения их строго в аппаратном обеспечении или строго в реализации квантовых вычислений. Однако, некоторые операции, такие как сравнение пар возможных выравниваний для ридов со спаренными концами и/или выполнения едва различимых оценок качества картирования (MAPQ), представляют очень низкие вычислительные нагрузки, и поэтому могли бы выиграть от более сложной и точной обработки в программном обеспечении ЦПУ/ГПУ и/или квантового вычисления. Поэтому, как правило, сокращение аппаратной обработки до специфических требующих ресурсоемких вычислений операций позволит использовать более сложные и точные алгоритмы в частях ЦПУ/ГПУ,[00557] Therefore, in various implementations, the algorithmic complexity of one or more of the functions described herein may be somewhat reduced by performing them strictly in hardware or strictly in a quantum computing implementation. However, some operations, such as comparing pairs of candidate alignments for paired-end reads and/or performing subtle mapping quality assessments (MAPQ), represent very low computational loads and would therefore benefit from more sophisticated and accurate processing in CPU software /GPU and/or quantum computing. Therefore, as a rule, reducing hardware processing to specific computationally intensive operations will allow the use of more complex and accurate algorithms in the CPU/GPU parts,

[00558] Кроме того, в различных вариантах реализации все или часть операций картирования/выравнивания/сортировки/удаления дубликатов/определения вариантов, описанные в настоящем документе, могут быть выполнены таким образом, чтобы более сложные алгоритмически вычисления могли выполняться на высоких уровнях в аппаратном обеспечении и/или в одной или более квантовых схем, например, когда вызываемые требующие ресурсоемких вычислений аппаратные и/или квантовые функции выполнены с возможностью осуществления в динамическом или итеративном порядке. В частности, монолитная конструкция строго аппаратной/квантовой обработки может быть реализована с возможностью более эффективного функционирования в линейном конвейере. Например, если во время обработки одно отображаемое выравнивание Смита-Ватермана свидетельствует о том, что истинный путь выравнивания выходит за пределы полосы оценки, например, полосы захвата, как описано выше, для исправления этого нужно вызвать еще одно выравнивание Смита-Ватермана. Следовательно, эти конфигурации могут по существу свести ускорение с помощью аппаратного обеспечения FPGA/квантовое ускорение к дискретным функциям, таким как формирование процедурных абстракций, которые сделают возможным более легкое создание сложности более высокого уровня поверх них.[00558] Additionally, in various embodiments, all or part of the mapping/alignment/sorting/deduplication/variant detection operations described herein may be performed such that more algorithmically complex calculations may be performed at higher levels in hardware and/or in one or more quantum circuits, for example, when the computationally intensive hardware and/or quantum functions being invoked are configured to execute in a dynamic or iterative manner. In particular, a monolithic design of strictly hardware/quantum processing can be implemented with the ability to function more efficiently in a linear pipeline. For example, if during processing one Smith-Waterman alignment displayed indicates that the true alignment path extends beyond the evaluation band, such as the capture band, as described above, another Smith-Waterman alignment must be called to correct this. Therefore, these configurations can essentially reduce FPGA hardware acceleration/quantum acceleration to discrete functions, such as forming procedural abstractions that make it easier to build higher-level complexity on top of them.

[00559] Кроме того, в различных случаях гибкость в пределах алгоритмов картирования/выравнивания/определения вариантов и их функций может быть улучшена путем сведения программного и/или квантового ускорения к дискретным требующим ресурсоемких вычислений функциям и выполнения системы с возможностью осуществления других, например, менее ресурсоемких, частей, в программном обеспечении ЦПУ и/или ГПУ, Например, хотя аппаратные алгоритмы могут быть модифицированы и реконфигурированы в FPGA, как правило, такие изменения в аппаратных конструкциях, например посредством прошивки, могут потребовать в несколько раз больших усилий, чем подобные изменения в программном обеспечении. В таких случаях требующие ресурсоемких вычислений части картирования, и выравнивания, и сортировки, и удаления дубликатов и/или определения вариантов, такие как картирования затравки, формирование цепочки затравки, восстановительное сканирование спаренных концов, выравнивание без гэпов, выравнивание с гэпам и HMM, которые относительно хорошо определены, являются поэтому стабильными функциями и не требуют частых алгоритмических изменений. Следовательно, эти функции могут быть соответствующим образом оптимизированы в аппаратном оборудовании, тогда как другие функции, которые могут быть выполнены программным обеспечением ЦПУ/ГПУ, больше подходят для инкрементального улучшения алгоритмов, что значительно проще в программном обеспечении. Однако после полной отработки они могут быть реализованы в аппаратном обеспечении. Одна или более из этих функций могут быть также выполнены с возможностью реализации в одной или более квантовых схем машины квантовой обработки.[00559] In addition, in various cases, flexibility within variant mapping/alignment/identification algorithms and their functions can be improved by reducing software and/or quantum acceleration to discrete computationally intensive functions and running the system with the ability to implement others, such as less resource-intensive parts in CPU and/or GPU software. For example, although hardware algorithms can be modified and reconfigured in FPGAs, typically such changes to hardware designs, such as via firmware, can require several times the effort of such changes in software. In such cases, the computationally intensive parts of mapping and alignment and sorting and deduplication and/or variant detection, such as seed mapping, seed chaining, paired end recovery scanning, gapless alignment, gap alignment, and HMMs, which are relatively are well defined, are therefore stable functions and do not require frequent algorithmic changes. Therefore, these functions can be suitably optimized in hardware, while other functions that can be performed by CPU/GPU software are more suitable for incremental improvement of algorithms, which is much easier in software. However, once fully developed, they can be implemented in hardware. One or more of these functions may also be configured to be implemented in one or more quantum circuits of a quantum processing machine.

[00560] Соответственно, в различных случаях определение вариантов (по отношению к ДНК или РНК, одного образца или совместной, генеративной или соматической и т.д.) тоже может выиграть от ускорения с помощью FPGA и/или квантового ускорения, например, в отношении его различных требующих ресурсоемких вычислений функций. Например, определители на основе гаплотипов, которые определяют основания на основе подтверждающих данных, полученных из контекста, обеспечиваемого в пределах окна вокруг потенциального варианта, как описано в выше, частот являются наиболее требовательными к ресурсоемким вычислениям. Эти операции, включая сравнение гаплотипа-кандидата (например, однонитевой нуклеотидной последовательности, представляющей гипотезу истинности последовательности по меньшей мере одной из нитей образца в исследуемом локусе генома) с каждым ридом секвенатора, например, для оценки условной вероятности наблюдения рида при условии истинности данного гаплотипа.[00560] Accordingly, in various cases, variant detection (with respect to DNA or RNA, single sample or joint, generative or somatic, etc.) can also benefit from FPGA acceleration and/or quantum acceleration, e.g. its various computationally intensive functions. For example, haplotype-based determiners, which determine bases based on supporting data derived from the context provided within a window around a candidate, as described in frequencies above, are the most computationally intensive. These operations, including comparison of a candidate haplotype (e.g., a single-stranded nucleotide sequence representing the hypothesis of the truth of the sequence of at least one of the sample strands at the genomic locus under study) with each sequencer read, for example, to estimate the conditional probability of observing a read given the truth of a given haplotype.

[00561] Такую операцию можно выполнить с помощью одного или более вычислений MRJD, парной скрытой марковской модели (парная-HMM) и/или частично определенной марковской модели (PD-HMM), которое суммирует вероятности возможных комбинаций ошибок при секвенировании или приготовлении образца (ПЦР и т.д.) с помощью алгоритма динамического программирования. Следовательно, в подобных случаях система может быть выполнена с возможностью ускорения вычисления парной-HMM или PD-HMM с помощью одного или более, например, параллельных, аппаратных движков FPGA или движков квантовой обработки, где программное обеспечение ЦПУ/ГПУ/КПУ может быть выполнено с возможностью исполнения остальной части родительского алгоритма определения вариантов на основе гаплотипов, либо на слабо интегрированной платформе, либо на жестко интегрированной платформе ЦПУ + FPGA, или ГПУ + FPGA, или ЦПУ и/или ГПУ + FPGA, и/или КПУ. Например, при слабой интеграции программные потоки могут строить и подготавливать граф де Брейна и/или граф сборки из ридов, перекрывающих выбранную активную область (окно или непрерывное подмножество референсного генома), выделять гаплотипы-кандидаты из графа и выстраивать в очередь пары гаплотип-рид для передачи с помощью DMA в аппаратные движки FPGA, например, для сравнения парной-HMM или PD-HMM. Те же самые или другие программные потоки могут затем принимать результаты парной-HMM, поставленные в очередь и переданные с помощью DMA обратно из FPGA в память ЦПУ/ГПУ и выполнять генотипирование и байесовское вычисление вероятностей для осуществления окончательного определения вариантов. Конечно, одна или более из этих функций могут быть выполнены с возможностью выполнения на одной или более квантовых вычислительных платформ.[00561] Such an operation can be performed using one or more MRJD, pairwise hidden Markov model (pairwise-HMM) and/or partially defined Markov model (PD-HMM) calculations that summarize the probabilities of possible combinations of sequencing or sample preparation (PCR) errors etc.) using a dynamic programming algorithm. Therefore, in such cases, the system may be configured to accelerate the computation of a pair-HMM or PD-HMM using one or more, for example, parallel, FPGA hardware engines or quantum processing engines, where the CPU/GPU/CPU software may be executed with the ability to execute the rest of the parent haplotype-based variant detection algorithm, either on a loosely integrated platform, or on a tightly integrated CPU + FPGA, or GPU + FPGA, or CPU and/or GPU + FPGA, and/or CPU platform. For example, with weak integration, software threads can build and prepare a de Bruijn graph and/or assembly graph from reads that overlap a selected active region (a window or a contiguous subset of a reference genome), extract candidate haplotypes from the graph, and queue haplotype-read pairs for transfers using DMA to hardware FPGA engines, for example, for pair-HMM or PD-HMM comparison. The same or other software threads can then receive the pair-HMM results queued and DMAed back from the FPGA to CPU/GPU memory and perform genotyping and Bayesian probability calculations to perform the final variant determination. Of course, one or more of these functions may be capable of execution on one or more quantum computing platforms.

[00562] Например, как показано на ФИГ. 38, ЦПУ/ГПУ 1000 может включать в себя один или более, например, множество, потоков 20a, 20b и 20c, каждый из которых может иметь доступ к связанному DRAM 1014, причем DRAM имеет рабочие пространства 1014a, 1014b и 1014c, в пределах которых каждый поток 20a, 20bи 20c может иметь доступ, соответственно, для выполнения одной или более операций на одной или более структур данных, таких как большие структуры данных. Эти части памяти и их структуры данных могут быть доступны, например, через соответствующие части 1014a' кэша, например, для одного или более движков 13a, 13b, 13c обработки FPGA 7, причем движки обработки могут получать доступ к структурам референсных данных, например, при выполнении одной или более операций, описанных в настоящем документе, таких как картирование, выравнивание, сортировка и/или поиск вариантов. Благодаря широкополосному тесно связывающему межсоединению 3 данные, относящиеся к структурам данных и/или связанные с результатами обработки, могут по существу беспрепятственно совместно использоваться ЦПУ, и/или ГПУ, и/или КПУ, и/или связанной FPGA, например, с поддержанием когерентности кэша, для оптимизации эффективности обработки.[00562] For example, as shown in FIG. 38, the CPU/GPU 1000 may include one or more, such as a plurality, of threads 20a, 20b, and 20c, each of which may have access to an associated DRAM 1014, the DRAM having workspaces 1014a, 1014b, and 1014c within which each thread 20a, 20b, and 20c may have access, respectively, to perform one or more operations on one or more data structures, such as large data structures. These memory portions and their data structures may be accessed, for example, through corresponding cache portions 1014a′, for example, by one or more processing engines 13a, 13b, 13c of the FPGA 7, wherein the processing engines may access the reference data structures, e.g. performing one or more of the operations described herein, such as mapping, alignment, sorting, and/or variant searching. Thanks to the wideband tight interconnect 3, data related to data structures and/or associated with processing results can be shared substantially seamlessly between the CPU and/or GPU and/or CPU and/or associated FPGA, for example while maintaining cache coherence , to optimize processing efficiency.

[00563] Соответственно, согласно одному аспекту может быть предусмотрена система, которая может быть выполнена с возможностью совместного использования ресурсов памяти среди ее составных частей, например, при выполнении некоторых вычислительных задач или подфункций посредством программного обеспечения, такого как выполняемое с помощью ЦПУ, и/или ГПУ, и/или КПУ, и/или выполнения других вычислительных задач или подпрограмм посредством прошивки, например посредством аппаратного обеспечения связанной интегральной схемы, такой как FPGA, ASIC и/или структурированная ASIC. Этого можно достичь различными путями, например посредством прямого слабого или жесткого связывания между ЦПУ/ГПУ/КПУ и микросхемой, например FPGA. Такие конфигурации могут быть особенно полезны при распределении операций, относящихся к обработке больших структур данных, как описано в настоящем документе, которые используют трудоемкие функции или подфункции, предназначенные для использования и доступа, как ЦПУ, и/или ГПУ и/или КПУ, так и интегральной схемой. В частности, в различных вариантах реализации при обработке данных посредством геномного конвейера, как описано в настоящем документе, например, для ускорения общей функции обработки, синхронизации и эффективности, на данных могут выполняться ряд различных операций, причем эти операции могут вовлекать как программные, так и аппаратные компоненты обработки.[00563] Accordingly, in accordance with one aspect, a system may be provided that may be configured to share memory resources among its constituent parts, for example, when performing certain computing tasks or subfunctions through software, such as executed by a CPU, and/ or GPU and/or CPU, and/or performing other computing tasks or routines through firmware, such as through associated integrated circuit hardware such as an FPGA, ASIC, and/or structured ASIC. This can be achieved in various ways, for example through direct weak or tight coupling between the CPU/GPU/CPU and the chip, such as an FPGA. Such configurations may be particularly useful when distributing operations related to the processing of large data structures, as described herein, that use time-consuming functions or subfunctions intended to be used and accessed by both the CPU and/or GPU and/or CPU and integrated circuit. In particular, in various embodiments, when processing data through a genomic pipeline as described herein, for example, to speed up overall processing, timing, and efficiency, a number of different operations may be performed on the data, which operations may involve both software and processing hardware components.

[00564] Следовательно, может потребоваться совместное использование данных или иной обмен ими между программным компонентом, выполняющимися на ЦПУ, и/или ГПУ, и/или КПУ и аппаратным компонентом, встроенным в микросхему, например FPGA или ASIC. Соответственно, один или более из различных этапов в конвейере обработки или его части, могут быть выполнены одним устройством, например, ЦПУ/ГПУ/КПУ, а один или более из различных этапов могут быть выполнены другим устройством, например FPGA или ASIC. В таком случае ЦПУ и FPGA должны быть соединены с возможностью обмена данными, например, с помощью двухточечного межсоединения, таким образом, чтобы обеспечивать возможность эффективной передачи таких данных, причем сопряжение может включать совместное использование ресурсов памяти. Чтобы добиться такого распределения задач и совместного использования информации для выполнения таких задач, ЦПУ, и/или ГПУ, и/или КПУ могут быть слабо или жестко связаны друг с другом и/или FPGA или другим набором микросхем, и может быть включена система управления рабочими потоками для эффективного распределения рабочей нагрузки.[00564] Consequently, it may be necessary to share or otherwise exchange data between a software component running on the CPU and/or GPU and/or CPU and an on-chip hardware component, such as an FPGA or ASIC. Accordingly, one or more of the various stages in a processing pipeline, or portions thereof, may be performed by one device, such as a CPU/GPU/CPU, and one or more of the various stages may be performed by another device, such as an FPGA or ASIC. In such a case, the CPU and FPGA must be coupled in a data-exchangeable manner, eg, via a point-to-point interconnect, in a manner that allows such data to be transferred efficiently, which coupling may include sharing memory resources. To achieve such distribution of tasks and sharing of information to perform such tasks, the CPU and/or GPU and/or GPU may be loosely or tightly coupled to each other and/or FPGA or other chipset, and a worker management system may be included threads to efficiently distribute the workload.

[00565] Поэтому в конкретных вариантах реализации предложена платформа геномного анализа. Например, платформа может включать в себя материнскую плату, память, множество интегральных схем, например формирующих один или более из ЦПУ/ГПУ/КПУ, модуль картирования, модуль выравнивания, модуль сортировки и/или модуль определения вариантов. А именно, в конкретных вариантах реализации платформа может включать в себя первую интегральную схему, такую как интегральная схема, формирующая центральное процессорное устройство (ЦПУ) или графическое процессорное устройство (ГПУ), которое реагирует на один или более программных алгоритмов, которые выполнены с возможностью подачи ЦПУ/ГПУ инструкции на выполнение одного или более наборов функций геномного анализа, как описано в настоящем документе, например, где ЦПУ/ГПУ включает в себя первый набор физических электронных межсоединений для соединения с материнской платой. В других вариантах реализации предложено квантовое процессорное устройство, причем КПУ содержит одну или более квантовых схем, которые выполнены с возможностью осуществления одной или более функций, описанных в настоящем документе. В различных случаях предусмотрена память, которая может быть также присоединена к материнской плате и может быть также электронно соединена с ЦПУ и/или ГПУ, и/или КПУ, например посредством по меньшей мере части первого набора физических электронных межсоединений. В таких случаях память может быть выполнена с возможностью хранения множества ридов геномных данных, и/или по меньшей мере одной или более генетических референсных последовательностей, и/или индекса, например, в хэш-таблице, одной или более генетических референсных последовательностей.[00565] Therefore, in specific embodiments, a genomic analysis platform is provided. For example, the platform may include a motherboard, memory, a plurality of integrated circuits, such as forming one or more of a CPU/GPU/CPU, a mapping module, an alignment module, a sorting module, and/or a variant determination module. Namely, in specific embodiments, the platform may include a first integrated circuit, such as an integrated circuit forming a central processing unit (CPU) or graphics processing unit (GPU), that responds to one or more software algorithms that are configured to provide The CPU/GPU instructions to perform one or more sets of genomic analysis functions as described herein, for example, wherein the CPU/GPU includes a first set of physical electronic interconnects for connection to a motherboard. In other embodiments, a quantum processing device is provided, wherein the CPU includes one or more quantum circuits that are configured to perform one or more of the functions described herein. In various cases, memory is provided that may also be attached to the motherboard and may also be electronically coupled to the CPU and/or GPU and/or CPU, for example through at least a portion of the first set of physical electronic interconnects. In such cases, the memory may be configured to store multiple reads of genomic data, and/or at least one or more genetic reference sequences, and/or an index, for example, in a hash table, of one or more genetic reference sequences.

[00566] Кроме того, платформа может включать в себя одну или более вторых интегральных схем, например, где каждая из вторых интегральных схем формирует программируемую пользователем вентильную матрицу (FPGA), или ASIC, или структурированную ASIC, имеющую второй набор физических электронных межсоединений для соединения с ЦПУ и памятью, например посредством протокола двухточечного соединения. В таком случае FPGA (или структурированная ASIC) может быть выполнена с возможностью программирования с помощью прошивки для конфигурирования набора жестко смонтированных цифровых логических схем, которые взаимно соединены множеством физических межсоединений для выполнения второго набора функций геномного анализа, например, картирования, выравнивания, сортировки, удаления дубликатов, определения вариантов и т.д., функции HMM и т.д. В частности, жестко смонтированные цифровые логические схемы FPGA могут быть выполнены в виде набора движков обработки для осуществления одного или более предварительно сконфигурированных этапов в конвейере анализа последовательностей платформы геномного анализа, например, где наборы движков обработки включают в себя один или более из модулей картирования, и/или выравнивания, и/или сортировки, и/или удаления дубликатов, и/или определения вариантов, причем модули могут быть сформированы из отдельных или одних и тех же подмножеств движков обработки.[00566] In addition, the platform may include one or more second integrated circuits, for example, where each of the second integrated circuits forms a field programmable gate array (FPGA), or ASIC, or structured ASIC having a second set of physical electronic interconnects for interconnection with the CPU and memory, for example via a point-to-point protocol. In such a case, the FPGA (or structured ASIC) may be programmable via firmware to configure a set of hard-wired digital logic circuits that are interconnected by a plurality of physical interconnects to perform a second set of genomic analysis functions, e.g., mapping, alignment, sorting, deletion duplicates, variant definitions, etc., HMM functions, etc. In particular, the hard-wired FPGA digital logic circuits may be implemented as a set of processing engines for implementing one or more preconfigured steps in a sequence analysis pipeline of a genomic analysis platform, for example, where the sets of processing engines include one or more of mapping modules, and /or alignment, and/or sorting, and/or removing duplicates, and/or identifying variants, and modules can be formed from separate or the same subsets of processing engines.

[00567] Например, что касается определения вариантов, вычисление парной-HMM или PD-HMM является одним из самых требующих ресурсоемких вычислений этапов протокола определения вариантов на основе гаплотипов. Следовательно, скорость определения вариантов может быть сильно улучшена путем ускорения данного этапа в одном или более движков FPGA или движков квантовой обработки. Однако можно получить дополнительную выгоду путем ускорения других требующих ресурсоемких вычислений этапов в дополнительных движках FPGA и/или КП QP, чтобы достичь более сильного ускорения определения вариантов или его части, или сокращения нагрузки на ЦПУ/ГПУ и количества необходимых ядер СПУ/ГПУ, или и того, и другого, как показано на ФИГ. 38.[00567] For example, with respect to variant determination, computing the pairwise-HMM or PD-HMM is one of the most computationally intensive steps in a haplotype-based variant determination protocol. Therefore, the speed of variant detection can be greatly improved by accelerating this step in one or more FPGA engines or quantum processing engines. However, additional benefits can be obtained by accelerating other computationally intensive steps in additional FPGA and/or QP engines to achieve greater acceleration of variant determination or part thereof, or reducing the CPU/GPU load and the number of required SPU/GPU cores, or both, as shown in FIG. 38.

[00568] В число дополнительных требующих ресурсоемких вычислений функций, имеющих отношение к определению вариантов, которые могут быть реализованы в движках FPGA и/или квантовой обработки, входят: обнаружение области, пригодной для определения, где выбирают для обработки области референсного генома, покрываемые выровненными ридами достаточной глубины и/или качества; обнаружение активной области, где выявляют локусы референсного генома с нетривиальными подтверждающими данными возможных вариантов и окна с достаточным контекстом вокруг этих локусов выбирают в качестве активных областей для дальнейшего анализа; построение графа де Брейна или другого графа сборки, где риды, перекрывающие активную область и/или K-меры из этих ридов собирают в граф; подготовка графа сборки, например, обрезание путей с низким покрытием или низким качеством, восстановление висящих начальных и конечных участков путей путем соединения их на референсном остове в графе, преобразование представления графа из K-меров в последовательность, объединение подобных ветвей и иное упрощение графа; выделение гаплотипов-кандидатов из собранного графа; а также выравнивание гаплотипов-кандидатов на референсный гном, например, с помощью выравнивания Смита-Ватермана, например, для определения вариантов (ОНП и/или инделов) в референсе, представляемом гаплотипом, и синхронизация их нуклеотидных позиций с референсом.[00568] Additional computationally intensive functions relevant to variant detection that may be implemented in FPGA and/or quantum processing engines include: region detection where regions of the reference genome covered by aligned reads are selected for processing of sufficient depth and/or quality; active region detection, where reference genome loci with non-trivial supporting evidence for possible variants are identified and windows with sufficient context around these loci are selected as active regions for further analysis; constructing a de Bruijn graph or other assembly graph, where reads overlapping the active region and/or K-mers from these reads are assembled into a graph; preparing the assembly graph, for example, pruning paths with low coverage or low quality, restoring dangling start and end sections of paths by connecting them at a reference skeleton in the graph, converting the graph representation from K-mers to a sequence, merging similar branches, and otherwise simplifying the graph; selection of candidate haplotypes from the collected graph; and the alignment of candidate reference gnome haplotypes, e.g., using Smith-Waterman alignment, e.g., to identify variants (SNPs and/or indels) in the reference represented by the haplotype, and synchronizing their nucleotide positions with the reference.

[00569] Все эти функции могут быть реализованы в виде высокопроизводительных аппаратных движков в FPGA и/или с помощью одной или более квантовых схем квантовой вычислительной платформы. Однако вызов такого разнообразия аппаратных функций ускорения из множества точек интеграции в программном обеспечении определения вариантов может стать неэффективным на слабо связанной платформе ЦПУ/ГПУ/КПУ + FPGA, и поэтому, возможно, целесообразной будет жестко интегрированная платформа ЦПУ/ГПУ/КПУ + FPGA. Например, различные способы пошаговой обработки, такие как построение, приготовление графа де Брейна или другого графа сборки и выделение из него гаплотипов может сильно выиграть от жестко связанной платформы ЦПУ/ГПУ/КПУ + FPGA. Кроме того, графы сборки представляют собой большие и сложные структуры данных, и многократная передача их между ЦПУ и/или ГПУ и FPGA может стать ресурсоемкой и препятствовать значительному ускорению.[00569] All of these functions can be implemented as high-performance hardware engines in FPGAs and/or using one or more quantum circuits of a quantum computing platform. However, calling such a variety of hardware acceleration functions from multiple integration points in the variant definition software may become ineffective on a loosely coupled CPU/GPU/CPU + FPGA platform, and therefore a tightly integrated CPU/GPU/CPU + FPGA platform may be appropriate. For example, various stepwise processing techniques such as constructing, preparing a de Bruijn graph or other assembly graph and extracting haplotypes from it can greatly benefit from a tightly coupled CPU/GPU/CPU + FPGA platform. Additionally, assembly graphs are large and complex data structures, and repeatedly transferring them between the CPU and/or GPU and FPGA can become resource-intensive and prevent significant speedup.

[00570] Следовательно, идеальная модель для такой обработки графа с использованием жестко интегрированной платформы ЦПУ/ГПУ/КПУ и FPGA представляет собой хранение таких графов в совместно используемой памяти с поддержанием когерентности кэша для попеременной обработки с помощью ЦПУ, и/или ГПУ, и/или КПУ и аппаратных функций FPGA. В таком случае программный поток, обрабатывающий данных граф, может итеративно подавать команды на выполнение различных требующих ресурсоемких вычислений этапов обработки графа аппаратным движком, а затем программное обеспечение может проверять результаты и определять следующие этапы между вызовами аппаратного обеспечения, например, как в приведенном в качестве примера процессе, изображенном на ФИГ. 39. Управление этой моделью обработки может осуществляться соответствующим образом сконфигурированной системой управления рабочими потоками и/или может быть выполнена с возможностью соответствия парадигмам программирования, таким как API структуры данных или объектно-ориентированный интерфейс способа, но с ускорением требующих ресурсоемких вычислений функций с помощью заказных аппаратных движков и/или движков квантовой обработки, которые на практике осуществляются за счет реализации на жестко связанной платформе ЦПУ, и/или ГПУ, и/или КПУ + FPGA с совместно используемой памятью, поддерживающей когерентность кэша и широкополосными межсоединениями ЦПУ/ГПУ/КПУ/FPGA с малой задержкой.[00570] Therefore, the ideal model for such graph processing using a tightly integrated CPU/GPU/CPU and FPGA platform is to store such graphs in shared memory while maintaining cache coherence for alternate processing by the CPU and/or GPU and/ or CPU and FPGA hardware functions. In such a case, the software thread processing the graph data can iteratively issue commands to perform various computationally intensive steps in the hardware engine's graph processing, and the software can then examine the results and determine the next steps between hardware calls, such as in the example given the process depicted in FIG. 39. This processing model can be managed by a suitably configured workflow management system and/or can be configured to conform to programming paradigms such as a data structure API or an object-oriented method interface, but accelerate computationally intensive functions using custom hardware engines and/or quantum processing engines, which in practice are implemented through implementation on a tightly coupled CPU and/or GPU and/or CPU + FPGA platform with shared memory supporting cache coherence and high-bandwidth CPU/GPU/CPU/FPGA interconnects with low latency.

[00571] Соответственно, в дополнение к картированию и выравниванию ридов на референсный геном рида могут быть «de novo» собраны, например, без референсного генома, например, путем обнаружения явных перекрытий между ридами, например в скоплении, где они полностью или в основном согласуются, и объединения их в более длинные последовательности, контиги, каркасы или графы. Эту сборку можно также выполнять локально, например, с помощью всех ридов, для которых определено, что они картируются на данную хромосому или ее часть. При сборке таким образом возможно включение референсного генома или его сегмент в собираемую структуру.[00571] Accordingly, in addition to mapping and alignment of reads to a reference genome, reads may be “de novo” assembled, e.g., without a reference genome, e.g., by detecting apparent overlaps between reads, e.g., in a cluster where they are completely or mostly consistent , and combining them into longer sequences, contigs, scaffolds, or graphs. This assembly can also be performed locally, for example using all reads that are determined to map to a given chromosome or part thereof. When assembled in this way, it is possible to include a reference genome or a segment of it in the assembled structure.

[00572] В таком случае ввиду сложности соединения вместе последовательностей рида, которые неполностью согласуются, можно использовать структуру графа, например, когда перекрывающиеся риды могут согласовываться на одной последовательности в одном сегменте, но разветвляться на множество последовательностей в примыкающем сегменте, как объяснено выше. Поэтому такой граф сборки может быть графом последовательности, где каждые ребро или узел представляют один нуклеотид или последовательность нуклеотидов, которые, как считается, примыкают без зазора к последовательностям в соединенных ребрах или узлах. В конкретных случаях такой граф сборки может быть графом k-меров, где каждый узел представляет k-мер или нуклеотидную последовательность (как правило) фиксированной длины k, и где считается, что соединенные узлы перекрывают друг друга в более длинных наблюдаемых последовательностях, обычно перекрывающихся k - 1 нуклеотидами. В различных способах возможны одно или более преобразований между одним или более графами последовательности и графами k-меров.[00572] In such a case, due to the difficulty of joining together read sequences that do not fully agree, a graph structure can be used, for example, where overlapping reads may agree on a single sequence in one segment, but branch out into multiple sequences in an adjacent segment, as explained above. Therefore, such an assembly graph may be a sequence graph, where each edge or node represents one nucleotide or sequence of nucleotides that are considered to be adjacent without gap to the sequences in the connected edges or nodes. In specific cases, such an assembly graph may be a k-mer graph, where each node represents a k-mer or nucleotide sequence of (usually) a fixed length k, and where connected nodes are considered to overlap each other in longer observed sequences, typically overlapping k - 1 nucleotides. In various methods, one or more transformations between one or more sequence graphs and k-mer graphs are possible.

[00573] Хотя графы сборки используют при определении вариантов на основе гаплотипов и некоторые используемые способы обработки графов похожи, существуют важные отличия. Графы de novo сборки обычно намного больше и используют более длинные k-меры. Тогда как графы сборки для определения вариантов ограничены довольно структурированными и относительно простыми графами, например, не имеющими циклов и проходящих от источника до стока вдоль остова референсной последовательности, графы de novo сборки обычно менее структурированные и более сложные, с циклами, висящими путями и другими аномалиями, не только разрешенными, но и подвергаемыми специальному анализу. Иногда используют окрашивание графа de novo сборки, назначая узлам и ребрам «цвета», означающие, например, из какого биологического образца они взяты, или совпадающую референсную последовательность. Следовательно, для графов de novo сборки требуется использовать более широкий выбор функций анализа и обработки графов, часто итеративно или рекурсивно, и, в частности, ввиду размера и сложности графов de novo сборки функции обработки, как правило, чрезвычайно требовательные к ресурсоемким вычислениям.[00573] Although assembly graphs are used to identify variants based on haplotypes, and some of the graph processing techniques used are similar, there are important differences. De novo assembly graphs are typically much larger and use longer k-mers. While assembly graphs for variant detection are limited to fairly structured and relatively simple graphs, such as those having no cycles and running from source to sink along the reference sequence backbone, de novo assembly graphs are typically less structured and more complex, with cycles, dangling paths, and other anomalies , not only permitted, but also subject to special analysis. De novo assembly graph coloring is sometimes used, assigning nodes and edges “colors” indicating, for example, what biological sample they are from or a matching reference sequence. Consequently, de novo assembly graphs require the use of a wider selection of graph analysis and processing functions, often iteratively or recursively, and in particular, due to the size and complexity of de novo assembly graphs, the processing functions tend to be extremely computationally intensive.

[00574] Следовательно, как указано выше, идеальная модель для такой обработки графа на жестко интегрированной платформе ЦПУ/ГПУ/КПУ + FPGA представляет собой хранение таких графов в совместно используемой памяти с поддержанием когерентности кэша для попеременной обработки между ЦПУ, и/или ГПУ, и/или КПУ и аппаратными функциями FPGA. В таком случае программный поток, обрабатывающий данных граф, может итеративно подавать команды на выполнение различных требующих ресурсоемких вычислений этапов обработки графа аппаратным движком, а затем проверяет результаты, чтобы тем самым определить следующие этапы, которые должны быть выполнены аппаратным обеспечением, например, маркируя соответствующие вызовы аппаратного оборудования. Подобно тому, как было отмечено выше, данная модель обработки извлекает огромную пользу из реализации на жестко связанной платформе ЦПУ + FPGA с совместной используемой памятью с поддержанием когерентности кэша и широкополосным межсоединением ЦПУ/FPGA с малой задержкой.[00574] Therefore, as stated above, the ideal model for such graph processing on a tightly integrated CPU/GPU/CPU + FPGA platform is to store such graphs in shared memory while maintaining cache coherence for interleaved processing between the CPU, and/or GPU, and/or CPU and FPGA hardware functions. In such a case, the software thread processing the data graph can iteratively issue commands to perform various computationally intensive steps in the hardware engine's graph processing, and then examine the results to thereby determine the next steps to be performed by the hardware, for example by flagging the corresponding calls hardware equipment. As noted above, this processing model benefits greatly from implementation on a tightly coupled CPU+FPGA platform with shared memory maintaining cache coherence and a high-bandwidth, low-latency CPU/FPGA interconnect.

[00575] Кроме того, как описано ниже в настоящем документе, третичный анализ включает в себя геномную обработку, которая может следовать за сборкой графа и/или определением вариантов, что в клинических применениях может включать в себя аннотирование вариантов, прогнозирование фенотипа, тестирование на заболевание и/или прогнозирование реакции на терапию, как описано в настоящем документе. Причины полезности выполнения третичного анализа на такой жестко интегрированной платформе ЦПУ/ГПУ/КПУ + FPGA состоят в том, что такая конфигурация платформы обеспечивает эффективное ускорение первичной и/или вторичной обработки, которые требуют весьма ресурсоемких вычислений, и идеально подходит для продолжения третичного анализа на той же платформе в целях удобства и сокращения оборотного времени и для сведения к минимуму передачи и копирования больших файлов геномных данных. Поэтому слабо или жестко интегрированная платформа ЦПУ/ГПУ/КПУ + FPGA является хорошим выбором, но жестко связанная платформа может иметь дополнительные преимущества, поскольку этапы и способы третичного анализа весьма различаются в зависимости от области применения, и в любом случае, когда требующие ресурсоемких вычислений этапы замедляют третичный анализ, можно оптимизированным образом реализовать ускорение этих этапов с помощью заказной FPGA.[00575] Additionally, as described later herein, tertiary analysis includes genomic processing, which may follow graph assembly and/or variant identification, which in clinical applications may include variant annotation, phenotype prediction, disease testing and/or predicting response to therapy as described herein. The reasons why it is useful to run tertiary analysis on such a tightly integrated CPU/GPU/CPU + FPGA platform is that this platform configuration provides efficient acceleration of primary and/or secondary processing that is very computationally intensive, and is ideal for continuing tertiary analysis on that same platform for convenience and to reduce turnaround time and to minimize the transfer and copying of large genomic data files. Therefore, a loosely or tightly coupled CPU/GPU/CPU + FPGA platform is a good choice, but a tightly coupled platform may have additional benefits since the tertiary analysis steps and methods vary widely depending on the application, and in any case where computationally intensive steps slow down tertiary analysis, acceleration of these steps can be realized in an optimized manner using a custom FPGA.

[00576] Например, третичный анализ на жестко интегрированной платформе ЦПУ/ГПУ/КПУ и/или FPGA особенно выгоден ввиду возможности повторного анализа геномным данных итерационным образом с использованием ускорения ЦПУ/ГПУ/КПУ и/или FPGA вторичной обработки в ответ на частичные или промежуточные третичные результаты, что может позволить извлечь дополнительную выгоду из конфигурации с жесткой интеграцией. Например, после того, как третичный анализ обнаруживает возможный фенотип или болезнь, но с ограниченной достоверностью истинности или ложности этого обнаружения, можно повторно выполнить целенаправленный вторичный анализ, уделяя особое внимание конкретным ридам и областям референса, влияющим на эту находку, тем самым улучшая точность и достоверность соответствующих определений вариантов, и, в свою очередь, улучшая достоверность определения обнаружения. Кроме того, если третичный анализ определяет информацию о генотипах родословного или структурного варианта, можно повторить вторичный анализ с использованием другого или модифицированного генома, который более подходит для конкретного индивида, тем самым повышая точность определений вариантов и улучшая точность дальнейших этапов третичного анализа.[00576] For example, tertiary analysis on a tightly integrated CPU/GPU/CPU and/or FPGA platform is particularly advantageous due to the ability to re-analyze genomic data in an iterative manner using CPU/GPU/CPU acceleration and/or FPGA secondary processing in response to partial or intermediate tertiary results, which may allow for additional benefit from a tight integration configuration. For example, after a tertiary analysis detects a possible phenotype or disease, but with limited confidence in the truth or falsity of that finding, a targeted secondary analysis can be repeated, focusing on specific reads and reference regions that influence that finding, thereby improving accuracy and the confidence of the corresponding variant definitions, and in turn improving the confidence of the detection definition. In addition, if the tertiary analysis identifies genotype information for a pedigree or structural variant, the secondary analysis can be repeated using a different or modified genome that is more suitable for a particular individual, thereby increasing the accuracy of variant definitions and improving the accuracy of further steps in the tertiary analysis.

[00577] Однако, если третичный анализ выполняется на только на платформе ЦПУ после первичной и вторичной обработки (возможно, ускоренных на отдельной платформе), повторный анализ с помощью средств вторичного анализа, вероятно, будет слишком медленным, чтобы быть полезным на платформе третичного анализа самой по себе, и альтернатива заключается в передаче на более быструю платформу, которая тоже непозволительно медленная. Таким образом, в отсутствии аппаратного или квантового ускорения в какой-либо форме на платформе третичного анализа, первичную и вторичную обработку необходимо, как правило, завершать до начала третичного анализа без возможности простого повторного анализа или итеративного вторичного анализа и/или конвейерной организации аналитических функций. Но на платформе, ускоренный с помощью FPGA и/или квантовой обработки и особенно на платформе ЦПУ, и/или ГПУ, и/или КПУ, и/или FPGA, где вторичная обработка максимально эффективна, итеративный анализ становится практичным и полезным.[00577] However, if tertiary analysis is performed on a CPU-only platform after primary and secondary processing (possibly accelerated on a separate platform), re-analysis using the secondary analysis tools will likely be too slow to be useful on the tertiary analysis platform itself on its own, and the alternative is to transfer to a faster platform, which is also prohibitively slow. Thus, in the absence of any form of hardware or quantum acceleration on a tertiary analysis platform, primary and secondary processing must typically be completed before tertiary analysis begins, without the ability to simply re-analyze or iteratively secondary analyze and/or pipeline analysis functions. But on a platform accelerated by FPGA and/or quantum processing, and especially on a CPU and/or GPU and/or CPU and/or FPGA platform where secondary processing is most efficient, iterative analysis becomes practical and useful.

[00578] Соответственно, как указано выше, описанные в настоящем документе модули могут быть реализованы в аппаратном обеспечении микросхемы, например, могут быть жестко вмонтированы в нее, и в таких случаях их реализация может быть такова, что они смогут функционировать с более высокой скоростью и с большей точностью по сравнению с реализацией в программном обеспечении, например, когда имеются минимальные инструкции, которые нужно извлекать, считывать и/или исполнять. Кроме того, в различных случаях функции, подлежащие выполнению одним или более из этих модулей, могут быть распределены так, чтобы различные функции могли быть выполнены с возможностью реализации программным обеспечением главного ЦПУ, и/или ГПУ, и/или КПУ, тогда как в других случаях различные другие функции могли выполняться аппаратным обеспечением связанной FPGA, например, когда два или более устройств выполняются свои соответствующие функции друг с другом, например слаженным образом. Для таких целей можно жестко связать ЦПУ, ГПУ, КПУ и/или FPGA, или ASIC, или структурированную ASIC, например, посредством широкополосного соединения с малой задержкой, такого как QPI, CCVI, CAPI и т.п. Соответственно, в некоторых случаях функции с высокой вычислительной интенсивностью, подлежащие выполнению одним или более из этих модулей, могут быть выполнены квантовым процессором, реализованным одной или более квантовыми схемами.[00578] Accordingly, as discussed above, the modules described herein may be implemented in hardware of a chip, for example, hard-wired therein, and in such cases, their implementation may be such that they can operate at higher speeds and with greater accuracy compared to implementation in software, for example, when there are minimal instructions that need to be retrieved, read and/or executed. Moreover, in various cases, the functions to be performed by one or more of these modules may be distributed so that the various functions may be implemented by software of the main CPU and/or GPU and/or CPU, while in others In cases, various other functions could be performed by the hardware of the associated FPGA, for example when two or more devices perform their respective functions with each other, for example in a coordinated manner. For such purposes, a CPU, GPU, CPU and/or FPGA, or ASIC, or structured ASIC can be hard coupled, for example, through a low latency broadband connection such as QPI, CCVI, CAPI, etc. Accordingly, in some cases, computationally intensive functions to be performed by one or more of these modules may be performed by a quantum processor implemented by one or more quantum circuits.

[00579] Следовательно, при условии уникальной реализации аппаратной и/или квантовой обработки модули по настоящему изобретению могут функционировать непосредственно в соответствии со своими рабочими параметрами, например, без необходимости выборки, считывания и/или исполнения инструкций, как когда они реализованы исключительно в программном обеспечении ЦПУ. Кроме того, можно также снизить требования к памяти и времени обработки, например, когда обмены данными внутри микросхемы осуществляются посредством файлов, например, хранящихся локально в кэше FPGA/ЦПУ/ГПУ/КПУ, например, с поддержанием когерентности кэша, а не посредством широкомасштабного доступа к внешней памяти. Конечно, в некоторых случаях микросхема и/или плата может быть сделана такого размера, чтобы включать в себя больше памяти, например, столько, сколько на плате памяти, чтобы усилить возможности параллельной обработки, что приведет к еще более высоким скоростям обработки. Например, в определенных вариантах реализации микросхема по настоящему изобретению может содержать встроенное устройство DRAM, чтобы микросхеме не приходилось опираться на внешнюю память, что, таким образом, приведет к дальнейшему увеличению скорости обработки, например, когда можно использовать алгоритм Барроуза-Уилера или граф де Брейна вместо хэш-таблицы и хэш-функции, которые могут в различных случаях опираться на внешнюю, например главную память. В таких случаях можно достичь выполнения части или всего конвейера за 6, или 10, или 12, или 15, или 20 минут или меньше, например от начала до конца.[00579] Therefore, given a unique implementation of hardware and/or quantum processing, modules of the present invention can operate directly according to their operating parameters, for example, without the need to fetch, read and/or execute instructions as when implemented solely in software CPU. In addition, memory and processing time requirements can also be reduced, for example when on-chip data exchanges are carried out through files, for example stored locally in the FPGA/CPU/GPU/CPU cache, for example maintaining cache coherence, rather than through large-scale accesses to external memory. Of course, in some cases, the chip and/or board can be made to be sized to include more memory, such as as much as the memory board, to enhance parallel processing capabilities, resulting in even higher processing speeds. For example, in certain embodiments, a chip of the present invention may include an on-chip DRAM device so that the chip does not have to rely on external memory, thereby further increasing processing speed, such as when the Burrows-Wheeler algorithm or de Bruijn graph can be used instead of a hash table and a hash function, which may in various cases rely on external memory, such as main memory. In such cases, it is possible to achieve completion of part or all of the pipeline in 6, or 10, or 12, or 15, or 20 minutes or less, for example from start to finish.

[00580] Как указано выше, существуют всевозможные разные места, в которые может быть помещен модуль в аппаратном обеспечении, или может находиться на удалении от него, например на сервере, доступном на облаке. Когда данный модуль помещен на микросхеме, например, жестко вмонтирован в микросхему, его функция может выполняться аппаратным обеспечением, однако при необходимости модуль может быть помещен удаленно от микросхемы, и тогда платформа может содержать необходимые средства для отправки соответствующих данных в удаленное место, такое как сервер, например, квантовый сервер, доступный посредством облака, чтобы определенные функциональные возможности модуля могли быть задействованы для дальнейшей обработки данных в соответствии с выбираемыми пользователем требуемыми протоколами. Соответственно, часть платформы может содержать веб-интерфейс для выполнения одной или более задач в соответствии с функционированием одного или более модулей, описанных в настоящем документе. Например, когда картирование, выравнивание и/или сортировка - это все модули, которые могут иметь место на микросхеме, в различных случаях одно или более из локального повторного выравнивания, маркировки дубликатов, перекалибровки оценки качества оснований и/или поиска вариантов может происходить на облаке.[00580] As stated above, there are all sorts of different places where a module can be placed in hardware, or can be located remotely from it, such as on a server accessible in the cloud. When a given module is placed on a chip, for example hard-wired into a chip, its function may be performed by hardware, but if necessary the module may be placed remotely from the chip and the platform may then contain the necessary means to send the corresponding data to a remote location such as a server , for example, a quantum server accessible via the cloud so that certain functionality of the module can be used for further data processing in accordance with user-selectable required protocols. Accordingly, a portion of the platform may comprise a web interface for performing one or more tasks in accordance with the operation of one or more modules described herein. For example, when mapping, alignment, and/or sorting are all modules that may take place on a chip, in various cases one or more of local realignment, duplicate flagging, base quality assessment recalibration, and/or variant searching may occur on the cloud.

[00581] В частности, после того, как генетические данные сформированы и/или обработаны, например, в одном или более протоколах первичной и/или вторичной обработки, например, картированы, выровнены и/или отсортированы, например, для создания одного или более файлов определения вариантов, например, для определения того, как данные генетической последовательности субъекта отличаются от одной или более референсных последовательностей, в соответствии с дальнейшим аспектом настоящее изобретение может относиться к выполнению одной или более других аналитических функций на сформированных и/или обработанных генетических данных, например, для дальнейшей обработки, такой как третичная обработка, как показано на ФИГ. 40. Например, система может быть выполнена с возможностью дальнейшей обработки сформированных и/или подвергнутых вторичной обработке данных, например, путем пропускания их через один или более конвейеров 700 третичной обработки, таких как один или более из конвейера микроматричного анализа, конвейера анализа генома, например, полногеномного анализа, конвейера анализа генотипирования, конвейера анализа экзома, конвейера анализа микробиома, конвейера анализа генотипирования, включая совместное генотипирование, конвейера анализа вариантов, включая конвейеры структурных вариантов, конвейеры соматических вариантов, и конвейеры GATK и/или MuTect2, а также конвейеры секвенирования РНК и конвейеры других генетических анализов.[00581] In particular, after genetic data has been generated and/or processed, for example, in one or more primary and/or secondary processing protocols, for example, mapped, aligned and/or sorted, for example, to create one or more files determining variants, for example, to determine how a subject's genetic sequence data differs from one or more reference sequences, in accordance with a further aspect, the present invention may relate to performing one or more other analytical functions on the generated and/or processed genetic data, for example, for further processing, such as tertiary processing, as shown in FIG. 40. For example, the system may be configured to further process the generated and/or secondary processed data, for example, by passing it through one or more tertiary processing pipelines 700, such as one or more of a microarray analysis pipeline, a genomic analysis pipeline, for example , whole-genome analysis pipeline, genotyping analysis pipeline, exome analysis pipeline, microbiome analysis pipeline, genotyping analysis pipeline including co-genotyping, variant analysis pipeline including structural variant pipelines, somatic variant pipelines, and GATK and/or MuTect2 pipelines, and RNA sequencing pipelines and other genetic analysis pipelines.

[00582] Кроме того, в различных случаях может быть предусмотрен дополнительный уровень обработки 800, например, для диагностики болезней, терапевтического воздействия и/или профилактического предупреждения, например, включая НИПТ, ОРИТН, рак, LDT, аграрно-биологические и другие такие данные диагностики болезней, профилактики и/или терапий, используя эти данные сформированные одним или более представленными первичными, и/или вторичными, и/или третичными конвейерами. Например, в число конкретных биоаналитических конвейеров входят конвейеры генома, конвейеры эпигенома, конвейера метагенома, конвейеры вариантов, например GATK/MuTect2, и другие такие конвейеры. Следовательно, устройства и способы, описанные в настоящем документе, могут быть использованы для формирования данных генетических последовательностей, которые затем могут быть использованы для формирования одного или более файлов определения вариантов и/или другой связанной информации, которая может быть в дальнейшем подвергнута обработке другими конвейерами третичной обработки в соответствии с устройствами и способами, описанными в настоящем документе, например, для диагностики конкретных и/или общих заболеваний, а также для профилактических и/или терапевтических мер и/или методов воздействия на развитие. См., например, ФИГ. 41 B, C и 43.[00582] Additionally, an additional processing layer 800 may be provided in various cases, for example, for disease diagnosis, therapeutic intervention, and/or prophylactic warning, for example, including NIPT, NICU, cancer, LDT, agribiological, and other such diagnostic data diseases, prevention and/or therapies, using these data generated by one or more of the provided primary and/or secondary and/or tertiary pipelines. For example, specific bioanalytical pipelines include genome pipelines, epigenome pipelines, metagenome pipelines, variant pipelines such as GATK/MuTect2, and other such pipelines. Therefore, the devices and methods described herein can be used to generate genetic sequence data, which can then be used to generate one or more variant definition files and/or other associated information that can be further processed by other tertiary pipelines. processing in accordance with the devices and methods described herein, for example, for the diagnosis of specific and/or general diseases, as well as for preventive and/or therapeutic measures and/or developmental methods. See, for example, FIG. 41 B, C and 43.

[00583] Как описано выше, способы и/или системы, представленные в настоящем документе, могут включать в себя формирование и/или получение иным образом данных генетической последовательности. Такие данные могут быть сформированы или иным образом получены из любого подходящего источника, например с помощью СНП или «секвенатора, основанного на технологии микросхем». Способы и системы, описанные в настоящем документе, могут включать в себя выполнение на этих сформированных и/или полученных данных дальнейшей обработки, например, с использованием одного или более протоколов вторичной 600 обработки. Протоколы вторичной обработки могут включать в себя одно или более из картирования, выравнивания и сортировки сформированных данных генетической последовательности, например, для создания одного или более файлов определения вариантов, например, для определения того, как данные генетической последовательности субъекта отличаются от одной или более референсных последовательностей или геномов. Согласно другому аспекту изобретение может относиться к выполнению одной или более аналитических функций на сформированных и/или обработанных генетических данных, например, результирующих данных вторичной обработки, например, для дополнительной обработки, например, третичной обработки 700/800, которая может быть выполнена на или вместе с той же микросхемой или набором микросхем, на которой обеспечена вышеупомянутая технология секвенатора.[00583] As described above, the methods and/or systems provided herein may include generating and/or otherwise obtaining genetic sequence data. Such data may be generated or otherwise obtained from any suitable source, such as an STS or a “chip-based sequencer.” The methods and systems described herein may include performing further processing on this generated and/or received data, for example, using one or more secondary processing 600 protocols. Secondary processing protocols may include one or more of mapping, aligning, and sorting generated genetic sequence data, for example, to create one or more variant definition files, for example, to determine how a subject's genetic sequence data differs from one or more reference sequences or genomes. According to another aspect, the invention may relate to performing one or more analytical functions on generated and/or processed genetic data, for example, the resulting secondary processing data, for example, for additional processing, for example, tertiary processing 700/800, which can be performed on or together with the same chip or chipset on which the above sequencer technology is provided.

[00584] Соответственно, в первом случае, например, что касается формирования, получения и/или передачи данных генетической последовательности, как показано на ФИГ. 37-41, такие данные могут быть созданы либо локально, либо удаленно, и/или их результаты могут быть затем обработаны непосредственно, например, локальным вычислительным ресурсом 100, или могут быть переданы в удаленное место, например, на удаленный вычислительный ресурс 300, для дальнейшей обработки, например, для вторичной и/или третичной обработки, см. ФИГ. 42. Например, сформированные данные генетической последовательности могут быть обработаны локально и непосредственно, например, когда функциональные возможности секвенирования и вторичной обработки находятся на одном и том же наборе микросхем и/или в пределах одного и того же устройства в месте эксплуатации 10. Аналогичным образом сформированные данные генетической последовательности могут быть обработаны локально и опосредованно, например, когда функциональные возможности секвенирования и вторичной обработки выполняются по отдельности разными устройствами, которые совместно используют одно и то же оборудование или место, но могут быть разнесены в пространстве, хотя и соединены с возможностью обмена данными, например, по локальной сети 10. В следующем случае данные генетической последовательности могут быть произведены дистанционно, например, с помощью удаленного СНП, и полученные в результате данные могут быть переданы по облачной сети 30/50 в автономное удаленное место 300, например, отделенное географически от секвенатора.[00584] Accordingly, in the first case, for example, regarding the generation, acquisition and/or transmission of genetic sequence data, as shown in FIG. 37-41, such data may be generated either locally or remotely, and/or the results thereof may then be processed directly, for example by local computing resource 100, or may be transmitted to a remote location, such as remote computing resource 300, to further processing, for example, for secondary and/or tertiary processing, see FIG. 42. For example, generated genetic sequence data can be processed locally and directly, such as when sequencing and secondary processing functionality resides on the same chipset and/or within the same field device 10. Similarly generated Genetic sequence data can be processed locally and indirectly, for example when sequencing and secondary processing functionality is performed separately by different devices that share the same equipment or location, but may be spatially separated, although connected with data exchange capability , for example, over a local network 10. In the following case, genetic sequence data can be produced remotely, for example, using a remote SNP, and the resulting data can be transmitted over a 30/50 cloud network to an autonomous remote location 300, for example, geographically separated from the sequencer.

[00585] А именно, как показано на ФИГ. 40A, в различных вариантах реализации устройство формирования данных, например, нуклеотидный секвенатор 110, может быть предусмотрен в месте эксплуатации, например, когда секвенатор представляет собой «секвенатор на микросхеме» или СНП, причем секвенатор связан с локальным вычислительным ресурсом 100 либо напрямую, либо опосредованно, например, с помощью соединения 10/30 локальной сети. Локальный вычислительный ресурс 100 может включать в себя или быть иным образом связаны с одним или более механизмами 110 формирования данных и/или механизмами 120 получения данных. Такие механизмы могут быть механизмами, выполненными с возможностью формирования и/или получения иным образом данных, таких как аналоговые, цифровые и/или электромагнитные данные, относящиеся к одной или более генетическим последовательностям субъекта или группы субъектов, например, когда данные генетической последовательности представлены в формате файла BCL или FASTQ.[00585] Namely, as shown in FIG. 40A, in various embodiments, a data generation device, such as a nucleotide sequencer 110, may be provided at the site of operation, such as where the sequencer is a sequencer on a chip, or SOC, wherein the sequencer is coupled to the local computing resource 100 either directly or indirectly. eg using a 10/30 LAN connection. Local computing resource 100 may include or be otherwise associated with one or more data generation engines 110 and/or data acquisition engines 120. Such mechanisms may be mechanisms configured to generate and/or otherwise obtain data, such as analog, digital and/or electromagnetic data, related to one or more genetic sequences of a subject or group of subjects, for example, when the genetic sequence data is represented in the format BCL or FASTQ file.

[00586] Например, такой механизм 110 формирования данных может быть первичным процессором, таким как секвенатор, например, СНП, секвенатора на микросхеме или другой подобный механизм для формирования информации о генетической последовательности. Кроме того, такие механизмы 120 получения данных могут быть любым механизмом, выполненным с возможностью приема данных, например, сформированной информацией о генетической последовательности; и/или совместно с генератором 110 данных и/или вычислительным ресурсом 100 применения к этой информации одного или более протоколов вторичной обработки, например, конвейерных устройств вторичной обработки, выполненных с возможностью выполнения протоколов сопоставителя, выравнивателя, сортировщика и/или определителя вариантов на сформированных и/или полученных данных последовательности, как описано в настоящем документе. В различных случаях устройство 110 формирования данных и/или устройство 120 получения данных могут быть связаны сетью друг с другом, например, локальной сетью 10, такой как для локального хранилища 200; или могут быть связаны сетью, например, локальной и/или облачной сетью 30, такой как для передачи и/или приема данных, таких как цифровые данные, относящиеся к первичной и/или вторичной обработке информации о генетической последовательности, например, на удаленное место или с него, например, для удаленной обработки 300 и/или хранения 400. В различных вариантах реализации один или более их этих компонентов могут быть соединены с возможностью обмена данными с помощью гибридной сети, как описано в настоящем документе.[00586] For example, such data generation engine 110 may be a primary processor, such as a sequencer, such as a sequencer, an on-chip sequencer, or other similar mechanism for generating genetic sequence information. In addition, such data acquisition mechanisms 120 may be any mechanism configured to receive data, such as generated genetic sequence information; and/or together with the data generator 110 and/or the computing resource 100 of applying one or more secondary processing protocols to this information, for example, conveyor secondary processing devices configured to execute matcher, equalizer, sorter and/or variant determiner protocols on the generated and /or obtained sequence data as described herein. In various cases, the data generating device 110 and/or the data receiving device 120 may be connected by a network to each other, for example, a local network 10 such as for local storage 200; or may be linked by a network, such as a local and/or cloud network 30, such as for transmitting and/or receiving data, such as digital data related to the primary and/or secondary processing of genetic sequence information, for example, to a remote location or therefrom, for example, for remote processing 300 and/or storage 400. In various embodiments, one or more of these components may be communicatively connected using a hybrid network as described herein.

[00587] Локальный вычислительный ресурс 100 может также включать в себя или быть иным образом связан с компилятором 130 и/или процессором 140, таким как компилятор 130, выполненный с возможностью компиляции сформированных и/или полученных данных и/или связанных с ними данных, и процессор 140, выполненный с возможностью обработки сформированных и/или полученных данных, и/или скомпилированных данных, и/или управляющих данных системы 1 и ее компонентов, как описано в настоящем документе, например, для выполнения первичной, вторичной и/или третичной обработки. Например, может быть использован любой подходящий компилятор, однако в определенных случаях можно достичь дополнительной эффективности не только за счет реализации жестко связанной конфигурации, такой как рассмотрена выше, для эффективной и когерентной передачи данных между компонентами системы, но ее можно также достичь путем реализации конфигурации «точно в срок» (JIT) компилятора компьютерного языка. Кроме того, в определенных случаях процессор 140 может включать в себя систему управления рабочими потоками для управления функционированием различных компонентов системы применительно к сформированным, принятым и/или подлежащим обработке данным посредством различных ступеней конвейеров платформы.[00587] The local computing resource 100 may also include or be otherwise associated with a compiler 130 and/or a processor 140, such as a compiler 130 configured to compile generated and/or received data and/or data associated therewith, and a processor 140 configured to process generated and/or received data and/or compiled data and/or control data of the system 1 and its components as described herein, for example, to perform primary, secondary and/or tertiary processing. For example, any suitable compiler can be used, but in certain cases additional efficiency can be achieved not only by implementing a tightly coupled configuration such as discussed above to efficiently and coherently transfer data between system components, but it can also be achieved by implementing a configuration " just-in-time (JIT) computer language compiler. Additionally, in certain cases, processor 140 may include a workflow management system to control the operation of various system components with respect to data generated, received, and/or to be processed through various stages of platform pipelines.

[00588] А именно, используемый в настоящем документе термин «точно в срок» (JIT) относится к устройству, системе и/или способу преобразования полученных и/или сформированных файлов из одного формата в другой. В структуре широкого использования система JIT, описанная в настоящем документе, может включать в себя компилятор 130 или иную вычислительную архитектуру, например, программу обработки, которая может быть реализована таким образом, чтобы преобразовывать различные коды из одной формы в другую. Например, в одной реализации компилятор JIT может быть выполнен с возможностью преобразования байткода, или другого программного кода, содержащего инструкции, который необходимо интерпретировать в инструкции, пригодные для отправки непосредственно в связанный процессор 140 для почти немедленного исполнения, например, без необходимости интерпретации инструкций с помощью конкретного машинного языка. В частности, после того, как программа кодирования, например, программы на языке Java, написана, операторы на исходном языке могут быть компилированы компилятором, например, компилятором с языка Java, в байткод вместо того, чтобы компилировать в код, который содержит инструкции, соответствующие любому данному конкретному языку обработки аппаратной платформы. Поэтому этот байткод, компилирующий действие, является независимым от платформ кодом, который может быть отправлен на любую платформу и выполнен на этой платформе независимо от процессора, лежащего в ее основе. Следовательно, подходящий компилятор может быть компилятором, который выполнен с возможностью компиляции байткода в специфичный для платформы исполнимый код, который затем может быть исполнен немедленно. В этом случае компилятор JIT может быть выполнен с возможностью немедленного преобразования одного формата файла в другой, например «на лету».[00588] More specifically, as used herein, the term just-in-time (JIT) refers to a device, system, and/or method for converting received and/or generated files from one format to another. In general use, the JIT system described herein may include a compiler 130 or other computing architecture, such as a processing program, that can be implemented to convert various codes from one form to another. For example, in one implementation, the JIT compiler may be configured to convert bytecode, or other program code, containing instructions that need to be interpreted into instructions suitable for sending directly to the associated processor 140 for almost immediate execution, for example, without having to interpret the instructions using specific machine language. In particular, after a coding program, such as a Java program, has been written, the source language statements may be compiled by a compiler, such as a Java compiler, into bytecode instead of being compiled into code that contains instructions corresponding to to any given specific hardware platform processing language. Therefore, this bytecode that compiles the action is platform-independent code that can be sent to any platform and executed on that platform regardless of the underlying processor. Therefore, a suitable compiler may be a compiler that is configured to compile bytecode into platform-specific executable code, which can then be executed immediately. In this case, the JIT compiler can be configured to immediately convert one file format to another, for example on the fly.

[00589] Следовательно, соответствующим образом сконфигурированный компилятор, как описано в настоящем документе, в состоянии преодолевать различные недостатки в данной области техники. А именно, после компиляции программ, которые были написаны на определенном языке, должны быть перекомпилированы и/или переписаны в зависимости от каждой конкретной компьютерной платформы, на которой они должны были быть реализованы. В современных системах компиляции компилятор может быть выполнен с возможностью записи и компиляции программы только один раз, и после записи в конкретной форме она может быть преобразована в одну или более других форм почти немедленно. Точнее говоря, компилятор 130 может представлять собой JIT или другой подобный формат компилятора динамической трансляции, который выполнен с возможностью написания инструкций на независимом от платформы языке, который не нужно перекомпилировать и/или переписывать в зависимости от конкретной компьютерной платформы, на которой он реализован. Например, в конкретной модели использования компилятор может быть выполнен с возможностью интерпретации скомпилированного байткода и/или других кодированных инструкций в инструкции, которые понятны данному конкретному процессору, по преобразованию одного формата файла в другой независимо от вычислительной платформы. По существу система JIT, описанная в настоящем документе, выполнена с возможностью приема одного генетического файла, например, представляющего генетический код, такого как файл BCL или FASTQ, сформированный генетическим секвенатором, и быстрого преобразования в другую форму, например, в файл SAM, BAM и/или CRAM file, например, с помощью способов, описанных в настоящем документе.[00589] Therefore, a suitably configured compiler, as described herein, is able to overcome various shortcomings in the art. Namely, after compilation, programs that were written in a particular language must be recompiled and/or rewritten depending on each specific computer platform on which they were to be implemented. In modern compilation systems, the compiler may be configured to write and compile a program only once, and once written in a particular form, it can be converted to one or more other forms almost immediately. More specifically, compiler 130 may be a JIT or other similar dynamic translation compiler format that is configured to write instructions in a platform-independent language that does not need to be recompiled and/or rewritten depending on the particular computer platform on which it is implemented. For example, in a particular use model, the compiler may be configured to interpret compiled bytecode and/or other encoded instructions into instructions that are understandable to that particular processor to convert one file format to another regardless of the computing platform. Essentially, the JIT system described herein is configured to take one genetic file, for example representing genetic code, such as a BCL or FASTQ file generated by a genetic sequencer, and quickly convert it to another form, for example, a SAM, BAM and /or CRAM file, for example, using the methods described herein.

[00590] В частности, в различных случаях система, описанная в настоящем документе, может включать в себя первый и/или второй компилятор 130a и 130b, такой как виртуальная компиляционная машина, которая выполняет преобразование одной или множества байткодовых инструкций за один раз. Например, использование компилятора «точно в срок» типа Java или другой соответствующим образом сконфигурированный второй компилятор в пределах представленной платформы системы позволит компилировать инструкции в байткод, который может быть затем преобразован в конкретный системный код, например, как будто программа была первоначально скомпилирована на данной платформе. Соответственно, после того, как код компилирован и/или перекомпилирован, например, с помощью компилятора (-ов) 130 JIT, он будет быстрее выполняться в процессоре 140 компьютера. Поэтому в различных вариантах реализации компиляция «точно в срок» (JIT) может быть выполнена с возможностью осуществления во время исполнения данной программы, например, во время выполнения, а не до исполнения. В таком случае сюда могут входить этапы трансляции в машинный код или трансляции в другой формат, который может быть затем исполнен непосредственно, тем самым обеспечивая возможность одного или более из компиляции перед исполнением (AOT) и/или интерпретации.[00590] In particular, in various cases, the system described herein may include a first and/or second compiler 130a and 130b, such as a virtual compiler machine, that performs the conversion of one or multiple bytecode instructions at a time. For example, the use of a just-in-time compiler such as Java or other appropriately configured second compiler within a given system platform will allow instructions to be compiled into bytecode, which can then be converted to specific system code, for example, as if the program had originally been compiled on that platform . Accordingly, after the code is compiled and/or recompiled, for example, using the JIT compiler(s) 130, it will execute faster on the computer processor 140. Therefore, in various implementations, just-in-time (JIT) compilation may be configured to occur during execution of a given program, for example, at runtime rather than before execution. In such a case, this may include steps of translating into machine code or translating into another format that can then be executed directly, thereby enabling one or more of compilation before execution (AOT) and/or interpretation.

[00591] Более конкретно, в соответствии с реализацией в настоящей системе типичный поток данных обычно создает данные в одном или более форматах, производных от одной или более вычислительных платформ, таких как файловые форматы BCL, FASTQ, SAM, BAM, CRAM и/или VCF или их эквиваленты. Например, типичный секвенатор 110 ДНК, например, СНП, создает необработанные сигналы, представляющие определенные основания, которые называются в данном документе ридами, например, в виде файла BCL и/или FASTQ, который может быть, необязательно, подвергнут дальнейшей обработке, например, улучшенной обработке изображения, и/или сжат 150. Аналогичным образом риды сформированных файлов BCL/FASTQ могут быть затем подвергнуты дальнейшей обработке в системе, как описано в настоящем документе, для создания картированных и/или выровненных данных, и эти полученные данные, например, картированные и выровненные риды, могут быть в формате файла SAM или BAM, или, в качестве альтернативы, в формате файла CRAM. Далее, файл SAM или BAM может быть затем обработан, например, с помощью процедуры определения вариантов, для получения файла определения вариантов, такого как файл VCF или файл gVCF. Соответственно, после создания все эти полученные файлы BCL, FASTQ, SAM, BAM, CRAM и/или VCF являются (чрезвычайно) большими файлами, которые нужно сохранить, например, в архитектуре системной памяти, локально 200 или дистанционно 400. Хранение любого из одного этих файлов обходится дорого. Хранение всех файлов этих форматах обходится крайне дорого.[00591] More specifically, as implemented in the present system, a typical data stream typically produces data in one or more formats derived from one or more computing platforms, such as BCL, FASTQ, SAM, BAM, CRAM, and/or VCF file formats or their equivalents. For example, a typical DNA sequencer 110, e.g., SNP, produces raw signals representing specific bases, referred to herein as reads, e.g., in the form of a BCL and/or FASTQ file, which can optionally be subjected to further processing, e.g. image processing, and/or compressed 150. Similarly, the reads of the generated BCL/FASTQ files can then be subjected to further processing in the system, as described herein, to create mapped and/or aligned data, and these resulting data, e.g., mapped and aligned reads may be in SAM or BAM file format, or alternatively in CRAM file format. Further, the SAM or BAM file can then be processed, for example, using a variant definition procedure, to obtain a variant definition file, such as a VCF file or a gVCF file. Accordingly, once created, all of these resulting BCL, FASTQ, SAM, BAM, CRAM and/or VCF files are (extremely) large files that need to be stored, for example, in the system memory architecture, locally 200 or remotely 400. Storing any one of these files are expensive. Storing all files in these formats is extremely expensive.

[00592] Как было указано, компиляция «точно в срок» (JIT) или другая двойная компиляция или другой анализ компиляции динамической трансляции могут быть выполнены и развернуты в данной системе с возможностью сокращения столь высоких расходов на хранение. Например, схема анализа JIT может быть реализована в данной системе таким образом, чтобы данные хранились только в одном формате (например, в формате сжатого файла FASTQ или BAM и т.д.), с одновременным обеспечением доступа к одному или более файловых форматов (например, BCL, FASTQ, SAM, BAM, CRAM и/или VCF и т.д.). Этот быстрый процесс преобразования файла может быть совершен с помощью быстрой обработки геномным данных с использованием описанных в настоящем документе соответствующих аппаратных и/или квантовых платформ ускорения, например, таких как для картирования, выравнивания, сортировки и/или определения вариантов (или составляющих их функций, таких как удаление дубликатов, HMM и алгоритм Смита-Ватермана, сжатие и распаковка и т.п.) в аппаратных движках на интегральных схемах, таких как FPGA, или с помощью квантового процессора. Следовательно, благодаря реализации JIT или подобного анализа наряду с таким ускорением геномные данные могут обрабатываться с формированием требуемых форматов файлов на лету при скоростях, сравнимых с обычным доступом к файлам. Таким образом, значительная экономия на хранении может быть реализована за счет обработки типа JIT с небольшой потерей в скорости доступа или вообще без потери.[00592] As stated, just-in-time (JIT) compilation or other double compilation or other dynamic translation compilation analysis can be performed and deployed on a given system with the potential to reduce such high storage costs. For example, a JIT analysis scheme may be implemented in a given system such that data is stored in only one format (e.g., FASTQ or BAM compressed file format, etc.), while simultaneously providing access to one or more file formats (e.g. , BCL, FASTQ, SAM, BAM, CRAM and/or VCF, etc.). This rapid file conversion process can be accomplished by fast genomic data processing using appropriate hardware and/or quantum acceleration platforms described herein, such as those for mapping, aligning, sorting, and/or identifying variants (or their constituent functions, such as duplicate removal, HMM and Smith-Waterman algorithm, compression and decompression, etc.) in hardware engines on integrated circuits such as FPGA, or using a quantum processor. Therefore, by implementing JIT or similar analysis along with such acceleration, genomic data can be processed into required file formats on the fly at speeds comparable to conventional file access. Thus, significant storage savings can be realized through JIT-type processing with little or no loss in access speed.

[00593] В частности, существуют два варианта, которые полезны для базового хранилища геномных данных, создаваемого, как описано в настоящем документе, таким образом, чтобы быть доступным для обработки типа JIT, а именно: хранение невыровненных ридов (например, сюда можно отнести сжатый файл FASTQ или невыровненные сжатые файлы SAM, BAM или CRAM), и хранение выровненных ридов (например, сюда можно отнести сжатые файлы BAM или CRAM). Однако, так как ускоренная обработка, описанная в настоящем документе, позволяет быстро получать любой из упомянутых файловых форматов, например, на лету, базовый формат файла для хранения может быть выбран таким образом, чтобы достигать наименьшего размера сжатого файла, тем самым снижая стоимость хранения. Следовательно, если учитывать сравнительно меньший размер файла для необработанных, например, исходных невыровненных, данных ридов, то в хранении невыровненных ридов так, чтобы поля данных были сведены к минимуму, есть преимущество. Аналогичным образом существует преимущество в хранении обработанных и сжатых данных, например в формате файла CRAM.[00593] In particular, there are two options that are useful for a core genomic data store created as described herein to be available for JIT processing, namely storage of unaligned reads (e.g., this could include compressed FASTQ file or unaligned compressed SAM, BAM or CRAM files), and storage of aligned reads (for example, this could include compressed BAM or CRAM files). However, since the accelerated processing described herein allows any of the mentioned file formats to be quickly obtained, for example, on the fly, the base file format for storage can be selected to achieve the smallest compressed file size, thereby reducing storage costs. Therefore, given the comparatively smaller file size of raw, eg, original unaligned, read data, there is an advantage to storing unaligned reads so that data fields are kept to a minimum. Likewise, there is an advantage to storing processed and compressed data, such as in a CRAM file format.

[00594] Более конкретно, учитывая большие скорости обработки, которые могут быть достигнуты с помощью устройств систем и способов их использования, описанных в настоящем документе, во многих случаях может не потребоваться хранить картированные и/или выровненные данные для всех до одного рида, так как эту информацию можно легко получить по мере надобности, например, на лету. Кроме того, хотя для хранения данных генетической последовательности обычно используют сжатый формат файла FASTQ (например, FASTQ.gz), такие данные невыровненных ридов могут также храниться в более совершенных сжатых форматах, например, после картирования и/или выравнивания в файлах SAM, BAM или CRAM, которые могут еще больше уменьшить размер файла, например, за счет использования компактного двоичного представления и/или более целенаправленных способов сжатия. Следовательно, эти файловые форматы могут быть сжаты перед хранением, распакованы после хранения и быстро обработаны, например, на лету, для преобразования одного файлового формата в другой.[00594] More specifically, given the high processing speeds that can be achieved with the systems devices and methods of use described herein, in many cases it may not be necessary to store mapped and/or aligned data for every single read, since this information can be easily retrieved as needed, for example, on the fly. Additionally, although the compressed FASTQ file format (e.g., FASTQ.gz) is typically used to store genetic sequence data, such unaligned read data may also be stored in more advanced compressed formats, such as after mapping and/or alignment in SAM, BAM, or CRAMs that can further reduce file size, for example by using a compact binary representation and/or more targeted compression techniques. Consequently, these file formats can be compressed before storage, decompressed after storage, and quickly processed, for example on the fly, to convert one file format to another.

[00595] Преимущество хранения выровненных ридов состоит в том, что содержимое последовательности большей части или всех до одного ридов может быть опущено. А именно, систему можно эффективно улучшить, а пространство для хранения сэкономить всего лишь за счет хранения разницы между последовательностями ридов и выбранным референсным геномом, например, которая указана позициями выравнивания варианта рида. Точнее говоря, поскольку отличия от референса обычно нечастые, выровненная позиция и список отличий часто могут храниться более компактно, чем исходная последовательность рида. Поэтому в различных случаях хранение в формате выровненного рида, например, при хранении данных, относящихся к отличиям выровненных ридов, может быть предпочтительнее хранения данных невыровненного рида. В таком случае, если формат выровненного рида и/или определения вариантов используется в качестве базового формата хранения, например, в процедуре JIT, другие форматы, такие как SAM, BAM и/или CRAM, сжатых форматов файлов, тоже могут использоваться.[00595] An advantage of storing aligned reads is that the sequence content of most or all of the reads can be omitted. Namely, the system can be efficiently improved and storage space saved simply by storing the difference between the read sequences and the selected reference genome, for example, which is indicated by the alignment positions of the read variant. More precisely, since differences from the reference are usually infrequent, the aligned position and list of differences can often be stored more compactly than the original read sequence. Therefore, in various cases, storing in an aligned read format, for example when storing data related to differences between aligned reads, may be preferable to storing unaligned read data. In such a case, if the aligned read and/or variant definition format is used as the base storage format, for example in a JIT procedure, other formats such as SAM, BAM and/or CRAM compressed file formats may also be used.

[00596] Наряду с данными файла выровненного и/или невыровненного рида, которые нужно хранить, можно также хранить самые разные другие данные, такие как метаданные, полученные из различных вычислений, определенных в настоящем документе. В число таких вычисленных данных могут входить картированные, выровненные и/или подвергнутые дальнейшей обработке данные, такие как, оценки выравнивания, достоверность картирования, редакционное расстояние от референса и т.д. В определенных случаях такие метаданные и/или другую дополнительную информацию не требуется держать в базовом хранилище для анализа JIT, например, как в тех случаях, когда они могут быть воспроизведены на лету, например, с помощью ускоренной обработки данных, описанной в настоящем документе.[00596] Along with the aligned and/or unaligned read file data to be stored, a variety of other data may also be stored, such as metadata derived from the various calculations defined herein. Such calculated data may include mapped, aligned and/or further processed data such as alignment scores, mapping confidence, editorial distance from reference, etc. In certain cases, such metadata and/or other additional information does not need to be kept in the underlying storage for JIT analysis, such as in cases where it can be rendered on the fly, such as using the accelerated data processing described herein.

[00597] Что касается метаданных, то эти данные могут представлять собой небольшой файл, который предписывает системе порядок выполнения перехода назад или вперед от одного формата файла к преобразованию в другой формат файла. Следовательно, файл метаданных позволят системе создавать двоично совместимую версию любого другого типа файла. Например, при продвижении вперед от исходного файла данных системе нужно только получать доступ к инструкциям в метаданных и реализовать их. Наряду с быстрым преобразованием формата файла JIT также обеспечивает быстрые сжатие и/или распаковку и/или сохранение, например, в кэше облачной памяти генома.[00597] In terms of metadata, the data may be a small file that instructs the system in order to navigate back or forth from one file format to a conversion to another file format. Therefore, the metadata file will allow the system to create a binary compatible version of any other file type. For example, when moving forward from the original data file, the system only needs to access the instructions in the metadata and implement them. Along with fast file format conversion, JIT also enables fast compression and/or decompression and/or storage, for example, in a genome cloud memory cache.

[00598] Как более подробно обсуждено ниже, после того, как данные последовательности сформированы 110, они могут быть сохранены локально 200 и/или сделаны доступными для дистанционного хранения, например, в доступной из облака кэш-памяти 400 типа облачного хранилища «Dropbox». Например, оказавшись в геномном хранилище Dropbox, данные могут представляться как доступные на облаке 50, и поэтому могут повергнуты дальнейшей обработке, например, по существу немедленно. Это особенно полезно при наличии множества систем 100/300 картирования/выравнивания/сортировки/определения вариантов, например, на одной из двух сторон интерфейса облака 50, способствующего автоматической загрузке и обработке данных, которые могут быть подвергнуты дальнейшей обработке, например, с помощью технологии JIT, описанной в настоящем документе.[00598] As discussed in more detail below, once sequence data is generated 110, it may be stored locally 200 and/or made available for remote storage, for example, in a cloud-accessible cache 400 such as a Dropbox cloud storage device. For example, once in Dropbox's genomic storage, the data may appear to be available on the cloud 50, and therefore may be subject to further processing, for example, essentially immediately. This is particularly useful when there are multiple mapping/alignment/sorting/variant identification systems 100/300, for example on one of the two sides of the cloud interface 50, facilitating automatic loading and processing of data that can be further processed, for example, using JIT technology described in this document.

[00599] Например, базовый формат хранения для компиляции JIT и/или обработки может содержать минимальные поля данных, такие как имя рида, оценки качества оснований, позиция выравнивания и/или ориентация в референсе и список отличий от референса, например, когда каждое поле может быть сжато оптимальным образом для его типа данных. Различные другие метаданные могут быть включены или иным образом связаны с файлом хранения. В таком случае базовое хранилище для анализа JIT может находиться в локальной файловой системе 200, например, на накопителях на жестких дисках и твердотельных накопителях, или в сетевом ресурсе хранения, таком как система 400 хранения типа хранилища объектов NAS или хранилища Dropbox. В частности, при хранении файлов различных форматов, таких как BCL, FASTQ, SAM, BAM, CRAM, VCF и т.д., созданных для геномного набора данных, который может быть подвергнут обработке JIT и/или сохранен, JIT или другая подобная система компиляции и/или анализа может быть выполнена с возможностью преобразования данных в один базовый формат хранения для хранения. С файлом могут быть связаны и сохранены дополнительные данные, такие как метаданные и/или другие сведения (которые могут быть небольшого объема), необходимые для воспроизведения всех остальных требуемых форматов с помощью ускоренной обработки геномных данных. Такая дополнительная информация может включать в себя одно или более из следующего: список форматов, подлежащих воспроизведению, команды обработки данных для воспроизведения каждого формата, уникальный идентификатор (например, URL или хэш-функция MD5/SHA) референсного генома, настройки различных параметров, например, для картирования, выравнивания, сортировки, определения вариантов и/или любой другой обработки, которые описаны в настоящем документе, затравки рандомизации для этапов обработки, например, использование псевдорандомизации для детерминистического воспроизведения тех же самых результатов, пользовательский интерфейс и т.п.[00599] For example, a basic storage format for JIT compilation and/or processing may contain minimal data fields such as read name, base quality scores, alignment position and/or orientation in the reference, and a list of differences from the reference, for example where each field may be compressed optimally for its data type. Various other metadata may be included or otherwise associated with the storage file. In such a case, the underlying storage for JIT analysis may be on a local file system 200, such as hard disk drives and solid state drives, or on a network storage resource, such as a storage system 400 such as a NAS object store or Dropbox storage. In particular, when storing files of various formats such as BCL, FASTQ, SAM, BAM, CRAM, VCF, etc., created for a genomic dataset that can be JIT processed and/or stored by JIT or other similar system compilation and/or analysis may be performed with the ability to convert the data into one basic storage format for storage. Additional data may be associated and stored with the file, such as metadata and/or other information (which may be small) necessary to reproduce all other required formats using accelerated genomic data processing. Such additional information may include one or more of the following: a list of formats to be reproduced, data processing commands for reproducing each format, a unique identifier (e.g. URL or MD5/SHA hash function) of the reference genome, settings for various parameters, e.g. for mapping, alignment, sorting, variant determination, and/or any other processing as described herein, randomization seeds for processing steps, e.g., using pseudorandomization to deterministically reproduce the same results, user interface, and the like.

[00600] В различных случаях данные, подлежащие сохранению и/или извлечению в JIT или аналогичной системы динамической обработки и/или анализа трансляции, могут быть представлены пользователю или другим приложениям разнообразными способами. Например, один вариант состоит в том, чтобы иметь хранилище анализа JIT в стандартном или настраиваемом формате файла «объект JIT», например, для хранения и/или извлечения в виде файла формата SAM, BAM, CRAM или другого файла настраиваемого формата, и обеспечения пользовательских средств для быстрого преобразования объекта JIT в требуемый формат (например, в локальном временном хранилище 200) с помощью ускоренной обработки, описанной в настоящем документе. Другой вариант заключается в представлении появления множества форматов файлов, таких как BCL, FASTQ, SAM, BAM, CRAM, VCF и т.д, пользователю и пользовательским приложениям таким образом, чтобы при доступе файловой системы к различным форматам файлов использовалась процедура JIT, и таким образом нужно было сохранять только один типа файла, а из этого файла можно было формировать все остальные файлы на лету. Еще одним вариантом является создание пользовательское средство, иначе принимающее специальные форматы файлов (BCL, FASTQ, SAM, BAM, CRAM, VCF, и т.д.), которые вместо этого могут быть представлены как объект JIT, и может автоматически вызывать анализ JIT, чтобы при вызове получать данные в требуемом формате данных, например, BCL, FASTQ, SAM, BAM, CRAM, VCF и т.д. автоматически.[00600] In various cases, data to be stored and/or retrieved in a JIT or similar dynamic processing and/or translation analysis system may be presented to the user or other applications in a variety of ways. For example, one option is to have a JIT analysis store in a standard or custom JIT object file format, such as storing and/or retrieving as a SAM, BAM, CRAM, or other custom file format, and providing custom means for quickly converting a JIT object to the required format (eg, in local temporary storage 200) using the accelerated processing described herein. Another option is to present the appearance of multiple file formats such as BCL, FASTQ, SAM, BAM, CRAM, VCF, etc. to the user and user applications such that the file system accesses the various file formats using a JIT procedure, and thus Thus, it was necessary to save only one type of file, and from this file it was possible to generate all other files on the fly. Another option is to create a custom tool that otherwise accepts special file formats (BCL, FASTQ, SAM, BAM, CRAM, VCF, etc.) that can instead be represented as a JIT object, and can automatically invoke JIT analysis. so that when called, receive data in the required data format, for example, BCL, FASTQ, SAM, BAM, CRAM, VCF, etc. automatically.

[00601] Соответственно, процедуры JIT полезны для обеспечения доступа ко множеству форматов файлов, например, BCL, FASTQ, SAM, BAM, CRAM, VCF и т. п., из одного формата файла путем быстрой обработки базового хранящегося сжатого формата файла. Кроме того, технология JIT остается полезной, даже если доступ нужно получать только к одному формату файла, так как сжатие все равно достигается непосредственно в отношении хранения формата, к которому осуществляется доступ. В таком случае базовый формат хранения файла может отличаться от формата файла, к которому осуществляется доступ, и/или может содержать меньше метаданных, и/или может быть сжат более эффективно, чем формат, к которому осуществляется доступ. Кроме того, в таком случае, как обсуждалось выше, файл сжимают перед сохранением и распаковывают при извлечении, например автоматически.[00601] Accordingly, JIT routines are useful for providing access to multiple file formats, such as BCL, FASTQ, SAM, BAM, CRAM, VCF, etc., from a single file format by quickly processing the underlying stored compressed file format. In addition, JIT technology remains useful even if only one file format needs to be accessed, since compression is still achieved directly against the storage format being accessed. In such a case, the underlying file storage format may be different from the file format being accessed, and/or may contain less metadata, and/or may be compressed more efficiently than the format being accessed. In addition, in such a case, as discussed above, the file is compressed before saving and decompressed when extracted, for example automatically.

[00602] В различных случаях способы анализа JIT, представленные в настоящем документе, могут быть также использованы для передачи геномных данных по Интернету или другой сети, чтобы сводить к минимуму время передачи и меньше потреблять полосу пропускания сети. В частности, в одном приложении хранения может храниться один сжатый базовый формат файла и/или доступ к одному или более форматам может осуществляться посредством распаковки и/или ускоренной обработки геномных данных. Аналогичным образом в приложении передачи нужно передавать только один сжатый базовый формат файла, например, с исходного сетевого узла на сетевой узел назначения, например, когда базовый формат может быть выбран в первую очередь для получения наименьшего размера при сжатии, и/или когда все требуемые форматы файлов могут быть сформированы на узле назначения посредством или для обработки геномных данных, например на лету. Благодаря этому для хранения и/или передачи нужно будет использовать только один формат данных, из которого могут быть получены другие различные форматы файлов.[00602] In various cases, the JIT analysis methods presented herein can also be used to transmit genomic data over the Internet or other network to minimize transmission time and consume less network bandwidth. In particular, one compressed base file format may be stored in a single storage application and/or one or more formats may be accessed through decompression and/or accelerated processing of genomic data. Similarly, in a transfer application, only one compressed base file format needs to be transferred, for example, from a source network host to a destination network host, for example, when the base format may be selected first to produce the smallest compression size, and/or when all required formats files can be generated at the destination node by or for processing genomic data, for example on the fly. This ensures that only one data format needs to be used for storage and/or transmission, from which various other file formats can be derived.

[00603] Соответственно, как показано на ФИГ. 40A, обработка геномных данных с аппаратным и/или квантовым ускорением, как описано в настоящем документе, может быть использована как на исходном узле сети для формирования и/или сжатия базового формата для передачи, так и на узле назначения для распаковки и/или формирования других требуемых форматов файлов с помощью ускоренной обработки геномных данных. Тем не менее, JIT или иной динамический анализ трансляции продолжает оставаться полезным в приложении передачи, даже если только один из исходного узла или узла назначения использует обработку геномных данных с аппаратным и/или квантовым ускорением. Например, сервер данных, который отправляет большие объемы геномных данных, может использовать обработку геномных данных с аппаратным и/или квантовым ускорением для формирования сжатого базового формата для передачи в различные места назначения. В таких случаях в каждом месте назначения могут использовать более медленную программную обработку геномных данных для формирования других требуемых форматов файлов. Следовательно, хотя скоростные преимущества анализа JIT ослабевают на узле назначения, время передачи и использование сети по-прежнему эффективно снижаются, и исходный узел в состоянии эффективно обслуживать множество таких передач за счет своего соответствующего устройства обработки геномных данных с аппаратным и/или квантовым ускорением.[00603] Accordingly, as shown in FIG. 40A, hardware and/or quantum accelerated processing of genomic data as described herein can be used both at the source node of the network to form and/or compress the base format for transmission, and at the destination node to decompress and/or form other required file formats using accelerated processing of genomic data. However, JIT or other dynamic translation analysis continues to be useful in a transmission application even if only one of the source or destination nodes uses hardware and/or quantum-accelerated genomic data processing. For example, a data server that sends large volumes of genomic data may use hardware and/or quantum-accelerated processing of genomic data to generate a compressed base format for transmission to various destinations. In such cases, each destination may use slower software processing of genomic data to generate other required file formats. Therefore, although the speed benefits of JIT analysis are weakened at the destination node, transmission time and network utilization are still effectively reduced, and the source node is able to efficiently service many such transmissions through its associated hardware and/or quantum-accelerated genomic data processing engine.

[00604] Кроме того, в другом примере сервер данных, который принимает загрузки больших объемов геномных данных, например, из различных источников, может использовать обработку и/или сохранение геномных данных с аппаратным и/или квантовым ускорением, тогда как различные исходные узлы могут использовать более медленное программное обеспечение, исполняемое на ЦПУ/ГПУ, для формирования сжатого базового формата файла для передачи. В альтернативном варианте реализации обработка геномных данных с аппаратным и/или квантовым ускорением может быть использована одним или более промежуточными сетевыми узлами, такими как шлюзовый сервер, между исходным узлами и узлами назначения, для передачи и/или приема геномных данных в сжатом базовом формате в соответствии с JIT или другими способами динамического анализа трансляции, таким образом используя преимущества в виде уменьшения времени передачи и использования сети без перегрузки этих промежуточных сетевых узлов за счет чрезмерной программной обработки.[00604] Additionally, in another example, a data server that accepts downloads of large volumes of genomic data, for example, from various sources, may use hardware and/or quantum-accelerated processing and/or storage of genomic data, while various source nodes may use slower software running on the CPU/GPU to generate a compressed base file format for transmission. In an alternative implementation, hardware and/or quantum-accelerated genomic data processing may be used by one or more intermediate network nodes, such as a gateway server, between the source nodes and destination nodes to transmit and/or receive genomic data in a compressed base format according to with JIT or other methods of dynamic translation analysis, thus taking advantage of reduced transmission time and network usage without overloading these intermediate network nodes with excessive software processing.

[00605] Следовательно, как показано на ФИГ. 40A, в определенных случаях локальный вычислительный ресурс 100 может содержать компилятор 130, такой как компилятор JIT, и может также содержать блок 150 уплотнителя, который выполнен с возможностью сжатия данных, например, формируемых и/или получаемых данных первичной и/или вторичной обработки (или третичные данные), которые могут быть сжаты, например, перед передачей по локальной сети 10, и/или облачной сети 30, и/или гибридной сети 50, например в процедуре анализа JIT, и которые могут быть распакованы после передачи и/или перед использованием.[00605] Therefore, as shown in FIG. 40A, in certain cases, local computing resource 100 may include a compiler 130, such as a JIT compiler, and may also include a compressor 150 that is configured to compress data, such as generated and/or received primary and/or secondary processing data (or tertiary data) that may be compressed, for example, before transmission over local network 10 and/or cloud network 30, and/or hybrid network 50, such as in a JIT parsing procedure, and which may be decompressed after transmission and/or before use .

[00606] Как описано выше, в различных случаях система может содержать первую интегральную и/или квантовую схему 100, например, для выполнения операции картирования, выравнивания, сортировки и/или определения вариантов с целью формирования одних или более картированных, выровненных, сортированных, не содержащих дубликатов и/или подвергнутых определению вариантов данных результатов. Кроме того, система может содержать другую интегральную и/или квантовую схему 300, например, для использования данных результатов при выполнении одного или более анализов с помощью геномных и/или биоинформационных конвейеров, таких как третичная обработка. Например результирующие данные, сформированные первой интегральной и/или квантовой схемой 100, могут быть использованы, например, первой или второй интегральной и/или квантовой схемой 300 при выполнении процедуры дальнейшей конвейерной геномной и/или биоинформационной обработки. А именно, вторичная обработка геномных данных может быть выполнена первым процессором 100 с аппаратным и/или квантовым ускорением для создания данных результатов, а третичная обработка может быть выполнена на этих данных результатов, например, когда дальнейшую обработку выполняют с помощью ЦПУ, и/или ГПУ, и/или КПУ 300, которое оперативно соединено с первой интегральной схемой. В таком случае вторая схема 300 может быть выполнена с возможностью выполнения третичной обработки данных геномной вариации, полученных первой схемой 100. Соответственно, данные результатов, полученные из первой интегральной схемы, действуют в качестве движка анализа, приводящего в действие этапы дальнейшей обработки, описанные в настоящем документе в отношении третичной обработки, например, с помощью второй интегральной и/или квантовой схемы 300 обработки.[00606] As described above, in various cases, the system may include a first integrated circuit and/or quantum circuit 100, for example, to perform a mapping, alignment, sorting, and/or variant determination operation to generate one or more mapped, aligned, sorted, containing duplicates and/or quantified variants of these results. In addition, the system may include another integrated circuit and/or quantum circuit 300, for example, to use the results data to perform one or more analyzes using genomic and/or bioinformatics pipelines, such as tertiary processing. For example, the resulting data generated by the first integrated and/or quantum circuit 100 can be used, for example, by the first or second integrated and/or quantum circuit 300 when performing a further genomic and/or bioinformatics processing pipeline. Namely, secondary processing of the genomic data may be performed by the first hardware and/or quantum-accelerated processor 100 to generate the result data, and tertiary processing may be performed on the result data, such as where further processing is performed by a CPU, and/or GPU , and/or CPU 300, which is operatively connected to the first integrated circuit. In such a case, the second circuit 300 may be configured to perform tertiary processing of the genomic variation data obtained by the first circuit 100. Accordingly, the result data obtained from the first integrated circuit acts as an analysis engine driving the further processing steps described herein document regarding tertiary processing, for example, using a second integrated and/or quantum processing circuit 300.

[00607] Однако данные, формируемые на каждом из этих этапов первичной, и/или вторичной, и/или третичной обработки, могут быть огромными, требующими очень больших затрат на ресурсы и/или память, например, для хранения, либо локально 200, либо удаленно 400. Например, на первом этапе первичной обработки сформированные данные 110 последовательности нуклеиновых кислот, например в формате файла BCL и/или FASTQ, могут быть приняты 120, например из СНП 110. Независимо от формата файла этих данных последовательности они могут быть использованы в протоколе вторичной обработки, как описано в настоящем документе. Возможность приема и обработки первичных данных последовательности непосредственно из СНП, например, в формате файла BCL и/или FASTQ, очень полезна. В частности, вместо преобразования файла данных последовательности из СНП, например, в формате файла BCL, в файл FASTQ, файл может быть принять непосредственно из СНП, например, как файл BCL, и может быть обработан, например, будучи принятым и обработанным системой JIT, например, на лету, в файл FASTQ и может быть затем обработан, как описано в настоящем документе, для создания картированных, выровненных, сортированных, не имеющих дубликатов и/или подвергнутых определению вариантов данных результатов, которые могут быть затем сжаты, например, в файл SAM, BAM и/или CRAM, и/или могут быть подвергнуты дальнейшей обработке, например, с использованием одного или более описанных конвейеров геномной третичной обработки.[00607] However, the data generated at each of these primary and/or secondary and/or tertiary processing steps can be enormous, requiring very large resource and/or memory costs, for example for storage, either locally 200 or remotely 400. For example, in the first stage of primary processing, generated nucleic acid sequence data 110, for example in a BCL and/or FASTQ file format, can be received 120, for example from SNP 110. Regardless of the file format of this sequence data, it can be used in the protocol secondary processing as described herein. The ability to ingest and process raw sequence data directly from SNP, for example in BCL and/or FASTQ file format, is very useful. In particular, instead of converting a sequence data file from the SNP, for example in the BCL file format, to a FASTQ file, the file can be received directly from the SNP, for example as a BCL file, and can be processed, for example, by being accepted and processed by the JIT system. for example, on the fly, into a FASTQ file and can then be processed as described herein to produce mapped, aligned, sorted, non-duplicate and/or variant-qualified results that can then be compressed, for example, into a file SAM, BAM and/or CRAM, and/or may be further processed, for example, using one or more of the described genomic tertiary processing pipelines.

[00608] Соответственно, после создания таких данных их нужно сохранить каким-либо образом. Однако такое хранение не только ресурсоемкое, но и дорогостоящее. А именно, в типичном геномном протоколе полученные секвенированные данные сохраняют в виде большого файла FASTQ. Затем, после обработки, например, путем применения протокола картирования и/или выравнивания, создают файл BAM, который тоже, как правило, сохраняют, увеличивая стоимость хранения геномных данных, например, вследствие необходимости хранения обоих файлов, FASTQ и BAM. Кроме того, после обработки файла BAM, например, путем применения протокола определения вариантов, создают файл VCF, который тоже, как правило, нужно сохранить. В таком случае, чтобы адекватно обеспечить и использовать сформированные генетические данные, возможно, потребуется хранить все три файла, FASTQ, BAM и VCF, локально 200 или удаленно 400. Кроме того, исходный файл BCL тоже может храниться. Такое хранение неэффективно, а также требует интенсивного использования ресурсов памяти и стоит дорого.[00608] Accordingly, once such data is created, it must be stored in some way. However, such storage is not only resource-intensive, but also expensive. Namely, in a typical genomic protocol, the resulting sequenced data is stored as a large FASTQ file. Then, after processing, for example by applying a mapping and/or alignment protocol, a BAM file is created, which is also typically stored, increasing the cost of storing genomic data, for example, due to the need to store both FASTQ and BAM files. In addition, after processing the BAM file, for example by applying a variant definition protocol, a VCF file is created, which also usually needs to be saved. In such a case, to adequately provision and use the generated genetic data, it may be necessary to store all three files, FASTQ, BAM and VCF, locally 200 or remotely 400. Additionally, the original BCL file may also be stored. This storage is inefficient, memory intensive and expensive.

[00609] Однако вычислительная мощность аппаратной и/или квантовой архитектуры обработки, реализованная в настоящем изобретении, наряду с компиляцией, сжатием и хранением JIT, сильно смягчают неэффективность, стоимость ресурсов и издержки. Например, с учетом реализуемых способов и скоростей обработки, достигаемых с помощью предложенных ускоренных интегральных схем, например, для преобразования файла BCL в файл FASTQ с последующим преобразованием файла FASTQ в файл SAM или файл BAM, а затем преобразования файла BAM в файл CRAM и/или файл VCF и обратно, предложенная система сильно сокращает количество вычислительных ресурсов и/или размеры файлов, необходимых для эффективной обработки и/или хранения таких данных. Преимущества этих систем и способов еще больше усиливаются за счет того, что нужно хранить только один формат файла, например, нужно хранить BCL, FASTQ, SAM, BAM, CRAM и/или VCF, из которого можно получить все другие форматы файлов и обработать. В частности, нужно сохранить только один формат файла, а из такого файла можно быстро, например, на лету, сформировать любой из других форматов файлов, в соответствии со способами, описанными в настоящем документе, например, в формате компиляции «точно в срок», или JIT.[00609] However, the processing power of the hardware and/or quantum processing architecture implemented in the present invention, along with JIT compilation, compression, and storage, greatly mitigates inefficiencies, resource costs, and overheads. For example, given the implementation methods and processing speeds achieved by the proposed accelerated integrated circuits, for example, to convert a BCL file to a FASTQ file and then convert the FASTQ file to a SAM file or a BAM file, and then convert the BAM file to a CRAM file and/or VCF file and vice versa, the proposed system greatly reduces the amount of computing resources and/or file sizes required to efficiently process and/or store such data. The advantages of these systems and methods are further enhanced by the fact that only one file format needs to be stored, eg BCL, FASTQ, SAM, BAM, CRAM and/or VCF, from which all other file formats can be retrieved and processed. In particular, only one file format needs to be stored, and from such a file can be quickly, for example, on the fly, generated by any of the other file formats, in accordance with the methods described herein, for example, in a just-in-time compilation format, or JIT.

[00610] Например, в соответствии с типичными способами известного уровня техники для обработки и хранения файлов FASTQ, формируемых секвенатором СНП, требуется большой объем вычислительных ресурсов, например, фермы серверов и большие банки памяти. В частности, в типичном случае после создания с помощью СНП большого файла FASTQ нужно будет использовать ферму серверов для приема и преобразования файла FASTQ в файл BAM и/или файл CRAM, причем обработка может занять до суток или более. Однако сам созданный файл BAM тоже нужно сохранить, что требует дополнительно времени и ресурсов. Аналогичным образом файл BAM или CRAM может быть обработан для формирования файла VCF, что также может занять еще сутки или более, и этот файл тоже нужно будет сохранить, тем самым затратив дополнительно ресурсы и понеся дальнейшие издержки. Более конкретно, в типичном случае на файл FASTQ для генома человека расходуется около 90 ГБ памяти на файл. Аналогичным образом типичный файл генома человека BAM может занимать около 160 ГБ. Возможно, потребуется также сохранить файл VCF, хотя такие файлы и довольно маленькие по сравнению с файлами FASTQ и/или BAM. В результате вторичной обработки могут быть также сформированы файлы SAM и CRAM, и их тоже может понадобиться сохранить.[00610] For example, typical prior art methods require large amounts of computing resources, such as server farms and large memory banks, to process and store the FASTQ files generated by the SNP sequencer. In particular, in a typical scenario, once a large FASTQ file has been generated by the CPS, a server farm will need to be used to ingest and convert the FASTQ file into a BAM file and/or a CRAM file, which may take up to a day or more to process. However, the created BAM file itself must also be saved, which requires additional time and resources. Similarly, a BAM or CRAM file may be processed to generate a VCF file, which may also take another day or more, and this file will also need to be saved, thereby expending additional resources and incurring further costs. More specifically, a typical FASTQ file for the human genome consumes about 90 GB of memory per file. Likewise, a typical human genome BAM file can be around 160 GB. You may also need to save a VCF file, although these files are quite small compared to FASTQ and/or BAM files. Secondary processing may also produce SAM and CRAM files, and these may also need to be saved.

[00611] До технологий, предложенных в настоящем документе, требовалось интенсивное использование вычислительных ресурсов для перехода с одного этапа на другой, например, с одного формата файла на другой, и поэтому, как правило, приходилось хранить все данные для этих форматов файлов. Частично это объясняется тем, что если пользователь захочет когда-либо вернуться и восстановить один или более из этих файлов, потребуется огромное количество вычислительных ресурсов и времени, чтобы отмотать назад процессы, участвующие в восстановлении различных файлов, тем самым понеся высокие денежные расходы. Кроме того, эти файлы сжимают перед сохранением, а такое сжатие может занимать от около 2 до около 5 и около 10 часов или более, причем примерно такое же количество времени потребуется для распаковки перед повторным использованием. Вследствие этих высоких расходов типичные пользователи не будут сжимать такие файлы перед сохранением, а будут также, как правило, сохранять все два, три или более форматов файлов, например, BCL, FASTQ, BAM, VCF, неся повышенные издержки в течение более длительного периода времени.[00611] Prior to the technologies proposed herein, it was computationally intensive to move from one step to another, for example, from one file format to another, and therefore typically had to store all the data for those file formats. Part of the reason for this is that if the user ever wanted to go back and restore one or more of these files, it would require a huge amount of computing resources and time to rewind the processes involved in restoring the various files, thereby incurring high monetary costs. Additionally, these files are compressed before being stored, and such compression can take from about 2 to about 5 to about 10 hours or more, with about the same amount of time required to decompress before reuse. Due to these high costs, typical users will not compress such files before saving and will also tend to save all two, three or more file formats, e.g. BCL, FASTQ, BAM, VCF, incurring increased costs over a longer period of time .

[00612] Соответственно, протоколы JIT, применяемые в настоящем изобретении, могут использовать повышенные скорости обработки, достигаемые предложенными аппаратными и/или квантовыми ускорителями, для воплощения улучшенной эффективности при сокращении времени и затрат, как на обработку, так и на хранение. Вместо хранения 2, 3 или более экземпляров одних и тех же общих данных в различных форматах файлов, нужно хранить только один формат файла, а любой из других типов файлов может быть восстановлен на лету, например с помощью платформ ускоренной обработки, рассмотренных в настоящем документе. В частности, предложенные устройства и системы могут легко возвращаться от хранения файла FASTQ к файлу BCL, или продвигаться к файлу BAM и затем дальше к файлу VCF, например, менее чем за 30 минут, например в течение 20 минут или около 15 или 10 минут или меньше.[00612] Accordingly, JIT protocols used in the present invention can take advantage of the increased processing speeds achieved by proposed hardware and/or quantum accelerators to realize improved efficiency while reducing both processing and storage time and costs. Instead of storing 2, 3, or more instances of the same shared data in different file formats, only one file format needs to be stored, and any of the other file types can be recovered on the fly, such as using the accelerated processing platforms discussed in this document. In particular, the proposed devices and systems can easily revert from storing a FASTQ file to a BCL file, or progressing to a BAM file and then on to a VCF file, for example, in less than 30 minutes, for example within 20 minutes, or about 15 or 10 minutes or less.

[00613] Следовательно, благодаря использованию конвейеров и скорости обработки, обеспечиваемой аппаратными/квантовыми движками обработки, описанными в настоящем документе, нужно хранить один формат файла, а остальные форматы файлов могут быть легко и быстро сформированы из него. Поэтому вместо необходимости хранения всех трех форматов файлов, нужно хранить один формат файла, из которого можно формировать остальные форматы файлов, например, на лету, точно в срок для дальнейших этапов обработки, требуемых для пользователя. Следовательно, система может быть выполнена с возможностью использования ее без труда таким образом, чтобы пользователь просто взаимодействовал с графическим пользовательским интерфейсом, например, представленным на связанном дисплее устройства, например, чтобы пользователь мог получать требуемое представление формата нажатием кнопки FASTQ, BAM, VCF и т.д. в ГПИ, причем один или более движков ускоренной обработки могли бы в фоновом режиме выполнять этапы ускоренной обработки, необходимые для восстановления запрошенного файла в затребованном формате файла из сохраненного файла.[00613] Therefore, through the use of pipelines and the processing speed provided by the hardware/quantum processing engines described herein, one file format needs to be stored, and other file formats can be easily and quickly generated from it. Therefore, instead of having to store all three file formats, one needs to store one file format from which the remaining file formats can be generated, for example, on the fly, just in time for further processing steps required by the user. Therefore, the system can be easily used in such a way that the user simply interacts with a graphical user interface, for example, presented on an associated display of the device, for example, so that the user can obtain the desired format representation by pressing a button FASTQ, BAM, VCF, etc. .d. in the GUI, where one or more acceleration engines could, in the background, perform the acceleration steps necessary to restore the requested file in the requested file format from the stored file.

[00614] Как правило, будут сохранять одну или более сжатых версий файла BCL, FASTQ, SAM, BAM, CRAM и/или VCF вместе с небольшим метафайлом, который содержит все конфигурации, использованные системой для создания сжатого и/или сохраненного файла. Такие данные метафайла содержат подробности того, как формировался конкретный формат файла, например, FASTQ и/или BAM, и/или какие шаги понадобятся для возврата назад или продвижения вперед для формирования любого из других форматов файлов. Этот процесс описан более подробно ниже в настоящем документе. Подобным образом процесс может быть продвинут вперед или возращен назад с помощью конфигурации, сохраненной в метафайле. Это может сократить на 80% или более потребности в хранении и экономические издержки, если вычислительная функция связана с функциями сохранения.[00614] Typically, one or more compressed versions of a BCL, FASTQ, SAM, BAM, CRAM, and/or VCF file will be stored along with a small metafile that contains all of the configurations used by the system to create the compressed and/or saved file. Such metafile data contains details of how a particular file format, such as FASTQ and/or BAM, was generated, and/or what steps would be needed to go back or forward to generate any of the other file formats. This process is described in more detail later in this document. Likewise, a process can be advanced or reverted using configuration stored in a metafile. This can reduce storage needs and economic costs by 80% or more if the computing function is linked to storage functions.

[00615] Соответственно, ввиду вышеизложенного, и как показано на ФИГ. 40A, предложена облачная серверная система для аналитики и хранения данных. Например, с помощью доступной из облака северной системы, которая описана в настоящем документе, пользователь может соединяться с устройством хранения, например, для хранения входных данных. Например, удаленный пользователь может получать доступ к системе, чтобы ввести геномные и/или биоинформационные данные в систему, например для хранения и/или обработки их. В частности, удаленный пользователь системы, например, с помощью локального вычислительного ресурса 100, может получать доступ к системе 1 для выгрузки геномных данных, таких как один или более секвенированных геномов одного или более индивидов. Как подробно описано ниже, система может содержать пользовательский интерфейс, например, имеющий доступ к соответствующим образом сконфигурированному API, который позволит пользователю получить доступ к BioIT-платформе для выгрузки подлежащих обработке данных, управления параметрами обработки и/или загрузке выходных данных, например, данных результатов, с платформы.[00615] Accordingly, in view of the above, and as shown in FIG. 40A, a cloud server system for analytics and data storage is proposed. For example, using a cloud-accessible northbound system as described herein, a user can connect to a storage device, for example, to store input data. For example, a remote user may access the system to enter genomic and/or bioinformatics data into the system, for example, to store and/or process it. In particular, a remote user of the system, for example using local computing resource 100, can access the system 1 to download genomic data, such as one or more sequenced genomes of one or more individuals. As described in detail below, the system may comprise a user interface, for example having access to a suitably configured API, which will allow the user to access the BioIT platform to upload data to be processed, control processing parameters and/or download output data, such as result data , from the platform.

[00616] А именно, система может содержать API, например, объекта S3 или «типа S3», который позволяет получать доступ к одной или более памятей системы для хранения 400 и/или приема сохраняемых файлов. Например, может присутствовать доступный из облака объект API, например, когда API выполнен с возможностью сохранения файлов данных в облаке 50, например, в одно или более ведер 500 памяти, например в ведро S3. Соответственно, система может быть выполнена с возможностью обеспечения пользователю доступа к удаленно хранящимся файлам, например, посредством API S3 или типа S3, например, путем доступа к API через облачный интерфейс на персональном вычислительном устройстве.[00616] Namely, the system may contain an API, for example, of an S3 object or "S3 type" that allows access to one or more system memories for storing 400 and/or receiving stored files. For example, there may be a cloud accessible API object, such as where the API is configured to store data files in the cloud 50, such as one or more storage buckets 500, such as an S3 bucket. Accordingly, the system may be configured to provide a user with access to remotely stored files, for example, through an S3 API or an S3 type, for example, by accessing the API through a cloud interface on a personal computing device.

[00617] Такой API может быть поэтому выполнен с возможностью обеспечения доступа к облаку 50 для соединения тем самым пользователя с одним или более облачных серверов 300, описанных в настоящем документе, например, для выгрузки и/или загрузки данного хранящего файла, например, чтобы сделать его доступным между облачным сервером 300 и локальным накопителем 100 на жестких дисках. Это может быть полезно, например, для обеспечения удаленному пользователю возможности предоставления, получения доступа и/или загрузки данных на или с сервера 300 и последующего выполнения одного или более приложений и/или вычислений на этих данных, либо локально 100, либо на сервере 300, а затем вызова API для отправки преобразованных данных обратно на облако 50 или с него, например, для хранения 200 и/или дальнейшей обработки. Это особенно полезно для извлечения, анализа и хранения геномных данных.[00617] Such an API may therefore be configured to provide access to a cloud 50 to thereby connect the user to one or more cloud servers 300 described herein, for example, to upload and/or download a given storage file, for example, to make it is accessible between the cloud server 300 and the local hard drive 100. This may be useful, for example, to allow a remote user to provide, access, and/or download data to or from server 300 and then perform one or more applications and/or computations on that data, either locally 100 or on server 300. and then calling an API to send the converted data back to or from the cloud 50, for example, for storage 200 and/or further processing. It is especially useful for extracting, analyzing and storing genomic data.

[00618] Однако типичное облачное хранилище данных, например, хранилище «S3» стоит дорого. Эта стоимость возрастает при хранении больших количеств геномных и/или биоинформационных данных, где такие затраты становятся непомерно высокими. Кроме того, время, требуемое на запись, выгрузку и/или загрузку данных для использования, например, либо локально 100, либо удаленно 300, и/или расходы на хранение 400 также делают такие дорогие системы облачных хранилищ менее привлекательными. Предложенные решения, которые описаны в настоящем документе, преодолевают эти и другие недостатки.[00618] However, typical cloud data storage, such as "S3" storage, is expensive. This cost increases when storing large quantities of genomic and/or bioinformatics data, where such costs become prohibitive. In addition, the time required to record, upload and/or download data for use, for example, either locally 100 or remotely 300 and/or storage costs 400 also make such expensive cloud storage systems less attractive. The proposed solutions described in this document overcome these and other shortcomings.

[00619] В частности, вместо того, чтобы переходить на объект типичного хранилища «S3» или другой типичный облачный объект, предложенный в настоящем документе API представляет собой альтернативный совместимый с S3 API, который может быть реализован с возможностью снижения скорости передачи и/или стоимости хранения данных. В таком случае, когда пользователь желает сохранить файл, вместо того, чтобы переходить на типичный облачный, например, S3, API, альтернативная система API услуг, например, например запатентованный S3-совместимый API, описанный в настоящем документе, запустит экземпляр вычисления, например, экземпляр ЦПУ и/или FPGA системы, который сожмет файл, сформирует индекс метаданных, чтобы указать, что представляют собой данные и/или как был сформирован файл и т.д., и затем сохранит сжатый файл с помощью S3-совместимого хранилища типа ведра 400. Соответственно, в настоящем документе представлена облачная 50 служба, использующая экземпляр 300 вычисления, который может быть запущен альтернативным API для сжатия данных перед сохранением 400. В таком случае то, что сохраняют, является поэтому не фактическим файлом, а, скорее, сжатой версией исходного файла.[00619] Specifically, rather than moving to a typical "S3" storage object or other typical cloud object, the API proposed herein provides an alternative S3-compatible API that can be implemented with the ability to reduce transfer speed and/or cost data storage. In such a case, when a user wishes to save a file, rather than moving to a typical cloud, e.g., S3, API, an alternative service API system, e.g., the proprietary S3-compatible API described herein, will launch a computation instance, e.g. an instance of a CPU and/or FPGA system that will compress the file, generate a metadata index to indicate what the data is and/or how the file was generated, etc., and then store the compressed file using S3-compatible bucket 400 storage Accordingly, this document presents a cloud 50 service that uses a compute instance 300 that can be launched by an alternative API to compress the data before storing 400. In such a case, what is saved is therefore not the actual file, but rather a compressed version of the original file. file.

[00620] А именно, в таком случае начальный файл может быть в первом формате, который может быть загружен в систему посредством патентованного S3-совместимого API, который принимает файл, например, файл F1, и может затем выполнить функцию вычисления на этом файле и/или сжать этот файл, например, посредством соответствующим образом сконфигурированного движка 300 обработки ЦПУ/ГПУ/КПУ/FPGA, который затем подготавливает сжатый файл для хранения в виде сжатого, например, сжатого файла F1. Однако, когда сжатый и хранящийся файл требуется извлечь, он может быть распакован и затем распакованный файл может быть отправлен пользователю. Преимуществом это ускоренной системы сжатия и распаковки является то, что хранение 400 сжатого файла означает невероятную экономию расходов на хранение, причем это преимущество становится возможным за счет функциональных возможностей вычисления и/или сжатия, достигаемых системами, описанными в настоящем документе.[00620] Namely, in such a case, the initial file may be in a first format that can be loaded into the system via a proprietary S3-compatible API that accepts a file, for example an F1 file, and can then perform a calculation function on that file and/ or compress the file, for example, through a suitably configured CPU/GPU/FPGA processing engine 300, which then prepares the compressed file for storage as a compressed file, such as an F1 compressed file. However, when a compressed and stored file needs to be retrieved, it can be decompressed and then the decompressed file can be sent to the user. The advantage of this accelerated compression and decompression system is that storing a compressed file 400 results in incredible storage cost savings, a benefit made possible by the computation and/or compression functionality achieved by the systems described herein.

[00621] Следовательно, благодаря быстрым и эффективным функциональным возможностям вычисления и/или сжатия, достигаемым представленными системами, пользователю даже не нужно знать, что файл сжимают перед сохранением и впоследствии распаковывают после хранения и представляют в интерфейсе пользователя. В частности, система функционирует настолько быстро и эффективно, что пользователю не нужно знать множестве этапов сжатия, вычисления и/или распаковки, которые имеют место при сохранении и/или извлечении запрошенных данных пользователю, все это происходит гармонично и своевременно. Однако тот факт, что представленная система хранения будет менее дорогой и более эффективной, чем предыдущие системы хранения, будет очевиден.[00621] Therefore, due to the fast and efficient computation and/or compression functionality achieved by the present systems, the user does not even need to know that the file is compressed before storage and subsequently decompressed after storage and presented in the user interface. In particular, the system operates so quickly and efficiently that the user does not need to be aware of the multiple compression, computation and/or decompression steps that take place when storing and/or retrieving the user's requested data, all of which occurs in a seamless and timely manner. However, the fact that the presented storage system will be less expensive and more efficient than previous storage systems will be obvious.

[00622] Соответственно, ввиду вышеизложенного, объектно-ориентированные услуги хранения, где услуги хранения могут быть предоставлены за более низкую стоимость за счет объединения экземпляра вычисления и/или сжатия вместе с функциональными возможностями хранения. В таком случае типичная стоимость хранения может быть заменена стоимостью вычисления, которая предлагается на значительно более низком уровне, поскольку, как указано в настоящем документе, стоимость вычисления может быть уменьшена благодаря реализации в ускоренном виде, например, с помощью матрицы FPGA и/или квантовой вычислительной платформы 300, как описано в настоящем документе. Следовательно, ускоренные платформы, описанные в настоящем документе, могут быть выполнены в виде быстрой и эффективной системы хранения и извлечения, позволяющей быстро сохранять сжатые данные, которые могут быть как сжаты, таки и сохранены, а также быстро распакованы и извлечены со значительно меньшими расходами и большей эффективностью и скоростью. Это особенно полезно, когда дело касается хранения 400 геномных данных, и совместимо с функциональными возможностями обработки «точно в срок», описанными в настоящем документе выше. Поэтому в соответствии с устройствами, системами и способами, описанными в настоящем документе, может быть предусмотрена услуга хранения объектов, где услуга хранения реализует функциональные возможности быстрого сжатия, например, специфичного для геномики сжатия, для хранения данных результатов геномной обработки.[00622] Accordingly, in view of the above, object-oriented storage services, where storage services can be provided at a lower cost by combining instance computation and/or compression together with storage functionality. In such a case, the typical storage cost can be replaced by a computation cost that is offered at a much lower level because, as discussed herein, the computation cost can be reduced by an accelerated implementation such as an FPGA and/or quantum computing platform 300 as described herein. Therefore, the accelerated platforms described herein can be implemented as a fast and efficient storage and retrieval system that allows compressed data to be quickly stored, which can be both compressed and stored, and quickly decompressed and retrieved at significantly lower cost and cost. greater efficiency and speed. This is particularly useful when it comes to storing 400 genomic data, and is compatible with the just-in-time processing functionality described above herein. Therefore, in accordance with the devices, systems and methods described herein, an object storage service may be provided, where the storage service implements fast compression functionality, such as genomics-specific compression, for storing genomic processing result data.

[00623] Более конкретно, как показано на ФИГ. 40A, в одном примере реализации предложенные в настоящем документе BioIT-системы могут быть выполнены таким образом, чтобы конвейерная серверная система 300, например, ее часть, принимала запрос в API, например, S3-совместимом API, который выполнен с возможностью функционального соединения с базой 400 данных, которая выполнена с возможностью связывания начального файла (F1) со сжатой версией файла (CF1), например на основе связанных метаданных. Аналогичным образом после того, как исходные файлы CF1 распакованы и обработаны, файл получающихся данных результатов (F2) может быть затем сжат и сохранен как файл CF2. Соответственно, когда файл требуется извлечь из базы 400 данных, сервер 300 имеет API, который уже связал исходный файл со сжатым файлом посредством соответствующим образом сконфигурированных метаданных, поэтому, когда запрашивается извлечение, контроллер управления рабочими потоками (WMS) системы запустит экземпляр 300 вычисления, который запустит надлежащий экземпляр вычисления, чтобы выполнить любые необходимые вычисления и/или распаковать файл для дальнейшей обработки, передачи и/или представления запрашивающему пользователю 100.[00623] More specifically, as shown in FIG. 40A, in one embodiment, the BioIT systems proposed herein may be configured such that the pipeline server system 300, such as a portion thereof, receives a request to an API, such as an S3-compatible API, that is configured to be operably connected to a database 400 data, which is configured to associate the initial file (F1) with a compressed version of the file (CF1), for example, based on associated metadata. Likewise, after the CF1 source files are decompressed and processed, the resulting results data file (F2) can then be compressed and saved as a CF2 file. Accordingly, when a file needs to be retrieved from the database 400, the server 300 has an API that has already associated the source file with the compressed file through appropriately configured metadata, so that when retrieval is requested, the system's Workflow Management Controller (WMS) will launch a compute instance 300 that will launch the appropriate compute instance to perform any necessary computations and/or decompress the file for further processing, transmission, and/or presentation to the requesting user 100.

[00624] Следовательно, в различных вариантах реализации пример способа может включать в себя один или более их следующих этапов в любом логическом порядке: 1) Запрос поступает через API, например, S3-совместимый API, 2) API обменивается данными с WMS, 3) WMS заполняет базу данных и инициирует экземпляр (-ы) вычисления, 4) экземпляр (-ы) вычисления выполняет (-ют) необходимое сжатие она файле F1 и формируют характеристические метаданные и/или другие соответствующие ассоциации файла (X), например, для создания файла CF1 X1, 4) тем самым подготавливая данные для хранения 400. Затем этот процесс может быть повторен для файлов F2, F3, …, Fn, например, другой обработанной информации, чтобы WMS знал, как сжатый файл был сформирован, а также где и как он был сохранен. Необходимо отметить, что уникальным признаком данной системы является то, что доступ к сохраненным данным 400 может быть предоставлен нескольким другим пользователям 100 по существу одновременно. Например, системы и способы сжатия, описанные в настоящем документе, полезны в совокупности с BioIT-платформами, описанными в настоящем документе, благодаря чему в любое время в ходе процесса обработки данные результатов могут быть сжаты и сохранены в соответствии со способами, описанными в настоящем документе, и сделаны доступными для других пользователей с надлежащими полномочиями.[00624] Therefore, in various implementations, an example method may include one or more of the following steps in any logical order: 1) The request is received through an API, for example, an S3-compatible API, 2) the API communicates with the WMS, 3) The WMS populates the database and initiates the calculation instance(s), 4) the calculation instance(s) performs the necessary compression on the F1 file and generates characteristic metadata and/or other relevant file associations (X), e.g. file CF1 X1, 4) thereby preparing the data for storage 400. This process can then be repeated for files F2, F3, ..., Fn, for example, other processed information so that WMS knows how the compressed file was formed, as well as where and how it was preserved. It should be noted that a unique feature of this system is that access to stored data 400 can be provided to multiple other users 100 substantially simultaneously. For example, the compression systems and methods described herein are useful in conjunction with the BioIT platforms described herein such that, at any time during the processing process, result data can be compressed and stored in accordance with the methods described herein , and made available to other users with the appropriate permissions.

[00625] Что касается выполнения геномного анализа, пользователь 100 может получить доступ к системе 300, описанной в настоящем документе, например, посредством API геномного анализа, такого как S3 или S3-совместимый API, выгрузить геномные данные, например в формате файла BCL и/или FASTQ или другом формате файла, и тем самым запросить выполнение одной или более геномных операций, таких как картирование, выравнивание, сортировка, удаление дубликатов, определение вариантов, и/или других операций. Система 300 принимает запрос в API диспетчера рабочих потоков, затем система диспетчера рабочих потоков оценивает входящие запросы, индексирует задания, формирует очередь, выделяет ресурсы, например, выделение экземпляров, и формирует конвейерный поток. Соответственно, после поступления, предварительной обработки и постановки в очередь запроса распределитель экземпляров, например, API, раскрутит различные специфичные для заданий экземпляры, описанные более подробно ниже в настоящем документе, в соответствии с рабочими проектами. Следовательно, после того, как задание индексировано, поставлено в очередь и/или сохранено в соответствующей базе 400 данных, диспетчер рабочих потоков извлечет затем данные из хранилища 400, например, S3 или S3-совместимого хранилища, перезапустит соответствующий экземпляр, которые извлечет файл, и запустит надлежащий процесс на данных, чтобы выполнить одно или более запрошенных заданий.[00625] With respect to performing genomic analysis, user 100 may access the system 300 described herein, for example, through a genomic analysis API, such as S3 or an S3-compatible API, upload genomic data, for example, in a BCL file format, and/or or FASTQ or other file format, and thereby request the performance of one or more genomic operations, such as mapping, alignment, sorting, deduplication, variant identification, and/or other operations. System 300 receives a request to the Workflow Manager API, then the Workflow Manager system evaluates the incoming requests, indexes jobs, builds a queue, allocates resources, such as allocating instances, and builds a pipeline thread. Accordingly, once a request has been received, preprocessed, and queued, an instance allocator, such as an API, will spin up various job-specific instances, described in more detail later herein, according to the work designs. Therefore, after a job has been indexed, queued, and/or stored in the appropriate database 400, the worker thread manager will then retrieve data from storage 400, such as S3 or S3-compatible storage, restart the appropriate instance that retrieves the file, and will run the appropriate process on the data to complete one or more requested jobs.

[00626] Кроме того, в случае запроса на выполнение на данных множества заданий, требующих выполнения множества экземпляров, по завершении выполнения своих операций первым экземпляром, данные результатов могут быть сжаты и сохранены, например, в соответствующем экземпляре памяти, например, в первой базе данных, такой как эластичное или гибкое устройство хранения, чтобы дождаться, когда другие экземпляры конвейера раскрутятся и извлекут данные результатов для дальнейшей обработки, например, в соответствии с системами и способами, описанными в настоящем документе. Далее, по мере поступления новых запросов и/или продолжения выполнения текущих заданий система управления рабочими потоками будет постоянно обновлять очередь, чтобы выделять задания надлежащим экземплярам посредством API распределителя экземпляров, чтобы поддерживать эффективность потока данных через систему и выполнения процессов системы.[00626] In addition, in the case of a request to perform multiple jobs on the data that require multiple instances to be executed, after the first instance has completed its operations, the result data may be compressed and stored, for example, in a corresponding memory instance, for example, in a first database , such as an elastic or flexible storage device, to wait for other instances of the pipeline to spin up and retrieve result data for further processing, for example, in accordance with the systems and methods described herein. Next, as new requests arrive and/or current jobs continue to execute, the workflow management system will continually update the queue to allocate jobs to the proper instances through the instance allocator API to maintain efficient data flow through the system and execution of system processes.

[00627] Аналогичным образом система 300 может постоянно принимать данные результатов и сохранять данные 200/400, например, в первой и второй базах данных перед дальнейшей обработкой и передачей, например, передачей обратно первоначальному инициатору запроса 100 или назначенной стороне. В определенных случаях данные результатов могут быть сжаты, как описано в настоящем документе, перед сохранением 400 и/или отправкой. Далее, как указано выше, сформированные файлы данных результатов после сжатия могут содержать надлежащие метаданные и/или другие связанные данные, причем данные результатов могут быть обозначены по-разному по мере протекания через систему, например, переходя от файла F1 к файлу F1C, к файлу F2, к файлу F2C и т.д. по мере того, как данные обрабатываются и перемещаются через конвейер платформы, например, как указано API ассоциаций файлов.[00627] Likewise, the system 300 may continuously receive the results data and store the data 200/400, for example, in the first and second databases before further processing and transmission, such as transmission back to the original requester 100 or a designated party. In certain cases, result data may be compressed, as described herein, before being stored 400 and/or sent. Further, as stated above, the generated results data files after compression may contain appropriate metadata and/or other associated data, and the results data may be labeled differently as it flows through the system, for example, going from an F1 file to an F1C file to a F2, to file F2C, etc. as data is processed and moved through the platform's pipeline, for example as specified by the File Associations API.

[00628] Соответственно, благодаря патентованным специализированным API, которые описаны в настоящем руководстве, система может иметь общий каркас, к которому могут быть присоединены другие услуги, и/или дополнительные ресурсы, например, экземпляры, могут быть приведены в действие, чтобы обеспечить беспрепятственное и эффективную выполнение операций конвейера. Аналогичным образом при необходимости сжатые и сохраненные файлы данных результатов могут быть вызваны, в результате чего диспетчер рабочих потоков раскрутит надлежащие экземпляры вычисления и/или базы данных, чтобы распаковать данные результатов для представления инициатору запроса. Следует отметить, что в различных случаях указанный экземпляр вычисления и сжатия, как и указанный экземпляр вычисления и распаковки, могут быть одним или множеством экземпляров и могут быть реализованы как ЦПУ, FPGA или жестко связанные ЦПУ/FPGA, жестко связанные ЦПУ/ЦПУ или жестко связанные FPGA/FPGA. В определенных случаях один или более из этих и других экземпляров, описанных в настоящем документе, могут быть реализованы в виде квантового процессорного устройства.[00628] Accordingly, thanks to the proprietary, specialized APIs that are described in this manual, the system can have a common framework to which other services can be attached, and/or additional resources, such as instances, can be brought into play to provide seamless and efficient execution of conveyor operations. Likewise, compressed and stored result data files can be invoked as needed, causing the workflow manager to spin up the appropriate compute and/or database instances to decompress the result data for presentation to the requester. It should be noted that in various cases, said compute and compression instance, as well as said compute and decompression instance, may be one or multiple instances, and may be implemented as a CPU, FPGA, or hard-coupled CPU/FPGA, hard-coupled CPU/CPU, or hard-coupled FPGA/FPGA. In certain cases, one or more of these and other instances described herein may be implemented as a quantum processing device.

[00629] Соответственно, с учетом описанного в настоящем документе в соответствии с одним аспектом предложено устройство для осуществления одной или множества функций при выполнении операций геномного анализа последовательности. Например, после того, как данные приняты, например, удаленным пользователем 100, и/или сохранены 400 в облачной системе, входные данным могут быть доступны для WMS и могут быть приготовлены для дальнейшей обработки, например, для вторичного анализа, результаты которой могут быть затем переданы обратно локальному пользователю 100, например, после сжатия, сохранены 400 и/или подвергнуты дополнительной обработке, например, третичной обработке, с помощью системного сервера 300.[00629] Accordingly, in view of what is described herein, in accordance with one aspect, an apparatus is provided for performing one or a plurality of functions in performing genomic sequence analysis operations. For example, after data has been received, for example, by a remote user 100, and/or stored 400 in a cloud system, the input data may be made available to the WMS and may be prepared for further processing, such as secondary analysis, the results of which may then be transmitted back to the local user 100, for example after compression, stored 400 and/or subjected to additional processing, such as tertiary processing, by the system server 300.

[00630] В определенных случаях этапы вторичной обработки, описанные в настоящем документе, к конкретных реализациях могут быть выполнены локальным вычислительным ресурсом 100 и могут быть реализованы программным и/или аппаратным обеспечением, например, дополнительным внешним вычислительным ресурсом 200, где вычислительный ресурс 200 содержит ядро ЦПУ, например от примерно 4 до примерно 14 примерно 24 или более ядер ЦПУ, и может дополнительно содержать одну или более матриц FPGA. Локальный дополнительный внешний ресурс 100 может быть выполнен с возможностью доступа к большому блоку 200 хранения, например, 120 ГБ памяти ОЗУ, причем доступ может быть прямым, например, посредством прямого соединения между ними, или опосредованным, например, путем соединения с возможностью обмена данными между ними по локальной облачной сети 30.[00630] In certain cases, the secondary processing steps described herein for specific implementations may be performed by the local computing resource 100 and may be implemented by software and/or hardware, such as an additional external computing resource 200, where the computing resource 200 includes a core A CPU, such as from about 4 to about 14, has about 24 or more CPU cores, and may further comprise one or more FPGAs. The local additional external resource 100 may be configured to access a large storage unit 200, such as 120 GB of RAM, which access may be direct, such as through a direct connection between them, or indirect, such as through a communication-capable connection between them via local cloud network 30.

[00631] А именно, в локальной системе данные могут передаваться в память 200 или из нее посредством соответствующим образом сконфигурированных SSD-накопителей, которые выполнены с возможностью записи данных заданий на обработку, например, задач, связанных с геномикой, подлежащих обработке, и чтения обработанных данных результатов из памяти 200. В различных вариантах реализации локальный вычислительный ресурс 100 может быть соединен с возможностью обмена данными с секвенатором 110, откуда может быть получен файл BCL и/или FASTQ, например, из секвенатора, и записан в SSD-накопители напрямую, например, посредством соответствующим образом сконфигурированного межсоединения. После этого локальный вычислительный ресурс 100 может выполнить одну или более операций вторичной обработки на данных. Например, в одном варианте реализации локальный вычислительный ресурс представляет собой сервер LINUX®, имеющий 24 ЦПУ, которые могут быть связаны с соответствующим образом сконфигурированной матрицей FPGA, выполненной с возможностью выполнения одной или более операций вторичной обработки, описанных в настоящем документе.[00631] Namely, in a local system, data may be transferred to or from memory 200 via suitably configured SSD drives that are configured to write processing task data, such as genomics-related tasks to be processed, and read processed ones. results data from memory 200. In various implementations, local computing resource 100 may be communicatively coupled to sequencer 110, from which a BCL and/or FASTQ file may be retrieved, e.g., from the sequencer, and written to SSD drives directly, e.g. , through a suitably configured interconnect. Local computing resource 100 may then perform one or more secondary processing operations on the data. For example, in one embodiment, the local computing resource is a LINUX® server having 24 CPUs that can be coupled to a suitably configured FPGA configured to perform one or more of the secondary processing operations described herein.

[00632] Следовательно, в различных случаях локальное вычислительное устройство 100 может быть вычислительным решением в виде «автоматизированного рабочего места», имеющего набор BioIT-микросхем, который выполнен с возможностью осуществления одной или более из вторичной и/или третичной обработки данных генетики. Например, как описано в настоящем документе, вычислительный ресурс 100 может быть связана с платой PCIe, которая вставлена в вычислительное устройство, чтобы тем самым быть связанной с одним или более внутренних ядер ЦПУ, ГПУ, КПУ и/или связанными памятями. В частности, компоненты вычислительного устройства 100, содержащие процессорные устройства, связанные памяти и/или связанные платы PCIe с имеющимися там один или более наборами микросхем FPGA/ASIC, могут поддерживать обмен данными друг с другом, причем все они могут быть предусмотрены внутри корпуса, например, в виде коробочной версии, которая типична в данной области техники. Более конкретно, коробочная версия может быть выполнена с возможностью использования для автоматизированного рабочего места или, в различных случаях, она может быть выполнена с возможностью использования в удаленно доступной серверной стойке. В других вариантах реализации наборы микросхем ЦПУ/FPGA/памяти и/или связанные платы межсоединения ExpressCard могут быть связаны внутри устройства секвенирования нового поколения с образованием там одного блока.[00632] Therefore, in various cases, local computing device 100 may be a "workstation" computing solution having a BioIT chipset that is configured to perform one or more of secondary and/or tertiary processing of genetic data. For example, as described herein, computing resource 100 may be associated with a PCIe card that is inserted into the computing device to thereby be associated with one or more internal CPU cores, GPUs, CPUs, and/or associated memories. In particular, components of the computing device 100 comprising processing devices, associated memories, and/or associated PCIe cards with one or more FPGA/ASIC chipsets therein may communicate with each other, all of which may be provided within a package, for example , in the form of a boxed version, which is typical in the art. More specifically, the boxed version may be configured for use in a workstation or, in various cases, it may be configured for use in a remotely accessible server rack. In other embodiments, CPU/FPGA/memory chipsets and/or associated ExpressCard interconnect cards may be interconnected within a next-generation sequencing device to form a single unit therein.

[00633] Соответственно, в одном конкретном случае настольная коробочная версия может содержать множество ЦПУ/ГПУ/КПУ, связанных с одной или более матриц FPGA, например 4 ЦПУ/ГПУ или 8, или 12, 16, 20, 22, 24 ЦПУ или более, которые могут быть связаны с 1 или 2, или 3, или более матриц FPGA, например, в одном корпусе. А именно, в одном конкретном случае предложена коробочная версия вычислительного ресурса, которая содержит 24 ядра ЦПУ, выполненную с возможностью изменения конфигурации матрицы FPGA, базу данных, например, 128×8 ОЗУ, один или более SSD, например, когда матрица FPGA выполнена с возможностью по меньшей мере частичного изменения конфигурации между операциями, например, между выполнением картирования и выравнивания. Следовательно, в таком случае файлы BCL и/или FASTQ, формируемые устройством 110 секвенирования, могут быть считаны в ЦПУ и/или переданы в матрицу FPGA для обработки, а данные ее результата могут быть возвращены на связанные ЦПУ через SSD-накопители. Соответственно, в данном варианте реализации локальная вычислительная система 100 может быть выполнена с возможностью сброса различных вычислительноемких функций на связанную матрицу FPGA, тем самым улучшая скорость, точность и эффективность биоинформационной обработки. Однако, хотя решение 100 в виде коробочной версии полезно, например, в локальном оборудовании, оно может не подойти для доступа множеством пользователей, которые могут находиться удаленно от коробочной версии.[00633] Accordingly, in one particular case, a desktop boxed version may contain multiple CPUs/GPUs/GPUs associated with one or more FPGA arrays, such as 4 CPUs/GPUs or 8, or 12, 16, 20, 22, 24 CPUs or more , which can be connected to 1 or 2 or 3 or more FPGAs, for example, in one package. Namely, in one specific case, a boxed version of a computing resource is proposed that contains 24 CPU cores, configured to change the configuration of the FPGA matrix, a database, for example, 128x8 RAM, one or more SSDs, for example, when the FPGA matrix is configured to at least partially changing the configuration between operations, for example, between performing mapping and alignment. Therefore, in such a case, the BCL and/or FASTQ files generated by the sequencing device 110 can be read into the CPU and/or transferred to the FPGA for processing, and its result data can be returned to the associated CPUs via SSD drives. Accordingly, in this embodiment, the local computing system 100 may be configured to offload various computationally intensive functions to the associated FPGA, thereby improving the speed, accuracy, and efficiency of bioinformatics processing. However, while the boxed solution 100 is useful, for example, on local equipment, it may not be suitable for access by multiple users who may be located remotely from the boxed version.

[00634] В частности, в различных случаях может быть предусмотрен облачный сервер 50, например, когда сервер 300 может быть доступен удаленно. Соответственно, в конкретных случаях могут быть предусмотрены одна или более интегральных схем (ЦПУ, FPGA, КПУ), описанных в настоящем документе, которые могут быть выполнены с возможностью доступа к ним посредством интерфейса на основе облака 50. Следовательно, в конкретных случаях может быть предусмотрена коробочная версия вычислительного ресурса в виде коробочной версии автоматизированного рабочего места, как описано выше, причем конфигурация коробочная версия может быть выполнена с возможностью переноса на облако и удаленного доступа к ней. Однако такой конфигурации может быть недостаточно для того, чтобы справляться с большим объемом трафика от удаленных пользователей. Соответственно, в других случаях одна или более интегральных схем, описанных в настоящем документе, могут быть выполнены в виде сервера на основе решения 300, которое может быть сконфигурировано как часть серверной стойки, например, когда доступная на сервере система выполнена с возможностью удаленного доступа к ней, например посредством облака 50.[00634] In particular, a cloud server 50 may be provided in various cases, such as when the server 300 can be accessed remotely. Accordingly, in specific cases, one or more integrated circuits (CPU, FPGA, CPU) described herein may be provided that can be accessed via a cloud-based interface 50. Therefore, in specific cases, it may be provided a boxed version of a computing resource in the form of a boxed version of an automated workstation, as described above, and the configuration of the boxed version can be made with the ability to transfer to the cloud and remote access to it. However, this configuration may not be sufficient to handle large volumes of traffic from remote users. Accordingly, in other cases, one or more integrated circuits described herein may be implemented as a server based solution 300, which may be configured as part of a server rack, for example, when a system accessible on the server is configured to be remotely accessible , for example via cloud 50.

[00635] Например, в одном варианте реализации может быть предусмотрен вычислительный ресурс, или локальный сервер 100, имеющий одно или более, например, множество, ядер ЦПУ, и/или ГПУ, и/или КПУ и связанные памяти вместе с одной или более FPGA/ASIC, описанных в настоящем изобретении. В частности, как указано выше, в одной реализации может быть предусмотрена коробочная версия, которая включает в себя от 18 до 20, до 24 или более ядер ЦПУ/ГПУ, причем коробочная версия имеет SSD, ОЗУ 128×8, и одну или более BioIT-схем FPGA/ASIC, а также включает в себя соответствующим образом сконфигурированный модуль связи, имеющий передатчики, приемники, антенны, а также возможности для обмена данными по WIFI, Bluetooth и/или сотовой связи, которые выполнены с возможностью обеспечения удаленного доступа к коробочной версии. В данной реализации, например, когда предусмотрена одна FPGA, FPGA могут быть выполнены с возможностью изменения конфигурации, например, частичного изменения конфигурации, между одним или множеством различных этапов конвейера геномного анализа.[00635] For example, in one embodiment, there may be a computing resource, or local server 100, having one or more, for example, multiple, CPU and/or GPU and/or GPU cores and associated memories along with one or more FPGAs /ASICs described in the present invention. In particular, as stated above, one implementation may include a boxed version that includes from 18 to 20 to 24 or more CPU/GPU cores, the boxed version having an SSD, 128x8 RAM, and one or more BioIT - FPGA/ASIC circuits, and also includes a suitably configured communication module having transmitters, receivers, antennas, as well as capabilities for data exchange via WIFI, Bluetooth and/or cellular communications, which are configured to provide remote access to the out-of-the-box version . In this implementation, for example, when a single FPGA is provided, the FPGAs may be configured to be reconfigurable, eg, partially reconfigured, between one or a plurality of different stages of the genomic analysis pipeline.

[00636] Однако, в других случаях предложена серверная система, которая может включать в себя от около 20 до 24, до 30, до 34, до 36 или более ядер ЦПУ/ГПУ и ОЗУ объемом около 972 ГБ или более, которая может быть связана с одной или более, например, около двух, или около четырех, или около шести, или около восьми или более FPGA, которые могут быть выполнены с возможностью конфигурирования, как описано в настоящем документе. Например, в одной реализации одна или более FPGA могут быть выполнены с возможностью изменения конфигурации, например, частичного изменения конфигурации, между одним или множеством различных этапов конвейера геномного анализа. Однако в различных других реализациях может быть предусмотрен набор специализированных матриц FPGA, например, каждая из которых специально предназначена для выполнения определенной BioIT-операции, такой как картирование, выравнивание, определение вариантов и т.д., тем самым избавляя от этапа изменения конфигурации.[00636] However, in other cases, a server system is provided that may include from about 20 to 24, to 30, to 34, to 36 or more CPU/GPU cores and about 972 GB or more of RAM that may be associated with one or more, such as about two, or about four, or about six, or about eight or more FPGAs, which may be configured as described herein. For example, in one implementation, one or more FPGAs may be configured to change configuration, such as partial reconfiguration, between one or more different stages of the genomic analysis pipeline. However, various other implementations may provide a set of specialized FPGAs, for example, each specifically designed to perform a specific BioIT operation such as mapping, alignment, variant detection, etc., thereby eliminating the reconfiguration step.

[00637] Соответственно, в различных случаях могут быть предусмотрены одна или более матриц FPGA, например, когда матрицы FPGA выполнены с возможностью изменения конфигурации между различными операциями конвейера. Однако в других случаях одна или более матриц FPGA могут быть выполнены с возможностью специализации на выполнении одной или более функций без необходимости частичного или полного конфигурирования их. Например, матрицы FPGA, предложенные в настоящем документе, могут быть выполнены с возможностью специализации на выполнении одной или более вычислительноемких операций в BioIT-конвейере, например, когда предусмотрена одна FPGA, которая специально предназначена для выполнения операции картирования, и предусмотрена другая FPGA, которая выполнена с возможностью выполнения операции выравнивания, хотя, в некоторых случаях, может быть предусмотрена одна FPGA, которая выполнена с возможностью частичного изменения конфигурации между выполнением обоих операций, картирования и выравнивания.[00637] Accordingly, one or more FPGA arrays may be provided in various cases, for example, when the FPGA arrays are configured to change configuration between different pipeline operations. However, in other cases, one or more FPGAs may be configured to specialize in performing one or more functions without the need to partially or completely configure them. For example, the FPGA arrays proposed herein may be configured to specialize in performing one or more computationally intensive operations in a BioIT pipeline, such as where one FPGA is provided that is specifically designed to perform a mapping operation, and another FPGA is provided that performs with the ability to perform the alignment operation, although, in some cases, a single FPGA may be provided that is configured to be partially reconfigurable between performing both mapping and alignment operations.

[00638] Кроме того, в число других операций в конвейере, которые тоже могут осуществляться выполненными с возможностью измерения конфигурации или специализированными FPGA, могут входить выполнение операции преобразования/перестановки BCL, операции Смита-Ватермана, операции HMM, операции локального повторного выравнивания и/или различных других операций определения вариантов. Аналогичным образом различные операции конвейера могут быть выполнены с возможностью выполнения одной или более из связанных ЦПУ/ГПУ/КПУ системы. Такие операции могут быть одной или более вычислительноемкими операциями конвейера, например, для выполнения сортировки, удаления дубликатов и других операций определения вариантов. Следовательно, можно выполнить всеобъемлющую систему с возможностью осуществления комбинации операций, частично с помощью ЦПУ/ГПУ/КПУ, и частично с помощью аппаратного обеспечения, такого как FPGA/ASIC системы.[00638] Additionally, other operations in the pipeline that may also be performed by configurable or dedicated FPGAs may include performing a BCL transform/permutation operation, a Smith-Waterman operation, an HMM operation, a local realignment operation, and/or various other variant determination operations. Likewise, various pipeline operations can be configured to be executed by one or more of the system's associated CPU/GPU/CPU. Such operations may be one or more computationally intensive pipeline operations, for example, to perform sorting, deduplication, and other variant determination operations. Therefore, it is possible to implement a comprehensive system with the ability to perform a combination of operations, partly using the CPU/GPU/CPU, and partly using hardware such as FPGA/ASIC systems.

[00639] Соответственно, как показано на ФИГ. 40B, в различных реализациях облачной системы 50 она может включать в себя множество вычислительных ресурсов, в том числе множество экземпляров и/или слоев экземпляров, например, когда экземпляры и/или слои экземпляров выполнены с возможностью осуществления одной или более операций BioIT-конвейера, описанных в настоящем документе. Например, могут быть предусмотрены различные экземпляры ЦПУ/ГПУ/КПУ и/или жестко смонтированных интегральных схем для выполнения специализированных функций конвейера анализа генома, предложенные в настоящем документе. Например, могут быть предусмотрены различные экземпляры FPGA для выполнения специализированных операций геномного анализа, например, экземпляр FPGA для выполнения картирования, другой для выполнения выравнивания, еще один для выполнения локального повторного выравнивания и/или других операций Смита-Ватермана, следующий для выполнения операций HMM и т.п.[00639] Accordingly, as shown in FIG. 40B, in various implementations of cloud system 50, it may include a plurality of computing resources, including multiple instances and/or layers of instances, for example, where the instances and/or layers of instances are configured to perform one or more of the BioIT pipeline operations described in this document. For example, various instances of CPU/GPU/CPU and/or hard-wired integrated circuits may be provided to perform the specialized genome analysis pipeline functions proposed herein. For example, there may be different FPGA instances for performing specialized genomic analysis operations, such as an FPGA instance for performing mapping, another for performing alignment, another for performing local realignment and/or other Smith-Waterman operations, another for performing HMM operations, and etc.

[00640] Аналогичным образом могут быть предусмотрены различные экземпляры ЦПУ/ГПУ/КПУ для выполнения специализированных операций геномного анализа, например, экземпляры ЦПУ/ГПУ/КПУ для выполнения обработки сигнала, сортировки, удаления дубликатов, сжатия, различных операций определения вариантов и т.п. В таких случаях могут быть предусмотрены связанные память или памяти, например, между различными этапами вычисления конвейера, для приема данных результатов по мере их вычисления, компиляции и обработки по всей системе, например, между различными экземплярами ЦПУ и/или FPGA и/или их слоями. Кроме того, необходимо отметить, что размер различных экземпляров ЦПУ и/или FPGA может меняться в зависимости от вычислительных потребностей облачной системы и может измениться в диапазоне от малого до среднего, крупного и очень крупного, как и может меняться количество экземпляров ЦПУ/ГПУ/КПУ и FPGA/ASIC.[00640] Likewise, various CPU/GPU/CPU instances may be provided to perform specialized genomic analysis operations, such as CPU/GPU/CPU instances to perform signal processing, sorting, deduplication, compression, various variant detection operations, and the like. . In such cases, associated memory or memories may be provided, for example between different stages of a pipeline computation, to receive result data as they are computed, compiled and processed throughout the system, for example between different CPU and/or FPGA instances and/or layers thereof . In addition, it should be noted that the size of the various CPU and/or FPGA instances may vary depending on the computing needs of the cloud system and may vary from small to medium, large and very large, as well as the number of CPU/GPU/CPU instances may vary and FPGA/ASIC.

[00641] Кроме того, как показано на ФИГ. 40B, система может также содержать диспетчер рабочих потоков, который выполнен с возможностью планирования и направления движения данных по всей системе и от одного экземпляра к другому и/или из одной памяти в другую. В некоторых случаях память может представлять собой множество памятей, которые являются специализированными памятями, специфичными для экземпляров, а в других случаях память может быть одной или более памятями, выполненными с возможностью быть эластичными и потому способными переключаться с одного экземпляра на другой, как переключаемое эластичное блочное устройство хранения. В третьих случаях память может неспецифичной для экземпляров и, следовательно, выполненной без возможности соединения с возможностью обмена данными с множеством экземпляров, например, для эластичного хранения файлов.[00641] Additionally, as shown in FIG. 40B, the system may also include a workflow manager that is configured to schedule and direct the movement of data throughout the system and from one instance to another and/or from one memory to another. In some cases, the memory may be a plurality of memories that are instance-specific memories, and in other cases, the memory may be one or more memories configured to be elastic and therefore capable of switching from one instance to another, such as a switchable elastic block storage device. In still other cases, the memory may be non-instance specific and therefore non-connectivity capable of communicating with multiple instances, for example for elastic file storage.

[00642] Кроме того, диспетчер рабочих потоков сам может быть специализированным экземпляром, например, ядром ЦПУ/ГПУ/КПУ, которое специально предназначено для и/или выполнено с возможностью определения, какие задания необходимо выполнять, и когда и какие ресурсы будут использованы в при выполнении этих заданий, а также постановки в очередь заданий и направления их от ресурса к ресурсу, например, от экземпляра к экземпляру. Диспетчер рабочих потоков может содержать или может быть иным образом выполнен как оценщик загрузки, и/или образовать эластичный узел управления, представляющий собой специально предназначенный экземпляр, который может выполняться процессором, например ядром ЦПУ/ГПУ/КПУ. В различных случаях диспетчер рабочих потоков может иметь базу данных, соединенную с ним, которая может быть выполнена с возможностью управления всеми заданиями, которые должны быть обработаны, обрабатываются или были обработаны. Следовательно, диспетчере WMS может быть выполнен с возможностью обнаружения и управления потоками данных по всей системе, определения того, как выделять системные ресурсы, и когда приводить в действие больше ресурсов.[00642] In addition, the worker thread manager itself may be a specialized instance, for example a CPU/GPU/CPU core, that is specifically designed for and/or configured to determine which jobs need to be executed and when and what resources will be used in the process. execution of these jobs, as well as queuing jobs and routing them from resource to resource, for example, from instance to instance. The worker thread manager may comprise or may otherwise be implemented as a load estimator, and/or form an elastic control node, which is a dedicated instance that can be executed by a processor, such as a CPU/GPU/CPU core. In various cases, the workflow manager may have a database connected to it, which may be configured to manage all of the jobs that are to be processed, are being processed, or have been processed. Therefore, the WMS manager can be configured to detect and manage data flows throughout the system, determine how to allocate system resources, and when to deploy more resources.

[00643] Как указано выше, в определенных случаях может быть предусмотрено решение для автоматизированного рабочего места и/или сервера одновременно, где вычислительное устройство содержит множество серверов из X ядер ЦПУ, имеющих размер Y, которые выполнены с возможностью подачи данных в одну или более FPGA размера Z, где X, Y и Z являются числами, которые могут меняться в зависимости от потребностей обработки системы, но их следует выбирать и/или иным образом конфигурировать, чтобы они были оптимальными, например 10, 14, 18, 20, 24, 30 и т.д. Например, типичные конфигурации системы оптимизированы для выполнения BioIT-операций системы, описанной в настоящем документе. А именно, определенные конфигурации системы оптимизированы таким образом, чтобы максимально увеличивать поток данных через различные экземпляры ЦПУ/ГПУ/КПУ в различные интегральные схемы, такие как FPGA, системы, причем размер ЦПУ и/или FPGA может меняться в зависимости друг от друга, исходя из потребностей обработки системы. Например, одно или боле из ЦПУ и/или FPGA могут иметь размер, который является относительно маленьким, средним, большим, очень большим или сверхбольшим. Точнее говоря, архитектура системы может быть выполнена таким образом, чтобы аппаратное обеспечение ЦПУ/FPGA имело такой размер и было выполнено таким образом, чтобы оно работало оптимально эффективным образом для поддержания платформ обоих экземпляров занятыми в течение всей работы, например, когда ЦПУ превосходят численно FPGA в соотношении 4 к 1, 8 к 1, 16 к 1, 32 к 1, 64 к 2 и т.д.[00643] As stated above, in certain cases, a workstation and/or server solution may be provided simultaneously, where the computing device contains a plurality of servers of X CPU cores of size Y, which are configured to feed data to one or more FPGAs size Z, where X, Y and Z are numbers that may vary depending on the processing needs of the system, but should be selected and/or otherwise configured to be optimal, e.g. 10, 14, 18, 20, 24, 30 etc. For example, typical system configurations are optimized to perform the BioIT operations of the system described herein. Namely, certain system configurations are optimized to maximize data flow through various CPU/GPU/CPU instances into various integrated circuits, such as FPGA, systems, where the size of the CPU and/or FPGA may vary depending on each other, based on from the processing needs of the system. For example, one or more of the CPU and/or FPGA may have a size that is relatively small, medium, large, very large, or extra large. More specifically, the system architecture can be designed such that the CPU/FPGA hardware is sized and implemented in such a way that it operates in an optimally efficient manner to keep both instance platforms busy throughout operation, such as when CPUs outnumber FPGAs in a ratio of 4 to 1, 8 to 1, 16 to 1, 32 to 1, 64 to 2, etc.

[00644] Следовательно, хотя в целом хорошо, когда FPGA имеют большие возможности, однако обработка данных с использованием высокопроизводительных FPGA неэффективна, в систему подаются недостаточные для обработки данные. В таком случае может быть реализована одна FPGA или ее часть. В частности, в идеальном варианте система управления рабочими потоками направляет поток данных в определенные ЦПУ и/или FPGA, которые выполнены с возможностью поддержания системы и ее компонентов постоянно занятыми вычислением. Например, в одном примере конфигурации одно или более, например 2, 3 или 4 и более, ядер ЦПУ/ГПУ/КПУ могут быть выполнены с возможностью подачи данных в небольшую, среднюю, большую или очень большую FPGA или ее часть. А именно, в одном варианте реализации может быть предусмотрен определенный экземпляр ЦПУ, например, для выполнения одной или более операций BioIT-обработки, описанных в настоящем документе, например, когда экземпляр ЦПУ доступен из облака и содержит до 4, 8, 16, 24, 30, 36 ядер ЦПУ, причем эти ядра могут или не могут быть выполнены с возможностью функционального соединения с частью одной или более FPGA.[00644] Therefore, while it is generally good for FPGAs to have great capabilities, data processing using high-performance FPGAs is inefficient and the system is fed with insufficient data to process. In such a case, one FPGA or part thereof can be implemented. In particular, ideally, the workflow management system directs data flow to specific CPUs and/or FPGAs that are configured to keep the system and its components constantly busy computing. For example, in one example configuration, one or more, such as 2, 3, or 4 or more, CPU/GPU/CPU cores may be configured to supply data to a small, medium, large, or very large FPGA or portion thereof. Specifically, in one embodiment, a specific CPU instance may be provided, for example, to perform one or more of the BioIT processing operations described herein, for example, where the CPU instance is accessible from the cloud and contains up to 4, 8, 16, 24, 30, 36 CPU cores, which cores may or may not be operably coupled to a portion of one or more FPGAs.

[00645] Например, может быть предусмотрена доступная из облака серверная стойка 300, где сервер содержит экземпляр ядра ЦПУ, имеющий от около 4 ядер ЦПУ до около 16 или около 24 ядер ЦПУ, которые выполнены с возможностью функционального соединения с экземпляром FPGA. Например, может быть предусмотрен экземпляр FPGA, например, когда средний размер FPGA составляет X, а входящие в состав FPGA могут иметь размер около 1/8X, X, 2,5X и до 8X, или даже около 16X или больше. В различных случаях могут быть включены дополнительные ядра ЦПУ/ГПУ/КПУ или FPGA и/или обеспечены в виде объединенного экземпляра, например, когда имеется большое количество данных для обработки, и когда множество ядер ЦПУ выбраны для поддержки постоянной занятости FPGA. Следовательно, соотношение между ЦПУ и FPGA можно подбирать, комбинируя их таким образом, чтобы оптимизировать поток данных, и, таким образом, систему можно выполнить с возможностью масштабирования в сторону увеличения или уменьшения в зависимости от потребностей, например, чтобы минимизировать расходы при оптимальном использовании в зависимости от рабочих потоков.[00645] For example, a cloud-accessible server rack 300 may be provided, where the server contains a CPU core instance having from about 4 CPU cores to about 16 or about 24 CPU cores that are operably coupled to the FPGA instance. For example, an FPGA instance may be provided, such as where the average FPGA size is X, and the included FPGAs may be about 1/8X, X, 2.5X, and up to 8X in size, or even about 16X or larger. In various cases, additional CPU/GPU/CPU cores or FPGAs may be included and/or provided as a consolidated instance, such as when there is a large amount of data to process and when multiple CPU cores are selected to keep the FPGA busy at all times. Therefore, the ratio between CPU and FPGA can be adjusted by combining them in such a way as to optimize data flow, and thus the system can be designed to scale up or down depending on needs, for example, to minimize costs for optimal use in depending on worker threads.

[00646] Однако, когда ЦПУ не создают достаточно работы для поддержания полной занятости и/или полного использования FPGA, конфигурация будет неидеальной. Поэтому в настоящем документе предложена гибкая архитектура из одного или более экземпляров, которые могут быть напрямую связаны вместе, или выполнены с возможностью связывания вместе таким образом, чтобы приспосабливаться для эффективной работы программного/аппаратного обеспечения ЦПУ/FPGA с тем, чтобы ЦПУ/ГПУ/КПУ оптимально снабжали доступные FPGA и/или их часть так, чтобы платформы обоих экземпляров были постоянно заняты. Соответственно, разрешение доступа к такой системе с помощью облака обеспечит, чтобы подаваемые в нее данные помещались в очередь диспетчером рабочих потоков и направлялись в определенные ресурсы ЦПУ/FPGA, которые сконфигурированы и могут принимать и обрабатывать данные оптимально эффективным образом.[00646] However, when the CPUs do not generate enough work to keep the FPGA fully occupied and/or fully utilized, the configuration will not be ideal. Therefore, this document proposes a flexible architecture of one or more instances that can be directly linked together, or configured to be linked together in such a way as to adapt to the efficient operation of CPU/FPGA software/hardware so that the CPU/GPU/CPU optimally supplied the available FPGAs and/or part of them so that the platforms of both instances were constantly occupied. Accordingly, allowing access to such a system via the cloud will ensure that data fed into it is queued by the worker thread manager and routed to specific CPU/FPGA resources that are configured to receive and process the data in an optimally efficient manner.

[00647] Например, в некоторых конфигурациях доступные из облака экземпляры могут содержать ЦПУ/ГПУ/КПУ разных размеров в разных количествах и, кроме того, могут быть доступные из облака экземпляры, которые содержат FPGA (или ASIC) и/или КПУ разных размеров в разных количествах Это даже могут быть экземпляры, имеющие комбинации данных экземпляров. Однако в различных итерациях предусмотренные ЦПУ/ГПУ/КПУ и/или FPGA/КПУ и/или смешанные экземпляры могут иметь слишком много одного экземпляра и/или слишком мало другого экземпляра для эффективной работы представленных платформ конвейерной BioIT-обработки, описанных в настоящем документе. Соответственно, в настоящем документе предложены системы и архитектуры, их гибкие комбинации и/или способы их реализации для эффективного формирования и использования конвейерных платформ геномной и/или биоинформационной обработки, например, сделанные доступными посредством облака 50.[00647] For example, in some configurations, cloud-accessible instances may contain CPUs/GPUs/CPUs of different sizes in different quantities, and in addition there may be cloud-accessible instances that contain FPGAs (or ASICs) and/or CPUs of different sizes in different quantities. It can even be instances having combinations of these instances. However, in various iterations, the provided CPU/GPU/CPU and/or FPGA/CPU and/or mixed instances may have too many of one instance and/or too few of another instance to effectively operate the presented BioIT pipeline platforms described herein. Accordingly, this document proposes systems and architectures, flexible combinations thereof and/or methods for implementing them for efficiently forming and using genomic and/or bioinformatics processing pipeline platforms, such as those made available through the cloud 50.

[00648] В таких системах ЦПУ/ГПУ/КПУ могут быть выбраны в таком количестве и сконфигурированы таким образом, чтобы обрабатывать менее вычислительноемкие операции, а количество и конфигурации FPGA и/или КПУ могут быть адаптированы для решения вычислительноемких задач, например, когда данные беспрепятственно передаются туда и обратно между экземплярами ЦПУ/ГПУ/КПУ и FPGA/КПУ. Кроме того, могут быть предусмотрены одна или более памятей для сортировки данных, например, данных результатов, между всевозможными разными этапами процедур и/или между различными типами экземпляров, чтобы исключить существенные периоды задержки экземпляров. А именно, во время картирования и выравнивания ЦПУ/ГПУ используются очень мало, поскольку вследствие интенсивного характера вычислений эти задачи выполнены с возможностью осуществления аппаратными реализациями. Аналогичным образом во время определения вариантов задачи могут быть разбиты таким образом, чтобы они были примерно одинаково распределены между экземплярами ЦПУ/FPGA в виде их задач, например, когда операции Смита-Ватермана и HMM могут быть выполнены аппаратным обеспечением, а различные другие операции могут быть выполнены программным обеспечением, исполняемым на одном или более экземплярах ЦПУ/ГПУ/КПУ.[00648] In such systems, CPUs/GPUs/CPUs can be selected in such numbers and configured to handle less computationally intensive operations, and the number and configurations of FPGAs and/or CPUs can be tailored to solve computationally intensive tasks, such as when data is unobstructed are transmitted back and forth between CPU/GPU/CPU and FPGA/CPU instances. In addition, one or more memories may be provided for sorting data, eg result data, between various different procedural steps and/or between different types of instances to avoid significant instance latency periods. Namely, very little CPU/GPU usage is used during mapping and alignment because, due to the computationally intensive nature, these tasks are designed to be performed by hardware implementations. Likewise, during case definition, tasks can be broken down so that they are roughly equally distributed among the CPU/FPGA instances as their tasks, such as where Smith-Waterman and HMM operations can be performed by hardware and various other operations can be executed by software executed on one or more instances of the CPU/GPU/CPU.

[00649] Соответственно, параметры архитектуры, указанные в настоящем документе, необязательно ограничены однажды установленной архитектурой, скорее, система выполнена с возможностью обладания более большей гибкостью в организации ее реализаций и опирается на диспетчер рабочих потоков, который определят, какие экземпляры активны, когда, как и как долго, и указывает, какие вычисления на каких экземплярах выполняются. Например, количество ЦПУ и/или FPGA, которые нужно привести в действие и оперативно связать вместе, должны быть выбраны и сконфигурированы таким образом, чтобы активированные ЦПУ и FPGA, а также сопровождающее их программное/аппаратное обеспечение, поддерживались оптимально занятыми. В частности, количество ЦПУ и их функционирование должны быть сконфигурированы для обеспечения постоянной занятости данного количества FPGA или их части, чтобы ЦПУ оптимально и эффективно снабжали FPGA для умелого поддержания работы обоих экземпляров и их компонентов.[00649] Accordingly, the architecture parameters specified herein are not necessarily limited to the architecture once established, but rather the system is designed to have greater flexibility in the organization of its implementations and relies on a workflow manager that will determine which instances are active, when, how and for how long, and specifies which calculations are performed on which instances. For example, the number of CPUs and/or FPGAs that need to be activated and operatively coupled together must be selected and configured such that the activated CPUs and FPGAs, and their accompanying software/hardware, are kept optimally occupied. In particular, the number of CPUs and their operation must be configured to ensure that a given number of FPGAs, or a portion thereof, are always occupied so that the CPUs optimally and efficiently supply the FPGAs to skillfully support the operation of both instances and their components.

[00650] Следовательно, таким образом контроллер управления рабочими потоками системы может быть выполнен с возможностью доступа к рабочему процессу и организации и деления его таким образом, чтобы задачи, которые могут быть более оптимально выполнены с помощью ЦПУ/ГПУ, направлялись на ряд ЦПУ, необходимых для оптимального выполнения этих операций, а те задачи, которые могут быть более оптимально выполнены с помощью FPGA/ASIC/КПУ, направлялись на ряд FPGA, необходимых для оптимального выполнения этих операций. Также может быть включена эластичная и/или эффективная память для эффективной передачи данных результатов этих операций из одного экземпляра в другой. Таким образом, комбинация машин и памятей может быть сконфигурирована и объединена так, чтобы она была оптимально масштабирована с учетом объема работы, который нужно выполнить, а также конфигурации и использования экземпляров для лучшего выполнения работы эффективно и без лишних затрат.[00650] Therefore, in this way, the system's workflow management controller can be configured to access the workflow and organize and divide it so that tasks that can be more optimally performed by the CPU/GPU are directed to the number of CPUs required to perform these operations optimally, and those tasks that could be more optimally performed by an FPGA/ASIC/CPU were routed to a number of FPGAs required to perform those operations optimally. Elastic and/or efficient memory may also be included to efficiently transfer data of the results of these operations from one instance to another. In this way, a combination of machines and memories can be configured and combined so that it is optimally scaled based on the amount of work that needs to be done, as well as the configuration and use of instances to best perform the work efficiently and cost-effectively.

[00651] А именно, облачные архитектуры, описанные в настоящем документе, показывают, что различные известные недостатки предыдущих вариантов архитектуры могут привести к проявлениям неэффективности, которые можно преодолеть за счет гибкого предоставления большему количеству ядер ЦПУ/ГПУ/КПУ доступа к всевозможным разным аппаратным экземплярам, например, FPGA, или их частям, которые организованы более целенаправленно, чтобы быть в состоянии специально выделять надлежащий экземпляр для выполнения предназначенных функций оптимально за счет реализации в таком формате. Например, система может быть выполнена с возможностью обеспечения удаленного доступа к более значительной части имеющихся экземпляров ЦПУ/ГПУ, чтобы они были постоянно заняты, создавая данные результатов, которые могут быть оптимально поданы в имеющиеся экземпляры FPGA/КПУ для поддержания постоянной занятости выбранных экземпляров FPGA. Следовательно, желательно обеспечить структурированную архитектуру, которая максимально эффективна и постоянно занята. Необходимо отметить, что конфигурации, где слишком мало ЦПУ снабжают слишком много FPGA, так что одна или более FPGA используются не в полной мере, являются неэффективными и их следует избегать.[00651] Namely, the cloud architectures described herein demonstrate that various known shortcomings of previous architectures can lead to inefficiencies that can be overcome by flexibly allowing more CPU/GPU/CPU cores to access all sorts of different hardware instances , for example, FPGAs, or parts thereof, that are organized more purposefully to be able to specifically allocate the proper instance to perform the intended functions optimally by being implemented in such a format. For example, the system may be configured to provide remote access to a larger portion of the available CPU/GPU instances so that they are kept busy, producing result data that can be optimally fed to the available FPGA/GPU instances to keep selected FPGA instances always busy. Therefore, it is desirable to provide a structured architecture that is as efficient as possible and is always occupied. It should be noted that configurations where too few CPUs supply too many FPGAs such that one or more FPGAs are underutilized are inefficient and should be avoided.

[00652] В одной реализации, как показано на ФИГ. 40B, архитектура может быть выполнена с возможностью виртуального включения нескольких различных слоев или уровней, таких как первый уровень, имеющий первое количество X ядер ЦПУ, например, от 4 до около 30 ядер ЦПУ, и второй уровень, имеющий от 1 до 12 и более экземпляров матриц FPGA, размер которых может меняться в диапазоне от малого до среднего или большого и т.д. Можно включить третий уровень ядер ЦПУ и/или четвертый уровень дополнительных матриц FPGA и т.д. Таким образом, на облачном сервере 300 имеется множество доступных экземпляров, например, экземпляров, которые просто содержат ЦПУ или ГПУ, и/или экземпляров, которые содержат матрицы FPGA, или их комбинации, например, на одном или более уровнях, описанных в настоящем документе. Соответственно, подобным образом архитектура может быть гибко или эластично организованной, чтобы наиболее интенсивные специальные вычислительные функции выполнялись аппаратными экземплярами или КПУ, а те функции, которые могут быть выполнены с помощью ЦПУ, направлялись на соответствующий уровень в целях общей обработки, причем при необходимости количество экземпляров ЦПУ/FPGA может быть увеличено или уменьшено системой по мере надобности.[00652] In one implementation, as shown in FIG. 40B, the architecture may be configured to virtually include several different layers or layers, such as a first layer having a first number of X CPU cores, such as 4 to about 30 CPU cores, and a second layer having 1 to 12 or more instances FPGA matrices, the size of which can vary from small to medium or large, etc. You can enable a third layer of CPU cores and/or a fourth layer of additional FPGAs, etc. Thus, on the cloud server 300 there are multiple instances available, for example, instances that simply contain a CPU or GPU, and/or instances that contain FPGAs, or combinations thereof, for example, at one or more of the layers described herein. Accordingly, in a similar way, the architecture can be flexibly or elastically organized so that the most intensive special computing functions are performed by hardware instances or CPUs, and those functions that can be performed by CPUs are sent to the appropriate level for general processing purposes, with a number of instances as necessary The CPU/FPGA can be scaled up or down by the system as needed.

[00653] Например, размер архитектуры может быть эластичным, чтобы минимизировать издержки системы при максимально оптимальном использовании системы. А именно, архитектура может быть выполнена с возможностью максимального повышения эффективности и сокращения задержки путем сочетания различных экземпляров на различных виртуальных уровнях. В частности, множество, например, значительная часть и/или все, экземпляров ЦПУ/ГПУ уровня 1 могут быть выполнены с возможностью снабжения различных экземпляров FPGA уровня 2, которые специально выполнены с возможностью осуществления специальных функций, таких как FPGA для картирования и FPGA для выравнивания. На другом уровне могут быть предусмотрены одно или более дополнительное (или столько же, сколько на уровне 1) ЦПУ, например, для выполнения операций сортировки и/или удаления дубликатов и/или различных операций определения вариантов. Более того, один или более дополнительных слоев FPGA могут быть выполнены с возможностью осуществления операций определения вариантов Нидлмана-Вунша, Смита-Ватермана и HMM и т.п. Следовательно, первый уровень ЦПУ может быть задействован для формирования начального уровня геномного анализа, например, выполнения этапов общей обработки, включая организацию очереди и подготовку данных для дальнейшего конвейерного анализа, причем данные после обработки одним или множеством ЦПУ, могут быть поданы на один или более дальнейших уровней специализированных FPGA, например, где экземпляр FPGA выполнен с возможностью осуществления вычислительноемких функций.[00653] For example, the size of the architecture can be elastic to minimize system overhead while maximizing optimal use of the system. Namely, the architecture can be designed to maximize efficiency and reduce latency by combining different instances at different virtual layers. In particular, a plurality, for example a significant portion and/or all, of layer 1 CPU/GPU instances may be configured to supply different layer 2 FPGA instances that are specifically configured to implement special functions, such as a mapping FPGA and an alignment FPGA . At another level, one or more additional (or as many as at level 1) CPUs may be provided, for example, to perform sorting and/or duplicate removal operations and/or various variant determination operations. Moreover, one or more additional FPGA layers may be configured to perform Needleman-Wunsch, Smith-Waterman, and HMM variant determination operations, and the like. Therefore, the first level of CPU can be used to form the initial level of genomic analysis, for example, performing general processing steps, including queuing and preparing data for further pipeline analysis, and the data, after processing by one or multiple CPUs, can be fed to one or more further layers of specialized FPGAs, for example, where the FPGA instance is configured to perform computationally intensive functions.

[00654] Таким образом, в конкретной реализации экземпляры ЦПУ/ГПУ в конвейере направляют свои данные, после их подготовки, в один или два экземпляров FPGA уровня 2, предназначенных для картирования и выравнивания. По выполнении картирования результирующие данные могут быть сохранены в памяти и/или поданы затем в экземпляр выравнивания, где может быть выполнено выравнивание, например, по меньшей мере одним экземпляром FPGA уровня 2, специально предназначенным для выравнивания. Аналогичным образом обработанные картированные и выровненные данные могут быть затем сохранены в память и/или направлены в экземпляр ЦПУ уровня 3 для дальнейшей обработки, который может быть тем же самым, что и на уровне 1, или другим экземпляром, например, для выполнения менее ресурсоемких функций обработки геномного анализа, например, для выполнения функции сортировки. Кроме того, после того, как ЦПУ уровня 3 выполнили свою обработку, полученные в результате данные могут быть направлены либо обратно в экземпляры FPGA уровня 2, либо в экземпляры FPGA уровня 4, например, для ресурсоемких функций дальнейшей геномной обработки, таких как функции обработки Нидлмана-Вунша (NW), Смита-Ватермана (SW), например, в экземпляре FPGA, специально предназначенном для NW или SW. Аналогичным образом после того, как анализ SW выполнен, например, с помощью FPGA, специально предназначенной для SW, обработанные данные могут быть отправлены в одну или более связанных памятей и/или далее по конвейеру обработки, например, в экземпляр ЦПУ и/или FPGA уровня 4 или 5, или обратно на уровень 1 или 3, например, для выполнения анализа HMM и/или определения вариантов, например, в специализированной FPGA и/или ядре обработки ЦПУ дальнейшего уровня.[00654] Thus, in a particular implementation, the CPU/GPU instances in the pipeline send their data, once prepared, to one or two Layer 2 FPGA instances for mapping and alignment. Once the mapping is complete, the resulting data may be stored in memory and/or then provided to an alignment instance, where alignment can be performed, for example, by at least one layer 2 FPGA instance dedicated to alignment. Similarly processed mapped and aligned data can then be stored in memory and/or sent to a Level 3 CPU instance for further processing, which may be the same as Level 1 or a different instance, for example to perform less resource-intensive functions processing genomic analysis, for example, to perform a sorting function. Additionally, after the Tier 3 CPUs have completed their processing, the resulting data can be routed either back to the Tier 2 FPGA instances or to the Tier 4 FPGA instances, for example, for resource-intensive further genomic processing functions such as Needleman processing functions -Wunsch (NW), Smith-Waterman (SW), for example, in an FPGA instance specifically designed for NW or SW. Likewise, after SW analysis is performed, for example, by an FPGA dedicated to the SW, the processed data can be sent to one or more associated memories and/or further down the processing pipeline, for example, to an instance of the CPU and/or FPGA layer 4 or 5, or back to level 1 or 3, for example to perform HMM analysis and/or variant determination, for example in a dedicated FPGA and/or a further level CPU processing core.

[00655] Подобным образом можно преодолеть проблемы задержки и эффективности за счет сочетания всевозможных разных экземпляров на одном или более разных уровнях, чтобы обеспечить конвейерную платформу для геномной обработки. Такая конфигурация может подразумевать больше, чем масштабирование и/или комбинирование экземпляров, экземпляры могут быть выполнены с возможностью специализации на осуществлении специальных функций. В таком случае экземпляр FPGA для картирования выполняет только картирование, и, аналогично экземпляр FPGA для выравнивания выполняет только выравнивание и т.д., вместо того, чтобы один экземпляр выполнял обработку в конвейере от начала до конца. Хотя и в других конфигурациях одна или более FPGA могут быть по меньшей мере частично переконфигурированы, например между выполнением задач конвейера. Например, в определенных вариантах реализации, поскольку подлежащий выполнению в них геномный анализ является многоэтапным процессом, код FPGA может быть выполнен с возможностью изменения посреди процесса обработки, например, когда FPGA завершает операцию картирования, она может быть переконфигурирована для выполнения одного или более из выравнивания, определения вариантов, Смита-Ватермана, HMM и т.п.[00655] Likewise, latency and efficiency issues can be overcome by combining all kinds of different instances at one or more different layers to provide a pipeline platform for genomic processing. Such a configuration may involve more than scaling and/or combining instances; instances may be configured to specialize in performing specific functions. In such a case, the mapping FPGA instance only performs mapping, and similarly, the alignment FPGA instance only performs alignment, etc., instead of one instance performing the processing in the pipeline from start to finish. Although in other configurations, one or more FPGAs can be at least partially reconfigured, for example between executing pipeline tasks. For example, in certain embodiments, because the genomic analysis to be performed therein is a multi-step process, the FPGA code may be configured to change mid-processing, e.g., when the FPGA completes a mapping operation, it may be reconfigured to perform one or more of the alignments, variant definitions, Smith-Waterman, HMM, etc.

[00656] Следовательно, диспетчер конвейера, например, система управления рабочими потоками, может управлять очередью запросов на геномную обработку, создаваемых экземплярами ЦПУ уровня 1, чтобы разбивать их на дискретные задания, агрегировать и направлять в соответствующий специфичны для задания ЦПУ, а затем в специфичные для задания экземпляры FPGA для дальнейшей обработки, например, для картирования и/или выравнивания, например, на уровне 2, причем обработанные картированные и выровненные данные могут быть отправлены назад или вперед на следующий уровень обработки ЦПУ/FPGA данных результатов, например, для выполнения различных этапов в модуле определения вариантов.[00656] Consequently, a pipeline manager, such as a workflow management system, can manage a queue of genomic processing requests generated by tier 1 CPU instances to break them down into discrete jobs, aggregate them, and route them to the appropriate job-specific CPU, and then to specific to specify FPGA instances for further processing, e.g., mapping and/or alignment, e.g., at layer 2, wherein the processed mapped and aligned data can be sent back or forth to the next CPU/FPGA result data processing layer, e.g., to perform various steps in the option definition module.

[00657] Например, функция определения вариантов может быть разбита на множество операций, которые могут быть выполнены в программном обеспечении, затем направлены на обработку Смита-Ватермана и/или HMM в один или более аппаратных экземпляров FPGA, а затем могут быть отправлены в ЦПУ для продолжения операций определения вариантов, например, когда вся платформа эластично и/или эффективно подобрана по размеру и реализована для сведения к минимуму стоимости дорогих экземпляров FPGA при одновременном максимальном повышении использования, максимальном снижении задержки и, следовательно, оптимизации операций. Соответственно, таким образом требуется меньше аппаратных экземпляров с учетом их абсолютны возможностей обработки и специфичности аппаратной реализации, и поэтому количество FPGA относительно ЦПУ может быть сведено к минимуму, а их использование, например, FPGA, может быть максимально повышено, и поэтому система может быть оптимизирована, чтобы поддерживать постоянную занятость всех экземпляров. Такая конфигурация является оптимальной конструкцией для анализа геномной обработки, особенно для картирования, выравнивания и определения вариантов.[00657] For example, a case determination function can be broken down into multiple operations that can be performed in software, then routed to Smith-Waterman and/or HMM processing in one or more FPGA hardware instances, and then sent to the CPU for continuing variant determination operations, such as when the entire platform is elastically and/or efficiently sized and implemented to minimize the cost of expensive FPGA instances while maximizing utilization, maximizing latency, and therefore optimizing operations. Accordingly, fewer hardware instances are thus required given their absolute processing capabilities and hardware implementation specificity, and therefore the number of FPGAs relative to the CPU can be minimized and their utilization, e.g., FPGAs can be maximized, and therefore the system can be optimized to keep all instances always busy. This configuration is an optimal design for genomic processing analysis, especially for mapping, alignment, and variant detection.

[00658] Дополнительный структурный элемент, который можно включить, например, вспомогательное устройство, в архитектуру конвейера, описанную в настоящем документе, это один или более модулей эффективной памяти, которые могут быть выполнены с возможностью функционирования для обеспечения хранения блоков данных, например, данных результатов, по мере их передачи по всему конвейеру. Соответственно, одно или более эластичных блочных хранилищ данных (EBDS) и/или более эффективных (гибких) модулей хранения блочных данных могут быть вставлены между одним или более уровнями обработки, например, между различными экземплярами и/или уровнями экземпляров. В таком случае устройство хранения может быть сконфигурирован таким образом, чтобы по мере обработки данных и получения информации обработанные результаты могли быть направлены в устройство хранения для хранения перед отправкой на следующий уровень обработки, например, с помощью специализированного модуля обработки FPGA. То же самое устройство хранения может быть использовано между всеми экземплярами, или множество устройств хранения могут быть использованы между различными экземплярами и/или уровнями экземпляров, например, для хранения, и/или компиляции, и/или постановки в очередь данных результатов. Соответственно, могут быть предусмотрены одна или более памятей таким образом, чтобы различные экземпляры системы могли быть связаны и/или имели доступ к одной и той же памяти, чтобы они могли просматривать и получать доступ к одним и тем же или аналогичным файлам. Следовательно, могут присутствовать одна или более эластичных памятей (памятей, выполненных с возможностью последовательного связывания с множеством экземпляров) и/или эффективных памятей (памятей, выполненных с возможностью связывания с множеством экземпляров одновременно), посредством которых различные экземпляры системы могут быть выполнены с возможностью чтения и записи в одну и ту же или аналогичную память.[00658] An additional structural element that may be included, such as an auxiliary device, in the pipeline architecture described herein is one or more effective memory modules that may be configured to function to provide storage of blocks of data, such as result data , as they are transferred throughout the conveyor. Accordingly, one or more elastic block data stores (EBDS) and/or more efficient (flexible) block data storage modules can be inserted between one or more processing layers, for example, between different instances and/or instance levels. In such a case, the storage device may be configured such that as data is processed and information is retrieved, the processed results can be directed to the storage device for storage before being sent to the next processing level, for example by a dedicated FPGA processing module. The same storage device may be used between all instances, or multiple storage devices may be used between different instances and/or levels of instances, for example, to store and/or compile and/or queue result data. Accordingly, one or more memories may be provided so that different instances of the system can be associated with and/or have access to the same memory so that they can view and access the same or similar files. Therefore, there may be one or more elastic memories (memories configured to be associated with multiple instances sequentially) and/or effective memories (memories configured to be associated with multiple instances simultaneously) through which different instances of the system can be readable and writing to the same or similar memory.

[00659] Например, в одном примере реализации, имеющем отношение к конфигурациям, использующим такие эластичные памяти, перед отправкой данных непосредственно из одного экземпляра и/или с одного уровня обработки на другой, данные могут быть направлены в EBDS или другое запоминающее устройство или структуру, например, блок эффективной памяти, для хранения и последующего направления в надлежащий модуль аппаратной обработки. А именно, модуль хранения блоков может быть присоединен к узлу в качестве запоминающего устройства, где данные могут быть записаны в блочное хранилище данных (BDS) для хранения на одном уровне, BDS может быть переключено на другой узел, чтобы направить данные на следующий уровень обработки. Таким образом, один или более, например множество, модулей BDS могут быть включены в конвейер и выполнены с возможностью переключения с одного узла на другой для участия в переходе данных по всему конвейеру.[00659] For example, in one implementation example relevant to configurations using such elastic memories, before sending data directly from one instance and/or from one processing layer to another, the data may be directed to an EBDS or other storage device or structure, for example, a block of effective memory to be stored and then directed to the appropriate hardware processing module. Namely, a block storage module can be attached to a node as a storage device, where data can be written to a block data store (BDS) for storage in one layer, the BDS can be switched to another node to forward the data to the next processing layer. Thus, one or more, eg multiple, BDS modules may be included in a pipeline and configured to switch from one node to another to participate in the movement of data throughout the pipeline.

[00660] Кроме того, как указано выше, может быть использовано более гибкое устройство хранения файлов, такое как устройство, которое выполнено с возможностью связывания с одним или более экземплярами одновременно, например, без необходимости переключения с одного на другой. Подобным образом система может быть эластично масштабирована на каждом уровне системы, например, когда каждый уровень в ней может отличаться количеством узлов для обработки данных на этом уровне, а после обработки данные результатов могут быть записаны на одно или более связанных устройств EBDS, которые затем могут быть переключены на следующий уровень системы, чтобы сделать сохраненные данные доступными следующему уровню процессоров для выполнения их специфических задач на этом уровне.[00660] Additionally, as noted above, a more flexible file storage device may be used, such as a device that is configured to communicate with one or more instances simultaneously, for example, without having to switch from one to another. In a similar way, the system can be elastically scaled at each level of the system, for example, where each level in it can differ in the number of nodes for processing data at that level, and after processing, the result data can be written to one or more associated EBDS devices, which can then be switched to the next level of the system to make the stored data available to the next level of processors to perform their specific tasks at that level.

[00661] Соответственно, в конвейере обработки существует множество этапов, например, на его обслуживающих узлах, на которых данные подготавливают для обработки, например, предварительная обработка, и после подготовки данные направляют в соответствующие экземпляры обработки на одном уровне, где могут быть сформированы данные результатов, затем результирующие данные могут быть сохранены, например, на устройстве EDS, поставлены в очередь и подготовлены для следующей стадии обработки путем переключения на следующий узел экземпляров и направлены в следующий экземпляр для обработки с использованием экземпляров обработки FPGA и/или ЦПУ следующего порядка, где могут быть сформированы дальнейшие данные результатов, и опять после формирования данные результатов могут быть направлены обратно на прежний или вперед на следующий уровень EDS для хранения перед продвижением на следующую стадию обработки.[00661] Accordingly, there are multiple stages in a processing pipeline, for example at its service nodes, at which data is prepared for processing, such as pre-processing, and once prepared, the data is sent to appropriate processing instances at one level where result data can be generated , the resulting data can then be stored, for example, on an EDS device, queued and prepared for the next stage of processing by switching to the next node of instances, and forwarded to the next instance for processing using next-order FPGA and/or CPU processing instances where they can further result data can be generated, and again once generated, the result data can be sent back to the previous or forward to the next EDS level for storage before moving on to the next processing stage.

[00662] В частности, в одной конкретной реализации поток через конвейер может выглядеть следующим образом: ЦПУ (например, 4 ядра ЦПУ, или экземпляр C4): данные подготовлены (поставлены в очередь и/или сохранены); FPGA (например, 2XL FPGA - 1/8 всего сервера, или экземпляр F1): Картирование, временное хранение; FPGA (например, 2XL FPGA - 1/8 всего сервера, или экземпляр F1): выравнивание, временное хранение; ЦПУ: сортировка, временное хранение; ЦПУ: удаление дубликатов, временное хранение; ЦПУ: определение вариантов 1, временное хранение; FPGA (например, F1 или 16XL, или экземпляр F2): Смит-Ватерман, временное хранение; FPGA (например, экземпляр F1 или F2): HMM, временное хранение; ЦПУ: определение вариантов 2, временное хранение; ЦПУ: VCGF, временное хранение и т.д. Кроме того, может быть включена система управления рабочими потоками для управления потоком данных или направления его через систему, например, когда WMS может быть реализована в ядре ЦПУ, например 4-ядерное ЦПУ, или экземпляр C4. Следует отметить, что один или более из этих этапов могут быть выполнены в любом логическом порядке и могут быть реализованы любым подходящим образом сконфигурированным ресурсом, например, реализованы в программном и/или аппаратном обеспечении во всевозможных разных сочетаниях. И необходимо отметить, что любая из этих операций может быть выполнена в одном или более экземплярах ЦПУ и одном или более экземплярах FPGA на одном или более теоретических уровнях обработки, например, для формирования BioIT-обработки, описанной в настоящем документе.[00662] Specifically, in one particular implementation, the flow through the pipeline may look like this: CPU (eg, 4 CPU cores, or C4 instance): data prepared (queued and/or stored); FPGA (for example, 2XL FPGA - 1/8 of the entire server, or F1 instance): Mapping, temporary storage; FPGA (e.g. 2XL FPGA - 1/8 of the entire server, or F1 instance): alignment, temporary storage; CPU: sorting, temporary storage; CPU: removal of duplicates, temporary storage; CPU: determination of options 1, temporary storage; FPGA (e.g. F1 or 16XL, or F2 instance): Smith-Waterman, temporary storage; FPGA (e.g. instance F1 or F2): HMM, temporary storage; CPU: determination of options 2, temporary storage; CPU: VCGF, temporary storage, etc. Additionally, a workflow management system may be included to control or direct the flow of data through the system, for example, where the WMS may be implemented on a CPU core, such as a 4-core CPU, or a C4 instance. It should be noted that one or more of these steps may be performed in any logical order and may be implemented by any suitably configured resource, for example, implemented in software and/or hardware in any number of different combinations. And it should be noted that any of these operations may be performed on one or more CPU instances and one or more FPGA instances at one or more theoretical processing levels, for example, to form the BioIT processing described herein.

[00663] Как было указано, может быть включен диспетчер рабочих потоков, например, когда WMS реализован в одном или более ядрах ЦПУ. Следовательно, в различных случаях WMS может иметь базу данных, связанную с ней в процессе работы. В таком случае база данных содержит различные операции и задания, которые нужно поставить в очередь, ожидающие задания, а также историю всех заданий, предыдущих или подлежащих выполнению в настоящее время. Поэтому WMS контролирует систему и базу данных с целью выявления любых новых заданий, подлежащих выполнению. Следовательно, при выявлении ожидающих заданий WMS инициирует новый протокол анализа на данных и отправляет их на соответствующих узел экземпляра. Соответственно, диспетчер рабочих потоков отслеживает и знает, где находятся все входные файлы, или хранятся, обрабатываются, или должны быть сохранены, и поэтому направляет и дает команды экземплярам различных узлов обработки на получение доступа к соответствующим файлам в данном месте, на начало считывания файлов, на начало реализации инструкций по обработке и куда записывать данные результатов. И, следовательно, WMS руководит системами в отношении передачи данных на последующие узлы обработки. WMS также определяет, где нужно запустить новые экземпляры и привести в действие, чтобы обеспечить динамическое масштабирование каждого этапа или уровня обработки. В результате WMS выявляет, организуется и направляет дискретные задания, которые должны быть выполнены на каждом уровне и далее направляет данные результатов, записываемые в память для хранения, а по завершении задания запускает другой узел, считывает следующее задание и выполняет следующую итеративную операцию.[00663] As noted, a worker thread manager may be included, for example, when WMS is implemented on one or more CPU cores. Therefore, in various cases, a WMS may have a database associated with it during operation. In such a case, the database contains various operations and jobs to be queued, pending jobs, and a history of all jobs, previous or currently to be executed. Therefore, the WMS monitors the system and database to identify any new jobs that need to be completed. Consequently, when pending jobs are identified, the WMS initiates a new parsing protocol on the data and sends it to the corresponding instance node. Accordingly, the worker thread manager keeps track of and knows where all the input files are located, or are stored, processed, or need to be stored, and therefore directs and commands instances of the various processing nodes to access the corresponding files at a given location, to begin reading the files, to begin implementing processing instructions and where to record result data. And, therefore, the WMS guides the systems regarding the transfer of data to subsequent processing nodes. The WMS also determines where new instances need to be launched and brought into production to enable dynamic scaling of each stage or level of processing. As a result, the WMS identifies, organizes and routes discrete jobs to be executed at each level and then routes the result data to be written to memory for storage, and upon completion of the job, starts another node, reads the next job and performs the next iterative operation.

[00664] Подобным образом входные задания могут распространяться по множеству различных экземпляров, которые могут быть масштабированы, например, независимо или коллективно, путем включения меньше или все больше экземпляров. Эти экземпляры могут быть использованы для создания узлов, чтобы эффективнее балансировать использование ресурсов, когда такие экземпляры могут представлять собой частичный или полный ресурс. Диспетчер рабочих потоков может также руководить и управлять использованием одной или более памятей, например, между этапами обработки, описанными в настоящем документе. Различные экземпляры могут также включать в себя комплементарное программирование, чтобы они могли обмениваться данными друг с другом и/или различными памятями для виртуализации сервера. WMS может также включать в себя также оценщик загрузки для эластичного управления использованием узлов.[00664] Likewise, input jobs can be distributed across many different instances, which can be scaled, for example, independently or collectively to include fewer or more instances. These instances can be used to create nodes to better balance resource usage, where such instances may represent a partial or full resource. The workflow manager may also direct and control the use of one or more memories, for example, between processing steps described herein. The different instances may also include complementary programming so that they can exchange data with each other and/or different memories for server virtualization. The WMS may also include a load estimator for elastic management of node utilization.

[00665] Кроме того, что касается использования памятей, одно или более EBDS или другие соответствующим образом сконфигурированные устройства хранения данных и/или файлов могут быть присоединены к одному или более из различных узлов, например, между различными уровнями экземпляров, например, для временного хранения между всевозможными разными этапами обработки. Следовательно, устройство хранения может быть одним устройством хранения, выполненным с возможностью связывания со всеми различным экземплярами, например, блоком эффективной памяти, таким как эластичное хранилище файлов, или может быть множеством устройств хранения, например по одному устройству на тип экземпляра, которое выполнено с возможностью переключения между экземплярами, например, эластичное блочное устройство хранения. Соответственно, подобным образом каждый уровень экземпляров обработки и/или память могут быть эластично масштабированы по мере надобности, например, между каждым из разных узлов или уровней узлов, например, для обработки одного или нескольких геномов.[00665] Additionally, with respect to the use of memories, one or more EBDS or other suitably configured data and/or file storage devices may be attached to one or more of different nodes, for example, between different instance levels, for example, for temporary storage between all sorts of different processing steps. Therefore, the storage device may be a single storage device configured to associate with all of the different instances, such as an effective memory unit such as elastic file storage, or may be a plurality of storage devices, such as one device per instance type, that is configured to switching between instances, such as elastic block storage. Accordingly, in a similar manner, each level of processing instances and/or memory can be elastically scaled as needed, for example, between each of different nodes or levels of nodes, for example, to process one or more genomes.

[00666] Виду архитектуры, описанной в настоящем документе, один или множество геномов могут быть введены в систему для обработки, например, из одной или более полос проточной кюветы секвенатора нового поколения, как показано на ФИГ. 1. А именно, обеспечение облачной серверной системы 300, которая описана в настоящем документе, позволит накапливать и/или выстраивать в очередь на обработку множество заданий, которые могут быть обработаны всевозможными разными экземплярами системы одновременно или последовательно. Следовательно, конвейер может быть выполнен с возможностью поддержки множества заданий, обрабатываемых виртуальной матрицей процессором, которые связаны с соответствующим образом сконфигурированными запоминающими устройствами для облегчения эффективной обработки данных из одного экземпляра в другой. Кроме того, как было указано, может быть предусмотрено простое запоминающее устройство, которое выполнено с возможностью связывания с множеством разных экземпляров, например, одновременно. В других случаях запоминающее устройство может представлять собой запоминающее устройство эластичного типа, которое может быть выполнено с возможностью связывания с первым экземпляром, например, в одно время, с последующими изменением конфигурации и/или устранения связи с первым экземпляром и переключением на второй экземпляр.[00666] In the form of architecture described herein, one or multiple genomes may be introduced into the system for processing, for example, from one or more lanes of a next-generation sequencer flow cell, as shown in FIG. 1. Namely, the provision of a cloud server system 300, which is described herein, will allow multiple jobs to be accumulated and/or queued for processing, which can be processed by all sorts of different instances of the system simultaneously or sequentially. Therefore, the pipeline may be configured to support multiple jobs processed by the virtual matrix processor, which are associated with suitably configured storage devices to facilitate efficient processing of data from one instance to another. In addition, as indicated, a simple storage device may be provided that is capable of being associated with multiple different instances, for example, simultaneously. In other cases, the memory device may be an elastic type memory device that may be configured to associate with the first instance, for example, at one time, and then reconfigure and/or unlink the first instance and switch to the second instance.

[00667] Поэтому в одной реализации могут быть включены одно или более эластичных блочных устройств хранения и система может быть выполнена с возможностью включения в себя механизма управления переключением. Например, может быть включен контроллер переключения, выполненный с возможностью управления функционированием таких запоминающих устройств по мере переключения их с одного экземпляра на другой. Конфигурация может быть выполнена с возможностью обеспечения перемещения данных по конвейеру специализированных процессоров, тем самым повышая эффективность системы, например, среди всех экземпляров, например, путем пропускания потока данных через систему, позволяя каждому уровню масштабироваться независимо и по мере необходимости приводя в действие для эффективного масштабирования.[00667] Therefore, in one implementation, one or more elastic block storage devices may be included, and the system may be configured to include a switch control mechanism. For example, a switch controller may be included configured to control the operation of such storage devices as they are switched from one instance to another. The configuration may be configured to allow data to move through a pipeline of specialized processors, thereby increasing system efficiency, e.g., across all instances, e.g., by passing data flow through the system, allowing each layer to scale independently and trigger as needed to scale efficiently .

[00668] Кроме того, алгоритм системы управления рабочими потоками может быть выполнен с возможностью определения количества заданий, количества ресурсов для обработки этих заданий, порядка обработки, и направляет поток данных из одного узла в другой путем перекидывания или переключения одного или более гибких переключающих устройств, и там, где требуется, может приводить в действие дополнительные ресурсы, чтобы справляться с ростом в рабочем процессе. Необходимо отметить, что данная конфигурация может быть выполнена с возможностью избежания копирования данных из одного экземпляра в следующий, которое является неэффективным и занимает слишком много времени. Вместо этого за счет переключения эластичного хранилища от одного набора экземпляров на другой, например, путем перетаскивания его с одного узла и прикрепления ко второму узлу, можно значительно улучшить эффективность системы. Кроме того, в различных случаях вместо EBSD можно использовать одно или более эластичных устройств хранения файлов, например, одно запоминающее устройство, выполненное с возможностью связывания с множеством экземпляров без необходимости переключения с одного на другой, чтобы еще больше улучшить передачу данным между экземплярами, делая систему еще более эффективной. Кроме того, необходимо отметить, что, как указано ранее в настоящем документе, в другой конфигурации ЦПУ архитектуры могут быть напрямую связаны друг с другом. Аналогичным образом различные FPGA могут быть напрямую связаны вместе. И, как указано выше, ЦПУ могут быть напрямую связаны с FPGA, например, когда связывание осуществляется посредством интерфейса жесткого связывания, как описано выше.[00668] In addition, the workflow management system algorithm may be configured to determine the number of jobs, the number of resources to process those jobs, the order of processing, and direct the flow of data from one node to another by tossing or switching one or more flexible switching devices, and where required, can deploy additional resources to cope with growth in the work process. It should be noted that this configuration can be done to avoid copying data from one instance to the next, which is inefficient and takes too much time. Instead, by switching elastic storage from one set of instances to another, for example by dragging it from one node and attaching it to a second node, system efficiency can be significantly improved. Additionally, in various cases, one or more elastic file storage devices, such as a single storage device, capable of being associated with multiple instances without having to switch from one to another, can be used instead of EBSD, to further improve data transfer between instances, making the system even more effective. Additionally, it should be noted that, as stated earlier in this document, in another configuration the CPU architectures may be directly coupled to each other. Likewise, different FPGAs can be directly connected together. And, as stated above, the CPUs can be directly coupled to the FPGA, for example when the coupling is via a hard-coupling interface as described above.

[00669] Соответственно, что касается хранения пользователем сформированных данных результатов и получения доступа к ним, то все сформированные данные результатов не требуется сохранять, причем это относится ко всей системе. Например, сформированные данные результатов обычно будут в конкретном формате файла, например, BCL, FASTQ, SAM, BAM, CRAM, VCF. Однако каждый из этих файлов имеет большой размер, и хранение всех их займет уйму памяти, что чревато огромными расходами. Тем не менее, преимуществом представленных устройств, систем и способов их использования является то, что все эти файлы не нужно хранить. Вместо этого, учитывая высокие скорости обработки и быстрые темпы сжатия и распаковки, достижимые компонентами и способами системы, хранить нужно всего один формат файла, например, сжатый формат файла, например, например, в облачной базе 400 данных. А именно, хранить нужно только один формат файла данных, из которого реализуя устройства и способы системы, можно получить все остальные форматы файла. И, ввиду быстрых темпов сжатия и распаковки, достигаемых системой, как правило, это сжатый файл, например файл CRAM.[00669] Accordingly, with regard to the user storing and accessing generated result data, all generated result data does not need to be stored, and this applies to the entire system. For example, the generated result data will typically be in a specific file format, such as BCL, FASTQ, SAM, BAM, CRAM, VCF. However, each of these files is large in size, and storing them all will take up a lot of memory, which can be a huge expense. However, the advantage of the presented devices, systems and ways of using them is that all these files do not need to be stored. Instead, given the high processing speeds and rapid rates of compression and decompression achievable by the system components and methods, only one file format needs to be stored, such as a compressed file format in, for example, a cloud database 400 . Namely, you need to store only one data file format, from which, by implementing devices and methods of the system, you can obtain all other file formats. And, due to the fast rates of compression and decompression achieved by the system, it is typically a compressed file, such as a CRAM file.

[00670] В частности, как показано на ФИГ. 40A, в одной реализации пользователь локального вычислительного ресурса 100 может выгружать данные, такие как геномные данные, например, файл BCL и/или FASTQ, в систему посредством облака 50 для приема облачным вычислительным ресурсом, например сервером 300. Затем сервер 300 либо временно сохранит данные 400, либо начнет обработку данных в соответствии с запросом на задания от пользователя 100. Во время обработки входных данных вычислительный ресурс 300 будет тем самым формировать данные результатов, например в файле SAM или BAM и/или VCF. После этого система может сохранить один или более из этих файлов или может сжать один или более из этих файлов и сохранить их. Однако, чтобы снизить издержки и эффективнее использовать ресурсы, система может сохранить один, например, сжатый, файл, из которого могут быть сформированы все остальные форматы файла, например, с помощью устройств и способов, описанных в настоящем документе. Соответственно, система выполнена с возможностью формирования файлов данных, например, данных результатов, который может быть сохранен в связанной с сервером 300 базе 400 данных, которая доступна посредством облака 50 способом, эффективным с точки зрения затрат.[00670] Specifically, as shown in FIG. 40A, in one implementation, a user of local computing resource 100 may upload data, such as genomic data, such as a BCL and/or FASTQ file, to the system via cloud 50 for ingestion by cloud computing resource, such as server 300. Server 300 will then either temporarily store the data 400 or will begin processing data in accordance with a job request from user 100. While processing input data, computing resource 300 will thereby generate result data, for example in a SAM or BAM and/or VCF file. The system may then save one or more of these files, or may compress one or more of these files and save them. However, to reduce costs and make more efficient use of resources, the system may store a single, for example compressed, file from which all other file formats can be generated, for example, using the devices and methods described herein. Accordingly, the system is configured to generate data files, eg, results data, that can be stored in an associated server 300 database 400 that is accessible via the cloud 50 in a cost effective manner.

[00671] Соответственно, используя локальный вычислительный ресурс 100, пользователь системы может выполнить вход и через облако 50 получить доступ к серверу 300, выгрузить данные на сервер 300 или в базу 400 данных и запросить выполнение одного или более заданий на этих данных. Затем система 300 выполнит запрошенные задания и сохранит данные результатов в базе 400 данных. Как было отмечено, в конкретных случаях система 300 сохранить сформированные данные результатов в одном формате файла, таком как файл CRAM. Кроме того, нажав кнопку, пользователь может получить доступ к сохраненному файлу, и после этого еще одним нажатием кнопки может получить доступ ко всем другим форматам файлов. Например, в соответствии со способами, описанными в настоящем документе, и учитывая возможности системы по быстрой обработке, эти файлы будут затем обработаны и сформированы за кадром, например, на лету, тем самым сокращая и время обработки, и нагрузку, а также издержки на хранение, например, когда функции вычисления и хранения связаны друг с другом.[00671] Accordingly, using local computing resource 100, a user of the system can log in and access server 300 through cloud 50, upload data to server 300 or database 400, and request that one or more jobs be performed on that data. The system 300 will then execute the requested jobs and store the results data in the database 400 . As noted, in particular cases, the system 300 will store the generated results data in a single file format, such as a CRAM file. Additionally, by clicking a button, the user can access the saved file, and after that, with another click of the button, can access all other file formats. For example, in accordance with the methods described herein, and given the system's fast processing capabilities, these files will then be processed and generated behind the scenes, for example, on the fly, thereby reducing both processing time and load, as well as storage costs , for example, when the computation and storage functions are coupled to each other.

[00672] В частности, существуют две части этого эффективного и быстрого процесса хранения, которые обеспечены выполнением ускоренных операций, описанных в настоящем документе. Более конкретно, поскольку различные операции обработки картирования, выравнивания, сортировки, удаления дубликатов и/или определения вариантов могут быть реализованы в аппаратной и/или квантовой конфигурации обработки, можно достичь быстрого создания данных результатов в одном или более форматах файлов. Кроме того, благодаря тесно связанным архитектурам, описанным в настоящем документе, достигнуто также беспрепятственное сжатие и сохранение данных результатов, например, в формате файла FASTQ, SAM, BAM, CRAM, VCF.[00672] In particular, there are two parts of this efficient and fast storage process that are enabled by the accelerated operations described herein. More specifically, since various mapping, alignment, sorting, deduplication, and/or variant detection processing operations can be implemented in a hardware and/or quantum processing configuration, rapid generation of result data in one or more file formats can be achieved. In addition, thanks to the tightly coupled architectures described in this document, seamless compression and storage of result data, for example in FASTQ, SAM, BAM, CRAM, VCF file format, is also achieved.

[00673] Более того, за счет ускоренной обработки, обеспечиваемой устройствами системы, и за счет их беспрепятственной интеграции со связанными устройствами хранения, данные, получаемые в результате операций обработки системы, которые подлежат сохранению, могут быть эффективно сжаты перед сохранением и распакованы после хранения. Ввиду такой эффективности снижаются расходы на хранение и/или потери, связанные с распаковкой файлов перед использованием. Соответственно, благодаря этим преимуществам система может быть выполнена с возможностью обеспечения беспрепятственного сжатия и сохранения только одно типа файла с восстановлением на лету любого другого типа файла по мере надобности или требованию пользователя. Например, можно сохранить файл BAM, или связанный с ним сжатый файл SAM или CRAM, и из этого файла могут быть сформированы остальные, например, в прямом или обратном направлении, например, чтобы воспроизвести файл VCF или файл FASTQ, или файл BCL, соответственно.[00673] Moreover, due to the accelerated processing provided by the system devices, and due to their seamless integration with associated storage devices, data resulting from system processing operations that are to be stored can be efficiently compressed before storage and decompressed after storage. Due to this efficiency, storage costs and/or losses associated with unpacking files before use are reduced. Accordingly, due to these advantages, the system can be configured to seamlessly compress and store only one type of file, with on-the-fly recovery of any other type of file as needed or required by the user. For example, a BAM file, or an associated compressed SAM or CRAM file, can be stored, and the rest can be generated from that file, for example, in the forward or backward direction, for example, to play a VCF file or a FASTQ file, or a BCL file, respectively.

[00674] Например, в одном варианте реализации в систему может быть первоначально введен или иным образом сформирован в ней файл FASTQ и затем сохранен. В таком случае при переходе в прямом направлении можно получить контрольную сумму файла. Аналогичным образом после получения результирующих данных при переходе назад можно сформировать другую контрольную сумму. Затем эти контрольные суммы можно использовать для гарантии того, что любые дальнейшие форматы файлов, подлежащие формированию и/или воссозданию системой в прямом и обратном направлении, будут в точности совпадать с еще одним и/или его сжатым форматом файла. Подобным образом можно убедиться, что все необходимые данные сохранены максимально эффективным образом, и WMS знает точно, где эти данные сохранены, в каком формате файла, каким был исходный формат файла, и из этих данных система может восстановить любой формат файла идентичным образом, переходя вперед или назад между форматами файлов (после того, как первоначально сформирован шаблон).[00674] For example, in one embodiment, a FASTQ file may be initially entered or otherwise generated into the system and then stored. In this case, when moving in the forward direction, you can obtain the checksum of the file. Similarly, after receiving the resulting data, another checksum can be generated when going back. These checksums can then be used to ensure that any further file formats to be generated and/or recreated by the system back and forth will exactly match yet another and/or its compressed file format. Likewise, one can ensure that all the required data is stored in the most efficient manner and the WMS knows exactly where this data is stored, in what file format, what was the original file format and from this data the system can restore any file format in an identical manner by moving forward or back between file formats (after the template is initially generated).

[00675] Следовательно, преимущество в скорости компиляции «точно во время» обеспечивается частично за счет аппаратной или квантовой реализации формирования соответствующих файлов, например, при формировании файла BAM из ранее сформированного файла FASTQ. В частности, сжатые файлы BAM, в том числе файлы SAM и CRAM, как правило, не хранят в базе данных в связи с увеличением времени за счет распаковки сжатого сохраненного файла перед обработкой. Однако, система JIT позволяет делать это без существенных потерь. Более конкретно, благодаря реализации устройств и процессов, описанных в настоящем документе, можно не только быстро сжимать и распаковывать сформированные данные последовательности, например, почти мгновенно, но и можно эффективно хранить их. Кроме того, из сохраненного файла, в каком бы формате он ни был сохранен, можно восстановить любой другой формат файла в считанные секунды.[00675] Therefore, the advantage in just-in-time compilation speed is provided in part by hardware or quantum implementation of the generation of the corresponding files, for example, when generating a BAM file from a previously generated FASTQ file. In particular, compressed BAM files, including SAM and CRAM files, are typically not stored in the database due to the added time involved in decompressing the compressed stored file before processing. However, the JIT system allows you to do this without significant losses. More specifically, by implementing the devices and processes described herein, not only can generated sequence data be quickly compressed and decompressed, for example, almost instantly, but it can also be stored efficiently. In addition, from a saved file, no matter what format it was saved in, you can restore any other file format in a matter of seconds.

[00676] Следовательно, как показано на ФИГ. 40C, когда платформы с аппаратным или квантовым ускорением выполняют различные процедуры вторичной обработки, такие как картирование и выравнивание, сортировка, удаление дубликатов и определение вариантов, может быть выполнен дополнительный этап сжатия, например, в виде процесса «все в одном», перед сохранением в сжатой форме. После этого, когда пользователю требуется проанализировать или иным образом использовать сжатые данные, файл может быть извлечен, распакован и/или преобразован из одного формата файла в другой, и/или проанализирован, например, с помощью движков JIT, загружаемых в жестко смонтированный процессор или сконфигурированный в квантовом процессоре, и применения к сжатому файлу одной или более процедур конвейера JIT.[00676] Therefore, as shown in FIG. 40C, when hardware- or quantum-accelerated platforms perform various secondary processing procedures such as mapping and alignment, sorting, deduplication, and variant detection, an additional compression step may be performed, such as an all-in-one process, before storing in condensed form. Thereafter, when the user needs to parse or otherwise use the compressed data, the file can be extracted, decompressed and/or converted from one file format to another, and/or parsed, for example, using JIT engines loaded into a hard-mounted processor or configured in a quantum processor, and applying one or more JIT pipeline procedures to the compressed file.

[00677] Соответственно, в различных случаях, когда система содержит связанную FPGA, можно полностью или частично переконфигурировать FPGA и/или организовать движок квантовой обработки, чтобы выполнить процедуру JIT. В частности, модуль JIT может быть загружен в систему и/или выполнен в виде одного или более движков, которые могут включать в себя один или более движком 150 сжатия, которые выполнены с возможностью работы в фоновом режиме. Следовательно, при вызове данного формата файла система типа JIT может выполнить необходимые операции на запрошенных данных, чтобы создать файл в запрошенном формате. Эти операции могут включать в себя сжатие и/или распаковку, а также преобразование для получения запрошенных данных в опознанном формате файла.[00677] Accordingly, in various cases where a system contains an associated FPGA, it is possible to completely or partially reconfigure the FPGA and/or orchestrate the quantum processing engine to perform a JIT procedure. In particular, the JIT module may be loaded into the system and/or implemented as one or more engines, which may include one or more compression engines 150 that are configured to run in the background. Therefore, when a given file format is called, the JIT type system can perform the necessary operations on the requested data to produce a file in the requested format. These operations may include compression and/or decompression, as well as conversion to produce the requested data in a recognized file format.

[00678] Например, при формировании генетических данных их обычно создают в формате необработанных данных, таком как файл BCL, который затем может быть преобразован в файл FASTQ, например, секвенатором нового поколения, который формирует данные. Однако, с помощью представленной системы файлы необработанных данных, такие как BCL или другой формат файла необработанных данных, может быть передан в потоковом режиме или иным образом в модуль JIT, где он затем может быть преобразован в данные в файле формата FASTQ и/или другой формат файла. Например, после формирования файла FASTQ он может быть обработан, как описано в настоящем документе, и может быть сформирован соответствующий файл BAM. И, аналогичным образом, из файла BAM может быть сформирован соответствующий файл VCF. Кроме того, во время соответствующих этапов могут быть также сформированы файлы SAM и CRAM. Каждый из этих этапов может быть выполнен очень быстро, особенно если соответствующий формат файла уже был сформирован однажды. Следовательно, после получения файла BCL, например, прямо из секвенатора, файл BCL может быть преобразован в файл FASTQ или непосредственно преобразован в файл SAM, BAM, CRAM и/или VCF, например, с помощью реализованной аппаратным или квантовым способом процедуры картирования/выравнивания/сортировки/определения вариантов.[00678] For example, when generating genetic data, it is typically created in a raw data format, such as a BCL file, which can then be converted to a FASTQ file, for example, by a next generation sequencer that generates the data. However, with the present system, raw data files, such as BCL or other raw data file format, can be streamed or otherwise transferred to a JIT module, where it can then be converted into data in a FASTQ file format and/or other format file. For example, once a FASTQ file has been generated, it may be processed as described herein, and a corresponding BAM file may be generated. And, similarly, a corresponding VCF file can be generated from a BAM file. In addition, SAM and CRAM files may also be generated during appropriate steps. Each of these steps can be completed very quickly, especially if the corresponding file format has already been generated once. Therefore, after receiving the BCL file, for example, directly from the sequencer, the BCL file can be converted to a FASTQ file or directly converted to a SAM, BAM, CRAM and/or VCF file, for example, using a hardware or quantum-implemented mapping/alignment/ sorting/identifying options.

[00679] Например, в одной модели использования в типичном приборе для секвенирования на отдельную полосу может быть загружено большое количество различных геномов субъекта для параллельной обработки одним прибором для секвенирования. Поэтому по завершении анализа формируется, в виде мультиплексного комплекса, большое количество различных файлов BCL, полученных из всех различных полос и представляющих полные геномы каждого из разных субъектов. Соответственно, эти мультиплексированные файлы BCL можно затем демультиплексировать и сформировать соответствующие файлы FASTQ, представляющие генетический код для каждого отдельного субъекта. Например, если за один прогон секвенирования формируют N файлов BCL, эти файлу нужно будет демультиплексировать, разделить на слои и сшить вместе для каждого субъекта. Это сшивание является сложным процессом, где каждый генетический материал субъекта преобразуют в файлы BCL, которые могут быть затем преобразованы в файлы FASTQ или использованы непосредственно для картирования, выравнивания и/или сортировки, определения вариантов и т.п. Этот процесс может быть автоматизирован, чтобы значительно ускорить его различные этапы.[00679] For example, in one use model in a typical sequencing instrument, a single lane may be loaded with a large number of different genomes from a subject for parallel processing by a single sequencing instrument. Therefore, upon completion of the analysis, a large number of different BCL files are generated, as a multiplex complex, derived from all the different bands and representing the complete genomes of each of the different subjects. Accordingly, these multiplexed BCL files can then be demultiplexed to generate corresponding FASTQ files representing the genetic code for each individual subject. For example, if N BCL files are generated in a single sequencing run, these files would need to be demultiplexed, layered, and stitched together for each subject. This stitching is a complex process where each subject's genetic material is converted into BCL files, which can then be converted into FASTQ files or used directly for mapping, alignment and/or sorting, variant identification, and the like. This process can be automated to significantly speed up its various steps.

[00680] Кроме того, как показано на ФИГ. 40A, после того, как эти данные сформированы 110, и, следовательно, должны быть сохранены, например, независимо от того, какой формат выбран, они могут быть сохранены в защищенной паролем и/или шифрованием кэш-памяти, например в специализированной геномной памяти 400 типа «Dropbox». Соответственно, по мере того, как сформированные и/или обработанные генетические данные покидают секвенатор, они могут быть обработаны и/или сохранены и сделаны доступными другим пользователям в других системах, например, в кэш-памяти 400 типа «Dropbox». В таком случае автоматическая конвейерная система биоинформационного анализа может затем получить доступ к данным в кэше и автоматически начать их обработку. Например, система может включать в себя систему управления, например, систему 151 управления рабочими потоками, имеющую контроллер, такой как микропроцессор или другая интеллектуальная система, например, искусственный интеллект, который управляет извлечением файлов BCL и/или FASTQ, например, из кэш-памяти, и затем направляет обработку этой информации на формирование файла BAM, CRAM, SAM и/или VCF, тем самым автоматически формируя и выводя различные результаты обработки и/или сортируя их в памяти 400 типа «Dropbox».[00680] Additionally, as shown in FIG. 40A, once this data is generated 110, and therefore needs to be stored, for example, regardless of which format is selected, it may be stored in a password-protected and/or encrypted cache memory, such as dedicated genomic memory 400 like Dropbox. Accordingly, as the generated and/or processed genetic data leaves the sequencer, it can be processed and/or stored and made available to other users in other systems, for example, in a Dropbox cache 400. In this case, an automated bioinformatics analysis pipeline can then access the data in the cache and automatically begin processing it. For example, the system may include a management system, such as workflow management system 151, having a controller, such as a microprocessor or other intelligent system, such as artificial intelligence, that controls the retrieval of BCL and/or FASTQ files, such as from cache memory , and then directs processing of this information to generate a BAM, CRAM, SAM and/or VCF file, thereby automatically generating and outputting various processing results and/or sorting them into Dropbox memory 400.

[00681] Уникальное преимущество обработки JIT, которая реализуется в данной модели использования, состоит в том, что JIT позволяет сжимать различные созданные генетические файла, например, перед сохранением данных, и быстро распаковывать перед использованием. Следовательно, JIT может компилировать и/или сжимать и/или сохранять данные по мере их выхода из секвенатора, причем сохраняет их в защищенной геномной кэш-памяти типа «Dropbox». Эта защищенная геномная кэш-память 400 типа «Dropbox» может представлять собой доступную из облака 50 кэш-память, которая выполнена с возможностью хранения геномных данных из одного или более автоматизированных секвенаторов 110, например, когда секвенаторы расположены удаленно от кэш-памяти 400.[00681] A unique advantage of JIT processing, which is implemented in this use model, is that JIT allows the various generated genetic files to be compressed, for example, before storing the data, and quickly decompressed before use. Therefore, JIT can compile and/or compress and/or store data as it exits the sequencer and stores it in a secure Dropbox genomic cache. This secure "Dropbox" genomic cache 400 may be a cloud-accessible cache 50 that is configured to store genomic data from one or more automated sequencers 110, such as when the sequencers are located remotely from the cache 400.

[00682] В частности, после того, как данные последовательности сформированы 110, например, с помощью СНП, они могут быть сжаты 150 для передачи и/или сохранения 400, чтобы сократить количество данных, выгружаемых на облако 50 и сохраняемых там. Такие выгрузка, передача и сохранение могут быть выполнены быстро за счет сжатия 150 данных, которое происходит в системе, например перед передачей. Кроме того, после выгрузки и сохранения в облачной кэш-памяти 400 данные могут быть затем извлечены, локально 100 или удаленно 300, для обработки в соответствии устройствами, системами и способами BioIT-конвейера, описанными в настоящем документе, с целью создания файла картирования, выравнивания, сортировки и/или определения вариантов, такого как файл SAM, BAM и/или CRAM, который может быть затем сохранен вместе с метафайлом, который указывает информацию о том, как был создан сформированный файл, например SAM, BAM, CRAM и т.д.[00682] In particular, after the sequence data is generated 110, for example, by the CNS, it can be compressed 150 for transmission and/or storage 400 to reduce the amount of data uploaded to the cloud 50 and stored there. Such upload, transfer and storage can be performed quickly due to data compression 150 that occurs in the system, for example, before transfer. Additionally, once downloaded and stored in the cloud cache 400, the data can then be retrieved, locally 100 or remotely 300, for processing in accordance with the BioIT pipeline devices, systems, and methods described herein to create a mapping file, alignment , sorting and/or defining variants, such as a SAM, BAM and/or CRAM file, which can then be stored along with a metafile that specifies information about how the generated file was created, such as SAM, BAM, CRAM, etc. .

[00683] Следовательно, в совокупности с метаданными сжатый файл SAM, BAM и/или CRAM может быть затем обработан для получения других форматов файлов, таких как файлы FASTQ и/или VCF. Соответственно, как отмечалось, выше, с помощью JIT можно на лету восстанавливать файл FASTQ или VCF из сжатого файла BAM и наоборот. Файл BCL тоже может быть восстановлен аналогичным образом. Необходимо отметить, что, что файлы SAM и CRAM могут быть подобным образом сжаты и/или сохранены и использоваться для создания одного или более других форматов файлов. Например, файл CRAM, который может быть преобразован обратно из формата CRAM, может быть использован для создания файла определения вариантов и, аналогичным образом для создания файла SAM. Следовательно, нужно сохранить файл SAM, BAM и/или CRAM, из этих файлов могут быть воспроизведены другие форматы файлов, например, VCF, FASTQ, BCL.[00683] Therefore, in conjunction with the metadata, the compressed SAM, BAM and/or CRAM file can then be processed to produce other file formats such as FASTQ and/or VCF files. Accordingly, as noted above, using JIT it is possible to recover a FASTQ or VCF file on the fly from a compressed BAM file and vice versa. The BCL file can also be recovered in a similar way. It should be noted that SAM and CRAM files can be similarly compressed and/or stored and used to create one or more other file formats. For example, a CRAM file that can be converted back from the CRAM format can be used to create a variant definition file and, likewise, to create a SAM file. Therefore, you need to save the SAM, BAM and/or CRAM file, other file formats such as VCF, FASTQ, BCL can be played from these files.

[00684] Соответственно, как показано на ФИГ. 40A, прибор 110 для картирования, и/или выравнивания, и/или сортировки, и/или определения вариантов, например, компьютер автоматизированного рабочего места, может находиться в месте эксплуатации 100, и/или второй соответствующий прибор 300 может быть расположен удаленно и быть доступным из облака 50. Данная конфигурация вместе с устройствами и способами, описанными в настоящем документе, выполнены с возможностью обеспечения пользователю быстрого выполнения BioIT-анализа «на облаке», как описано в настоящем документе, чтобы получить данные результатов. Данные результатов могут быть затем обработаны для сжатия, и после сжатия они могут быть сконфигурированы для передачи, например, обратно на локальный вычислительный ресурс 100 или могут быть сохранены на облаке 400 и посредством облачного интерфейса сделаны доступными для локального вычислительного ресурса 100. В таком случае сжатые данные могут быть файлом SAM, BAM, CRAM и/или VCF.[00684] Accordingly, as shown in FIG. 40A, a mapping and/or leveling and/or sorting and/or variant determination instrument 110, such as a workstation computer, may be located at the operating location 100, and/or a second corresponding instrument 300 may be located remotely and be accessible from the cloud 50. This configuration, together with the devices and methods described herein, are configured to allow a user to quickly perform a BioIT analysis "on the cloud" as described herein to obtain result data. The results data may then be processed for compression, and once compressed, may be configured to be transmitted, for example, back to the local computing resource 100, or may be stored on the cloud 400 and, through a cloud interface, made available to the local computing resource 100. In such a case, the compressed the data may be a SAM, BAM, CRAM and/or VCF file.

[00685] В частности, второй вычислительный ресурс 300 может быть другим решением для автоматизированного рабочего места или он может быть серверным конфигурируемым ресурсом, например, когда вычислительный ресурс доступен из посредством облака 50 и выполнен с возможностью осуществления картирования, и/или выравнивания, и/или сортировки, и/или определения вариантов. В таком случае пользователь может запрашивать на облачном сервере 300 выполнение BioIT-заданий на выгруженных данных, например данных в формате BCL и/или FASTQ. В этом случае сервер 300 затем получит доступ к сохраненным и/или сжатым файлам, чтобы быстро обработать эти данные и сформировать одни или более данные результатов, которые могут быть после этого сжаты и/или сохранены. Кроме того, из файла данных результатов могут быть сформированы один или более других файлов BCL, FASTQ, SAM, BAM, VCF или файлы других форматов на лету с помощью обработки JIT. Тем самым данная конфигурация расширяет типичное «узкое место» скорости передачи.[00685] In particular, the second computing resource 300 may be another workstation solution, or it may be a server-based configurable resource, for example, where the computing resource is accessible from the cloud 50 and is configured to perform mapping and/or alignment and/ or sorting and/or identifying options. In this case, the user can request the cloud server 300 to run BioIT jobs on the uploaded data, such as data in BCL and/or FASTQ format. In this case, the server 300 will then access the stored and/or compressed files to quickly process the data and generate one or more result data that can then be compressed and/or stored. Additionally, one or more other BCL, FASTQ, SAM, BAM, VCF, or other file formats can be generated from the results data file on the fly using JIT processing. This configuration thereby widens the typical transmission speed bottleneck.

[00686] Поэтому в различных вариантах реализации система 1 может содержать первый прибор 100 картирования, и/или выравнивания, и/или сортировки, и/или определения вариантов, который может быть расположен локально 100, например, для локального получения данных, сжатия 150 и/или хранения 200; а второй прибор 300 может находиться удаленно и быть связан с облаком 50, при этом второй прибор 300 выполнен с возможностью приема сформированных и сжатых данных и сохранения их, например посредством связанного устройства 400 хранения. После сохранения данные могут быть доступны для распаковки и преобразования сохраненных файлов в один или более других форматов файлов.[00686] Therefore, in various embodiments, system 1 may include a first mapping and/or alignment and/or sorting and/or variant determination apparatus 100, which may be located locally 100, for example, for local data acquisition, compression 150, and /or storage 200; and the second device 300 may be remotely located and associated with the cloud 50, wherein the second device 300 is configured to receive the generated and compressed data and store it, for example through an associated storage device 400. Once saved, the data may be available for decompression and conversion of the saved files into one or more other file formats.

[00687] Поэтому в одной реализации системы данные. например, необработанные данные последовательности, например, в формате файла BCL или FASTQ, которые сформированы устройством формирования данных, например, секвенатором 110, могут быть выгружены и сохранены на облаке 50, например, в связанной геномной кэш-памяти 400 типа «Dropbox». Эти данные могут быть затем непосредственно доступны для первого прибора 100 картирования, и/или выравнивания, и/или сортировки, и/или определения вариантов, как описано в настоящем документе, или могут быть доступны опосредованно с помощью серверного ресурса 300, которые могут после этого обработать данные последовательности для получения картированных, выровненных, сортированных и/или подвергнутых определению вариантов данных результатов.[00687] Therefore, in one implementation of the system the data. for example, raw sequence data, e.g., in BCL or FASTQ file format, that is generated by a data generation device, e.g., sequencer 110, can be uploaded and stored on a cloud 50, e.g., in an associated Dropbox genomic cache 400. This data may then be directly accessed by the first mapping and/or leveling and/or sorting and/or variant determination engine 100 as described herein, or may be accessed indirectly by the server resource 300, which may then process sequence data to produce mapped, aligned, sorted and/or qualified variants of the data results.

[00688] Соответственно, в различных вариантах реализации одно или более устройств хранения, описанных в настоящем документе, могут быть выполнены с возможностью предоставления к себе доступа, при наличии надлежащих полномочий, через облако. Например, различные данные результатов системы могут быть сжаты и/или сохранены в памяти или другой соответствующим образом сконфигурированной базе данных, где база данных выполнена в виде геномного кэша 400 типа «Dropbox», например, где различные данные результатов могут быть сохранены в файле SAM, BAM, CRAM и/или VCF, который может быть доступен удаленно. В частности, необходимо отметить, что, как показано на ФИГ. 40A, может быть предусмотрен локальный прибор 100, причем этот локальный прибор может быть связан с сами прибором 110 для секвенирования или может быть удален от него, но связан с прибором 110 для секвенирования посредством локального облака 30, и локальный прибор 100 может быть также связан с локальным хранилищем 200 или удаленной кэш-памятью 400, например, когда удаленная кэш-память выполнена в виде хранилища генома типа «Dropbox». Кроме того, в различных случаях второй прибор 300 картирования, и/или выравнивания, и/или сортировки, и/или определения вариантов, например, облачный прибор, при наличии надлежащих полномочий может быть соединен с хранилищем 400 генома типа «Dropbox» для получения доступа к файлам, например, сжатым файлам, сохраненным там локальным вычислительным ресурсом 100, и может затем распаковать эти файлы, чтобы сделать результаты доступными для дальнейшей, например, вторичной или третичной, обработки.[00688] Accordingly, in various embodiments, one or more of the storage devices described herein may be configured to be accessible, if appropriate, through the cloud. For example, various system results data may be compressed and/or stored in memory or other suitably configured database, where the database is implemented as a "Dropbox" type genomic cache 400, for example, where various results data may be stored in a SAM file, BAM, CRAM and/or VCF, which can be accessed remotely. In particular, it should be noted that, as shown in FIG. 40A, a local instrument 100 may be provided, which local instrument may be associated with or remote from the sequencing instrument 110 but associated with the sequencing instrument 110 via a local cloud 30, and the local instrument 100 may also be associated with local storage 200 or remote cache 400, for example, when the remote cache is in the form of a Dropbox genome storage. Additionally, in various instances, a second mapping and/or alignment and/or sorting and/or variant determination instrument 300, such as a cloud instrument, may, if appropriately authorized, be connected to the Dropbox genome repository 400 to gain access to files, eg, compressed files, stored there by local computing resource 100, and may then decompress those files to make the results available for further, eg, secondary or tertiary processing.

[00689] Соответственно, в различных случаях система может быть рационализирована так, чтобы по мере формирования данных и выхода их из секвенатора 110, например, в формате необработанных данных, они могли быть либо немедленно выгружены на облако 50 и сохранены в хранилище 400 генома типа «Dropbox», либо переданы в систему 300 BioIT-обработки для дальнейшей обработки и/или сжатия перед началом выгрузки и сохранения 400. После сохранения в кэш-памяти 400 система может сразу же поставить данные в очередь на извлечение, сжатие, распаковку и/или дальнейшую обработку, например, с помощью другого связанного устройства 300 BioIT-обработки, которые после обработки которых в данные результатов могут быть сжаты и/или сохранены 400 для использования позже. В этом момент может быть инициирован конвейер третичной обработки, и тем самым сохраненные данные результатов из вторичной обработки могут быть распакованы и использованы, например, для третичного анализа, в соответствии со способами, описанными в настоящем документе.[00689] Accordingly, in various cases, the system can be streamlined so that as data is generated and exits sequencer 110, for example in raw data format, it can either be immediately uploaded to cloud 50 and stored in genome storage 400. Dropbox" or transferred to the BioIT processing system 300 for further processing and/or compression before beginning the upload and storage 400. Once stored in the cache 400, the system can immediately queue the data for extraction, compression, decompression and/or further processing, for example by another associated BioIT processing device 300, which, once processed into result data, can be compressed and/or stored 400 for use at a later date. At this point, the tertiary processing pipeline can be initiated, and thereby the stored result data from the secondary processing can be unpacked and used, for example, for tertiary analysis, in accordance with the methods described herein.

[00690] Поэтому в различных вариантах реализации система может быть конвейеризована таким образом, что все данные, которые выходят из секвенатора 110, могут быть либо сжаты, например, локальным вычислительным ресурсом 100, перед передачей и/или сохранением 200, либо данные могут быть переданы непосредственно в папку генома «Dropbox» для хранения 400. После приема там сохраненные данные могут быть затем по существу немедленно поставлены в очередь на извлечение и сжатие и/или распаковку, например удаленным вычислительным ресурсом 300. После распаковки данные могут быть по существу немедленно стать доступными для обработки, такой как картирование, выравнивание, сортировка и/или определение вариантов для создания обработанных данных результатов, которые могут быть затем снова сжаты для хранения. После этого сжатые данные вторичных результатов могут быть сделаны доступными, например, в хранилище 400 генома типа «Dropbox», распакованы и/или использованы в одной или более процедур третичного анализа. Поскольку данные могут быть сжаты при хранении и по существу немедленно распакованы при извлечении, они доступны для использования множеством разных систем и в множестве разных биоаналитических протоколов в разное время - просто нужно получить доступ к ним в кэше хранилища 400 типа «Dropbox».[00690] Therefore, in various implementations, the system may be pipelined such that all data that exits the sequencer 110 may either be compressed, for example, by local computing resource 100, before being transmitted and/or stored 200, or the data may be transmitted directly into a genome "Dropbox" folder for storage 400. Once received there, the stored data can then be substantially immediately queued for extraction and compression and/or decompression, such as by a remote computing resource 300. Once decompressed, the data can be substantially immediately made available for processing such as mapping, alignment, sorting and/or variant determination to create processed result data that can then be compressed again for storage. The compressed secondary result data may then be made available, for example, in a Dropbox genome storage 400, decompressed, and/or used in one or more tertiary analysis procedures. Because data can be compressed when stored and essentially immediately decompressed when retrieved, it is available for use by many different systems and in many different bioanalytical protocols at different times—it just needs to be accessed in the Dropbox storage cache 400.

[00691] Следовательно, подобным образом конвейеры BioIT-платформы, представленные в настоящем документе, могут быть выполнены с возможностью обеспечения невероятной гибкости формирования и/или анализа данных и выполнены с возможностью приема вводимых в конкретных формах генетических данных во множестве форматов для обработки с целью создания выходных форматов, которые совместимы с различным последующим анализом. Соответственно, как показано на ФИГ. 40C, в настоящем документе предложены устройства, системы и способы для выполнения анализа генетического секвенирования, который может включать в себя один или более из следующих этапов: Во-первых, принимают входной файл, который может быть в одном или более форматах файла FASTQ или BCL или других форматах файла генетической последовательности, таком как сжатый формат файла, после чего этот файл может быть распакован и/или обработан посредством ряда этапов, описанных в настоящем документе, для формирования файла VCF/gVCF, который может быть затем сжат, и/или обработан, и/или передан. Такие сжатие и распаковка могут происходить на любой подходящей стадии по всему процессу.[00691] Therefore, in a similar manner, the BioIT platform pipelines presented herein can be configured to provide incredible flexibility in data generation and/or analysis and are configured to accept form-specific input of genetic data in a variety of formats for processing to create output formats that are compatible with various downstream analyses. Accordingly, as shown in FIG. 40C, devices, systems and methods are provided herein for performing genetic sequencing analysis, which may include one or more of the following steps: First, receiving an input file, which may be in one or more FASTQ or BCL file formats or other genetic sequence file formats, such as a compressed file format, after which the file can be decompressed and/or processed through a series of steps described herein to form a VCF/gVCF file, which can then be compressed and/or processed, and/or transferred. Such compression and decompression may occur at any suitable stage throughout the process.

[00692] Например, после приема файла BCL он может быть подвергнут обработке в конвейере анализа, например, последовательно, как описано в настоящем документе. Например, после приема файл BCL может быть преобразован и/или демультиплексирован, например, в формат файла FASTQ и/или FASTQgz, который может быть затем отправлен в модуль картирования и/или выравнивания, например, сервера 300, чтобы быть картированным и/или выровненным в соответствии с устройством и его способами использования, описанными в настоящем документе. Кроме того, в различных вариантах картированные и выровненные данные, например, в формате файла SAM или BAM, могут быть отсортированы по позиции и/или в них могут быть маркированы и удалены дубликаты. Затем файлы могут быть преобразованы, например, с получением файла CRAM, для передачи и/или хранения, или могут быть пересланы в модуль определения вариантов, например, HMM, для обработки с целью получения файла определения вариантов, VCF или gVCF.[00692] For example, after receiving a BCL file, it may be processed in a parsing pipeline, for example, sequentially, as described herein. For example, upon receipt, the BCL file may be converted and/or demultiplexed, for example, into a FASTQ and/or FASTQgz file format, which can then be sent to a mapping and/or alignment module, for example, server 300 to be mapped and/or aligned in accordance with the device and its uses described herein. Additionally, in various embodiments, the mapped and aligned data, for example in a SAM or BAM file format, may be sorted by position and/or marked and duplicates removed. The files may then be converted, for example to a CRAM file, for transmission and/or storage, or may be sent to a variant definition module, such as an HMM, for processing to produce a variant definition file, VCF or gVCF.

[00693] Точнее говоря, как показано на ФИГ. 40C и 40D, в определенных случаях файл, предназначенный для приема системой, может быть передан в потоковом режиме или иным образом перенесен в систему прямо из устройства секвенирования, например, СНП 110, и поэтому переданный файл может быть в формате файла BCL. Когда принимаемый файл представлен в формате файла BCL, он может быть преобразован и/или иным образом демультиплексирован в файл FASTQ для обработки системой, или файл BCL может быть обработан непосредственно. Например, процессоры конвейера платформы могут быть выполнены с возможностью приема данных BCL, которые передаются в потоковом режиме прямо из секвенатора, как описано со ссылкой на ФИГ. 1, или они могут принимать данные в формате файла FASTQ. Однако, прием данных последовательности сразу по выходе из секвенатора полезен, поскольку он позволяет переводить данные прямо из необработанных данных секвенирования в непосредственно обрабатываемые данные, например, в один или более из форматов SAM, BAM и/или VCF/gVCF, для вывода.[00693] More precisely, as shown in FIG. 40C and 40D, in certain cases, a file intended to be received by the system may be streamed or otherwise transferred to the system directly from a sequencing device, such as the SNP 110, and therefore the transferred file may be in a BCL file format. When a received file is in the BCL file format, it may be converted and/or otherwise demultiplexed into a FASTQ file for processing by the system, or the BCL file may be processed directly. For example, platform pipeline processors may be configured to receive BCL data that is streamed directly from the sequencer, as described with reference to FIG. 1, or they can accept data in the FASTQ file format. However, receiving the sequence data immediately upon exiting the sequencer is useful because it allows the data to be translated directly from raw sequencing data into directly processed data, eg, one or more of SAM, BAM, and/or VCF/gVCF formats, for output.

[00694] Соответственно, после приема файла BCL и/или FASTQ, например, вычислительным ресурсом 100 и/или 300, он может быть картирован и/или выровнен вычислительным ресурсом, причем картирование и/или выравнивание могут быть выполнены на ридах с одинарными или спаренными концами. Например, после приема данные последовательности могут быть компилированы в риды для анализа, например, с длинами рида, которые могут меняться в диапазоне от около 10 или около 20, например, 26, или 50, или 100, или 150 пар оснований или меньше, до около 1K, или около 2,5K, или около 5K, даже около10K пар оснований или больше. Аналогичным образом после картирования и/или выравнивания последовательность может быть затем сохранена, например, отсортированной по позиции, например, посредством распределения по группа в соответствии с референсным диапазоном и сортировки групп по позициям референса. Кроме того, секвенированные данные могут быть обработаны посредством маркировки дубликатов, например, на основе начальной позиции и строки CIGAR, для формирования высококачественного отчета о дубликатах, и все маркированные дубликаты могут быть удалены на этом этапе. В результате может быть сформирован картированный и выровненный файл SAM, который может быть сжат для формирования файла BAM/CRAM, например, для хранения и/или дальнейшей обработки. Кроме того, после того, как файл BAM/CRAM извлечен, картированные и/или выровненные данные последовательности могут быть направлены в системный модуль определения вариантов, такой как определитель вариантов гаплотипов с повторной сборкой, который, в некоторых случаях, может использовать одно или более из выравнивания Смита-Ватермана и/или скрытой марковской модели, которые могут быть реализованы в комбинации программного и/или аппаратного оборудования, для формирования файла VCF.[00694] Accordingly, upon receipt of a BCL and/or FASTQ file by, for example, computing resource 100 and/or 300, it may be mapped and/or aligned by the computing resource, where the mapping and/or alignment may be performed on single or paired reads ends. For example, once ingested, sequence data may be compiled into reads for analysis, for example, with read lengths that may range from about 10 or about 20, such as 26, or 50, or 100, or 150 base pairs or less, to about 1K, or about 2.5K, or about 5K, even about 10K base pairs or more. Likewise, after mapping and/or alignment, the sequence can then be stored, eg sorted by position, eg by grouping according to a reference range and sorting groups by reference position. In addition, the sequenced data can be processed by marking duplicates, for example, based on the starting position and CIGAR string, to generate a high-quality duplicate report, and all marked duplicates can be removed at this stage. The result can be a mapped and aligned SAM file, which can be compressed to form a BAM/CRAM file, for example, for storage and/or further processing. In addition, after the BAM/CRAM file is retrieved, the mapped and/or aligned sequence data can be sent to a system variant detection module, such as a reassembled haplotype variant detector, which, in some cases, can use one or more of Smith-Waterman alignment and/or hidden Markov model, which may be implemented in a combination of software and/or hardware, to generate a VCF file.

[00695] Поэтому, как показано на ФИГ. 40D, система и/или один или более из ее компонентов выполнены с возможностью преобразования данных BCL в форматы данных FASTQ или SAM/BAM/CRAM, которые могут быть затем отправлены по всей системе для дальнейшей обработки и/или реконструкции данных. Например, после того, как данные BCL приняты и/или преобразованы в файл FASTQ и демультиплексированы и/или освобождены от дубликатов, они могут быть отправлены в один или более модулей конвейера, описанных в настоящем документе, например, для картирования и/или выравнивания, что в зависимости от количества обрабатываемых образцов приведет к созданию одного или более, например, нескольких, файлов SAM/BAM. Эти файлы могут быть затем отсортированы, освобождены от дубликатов и направлены в модуль определения вариантов для получения одного или более файлов VCF. Эти этапы могут быть повторены для получения больше контекста и улучшения точности. Например, после того, как данные последовательности картированы или выровнены, например, с получением файла SAM, файл SAM может быть затем сжат в один или более файлов BAM, которые после этого могут быть переданы в движок VCF для преобразования посредством обработки системой в файл VCF/gVCF, который может быть сжат в файл CRAM. В результате прохождения по всей системе на выходе может быть получен файл Gzip и/или CRAM.[00695] Therefore, as shown in FIG. 40D, the system and/or one or more of its components are configured to convert BCL data into FASTQ or SAM/BAM/CRAM data formats, which can then be sent throughout the system for further processing and/or data reconstruction. For example, after BCL data has been received and/or converted to a FASTQ file and demultiplexed and/or deduplicated, it can be sent to one or more pipeline modules described herein, for example, for mapping and/or alignment, which, depending on the number of samples processed, will result in the creation of one or more, for example several, SAM/BAM files. These files can then be sorted, de-duplicated, and sent to the variant determiner to produce one or more VCF files. These steps can be repeated to provide more context and improve accuracy. For example, after the sequence data has been mapped or aligned, for example to produce a SAM file, the SAM file can then be compressed into one or more BAM files, which can then be passed to the VCF engine for conversion by system processing into a VCF file. gVCF, which can be compressed into a CRAM file. As a result of traversing the entire system, the output may be a Gzip and/or CRAM file.

[00696] В частности, как показано на ФИГ. 40C и 40D, один или более из сформированных файлов может быть сжат и/или передан из одного компонента системы в другой, например, из локального ресурса 100 в удаленный ресурс 300, и после приема может быть распакован, например если он ранее был сжат, или преобразованы/демультиплексирован. Более конкретно, после приема файла BCL либо локальным ресурсом 100, либо удаленным ресурсом 300, он может быть преобразован в файл FASTQ, который может быть затем обработан интегральными схемами системы с целью картирования и/или выравнивания, или может быть передан на удаленный ресурс 300 для такой обработки. После картирования и/или выравнивания полученные в результате данные последовательности, например, в формате файла SAM, могут пройти дальнейшую обработку, такую как сжатие один или более раз, например, в файл BAM/CRAM, после чего эти данные могут быть обработаны путем сортировки по позиции, маркировки дубликатов и/или определения вариантов, результаты чего, например в формате VCF, могут быть затем сжаты еще раз, и/или сохранены, и/или переданы, например, из удаленного ресурса 300 на локальный ресурс 100.[00696] Specifically, as shown in FIG. 40C and 40D, one or more of the generated files may be compressed and/or transferred from one system component to another, such as from a local resource 100 to a remote resource 300, and may be decompressed upon receipt, such as if it had previously been compressed, or converted/demultiplexed. More specifically, upon receipt of a BCL file by either local resource 100 or remote resource 300, it may be converted to a FASTQ file, which may then be processed by the system integrated circuits for mapping and/or alignment purposes, or may be transmitted to remote resource 300 for such processing. Once mapped and/or aligned, the resulting sequence data, for example in a SAM file format, can undergo further processing, such as being compressed one or more times, for example into a BAM/CRAM file, after which the data can be processed by sorting by positions, marking duplicates and/or identifying variants, the results of which, for example in VCF format, can then be compressed again and/or stored and/or transferred, for example, from remote resource 300 to local resource 100.

[00697] Более конкретно, система может быть выполнена с возможностью обработки данных BCL напрямую, тем самым избавляя от этапа преобразования в файл FASTQ. Аналогичным образом данные BCL могут быть поданы прямо в конвейер для создания уникального выходного файл VCF для образца. Промежуточные файлы SAM/BAM/CRAM тоже могут быть сформированы по требованию. Следовательно, система может быть выполнена с возможностью приема и/или передачи одного или более файлов данных, таких как BCL или FASTQ, содержащих информацию о последовательности, и обработки их для создания сжатого файла данных, такого как файл данных SAM/BAM/CRAM.[00697] More specifically, the system may be configured to process BCL data directly, thereby eliminating the conversion step to a FASTQ file. Likewise, BCL data can be fed directly into the pipeline to create a unique VCF output file for the sample. Intermediate SAM/BAM/CRAM files can also be generated upon request. Therefore, the system may be configured to receive and/or transmit one or more data files, such as BCL or FASTQ, containing sequence information, and process them to create a compressed data file, such as a SAM/BAM/CRAM data file.

[00698] Соответственно, как показано на ФИГ. 41A, пользователь может по желанию получить сжатый файл и преобразовать его в исходную версию сформированного файла BCL 111c и/или FASTQ 111d, например, чтобы подвергнуть данные дальнейшей, например, более совершенной, обработке 111b сигнала, например, для исправления ошибок. В альтернативном варианте реализации пользователь может получать доступ к необработанным данным последовательности, например в формате файла BCL или FASTQ 111, и подвергать эти данные дальнейшей обработке, такой как картирование 112, и/или выравнивание 113, и/или другие связанные функции 114/115. Например, данные результатов этих процедур могут быть затем сжаты, и/или сохранены, и/или подвергнуты дальнейшей обработке 114, такой как сортировка 114a, удаление дубликатов 114b, перекалибровка 114c, локальное повторное выравнивание 114d и/или сжатие/распаковка 114e. Тот же или другой пользователь может после этого захотеть получить доступ к сжатой форме картированных и/или выровненных данных результатов и затем выполнить на них другой анализ, например чтобы выполнить одно или более из определений вариантов 115, например, посредством HMM, алгоритма Смита-Ватермана, преобразования и т.д., а результаты затем сжать и/или сохранить. Еще один пользователь системы может затем получить доступ к сжатому файлу VCF 116, распаковать его и подвергнуть данные одному или более протоколам третичной обработки.[00698] Accordingly, as shown in FIG. 41A, the user may wish to obtain the compressed file and convert it to the original version of the generated BCL 111c and/or FASTQ 111d file, for example, to subject the data to further, eg, more advanced signal processing 111b, eg, for error correction. In an alternative implementation, the user may access raw sequence data, such as in a BCL or FASTQ file format 111, and subject the data to further processing, such as mapping 112 and/or alignment 113, and/or other related functions 114/115. For example, the output data from these procedures may then be compressed and/or stored and/or subjected to further processing 114 such as sorting 114a, deduplicating 114b, recalibrating 114c, local realignment 114d, and/or compression/decompression 114e. The same or another user may then wish to access a compressed form of the mapped and/or aligned results data and then perform other analysis on it, for example to perform one or more of the variant determinations 115, for example, through an HMM, a Smith-Waterman algorithm, transformations, etc., and the results are then compressed and/or saved. Another user of the system can then access the compressed VCF file 116, decompress it, and subject the data to one or more tertiary processing protocols.

[00699] Далее, пользователь, возможно, захочет выполнить конвейерное сравнение. Картирование/выравнивание/сортировка/определение вариантов полезны для выполнения различного геномного анализа. Например, если впоследствии требуется дальнейший анализ ДНК или РНК или анализа несколько иного рода, пользователь может по желанию прогнать данные через другой конвейер и, следовательно, наличие доступа к восстановленному исходному файлу данных очень полезно. Аналогичным образом этот процесс может быть полезным, например, когда может потребоваться создать или воссоздать файл SAM/BAM/CRAM, например, когда сформирован новый или другой референсный геном и, следовательно, может потребоваться повторить картирование или выравнивание на новый референсный геном.[00699] Next, the user may want to perform a pipelined comparison. Variant mapping/alignment/sorting/identification is useful for performing various genomic analyses. For example, if further DNA or RNA analysis or analysis of a slightly different kind is subsequently required, the user may wish to run the data through a different pipeline and therefore having access to the recovered original data file is very useful. Likewise, this process may be useful, for example, when a SAM/BAM/CRAM file may need to be created or recreated, such as when a new or different reference genome has been generated and therefore the mapping or alignment may need to be repeated to a new reference genome.

[00700] Хранение сжатых файлов SAM/BAM/CRAM тоже полезно, так как оно позволят пользователю системы 1 использовать с выгодой тот факт, что референсный геном образует остов данных результатов. В таком случае важны не данные, которые согласуются с референсом, а, скорее, как данные не согласуются с референсом. Следовательно, важно сохранить только данные, которые не согласуются с референсом. Следовательно, система 1 может извлечь пользу из этого факта сохранения только того, что важно и/или полезно для пользователей системы. Таким образом, весь геномный файл (показывающие соответствие и несоответствие с референсом) или его часть (показывающая только соответствие или несоответствие с референсом) может быть выполнена с возможностью сжатия и сохранения. Поэтому можно заметить, что поскольку для исследования наиболее полезны только отличия и/или вариации между референсом и исследуемым геномом, в различных вариантах реализации нужно сохранять только эти отличия, так как все, что совпадает с референсом, не нужно рассматривать заново. Соответственно, так как любой данный геном слабо отличается от референса, например, 99% человеческих геномов, как правило, идентичны, то после создания файла BAM рассматривать и/или сохранять нужно только вариации относительно референсного генома.[00700] Storing compressed SAM/BAM/CRAM files is also useful as it will allow the user of system 1 to take advantage of the fact that the reference genome forms the backbone of the result data. In such a case, what is important is not the data that agrees with the reference, but rather how the data does not agree with the reference. Therefore, it is important to retain only data that is inconsistent with the reference. Therefore, system 1 can benefit from this fact of storing only what is important and/or useful to users of the system. Thus, the entire genomic file (showing a match and mismatch to the reference) or a portion thereof (showing only the match or mismatch to the reference) can be compressed and stored. Therefore, it can be noted that since only the differences and/or variations between the reference and the genome under study are most useful for research, only these differences need to be preserved in different implementations, since everything that matches the reference does not need to be examined anew. Accordingly, since any given genome differs little from the reference genome, for example, 99% of human genomes are usually identical, then after creating a BAM file, only variations relative to the reference genome need to be considered and/or saved.

[00701] Соответственно, как показано на ФИГ. 41B, другим полезным компонентом доступной из облака системы 1, предложенной в настоящем документе, является контроллер 151 управления рабочими потоками, который может быть использован для автоматизации потока системы. Такая автоматизация системы может включать в себя использование различных компонентов системы для доступа к данным, либо локально 100, либо удаленно 300, когда и/или где они становятся доступными с последующим по существу автоматическим применением к этим данным дальнейших этапов обработки, например, относящихся к BioIT-конвейерам, описанным в настоящем документе. Соответственно, контроллер 151 управления рабочими потоками является основополагающей технологией автоматизации для руководства различными конвейерами системы, например, 111, 112, 113, 114 и/или 115, и в различных случаях может использовать компонент 121a искусственного интеллекта.[00701] Accordingly, as shown in FIG. 41B, another useful component of the cloud-accessible system 1 proposed herein is a workflow controller 151 that can be used to automate the flow of the system. Such system automation may involve the use of various system components to access data, either locally 100 or remotely 300 when and/or where it becomes available, followed by substantially automatic application of further processing steps, such as those related to BioIT, to that data - the conveyors described in this document. Accordingly, the workflow controller 151 is the underlying automation technology for managing the system's various pipelines, such as 111, 112, 113, 114 and/or 115, and in various cases may utilize artificial intelligence component 121a.

[00702] Например, система 1 может содержать модуль искусственного интеллекта (ИИ), который выполнен с возможностью анализа различных данных системы и в ответ на них передает свои результаты с помощью системы 151 управления рабочими потоками. В частности, в различных случаях модуль ИИ может быть выполнен с возможностью анализа различных геномных данных, представленных в системе, а также данных результатов, которые формируются обработкой данных, для выявления и определения различных взаимосвязей между этими данными и/или любыми другими данными, которые могут быть введены в систему. Более конкретно, модуль ИИ может быть выполнен с возможностью анализа различных геномных данных в соответствии с множеством других факторов с целью определения любой взаимосвязи, например, причинно-следственной связи, между различными факторами, например, точками данных, которые могут быть информативными в отношении воздействий рассматриваемых факторов на определенные геномные данные, например, вариацию данных, и наоборот.[00702] For example, the system 1 may include an artificial intelligence (AI) module that is capable of analyzing various system data and, in response, communicates its results using the workflow management system 151. In particular, in various cases, the AI module may be configured to analyze various genomic data presented in the system, as well as outcome data that is generated by data processing, to identify and determine various relationships between this data and/or any other data that may be entered into the system. More specifically, the AI module may be configured to analyze various genomic data according to a variety of other factors to determine any relationship, e.g., cause and effect, between various factors, e.g., data points that may be informative regarding the impacts of the ones in question. factors on certain genomic data, such as data variation, and vice versa.

[00703] А именно, как описано более подробно ниже в настоящем документе, модуль ИИ может быть выполнен с возможностью коррелирования геномных данных субъекта, формируемых системой, с любыми электронными медицинскими записями для данного субъекта или других людей, с целью определения взаимосвязей между ними и/или другими уместными факторами и/или данными. Соответственно, в число таких других данных, которые могут быть использованы при определении любых уместных воздействий и/или взаимосвязей, которые могут иметь эти факторы в отношении субъекта и/или его геномных данных и/или здоровья, входят: данные НИПТ, данные ОРИТН, относящиеся к раку данные, данные LDT, относящиеся к окружающей среде и/или аграрно-биологические данные и/или другие такие данные. Например, дальнейшие данные для анализа могут быть получены с помощью таких других факторов, как данные об окружающей среде, данные клады, данные микробиома, данные метилирования, структурные данные, например, данные химерного или сопряженного рида, данные генеративных вариантов, данные аллелей, данные РНК и другие такие данные, относящиеся к генетическим материалам субъекта. Следовательно, модуль ИИ может использоваться для связывания различных относящихся к делу данных, протекающих через систему, с вариантами, определенными в геноме одного или более субъектов, наряду с другими возможными связанными последствиями, основанными на факторах.[00703] Namely, as described in more detail later herein, the AI module may be configured to correlate a subject's genomic data generated by the system with any electronic medical records for that subject or other individuals to determine relationships between them and/or or other relevant factors and/or data. Accordingly, such other data that may be used in determining any relevant effects and/or relationships that these factors may have on the subject and/or his genomic data and/or health include: NIPT data, NICU data, cancer data, LDT data, environmental and/or agro-biological data and/or other such data. For example, further data for analysis may be derived from other factors such as environmental data, clade data, microbiome data, methylation data, structural data such as chimeric or conjugate read data, generative variant data, allele data, RNA data and other such data relating to the subject's genetic materials. Therefore, the AI module can be used to associate various relevant data flowing through the system with variants identified in the genome of one or more subjects, along with other possible associated factors-based consequences.

[00704] В частности, движок ИИ может быть выполнен с возможностью выполнения в ЦПУ/ГПУ/КПУ и/или он может быть выполнен с возможностью выполнения в виде ускоренного движка ИИ, который может быть реализован в FPGA и/или квантовом процессорном устройстве. А именно, движок ИИ может быть связан с одной или более, например, всеми, различными базами данных системы, чтобы движок ИИ мог использовать и обрабатывать различные данные, протекающие через систему. Кроме того, когда субъект, геном которого обрабатывают, дает соответствующее разрешение на доступ к геномным и данным и истории болезни, система выполнена с возможностью коррелирования различных наборов данных друг с другом и может затем извлекать данные для определения различных значимых соответствий, ассоциаций и/или взаимосвязей.[00704] In particular, the AI engine may be configured to execute on a CPU/GPU/CPU and/or it may be configured to execute as an accelerated AI engine that may be implemented on an FPGA and/or a quantum processing device. Namely, the AI engine may be coupled to one or more, for example all, of the system's different databases so that the AI engine can use and process various data flowing through the system. In addition, when the subject whose genome is being processed gives appropriate permission to access genomic data and medical history, the system is configured to correlate the various data sets with each other and can then extract the data to determine various significant matches, associations and/or relationships .

[00705] Точнее говоря, модуль ИИ может быть выполнен с возможностью реализации протокола машинного обучения применительно к входным данным. Например, геномные данные множества субъектов, которые формируют на основе выполняемых анализов, описанных в настоящем документе, могут быть сохранены в базе данных. Аналогичным образом при наличии соответствующих разрешений и подтверждений подлинности можно получить доступ к электронным медицинским записям/электронному учету здоровья (EMR) субъекта, геномную ДНК которого обрабатывают, и можно подобным образом сохранить в базе данных. Как описано более подробно ниже, движки обработки могут быть выполнены с возможностью анализа геномных данных субъектов, а также данных их EMR, с целью определения любых корреляций между ними. Эти корреляции будут затем использованы для подтверждения наблюдаемых взаимосвязей, а их результаты могут быть использованы для более эффективного и более успешного выполнения различных функций системы.[00705] More specifically, the AI module may be configured to implement a machine learning protocol on the input data. For example, genomic data of a plurality of subjects, which is generated based on the assays described herein, may be stored in a database. Likewise, with appropriate permissions and authentications, the electronic medical records/electronic health record (EMR) of the subject whose genomic DNA is being processed can be accessed and similarly stored in a database. As described in more detail below, processing engines may be configured to analyze subjects' genomic data as well as their EMR data to determine any correlations between them. These correlations will then be used to confirm the observed relationships, and the results can be used to perform the various functions of the system more efficiently and more successfully.

[00706] Например, движок обработки ИИ может получать доступ к геномным данным субъектов, коррелировать их с известными болезнями и состояниями этих субъектов и на основе данного анализа модуль ИИ может учиться выполнять прогнозные корреляции, опираясь на эти данные, чтобы повышать свои возможности предсказания наличия болезни и/или других подобных состояний у других индивидов. В частности, определяя такие корреляции между геномами других людей с их EMR, например, в отношении наличия маркеров болезней, модуль ИИ может научиться выявлять такие корреляции, например, определяемые системой маркеры болезней, в геномах других людей, тем самым приобретая способность предсказывать возможность болезни или других поддающихся опознанию состояний. Более конкретно, анализируя геном субъекта в сравнении с известными или определенными генетическими маркерами, и/или путем определения вариаций в геноме субъекта, и/или, дополнительно, путем определения потенциальной взаимосвязи между геномными данными и состоянием здоровья субъекта, например, EMR, модуль ИИ может быть в состоянии делать выводы не только в отношении изучаемого субъекта, но и других людей, образцы которых будут брать в будущем. Это можно делать, например, на систематической основе, для каждого субъекта отдельно, или в пределах популяций и/или в разных географических районах.[00706] For example, an AI processing engine can access genomic data from subjects, correlate it with known diseases and conditions of those subjects, and based on this analysis, the AI engine can learn to perform predictive correlations based on that data to improve its ability to predict the presence of disease and/or other similar conditions in other individuals. In particular, by identifying such correlations between the genomes of other people with their EMR, for example regarding the presence of disease markers, the AI module can learn to identify such correlations, for example, system-defined disease markers, in the genomes of other people, thereby gaining the ability to predict the possibility of disease or other identifiable conditions. More specifically, by analyzing a subject's genome in comparison to known or defined genetic markers, and/or by identifying variations in the subject's genome, and/or, additionally, by identifying potential relationships between genomic data and the subject's health status, such as an EMR, the AI module can be able to draw conclusions not only about the subject being studied, but also about other people from whom samples will be taken in the future. This can be done, for example, on a systematic basis, for each subject separately, or within populations and/or in different geographical areas.

[00707] Более конкретно, применительно к представленным системам, создают скопление ридов. Скопление может перекрывать области, о которых известно, что в них более высокая вероятность значительной вариации. Соответственно, с одной стороны, система будет анализировать скопление для определения наличия вариации, и, в то же самое время, исходя из предыдущих результатов, она уже будет знать правдоподобие присутствия или отсутствия вариации там, например, она будет иметь первоначальный прогноз в отношении того, каким должен быть ответ. Вне зависимости от того, имеется ли там ожидаемая вариация или нет, эта информация будет полезна при анализе данной области геномов других субъектов. Например, это может быть одна точка данных в сумме точек данных, используемых системой для улучшения определений вариантов и/или более хорошего связывания этих вариантов с одним или более болезненных состояний или других состояний здоровья.[00707] More specifically, in relation to the presented systems, a collection of reads is created. The cluster may overlap areas known to have a higher likelihood of significant variation. Accordingly, on the one hand, the system will analyze the cluster to determine the presence of variation, and, at the same time, based on previous results, it will already know the likelihood of the presence or absence of variation there, for example, it will have an initial prediction regarding whether what should the answer be? Regardless of whether the expected variation is present or not, this information will be useful when analyzing this region of the genomes of other subjects. For example, it may be one data point in a sum of data points used by the system to improve variant definitions and/or better associate those variants with one or more disease states or other health conditions.

[00708] Например, в примере протокола изучения анализ ИИ может включать в себя получение электронного изображения скопления одной или более областей в геноме, например, для тех областей, на которые падает подозрение в кодировании одного или более состояний здоровья, и связывания этого изображения с известными определениями вариаций из других скоплений, например, когда отношение этих вариаций к болезненным состояниями может быть известно или не известно. Это можно проделывать снова и снова, обучая систему обрабатывать информацию, создавать соответствующие ассоциации и выполнять правильные определения вариантов быстрее и быстрее с более высокой точностью. Сделав это для различных, например, всех, известных областей генома, подозреваемых в качестве причины болезни, то же самое можно повторить с остальной частью генома, например, пока не будет изучен весь геном. Аналогичным образом это можно повторять снова и снова для множества образцов геномов раз за разом, чтобы натренировать систему, например, определитель вариантов, выполнять определение вариантов точнее, быстрее и эффективнее, и/или позволить модулю третичной обработки лучше выявлять болезненные состояния.[00708] For example, in an example study protocol, the AI analysis may include obtaining an electronic image of a cluster of one or more regions in the genome, for example, those regions suspected of encoding one or more health conditions, and associating this image with known definitions of variations from other collections, for example where the relationship of these variations to disease states may or may not be known. This can be done over and over again, training the system to process information, make appropriate associations, and make correct choice determinations faster and faster with higher accuracy. Having done this for different, for example all, known regions of the genome suspected of causing a disease, the same can be repeated with the rest of the genome, for example, until the entire genome has been studied. Likewise, this can be repeated over and over again for multiple genome samples over and over again to train a system, such as a variant detector, to perform variant detection more accurately, faster, and more efficiently, and/or to allow the tertiary processing module to better identify disease states.

[00709] Соответственно, система принимает множество входных данных с известными ответами, выполняет анализ и вычисляет ответ, и тем самым обучается в ходе этого процесса, например, воспроизводит изображение скопления, относящегося к одному геному, и затем учится выполнять определение на основе другого генома, быстрее и быстрее, так как ей уже легче определять, что последующие скопления напоминают ранее полученные изображения с известной взаимосвязью с болезненными состояниями. Таким образом, система может быть выполнена с возможностью обучения прогнозированию наличия вариантов, например, на основе распознаваний образов, и/или прогнозированию взаимосвязи между наличием этой вариации с одним или более медицинских состояний.[00709] Accordingly, the system receives a set of inputs with known answers, performs an analysis and calculates the answer, and thereby learns through this process, for example, rendering an image of a cluster related to one genome and then learning to make a determination based on another genome, faster and faster, since it is easier for her to determine that subsequent clusters resemble previously obtained images with a known relationship with disease states. Thus, the system may be configured to learn to predict the presence of a variant, for example, based on pattern recognition, and/or to predict the relationship between the presence of that variation with one or more medical conditions.

[00710] Точнее говоря, чем больше система выполняет анализов частичного или полного генома и определяет взаимосвязь между вариациями и различными состояниями, например, в множестве образцов, тем лучше она делает прогнозы, например, на основе частичных или полных изображений генома скоплений. Это полезно при прогнозировании болезненных состояний на основе изображений скопления и/или другого анализа ридов, и может включать в себя создание корреляции между одной или более EMR (содержащими фенотипические данные), изображением скопления и/или известными вариантами (генотипические данные) и/или болезнями и болезненными состояниями, например, на основе которых можно делать прогнозы. В различных случаях система может включать в себя функцию транскрипции, чтобы быть в состоянии транскрибировать любые физические примечания, которые могут быть частью медицинской записи пациента, для включения этих данных в ассоциации.[00710] More specifically, the more a system analyzes a partial or full genome and determines relationships between variations and different conditions, for example across multiple samples, the better it makes predictions, for example based on partial or full genome images of clusters. This is useful in predicting disease states based on cluster images and/or other read analysis, and may involve creating a correlation between one or more EMRs (containing phenotypic data), the cluster image and/or known variants (genotypic data) and/or diseases and disease states, for example, on the basis of which predictions can be made. In various cases, the system may include a transcription function to be able to transcribe any physical notes that may be part of the patient's medical record to include these data in associations.

[00711] В одной модели использования субъект может иметь мобильное средство отслеживания и/или датчик, например, мобильный телефон или другое вычислительное устройство, которое может быть выполнено с возможностью как отслеживания местоположения субъекта, так и восприятия условий окружающей среды и/или физиологических условий пользователя в этом месте. Возможен сбор и других воспринимаемых данных. Например, мобильное вычислительное устройство может содержать GPS-трекер и/или его местоположение может быть определено с помощью триангуляции вышек сотовой связи, и может быть выполнено с возможностью передачи собранных им данных, например, посредством сотовой связи WIFI, Bluetooth или другого соответствующим образом сконфигурированного протокола связи. Таким образом, мобильное устройство может отслеживать и определять категорию данных окружающей среды, относящихся к географическим местоположениям, условий окружающей среды, физиологического состояния и других воспринимаемых данных субъекта, владеющего мобильным компьютером, с которыми он сталкивается в своей повседневной жизни. Собранные данные о местоположении, окружающей среде, физиологическом состоянии, здоровье и/или другие связанные данные, например, данные ZNA, могут быть затем переданы, например, на регулярной или периодической основе, в оду или более баз данных, описанных в настоящем руководстве, причем собранные данные ZNA могут быть коррелированы с историей болезни субъекта, например, с записями EMR, и/или геномными данными, как определено системой, описанной в настоящем документе.[00711] In one use model, a subject may have a mobile tracker and/or sensor, such as a cell phone or other computing device, that may be configured to both track the subject's location and sense environmental and/or physiological conditions of the user in this place. Other perceptual data may also be collected. For example, the mobile computing device may contain a GPS tracker and/or its location may be determined by triangulating cell towers, and may be configured to transmit the data it collects, for example, via cellular WIFI, Bluetooth, or other suitably configured protocol communications. Thus, the mobile device can monitor and categorize environmental data related to geographic locations, environmental conditions, physiological state, and other perceptual data of the mobile computer user that he encounters in his daily life. The collected location, environmental, physiological, health and/or other related data, such as ZNA data, may then be transmitted, for example, on a regular or periodic basis, to one or more databases described in this manual, wherein the collected ZNA data may be correlated with the subject's medical history, such as EMR records, and/or genomic data, as determined by the system described herein.

[00712] Аналогичным образом в различных случаях одни или более из этих данных могут быть направлены с платформы сбора и анализа данных ZNA в центральный репозиторий, например, в правительственном учреждении, для анализа в большем, например, общегосударственном, масштабе, например, в соответствии с искусственным интеллектом, описанным в настоящем документе. Например, база данных, например, управляемая государством база данных, может иметь записанные данные об окружающей среде, с которыми можно сравнить данные об окружающей среде субъекта. Например, в одном иллюстративном случае тест НИПТ может быть выполнен для матери, отца и их ребенка, и затем в течении всех их жизней можно собирать их данные об окружающей среде, геномные данные и данные медицинских записей могут и коррелировать друг с другом и/или одной или более моделями, например, на протяжении жизни индивидов, особенно в отношении возникновения мутаций, например, обусловленных факторами воздействия окружающей среды. Этот сбор данных может осуществляться на протяжении всей жизни индивида и может выполняться на основе семьи в целом, чтобы лучше построить базу данных сбора данных и лучше предсказывать воздействия таких факторов на генетические вариации и наоборот.[00712] Likewise, in various cases, one or more of these data may be directed from the ZNA data collection and analysis platform to a central repository, for example, in a government agency, for analysis on a larger, for example, national, scale, for example, in accordance with artificial intelligence described in this document. For example, a database, such as a government-run database, may have recorded environmental data against which the subject's environmental data can be compared. For example, in one illustrative case, an NIPT test may be performed on a mother, father, and their child, and then over the course of their entire lives, their environmental, genomic, and medical record data may be collected and correlated with each other and/or the same or more patterns, for example, over the life course of individuals, especially with respect to the occurrence of mutations, for example due to environmental factors. This data collection can be carried out throughout the life of an individual and can be done on a family basis to better build a data collection database and better predict the effects of such factors on genetic variation and vice versa.

[00713] Соответственно, контроллер 151 управления рабочими потоками позволяет системе 1 принимать входные данные из одного или более источников, таких как множество приборов для секвенирования, например, 110a, 110b, 110c и т.д., и множество входных данных из одного прибора 110 секвенирования, где принимаемые данные представляют геномы множества субъектов. В таких случаях контроллер 151 управления рабочими потоками не только отслеживает все входящие данные, но и эффективно организовывает и облегчает вторичную и/или третичную обработку принимаемых данных. Соответственно, контроллер 151 рабочих потоков обеспечивает системе 1 возможность беспрепятственного подключения как небольшим, так и к крупным центрам секвенирования, куда может поступать генетический материал любого рода посредством одного или более аппаратов 110 для секвенирования одновременно, причем все они могут быть переданы в систему 1 посредством облака 50.[00713] Accordingly, the workflow controller 151 allows the system 1 to receive input data from one or more sources, such as multiple sequencing instruments, such as 110a, 110b, 110c, etc., and multiple input data from a single instrument 110 sequencing, where the incoming data represents the genomes of multiple subjects. In such cases, the workflow controller 151 not only monitors all incoming data, but also efficiently organizes and facilitates secondary and/or tertiary processing of the received data. Accordingly, the workflow controller 151 allows system 1 to seamlessly connect to both small and large sequencing centers where genetic material of any kind can be received by one or more sequencing machines 110 simultaneously, all of which can be transmitted to system 1 via the cloud 50.

[00714] Точнее говоря, как показано на ФИГ. 41A, в различных случаях один или более из множества образцов может быть принят системой 1, и поэтому система 1 может быть выполнена с возможностью приема и эффективной обработки образцов, либо последовательно, либо параллельно, например, в режиме обработки множества образцов. Соответственно, чтобы рационализировать и/или автоматизировать обработку множества образцов, управление системой может осуществляться всеобъемлющей системой 151 управления рабочими потоками (WMS) или системой управления лабораторной информацией (LIMS) WMS 151 позволяет пользователям без труда планировать выполнение множества рабочих потоков для любого конвейера, а также корректировать или ускорять алгоритмы анализа СНП, конвейеров платформы и их сопровождающих приложений.[00714] More precisely, as shown in FIG. 41A, in various cases, one or more of a plurality of samples may be received by the system 1, and therefore the system 1 may be configured to receive and efficiently process the samples, either sequentially or in parallel, for example, in a multi-sample processing mode. Accordingly, to streamline and/or automate the processing of multiple samples, the system can be managed by a comprehensive Workflow Management System (WMS) 151 or Laboratory Information Management System (LIMS). The WMS 151 allows users to easily schedule multiple workflows for any pipeline, as well as adjust or accelerate analysis algorithms for SNP, platform pipelines and their accompanying applications.

[00715] В таком случае каждая обрабатываемая последовательность может иметь штрихкод, указывающий тип последовательности, формат файла и/или какие этапы обработки были выполнены, и какие этапы обработки должны быть выполнены. Например, штрихкод может содержать объявление, указывающее «это обработка генома субъекта X в формате файла Y, поэтому эти данные нужно пропустить через конвейер Z», или, аналогичным образом, может быть указано «это результирующие данные A, которые должны поступить в систему составления отчетов». Соответственно, по мере приема, обработки и передачи через систему данных, штрихкоды и результаты будут загружаться в систему 151 управления рабочими потоками, такую как LIMS (система управления лабораторной информацией). В данном примере LIMS может быть стандартным средством, которое используют для управления лабораториями, или это может быть специально разработанное средство, используемое для управления технологическим процессом.[00715] In such a case, each sequence being processed may have a barcode indicating the sequence type, file format, and/or what processing steps have been performed and what processing steps are to be performed. For example, a barcode may contain a declaration indicating "this is the processing of the genome of subject X in file format Y, so this data needs to be passed through pipeline Z", or, similarly, it may state "this is the resulting data A, which should go to the reporting system " Accordingly, as data is received, processed, and transmitted through the system, barcodes and results will be uploaded to a workflow management system 151, such as a LIMS (Lab Information Management System). In this example, the LIMS could be a standard tool used for laboratory management, or it could be a custom tool used for process control.

[00716] В любом случае контроллер 151 управления рабочими потоками отслеживает снабженный штрихкодом образец с момента поступления на данный участок, например, для хранения и/или обработки, до отправки результатов пользователю. В частности, контроллер 151 управления рабочими потоками выполнен с возможностью отслеживания всех данных по мере их прохождения через систему от начала до конца. Более конкретно, при поступлении образца связанный с ним штрикод считывается, и на основе этого считывания система определяет порядок выполнения запрошенной работы и подготавливает образец для обработки. Такая обработка может быть простой, например, выполняется одним геномным конвейером, или она может быть более сложной, например, выполняется множеством конвейеров, например пятью конвейерами, которые должны быть сшиты вместе. В одной конкретной модели формируемые или принимаемые данные можно прогнать через систему, чтобы получить обработанные данных, которые можно затем прогнать через эквивалентный GATK модуль, и результаты сравнить, а затем образец можно передать в другой конвейер для дальнейшей, например, третичной, обработки 700 (см. ФИГ. 41B).[00716] In either case, the workflow controller 151 tracks the barcoded sample from its arrival at the site, for example for storage and/or processing, until the results are sent to the user. In particular, the workflow controller 151 is configured to track all data as it flows through the system from start to finish. More specifically, when a sample arrives, the associated barcode is read, and based on that read, the system determines how to perform the requested work and prepares the sample for processing. Such processing may be simple, such as performed by a single genomic pipeline, or it may be more complex, such as performed by multiple pipelines, such as five pipelines that must be stitched together. In one particular model, the generated or received data can be run through the system to produce processed data, which can then be run through an equivalent GATK module and the results compared, and then the sample can be passed on to another pipeline for further, such as tertiary, processing 700 (see FIGURE 41B).

[00717] Следовательно, система в целом может работать в соответствии с несколькими различными конвейерами обработки. Действительно, многие процессы системы могут быть связаны между собой, причем диспетчер 151 рабочих потоков уведомляется или иным образом определяет, что задание ожидает, количественно оценивает матрицы задания, выявляет свободные ресурсы для выполнения требуемого анализа, загружает задание в систему, принимает поступающие данные, например, из секвенатора 110, загружает их и затем обрабатывает. В частности, после того, как рабочий процесс настроен, его можно сохранить, а затем этот рабочий процесс получает измененный штрихкод, и автоматизированный процесс происходит в соответствии с указаниями рабочих потоков.[00717] Therefore, the overall system may operate in accordance with several different processing pipelines. Indeed, many of the system's processes may be interconnected, with the workflow manager 151 notifying or otherwise determining that a job is waiting, quantifying the job's matrices, identifying available resources to perform the required analysis, loading the job into the system, receiving incoming data, e.g. from the sequencer 110, loads them and then processes them. Specifically, once a workflow is configured, it can be saved, and then that workflow receives the modified barcode and the automated process occurs as directed by the workflows.

[00718] До появления настоящей автоматизированной системы 151 управления рабочими потоками множеству специалистов в области биоинформатики приходилось в течение длительного времени конфигурировать и настраивать систему и ее составляющие части, а затем нужно было потратить еще время на фактическое выполнение анализа. Дело еще больше усложняется тем, что перед приемом следующего образца на анализ нужно было изменять конфигурацию системы, причем изменение конфигурации системы для анализа нового набора образцов требовало еще больше времени. Благодаря технологии, описанной в настоящем документе, система может быть полностью автоматизирована. Представленная система, в частности, выполнена с возможностью автоматического приема множества образцов, отображения их на множество различных рабочих потоков и конвейеров и обработки их на одних и тех же или множестве разных системных плат.[00718] Before the advent of true automated workflow management system 151, many bioinformatics specialists had to spend a long time configuring and tuning the system and its component parts, and then had to spend more time actually performing the analysis. To further complicate matters, the system had to be reconfigured before the next sample could be accepted for analysis, and reconfiguring the system to analyze a new set of samples required even more time. Thanks to the technology described in this document, the system can be fully automated. The present system is particularly configured to automatically accept multiple samples, map them to multiple different work streams and pipelines, and process them on the same or multiple different motherboards.

[00719] Соответственно, система 151 управления рабочими потоками считывает требования к заданиям из штрихкодов, выделяет ресурсы для выполнения заданий, например, вне зависимости от местоположения, обновляет штрихкод образца и направляет образцы в выделенные ресурсы, например, блоки обработки, для обработки. Следовательно, именно диспетчер 151 рабочих потоков определяет протоколы вторичного 600 анализа и/или третичного 700 анализа, которые будут выполнены на принятых образцах. Эти блоки обработки представляют собой ресурсы, которые доступны для разграничения и выполнения операций, назначенных каждому набору данных. В частности, контроллер 151 рабочих потоков управляет различными операциями, связанными с приемом и считыванием образца, определением заданий, выделением ресурсов для выполнения этих заданий, например, вторичной обработки, соединение всех компонентов системы и продвижение набора образцов по системе от одного компонента к другому. Таким образом, контроллер 151 совершает действия по управлению всей системой, от начала до конца, например, от приема образца до формирования файла VCF и/или до третичной обработки включительно (см. ФИГ. 41B).[00719] Accordingly, the workflow management system 151 reads job requirements from the barcodes, allocates resources to execute the jobs, e.g., regardless of location, updates the sample barcode, and routes the samples to allocated resources, e.g., processing units, for processing. Therefore, it is the workflow manager 151 that determines the secondary analysis 600 and/or tertiary analysis 700 protocols that will be performed on the received samples. These processing units are the resources that are available to delimit and perform the operations assigned to each data set. In particular, the workflow controller 151 manages various operations related to receiving and reading a sample, defining jobs, allocating resources to perform those jobs, such as secondary processing, connecting all system components, and moving a set of samples through the system from one component to another. Thus, the controller 151 acts to control the entire system from start to finish, for example, from sample reception to VCF file generation and/or up to and including tertiary processing (see FIG. 41B).

[00720] В дополнительных случаях, как показано на ФИГ. 41C, система 1 может включать в себя дополнительный ярус модулей 800 обработки, например, выполненных с возможностью осуществления дополнительной обработки, например, данных результатов вторичной и/или третичной обработки, например, для диагностики, открытия новых болезней и/или способов лечения и/или профилактики их. Например, в различных случаях может быть предусмотрен дополнительный уровень обработки 800, например, для диагностики болезней, терапевтического воздействия и/или профилактического предупреждения 70, например, включая НИПТ 123a, ОРИТН 123b, рак 123c, LDT 123d, аграрно-биологические 123e и другие такие данные диагностики болезней, профилактики и/или терапий, используя эти данные сформированные одним или более представленными первичными, и/или вторичными, и/или третичными конвейерами.[00720] In additional cases, as shown in FIG. 41C, system 1 may include an additional tier of processing modules 800, for example, configured to perform additional processing, for example, of secondary and/or tertiary processing data, for example, for diagnosis, discovery of new diseases and/or treatments and/or preventing them. For example, an additional level of processing 800 may be provided in various cases, such as for disease diagnosis, therapeutic intervention, and/or prophylactic warning 70, for example, including NIPT 123a, NICU 123b, cancer 123c, LDT 123d, agri-biological 123e, and other such data for disease diagnosis, prevention and/or therapy, using these data generated by one or more of the provided primary and/or secondary and/or tertiary pipelines.

[00721] Соответственно, в настоящем документе представлена система 1 для создания и использования локальной сети 30 и/или глобальной гибридной сети 50. Например, в настоящее время локальное облако 30 используют в основном в качестве частного хранилища данных, например, в удаленном месте 400 хранения. В таком случае вычисление данных выполняют локально 100 с помощью локального вычислительного ресурса 140, и когда потребности в хранение большие, можно получить доступ к локальному облаку 30, чтобы сохранить данные, сформированные локальным вычислительным ресурсом 140, например, с помощью удаленного частного ресурса 400 хранения. Следовательно, управление формируемыми данными, как правило, осуществляют полностью в месте эксплуатации локально 100. В других вариантах реализации формирование, вычисление и управление данными осуществляют полностью извне за счет защищенного подключения к удаленному вычислительному ресурсу 300 посредством интерфейса частного облака 30.[00721] Accordingly, a system 1 is presented herein for creating and using a local network 30 and/or a wide area hybrid network 50. For example, local cloud 30 is currently used primarily as a private data store, such as at a remote storage location 400 . In such a case, data computation is performed locally 100 using the local computing resource 140, and when storage needs are large, the local cloud 30 can be accessed to store the data generated by the local computing resource 140, for example, using a remote private storage resource 400. Consequently, the data generated is typically managed entirely locally 100. In other implementations, the data is generated, computed, and managed entirely externally through a secure connection to the remote computing resource 300 via a private cloud interface 30.

[00722] В частности, реализацию платформы биоинформационного анализа, локальные функции вычисления 140 и/или хранения 200 поддерживают, как правило, локально в месте эксплуатации 100. Однако, когда потребности хранения превышают емкость локального хранилища, данные можно выгрузить, получив доступ к локальному облаку 30 для приватного хранения вне места 400 эксплуатации. Кроме того, когда возникает потребность обеспечить другим удаленным пользователям доступ к сохраненным данным 400, такие данные могут быть переданы и сделаны доступными посредством интерфейса глобального облака 50 для удаленного хранилища 400, но для глобального доступа. В таком случае, когда вычислительные ресурсы 140, требуемые для выполнения функций вычисления минимальные, но требования к хранению большие, вычислительную функцию 140 можно поддерживать локально 100, тогда как функцию хранения 400 можно поддерживать удаленно, например, либо для частного, либо для глобального доступа, причем полностью обработанные данные перемещаются туда и обратно между локальной функцией 140 обработки, например, только для локальной обработки, и функцией хранения 400, например, для удаленного хранения 400 обработанных данных, например, путем использования протоколов JIT, описанных выше в настоящем документе.[00722] In particular, the bioinformatics analysis platform implementation, local compute 140 and/or storage 200 functions are typically supported locally at the site 100. However, when storage needs exceed local storage capacity, the data can be offloaded by accessing the local cloud 30 for private storage outside the place of 400 operation. In addition, when there is a need to provide other remote users with access to the stored data 400, such data can be transferred and made available through the global cloud interface 50 to the remote storage 400, but for global access. In such a case, when the computing resources 140 required to perform the computing functions are minimal, but the storage requirements are large, the computing function 140 can be supported locally 100, while the storage function 400 can be supported remotely, for example, for either private or global access. wherein the fully processed data is moved back and forth between a local processing function 140, for example for local processing only, and a storage function 400, for example for remotely storing the processed data 400, for example using JIT protocols described above herein.

[00723] Например, это можно показать на примере функции секвенирования 110, такой как типичный СНП, где ресурс 100 формирования данных и/или вычисления выполнен с возможностью осуществления функций, необходимых для секвенирования генетического материала для получения генетических секвенированных данных, например ридов, причем эти данные создают на месте 100 эксплуатации и/или передают на место эксплуатации локально 30. После формирования этих ридов, например, с помощью СНП в месте эксплуатации, могут быть затем переданы, например, в виде файла BCL или FASTQ, по облачной сети 30, например, для хранения 400, в удаленное место 300 таким образом, чтобы их можно было вызвать с облака 30 при необходимости, например, для дальнейшей обработки. Например, после того, как данные последовательности сформированы и сохранены, например, 400, они могут быть после этого вызваны, например, для локального использования, например, для выполнения одного или более из функций вторичной 600 обработки и/или третичной 700 обработки, то есть в месте, удаленном от хранилища 400, например локально 100. В таком случае локальный ресурс 200 хранения служит просто в качестве кэша хранилища, куда данные помещают в ожидании перемещения на облако 30/50 или с него, например, в удаленное хранилище 400 или из него.[00723] For example, this can be illustrated by the example of a sequencing function 110, such as a typical NGN, where the data generation and/or computation resource 100 is configured to perform functions necessary for sequencing genetic material to obtain genetic sequenced data, such as reads, wherein the data is generated locally 100 and/or transmitted to the operating location locally 30. Once generated, these reads, for example by the on-site NPS, can then be transmitted, for example as a BCL or FASTQ file, over the cloud network 30, for example , to store 400 , in a remote location 300 so that they can be recalled from the cloud 30 if necessary, for example for further processing. For example, after sequence data has been generated and stored, for example, 400, it may thereafter be called up, for example, for local use, for example, to perform one or more of the secondary processing 600 and/or tertiary processing 700 functions, i.e. in a location remote from storage 400, such as on-premises 100. In such a case, local storage resource 200 simply serves as a storage cache where data is placed pending movement to or from the 30/50 cloud, such as to or from remote storage 400 .

[00724] Аналогичным образом, когда вычислительная функция объемная, например, требует одно или более ядер 300 удаленных вычислительных серверов или вычислительных кластеров для обработки данных, и когда потребности в хранении для хранения обработанных данных 200 относительно минимальные по сравнению с вычислительными ресурсами 300, требуемыми для обработки данных, подлежащие обработке данные могут быть отправлены, например, посредством облака 30, для обработки удаленным вычислительным ресурсом 300, который может содержать одно или более ядер или кластеров вычислительных ресурсов, например, один или более супервычислительных ресурсов. В таком случае после того, как данные обработаны облачным ядром 300 компьютера, их можно переместить посредством облачной сети 30, чтобы сохранить локально 200 и сделать легко доступными для использования локальным вычислительным ресурсом 140, например, для локального анализа и/или диагностики. Конечно, удаленно сформированные данные 300 могут быть также сохранены удаленно 400.[00724] Likewise, when the computing function is large, for example, requiring one or more cores 300 of remote computing servers or computing clusters to process the data, and when the storage requirements for storing the processed data 200 are relatively minimal compared to the computing resources 300 required for processing data, the data to be processed may be sent, for example, through the cloud 30, for processing by a remote computing resource 300, which may contain one or more cores or clusters of computing resources, for example, one or more supercomputing resources. In such a case, after the data has been processed by the cloud computer core 300, it can be moved via the cloud network 30 to be stored locally 200 and made readily available for use by the local computing resource 140, such as for local analysis and/or diagnostics. Of course, the remotely generated data 300 may also be stored remotely 400.

[00725] Это также можно показать на примере типичной функции вторичной 600 обработки, например, когда предварительно обработанные секвенированные данные, например данные рида, хранятся локально 200 и к ним получает доступ, например, локальный вычислительный ресурс 100, и передает по облачной сети 30 в Интернете на удаленное вычислительное средство 300 для обработки тем самым, например, с помощью функции вторичной 600 или функции третичной 700 обработки, с целью получения обработанных данных результатов, которые могут быть затем отправлены обратно на локальное средство 100 для хранения 200 тем самым. Это может иметь место, когда местный практикующий врач формирует секвенированные данные рида с помощью локального ресурса 110 формирования данных, например, автоматизированного секвенатора, чтобы получить файл BCL или FASTQ, и затем отправляет эти данные по сети 50 в удаленное вычислительное средство 300, которое после этого применяет к этим данным последовательности одну или более функций, например, функцию преобразования Барроуза-Уилера, или функцию выравнивания Нидлмана-Вунша и/или Смита-Ватермана, чтобы сформировать данные результатов, например, в формате файла SAM, которые могут быть затем сжаты и переданы по Интернету 30/50, например, в виде файла BAM, на локальный вычислительный ресурс 100 для исследования тем самым в одном или более локально управляемых протоколах обработки, например, для создания файла VCF, который может быть затем сохранен локально 200. В различных случаях данные могут быть также сохранены удаленно 400.[00725] This can also be illustrated by a typical secondary processing function 600, for example, where pre-processed sequence data, such as read data, is stored locally 200 and accessed, for example, by a local computing resource 100, and transmitted over a cloud network 30 to Internet to the remote computing facility 300 for processing thereby, for example, using a secondary processing function 600 or a tertiary processing function 700 to obtain processed results data that can then be sent back to the local computing facility 100 for storage 200 thereby. This may occur when a local practitioner generates sequenced read data using a local data generation resource 110, such as an automated sequencer, to produce a BCL or FASTQ file, and then sends this data over the network 50 to a remote computing facility 300, which then applies one or more functions to this sequence data, for example a Burrows-Wheeler transform function, or a Needleman-Wunsch and/or Smith-Waterman alignment function, to generate result data, for example in a SAM file format, which can then be compressed and transmitted over the Internet 30/50, for example, as a BAM file, to a local computing resource 100 for examination thereby in one or more locally controlled processing protocols, for example, to create a VCF file, which can then be stored locally 200. In various cases, the data can also be saved remotely 400.

[00726] Однако необходима бесшовная интеграция для взаимодействия между локальной 100 и удаленной 300 компьютерной обработкой, а также между локальным 200 и удаленным сохранением 400, такая как в гибридном облачной системе 50, представленной в настоящем документе. В таком случае система может быть выполнена таким образом, чтобы локальный 100 и удаленный 300 вычислительные ресурсы были выполнены с возможностью беспрепятственной совместной работы таким образом, чтобы данные, подлежащие при этом обработке, могли выделяться в реальном времени либо локальному 100, либо уделенному 300 вычислительному ресурсу, без существенных издержек вследствие скорости передачи и/или эксплуатационной эффективности. Это может иметь место, например, когда программная, и/или аппаратная, и/или квантовая обработка должны быть развернута или иным образом осуществлена с помощью вычислительных ресурсов 100 и 300, которые выполнены с возможностью соответствия друг другу и/или наличия одинаковых или похожих функциональных возможностей, например, аппаратное и/или программное обеспечение выполнено одинаковым образом, чтобы одинаково выполнять одни и те же алгоритмы на сформированных и/или принятых данных.[00726] However, seamless integration is required for interaction between local 100 and remote 300 computer processing, as well as between local 200 and remote storage 400, such as in the hybrid cloud system 50 presented herein. In such a case, the system may be designed such that the local 100 and remote 300 computing resources can work together seamlessly such that the data to be processed can be allocated in real time to either the local 100 or the remote computing resource 300 , without significant overhead due to transmission speed and/or operational efficiency. This may be the case, for example, when software and/or hardware and/or quantum processing must be deployed or otherwise implemented using computing resources 100 and 300 that are configured to match each other and/or have the same or similar functionality capabilities, for example, the hardware and/or software are designed in the same way to execute the same algorithms on generated and/or received data in the same way.

[00727] Например, как показано на ФИГ. 41A, локальный вычислительный ресурс 100 может быть выполнен с возможностью формирования или приема сформированных данных и, следовательно, может содержать механизм 110 формирования данных, например, для формирования первичных данных, и/или анализа 500, например, для создания файла последовательности BCL и/или FASTQ. Этот механизм 110 формирования данных может представлять собой или быть связанным с локальным компьютером 100, как описано повсюду в настоящем документе, имеющим процессор 140, который может быть выполнен с возможностью выполнения одного или более программных приложений и/или может быть реализован аппаратно для выполнения одного или более алгоритмов, например, в монтажной конфигурации, на сформированных и/или полученных данных. Например, механизм 110 формирования данных может быть выполнен с возможностью получения одних или более формируемых данных, например, секвенирования 111 данных. В различных вариантах реализации формируемые данные могут быть обнаруженными данными 111a, такими как данные, которые могут быть обнаружены как изменение напряжения, концентрации ионов, электромагнитного излучения и т.п.; и/или механизм 110 формирования данных может быть выполнен с возможностью формирования и/или обработки сигнала, например, данных аналогового или цифрового сигнала, таких как данные, представляющие одну или более нуклеотидных идентичностей в последовательности или цепочке связанных нуклеотидов. В таком случае механизм 110 формирования данных, например, секвенатор 111, может быть также выполнен с возможностью осуществления предварительной обработки на сформированных данных с целью обработки 111b сигнала или выполнения одной или более операций 111c определения оснований, например, на данных, для получения данных идентичности последовательности, например, файла 111d BCL и/или FASTQ.[00727] For example, as shown in FIG. 41A, local computing resource 100 may be configured to generate or receive generated data and, therefore, may include a data generation engine 110, e.g., to generate raw data, and/or analysis 500, e.g., to generate a BCL sequence file and/or FASTQ. This data generation engine 110 may be or be associated with a local computer 100, as described throughout herein, having a processor 140 that may be configured to execute one or more software applications and/or may be implemented in hardware to execute one or more more algorithms, for example, in the mounting configuration, on generated and/or received data. For example, the data generation engine 110 may be configured to obtain one or more generated data, such as sequencing the data 111. In various embodiments, the generated data may be detected data 111a, such as data that can be detected as a change in voltage, ion concentration, electromagnetic radiation, and the like; and/or the data generation engine 110 may be configured to generate and/or process a signal, such as analog or digital signal data, such as data representing one or more nucleotide identities in a sequence or chain of related nucleotides. In such a case, the data generation engine 110, such as the sequencer 111, may also be configured to perform pre-processing on the generated data to process a signal 111b or perform one or more base determination operations 111c, such as on the data, to obtain sequence identity data. , for example, file 111d BCL and/or FASTQ.

[00728] Необходимо отметить, что в этом случае создаваемые данные 111 могут быть сформированы локально и непосредственно, например, с помощью локального ресурса 110 формирования данных и/или вычислительного ресурса 140, например СНП или секвенатора на микросхеме. В альтернативном варианте реализации данные могут быть созданы локально и опосредованно, например, с помощью удаленного вычислительного и/или формирующего ресурса, такого как удаленный СНП. После того, как данные 111, например, в формате файла BCL и/или FASTQ, созданы, они могут быть переданы опосредованно через локальное облако 30 на локальный вычислительный ресурс 100, например, для вторичной обработки 140 и/или сохранения в локальном ресурсе 200 хранения, например, на время ожидания дальнейшей локальной обработки 140. В таком случае, когда ресурс формирования данных удален от локальных ресурсов обработки 100 и/или хранения 200, соответствующие ресурсы могут быть выполнены таким образом, чтобы удаленное и/или локальное сохранение, удаленная и локальная обработка и/или протоколы обмена данными, используемые каждым ресурсом, могли быть выполнены с возможностью плавной и/или бесшовной интеграции друг с другом, например, за счет выполнения одинакового, подобного и/или эквивалентного программного обеспечения, и/или наличия одинаковых, подобных и/или эквивалентных аппаратных конфигураций, и/или использования одинаковых протоколов связи и/или передачи, которые, в некоторых случаях, могли быть реализованы во время изготовления или позже этого.[00728] It should be noted that in this case, the generated data 111 can be generated locally and directly, for example, using a local data generation resource 110 and/or a computing resource 140, such as an NTS or an on-chip sequencer. In an alternative implementation, the data may be created locally and indirectly, for example, using a remote computing and/or generation resource, such as a remote SNS. Once data 111, e.g., in BCL and/or FASTQ file format, is created, it may be transferred indirectly via local cloud 30 to local computing resource 100, e.g., for secondary processing 140 and/or storage in local storage resource 200 , for example, while awaiting further local processing 140. In such a case, when the data generation resource is remote from the local processing resources 100 and/or storage 200, the corresponding resources can be configured so that remote and/or local storage, remote and local the processing and/or communication protocols used by each resource could be designed to be seamlessly and/or seamlessly integrated with each other, for example by running the same, similar and/or equivalent software, and/or having the same, similar and /or equivalent hardware configurations, and/or the use of the same communication and/or transmission protocols, which, in some cases, may have been implemented at or after the time of manufacture.

[00729] В частности, в одной реализации эти функции могут быт реализованы в аппаратной конфигурации, например, где функция секвенирования и функция вторичной обработки поддерживаются на одной и том же или связанной микросхеме или наборе микросхем, например, когда секвенатор и процессор вторичной обработки взаимно соединены напрямую на микросхеме, как описано в настоящем руководстве. В других реализациях эти функции могут быть реализованы на двух или более отдельных устройствах посредством программного обеспечения, например, на квантовом процессоре, ЦПУ или ГПУ, которые оптимизированы для обеспечения беспрепятственного обмена данными друг с другом между эти двумя удаленными устройствами. В других реализациях для выполнения перечисленных функций может быть использована также комбинация аппаратных и программных реализаций.[00729] Specifically, in one implementation, these functions may be implemented in a hardware configuration, for example, where the sequencing function and the downstream function are supported on the same or related chip or chipset, for example, where the sequencer and downstream processor are interconnected directly on the chip as described in this manual. In other implementations, these functions may be implemented on two or more separate devices through software, such as a quantum processor, CPU, or GPU, that are optimized to allow the two remote devices to communicate seamlessly with each other. Other implementations may also use a combination of hardware and software implementations to perform the above functions.

[00730] Точнее говоря, одна и та же конфигурация может быть реализована для выполнения картирования, выравнивания, сортировки, определения вариантов и/или других функций, которые могут быть развернуты локальным 100 и/или удаленным 300 вычислительным ресурсами. Например, локальный вычислительный 100 и/или удаленный 300 ресурсы могут включать в себя программное и/или аппаратное обеспечение, выполненное с возможностью осуществления одной или более функций 112-115 обработки вторичного яруса 600 и/или функций обработки третичного яруса 700/800 на локально и/или удаленно формируемых данных, таких как данные генетической последовательности таким образом, что обработка и ее результаты могут беспрепятственно совместно использоваться друг с другом и/или храниться благодаря этому. В частности, локальная вычислительная функция 100 и/или удаленная вычислительная функция 300 могут быть выполнены с возможностью формирования и/или приема первичных данных, таких как данные генетической последовательности, например, в формате файла BCL и/или FASTQ, и выполнения одного или более протоколов вторичной 600 и/или третичной 700 обработки на этих сформированных и/или полученных данных. В таком случае один или более из этих протоколов может быть реализован в программном обеспечении, аппаратном обеспечении или в комбинированном формате, например, выполняться на квантовом процессоре, ЦПУ и/или ГПУ, Например, ресурс 110 формирования данных и/или локальный ресурс 100 и/или удаленный ресурс 300 обработки могут быть выполнены с возможностью осуществления одной или более из операции 112 картирования, операции 113 выравнивания, операции 115 определения вариантов или другой связанной функции 114 на полученных или сформированных данных в программном и/или аппаратном обеспечении.[00730] More specifically, the same configuration may be implemented to perform mapping, alignment, sorting, variant determination, and/or other functions that may be deployed by local 100 and/or remote 300 computing resources. For example, the local computing 100 and/or remote 300 resources may include software and/or hardware configured to implement one or more of the secondary tier 600 processing functions 112-115 and/or the tertiary tier 700/800 processing functions locally and /or remotely generated data, such as genetic sequence data, such that the processing and its results can be seamlessly shared with each other and/or stored thereby. In particular, the local computing function 100 and/or the remote computing function 300 may be configured to generate and/or receive raw data, such as genetic sequence data, for example, in a BCL and/or FASTQ file format, and execute one or more protocols secondary 600 and/or tertiary 700 processing on these generated and/or received data. In such a case, one or more of these protocols may be implemented in software, hardware, or a combination format, such as running on a quantum processor, CPU, and/or GPU. For example, data generation resource 110 and/or local resource 100 and/ or remote processing resource 300 may be configured to perform one or more of a mapping operation 112, an alignment operation 113, a variant determination operation 115, or other related function 114 on the received or generated data in software and/or hardware.

[00731] Соответственно, в различных вариантах реализации ресурс формирования данных, такой как секвенатор 111, например, СНП или секвенатор на микросхеме, будь то реализованный в программно и/или аппаратном обеспечении или их комбинации, может быть также выполнен с возможностью включения в себя начального яруса процессоров 500, таких как планировщик, различная аналитика, средства сравнения, средства построения графов, средства выпуска и т.п., для оказания помощи формирователю 111 данных, например, секвенатору, в преобразовании биологической информации в необработанные данные рида в формате файлов 111d BCL или FASTQ. Кроме того, локальный вычислительный ресурс 100, будь то реализованный в программном и/или аппаратном обеспечении или их комбинации, может быть также выполнен с возможностью включения в себя дополнительного яруса процессоров 600, например, может содержать движок 112 картирования или может иным образом включать в себя программирование для выполнен алгоритма на данных генетической последовательности, например, для выполнения преобразования Барроуза-Уилера и/или другого алгоритма для построения хэш-таблицы и/или выполнения хэш-функции 112a на указанных данных, например, для картирования затравки хэша, чтобы сформировать картированные данные последовательности. Более того, локальный вычислительный ресурс 100, будь то реализованный в программном и/или аппаратном обеспечении или их комбинации, может быть также выполнен с возможностью включения в себя начального яруса процессоров 600, например, может также содержать движок 113 выравнивания, как описано в настоящем документе, или может иным образом включать в себя программирование для выполнения алгоритма выравнивания на данных генетической последовательности, например, картированной секвенированной последовательности, например, для выполнения выравнивания Смита-Ватермана с гэпами и/или без гэпов, и/или алгоритма Нидлмана-Вунша или подобного алгоритма 113a оценки, чтобы сформировать выровненные данные последовательности.[00731] Accordingly, in various embodiments, a data generation resource such as a sequencer 111, e.g., an SNP or an on-chip sequencer, whether implemented in software and/or hardware or a combination thereof, may also be configured to include an initial tier of processors 500, such as a scheduler, various analytics, comparison tools, graph builders, release tools, and the like, to assist the data generator 111, such as a sequencer, in converting biological information into raw read data in BCL file format 111d or FASTQ. In addition, local computing resource 100, whether implemented in software and/or hardware or a combination thereof, may also be configured to include an additional tier of processors 600, such as may include a mapping engine 112 or may otherwise include programming to perform an algorithm on genetic sequence data, for example, to perform a Burrows-Wheeler transform and/or other algorithm to construct a hash table and/or to perform a hash function 112a on said data, for example, to map a hash seed to generate mapped data sequences. Moreover, local computing resource 100, whether implemented in software and/or hardware or a combination thereof, may also be configured to include an initial tier of processors 600, for example, may also include an alignment engine 113 as described herein , or may otherwise involve programming to perform an alignment algorithm on genetic sequence data, e.g., a mapped sequenced sequence, e.g., to perform a gapped and/or ungapped Smith-Waterman alignment, and/or a Needleman-Wunsch algorithm or similar algorithm 113a evaluation to generate aligned sequence data.

[00732] Локальный вычислительный ресурс 100 и/или ресурс 110 формирования данных могут быть также выполнены с возможностью включения в себя одного или более других модулей 114, будь то реализованных в программном и/или аппаратном обеспечении или их комбинации, которые могут быть выполнены с возможностью осуществления одной или более других функций обработки на данных генетической последовательности, например, на картированной и/или выровненной последовательности данных. Таким образом, один или более других модулей могут содержать соответствующим образом сконфигурированный движок 114 или иным образом включать в себя программирование для выполнения одной или более других функций обработки, таких как функции сортировки 114a, удаления 114b дубликатов, перекалибровки 114c, локального повторного выравнивания 114d, маркировки 114f дубликатов, перекалибровки 114g оценки качества оснований и/или функция 114e сжатия (например, для получения файла SAM, редуцированного BAM и/или сжатия и/или распаковки CRAM) в соответствии со способами, описанными в настоящем документе. В различных случаях одна или более из этих функций обработки могут быть выполнены в виде одного или более конвейеров системы 1.[00732] Local computing resource 100 and/or data generation resource 110 may also be configured to include one or more other modules 114, whether implemented in software and/or hardware or combinations thereof, which may be configured to performing one or more other processing functions on the genetic sequence data, for example, on the mapped and/or aligned sequence data. Thus, one or more other modules may comprise a suitably configured engine 114 or otherwise include programming to perform one or more other processing functions, such as sorting 114a, duplicate removal 114b, recalibration 114c, local realignment 114d, marking functions 114f duplicates, base quality assessment recalibration 114g, and/or compression function 114e (eg, to obtain a SAM file, a reduced BAM, and/or CRAM compression and/or decompression) in accordance with the methods described herein. In various cases, one or more of these processing functions may be implemented as one or more system 1 pipelines.

[00733] Аналогичным образом система 1 может быть выполнена с возможностью включения в себя модуля 115, будь то реализованного в программно и/или аппаратном обеспечении или их комбинации, который может быть выполнен с возможностью обработки данных, например, секвенированных, картированных, выровненных и/или сортированных данных, таким образом, чтобы получать файл 116 определения вариантов. В частности, система 1 может содержать модуль 115 определения вариантов для выполнения одной или более функций определения вариантов, таких как функция 115a скрытой марковской модели (HMM) и/или GATK, например, в монтажной конфигурации и/или посредством одного или более программных приложений, например, либо локально, либо удаленного, и/или преобразователь 115b для них. В различных случаях этом модуль может быть выполнены в виде одного или более конвейеров системы 1.[00733] Likewise, system 1 may be configured to include a module 115, whether implemented in software and/or hardware or a combination thereof, which may be configured to process data, for example, sequenced, mapped, aligned and/or or sorted data, so as to obtain a variant definition file 116. In particular, system 1 may include a case determination module 115 for performing one or more case determination functions, such as a Hidden Markov Model (HMM) and/or GATK function 115a, for example, in an installation configuration and/or through one or more software applications. for example, either locally or remotely, and/or the converter 115b for them. In various cases, this module can be made in the form of one or more conveyors of system 1.

[00734] В конкретных вариантах реализации, как показано на ФИГ. 41B, система 1 может включать в себя локальную вычислительную функцию 100, которая может быть выполнена с возможностью использования ресурса 150 компьютерной обработки для выполнения одной или более функций дальнейшей обработки на данных, например, данных BCL и/или FASTQ, сформированных системным генератором 110 данных и/или полученных системным механизмом 120 получения данных (как описано в настоящем документе), например, переданных в него, например, третьей стороной 121, например, посредством облака 30 или гибридной облачной сети 50. Например, сторонний анализатор 121 может использовать удаленный вычислительный ресурс 300 для формирования соответствующих данных, нуждающихся в дальнейшей обработки, таких как данные генетической последовательности и т.п., которые могут быть переданы в систему 1 по сети 30/50 для дальнейшей обработки. Это может быть полезно, например, когда удаленный вычислительный ресурс 300 представляет собой СНП, выполненный с возможностью получения необработанных биологических данных и преобразования их в цифровое представление этих данных, например, в форме одного или более файлов FASTQ, содержащих риды данных генетической последовательности; и когда требуется дальнейшая обработка, например, для определения того, как сформированная последовательность индивида отличается от одной или более референсных последовательностей, как описано в настоящем документе, и/или желательно результаты этой обработки подвергнуть дальнейшей, например, третичной, обработке.[00734] In specific embodiments, as shown in FIG. 41B, system 1 may include a local computing function 100 that may be configured to use computer processing resource 150 to perform one or more further processing functions on data, such as BCL and/or FASTQ data, generated by system data generator 110 and /or received by the system data acquisition engine 120 (as described herein), for example, transferred to it, for example, by a third party 121, for example, through a cloud 30 or a hybrid cloud network 50. For example, a third-party analyzer 121 may use a remote computing resource 300 to generate corresponding data requiring further processing, such as genetic sequence data and the like, which can be transferred to system 1 via the 30/50 network for further processing. This may be useful, for example, when the remote computing resource 300 is a RAS configured to receive raw biological data and convert it into a digital representation of that data, for example, in the form of one or more FASTQ files containing reads of genetic sequence data; and when further processing is required, for example, to determine how the generated sequence of the individual differs from one or more reference sequences, as described herein, and/or the results of this processing are desired to be subjected to further, for example, tertiary processing.

[00735] В таком случае система 1 выполнена с возможностью предоставления одной или более сторон, например, основному, и/или второстороннему, и/или третьестороннему пользователю, доступа к связанных локальным ресурсам 100 обработки и/или соответствующим образом связанным с ней сконфигурированным удаленным ресурсам 300 обработки таким образом, чтобы позволить пользователю выполнять одну или более количественных и/или качественных функций 152 обработки на сформированных и/или полученных данных. Например, в одной конфигурации система 1 может включать в себя, например, в дополнение к конвейерами первичной 500 и/или вторичной 600 обработки, третий ярус модулей 700/800 обработки, которые могут быть выполнены с возможностью осуществления одной или более функций обработки на сформированных и/или полученных данных и/или вторичных обработанных данных.[00735] In such a case, the system 1 is configured to provide one or more parties, for example, a primary and/or a secondary and/or a third party user, access to associated local processing resources 100 and/or correspondingly configured remote resources associated therewith processing 300 so as to allow the user to perform one or more quantitative and/or qualitative processing functions 152 on the generated and/or received data. For example, in one configuration, system 1 may include, for example, in addition to the primary processing pipelines 500 and/or secondary processing 600, a third tier of processing modules 700/800 that may be configured to perform one or more processing functions on the generated and /or received data and/or secondary processed data.

[00736] В частности, в одном варианте реализации система 1 может быть выполнена с возможностью формирования и/или приема обработанных данных 111 генетической последовательности, которые удаленно или локально картированы 112, выровнены 113, отсортированы 114a и/или подвергнуты дальнейшей обработке 114 для формирования файла 116 определения вариантов, который может быть затем подвергнут третичной обработке, например, в системе 1, например, в ответ на запросы 121 второсторонней и/или третьесторонней аналитики. Более конкретно, система 1 может быть выполнена с возможностью приема запросов на обработку от третьей стороны 121 и дополнительно выполнена с возможностью осуществления такой запрошенной вторичной 600 и/или третичной 700/800 обработки на сформированных и/или полученных данных. В частности, система 1 может быть выполнена с возможностью создания и/или получения данных 111 генетической последовательности, может быть выполнена с возможностью взятия этих данных генетической последовательности и картирования 112, выравнивания 113 и/или сортировки 114a их и обработки для создания одного или более файлов 116 определения вариантов (VCF), и дополнительно система 1 может быть выполнена с возможностью осуществления функции 700/800 третичной обработки на данных, например, применительно к одному или более файлов VCF, сформированных или принятых системой 1.[00736] Specifically, in one embodiment, system 1 may be configured to generate and/or receive processed genetic sequence data 111 that is remotely or locally mapped 112, aligned 113, sorted 114a, and/or further processed 114 to generate a file 116 determination of variants, which can then be subjected to tertiary processing, for example, in system 1, for example, in response to queries 121 from second-party and/or third-party analytics. More specifically, system 1 may be configured to receive processing requests from a third party 121 and further configured to perform such requested secondary 600 and/or tertiary 700/800 processing on the generated and/or received data. In particular, system 1 may be configured to create and/or obtain genetic sequence data 111, may be configured to take that genetic sequence data and map 112, align 113 and/or sort 114a thereof, and process it to create one or more files. 116 variant definition (VCF), and further the system 1 may be configured to implement a tertiary processing function 700/800 on the data, for example, with respect to one or more VCF files generated or received by the system 1.

[00737] В частности, система 1 может быть выполнена с возможностью осуществления в той или иной форме третичной обработки 700 на сформированных и/или полученных данных, например, применения к ним одной или более функций 700 конвейерной обработки для формирования данных 122a генома, например, полного, данных122b эпигенома, данных 122c метагенома и т.п., включая данные 122d генотипирования, в том числе совместного генотипирования, данные анализов вариантов, включая GATK 122e и/или данные анализа MuTect2 122f , среди других потенциальных данных аналитических конвейеров, таких как конвейер микроматричного анализа, конвейер анализа экзома, конвейер анализа микробиома, конвейер анализа секвенирования РНК и конвейеры других генетических анализов. Кроме того, система 1 может быть выполнена с возможностью осуществления дополнительного яруса обработки 800 на сформированных и/или обработанных данных, в том числе включая одного или более из неинвазивного пренатального тестирования (НИПТ) 123a, ОРИТН 123b, связанной с раком диагностики и/или терапевтических воздействий 123c, различных разработанных в лаборатории тестов (LDT) 123d, сельскохозяйственных биологических (Ag Bio) приложений 123e или других таких относящихся к здравоохранению 123f функций обработки (см. ФИГ. 41C).[00737] In particular, the system 1 may be configured to perform some form of tertiary processing 700 on the generated and/or received data, such as applying one or more pipeline functions 700 thereto to generate genome data 122a, e.g. complete, epigenome data 122b, metagenome data 122c, etc., including genotyping data 122d, including co-genotyping, variant assay data, including GATK 122e and/or MuTect2 assay data 122f, among other potential analytical pipeline data such as pipeline microarray analysis pipeline, exome analysis pipeline, microbiome analysis pipeline, RNA sequencing analysis pipeline and other genetic analysis pipelines. In addition, system 1 may be configured to implement an additional tier of processing 800 on generated and/or processed data, including including one or more of non-invasive prenatal testing (NIPT) 123a, NICU 123b, cancer-related diagnostics and/or therapeutic exposures 123c, various laboratory developed tests (LDTs) 123d, agricultural biological (Ag Bio) applications 123e, or other such health-related processing functions 123f (see FIG. 41C).

[00738] Поэтому в различных вариантах реализации, где основной пользователь может получать доступ и/или конфигурировать систему 1 и ее различные компоненты напрямую, например, путем прямого доступа к ним, такого как посредством локального вычислительного ресурса 100, как представлено в настоящем документе, система 1 может быть также выполнена с возможностью предоставления доступа второй стороне, например, соединенной с системой 1 посредством подключения 10 по локальной сети или внутренней сети, для конфигурирования и использования системы 1 в локальной среде. Кроме того, в определенных вариантах реализации система может быть выполнена с возможностью предоставления доступа и/или конфигурирования ее третьей стороной 121, например, посредством связанной гибридной облачной сети 50, соединяющей третью сторону 121 с системой 1, например, с помощью интерфейса прикладных программ (API), к которому можно получить доступ с помощью одного или более компонентов графического пользовательского интерфейса (ГПИ). Такой ГПИ может быть выполнен с возможностью обеспечения третьестороннему пользователю доступа к системе 1 и использования API для конфигурирования различных компонентов системы, модулей, связанных с конвейерами, и других связанных функциональных возможностей формирования и/или обработки данных, чтобы использовать только те компоненты системы, которые необходимы и/или полезны для третьей стороны и/или выполнение которых запрошено или желательно для нее.[00738] Therefore, in various implementations where the primary user can access and/or configure the system 1 and its various components directly, for example, by directly accessing them, such as through local computing resource 100 as presented herein, the system 1 may also be configured to provide access to a second party, for example connected to the system 1 via a local area network or intranet connection 10, to configure and use the system 1 in a local environment. Additionally, in certain embodiments, the system may be configured to be accessed and/or configured by a third party 121, for example, through an associated hybrid cloud network 50 connecting the third party 121 to the system 1, for example, through an application program interface (API) ), which can be accessed using one or more graphical user interface (GUI) components. Such a GUI may be configured to provide a third party user with access to the system 1 and use an API to configure various system components, pipeline-related modules, and other associated data generation and/or processing functionality to use only those system components that are needed and/or useful to and/or requested or desired by a third party.

[00739] Соответственно, в различных случаях система 1, которая представлена в настоящем документе, может быть выполнена с возможностью конфигурирования ее основным, второсторонним или третьесторонним пользователем системы. В таком случае система 1 может быть выполнена с возможностью разрешения пользователю конфигурировать систему 1 и тем самым компоновать ее компоненты таким образом, чтобы разворачивать один, все или часть ресурсов аналитической системы, например, 152, для выполнения на данных, которые сформированы, получены или иным образом переданы в систему, например, основным, второсторонним или третьесторонним пользователем, таким образом, чтобы система 1 использовала только те части системы, которые необходимы или полезны для выполнения аналитики, запрошенной пользователем для получения при этом требуемых результатов. Например, для этих и других целей в систему 1 может быть включен API, который выполнен с возможностью включения или иным образом функционального связывания с графическим пользовательским интерфейсом (ГПИ), содержащим действующее меню и/или сопутствующий список вызовов системных функций, в котором пользователь может выбирать и/или выполнять иные действия, чтобы сконфигурировать и использовать систему и ее компоненты требуемым образом.[00739] Accordingly, in various cases, the system 1 that is presented herein may be configured by a primary, secondary, or third-party user of the system. In such a case, the system 1 may be configured to allow a user to configure the system 1 and thereby arrange its components so as to deploy one, all, or a portion of the analytics system resources, for example, 152, for execution on data that is generated, received, or otherwise communicated to the system, for example, by a primary, secondary, or third party user, such that system 1 uses only those parts of the system that are necessary or useful to perform the analytics requested by the user to thereby obtain the desired results. For example, for these and other purposes, system 1 may include an API that is configured to include or otherwise be functionally linked to a graphical user interface (GUI) containing an operating menu and/or an accompanying list of system function calls from which the user can select and/or perform other actions to configure and use the system and its components as required.

[00740] В таком случае с помощью меню ГПИ и/или вызовов системных функций можно управлять выбираемыми пользователем операциями из числа одной или более операций первого яруса операций 600: секвенирование 111, картирование 112, выравнивания 113, сортировки 114a, определение вариантов 115 и/или других связанных функций 114 в соответствие с идеями, изложенными в настоящем документе, например, в отношении функций первичной и/или вторичной обработки, описанных в настоящем документе. Кроме того, при желании с помощью меню ГПИ и/или вызовов системных функций можно управлять операциями из числа одной или более операций второго яруса операций 700: конвейер 122a анализа генома, например, полногеномного анализа, конвейер 122b эпигенома, конвейер 122c метагенома, конвейер 122d генотипирования, например, совместного, конвейеры анализа вариантов, например, 122e GATK и/или 122f MuTect2, включая конвейеры структурных вариантов, конвейер анализа экзома, конвейер анализа микробиома, конвейеры секвенирования РНК и конвейеры других генетических анализов. Кроме того, если требуется, с помощью меню ГПИ и вызовов функций системы можно руководить операциями, которые могут быть выбраны пользователем, из числа одной или более операций 800 третьего яруса, включая: неинвазивное пренатальное тестирование (НИПТ) 123a, ОРИТН 123b, связанную с раком диагностику и/или терапевтические воздействия 123c, различные разработанные в лаборатории тесты (LDT) 123d, сельскохозяйственные биологические (Ag Bio) приложения 123e или другие такие относящиеся к здравоохранению 123f функции обработки.[00740] In such a case, user-selectable operations from among one or more of the first tier of operations 600: sequencing 111, mapping 112, alignments 113, sorts 114a, variant determination 115, and/or can be controlled using GUI menus and/or system function calls. other related functions 114 in accordance with the ideas set forth herein, for example, with respect to the primary and/or secondary processing functions described herein. In addition, if desired, operations from among one or more of the second tier of operations 700 can be controlled using GUI menus and/or system function calls: genome analysis pipeline 122a, e.g., genome-wide analysis, epigenome pipeline 122b, metagenome pipeline 122c, genotyping pipeline 122d , e.g., collaborative, variant analysis pipelines, e.g., 122e GATK and/or 122f MuTect2, including structural variant pipelines, exome analysis pipeline, microbiome analysis pipeline, RNA sequencing pipelines, and other genetic analysis pipelines. Additionally, if desired, GUI menus and system function calls can direct user-selectable operations from one or more of the third tier operations 800, including: non-invasive prenatal testing (NIPT) 123a, cancer-related NICU 123b diagnostic and/or therapeutic interventions 123c, various laboratory developed tests (LDTs) 123d, agricultural biological (Ag Bio) applications 123e, or other such healthcare-related processing functions 123f.

[00741] Соответственно, меню и вызовы системных функций могут содержать одну или более функций первичной, вторичной и/или третичной обработки, чтобы можно было сконфигурировать систему и/или ее составляющие части для выполнения одного или более конвейеров анализа данных, которые выбраны и сконфигурированы пользователем. В таком случае локальный вычислительный ресурс 100 может быть выполнен с возможностью соответствия и/или зеркального отражения удаленного вычислительного ресурса 300 и/или, аналогичным образом, локальный ресурс 200 хранения может быть выполнен с возможностью соответствия и/или зеркального отражения удаленного ресурса 400 хранения, чтобы различные компоненты системы могли быть выполнены и/или сформированные таким образом данные могли быть сохранены либо локально, либо удаленно беспрепятственным образом по выбору с помощью системы 1. Кроме того, в конкретных вариантах реализации система 1 может быть выполнена с возможностью предоставления доступа третьим сторонам для выполнения запатентованных протоколов 121a анализа на сформированных и/или обработанных данных, например, путем применения интерфейса искусственного интеллекта, предназначенного для поиска корреляций между ними.[00741] Accordingly, menus and system function calls may contain one or more primary, secondary and/or tertiary processing functions so that the system and/or its component parts can be configured to execute one or more data analysis pipelines that are selected and configured by the user . In such a case, the local computing resource 100 may be configured to match and/or mirror the remote computing resource 300 and/or, similarly, the local storage resource 200 may be configured to match and/or mirror the remote storage resource 400 to various components of the system could be executed and/or the data so generated could be stored either locally or remotely in a seamless manner as chosen by system 1. Additionally, in particular embodiments, system 1 may be configured to provide access to third parties to execute proprietary analysis protocols 121a on the generated and/or processed data, for example, by using an artificial intelligence interface designed to search for correlations between them.

[00742] Система 1 может быть выполнена с возможностью осуществления в той или иной форме третичной обработки на сформированных и/или полученных данных. Следовательно, в различных вариантах реализации основной, второсторонний или третьесторонний пользователь может получать доступ и/или конфигурировать любой уровень системы 1 и ее различные компоненты либо напрямую, например, путем прямого доступа с помощью вычислительного ресурса 100 либо опосредованно, например, с помощью соединения локальной сети 30 или связанной гибридной облачной сети 50, соединяющей эту сторону с системой 1, например, посредством соответствующим образом сконфигурированного API, при наличии надлежащих полномочий. В таком случае компоненты системы могут быть представлены в меню, ГПИ с возможностью выбора, где пользователь может выбирать из всех различных вариантов обработки и хранения те, которые нужно выполнить на представленных пользователем данных. Кроме того, в различных случаях пользователь может выгружать свои собственные системные протоколы, чтобы они были приняты и выполнены системой для обработки различных данных способом, предусмотренным и выбранным пользователем. В таком случае ГПИ и связанный API позволят пользователю получать доступ к системе 1 и использовать API для конфигурирования различных компонентов системы, модулей, связанных с конвейерами, и других связанных функциональных возможностей формирования и/или обработки данных, чтобы использовать только те компоненты системы, которые необходимы и/или полезны для этой стороны и/или выполнение которых запрошено или желательно для нее.[00742] System 1 may be configured to perform some form of tertiary processing on the generated and/or received data. Therefore, in various embodiments, a primary, secondary, or third party user can access and/or configure any layer of system 1 and its various components either directly, such as by directly accessing the computing resource 100, or indirectly, such as through a local network connection 30 or an associated hybrid cloud network 50 connecting that party to system 1, for example through a suitably configured API, if properly authorized. In such a case, the components of the system may be presented in a menu-driven GUI where the user can select from among all the different processing and storage options to perform on the user-submitted data. In addition, in various cases, the user can upload his own system protocols so that they are accepted and executed by the system to process various data in the manner provided and chosen by the user. In such a case, the GUI and associated API will allow the user to access System 1 and use the API to configure various system components, pipeline-related modules, and other associated data generation and/or processing functionality to use only those system components that are needed and/or are useful to that party and/or the performance of which is requested or desired by that party.

[00743] Как показано на ФИГ. 41C, один или более из вышеобозначенных модулей и их соответствующих функций и/или связанных ресурсов могут быть выполнены с возможностью осуществления их удаленно, например, с помощью удаленного вычислительного ресурса 300, и также могут быть выполнены с возможностью передачи в систему 1, например, с помощью протокола беспрепятственной передачи по глобальному облачному соединению 50 через Интернет, например, посредством соответствующим образом сконфигурированного механизма 120 получения данных. Соответственно, в таком случае локальный вычислительный ресурс 100 может содержать механизм 120 получения данных, например, выполненный с возможностью передачи и/или приема таких получаемых данных и/или связанной информации.[00743] As shown in FIG. 41C, one or more of the above modules and their respective functions and/or associated resources may be configured to be implemented remotely, such as by remote computing resource 300, and may also be configured to be communicated to system 1, such as by using a protocol for seamless transmission over a global cloud connection 50 over the Internet, for example, through a suitably configured data acquisition engine 120. Accordingly, in such a case, local computing resource 100 may include a data acquisition engine 120, for example, configured to transmit and/or receive such acquisition data and/or related information.

[00744] Например, система 1 может включать в себя механизм 120 получения данных, который выполнен с возможностью обеспечения непрерывной обработки и/или сохранения данных беспрепятственным и устойчивым образом, например посредством облачной сети 50, где функции обработки распределяются локально 100 и/или удаленно 300. Аналогичным образом, когда один или более результатов такой обработки могут быть сохранены локально 200 и/или удаленно 400, система беспрепятственно назначает, в какой локальный или удаленный ресурс отправлять данное задание для обработки и/или сохранения вне зависимости от того, где физически находится этот ресурс. Такие распределенные обработка, передача и получение могут включать в себя одну или более из функций секвенирования 111, картирования 112, выравнивания 113, сортировки 114a, маркировки 114c дубликатов, удаления дубликатов, перекалибровки 114d, локального повторного выравнивания 114e, перекалибровки 114f оценок качества оснований и/или функцию 114g сжатия, а также функцию 116 определения вариантов, как описано в настоящем документе. В случае хранения локально 200 или удаленно 400 обработанные данные, в каком бы состоянии они ни были в процессе, могут быть сделаны доступными для либо локального 100, либо для удаленного 300 ресурсов обработки, например, для дальнейшей обработки перед повторной передачей и/или повторным сохранением.[00744] For example, system 1 may include a data acquisition engine 120 that is configured to enable continuous processing and/or storage of data in a seamless and resilient manner, such as through a cloud network 50 where processing functions are distributed locally 100 and/or remotely 300 Likewise, when one or more of the results of such processing can be stored locally 200 and/or remotely 400, the system seamlessly designates to which local or remote resource a given job should be sent for processing and/or storage, regardless of where the job is physically located. resource. Such distributed processing, transmission and reception may include one or more of the functions of sequencing 111, mapping 112, alignment 113, sorting 114a, duplicate labeling 114c, duplicate removal, recalibration 114d, local realignment 114e, base quality assessment recalibration 114f and/ or a compression function 114g, as well as a variant determination function 116, as described herein. If stored locally 200 or remotely 400, the processed data, whatever its state in progress, may be made available to either the local 100 or remote 300 processing resources, for example, for further processing before retransmission and/or re-storing .

[00745] В частности, система 1 может быть выполнена с возможностью создания и/или получения данных 111 генетической последовательности, может быть выполнена с возможностью взятия этой последовательности генетических данных и обработки их локально 140 или передачи этих данных посредством соответствующим образом сконфигурированного облака 30 или гибридной облачной сети 50, например, на средство удаленной обработки для удаленной обработки 300, Кроме того, система 1 может быть выполнена так, чтобы после обработки сохранять обработанные данные дистанционно 400 или передавать их обратно для локального хранения 200. Соответственно, система 1 может быть выполнена с возможностью либо локального либо дистанционного формирования и/или обработки данных, например, когда этапы формирования и/или обработки могут быть из первого яруса функций 600 первичной и/или вторичной обработки, который может включать в себя одну или более функций: секвенирования 111, картирования 112, выравнивания 113 и/или сортировки 114a для создания одного или более файлов 116 определения вариантов (VCF).[00745] In particular, system 1 may be configured to create and/or receive genetic sequence data 111, may be configured to take that genetic sequence data and process it locally 140, or transmit that data via a suitably configured cloud 30 or hybrid cloud network 50, for example, to a remote processing facility for remote processing 300. In addition, the system 1 may be configured to, after processing, store the processed data remotely 400 or transmit it back for local storage 200. Accordingly, the system 1 may be configured to the possibility of either local or remote generation and/or processing of data, for example, when the stages of generation and/or processing can be from the first tier of functions 600 of primary and/or secondary processing, which may include one or more functions: sequencing 111, mapping 112 , alignment 113 and/or sorting 114a to create one or more variant definition files (VCFs) 116.

[00746] Кроме того, система 1 может быть выполнена с возможностью либо локального, либо удаленного формирования и/или обработки данных, например, когда этапы формирования и/или обработки могут быть из второго яруса функций 700 третичной обработки, который может включать в себя одно или более из формирования и/или получения данных, относящихся к конвейеру 122a генома, конвейеру 122b эпигенома, конвейеру 122c метагенома, конвейеру 122d генотипирования, конвейеру анализа вариантов, например, 122e GATK и/или 122f MuTect2, а также конвейерам других третичных анализов, таких как конвейер микроматричного анализа, конвейер анализа микробиома, конвейер анализа экзома, а также конвейеры секвенирования РНК и конвейеры других генетических анализов. Кроме того, система 1 может быть выполнена с возможностью либо локального, либо удаленного формирования и/или обработки данных, например, когда этапы формирования и/или обработки могут быть из третьего яруса функций 800 третичной обработки, который может включать в себя одно или более из формирования и/или получения данных, которые имеют отношение или включают в себя: неинвазивное пренатальное тестирование (НИПТ) 123a, ОРИТН 123b, связанную с раком диагностику и/или терапевтические воздействия 123c, различные разработанные в лаборатории тесты (LDT) 123d, сельскохозяйственные биологические (Ag Bio) приложения 123e или другие такие относящиеся к здравоохранению 123f функции обработки.[00746] In addition, system 1 may be configured to either locally or remotely generate and/or process data, for example, where the generation and/or processing steps may be from a second tier of tertiary processing functions 700, which may include one or more of generating and/or obtaining data related to genome pipeline 122a, epigenome pipeline 122b, metagenome pipeline 122c, genotyping pipeline 122d, variant analysis pipeline such as GATK 122e and/or MuTect2 122f, as well as other tertiary analysis pipelines such such as the microarray analysis pipeline, the microbiome analysis pipeline, the exome analysis pipeline, as well as RNA sequencing pipelines and other genetic analysis pipelines. In addition, system 1 may be configured to either locally or remotely generate and/or process data, for example where the generation and/or processing steps may be from a third tier of tertiary processing functions 800, which may include one or more of generating and/or obtaining data that relate to or include: non-invasive prenatal testing (NIPT) 123a, NICU 123b, cancer-related diagnostics and/or therapeutic interventions 123c, various laboratory developed tests (LDT) 123d, agricultural biologicals ( Ag Bio) applications 123e or other such healthcare-related processing functions 123f.

[00747] В конкретных вариантах реализации, как показано на ФИГ. 41C, система 1 может быть также выполнена с возможностью предоставления одной или более сторонам доступа к системе и передаче информации в связанные ресурсы локальной обработки 100 и/или удаленной обработки 300 или из них, а также к сохранению информации либо локально 200, либо удаленно 400 таким образом, который позволяет пользователю выбирать, какую информацию обрабатывать и/или сохранять, и в каком месте системы. В таком случае пользователь может не только решать, какие функции первичного, вторичного и/или третичного анализа выполнять на сформированных и/или полученных данных, но и как эти ресурсы разворачивать, и/или где сохранять результаты такой обработки. Например, в одной конфигурации пользователь может выбирать, формировать ли данные локально или удаленно либо использовать ли комбинированный подход, подвергать ли их вторичной обработке, и если да, то с задействованием каких модулей вторичной обработки и/или с использованием каких ресурсов в этих процессах, а также может определять, подвергать ли после этого сформированные или полученные данные третичной обработке, и если да, то с задействованием каких модулей и/или каких ярусов третичной обработки и/или с использованием каких ресурсов в этих процессах, и, аналогичным образом, где сохранять результаты этих процессов для каждого этапа операций.[00747] In specific embodiments, as shown in FIG. 41C, system 1 may also be configured to allow one or more parties to access the system and transmit information to or from associated local processing resources 100 and/or remote processing 300, as well as storing information either locally 200 or remotely 400 such in a manner that allows the user to choose what information is processed and/or stored and where in the system. In this case, the user can not only decide which functions of primary, secondary and/or tertiary analysis to perform on the generated and/or received data, but also how to deploy these resources, and/or where to store the results of such processing. For example, in one configuration, the user can choose whether to generate data locally or remotely or use a combination of approaches, whether to secondary process it, and if so, which secondary processing modules are used and/or which resources are used in those processes, and can also determine whether the generated or received data is then subjected to tertiary processing, and if so, using which modules and/or tiers of tertiary processing and/or using which resources in these processes, and similarly where to store the results these processes for each stage of operations.

[00748] В частности, в одном варианте реализации пользователь может конфигурировать систему 1, изображенную на ФИГ. 41A, чтобы формирование данных 111 генетической последовательности происходило удаленно, например, с помощью СНП, но вторичная обработка 600 данных происходила локально 100. В таком случае пользователь может тогда определять, какие из функций вторичной обработки выполнять локально 100, например, путем выбора функций обработки, таких как картирование 112, выравнивание 113, сортировка 114a и/или создание VCF 116, в меню доступных вариантов обработки. Затем пользователь может определять, подвергать ли локально обработанные данные третичной обработке, и если да, какие модули активировать для дальнейшей обработки данных, и должна ли эта третичная обработка происходить локально 100 или удаленно 300. Аналогичным образом пользователь может выбирать различные варианты для различных ярусов вариантов третичной обработки и где любые сформированные и/или полученные данные нужно сохранять, локально 200 или удаленно 400, на каждом данном этапе или моменте операции.[00748] Specifically, in one embodiment, a user may configure the system 1 depicted in FIG. 41A, so that the generation of genetic sequence data 111 occurs remotely, for example, using a CNS, but secondary data processing 600 occurs locally 100. In such a case, the user can then determine which of the secondary processing functions to perform locally 100, for example, by selecting processing functions, such as mapping 112, alignment 113, sorting 114a, and/or creating VCF 116, in the menu of available processing options. The user can then determine whether locally processed data should undergo tertiary processing, and if so, which modules to activate for further data processing, and whether this tertiary processing should occur locally 100 or remotely 300. Likewise, the user can select different options for different tiers of tertiary options processing and where any generated and/or received data needs to be stored, locally 200 or remotely 400, at each given stage or moment of the operation.

[00749] Более конкретно, основной пользователь может конфигурировать систему для приема запросов на обработку от третьей стороны, причем третья сторона может конфигурировать систему для выполнения такой запрошенной первичной, вторичной и/или третичной обработки на сформированных и/или полученных данных. В частности, пользователь или вторая и/или третья сторона могут конфигурировать систему 1 для создания и/или получения данных генетической последовательности либо локально 100, либо удаленно 300. Кроме того, пользователь может конфигурировать систему 1 для взятия этих данных генетической последовательности и картирования, выравнивания и/или сортировки ее, либо локально, либо удаленно, чтобы создать один или более файлов определения вариантов (VCF). Кроме того, пользователь может конфигурировать систему для выполнения функции третичной обработки на данных, например, применительно к одному или более файлам VCF, либо локально, либо удаленно.[00749] More specifically, the primary user may configure the system to receive requests for processing from a third party, wherein the third party may configure the system to perform such requested primary, secondary, and/or tertiary processing on the generated and/or received data. In particular, the user or a second and/or third party may configure the system 1 to create and/or obtain genetic sequence data either locally 100 or remotely 300. In addition, the user may configure the system 1 to take this genetic sequence data and map, align and/or sorting it, either locally or remotely, to create one or more variant definition files (VCFs). In addition, the user can configure the system to perform a tertiary processing function on the data, for example, on one or more VCF files, either locally or remotely.

[00750] Еще более конкретно, пользователь или другая сторона могут конфигурировать систему 1 для выполнения той или иной формы третичной обработки на сформированных и/или полученных данных, и где в системе должна происходить обработка. Следовательно, в различных вариантах реализации основной, второсторонний и/или третьесторонний пользователь121 может получать доступ к системе 1 и/или конфигурировать саму систему и ее различные компоненты, например, путем прямого доступа к локальной вычислительной функции 100 посредством соединения локальной сети 30 или соединения связанной гибридной облачной сети 50, соединяющей сторону 121 с системой 1, например, с помощью интерфейса прикладных программ (API), к которому можно получить доступ с помощью одного или более компонентов графического пользовательского интерфейса (ГПИ). В таком случае третьесторонний пользователь может получать доступ к системе 1 и использовать API для конфигурирования различных компонентов системы, модулей, связанных с конвейерами, и других связанных функциональных возможностей формирования и/или обработки данных, чтобы использовать только те компоненты системы, которые необходимы и/или полезны для третьей стороны и/или выполнение которых запрошено или желательно для нее, и также выделять вычислительные ресурсы, которые обеспечат обработку, и где будут сохранены результаты обработки.[00750] Even more specifically, the user or other party may configure the system 1 to perform some form of tertiary processing on the generated and/or received data, and where in the system the processing should occur. Therefore, in various embodiments, a primary, secondary, and/or third party user 121 may access the system 1 and/or configure the system itself and its various components, for example, by directly accessing the local computing function 100 through a local network connection 30 or a connected hybrid connection. cloud network 50 connecting party 121 to system 1, for example, through an application program interface (API) that can be accessed using one or more graphical user interface (GUI) components. In such a case, a third party user can access system 1 and use the API to configure various system components, pipeline-related modules, and other related data generation and/or processing functionality to use only those system components that are needed and/or useful to a third party and/or the execution of which is requested or desired by it, and also to allocate the computing resources that will provide the processing and where the results of the processing will be stored.

[00751] Соответственно, в различных случаях система 1 может быть выполнена с возможностью конфигурирования ее основным, второсторонним или третьесторонним пользователем системы, который может конфигурировать систему 1 так, чтобы компоновать ее компоненты таким образом, чтобы развертывать один, все или выбранные аналитические системные ресурсы для выполнения на данных, которые пользователь формирует непосредственно, или поручает их формирование системе 1, или дает команду на передачу их в систему 1, например, по сети, связанной с ней, например, посредством механизма 120 получения данных. Таким образом, система 1 выполнена с возможностью использования только тех частей системы, которые необходимы или полезны для аналитики, требуемой для запрашивающей стороны или запрошенной ею. Например, для этих и других целей может быть включен API, который выполнен с возможностью включения в себя действующего меню ГПИ и/или сопутствующего списка вызовов системных функций, в котором пользователь может выбирать, чтобы сконфигурировать и использовать систему требуемым образом.[00751] Accordingly, in various cases, system 1 may be configured by a primary, secondary, or third-party user of the system, who may configure system 1 to arrange its components to deploy one, all, or selected analytical system resources for execution on data that the user generates directly, or instructs system 1 to generate it, or commands it to be transmitted to system 1, for example, over a network associated with it, for example, through data acquisition engine 120. Thus, the system 1 is configured to use only those parts of the system that are necessary or useful for the analytics required by or requested by the requestor. For example, for these and other purposes, an API may be included that is configured to include an actual GUI menu and/or an accompanying list of system function calls from which the user can select to configure and use the system in the desired manner.

[00752] Кроме того, в конкретных вариантах реализации система 1 может быть выполнена с возможностью предоставления доступа основному пользователю и/или третьим сторонам, таким как правительственные регулятивные органы, например, Федеральное управление по лекарственным средствам (FDA) 70b, или предоставления основным пользователям или третьим сторонам возможности сличать, компилировать и/или получать доступ к базе данных генетической информации, извлеченной и/или иным образом полученной и/или скомпилированной системой 1, для формирования базы 70a данных электронных медицинских записей (EMR), и/или предоставления правительственным органам возможности доступа к системе и/или надзора за ней, например, для FDA с целью оценки разработки лекарственных средств. Система 1 может быть также настроена для сбора, компиляции и/или аннотирования данных 70c и/или предоставления возможности доступа к ним пользователям высокого уровня.[00752] Additionally, in specific embodiments, system 1 may be configured to provide access to a primary user and/or third parties, such as government regulatory agencies, such as the Federal Drug Administration (FDA) 70b, or to provide primary users or the ability for third parties to collate, compile and/or access a database of genetic information extracted and/or otherwise obtained and/or compiled by system 1 to form an electronic medical record (EMR) database 70a, and/or enable government agencies access and/or oversight of the system, for example by the FDA to evaluate drug development. System 1 may also be configured to collect, compile and/or annotate data 70c and/or make it accessible to high-level users.

[00753] Соответственно, система 1 или ее компоненты могут быть выполнены с возможностью предоставления доступа к ним удаленному пользователю, например, основному пользователю или третьей стороне, и, следовательно, один или более из компьютерных ресурсов 100 и/или 300 могут содержать пользовательский интерфейс и/или могут также содержать устройство отображения, имеющее графический пользовательский интерфейс для обеспечения потенциальному пользователю системы возможности доступа к системе для передачи данных образца для ввода в один или более из BioIT-конвейеров, описанных в настоящем документе, и/или для приема данных результатов из них. ГПИ или другой интерфейс могут быть выполнены с возможностью предоставления пользователю возможности управления компонентами системы, например, посредством соответствующим образом сконфигурированного веб-портала, и отслеживания хода выполнения обработки вне зависимости от того, являются ли задействуемые вычислительные ресурсы доступными локально 100 или удаленно 300. Соответственно, ГПИ может содержать список наборов заданий, которые могут быть выполнены, например, картирование 112, выравнивание 113 и т.д., и/или наборов ресурсов для выполнения заданий, причем пользователь может сам выбирать, какие задания он хочет выполнить, и с использованием каких ресурсов. Следовательно, в подобном случае каждый отдельный пользователь может поэтому создать уникальный, или может использовать заданный, рабочий процесс анализа, например, с помощью щелчков мышью, перетаскивания или выбора иным образом, конкретные рабочие проекты, которые он желает выполнить.[00753] Accordingly, the system 1 or its components may be configured to be accessible by a remote user, such as a primary user or a third party, and therefore one or more of the computer resources 100 and/or 300 may include a user interface and /or may also comprise a display device having a graphical user interface for allowing a potential user of the system to access the system to transmit sample data for input into and/or to receive result data from one or more of the BioIT pipelines described herein . A GUI or other interface may be configured to allow a user to control components of the system, for example, through a suitably configured web portal, and monitor the progress of processing, regardless of whether the involved computing resources are available locally 100 or remotely 300. Accordingly, The GUI may contain a list of sets of tasks that can be performed, for example, mapping 112, leveling 113, etc., and/or sets of resources for performing tasks, and the user can select which tasks he wants to perform and using which ones. resources. Therefore, in such a case, each individual user can therefore create a unique, or can use a predetermined, analysis workflow, such as by clicking, dragging, or otherwise selecting, specific work projects that he wishes to complete.

[00754] Например, в одной модели использования предложена информационная панель с интерфейсом ГПИ, которая может содержать множество значков, представляющих различные процессы, которые могут быть реализованы и выполнены системой. В таком случае пользователь может щелкать или перетаскивать значки выбранных рабочих процессов в интерфейс рабочих потоков, чтобы построить требуемый процесс рабочего потока, который после его построения можно сохранить и использовать для создания управляющих инструкций для штрихкодов набора образцов. После того, как требуемые рабочие проекты выбраны, контроллер 151 управления рабочими потоками может сконфигурировать требуемые процессы рабочего потока (например, вторичный анализ) и затем определить и выбрать ресурсы для выполнения выбранного анализа.[00754] For example, one use model proposes a dashboard with a GUI interface that may contain a plurality of icons representing various processes that can be implemented and executed by the system. In this case, the user can click or drag the icons of the selected workflows into the workflow interface to build the desired workflow process, which, once built, can be saved and used to create control instructions for sample set barcodes. Once the required work projects are selected, the work flow controller 151 may configure the required work flow processes (eg, secondary analysis) and then identify and select resources to perform the selected analysis.

[00755] После начала процесса анализа рабочего потока можно следить за его продвижением по системе, наблюдая за ним на информационной панели. Например, панель информационная мониторинга указывать, сколько данных проходят через систему, какие процессы выполняются на этих данных, что уже сделано, сколько осталось обработать, какие рабочие потоки завершены, а к каким еще нужно получить доступ, последние проекты, подлежащие выполнению, а выполнение каких уже завершено. По существу на рабочем столе можно получить доступ ко всему, что выполняется в системе или ее части.[00755] Once the workflow analysis process has begun, you can monitor its progress through the system by monitoring it on a dashboard. For example, an information monitoring panel indicates how much data is passing through the system, what processes are being executed on this data, what has already been done, how much remains to be processed, which work streams have been completed and which ones still need to be accessed, the latest projects to be completed and which ones to complete already completed. Essentially, the desktop allows you to access everything that is running on the system or part of it.

[00756] Кроме того, в различных случаях рабочий стол может содержать всевозможные разные пользовательские интерфейсы, к которым можно получить доступ с помощью одной или более вкладок. Например, одной из вкладок для доступа к элементам управления системы может быть вкладка «локальные ресурсы 100», которая, если она выбрана, позволяет пользователю выбирать функции управления, которые могут быть реализованы локально. Другая вкладка может быть выполнена с возможностью доступа к «облачным ресурсам 300», которая, если она выбрана, позволяет пользователю выбирать другие функции управления, которые могут быть реализованы удаленно. Соответственно, взаимодействуя с информационной панелью, пользователь может выбирать, каким ресурсам какие задачи выполнять, и тем самым может повышать или снижать использование ресурса по мере надобности для удовлетворения требований к проекту.[00756] In addition, in various cases, the desktop may contain all sorts of different user interfaces that can be accessed using one or more tabs. For example, one of the tabs for accessing system controls could be a "local resources 100" tab, which, when selected, allows the user to select control functions that can be implemented locally. Another tab may be configured to access "cloud resources 300" which, if selected, allows the user to select other control functions that can be implemented remotely. Accordingly, by interacting with the dashboard, the user can select which resources to perform which tasks, and thereby can increase or decrease resource utilization as needed to meet project requirements.

[00757] Следовательно, по мере возрастания вычислительной сложности и/или потребности в увеличении скорости пользователь (или сама система, например, WMS 151) может приводить в действие больше и больше ресурсов по мере надобности, например, простым нажатием кнопки, указывающим диспетчеру рабочих потоков привести в действие дополнительные локальные 100 и/или облачные 300 ресурсы, которые необходимы для выполнения задачи в пределах требуемых временных рамок. Таким образом, хотя система автоматизирована и/или управляется контроллером 151 рабочих потоков, пользователь системы все же может устанавливать параметры управления и при необходимости может приводить в действие облачные ресурсы 300. Соответственно, контроллер 151 может распространиться на облако 50/300 при необходимости, чтобы привести в действие дополнительные ресурсы обработки и/или хранения 400.[00757] Therefore, as computational complexity increases and/or the need for increased speed, the user (or the system itself, e.g., WMS 151) can bring into play more and more resources as needed, for example, by simply pressing a button instructing the workflow manager deploy additional local 100 and/or cloud 300 resources that are needed to complete the task within the required time frame. Thus, although the system is automated and/or controlled by workflow controller 151, the user of the system can still set control parameters and can bring cloud resources 300 into action as needed. Accordingly, controller 151 can extend to cloud 50/300 as needed to power additional processing and/or storage resources 400 are put into action.

[00758] В различных случаях интерфейс рабочего стола может быть выполнен в виде мобильного приложения или «приложения», которое доступно посредством мобильного устройства и/или настольного компьютера. Следовательно, в соответствии с одним аспектом может быть предусмотрена геномная рыночная площадка, или когорта, чтобы предоставить множеству пользователей возможность сотрудничать в одном или более исследовательских проектах для создания электронной когортной рыночной площадки, которая доступна посредством приложения информационной панели, например, интерфейса веб-браузера. Поэтому система может предоставлять форум в Интернете для выполнения совместного исследования и/или рыночную площадку для разработки различных аналитических средств анализа генетических данных, причем система может быть доступна непосредственно через системный интерфейс или через приложение для обеспечения удаленного управления системой пользователем.[00758] In various cases, the desktop interface may be implemented as a mobile application or “app” that is accessible via a mobile device and/or desktop computer. Therefore, in accordance with one aspect, a genomic marketplace, or cohort, may be provided to enable multiple users to collaborate on one or more research projects to create an electronic cohort marketplace that is accessible through a dashboard application, such as a web browser interface. Therefore, the system may provide an Internet forum for performing collaborative research and/or a marketplace for the development of various analytical tools for analyzing genetic data, and the system may be accessible directly through the system interface or through an application to allow remote control of the system by the user.

[00759] Соответственно, в различных вариантах реализации, как показано на ФИГ. 42A, предусмотрено гибридное облако 50, которое выполнено с возможностью соединения локального вычислительного ресурса 100 и/или ресурса 200 хранения с удаленным вычислительным ресурсом 300 и/или ресурсом хранения 400, например, когда локальные и удаленные ресурсы отделены друг друга расстоянием, пространством, географически и т.п. В таком случае локальные и удаленные ресурсы могут быть выполнены с возможностью обмена данными друг с другом таким образом, чтобы совместно использовать информацию, например, цифровые данные, беспрепятственно между собой. В частности, локальные ресурсы могут быть выполнены с возможностью осуществления одного или более видов обработки на данных, например, до передачи по гибридной сети 50, а удаленные ресурсы могут быть выполнены с возможностью осуществления одно или более других видов обработки на данных.[00759] Accordingly, in various embodiments, as shown in FIG. 42A, a hybrid cloud 50 is provided that is configured to connect a local computing resource 100 and/or storage resource 200 with a remote computing resource 300 and/or storage resource 400, for example, when the local and remote resources are separated from each other by distance, space, geography, and etc. In such a case, local and remote resources can be configured to communicate with each other so as to share information, such as digital data, seamlessly among themselves. In particular, local resources may be configured to perform one or more types of processing on the data, for example, prior to transmission over the hybrid network 50, and remote resources may be configured to perform one or more other types of processing on the data.

[00760] Например, в одной конкретной конфигурации система 1 может быть выполнена с таким образом, чтобы функция 152 формирования и/или анализа была выполнена с возможностью осуществления локально 100 локальным вычислительным ресурсом, например, в целях выполнения функции первичной и/или вторичной обработки для формирования и/или обработки данных генетической последовательности, как описано в настоящем документе. Кроме того, в различных вариантах реализации локальные ресурсы могут быть выполнены с возможностью осуществления одной или более функций третичной обработки на данных, например, одного из анализов генома, экзома и/или эпигенома, или рака, микробиома и/или других анализов обработки ДНК/РНК. Кроме того, когда такие обработанные данные предназначены для передачи, например, на удаленный вычислительный ресурс 300 и/или ресурс хранения 400, данные могут быть преобразованы, например, с помощью соответствующим образом сконфигурированного преобразователя, который может быть выполнен с возможностью индексации, конвертации, сжатия и/или шифрования данных, например, до передачи по гибридной сети 50.[00760] For example, in one particular configuration, the system 1 may be configured such that the generation and/or analysis function 152 is capable of being performed locally 100 by a local computing resource, for example, to perform a primary and/or secondary processing function for generating and/or processing genetic sequence data as described herein. Additionally, in various embodiments, the local resources may be configured to perform one or more tertiary processing functions on the data, such as one of genome, exome, and/or epigenome, or cancer, microbiome, and/or other DNA/RNA processing assays . In addition, when such processed data is intended to be transmitted, for example, to a remote computing resource 300 and/or a storage resource 400, the data may be transformed, for example, using a suitably configured converter, which may be configured to index, convert, compress and/or data encryption, for example, prior to transmission over the hybrid network 50.

[00761] В конкретных случаях, например, когда сформированные или обработанные данные передают на удаленный вычислительный ресурс, например, сервер 300, для дальнейшей обработки, такая обработка может носить глобальный характер и может включать в себя прем данных из множества локальных вычислительных ресурсов 100, упорядочение таких множеств данных, аннотирование данных и сравнение их, например, для интерпретации данных, определения их тенденций, анализа данных на различные биомаркеры и оказания помощи в развитии диагностики, терапевтики и/или профилактики. Соответственно, в различных случаях удаленный вычислительный ресурс 300 может быть выполнен в виде концентратора обработки данных, например, когда данные из различных источников могут передаваться, обрабатываться и/или сохраняться в ожидании преобразования и/или передачи, например, благодаря доступности локальному вычислительному ресурсу 100. Более конкретно, удаленный концентратор 300 обработки может быть выполнен с возможностью приема данных из множества ресурсов 100, обработки этих данных и распределения обработанных данных обратно различным локальным ресурсам 100, чтобы обеспечить возможность сотрудничества между исследователями и/или ресурсами 100. Такое сотрудничество может включать в себя различные протоколы совместного использования и может дополнительно включать в себя подготовку данных, подлежащих отправке, например, путем предоставления пользователю системы 1 выбора среди различных протоколов защиты и/или настроек конфиденциальности для управления подготовкой данных для передачи.[00761] In specific cases, such as when generated or processed data is transferred to a remote computing resource, such as a server 300, for further processing, such processing may be global in nature and may include receiving data from a plurality of local computing resources 100, ordering such data sets, annotating the data and comparing them, for example, to interpret the data, determine their trends, analyze the data for various biomarkers and assist in the development of diagnostics, therapeutics and/or prevention. Accordingly, in various cases, the remote computing resource 300 may be implemented as a data processing hub, such as when data from various sources may be transmitted, processed, and/or stored pending transformation and/or transmission, such as by being made available to the local computing resource 100. More specifically, the remote processing hub 300 may be configured to receive data from a plurality of resources 100, process that data, and distribute the processed data back to various local resources 100 to enable collaboration among researchers and/or resources 100. Such collaboration may include various sharing protocols and may further include preparing the data to be sent, for example, by allowing the user of system 1 to select among various security protocols and/or privacy settings to control the preparation of the data for transmission.

[00762] В одном конкретном случае, который представлен на ФИГ. 42B, предусмотрены локальные вычислительный ресурс 100 и/или ресурс 200 хранения, например, непосредственно в месте нахождения пользователя. Вычислительный ресурс 100 и/или ресурс 200 хранения могут быть связаны с ресурсом 121 формирования данных, таким как СНП или секвенатор на микросхеме, как описано в настоящем документе, например, посредством прямого или осуществляемого по внутренней сети соединения 10, причем секвенатор 121 выполнен с возможностью формирования данных генетической последовательности, таких как файлы BCL и/или FASTQ. Например, секвенатор 121 может быть частью или находиться внутри того же устройства, что и вычислительный ресурс 100 и/или ресурс 200 хранения, чтобы иметь прямой обмен данными и/или оперативной соединение с ними, или секвенатор 121 и вычислительный ресурс 100 и/или ресурс 200 хранения могут быть частями отдельных друг от друга устройств, но находиться в одном и том же учреждении и тем самым быть связанными с помощью кабеля или соединения внутренней сети 10. В некоторых случаях секвенатор 121 может находиться не в одном учреждении с вычислительным ресурсом 100 и/или ресурсом 200 хранения и поэтому может быть соединен посредством Интернета 30 или гибридной облачной сети 50.[00762] In one specific case, which is presented in FIG. 42B, local computing resource 100 and/or storage resource 200 are provided, for example, directly at the user's location. The computing resource 100 and/or the storage resource 200 may be coupled to a data generation resource 121, such as an on-chip sequencer or sequencer as described herein, for example, through a direct or intranet connection 10, wherein the sequencer 121 is configured to generating genetic sequence data such as BCL and/or FASTQ files. For example, sequencer 121 may be part of or reside within the same device as computing resource 100 and/or storage resource 200 so as to have direct data exchange and/or operative connection therewith, or sequencer 121 and computing resource 100 and/or resource The storage 200 may be part of separate devices, but located in the same institution and thus connected via a cable or connection to the internal network 10. In some cases, the sequencer 121 may not be located in the same institution as the computing resource 100 and/or or storage resource 200 and may therefore be connected via the Internet 30 or hybrid cloud network 50.

[00763] В таких случаях данные генетической последовательности могут обрабатываться 100 и храниться 200 локально перед преобразованием с помощью соответствующим образом сконфигурированного преобразователя, или сформированные данные последовательности могут передаваться непосредственно в один или более преобразователей и/или анализаторов 152, например, посредством соответствующим образом сконфигурированного соединения локальной сети 10, внутренней сети 30 или гибридной облачной сети 50, как описано выше, например перед обработкой локально. В частности, подобно ресурсу 121 формирования данных, преобразователь 151 и/или анализатор 152 могут быть частью или находиться внутри того же устройства, что и вычислительный ресурс 100 и/или ресурс 200 хранения, чтобы иметь прямой обмен данными и/или оперативной соединение с ними, или преобразователь и/или анализатор 152 и вычислительный ресурс 100 и/или ресурс 200 хранения могут быть частями отдельных друг от друга устройств, но находиться в одном и том же учреждении и тем самым быть связанными с помощью кабеля или соединения внутренней сети 10. В некоторых случаях преобразователь 151 и/или анализатор 152 могут находиться не в одном учреждении с вычислительным ресурсом 100 и/или ресурсом 200 хранения и поэтому может быть соединен посредством Интернета 30 или гибридной облачной сети 50.[00763] In such cases, the genetic sequence data may be processed 100 and stored 200 locally before conversion by a suitably configured converter, or the generated sequence data may be transmitted directly to one or more converters and/or analyzers 152, for example, through a suitably configured connection local network 10, internal network 30, or hybrid cloud network 50 as described above, for example before processing locally. In particular, like data generation resource 121, converter 151 and/or analyzer 152 may be part of or reside within the same device as compute resource 100 and/or storage resource 200 so as to have direct data exchange and/or operative connection therewith. , or the converter and/or analyzer 152 and the computing resource 100 and/or the storage resource 200 may be parts of separate devices from each other, but located in the same institution and thereby connected via a cable or connection to the internal network 10. In some cases, the converter 151 and/or analyzer 152 may not be located in the same institution as the compute resource 100 and/or storage resource 200 and therefore may be connected via the Internet 30 or hybrid cloud network 50.

[00764] Например, преобразователь может быть выполнен с возможностью подготовки подлежащих передаче данных либо до анализа, либо после анализа, например, с помощью соответствующим образом сконфигурированного вычислительного ресурса 100 и/или анализатора 152. Например, анализатор152 может выполнять функцию вторичной и/или третичной обработки на данных, как описано в настоящем документе, например, для анализа сгенерированной последовательности данных с точки зрения определения ее геномных и/или экзомных характеристик 152a, ее эпигеномных характеристик 152b, любых различных представляющих интерес маркеров ДНК и/или РНК и/или индикаторов рака 152c, и их взаимосвязей с одним или более микробиомами 152d, а также один или более других процессов вторичной и/или третичной обработки, как описано в настоящем документе.[00764] For example, the converter may be configured to prepare data to be transmitted either before analysis or after analysis, for example, using a suitably configured computing resource 100 and/or analyzer 152. For example, analyzer 152 may perform a secondary and/or tertiary function. processing on the data as described herein, for example, to analyze the generated sequence data in terms of determining its genomic and/or exome characteristics 152a, its epigenomic characteristics 152b, any various DNA and/or RNA markers of interest and/or cancer indicators 152c, and their relationships with one or more microbiomes 152d, as well as one or more other secondary and/or tertiary processing processes as described herein.

[00765] Как было указано, сформированные и/или обработанные данные могут быть преобразованы, например, с помощью соответствующим образом сконфигурированного преобразователя, например, до передачи по всей системе 1 из одного ее компонента в другой, например, по прямому соединению, соединению локальной сети 10, Интернета 30 или гибридной облачной сети 50. Такое преобразование может включать в себя одно или более из конвертации 151d, например, когда данные конвертируют из одной формы в другую; затруднения понимания 151c, включая кодирование, декодирование и/или превращение иным образом данных из непонятной формы в понятную форму; индексирования 151b, например, включая компиляцию и/или упорядочение сформированных данных из одного или более ресурсов и приведение их в состояние, пригодное для определения местоположения и/или поиска их элементов, например, с помощью сформированного индекса; и/или шифрования 151a, например, создания блокируемых и неблокируемых защищенных паролем наборов данных, например, до передачи посредством Интернета 30 и/или гибридного облака 50.[00765] As indicated, the generated and/or processed data can be converted, for example, using a suitably configured converter, for example, before being transmitted throughout the system 1 from one component thereof to another, for example, over a direct connection, a local network connection 10, Internet 30, or hybrid cloud network 50. Such conversion may include one or more of conversion 151d, such as when data is converted from one form to another; difficulty understanding 151c, including encoding, decoding and/or otherwise converting data from an incomprehensible form to an understandable form; indexing 151b, for example, including compiling and/or organizing generated data from one or more resources and bringing it into a state suitable for locating and/or searching its elements, for example, using a generated index; and/or encryption 151a, for example, creating lockable and non-lockable password-protected data sets, for example, prior to transmission via the Internet 30 and/or hybrid cloud 50.

[00766] Следовательно, как показано на ФИГ. 42C, в этих и/или других таких случаях гибридное облако 50 может быть выполнено с возможностью обеспечения возможности беспрепятственной и защищенной передачи данных всем компонентам системы, например, когда гибридное облако 50 выполнено с возможностью разрешения различным пользователям системы конфигурировать ее составляющие части и/или саму систему для удовлетворения потребностей пользователей в области исследовательских, диагностических, терапевтических и/или профилактических открытий и/или разработок. В частности, гибридное облако 50 и/или различные компоненты системы 1 могут быть выполнены с возможностью функционального соединения с совместимыми и/или соответствующими интерфейсами API, которые выполнены с возможностью разрешения пользователям удаленного конфигурирования различных компонентов системы 1 для развертывания требуемых ресурсов нужным образом, причем локальным, удаленным или комбинированным способом, например, на основе потребностей системы и особенностей выполняемых анализов, обеспечивая при этом обмен данными в защищенной среде с возможностью шифрования.[00766] Therefore, as shown in FIG. 42C, in these and/or other such cases, the hybrid cloud 50 may be configured to enable seamless and secure transmission of data to all components of the system, for example, when the hybrid cloud 50 is configured to allow different users of the system to configure its component parts and/or the system itself. system to meet user needs for research, diagnostic, therapeutic and/or preventative discovery and/or development. In particular, the hybrid cloud 50 and/or the various components of the system 1 can be configured to be operably connected to compatible and/or appropriate APIs that are configured to allow users to remotely configure the various components of the system 1 to deploy the required resources in a desired manner, locally. , remotely or in a combined manner, for example, based on the needs of the system and the characteristics of the analyzes being performed, while ensuring data exchange in a secure environment with the ability to encrypt.

[00767] В конкретных случаях система 1 может включать в себя архитектуру 310 обработки, например, интерпретатор, который выполнен с возможностью осуществления функции 310 интерпретации. Интерпретатор 310 выполняет одну или серию аналитических функций на сформированных данных, таких как аннотирование 311, интерпретация 312, диагностика 313 и/или функция обнаружения и/или анализа для определения наличия одного или более биомаркеров, например, в генетических данных. Интерпретатор 310 может быть частью локального вычислительного ресурса 100 или отделен от него, например, когда интерпретатор 313 связана с вычислительным ресурсом 100 посредством интерфейса облака, такого как гибридное облако 50.[00767] In specific cases, system 1 may include a processing architecture 310, such as an interpreter, that is configured to implement an interpreting function 310. Interpreter 310 performs one or a series of analytical functions on the generated data, such as annotation 311, interpretation 312, diagnosis 313, and/or detection and/or analysis functions to determine the presence of one or more biomarkers, for example, in genetic data. The interpreter 310 may be part of or separate from the local computing resource 100, such as when the interpreter 313 is coupled to the computing resource 100 through a cloud interface, such as a hybrid cloud 50.

[00768] Кроме того, может быть включена дополнительная архитектура 320 обработки, например, когда архитектура 320 выполнена в виде коллаборатора. Коллаборатор 320 сможет быть выполнен с возможностью осуществления одной или более функций, относящихся к обеспечению безопасности и/или конфиденциальности данных, подлежащих передаче. Например, коллаборатор может быть выполнен с возможностью защиты процесса 321 совместного использования данных, обеспечения конфиденциальности передачи 322, установки параметров 323 управления и/или инициирования протокола 324 защиты. Коллаборатор 320 выполнен с возможностью обеспечения совместного использования данных, например, для облечения совместного осуществления обработки, например, коллаборатор 320 может быть частью локального вычислительного ресурса 100 или отделен от него, например, когда коллаборатор связан с вычислительным ресурсом 100 посредством интерфейса облака, такого как гибридное облако 50. Интерпретатор 310, коллаборатор 320 и/или локальный вычислительный ресурс 100 могут быть также связаны с удаленным вычислительным ресурсом 300, например, для улучшения эффективности системы за счет сброса функций вычисления 300 и/или хранения 400 на облако 50. В различных случаях система 1 может быть выполнена с возможностью разрешения выполнения защищенного анализа третьей стороной 121, например, когда третья сторона может подключаться к системе и задействовать ее, например, посредством соответствующим образом сконфигурированного API.[00768] Additionally, additional processing architecture 320 may be included, for example, when architecture 320 is implemented as a collaborator. The collaborator 320 may be configured to perform one or more functions related to ensuring the security and/or confidentiality of the data to be transmitted. For example, the collaborator may be configured to secure the data sharing process 321, ensure confidentiality of the transmission 322, set control parameters 323, and/or initiate a security protocol 324. The collaborator 320 is configured to enable data sharing, for example, to facilitate shared processing, for example, the collaborator 320 may be part of or separate from the local computing resource 100, for example, when the collaborator is connected to the computing resource 100 through a cloud interface, such as a hybrid cloud 50. Interpreter 310, collaborator 320, and/or local computing resource 100 may also be associated with remote computing resource 300, for example, to improve system efficiency by offloading compute 300 and/or storage 400 functions to cloud 50. In various cases, the system 1 may be configured to allow secure analysis to be performed by a third party 121, for example where the third party can connect to and exploit the system, for example through a suitably configured API.

[00769] Как показано на ФИГ. 43, система 1 может быть многоярусной и/или мультиплексированной платформой биоаналитической обработки, которая содержит уровни блоков формирования данных и/или обработки данных, каждый из которых имеет один или более конвейеров обработки, которые могут быть развернуты систематически и одновременно или последовательно для обработки генетической информации, начиная со стадии ее первичной обработки и заканчивая стадией вторичной и/или третичной обработки. В частности, в настоящем документе представлены устройства, выполненные с возможностью осуществления биоанализа в одной или более из аппаратной, и/или программной, и/или квантовой реализаций обработки, а также способы их использования и содержащих их системы. Например, в одном варианте реализации может быть предусмотрена платформа геномного анализа, выполненная в виде множестве интегральных схем, которые могут быть выполнены в виде или иным образом включены в одно или более из центрального или графического процессорного устройства, такого как ЦПУ и/или ГПУ общего назначения, аппаратная реализация и/или квантовое процессорное устройство. В частности, в различных вариантах реализации один или более из конвейеров платформы геномной обработки могут быть выполнены с возможностью конфигурирования с помощью одной или более интегральных и/или квантовых схем квантового процессорного устройства.[00769] As shown in FIG. 43, system 1 may be a multi-tiered and/or multiplexed bioanalytical processing platform that contains layers of data generation and/or processing units, each of which has one or more processing pipelines that can be deployed systematically and simultaneously or sequentially to process genetic information , starting from the stage of its primary processing and ending with the stage of secondary and/or tertiary processing. In particular, presented herein are devices configured to perform bioanalysis in one or more hardware and/or software and/or quantum processing implementations, as well as methods for using them and systems containing them. For example, in one embodiment, a genomic analysis platform may be provided as a plurality of integrated circuits that may be configured as or otherwise included in one or more central or graphics processing units, such as a general purpose CPU and/or GPU. ,hardware implementation and/or quantum processing device. Specifically, in various embodiments, one or more of the pipelines of the genomic processing platform may be configured by one or more integrated circuits and/or quantum processor devices.

[00770] Соответственно, платформы, представленные в настоящем документе, могут быть выполнены таким образом, чтобы использовать огромную мощь оптимизированных программных, и/или аппаратных, и/или квантовых реализаций обработки для выполнения различных функций генетического секвенирования и/или вторичной и/или третичной обработки, описанных в настоящем документе, которые могут быть выполнены на одной или более интегральных схем. Такие интегральные схемы могут быть бесшовно связаны вместе и могут быть также бесшовно связаны с различными другими интегральными схемами, например, ЦПУ, и/или ГПУ, и/или КПУ системы, которая выполнена с возможностью исполнения различных программных и/или аппаратных приложений третичных биоаналитических функций.[00770] Accordingly, the platforms presented herein can be configured to leverage the enormous power of optimized software and/or hardware and/or quantum processing implementations to perform various genetic sequencing and/or secondary and/or tertiary processing functions. the processing described herein, which may be performed on one or more integrated circuits. Such integrated circuits may be seamlessly coupled together and may also be seamlessly coupled to various other integrated circuits, such as a CPU and/or GPU and/or GPU of a system that is configured to execute various software and/or hardware applications of tertiary bioanalytical functions .

[00771] В частности, в различных вариантах реализации эти процессы могут быть выполнены оптимизированным программным обеспечением, исполняемым на ЦПУ, ГПУ и/или КПУ, и/или могут быть реализованы в виде интегральных схем, конфигурируемых прошивкой, например, FPGA, которые могут быть частью одного и того же устройства или отдельных устройств, которые могут быть расположены на одной и той же материнской плате, разных платах PCIe внутри одного и того же устройства, отдельных устройств в одном и том же учреждении и/или в разных учреждениях. Соответственно, одно или более процессорных устройств и/или интегральных схем могут быть непосредственно связаны вместе, например, жестко, например, путем физического включения в одну и ту же материнскую плату или отдельные материнские платы, расположенные в одном и том же корпусе и/или иным образом связанные вместе, или могут быть расположены на отдельных материнских платах или платах PCIe, которые могут обмениваться данными друг с другом удаленно, например, без проводов и/или посредством сетевого интерфейса, например, через локальное облако 30, и в различных вариантах реализации одно или более процессорных устройств и/или интегральных схем могут быть расположены географически удаленно друг от друга, но обмениваться данными посредством гибридного облака 50. В конкретных случаях интегральные схемы, образующие ЦПУ, ГПУ и/или КПУ или являющиеся их частью, могут быть выполнены в виде и/или быть частью платформы вторичной и/или третичной аналитики, могут быть выполнены таким образом, чтобы образовывать один или более конвейеров анализа, где различные формируемые данные могут вводиться и выводиться вперед-назад между различными процессорными устройствами и/или интегральными схемами, например, бесшовно или в потоковом режиме, чтобы обеспечивать возможность быстрой передачи данных между множеством интегральных схем и, более конкретно, ускорять анализы в них.[00771] Specifically, in various embodiments, these processes may be performed by optimized software running on a CPU, GPU, and/or GPU, and/or may be implemented as firmware-configurable integrated circuits, such as FPGAs, which may be part of the same device or separate devices, which may be located on the same motherboard, different PCIe cards within the same device, separate devices in the same institution, and/or in different institutions. Accordingly, one or more processor devices and/or integrated circuits may be directly coupled together, e.g., hardwired, e.g., by being physically incorporated into the same motherboard or separate motherboards housed in the same package and/or otherwise linked together in a manner, or may be located on separate motherboards or PCIe cards that can communicate with each other remotely, e.g., wirelessly and/or through a network interface, e.g., through a local cloud 30, and in various embodiments one or more processing devices and/or integrated circuits may be located geographically distant from each other, but communicate via the hybrid cloud 50. In specific cases, the integrated circuits that form or are part of the CPU, GPU and/or CPU may be designed as and /or be part of a secondary and/or tertiary analytics platform, may be configured to form one or more analysis pipelines where various generated data may be fed back and forth between different processing devices and/or integrated circuits, e.g., seamlessly or in streaming mode, to enable rapid data transfer between multiple integrated circuits and, more specifically, to speed up analyzes within them.

[00772] Например, в некоторых случаях различные устройства для использования в соответствии со способами, описанными в настоящем документе, могут содержать или быть иным образом связанными с одним или более устройствами секвенирования для выполнения протокола секвенирования, который может быть осуществлен путем исполнения программного обеспечения на удаленном секвенаторе, таком как секвенатор нового поколения, например, HiSeq Ten производства компании Illumina, расположенном в главном центре секвенирования, чтобы сделать его доступным посредством облачного интерфейса. В других случаях секвенирование могут выполнять в жестко смонтированной конфигурации на микросхеме секвенирования, например, реализованной в секвенаторе Ion Torrent производства компании Thermo Fisher, или в других технологиях секвенатора на микросхеме, где секвенирование осуществляется с помощью полупроводниковой технологии, которая обеспечивает настольное секвенирование следующего поколения, и/или с помощью интегральной схемы, выполненной в виде или иным образом включающей в себя полевой транзистор, использующий графеновый канальный слой. В таких случаях, когда секвенирование выполняют с помощью одной или более интегральных схем, выполненных в виде полупроводниковой микросхемы секвенирования, или содержащих ее, они могут быть расположены удаленно от одного или более процессорных устройств и/или интегральных схем, описанных в настоящем документе, который могут быть выполнены с возможностью осуществления вторичной и/или третичной аналитики на секвенированных данных. В альтернативном варианте реализации микросхемы и/или процессорные устройства могут быть расположены относительно близко друг к другу, чтобы быть напрямую связанными вместе, или по меньшей в общей близости друг от друга, например в одном учреждении. В этом и других случаях конвейеры секвенирования и/или BioIT-аналитики могут быть сформированы таким образом, чтобы необработанные данные секвенирования, сформированные секвенатором, могли быть быстро переданы, например, в потоковом режиме, в другие аналитические компоненты конвейера для непосредственного анализа, например в потоковом режиме.[00772] For example, in some cases, various devices for use in accordance with the methods described herein may contain or be otherwise coupled to one or more sequencing devices to perform a sequencing protocol, which may be accomplished by executing software on a remote sequencer, such as a next-generation sequencer such as Illumina's HiSeq Ten, located at the main sequencing center to make it accessible via a cloud interface. In other cases, sequencing may be performed in a hard-wired on-chip configuration, such as that implemented in Thermo Fisher's Ion Torrent sequencer, or in other on-chip sequencing technologies where sequencing is performed using semiconductor technology that enables next-generation benchtop sequencing, and /or by an integrated circuit configured as or otherwise including a field effect transistor using a graphene channel layer. In such cases, when sequencing is performed using one or more integrated circuits configured as or containing a semiconductor sequencing chip, they may be located remotely from one or more processing devices and/or integrated circuits described herein, which may be configured to perform secondary and/or tertiary analytics on sequenced data. In an alternative embodiment, the chips and/or processing devices may be located relatively close to each other so as to be directly coupled together, or at least in general proximity to each other, such as within the same institution. In this and other cases, sequencing and/or BioIT analytics pipelines can be configured such that the raw sequencing data generated by the sequencer can be quickly transferred, for example in streaming mode, to other analytical components of the pipeline for direct analysis, for example in streaming mode.

[00773] Кроме того, после создания прибором для секвенирования необработанных данных секвенирования (например, данных BCL) или данных рида (например, данных FASTQ) они могут быть переданы в интегральную схему и приняты ей, где интегральная схема выполнена с возможностью осуществления различных биоаналитических функций на генетической и/или белковой последовательностях, например, с целью анализа сформированных и/или принятых данных последовательностей ДНК, РНК и/или белков. Анализ последовательности может включать в себя сравнение сформированной или принятой последовательности нуклеиновых кислот или белков с одной или более баз данных последовательностей, например, для выполнения вторичного анализа на принятых данных, и/или в некоторых случаях для выполнения диагностики заболевания, например, когда база данных известных последовательностей для выполнения сравнения может представлять собой базу данных, содержащую данных морфологически отличающихся друг от друга и/или несовместимых последовательностей, которые являются данными генетических образцов, относящихся или считающихся относящимися к одному или более болезненных состояний.[00773] In addition, once raw sequencing data (eg, BCL data) or read data (eg, FASTQ data) is generated by a sequencing instrument, it may be transferred to and received by an integrated circuit, where the integrated circuit is configured to perform various bioanalytical functions on genetic and/or protein sequences, for example, for the purpose of analyzing generated and/or received DNA, RNA and/or protein sequence data. Sequence analysis may involve comparing a generated or received nucleic acid or protein sequence against one or more sequence databases, for example, to perform secondary analysis on the received data, and/or in some cases to perform a diagnosis of a disease, such as when a database of known sequences for performing the comparison may be a database containing data of morphologically different and/or incompatible sequences, which are data of genetic samples related or believed to be related to one or more disease states.

[00774] Соответственно, в различных случаях изолированные и секвенированные генетические, например, ДНК и/или РНК, данные могут быть подвергнуты вторичному анализу, который может быть выполнен на принятых данных, например, для выполнения картирования, выравнивания, сортировки, определения вариантов и т.п. с целью формирования картированных и/или выровненных данных, которые могут быть затем использованы для получения одного или более файлов VCF, подробно описывающих разницу между картированной и/или выровненной генетической последовательностью и референсной последовательностью. В частности, по завершении вторичной обработки генетическая информация может быть передана в один или более модулей третичной обработки системы, например, для дальнейшей обработки там, например, для получения результатов, касающихся терапии и/или профилактики. Более конкретно, после определения вариантов сопоставитель/выравниватель/определитель вариантов могут выдать стандартный файл VCF, который готов и может быть передан в дополнительную интегральную схему для выполнения третичного анализа , такого как анализы, относящиеся к геному, например, полногеномный анализ, анализ генотипирования, например, совместного генотипирование, микроматричный анализ, анализ экзома, анализ микробиома анализ эпигенома, анализ метагенома, анализ совместного генотипирования, анализ вариации, например, анализ GATK, анализ структурных вариантов, анализ соматических вариантов и т.п., а также анализ секвенирования РНК и другие геномные анализы.[00774] Accordingly, in various cases, isolated and sequenced genetic, e.g., DNA and/or RNA, data may be subject to secondary analyzes that may be performed on the received data, for example, to perform mapping, alignment, sorting, variant identification, etc. .P. for the purpose of generating mapped and/or aligned data, which can then be used to produce one or more VCF files detailing the difference between the mapped and/or aligned genetic sequence and the reference sequence. In particular, upon completion of secondary processing, the genetic information can be transferred to one or more tertiary processing modules of the system, for example, for further processing there, for example, to obtain results regarding therapy and/or prevention. More specifically, once variants have been identified, the mapper/aligner/variant definer can produce a standard VCF file that is ready and can be transferred to a complementary integrated circuit to perform tertiary analyses, such as genome-wide analyses, e.g., genome-wide analyses, genotyping analyses, e.g. , co-genotyping, microarray analysis, exome analysis, microbiome analysis, epigenome analysis, metagenome analysis, co-genotyping analysis, variation analysis, such as GATK analysis, structural variant analysis, somatic variant analysis, etc., as well as RNA sequencing analysis and others genomic analyses.

[00775] Следовательно, биоаналитическая, например, BioIT, платформа, представленная в настоящем документе, может содержать высокооптимизированные алгоритмы для картирования, выравнивания, сортировки, маркировки дубликатов, определения вариантов гаплотипов, сжатия и/или распаковки, например, в конфигурации жестко смонтированной и/или квантовой обработки. Например, хотя одна или более из этих функций могут быть выполнены с возможностью осуществления в полностью или частично жестко смонтированной конфигурации, в конкретных случаях платформа вторичной и/или третичной обработки может быть выполнена с возможностью выполнения одного или более программного приложения и/или приложения квантовой обработки, например, одной или более функций, описанных в настоящем документе. В частности, секвенированные, и/или картированные, и/или выровненные, и/или иным образом обработанные данные могут быть затем подвергнуты дополнительной обработке с помощью одного или более оптимизированных алгоритмов для одного или более из полногеномного анализа, анализа генотипирования, микроматричного анализа, анализа экзома, анализа микробиома, анализа эпигенома, анализа метагенома, анализа совместного генотипирования и/или анализа вариантов, например, GATK, например, реализованного с помощью программного обеспечения, выполняемого на ЦПУ, и/или ГПУ, и/или КПУ общего назначения, хотя и в определенных случаях одна или более из этих функций могут быть, по меньшей мере частично, реализованы в аппаратном обеспечении.[00775] Therefore, the bioanalytical, e.g., BioIT, platform provided herein may contain highly optimized algorithms for mapping, alignment, sorting, duplicate tagging, haplotype variant detection, compression and/or decompression, e.g., in a hard-wired and/or or quantum processing. For example, while one or more of these functions may be configured to run in a fully or partially hard-wired configuration, in specific cases the secondary and/or tertiary processing platform may be configured to run one or more software applications and/or quantum processing applications , for example, one or more of the functions described herein. In particular, the sequenced and/or mapped and/or aligned and/or otherwise processed data may then be subjected to further processing using one or more optimized algorithms for one or more of whole genome analysis, genotyping analysis, microarray analysis, exome analysis, microbiome analysis, epigenome analysis, metagenome analysis, co-genotyping analysis and/or variant analysis, for example GATK, for example, implemented using software running on a CPU and/or GPU and/or general purpose CPU, although in certain cases, one or more of these functions may be at least partially implemented in hardware.

[00776] Соответственно, как показано на ФИГ. 43, в различных вариантах реализации мультиплексированные платформы биоаналитической обработки выполнены с возможностью осуществления одной или более из первичной, вторичной и/или третичной обработки. Например, на стадии первичной обработки создают данные генетической последовательности, например, в одном или более файлов BCL и/или FASTQ, для передачи в систему 1. Оказавшись в системе 1, секвенированные данные, включая связанные метаданные, могут быть продвинуты на стадию 600 вторичной обработки для создания одного или более файлов определения вариантов. Следовательно, система может быть также выполнена с возможностью взятия одного или более файлов определения вариантов вместе со связанными метаданными и/или другими связанными обработанными данными, и выполнения одной или более других операций на одной или более стадиях третичной обработки, например, с целью выполнения на них одной или более диагностических, и/или профилактических, и/или терапевтических процедур.[00776] Accordingly, as shown in FIG. 43, in various embodiments, multiplexed bioanalytical processing platforms are configured to perform one or more of primary, secondary, and/or tertiary processing. For example, the primary processing stage creates genetic sequence data, for example, in one or more BCL and/or FASTQ files, for transmission to system 1. Once in system 1, the sequenced data, including associated metadata, can be advanced to a secondary processing stage 600 to create one or more variant definition files. Therefore, the system may also be configured to take one or more variant definition files together with associated metadata and/or other associated processed data, and perform one or more other operations on one or more tertiary processing stages, for example, to perform on them one or more diagnostic and/or prophylactic and/or therapeutic procedures.

[00777] В частности, анализ данных может быть инициирован, например, в ответ на запрос 120 пользователя, например, сделанный из удаленного вычислительного ресурса 100, и/или в ответ на данные, поданные третьей стороной 121, и/или данные, автоматические извлеченные из локального хранилища 200 и/или удаленного хранилища 400. Такая дальнейшая обработка может включать в себя первый ярус обработки, где различные конвейеры, выполняющие протоколы 700, выполнены с возможностью осуществления аналитики на определенных генетических данных, например, вариации, одного или более субъектов. Например, устройства первого яруса третичной обработки могут включать в себя платформу геномной обработки, которая выполнена с возможностью осуществления анализа генома, эпигенома, метагенома, генотипирования и/или различных анализов вариантов, и/или другого анализа на основе биоинформатики. Кроме того, на втором ярусе третичной обработки могут выполняться различные диагностирующие заболевания, исследовательские и/или аналитические протоколы 800, причем анализ может включать в себя одно или более из приложений, относящихся к НИПТ, ОРИТН, раку, LDT, биологии, AgBio и т.п.[00777] In particular, data analysis may be initiated, for example, in response to a user request 120, such as made from a remote computing resource 100, and/or in response to data submitted by a third party 121, and/or data automatically retrieved from local storage 200 and/or remote storage 400. Such further processing may include a first tier of processing where the various pipelines executing protocols 700 are configured to perform analytics on specific genetic data, eg, variation, of one or more subjects. For example, first tier tertiary processing devices may include a genomic processing platform that is configured to perform genomic, epigenome, metagenome, genotyping, and/or various variant analyses, and/or other bioinformatics-based analyses. In addition, the second tier of tertiary processing may perform various disease diagnostic, research and/or analytical protocols 800, where the analysis may include one or more of NIPT, NICU, cancer, LDT, biology, AgBio, etc. applications. P.

[00778] Система 1 может быть также выполнена с возможностью приема и/или передачи различных данных 900, относящихся к процедурам и процессам, описанным в настоящем документе, например, имеющим отношение к данным электронных медицинских записей (EMR), данным испытаний и/или структурирования Федерального управления по лекарственным средствам (США), относящимся к аннотации данными и т.п. Такие данные могут быть полезными ввиду предоставления пользователю возможности использования и/или доступа к сформированным медицинским, диагностическим, терапевтическим и/или профилактическим методам, разработанным посредством использования системы 1 и/или доступны с ее помощью. Соответственно, в различных случаях устройства, способы и системы, представленные в настоящем документе, позволяют безопасно выполнять генетический и биоаналитический анализ, а также безопасно передавать его результаты на форум, который может быть легко доступным для обработки далее по цепочке. Кроме того, в различных случаях устройства, способы и системы, представленные в настоящем документе, позволяют безопасно передавать данные в систему, например, из одного или более учреждений мониторинга здоровья и/или хранения данных и/или правительственного учреждения, такого как FDA или NIH. Например, система может быть выполнена с возможностью безопасного приема данных электронной медицинской записи/персонального учета здоровья (EMR/PHR), например, которые могут быть переданы из учреждения и/или хранилища здравоохранения, для использования в соответствии со способами, описанными в настоящем документе, например, для выполнения генетического и биоаналитического анализа, а также безопасной передачи его результатов на форум, который может быть легко доступным для обработки далее по цепочке.[00778] System 1 may also be configured to receive and/or transmit various data 900 related to the procedures and processes described herein, such as related to electronic medical records (EMR) data, testing and/or structuring data Federal Drug Administration (USA), annotation-related data, etc. Such data may be useful in providing the user with the ability to use and/or access the generated medical, diagnostic, therapeutic and/or preventive methods developed through the use of the system 1 and/or accessible through it. Accordingly, in various cases, the devices, methods and systems presented herein allow genetic and bioanalytical analysis to be performed securely and the results securely communicated to a forum that can be easily accessed for downstream processing. In addition, in various cases, the devices, methods and systems provided herein allow data to be securely transferred to a system, for example, from one or more health monitoring and/or data storage agencies and/or a government agency such as the FDA or NIH. For example, the system may be configured to securely receive electronic medical record/personal health record (EMR/PHR) data, for example, that may be transmitted from a healthcare facility and/or repository, for use in accordance with the methods described herein, for example, to perform genetic and bioanalytical analysis and securely transmit the results to a forum that can be easily accessed for processing further down the chain.

[00779] В частности, первый ярус 700 третичной обработки может включать в себя одну или более платформ геномной обработки, например, для выполнения генетического анализа, например, на картированных и/или выровненных данных, например, в формате файла SAM или BAM, и/или для обработки данных вариантов, например в формате VCF. Например, первая платформа третичной обработки может включать в себя одну или более из конвейера генома, конвейера метагенома, конвейера совместного генотипирования, а также один или более конвейеров анализа вариантов, в том числе: конвейер GATK, конвейер структурных вариантов, конвейер определения соматических вариантов и, в некоторых случаях, может включать в себя конвейер анализа секвенирования РНК. Также могут быть включены один или более конвейеров геномного анализа.[00779] In particular, the first tertiary processing tier 700 may include one or more genomic processing platforms, for example, to perform genetic analysis, for example, on mapped and/or aligned data, for example, in a SAM or BAM file format, and/ or to process variant data, for example in VCF format. For example, the first tertiary processing platform may include one or more of a genome pipeline, a metagenome pipeline, a co-genotyping pipeline, and one or more variant analysis pipelines, including: a GATK pipeline, a structural variant pipeline, a somatic variant detection pipeline, and, in some cases, may include an RNA sequencing analysis pipeline. One or more genomic analysis pipelines may also be included.

[00780] Точнее говоря, как показано на ФИГ, 43, в различных случаях многоярусная и/или мультиплексированная платформа биоаналитической обработки включает в себя дополнительный уровень устройств формирования и/или обработки данных. Например, в определенных случаях платформа биоаналитической обработки содержит один или более конвейеров обработки в одной или более программных и/или аппаратных реализаций, которые относятся к выполнению одного или более протоколов третичной обработки. Например, в конкретных случаях платформа конвейеров 700 третичного анализа может включать в себя один или более из конвейеров генома, конвейера эпигенома, конвейера метагенома, конвейера совместного генотипирования, конвейера вариации, такого как конвейер GATK, и/или другие конвейеры, такие как конвейер РНК. Кроме того, второй уровень платформы анализа третичной обработки может включать в себя ряд конвейеров обработки, таких как один или более из конвейера микроматричного анализа, конвейера анализа генома, например, полногеномного анализа, конвейера анализа генотипирования, конвейера анализа экзома, конвейера анализа микробиома, конвейера анализа генотипирования, включая совместное генотипирование, конвейера анализа вариантов, включая конвейеры структурных вариантов, конвейеры соматических вариантов, и конвейеры GATK и/или MuTect2, а также конвейеры секвенирования РНК и конвейеры других генетических анализов.[00780] More specifically, as shown in FIG 43, in various cases, a multi-tiered and/or multiplexed bioanalytical processing platform includes an additional layer of data generation and/or processing devices. For example, in certain cases, a bioanalytical processing platform comprises one or more processing pipelines in one or more software and/or hardware implementations that are related to the execution of one or more tertiary processing protocols. For example, in specific cases, the tertiary analysis pipeline platform 700 may include one or more of a genome pipeline, an epigenome pipeline, a metagenome pipeline, a co-genotyping pipeline, a variation pipeline such as a GATK pipeline, and/or other pipelines such as an RNA pipeline. In addition, the second layer of the tertiary processing analysis platform may include a number of processing pipelines, such as one or more of a microarray analysis pipeline, a genome analysis pipeline, e.g., a whole genome analysis pipeline, a genotyping analysis pipeline, an exome analysis pipeline, a microbiome analysis pipeline, an analysis pipeline genotyping, including co-genotyping, variant analysis pipelines, including structural variant pipelines, somatic variant pipelines, and GATK and/or MuTect2 pipelines, as well as RNA sequencing pipelines and other genetic analysis pipelines.

[00781] Соответственно, в одном варианте реализации многоярусная платформа биоаналитической обработки включает в себя метагеномный конвейер. Например, метагеномный конвейер может быть включен, например, для выполнения одного или более процессов экологической геномики. В частности, в различных вариантах реализации метагеномный анализ может быть выполнен с возможностью определения, развилась ли группа организмов от общего предка, например, вид или другая клада. Более конкретно, в различных вариантах реализации может быть получен экологический образец, содержащий множество живых и/или мертвых организмов, из которого можно изолировать присутствующие ДНК/РНК, секвенировать и обработать с помощью одной или более платформ обработки, описанных в настоящем документе, чтобы идентифицировать присутствующий вид и/или один или более других геномных факторов, относящихся к нему. Такие «экологические» образцы могут включать в себя множество микробиомов человека (например, относящихся к микроорганизмам, которые обнаруживают в связи со здоровыми и больными людьми, в том числе микроорганизмы, обнаруживаемые в образцах кожи, крови, мокроты, стула), а также внешних факторов окружающей среды.[00781] Accordingly, in one embodiment, the stacked bioanalytical processing platform includes a metagenomic pipeline. For example, a metagenomic pipeline may be included, for example, to perform one or more environmental genomics processes. Specifically, in various embodiments, metagenomic analysis may be performed to determine whether a group of organisms has evolved from a common ancestor, such as a species or another clade. More specifically, in various embodiments, an environmental sample may be obtained containing a variety of living and/or dead organisms from which the DNA/RNA present can be isolated, sequenced, and processed using one or more of the processing platforms described herein to identify the present species and/or one or more other genomic factors related to it. Such “environmental” samples may include a variety of human microbiomes (eg, those related to microorganisms found in association with healthy and diseased individuals, including microorganisms found in skin, blood, sputum, stool samples), as well as external factors environment.

[00782] Существуют множество способов получения секвенированных генетических образцов для выполнения метагеномной обработки. Первый способ включает в себя протокол направленного клонирования 16S рибосомальной РНК и/или секвенирование генов. Например, 16S рибосомальная РНК сильно варьируется в виде (или даже штаммах вида). Соответственно, эта РНК может быть изолирована и секвенирована для создания генетического профиля биоразнообразия, получаемого из биологических образцов естественного происхождения, который может быть использован для информирования ИИ или других баз данных системы. Однако проблема с таким секвенированием заключается в том, что большая часть микробиального биоразнообразия может быть утеряна просто вследствие способа, которым оно было культивировано.[00782] There are many ways to obtain sequenced genetic samples to perform metagenomic processing. The first method involves a protocol for directed cloning of 16S ribosomal RNA and/or gene sequencing. For example, 16S ribosomal RNA varies greatly among species (or even strains of a species). Accordingly, this RNA can be isolated and sequenced to create a genetic profile of biodiversity derived from naturally occurring biological samples that can be used to inform AI or other system databases. However, the problem with such sequencing is that much microbial biodiversity may be lost simply due to the way in which it was cultured.

[00783] Соответственно, второй способ включает в себя протокол методом «дробовика» и/или ориентированный на ПЦР протокол, который может быть использован для формирования образцов множества, например, всех, генов из всех биологических факторов сообществ, из которых взяты образцы, причем однократное секвенирование может выявить генетическое разнообразие микроскопической жизни. В частности, при секвенировании методом «дробовика» может быть сформирована агрегированная референсная последовательность, например, из множества (например, десятков тысяч) референсных геномов различных видов. Однако совокупный размер этих множественных геномов гигантский. Поэтому для построения агрегированного референсного генома целесообразно выбирать одну или более отличающихся друг от друга подпоследовательностей из каждого референсного генома.[00783] Accordingly, the second method includes a shotgun and/or PCR-based protocol that can be used to sample multiple, e.g., all, genes from all biological factors of the communities from which the samples are taken, in a single sequencing can reveal the genetic diversity of microscopic life. In particular, shotgun sequencing can generate an aggregated reference sequence, for example, from many (for example, tens of thousands) reference genomes of different species. However, the combined size of these multiple genomes is gigantic. Therefore, to construct an aggregated reference genome, it is advisable to select one or more distinct subsequences from each reference genome.

[00784] Например, такая подпоследовательность может быть длиной от нескольких сотен оснований до нескольких тысяч оснований, причем идеально подходят уникальные последовательности, отсутствующие в других видах (или штаммах). Эти подпоследовательности могут быть затем агрегированы для построения референсных последовательностей. Соответственно, изолированные, секвенированные, картированные и выровненные метагеномные последовательности можно сравнить с частичными или полными референсными геномами для многих видов и определить биоразнообразие.[00784] For example, such a subsequence can range in length from a few hundred bases to several thousand bases, with unique sequences not found in other species (or strains) being ideal. These subsequences can then be aggregated to construct reference sequences. Accordingly, isolated, sequenced, mapped and aligned metagenomic sequences can be compared with partial or complete reference genomes for many species and determine biodiversity.

[00785] Таким образом, метагеномика предоставляет мощное «увеличительное стекло» для просмотра мира микробов, которое может коренным образом изменить наше понимание живого мира. Следовательно, в любом из этих двух случаев, когда в образце значительное присутствие ДНК организмов, эти виды могут быть идентифицированы как обитающие в данной среде. В идеале подобным образом можно выявить виды, которые необычны для видов, как правило, присутствующих в данной среде. В частности, когда для полученных экологических проб охват всех видов нормализован, можно определить генетическое многообразие присутствующих видов и сравнить со всем охватом, например, путем сравнения части ДНК определенного организма с соответствующей частью сформированной биологически многообразной референсной генетической последовательностью.[00785] Metagenomics thus provides a powerful “magnifying glass” for viewing the microbial world that could revolutionize our understanding of the living world. Therefore, in either of these two cases, where there is a significant presence of DNA from organisms in the sample, those species can be identified as living in that environment. Ideally, this will identify species that are unusual among species typically present in a given environment. In particular, when the coverage of all species is normalized for the resulting environmental samples, the genetic diversity of the species present can be determined and compared with the entire coverage, for example, by comparing part of the DNA of a particular organism with the corresponding part of the generated biologically diverse reference genetic sequence.

[00786] Значимость этих анализов можно определить с помощью байесовских методов, например, путем оценки вероятности наблюдения секвенированных ридов конкретного организма в предположении присутствия или отсутствия данного организма. Методы байесовской вероятности направлены на описание вероятности события на основе условий, которые могли быть связаны с этим событием. Например, если требуется определить наличие рака у субъекта, и возраст субъекта известен, а заболевание раком, который нужно определить, связано с возрастом, то с помощью теоремы Байеса информацию о возрасте субъекта можно использовать для более точной оценки вероятности рака.[00786] The significance of these analyzes can be determined using Bayesian methods, for example, by estimating the probability of observing the sequenced reads of a particular organism given the presence or absence of that organism. Bayesian probability methods aim to describe the probability of an event based on conditions that could be associated with that event. For example, if you want to determine whether a subject has cancer, and the age of the subject is known, and the cancer you want to determine is age-related, then using Bayes' theorem, information about the age of the subject can be used to more accurately estimate the likelihood of cancer.

[00787] А именно, с помощью интерпретации байесовской вероятности теорема выражает, как субъективная степень уверенности может рационально измениться с учетом наблюдаемых доказательств. Байесовская теорема математически сформулирована в следующем уравнении: P = P P/P, где A и B являются событиями и P(B) ≠ 0. P(A) и P(B) - вероятности наблюдения A и B безотносительно друг друга. P(A|B) - условная вероятность, являющаяся вероятностью наблюдения события A при условии, что B истинное. P(B|A) - вероятностью наблюдения события B при условии, что A истинное.[00787] Namely, through the interpretation of Bayesian probability, the theorem expresses how the subjective degree of confidence can rationally change given observed evidence. Bayes' theorem is mathematically formulated in the following equation: P =P P /P , where A and B are events and P(B) ≠ 0. P(A) and P(B) are the probabilities of observing A and B regardless of each other. P(A|B) is a conditional probability, which is the probability of observing event A given that B is true. P(B|A) - the probability of observing event B, provided that A is true.

[00788] Соответственно, один или более этапов выполнения анализов байесовской вероятности в данном контексте могут включать в себя одно или более из следующего: можно выполнить определения наличия клад на различных таксономических уровнях: царство, тип, класс, отряд, семейство, род, вид и/или штамм. Однако это осложняется тем, что, как правило, чем ниже таксономические уровни, занимаемые организмами, тем более похожи их ДНК. Кроме того, часто проба может совпадать с референсным геномом для множества видов с более высоким таксономическим уровнем (или множестве штаммов одного вида), и, следовательно, во многих случаях может быть определена только более общая клада (такая как род или семейство), а не конкретный вид или штамм. Тем не менее, для преодоления этих и других таких трудностей можно использовать устройства, системы и способы их использования, описанные в настоящем документе.[00788] Accordingly, one or more steps of performing Bayesian probability analyzes in a given context may include one or more of the following: determinations of the presence of clades may be made at various taxonomic levels: kingdom, phylum, class, order, family, genus, species, and /or strain. However, this is complicated by the fact that, in general, the lower the taxonomic levels occupied by organisms, the more similar their DNA is. In addition, often a sample may match a reference genome for multiple species at a higher taxonomic level (or multiple strains of the same species), and therefore in many cases only a more general clade (such as a genus or family) can be defined, rather than specific species or strain. However, to overcome these and other such difficulties, the devices, systems and methods for using them described herein can be used.

[00789] А именно, в одном варианте реализации предусмотрен способ определения присутствия двух или более видов или клад организмов в предоставленной пробе. Например, на первом этапе из пробы можно получить риды данных геномной последовательности, например, когда риды могут быть в формате FASTQ или BCL. Можно выполнить картирование геномной поверхности, чтобы картировать риды на множество геномных референсных последовательностей. В данном случае геномные референсные последовательности могут быть полным геномом, или могут быть частичным геномом, чтобы сократить объем данных, требуемых для каждого вида, штамма или клады. Однако использование более крупного генома повысит чувствительность обнаружения, и каждую используемую референсную последовательность следует выбирать для представления вида, штамма или клады, которые будут отличаться друг от друга.[00789] Specifically, in one embodiment, a method is provided for determining the presence of two or more species or clades of organisms in a provided sample. For example, in a first step, genomic sequence data reads can be obtained from the sample, for example where the reads can be in FASTQ or BCL format. Genomic surface mapping can be performed to map reads to multiple genomic reference sequences. In this case, the genomic reference sequences may be a complete genome, or may be a partial genome, to reduce the amount of data required for each species, strain, or clade. However, using a larger genome will increase the sensitivity of detection, and each reference sequence used should be selected to represent a species, strain, or clade that will be distinct from each other.

[00790] Для этой цели можно использовать всю или часть геномной последовательности из 16S рибосомы. Таким образом, можно построить две или более геномные референсные последовательности видов, штаммов или клад организмов, наличие которых предполагается в образце, чтобы обнаружить членов этих групп в образце. После построения геномных референсных последовательностей для каждой из них можно также создать индекс. Индексы могут быть хэш-таблицами или древовидными индексами, такими как древовидный индекс префиксов или суффиксов. После того, как индекс построен, риды геномной последовательности образца можно сравнить с каждым из двух или более индексов. После этого можно определить, картируются ли риды геномной последовательности образа на каждый из индексов.[00790] All or part of the genomic sequence from the 16S ribosome can be used for this purpose. Thus, two or more genomic reference sequences of species, strains, or clades of organisms suspected of being present in a sample can be constructed to detect members of those groups in the sample. Once the genomic reference sequences have been constructed, an index can also be created for each of them. Indexes can be hash tables or tree indexes, such as a prefix or suffix tree index. Once an index is constructed, the sample's genomic sequence reads can be compared to each of two or more indexes. It can then be determined whether the image's genomic sequence reads map to each of the indices.

[00791] Аналогичным образом риды геномной последовательности можно также выровнять на геномные последовательности, на которые они картирована. В результате будет сформирована оценка выравнивания в соответствии со способами, описанными в настоящем документе, которую можно использовать при анализе вероятности того, что рид указывает на присутствие или отсутствие вида или клады организма в образце. В частности, картирование и/или выравнивание можно осуществит с помощью представленных программных и/или аппаратных модулей, как описано в настоящем документе. В некоторых вариантах реализации картированные и выровненные данные могут быть затем переданы вычислительный ресурс 100/300 для дальнейшего анализа и обработки.[00791] Similarly, genomic sequence reads can also be aligned to the genomic sequences to which they are mapped. This will generate an alignment score according to the methods described herein, which can be used in analyzing the likelihood that a read indicates the presence or absence of a species or clade of an organism in a sample. In particular, mapping and/or alignment can be accomplished using the provided software and/or hardware modules, as described herein. In some implementations, the mapped and aligned data may then be transferred to the 100/300 computing resource for further analysis and processing.

[00792] Например, картированные и/или выровненные риды геномной последовательности могут быть проанализированы для определения правдоподобия того, что организм, имеющий данную геномную референсную последовательность, присутствует в образце. Аналогичным образом может быть сообщен список видов, штаммов или клад, присутствие которых в экологической пробе определено. В определенных вариантах реализации список может быть сообщен вместе метрикой достоверности (например, P-значением), чтобы указать статистическую достоверность оценки. Может быть также сообщен полный список проанализированных видов, штаммов или клад организмов вместе с указанием каждого вида, штамма или клады, которые присутствовали, и метрики достоверности. Необходимо отметить, что различные методы и процедуры, описанные в настоящем документе, хотя они описаны применительно к анализу микробиомов, могут быть использованы в анализе всех других протоколов третичной обработки, где уместно.[00792] For example, mapped and/or aligned genomic sequence reads can be analyzed to determine the likelihood that an organism having a given genomic reference sequence is present in the sample. Similarly, a list of species, strains or clades determined to be present in the environmental sample may be reported. In certain implementations, the list may be reported along with a confidence metric (eg, a P-value) to indicate the statistical significance of the estimate. A complete list of species, strains, or clades of organisms analyzed may also be reported, along with an indication of each species, strain, or clade that was present and the confidence metric. It should be noted that the various methods and procedures described herein, although described in relation to microbiome analysis, can be used in the analysis of all other tertiary processing protocols where appropriate.

[00793] Например, на ФИГ. 43B показан пример реализации способа выполнения экологического анализа, например, микробиомов в экологическом образце. Например, в первом случае можно получить экологический образец и из него изолировать разнообразный генетический материал. Этот разнообразный материал можно затем обработать и секвенировать, например, с помощью подходим образом сконфигурированного СНП.[00793] For example, in FIG. 43B shows an example implementation of a method for performing environmental analysis of, for example, microbiomes in an environmental sample. For example, in the first case, it is possible to obtain an environmental sample and isolate a variety of genetic material from it. This diverse material can then be processed and sequenced, for example, using a suitably configured SNP.

[00794] В результате на первом этапе 1000 после того, как разнообразный генетический материал секвенирован, например, с помощью СНП, его можно передать в систему 1, описанную в настоящем документе. На этапе 1010 можно построить одну, две или более геномных референсных последовательностей, представляющих интерес, например, которые нужно обнаружить в образце. На этапе 1020 можно построить индекс для одной, двух или более геномных референсных последовательностей. Далее, на этапе 1030 полученные секвенированные риды геномного образца можно сравнить с одним, двумя или более индексами, например, с помощью соответствующим образом сконфигурированного модуля картирования. На этапе 1040 можно определить, картируются ли секвенированные риды геномного образа на каждый из двух или более индексов.[00794] As a result, in a first step 1000, after the diverse genetic material has been sequenced, for example, using SNR, it can be transferred to the system 1 described herein. At step 1010, one, two, or more genomic reference sequences of interest, for example, to be detected in the sample, can be constructed. At step 1020, an index may be constructed for one, two, or more genomic reference sequences. Next, at step 1030, the resulting sequenced reads from the genomic sample can be compared to one, two, or more indices, for example, using a suitably configured mapping module. At step 1040, it can be determined whether the sequenced reads of the genomic image map to each of two or more indices.

[00795] В это время, если требуется, на этапе 1050 картированные риды можно выровнять с геномными референсными последовательностями, чтобы сформировать выравнивание и/или оценку выравнивания. Соответственно, после того, как полученные генетические материалы в образце картированы и/или выровнены, на этапе 1060 можно определить правдоподобие того, что данный организм, имеющий референсную последовательность, присутствует в образце. И после обработки можно определить и/или сообщить список видов, штаммов и/или клад, которые присутствуют в образце.[00795] At this time, if desired, in step 1050, the mapped reads can be aligned to genomic reference sequences to generate an alignment and/or an alignment estimate. Accordingly, after the resulting genetic materials in the sample have been mapped and/or aligned, at step 1060, the likelihood that a given organism having the reference sequence is present in the sample can be determined. And after processing, the list of species, strains and/or clades that are present in the sample can be identified and/or reported.

[00796] Платформа третичной обработки, описанная в настоящем документе, может быть также включена в эпигеномный конвейер. В частности, эпигенетика изучает генетические воздействия, которые не кодированы в последовательности ДНК организма Этот термин относится также с самим изменениям: относящимся к функциональным свойствам изменения в геноме, которые не влекут за собой изменения в нуклеотидной последовательности. Тем не менее, эпигенетические изменения являются стабильно наследуемыми фенотипами в результате изменений в хромосоме, которые не изменяют последовательность ДНК, Эти изменения могут быть наследуемыми или ненаследуемыми. В частности, эпигенетические изменения модифицируют активацию определенных генов, но не генетический код последовательности ДНК. Модифицированы могут быть именно сама микроструктура (не код) ДНК или связанные белки хроматина, вызывающие активацию или умолкание.[00796] The tertiary processing platform described herein may also be included in an epigenomic pipeline. In particular, epigenetics is the study of genetic influences that are not encoded in the DNA sequence of an organism. The term also refers to the changes themselves: referring to the functional properties of changes in the genome that do not entail changes in the nucleotide sequence. However, epigenetic changes are stably heritable phenotypes resulting from changes in the chromosome that do not change the DNA sequence. These changes may or may not be heritable. Specifically, epigenetic changes modify the activation of certain genes, but not the genetic code of the DNA sequence. It is the DNA microstructure itself (not the code) or associated chromatin proteins that can cause activation or silencing that can be modified.

[00797] Эпигеном участвует в регулировании экспрессии генов, развитии. дифференциации тканей и подавлении транспозонов. В отличие от лежащего в основе генома, который в значительной мере статичен у индивида, эпигеном может динамически изменяться условиями окружающей среды. Эта область аналогична геномике и протеомике, которые изучают геном и протеом клетки. Кроме того, эпигеномика включает в себя изучение полного набора эпигенетических модификаций на генетическом материале клетки, известном как эпигеном, состоящий из записи химических изменений в ДНК и гистоновые белки организма. Эти изменения могут передаваться потомкам организма посредством трансгенерационного эпигенетического наследования. Изменения в эпигеноме могут привести к изменениям структуры хроматина и изменениям функции генома.[00797] The epigenome is involved in the regulation of gene expression and development. tissue differentiation and transposon suppression. Unlike the underlying genome, which is largely static within an individual, the epigenome can be dynamically altered by environmental conditions. This field is similar to genomics and proteomics, which study the genome and proteome of a cell. Additionally, epigenomics involves the study of the complete set of epigenetic modifications on a cell's genetic material, known as the epigenome, which consists of a record of chemical changes in the DNA and histone proteins of an organism. These changes can be passed on to the organism's descendants through transgenerational epigenetic inheritance. Changes in the epigenome can lead to changes in chromatin structure and changes in genome function.

[00798] Данный эпигенетический механизм позволяет дифференцированным клеткам в многомолекулярном организме выражать только гены, необходимые для собственной активности. При делении клеток эпигенетические изменения сохраняются. В частности, большинство эпигенетических изменений могут происходить только в течение срока жизни отдельного организма. Однако, если инактивация гена происходит в сперматозоидах или яйцеклетках, которые приводят к оплодотворению, то некоторые эпигенетические изменения могут быть переданы следующему поколению. В том, что стало известно как клеточная память, могут участвовать несколько типов систем эпигенетического наследования. Например, различные ковалентные модификации либо ДНК (например, метилирование и гидроксиметилирование цитозина) или гистоновых белков (например, ацетилирование лизина, метилирование лизина и аргинина, фосфорилирование серина и треонина и убиквитинирование и сумоилирование лизина) могут играть центральные роли во многих типах эпигенетического наследования. Поскольку на фенотип клетки или индивида влияет, какие из их генов траскрибируются, наследуемые состояния транскрипции могут привести к эпигенетическими последствиям. Такие последствия для клеточных и физиологических фенотипических признаков могут быть результатом внешних или экологических факторов, которые включают и выключают гены и влияют на то, как клетки экспрессируют гены.[00798] This epigenetic mechanism allows differentiated cells in a multi-molecular organism to express only the genes necessary for their own activity. As cells divide, epigenetic changes persist. In particular, most epigenetic changes can only occur during the lifespan of an individual organism. However, if gene inactivation occurs in sperm or eggs that lead to fertilization, then some epigenetic changes may be passed on to the next generation. Several types of epigenetic inheritance systems may be involved in what has become known as cellular memory. For example, various covalent modifications of either DNA (eg, cytosine methylation and hydroxymethylation) or histone proteins (eg, lysine acetylation, lysine and arginine methylation, serine and threonine phosphorylation, and lysine ubiquitination and sumoylation) may play central roles in many types of epigenetic inheritance. Because the phenotype of a cell or individual is influenced by which of its genes are transcribed, inherited transcriptional states can lead to epigenetic consequences. Such consequences for cellular and physiological phenotypic traits may result from external or environmental factors that turn genes on and off and influence how cells express genes.

[00799] Например, повреждение ДНК может вызвать эпигенетические изменения. ДНК повреждаются очень часто. Эти повреждения в значительной степени репарируются, но в месте репарации ДНК эпигенетические изменения могут сохраниться. В частности, двухнитевый разрыв ДНК может инициировать незапрограммированное эпигенетическое умолкание гена, как за счет вызова метилирования ДНК, так и за счет стимулирования умолкания типов модификаций гистона (ремоделирования хроматина). К другим примерам механизмов, которые создают такие изменения, можно отнести метилирование ДНК и модификацию гистона, каждое из которых изменяет экспрессирование генов без изменения лежащей в основе последовательности ДНК, Было установлено, что ремоделирование нуклеосомы вызывает эпигенетическое умолкание репарирования ДНК. Более того, повреждающие ДНК химикаты могут также вызывать значительное гипометилирование ДНК, например, за счет активации путей окислительного стресса. Кроме того, экспрессия генов может управляться действием репрессорных белков, которые прикрепляются к областям глушителя ДНК.[00799] For example, DNA damage can cause epigenetic changes. DNA gets damaged very often. These lesions are largely repaired, but epigenetic changes may persist at the site of DNA repair. In particular, DNA double-strand breaks can initiate unprogrammed epigenetic gene silencing, both by inducing DNA methylation and by promoting the silencing of types of histone modifications (chromatin remodeling). Other examples of mechanisms that create such changes include DNA methylation and histone modification, each of which alters gene expression without changing the underlying DNA sequence. Nucleosome remodeling has been shown to cause epigenetic silencing of DNA repair. Moreover, DNA-damaging chemicals can also cause significant DNA hypomethylation, for example by activating oxidative stress pathways. In addition, gene expression can be controlled by the action of repressor proteins that attach to DNA silencing regions.

[00800] Эти эпигенетические изменения могут длиться в течение делений клетки на протяжении всей жизни клетки, и могут также длиться в течение множества поколений, даже если они не влекут изменений в лежащей в основе последовательности ДНК организма; зато негенетические факторы заставляют гены организма менять поведение (или «экспрессировать себя»). Одним из примеров эпигенетического изменения в эукариотической биологии является процесс клеточной дифференциации. Во время морфогенеза тотипотентные стволовые клетки становятся различными плюрипотентными клеточными линиями эмбриона, которые, в свою очередь, становятся полностью дифференцированными клетками. Другими словами, по мере того, как одна оплодотворенная яйцеклетка - зигота - продолжает делиться, получающиеся в результате дочерние клетки превращаются во все различные типы клеток в организме, включая нейроны, мышечные клетки, эпителий, эндотелий кровяных сосудов и т.д., за счет активирования некоторых генов при подавлении экспрессии других генов.[00800] These epigenetic changes can last through cell divisions throughout the life of the cell, and can also last for many generations, even if they do not involve changes in the underlying DNA sequence of the organism; but non-genetic factors force the body’s genes to change behavior (or “express themselves”). One example of epigenetic change in eukaryotic biology is the process of cell differentiation. During morphogenesis, totipotent stem cells become the various pluripotent cell lineages of the embryo, which in turn become fully differentiated cells. In other words, as one fertilized egg—the zygote—continues to divide, the resulting daughter cells become all of the different types of cells in the body, including neurons, muscle cells, epithelium, blood vessel endothelium, etc., by activation of some genes while suppressing the expression of other genes.

[00801] Существуют несколько уровней регуляции экспрессии генов. Один путь регуляции генов лежит через ремоделирование хроматина. Хроматин представляет собой комплекс ДНК и гистоновых белков, с которыми она связана. Если порядок обертывания ДНК вокруг гистонов изменяется, экспрессия генов тоже может измениться. Во-первых это происходит вследствие пострансляционной модификации аминокислот, которая компенсирует нехватку гистоновых белков. Гистоновые белки слагаются из длинных цепочек аминокислот. Если аминокислоты в цепочке изменяются, форма гистона может быть модифицирована. Во время репликации ДНК не полностью разматываются. Поэтому возможно, что модифицированные гистоны могут проникнуть в каждую новую копию ДНК. Оказавшись там, эти гистоны могут действовать в качестве шаблонов, инициирующих окружение новых гистонов с образованием новой формы. Благодаря изменению формы гистонов вокруг них, эти модифицированные гистоны обеспечат поддержание программы линиеспецифической транскрипции после деления клетки.[00801] There are several levels of regulation of gene expression. One pathway for gene regulation is through chromatin remodeling. Chromatin is a complex of DNA and the histone proteins with which it is associated. If the order in which the DNA wraps around the histones changes, gene expression may also change. Firstly, this occurs due to post-translational modification of amino acids, which compensates for the lack of histone proteins. Histone proteins are made up of long chains of amino acids. If the amino acids in the chain are changed, the shape of the histone can be modified. During replication, DNA is not completely unwound. It is therefore possible that modified histones may be introduced into each new copy of DNA. Once there, these histones can act as templates that initiate the environment of new histones to form a new form. By changing the shape of the histones around them, these modified histones will ensure the maintenance of the lineage-specific transcription program after cell division.

[00802] Во-вторых, это происходит за счет добавления метиловых групп в ДНК, в основном на сайтах CpG, для преобразования цитозина в 5-метилцитозин. 5-метилцитозин действует во многом подобно нормальному цитозину, спариваясь с гуанином в двухнитевой ДНК. Однако, некоторые области генома метилируются сильнее других, и сильно метилированные области, как правило, отличаются меньшей транскрипциональной активностью за счет механизма, который не до конца понятен. Метилирование цитозинов может также переходить из зародышевой линии одного из родителей в зиготу с образованием хромосомы, которая наследуется от одного родителя или другого (генетический импринтинг). Хотя модификации гистона происходят по все последовательности, неструктурированные N-концы гистонов (называемые гистоновыми хвостами) модифицируются особенно сильно. В число этих модификаций входят ацетилирование, метилирование, убиквитинирование, фосфорилирование, сумоилирование, рибозилирование и цитруллинирование.[00802] Secondly, it occurs by adding methyl groups to the DNA, mainly at CpG sites, to convert cytosine to 5-methylcytosine. 5-methylcytosine acts much like normal cytosine, pairing with guanine in double-stranded DNA. However, some regions of the genome are more methylated than others, and highly methylated regions tend to have less transcriptional activity through a mechanism that is not fully understood. Cytosine methylation can also pass from the germ line of one parent to the zygote to form a chromosome that is inherited from one parent or the other (genetic imprinting). Although histone modifications occur throughout the entire sequence, the unstructured N-termini of histones (called histone tails) are particularly highly modified. These modifications include acetylation, methylation, ubiquitination, phosphorylation, sumoylation, ribosylation, and citrullination.

[00803] Соответственно, метилирование ДНК - это присутствие метиловой группы на некоторых нуклеотидах ДНК, особенно на основаниях «G» или динуклеотидах «CpG». Метилирование в областях промотора, как правило, подавляет экспрессию генов. Анализ метилирования представляет собой процесс обнаружения того, какие основания «C» метилированы в геноме данного образца. Бисульфитное секвенирование (MethylC-seq) является наиболее распространенным способом обнаружен метилирования с использованием секвенирования всего генома, причем неметилированные основания цитозина («C») химически преобразуются в основания урацила («U»), которые становятся основаниями тимина «T» после ПЦР-амплификации. Метилированные основания «C» устойчивы к преобразованию.[00803] Accordingly, DNA methylation is the presence of a methyl group on some DNA nucleotides, especially "G" bases or "CpG" dinucleotides. Methylation in promoter regions tends to repress gene expression. Methylation analysis is the process of discovering which “C” bases are methylated in the genome of a given sample. Bisulfite sequencing (MethylC-seq) is the most common way to detect methylation using whole genome sequencing, with unmethylated cytosine (“C”) bases chemically converted to uracil (“U”) bases, which become thymine “T” bases after PCR amplification . Methylated "C" bases are resistant to conversion.

[00804] Поэтому в соответствии с устройствами и способами, описанными в настоящем документе, предлагается обнаружение модификаций молекул ДНК, где модификации не влияют на последовательность ДНК, но сказываются на экспрессии генов, например, путем выполнения одной или более операций картирования и/или выравнивания на эпигенетическом генетическом материале. В таких способах полученные риды могут быть картированы и выровнены на референсный геном таким образом, который допускает выравнивание преобразованных оснований «T» на позиции «C» референса, а перед картированием/выравниванием основания «C» в референсной последовательности могут быть заменены основаниями «T». Это позволяет точно картировать и выравнивать риды, у которых основания C преобразованы бисульфитом (теперь T), в результате чего в ридах геномной последовательности обнаруживаются не преобразованные сульфитом (метилированные) основания C. Для обратно-комплементарных выравниваний можно использовать комплементарные замены, например, все «G» можно заменить на «A».[00804] Therefore, in accordance with the devices and methods described herein, it is proposed to detect modifications of DNA molecules, where the modifications do not affect the DNA sequence but affect gene expression, for example, by performing one or more mapping and/or alignment operations on epigenetic genetic material. In such methods, the resulting reads can be mapped and aligned to a reference genome in a manner that allows for alignment of the converted "T" bases to the "C" position of the reference, and the "C" bases in the reference sequence can be replaced with "T" bases before mapping/alignment. . This allows the precise mapping and alignment of reads where the C bases are bisulfite-converted (now T), resulting in non-sulfite-converted (methylated) C bases found in the genomic sequence reads. For reverse-complementary alignments, complementary substitutions can be used, e.g., all " G" can be replaced with "A".

[00805] Аналогичным образом построитель индекса референса (например, хэш-таблицы) и сопоставитель/выравниватель могут быть модифицированы для выполнения этих замен автоматически для использования секвенирования MethylC-seq. В альтернативном варианте реализации сопоставитель/выравниватель могут быть модифицированы для обеспечения возможности прямого выравнивания «T» рида на «C» референса и обратно-комплементарного выравнивания «A» рида на «G» референса. Способы, описанные в настоящем документе, улучшают точность и предотвращают ошибочное прямое выравнивание «C» рида на «T» референса или ошибочное обратно-комплементарное выравнивание «G» рида на «A» референса.[00805] Likewise, the reference index builder (eg, hash table) and mapper/aligner can be modified to perform these replacements automatically to use MethylC-seq sequencing. In an alternative embodiment, the mapper/aligner may be modified to allow direct alignment of a “T” read to a “C” reference and reverse complementary alignment of an “A” read to a “G” reference. The methods described herein improve accuracy and prevent erroneous direct alignment of a “C” read to a “T” reference or erroneous reverse complementary alignment of a “G” read to an “A” reference.

[00806] Кроме того, в настоящем документе предложены способы для определения состояния метилирования оснований цитозина в ридах геномной последовательности. Например, на первом этапе можно получить риды геномной последовательности из образцов с нуклеотидами, обработанными бисульфитом. В этой связи, в частности, для формирования рида для вторичной обработки можно использовать один или более модифицированных протоколов. А именно, для выявления метилирования ДНК по всем частям генома при меняющихся уровнях разрешения до уровня пар оснований можно использовать одно или более из: бисульфитного секвенирования при сниженном представительстве; секвенирования посредством иммунопреципитации метилированной ДНК; и секвенирование с использованием метил-чувствительных рестриктаз. Кроме того, можно получить доступ к хроматину там, где он доступен, например, когда можно выполнить секвенирование сайта гиперчувствительности к ДНКазе I, например, когда с помощью фермента ДНКазы I можно найти открытые или доступные области в геноме. Кроме того, можно использовать матрицы секвенирования и экспрессии РНК для выявления уровней экспрессии генов, кодирующих белки. В частности, для определения экспрессии малых некодирующих ДНК, прежде всего миРНК, можно использовать секвенирование ммРНК.[00806] Further provided herein are methods for determining the methylation state of cytosine bases in genomic sequence reads. For example, in a first step, genomic sequence reads can be obtained from samples with bisulfite-treated nucleotides. In this regard, in particular, one or more modified protocols can be used to generate a read for secondary processing. Specifically, one or more of: bisulfite sequencing at reduced representation can be used to detect DNA methylation across all parts of the genome at varying levels of resolution down to the base pair level; sequencing by immunoprecipitation of methylated DNA; and sequencing using methyl-sensitive restriction enzymes. In addition, chromatin can be accessed where it is accessible, for example when DNase I hypersensitive site sequencing can be performed, for example when open or accessible regions in the genome can be found using the DNase I enzyme. Additionally, RNA sequencing and expression arrays can be used to identify the expression levels of protein-coding genes. In particular, mmRNA sequencing can be used to determine the expression of small non-coding DNA, primarily miRNA.

[00807] Следовательно, после секвенирования для создания ридов можно построить геномную референсную последовательность для сравнения с ридами. Затем можно отметить местоположения CpG в геномной референсной последовательности. Далее, можно предварительно обработать геномную референсную последовательность, заменив в ней все «C» на «T». Для геномной референсной последовательности можно построить индекс. И после того, как индекс построен, риды геномной последовательности образца можно сравнить с индексом и определить, картируются ли риды эпигеномной последовательности на индекс.[00807] Therefore, after sequencing to generate reads, a genomic reference sequence can be constructed for comparison with the reads. The CpG locations in the genomic reference sequence can then be marked. Next, you can pre-process the genomic reference sequence by replacing all “C”s in it with “Ts”. An index can be constructed for the genomic reference sequence. And once the index is built, the sample's genomic sequence reads can be compared to the index and determine whether the epigenomic sequence reads map to the index.

[00808] Далее, картированные риды можно выровнять с геномной референсной последовательностью, чтобы сформировать оценку выравнивания. В определенных вариантах реализации можно выполнить замену оснований в последовательности рида, и рид можно снова сравнить и повторно выровнять с индексом. В некоторых вариантах реализации во время картирования и/или выравнивания рида можно использовать ограничение ориентации выравнивания, таким образом, чтобы разрешены были только прямое выравнивание с заменами C на T в риде и геномной референсной последовательности, и только обратно-комплементарные выравнивание с заменами G на A в риде и референсной геномной последовательности.[00808] Next, the mapped reads can be aligned to a genomic reference sequence to generate an alignment score. In certain embodiments, base swaps can be performed in the sequence of the read, and the read can be compared and realigned to the index again. In some embodiments, alignment orientation constraint may be used during read mapping and/or alignment such that only forward alignments with C to T substitutions in the read and the genomic reference sequence are allowed, and only reverse complementary alignments with G to A substitutions are allowed. in read and reference genomic sequence.

[00809] Эти процедуры картирования и выравнивания можно осуществит с помощью различных программных и/или аппаратных модулей, описанных в настоящем документе. В некоторых вариантах реализации картированные и выровненные данные можно затем передать в ЦПУ/ГПУ/КПУ для дальнейшего анализа и обработки. Например, картированные и выровненные риды можно отсортировать по позиции их картирования на референс. В некоторых вариантах реализации можно маркировать и удалить дубликаты. Для каждого отмеченного местоположения CpG в референсе можно проанализировать перекрывающиеся риды из скопления ридов. В таком случае тиамин (T), который заменил цитозин (C) указывает на неметилированный цитозин и помечен как таковой. А цитозин, который остается в последовательности рида, может быть помечен как метилированный цитозин. Можно также пометить обратно-комплементарные выравнивания CpG как метилированные или неметилированные. Например, гуанин (G), который заменил аденин (A), помечают как обратный комплемент неметилированного цитозина (C), тогда как гуанин (G), который остается в последовательности рида, помечают как обратный комплемент метилилированного цитозина (C). Может быть сообщено вероятное состояние метилирования каждого местоположения CpG на каждой нуклеотидной нити, и можно создать связанную метрику достоверности (например, p-значения) определении метилирования. В некоторых вариантах реализации можно также указать состояние метилирования отмеченных местоположений CpG для каждой хромосомы диплоидной пары хромосом.[00809] These mapping and alignment procedures can be accomplished using various software and/or hardware modules described herein. In some implementations, the mapped and aligned data can then be transferred to the CPU/GPU/GPU for further analysis and processing. For example, mapped and aligned reads can be sorted by their reference mapping position. In some embodiments, duplicates can be marked and removed. For each marked CpG location in the reference, overlapping reads from the read pool can be analyzed. In this case, the thiamine (T) that replaced the cytosine (C) indicates unmethylated cytosine and is labeled as such. And cytosine that remains in the read sequence can be labeled as methylated cytosine. It is also possible to label reverse complementary CpG alignments as methylated or unmethylated. For example, a guanine (G) that replaces an adenine (A) is marked as the reverse complement of an unmethylated cytosine (C), whereas a guanine (G) that remains in the read sequence is marked as the reverse complement of a methylated cytosine (C). The probable methylation state of each CpG location on each nucleotide strand can be reported, and an associated confidence metric (eg, p-values) of the methylation determination can be generated. In some embodiments, the methylation state of the marked CpG locations for each chromosome of a diploid chromosome pair may also be indicated.

[00810] Что касается модификации гистона, она включает в себя различные возникающие естественным образом химические модификации гистоновых белков, вокруг которых обернута ДНК, приводящие к более или мене плотному обвертыванию ДНК. Неплотно обернутая ДНК, например, связана с более высокими скоростями экспрессии генов. Такие модификации гистонов можно определить методом секвенирования после иммунопреципитации хроматина (ChIP-Seq), который можно использовать для выявления по всему геному паттернов модификаций гистонов, например, с использованием антител к модификациям. Кроме того, ChIP-seq является способом, который можно использовать для изолирования и секвенирования ДНК, которая тесно связана с гистонами (или другими выбранными белками). После выполнения ChIP-seq можно подготовить образец, изолировать и секвенировать ДНК, и секвенированную ДНК можно затем картировать/выровнять на референсный геном, как описано в настоящем документе, и картированное покрытие можно использовать для выводов об уровне связывания гистонов на различных локусах в геноме. Кроме того, в настоящем документе предложены способы анализа полученных методом ChIP нуклеотидных последовательностей, который аналогичны способам, описанным ниже для анализа структурных вариантов.[00810] With respect to histone modification, this includes various naturally occurring chemical modifications to the histone proteins around which the DNA is wrapped, resulting in the DNA being wrapped more or less tightly. Loosely wrapped DNA, for example, is associated with higher rates of gene expression. Such histone modifications can be determined by chromatin immunoprecipitation sequencing (ChIP-Seq), which can be used to identify genome-wide patterns of histone modifications, for example, using antibodies to the modifications. Additionally, ChIP-seq is a technique that can be used to isolate and sequence DNA that is closely associated with histones (or other selected proteins). Once ChIP-seq is performed, the sample can be prepared, the DNA isolated and sequenced, and the sequenced DNA can then be mapped/aligned to a reference genome as described herein, and the mapped coverage can be used to infer the level of histone binding at various loci in the genome. In addition, this document provides methods for analyzing nucleotide sequences obtained by ChIP, which are similar to the methods described below for the analysis of structural variants.

[00811] Особо следует отметить, что эпигенетика полезна в исследованиях и диагностике рака. Например, опухоли человека подвергают сильному разрушению метилировнием ДНК и исследуют паттерны модификаций гистонов. Фактически аберрантный эпигенетический ландшафт раковой клети характеризуется глобальным геномным гипометилированием, гиперметилированием промотора CpG-островков генов-супрессоров опухоли, измененным кодом гистонов для критических генов и глобальной потерей моноацетилированного и триметилированного гистона H4. Соответственно, способы, описанные в настоящем документе, можно использовать в целях исследования и/или диагностики рака.[00811] Of particular note, epigenetics is useful in cancer research and diagnosis. For example, human tumors are subjected to extensive DNA methylation disruption and histone modification patterns are examined. In fact, the aberrant epigenetic landscape of the cancer cell is characterized by global genomic hypomethylation, hypermethylation of the promoter CpG islands of tumor suppressor genes, altered histone code for critical genes, and global loss of monoacetylated and trimethylated histone H4. Accordingly, the methods described herein can be used for cancer research and/or diagnosis purposes.

[00812] Кроме того, способы, описанные в настоящем документе, можно использовать для формирования одной или более эпигеномных баз данных и/или референсных геномов. Например, описанные в настоящем документе способы, например, использования протоколов обучения ИИ системы, могут быть полезны для формирования референса эпигеномов для человека, например, с использованием нормальных, здоровых индивидов по всему широкому спектру клеточных линий, первичных клеток и/или первичных тканей. После создания такие данные могут быть использованы для улучшения протоколов картирования и/или выравнивания, описанных в настоящем документе. Кроме того, после формирования базы данных эпигеномных различий в ней можно выполнить интеллектуальный анализ, например, с помощью модуля ИИ, чтобы лучше охарактеризовать и определить соответствующие факторы, которые имеют место в различных болезненных состояниях, таких как рак, болезнь Альцгеймера и другие неврологические заболевания.[00812] In addition, the methods described herein can be used to generate one or more epigenomic databases and/or reference genomes. For example, the methods described herein, for example, using AI system training protocols, may be useful for generating reference epigenomes for humans, for example, using normal, healthy individuals across a wide range of cell lines, primary cells and/or primary tissues. Once generated, such data can be used to improve the mapping and/or alignment protocols described herein. In addition, once a database of epigenomic differences has been generated, it can be subject to mining, for example using an AI module, to better characterize and identify relevant factors that occur in various disease states such as cancer, Alzheimer's disease and other neurological diseases.

[00813] Соответственно, в различных случаях можно выполнить эпигеномный анализ, чтобы выявить одну или более или полный набор эпигенетических модификаций, которые произошли на генетическом материале клетки. В частности, с помощью способов, описанных в настоящем документе, можно определить эпигеном организма и/или его клеток, чтобы каталогизировать и/или записать химические изменения в ДНК и гистоновых белках клеток организма. Например, пример эпигеномного анализа показан в настоящем документе на ФИГ. 43C.[00813] Accordingly, in various cases, epigenomic analysis can be performed to identify one or more or a complete set of epigenetic modifications that have occurred on the genetic material of a cell. In particular, using the methods described herein, the epigenome of an organism and/or its cells can be determined to catalog and/or record chemical changes in the DNA and histone proteins of the cells of the organism. For example, an example of epigenomic analysis is shown herein in FIG. 43C.

[00814] Например, на первом этапе можно получить геномный образец из организма, изолировать из него генетический материал и секвенировать. В результате после секвенирования на этапе 1000 секвенированные риды образца можно передать в систему 1, где он будет принят. В данном случае риды могут быть получены из обработанных бисульфитом нуклеотидов образца. Аналогичным образом на этапе 1010 можно построить геномный референс последовательностей, например, для организма, например, для выполнения сравнения эпигеномных ридов образца. На этапе 1012 можно выявить любые различные местоположения CpG в геномных референсных последовательностях.[00814] For example, the first step may be to obtain a genomic sample from an organism, isolate the genetic material from it, and sequence it. As a result, after sequencing at step 1000, the sequenced reads of the sample can be transferred to system 1, where it will be accepted. In this case, reads can be obtained from bisulfite-treated nucleotides of the sample. Similarly, at step 1010, a genomic reference sequence, for example, for an organism, can be constructed, for example, to perform a comparison of epigenomic reads of a sample. At step 1012, any different CpG locations in the genomic reference sequences can be identified.

[00815] После выявления на этапе 1014 «C» в местоположениях CpG в референсе можно заменить на «T», и на этапе 1020 можно сформировать индекс для модифицированной геномной референсной последовательности. После формирования индекса для модифицированного референса на этапе 1030 можно сравнить риды геномной последовательности образца с индексом, а на этапе 1040 можно определить, картируются ли риды геномной последовательности образца на индекс, например, картируются в соответствии со способами и устройствами, описанными в настоящем документе. Картированные риды можно затем выровнять с геномной референсной последовательностью и сформировать оценку выравнивания, например, путем выполнения одной или более операций выравнивания, рассмотренных в настоящем документе.[00815] Once identified at step 1014, the “C” in the CpG locations in the reference can be replaced with “T” and an index for the modified genomic reference sequence can be generated at step 1020. After generating the index for the modified reference, at step 1030, the sample's genomic sequence reads can be compared to the index, and at step 1040, it can be determined whether the sample's genomic sequence reads are mapped to the index, for example, mapped in accordance with the methods and apparatuses described herein. The mapped reads can then be aligned to a genomic reference sequence and an alignment estimate generated, for example, by performing one or more of the alignment operations discussed herein.

[00816] На этой стадии можно выполнить один из множества различных анализов. Например, на этапе 1051, если требуется больше контекста, можно скорректировать замены оснований в ридах, которые обработаны выше, и/или ориентацию совмещения, и/или ограничения параметров и можно повторить этапы сравнения 1030-1050. Сам этот процесс можно повторять по мере надобности до тех по, пока не будет достигнут достаточный уровень контекста. Соответственно, после достижения достаточного уровня контекста картированные и/или выровненные риды на этапе 1080 можно отсортировать, например, в процессе, описанном в настоящем документе, по картированной/выровненной позиции референса. На этапе 1081 можно маркировать и/или удалить любые дубликаты ридов.[00816] At this stage, one of a variety of different analyzes can be performed. For example, at step 1051, if more context is needed, base substitutions in the reads that are processed above and/or alignment orientation and/or parameter constraints can be adjusted and comparison steps 1030-1050 can be repeated. This process itself can be repeated as needed until a sufficient level of context is achieved. Accordingly, once a sufficient level of context has been achieved, the mapped and/or aligned reads at step 1080 can be sorted, for example, in the process described herein, by the mapped/aligned reference position. At step 1081, any duplicate reads can be marked and/or removed.

[00817] Далее, на этапе 1082 можно проанализировать риды из скопления ридов, перекрывающих каждое отмеченное местоположение CpG референса. Там, где «T» заменено на «C», на этапе 1083 можно отметить как неметилированный «C»; а там, где «C» остается в последовательности, на этапе 1084 «C» можно отметить как метилированный «C». Наконец, на этапе 1086 можно также выполнить определение/составление отчета о вероятном состоянии метилирования каждого местоположения CpG на каждой нуклеотидной нити, а также достоверности определения метилирования.[00817] Next, at step 1082, reads from the pool of reads overlapping each flagged reference CpG location can be analyzed. Where "T" is replaced by "C", the "C" may be noted as unmethylated at step 1083; and where "C" remains in the sequence, at step 1084, "C" can be noted as methylated "C". Finally, at step 1086, the likely methylation state of each CpG location on each nucleotide strand may also be determined/reported, as well as the confidence of the methylation determination.

[00818] Кроме того, в настоящем документе предложены способы анализа геномного материала, где часть генетического материала может иметь структурный вариант или быть иным образом связанной с ним. В частности, структурная вариация является вариацией в структуре хромосомы организма. Структурные вариации включают в себя множество видов вариаций в геном вида, в том числе микроскопические и субмикроскопические типы, такие как делеции, дупликации, вариации числа копий, инсерции, инверсии и транслокации. Многие структурные варианты связаны с генетическими болезнями. Действительно, около 13% генома человека определено как структурный вариант в нормальной популяции, и имеются по меньшей мере 240 генов, которые существуют в виде полиморфизмов гомозиготной делеции в человеческих популяциях. Такие структурные вариации могут содержать миллионы нуклеотидов гетерогенности в каждом геноме, и, вероятно, вносят важный вклад в склонность к заболеваниям человека.[00818] Further provided herein are methods for analyzing genomic material, wherein a portion of the genetic material may have a structural variant or be otherwise related thereto. Specifically, structural variation is variation in the chromosome structure of an organism. Structural variations include many types of variations in a species' genome, including microscopic and submicroscopic types such as deletions, duplications, copy number variations, insertions, inversions, and translocations. Many structural variants are associated with genetic diseases. Indeed, about 13% of the human genome is defined as structural variant in the normal population, and there are at least 240 genes that exist as homozygous deletion polymorphisms in human populations. Such structural variations may contain millions of nucleotides of heterogeneity in each genome and are likely to be an important contributor to human disease susceptibility.

[00819] Вариация числа копий представляет собой большую категорию структурной вариации, которая включает в себя инсерции, делеции и дупликации. Существуют несколько версий известных тем, что они связаны с болезнью человека. Например, рекуррентная инверсия 400kb в гене фактора VIII является распространенной причиной гемофилии A, а меньшие инверсии, влияющие на идуронат-2-сульфатазу, вызовут синдром Хантера. В число других примеров входят синдром Ангельмана и синдром Сотоса. Наиболее распространенными типами сложной структурной вариации являются нетандемные дупликации, где последовательность дублирована и вставлена в инвертированной или прямой ориентации в другую часть генома. Другой класс сложного структурного варианта включает комбинации делеция-инсерция-делеции, дупликация-инсерция-дупликации и тандемные дупликации с вложенными делециями. Существуют также криптические транслокации и сегментная однородительская дисомия (UPD).[00819] Copy number variation is a large category of structural variation that includes insertions, deletions, and duplications. There are several versions known to be associated with human illness. For example, a recurrent 400kb inversion in the factor VIII gene is a common cause of hemophilia A, and smaller inversions affecting iduronate-2-sulfatase will cause Hunter syndrome. Other examples include Angelman syndrome and Sotos syndrome. The most common types of complex structural variation are non-tandem duplications, where a sequence is duplicated and inserted in an inverted or forward orientation into another part of the genome. Another class of complex structural variants includes deletion-insertion-deletion combinations, duplication-insertion-duplications, and tandem duplications with nested deletions. There are also cryptic translocations and segmental uniparental disomy (UPD).

[00820] Однако обнаружение аномальных структур ДНК проблематично и выходит за рамки определений вариантов, известных до настоящего времени. В число структурных вариантов, которые трудно обнаруживать, входят те, которые имеют: большие инсерции и делеции (например, инделы размером свыше 50-100 пар оснований); дупликации и другие вариации числа копий (CNV); инсерции и транслокации вместе с анеуплоидией (аномальное количество копий хромосомы: моносомия, дисомия, трисомия и т.д.). В определенных случаях, описанных в настоящем документе, выявленные вариации количества копий можно проверить субъектах, не имеющих генетических болезней, например, с помощью количественного генотипирования ОНП.[00820] However, detection of abnormal DNA structures is problematic and beyond the scope of variant definitions known to date. Structural variants that are difficult to detect include those that have: large insertions and deletions (eg, indels larger than 50-100 base pairs); duplications and other copy number variations (CNVs); insertions and translocations along with aneuploidy (abnormal number of chromosome copies: monosomy, disomy, trisomy, etc.). In certain cases described herein, identified copy number variations can be tested in subjects free of genetic diseases, for example, using quantitative SNP genotyping.

[00821] Обнаружение структурной вариации обычно начинают с выполнения операции картирования выравнивания с использованием устройств и способов, описанных в настоящем документе. Например, риды геномного образца, подлежащие анализу, могут быть картированы и выровнены на референсный геном, например, в протоколе, который поддерживает химерные выравнивания. А именно, некоторые структурные варианты (например, CNV и анеуплоидия) могут быть обнаружены с помощью анализа относительно картированного покрытия. Однако другие структурные варианты (например, большие инделы, инверсии, транслокации) могут быть обнаружены с помощью анализа обрезанных и химерных выравниваний.[00821] Detection of structural variation typically begins by performing an alignment mapping operation using the devices and methods described herein. For example, reads from a genomic sample to be analyzed can be mapped and aligned to a reference genome, for example, in a protocol that supports chimeric alignments. Namely, some structural variants (e.g., CNVs and aneuploidy) can be detected by analysis relative to mapped coverage. However, other structural variants (eg, large indels, inversions, translocations) can be detected by analysis of trimmed and chimeric alignments.

[00822] А именно, каждый структурный вариант включает в себя одну или более позиций «разрыва», где рид не картируется на референсный геном, например, когда геометрия изменяется между образцом и референсом. В таком случае скопление можно сконфигурировать таким образом, чтобы риды в нем, которые слегка перекрывают разрывы структурного варианта, могли быть обрезаны в месте разрыва, а риды, существенно перекрывающие разрывы структурного варианта, могли быть химерически выровнены. Однако, пары ридов, перекрывающих разрывы структурных вариантов, могут быть несовместимо выровнены, когда два сопряженных рида картируются на совершенно разные местоположения референса и/или с аномальной относительной ориентацией парных ридов. Такие препятствия можно преодолеть с помощью способов, описанных в настоящем документе.[00822] Namely, each structural variant includes one or more “break” positions where the read does not map to the reference genome, for example, when the geometry changes between the sample and the reference. In such a case, the cluster can be configured so that reads within it that slightly overlap structural variant breaks can be trimmed at the break, and reads that significantly overlap structural variant breaks can be chimerically aligned. However, pairs of reads spanning structural variant breaks may be inconsistently aligned when the two paired reads map to completely different reference locations and/or with an anomalous relative orientation of the paired reads. Such obstacles can be overcome using the methods described herein.

[00823] Например, в определенных случаях данные, относящиеся к известным структурных вариантам, могут быть использованы для более хорошего определения последовательности структурного варианта. Например, можно составить базу данных, имеющую список структурных вариаций в геноме человека, например, с упором на CNV, и такие данные могут быть использованы при определении последовательности конкретных вариантов, например, в соответствующим образом сконфигурированном протоколе взвешивания. В частности, когда структурный вариант известен, его «внутренние» и «наружные» координаты можно использовать как минимальный и максимальный диапазон последовательности, на который может влиять структурная вариация. Кроме того, известные вариации в виде инсерции, потери, приобретения, инверсии, ПГЗ, выворачивания, транслокации и ОРД можно классифицировать и ввести в базу знаний представленной системы.[00823] For example, in certain cases, data related to known structural variants can be used to better determine the sequence of a structural variant. For example, a database could be compiled having a list of structural variations in the human genome, eg, focusing on CNVs, and such data could be used in sequencing specific variants, eg, in an appropriately configured weighing protocol. In particular, when a structural variant is known, its "inner" and "outer" coordinates can be used as the minimum and maximum sequence range that can be affected by the structural variation. In addition, known variations in the form of insertion, loss, gain, inversion, PGZ, eversion, translocation and ORD can be classified and entered into the knowledge base of the presented system.

[00824] В различных случаях определение структурного варианта можно выполнить с помощью соответствующим образом сконфигурированного программного обеспечения, исполняемого на ЦПУ/ГПУ/КПУ, например, путем использования ранее определенных данных секвенирования, а в других случаях можно выполнить анализ структурных вариантов, например, в аппаратном обеспечении, описанном в настоящем документе. Соответственно, в конкретных случаях предусмотрен способ анализа геномных последовательностей для структурных вариантов. Например, на первом этапе можно получить риды геномной последовательности из образца нуклеотидов. В определенных случаях секвенированные риды могут быть получены из протоколов спаренных концов или сопряженных парных ридов для обнаружения структурных вариантов. Далее можно построить индекс геномной референсной последовательности, например, когда индекс может быть хэш-таблицей или деревом, таким как дерево префиксов или суффиксов. После того, как индекс построен, риды геномной последовательности образца можно сравнить с индексом, чтобы определить, картируются ли риды геномной последовательности на индекс. Если да, риды геномной последовательности образца можно затем выровнять на геномную референсную последовательность, на которую они картированы, и можно определить оценку выравнивания.[00824] In various cases, determination of a structural variant can be performed using suitably configured software running on the CPU/GPU/GPU, for example, by using previously determined sequencing data, and in other cases, analysis of structural variants can be performed, for example, in hardware provision described in this document. Accordingly, in specific cases, a method for analyzing genomic sequences for structural variants is provided. For example, in the first step, genomic sequence reads can be obtained from a sample of nucleotides. In certain cases, sequenced reads can be generated from paired-end or conjugate paired read protocols to detect structural variants. An index of the genomic reference sequence may then be constructed, for example where the index may be a hash table or a tree, such as a prefix or suffix tree. Once the index is constructed, the sample's genomic sequence reads can be compared to the index to determine whether the genomic sequence reads map to the index. If so, the sample's genomic sequence reads can then be aligned to the genomic reference sequence to which they are mapped, and an alignment score can be determined.

[00825] Как указано выше, картирование и/или выравнивание можно осуществит с помощью аппаратного модуля, как описано в настоящем документе. В некоторых вариантах реализации картированные и выровненные данные можно затем передать в связанные ЦПУ/ГПУ/КПУ для дальнейшего анализа и обработки. Эти риды можно отсортировать по картированным позициям референса, а дубликаты ридов можно маркировать и удалить. Можно определить выравнивания химерных ридов и/или необычные относительные выравнивания двух сопряженных ридов и на основе обнаруженных выравниваний химерных ридов и/или необычных относительных выравниваний можно определить возможные структурные варианты (например, большой индел, инверсию или транслокацию). Аналогичным образом можно вычислить апостериорные вероятности каждого возможного структурного варианта. В некоторых вариантах реализации можно определить гаплотипы структурных вариантов, например, с помощью анализа HMM на выравниваниях химерных ридов и/или необычных относительных выравниваниях. Например, для такого определения можно использовать парную HMM. Парную HMM можно осуществить с помощью аппаратного модуля.[00825] As stated above, mapping and/or alignment can be accomplished using a hardware module as described herein. In some implementations, the mapped and aligned data can then be transferred to the associated CPU/GPU/CPU for further analysis and processing. These reads can be sorted by mapped reference positions, and duplicate reads can be marked and removed. Chimeric read alignments and/or unusual relative alignments of two paired reads can be determined, and based on the detected chimeric read alignments and/or unusual relative alignments, possible structural variants (eg, large indel, inversion, or translocation) can be determined. In a similar way, one can calculate the posterior probabilities of each possible structural variant. In some embodiments, haplotypes of structural variants can be determined, for example, using HMM analysis on chimeric read alignments and/or unusual relative alignments. For example, a pairwise HMM can be used for such a determination. Paired HMM can be implemented using a hardware module.

[00826] Соответственно, в различных случаях, как показано на ФИГ. 43D, представлен способ определения вариантов в структуре хромосом организма. Например, в соответствии со способами, описанными в настоящем документе, на этапе 1000 можно принять риды геномной последовательности. На этапе 1010 можно построить одну или более референсных последовательностей, чтобы выполнить сравнение между ридами и референсными последовательностями. А именно, на этапе 1010 можно построить геномную референсную последовательность, что обеспечить возможность сравнения принятых ридов со сформированным референсом. Точнее говоря, для этих целей на этапе 1020 можно сформировать индекс для геномной референсной последовательности, например, на этапе 1020 можно сформировать хэш-таблицу или дерево префиксов/суффиксов. В результате на этапе 1030 можно сравнить риды геномной последовательности образца со сформированным индексом, например, в соответствии с программными и/или аппаратными реализациями, описанными в настоящем документе.[00826] Accordingly, in various cases, as shown in FIG. 43D, a method for identifying variants in the chromosome structure of an organism is presented. For example, in accordance with the methods described herein, at step 1000, genomic sequence reads may be received. At step 1010, one or more reference sequences may be constructed to perform a comparison between the reads and the reference sequences. Namely, at step 1010, a genomic reference sequence can be constructed to allow comparison of the received reads with the generated reference. More specifically, for these purposes, an index for the genomic reference sequence may be generated at step 1020, for example, a hash table or prefix/suffix tree may be generated at step 1020. As a result, at step 1030, the genomic sequence reads of the sample can be compared with the generated index, for example, in accordance with software and/or hardware implementations described herein.

[00827] Если на этапе 1040 определено, что риды геномной последовательности образца картируются на индекс, то на шаге 1050 картированные риды можно выровнять с геномной референсной последовательностью и сформировать оценку выравнивания. На этапе 1080 риды образца можно отсортировать по их картированным позициям референса. В это время на этапе 1081 можно маркировать и удалить дубликаты ридов. Далее, на этапе 1090 можно обнаружить выравнивания химерных ридов и/или необычные относительные выравнивания, например, могут быть обнаружены два сопряженных рида, и на этапе 1092 можно определить возможные структурные варианты, например, на основе обнаруженных выравниваниях химерных ридов и/или необычных относительных выравниваниях. К тому же можно вычислить апостериорные вероятности каждого возможного структурного варианта и, необязательно, на этапе 1096 можно определить гаплотипы структурных вариантов, например, с помощью анализа HMM, как описано в настоящем документе, выравниваний химерных ридов и/или необычных относительных выравниваний.[00827] If it is determined at step 1040 that the sample's genomic sequence reads are mapped to an index, then at step 1050 the mapped reads can be aligned to a genomic reference sequence and an alignment score generated. At step 1080, the sample reads can be sorted by their mapped reference positions. At this time, at step 1081, duplicate reads can be marked and removed. Further, at step 1090, chimeric read alignments and/or unusual relative alignments may be detected, e.g., two conjugate reads may be detected, and at step 1092, possible structural variants may be determined, e.g., based on the detected chimeric read alignments and/or unusual relative alignments. . In addition, posterior probabilities of each possible structural variant can be calculated and, optionally, at step 1096, haplotypes of the structural variants can be determined, for example, using HMM analysis as described herein, chimeric read alignments, and/or unusual relative alignments.

[00828] Кроме того, устройства, системы и способы, описанные в настоящем документе, могут быть использованы для обработки последовательностей РНК. В частности, в настоящем документе представлены способы анализа последовательности РНК, например, с использованием протокола сплайсированного картирования и выравнивания (например, с помощью соответствующим образом сконфигурированного сопоставителя/выравнивателя РНК). Например, в одном варианте реализации может быть предусмотрен конвейер транскриптома, например для сверхбыстрого анализа данных последовательности РНК, В частности, этот конвейер может быть выполнен с возможностью осуществления вторичного анализа РНК-транскриптов, например, применительно к выравниванию только на референс, а также выравнивают с помощью аннотаций).[00828] In addition, the devices, systems and methods described herein can be used to process RNA sequences. In particular, methods are provided herein for analyzing an RNA sequence, for example, using a splice mapping and alignment protocol (eg, using a suitably configured RNA mapper/aligner). For example, in one embodiment, a transcriptome pipeline may be provided, for example, for ultra-fast analysis of RNA sequence data. In particular, this pipeline may be configured to perform secondary analysis of RNA transcripts, for example, with respect to reference-only alignments, as well as alignments with using annotations).

[00829] Соответственно, в первом способе с помощью прибора для секвенирования можно создать необработанные данные рида, например в формате файла BCL и/или FASTQ, и ввести в систему, где можно выполнить картирование, выравнивание и определение вариантов. Однако, в различных случаях в систему можно ввести один или более файлов аннотаций генов (GTF), например, чтобы направить сплайсированные выравнивания, например, можно построить и использовать LUT границы сплайсинга. Например, можно использовать таблицы точности выравнивания и границы сплайсинга. Соответственно, можно выполнить 2-фазовое выравнивание, например, когда на первой фазе выравнивания можно использовать новые границы сплайсинга, которые затем могут быть затем использованы для направления выполнения второй фазы картирования/выравнивания. После определения вариантов система выведет стандартный файл VCF, готовый для третичного анализа.[00829] Accordingly, in the first method, raw read data, for example in a BCL and/or FASTQ file format, can be generated using a sequencing instrument and entered into a system where mapping, alignment and variant determination can be performed. However, in various cases one or more gene annotation files (GTFs) can be entered into the system, for example to guide spliced alignments, for example splice boundary LUTs can be constructed and used. For example, alignment accuracy and splice boundaries tables can be used. Accordingly, a 2-phase alignment can be performed, for example where new splice boundaries can be used in the first alignment phase, which can then be used to guide the execution of a second mapping/alignment phase. Once the options have been identified, the system will output a standard VCF file ready for tertiary analysis.

[00830] В частности, после того, как входной файл принят, можно выполнить сплайсированное картирование и выравнивание, например, на ридах с одинарными и спаренными концами. Как было указано, для вывода одной границы можно использовать фильтры границ, выполненные с возможностью конфигурирования. Можно выполнить сортировку по позиции, которая может включать в себя распределения по группам в соответствии с референсом, и затем сортировку групп по позиции референса, и можно маркировать дубликаты, например, на основе начальной позиции и строки CIGAR, для формирования высококачественного отчета о дубликатах, с помощью которого можно удалить все дубликаты. Затем можно выполнить определение вариантов гаплотипов, например, с помощью движка обработки SW и HMM.[00830] In particular, after the input file is accepted, splice mapping and alignment can be performed, for example, on single-end and paired-end reads. As stated, configurable edge filters can be used to output a single edge. You can sort by position, which may include groupings according to the reference, and then sorting the groups by reference position, and you can flag duplicates, for example, based on the starting position and CIGAR string, to generate a high-quality duplicate report, with with which you can remove all duplicates. Haplotype variant detection can then be performed, for example using the SW and HMM processing engine.

[00831] Кроме того, устройства, системы и способы, описанные в настоящем документе, могут быть использованы для выполнения определения соматических вариантов. Например, можно использовать протокол определения соматических вариантов, чтобы обнаружить варианты, имеющие место в раковых клетках. В частности, можно получить геномные образцы для определения соматических вариантов из или биопсий одной или множества опухолей. Необязательно, можно также получить «нормальный» (неопухолевый) образец, например, для сравнения во время определения вариантов, например, когда соматические варианты будут возникать в опухолевых клетках, но не в клетках нормального образца. Из образцов можно изолировать ДНК/РНК и секвенировать, например, с помощью секвенатора нового поколения. Секвенированные данные, например, из каждого образца, можно затем передать на платформу вторичной обработки, и риды можно картировать и выровнять. Далее, риды можно подвергнуть множеству процедур определения вариантов, включая обработку с использованием одного или обоих движков SW и парной HMM.[00831] In addition, the devices, systems and methods described herein can be used to perform somatic variant detection. For example, a somatic variant detection protocol can be used to detect variants occurring in cancer cells. In particular, genomic samples for the determination of somatic variants can be obtained from or biopsies of one or multiple tumors. Optionally, a “normal” (non-tumor) sample may also be obtained, for example for comparison during variant detection, for example where somatic variants will occur in tumor cells but not in cells of the normal sample. DNA/RNA can be isolated from samples and sequenced, for example, using a next-generation sequencer. Sequenced data from, for example, each sample can then be transferred to a secondary processing platform and the reads can be mapped and aligned. Next, reads can be subjected to a variety of variant detection procedures, including processing using one or both of the SW engines and the paired HMM.

[00832] Однако система должна быть выполнена с возможностью обнаружения вариантов с низкой частотой аллеля, такой как от 3% до 10% (или выше). Более конкретно, можно использовать модель вероятности генотипирования, которая выполнена с возможностью обеспечения произвольных частот аллелей. Один из способов обеспечения такой возможности состоит в назначении частот аллелей каждого генотипа варианта, соответствующих наблюдаемым частотам аллей в перекрывающихся ридах. Например, если 10% перекрывающихся ридов проявляют определенный вариант, можно проверить генотип, состояний на 90% из референсного аллеля и на 10% из другого аллеля. В случае двойных образцов опухоль/нормальная ткань можно оценить апостериорную вероятность того, что вариант присутствует в образце опухоли, но отсутствует в нормальном образце.[00832] However, the system must be capable of detecting variants with low allele frequency, such as 3% to 10% (or higher). More specifically, a genotyping probability model may be used that is configured to provide arbitrary allele frequencies. One way to provide this capability is to assign allele frequencies for each variant genotype that correspond to the observed allele frequencies in the overlapping reads. For example, if 10% of the overlapping reads exhibit a particular variant, one can test the genotype, states 90% from the reference allele and 10% from the other allele. In the case of dual tumor/normal tissue samples, one can estimate the posterior probability that a variant is present in the tumor sample but absent in the normal sample.

[00833] Например, конвейер определителя соматических вариантов может быть выполнен с возможностью обеспечения информации о гетерогенности опухоли, например, что произошла серия различных событий мутации, например, когда выявлены одна или более секций опухоли разных генотипов (подклон). Такую информацию о подклоне можно получить из определения частот аллелей вариантов и их распределений, и/или исключительно с помощью дифференциального определения вариантов среди множества образцов опухоли.[00833] For example, a somatic variant detector pipeline may be configured to provide information about tumor heterogeneity, such as that a series of different mutation events have occurred, such as when one or more tumor sections of different genotypes (subclone) are identified. Such subclone information can be obtained from determining variant allele frequencies and their distributions, and/or solely by differentially identifying variants among multiple tumor samples.

[00834] Соответственно, предложены способы обнаружения вариантов последовательности раковых клеток из образца. На первом этапе из раковых и/или нормальных клеток можно получить риды геномной последовательности из образца нуклеотидов. Риды последовательности могут быть из протоколов спаренных концов или сопряженных парных ридов, аналогичных используемым для обнаружения структурных вариантов. Можно построить индекс геномной референсной последовательности, например, когда индекс может быть хэш-таблицей или деревом, таким как дерево префиксов или суффиксов. Риды геномной последовательности образца, например, образца опухоли и/или нормального образца, можно сравнить с индексом и определить, картируются ли риды эпигеномной последовательности на индекс.[00834] Accordingly, methods are provided for detecting sequence variants of cancer cells from a sample. In the first step, genomic sequence reads can be obtained from a sample of nucleotides from cancerous and/or normal cells. Sequence reads can be from paired-end protocols or conjugate paired reads, similar to those used to detect structural variants. An index of a genomic reference sequence may be constructed, for example where the index may be a hash table or a tree, such as a prefix or suffix tree. The genomic sequence reads of a sample, such as a tumor sample and/or a normal sample, can be compared to the index and determine whether the epigenomic sequence reads map to the index.

[00835] Риды геномной последовательности образца можно затем выровнять на геномную референсную последовательность, на которую они картированы, и можно сформировать оценку выравнивания. Картирование и/или выравнивание можно осуществит с помощью программных и/или аппаратных модулей, как описано в настоящем документе. В некоторых вариантах реализации картированные и выровненные данные можно затем передать в ЦПУ/ГПУ/КПУ для дальнейшего анализа и обработки. Эти риды можно отсортировать по картированным позициям референса, а любые дубликаты ридов можно маркировать и удалить. Варианты можно обнаружить с помощью байесовского анализа, который модифицирован для ожидания произвольных частот аллелей вариантов и для обнаружения и сообщения возможных низких частот аллелей (например, от 3% до 10%).[00835] The sample's genomic sequence reads can then be aligned to the genomic reference sequence to which they are mapped, and an alignment score can be generated. Mapping and/or alignment can be accomplished using software and/or hardware modules as described herein. In some implementations, the mapped and aligned data can then be transferred to the CPU/GPU/GPU for further analysis and processing. These reads can be sorted by mapped reference positions, and any duplicate reads can be flagged and removed. Variants can be detected using Bayesian analysis, which is modified to expect arbitrary variant allele frequencies and to detect and report possible low allele frequencies (e.g., 3% to 10%).

[00836] В некоторых вариантах реализации генеративные варианты могут быть обнаружены как в нераковых, так и в раковых образцах, в соматические варианты могут быть обнаружены только в раковых образцах. Например, генеративные и соматические мутации могут отличаться относительной частотой. Для каждого возможного ракового варианта можно вычислить апостериорные вероятности, и в некоторых вариантах реализации можно определить гаплотипы структурных вариантов с помощью анализа HMM выравниваний химерических ридов и/или необычных относительных ридов. Например, для такого определения можно использовать парную HMM. Парную HMM можно осуществить с помощью аппаратных модулей, как описано в настоящем документе.[00836] In some embodiments, generative variants may be found in both non-cancerous and cancer samples, while somatic variants may only be found in cancer samples. For example, generative and somatic mutations may differ in relative frequency. For each possible cancer variant, posterior probabilities can be calculated, and in some embodiments, haplotypes of structural variants can be determined using HMM analysis of chimeric read alignments and/or unusual relative reads. For example, a pairwise HMM can be used for such a determination. Paired HMM can be implemented using hardware modules as described herein.

[00837] Соответственно, в различных вариантах реализации можно выполнять процедуру определения соматических вариантов, которая пояснена на ФИГ, 43E, например, для вычисления вероятности того, что вариант является раковым вариантом. Например, на этапе 1000 можно сформировать риды геномной последовательности образцов, например, путем секвенирования с помощью СНП, и/или получить их, например, посредством передачи с помощью соответствующим образом сконфигурированной облачной сетевой системы, например, из одного или обоих ракового и неракового генетических образцов. На этапе 1010 можно сформировать геномную референсную последовательность, например, для сравнения ридов, на этапе 1020 можно построить индекс геномной референсной последовательности, а на этапе 1030 геномную последовательность образца можно сравнить с индексом, например, с помощью программных и/или аппаратных реализаций, описанных в настоящем документе, чтобы на этапе 1040 картировать риды геномной последовательности на индекс. Далее, на этапе 1050 картированные риды можно выровнять с геномной референсной последовательностью, чтобы сформировать оценку выравнивания. На этапе 1080 картированные и/или выровненные риды можно затем отсортировать по позиции референса, и, необязательно, на этапе 1081 можно маркировать и удалить любые дубликаты ридов.[00837] Accordingly, in various embodiments, the somatic variant determination procedure that is explained in FIG. 43E can be performed, for example, to calculate the probability that a variant is a cancer variant. For example, at step 1000, genomic sequence reads of the samples may be generated, for example, by sequencing using SNR, and/or obtained, for example, by transmission via a suitably configured cloud-based network system, for example, from one or both cancer and non-cancerous genetic samples . At step 1010, a genomic reference sequence can be generated, for example, for comparison of reads, at step 1020, an index of the genomic reference sequence can be constructed, and at step 1030, the genomic sequence of the sample can be compared to the index, for example, using software and/or hardware implementations described in herein to map genomic sequence reads to an index at step 1040. Next, at step 1050, the mapped reads may be aligned to a genomic reference sequence to generate an alignment score. At step 1080, the mapped and/or aligned reads can then be sorted by reference position, and optionally, at step 1081, any duplicate reads can be labeled and removed.

[00838] Кроме того, после того, как риды маркированы, и/или выровнены, и/или отсортированы, и/или избавлены от дубликатов, на этапе 1100 можно обнаружить варианты, например, с помощью байесовского анализа, а на этапе 1101 можно обнаружить генеративные варианты, как в нераковых, так и в раковых образцах, а также, необязательно, соматические варианта в этих образцах. Аналогичным образом на этапе 1094 можно вычислить апостериорные вероятности каждого возможного ракового варианта. Далее, на этапе 1096 можно, необязательно, определить гаплотипы раковых вариантов, например, путем реализации анализа HMM в программном и/или аппаратном обеспечении, как описано в настоящем документе.[00838] In addition, after the reads are labeled and/or aligned and/or sorted and/or deduplicated, variants can be detected at step 1100, for example, using Bayesian analysis, and at step 1101, variants can be detected generative variants in both non-cancerous and cancerous samples, and optionally somatic variants in these samples. Similarly, at step 1094, the posterior probabilities of each possible cancer variant can be calculated. Next, at step 1096, haplotypes of cancer variants can optionally be determined, for example, by implementing HMM analysis in software and/or hardware, as described herein.

[00839] Кроме того, устройства, системы и способы, описанные в настоящем документе, могут быть выполнены с возможностью осуществления операции совместного генотипирования. В частности, операцию совместного генотипирования можно использовать для улучшения точности определения вариантов, например, за счет совместного рассмотрения ридов из когорты множества субъектов. Например, в различных случаях геномные вариации могут быть сильно коррелированными в определенных популяциях, например, когда определенные варианты распространены среди множества субъектов. В таких случаях чувствительность и специфичность определения вариантов можно улучшить за счет совместного рассмотрения подтверждающих данных для каждого варианта из множества образцов ДНК (или РНК). А именно, чувствительность можно улучшить ввиду того, что слабые подтверждающие данные для варианта у одного субъекта могут быть усилены подтверждающими данными для того же самого варианта в других образцах. Точнее говоря, чувствительность можно улучшить потому, что умеренные подтверждающие данные для ложноположительного варианта могут быть ослаблены отсутствием подтверждающих данных для того же самого варианта в других образцах. Вообще говоря, чем больше образцов участвуют в совместном генотипировании, тем более точным будет определение вариантов для любого данного субъекта.[00839] In addition, the devices, systems and methods described herein may be configured to perform a co-genotyping operation. In particular, the joint genotyping operation can be used to improve the accuracy of variant detection, for example by jointly considering reads from a cohort of multiple subjects. For example, in different cases, genomic variations may be highly correlated in certain populations, such as when certain variants are common among many subjects. In such cases, the sensitivity and specificity of variant detection can be improved by jointly considering supporting evidence for each variant from multiple DNA (or RNA) samples. Namely, sensitivity can be improved in that weak supporting evidence for a variant in one subject can be strengthened by supporting evidence for the same variant in other samples. More specifically, sensitivity can be improved because moderate supporting evidence for a false-positive variant may be weakened by the lack of supporting evidence for the same variant in other samples. Generally speaking, the more samples that participate in co-genotyping, the more accurate the variant identification will be for any given subject.

[00840] Совместное генотипирование включает в себя оценку апостериорных вероятностей для различных подмножеств всех субъектов, имеющих данный вариант с помощью априорных вероятностей, которые выражают наблюдаемые корреляции в генетической вариации. В различных случаях совместное генотипирование можно осуществить за одно выполнение определения вариантов, где выровненные риды из множества образцов исследуются определителем вариантов. Обычно это практично только для небольшого количества образцов, так как при участии десятков, сотен или тысяч образцов общий размер данных становится практически нереальным для быстрого доступа и манипулирования.[00840] Conjoint genotyping involves estimating posterior probabilities for various subsets of all subjects having a given variant using prior probabilities that express observed correlations in genetic variation. In various cases, co-genotyping can be accomplished in a single variant detection run, where aligned reads from multiple samples are examined by a variant detector. This is usually only practical for a small number of samples, since when tens, hundreds, or thousands of samples are involved, the overall data size becomes nearly impossible to quickly access and manipulate.

[00841] В альтернативном варианте реализации совместное генотипирование можно осуществить, сначала выполнив определение вариантов отдельно для каждого образца, объединив затем результаты с помощью средства совестного генотипирования, которое обновляет вероятности вариантов для каждого субъекта с использованием объединенной информации. В этом способе используют дополнительные выходные данные из каждого определения вариантов одного образца, чтобы лучше изменить области слабых подтверждающих данных для вариантов и/или в областях, где без совместной обработки варианты не были бы определены. Хотя для представления определенных вариантов при определении вариантов одного образца обычно используют формат VCF, для представления определений вариантов первой стадии (и не вариантов) при подготовке к объединению можно использовать специальный формат gVCF. Формат gVCF содержит записи для местоположений и/или блоков из множества местоположений, где скорее всего нет варианта, поэтому данную информацию можно объединят с gVCF других определений или отсутствия определений в тех же местоположениях, чтобы получать улучшенные совместные определения генотипов для каждого субъекта.[00841] In an alternative embodiment, conjoint genotyping can be accomplished by first performing variant determinations separately for each sample, then combining the results using a conjoint genotyping tool that updates variant probabilities for each subject using the combined information. This method uses additional output from each variant determination of a single sample to better modify areas of weak supporting evidence for variants and/or in areas where variants would not have been identified without co-processing. Although the VCF format is typically used to represent specific variants when defining variants of a single sample, the special gVCF format can be used to represent first-stage variant (and non-variant) definitions in preparation for merging. The gVCF format contains records for locations and/or blocks from multiple locations where there is likely to be no variant, so this information can be combined with gVCFs of other determinations or lack of determinations in the same locations to obtain improved joint genotype determinations for each subject.

[00842] Соответственно, конвейер совместного генотипирования может быть выполнен с возможностью определения вариантов для множества проб быстрее и с большей точностью. Кроме того, конвейер совместного генотипирования может быть также выполнен с возможностью поддержки определения вариантов генеалогии, а также популяции из когорты образцов. Например, конвейер можно выполнить с возможностью обработки до 10, 15, 20, 25, даже 50 или более образцов одновременно. В различных случаях конфигурация для определения вариантов популяции может быть выполнена с возможностью одновременной обработки образцов размером в многие тысячи. Кроме того, сочетание скорости и иерархического группирования множества образцов обеспечивает эффективное с вычислительной точки зрения решение для анализа совместного генотипирования. Кроме того, секвенирование образцов для совместного генотипирования можно выполнять в одной и той же проточной кювете секвенатора нового поколения, что позволяет системе одновременно картировать/выравнивать входные данные множества образцов, тем самым ускоряя общий процесс совместного определения, например, когда данные BCL можно подавать прямо в конвейер для создания уникальных файлов gVCF для каждого образца.[00842] Accordingly, a co-genotyping pipeline can be configured to identify variants across multiple samples more quickly and with greater accuracy. In addition, the co-genotyping pipeline may also be configured to support the determination of lineage variants as well as populations from a cohort of samples. For example, the pipeline can be configured to process up to 10, 15, 20, 25, even 50 or more samples simultaneously. In various cases, the configuration for identifying population variants may be configured to simultaneously process samples of many thousands in size. Additionally, the combination of speed and hierarchical clustering of multiple samples provides a computationally efficient solution for co-genotyping analyses. Additionally, sequencing of samples for co-genotyping can be performed in the same flow cell of a next-generation sequencer, allowing the system to simultaneously map/align multiple sample inputs, thereby speeding up the overall co-genotyping process, such as when BCL data can be fed directly into pipeline to generate unique gVCF files for each sample.

[00843] Поэтому в настоящем документе предложен способ улучшения точности определения вариантов за счет совместного рассмотрения ридов когорты из множества субъектов. На первом этапе принимают риды геномной последовательности из двух или более образцов. Строят геномную референсную последовательность для сравнения с ридами, а из нее формируют индекс геномной референсной последовательности. Затем риды геномной последовательности каждого образца сравнивают с индексом и определяют, картируются ли риды геномной последовательности каждого образца на индекс.[00843] Therefore, this document proposes a method for improving the accuracy of variant detection by jointly reviewing reads from a cohort of multiple subjects. The first step takes genomic sequence reads from two or more samples. A genomic reference sequence is constructed for comparison with reads, and an index of the genomic reference sequence is formed from it. The genomic sequence reads of each sample are then compared to the index and it is determined whether the genomic sequence reads of each sample map to the index.

[00844] Затем картированные риды можно выровнять с геномной референсной последовательностью, и можно сформировать оценку выравнивания. Эти риды можно отсортировать по картированным позициям референса, а дубликаты ридов можно маркировать и/или удалить. Кроме того, после этого можно проанализировать перекрывающиеся риды из скопления ридов, чтобы определить, согласуются ли большинство ридов с референсной геномной последовательностью. Для каждого возможного варианта вычисляют апостериорные вероятности, и можно объединить данные определения вариантов из всех образов, чтобы улучшить точность определения вариантов для каждого отдельного образца. Это улучшает точность определения вариантов (например, чувствительность и специфичность) для каждого образца и может осуществить в виде этапа обработки после того, как образцы были подвергнуты анализу определения вариантов, или это можно делать накопительно после определения вариантов для каждого образца. Затем можно определить правдоподобие нереференсных аллелей в областях, где не определено вариантов, и сообщить полученное правдоподобие нереференсных аллелей в областях, где не определено вариантов.[00844] The mapped reads can then be aligned to a genomic reference sequence and an alignment score can be generated. These reads can be sorted by mapped reference positions, and duplicate reads can be marked and/or removed. Additionally, overlapping reads from the read pool can then be analyzed to determine whether the majority of the reads are consistent with the reference genomic sequence. Posterior probabilities are calculated for each possible variant, and variant identification data from all samples can be combined to improve the accuracy of variant identification for each individual sample. This improves the accuracy of variant determination (eg, sensitivity and specificity) for each sample and can be done as a processing step after the samples have been subjected to variant determination analysis, or it can be done cumulatively after variant determination for each sample. The likelihood of non-reference alleles in regions where no variants are defined can then be determined and the resulting likelihood of non-reference alleles in regions where variants are not defined can be reported.

[00845] Соответственно, в различных вариантах реализации можно выполнять процедуру определения соматических вариантов, которая пояснена на ФИГ, 43F, например, для вычисления вероятности того, что вариант является раковым вариантом. Например, на этапе 1000 можно сформировать риды геномной последовательности образцов, например, путем секвенирования с помощью СНП, и/или получить их, например, посредством передачи с помощью соответствующим образом сконфигурированной облачной сетевой системы, например, из одного или обоих ракового и неракового генетических образцов. На этапе 1010 можно сформировать геномную референсную последовательность, например, для сравнения ридов, на этапе 1020 можно построить индекс геномной референсной последовательности, а на этапе 1030 геномную последовательность образца можно сравнить с индексом, например, с помощью программных и/или аппаратных реализаций, описанных в настоящем документе, чтобы на этапе 1040 картировать риды геномной последовательности на индекс. Далее, на этапе 1050 картированные риды можно выровнять с геномной референсной последовательностью, чтобы сформировать оценку выравнивания. На этапе 1080 картированные и/или выровненные риды можно затем отсортировать по позиции референса, и, необязательно, на этапе 1081 можно маркировать и удалить любые дубликаты ридов.[00845] Accordingly, in various embodiments, the somatic variant determination procedure that is explained in FIG. 43F can be performed, for example, to calculate the probability that a variant is a cancer variant. For example, at step 1000, genomic sequence reads of the samples may be generated, for example, by sequencing using SNR, and/or obtained, for example, by transmission via a suitably configured cloud-based network system, for example, from one or both cancer and non-cancerous genetic samples . At step 1010, a genomic reference sequence can be generated, for example, for comparison of reads, at step 1020, an index of the genomic reference sequence can be constructed, and at step 1030, the genomic sequence of the sample can be compared to the index, for example, using software and/or hardware implementations described in herein to map the genomic sequence reads to an index at step 1040. Next, at step 1050, the mapped reads can be aligned to a genomic reference sequence to generate an alignment score. At step 1080, the mapped and/or aligned reads can then be sorted by reference position, and optionally, at step 1081, any duplicate reads can be labeled and removed.

[00846] Аналогичным образом на этапе 1082 можно проанализировать перекрывающиеся риды из скопления ридов, чтобы определить, согласуются одно или более, например, большинство, ридов с референсными геномными последовательностями, а на этапе 1094 можно вычислить апостериорные вероятности каждого возможного варианта. В этом момент на этапе 1096 можно определить гаплотипы вариантов, если требуется, например, путем выполнения анализа HMM, и/или на этапе 1120 можно, необязательно, объединить данные определения вариантов, например, из всех, образцов, чтобы улучшить точность определения вариантов для каждого отдельного образца. Далее, на этапе 1122 можно определить и сообщить правдоподобие нереференсных аллелей, например, в областях, где не определено вариантов.[00846] Similarly, at step 1082, overlapping reads from a pool of reads can be analyzed to determine whether one or more, e.g., a majority, reads match the reference genomic sequences, and at step 1094, posterior probabilities for each possible variant can be calculated. At this point, at step 1096, variant haplotypes can be determined if desired, for example, by performing HMM analysis, and/or at step 1120, variant definition data can optionally be combined, for example, from all samples, to improve the accuracy of variant detection for each separate sample. Next, at step 1122, the likelihood of non-reference alleles can be determined and reported, for example, in regions where no variants have been identified.

[00847] Кроме того, как показано на ФИГ, 43, в соответствии с одним аспектом предложен магазин приложений в сети, чтобы пользователи могли разрабатывать, продавать и использовать геномные средства, которые могут быть внедрены в систему и использоваться для анализа геномных данных, передаваемых и вводимых в систему. В частности, магазин геномных приложений позволяет клиентам, у которых есть желание, разрабатывать генетические тесты, например, вроде теста ОРИТН, которые после разработки могут быть выгружены в систему, например, генетическую торговую площадку, для приобретения и использования в качестве платформы системы, чтобы все, кто используют вновь разработанную платформу системы, могли использовать выгруженные тесты через веб-портал. Более конкретно, пользователь может перейти на веб-портал магазина приложений, найти требуемый тест, например, тест ОРИТН, загрузить его и/или сконфигурировать систему для его реализации, например, на своих пригодных для выгрузки генетических данных. Поэтому «когортная» торговая интернет-площадка представляет быстрый и эффективный способ развертывания новых генетических аналитических приложений, которые позволяют получать идентичные результаты с любой из представленных платформ, которые исполняют загруженное приложение. Более конкретно, рыночная интернет-площадка обеспечивает для любого, кто работает с системой, механизм разработки приложений генетического анализа, которые удаленный пользователь может загрузить и сконфигурировать для использования в соответствии с представленными моделями рабочего потока.[00847] Additionally, as shown in FIG 43, in accordance with one aspect, an online application store is provided to enable users to develop, sell, and use genomic tools that can be embedded in a system and used to analyze genomic data transmitted and entered into the system. In particular, the genomic app store allows customers who wish to develop genetic tests, such as the NICU test, which, once developed, can be uploaded to a system, such as a genetic marketplace, for purchase and use as a platform for the system to all Those who use the newly developed system platform could use the uploaded tests through a web portal. More specifically, the user can go to an application store web portal, find the required test, for example, the NICU test, download it and/or configure the system to implement it, for example, on their downloadable genetic data. Therefore, a “cohort” online marketplace provides a fast and efficient way to deploy new genetic analytical applications that allow identical results to be obtained from any of the platforms that run the downloaded application. More specifically, the Internet marketplace provides a mechanism for anyone working with the system to develop genetic analysis applications that a remote user can download and configure for use according to the workflow models presented.

[00848] В соответствии с другим аспектом, когортная торговая площадка, описанная в настоящем документе, позволяет безопасно делиться данными. Например, передача и хранение геномных данных должны быть хорошо защищенными. Однако зачастую такие генетические данные большого объема и сложны для передачи надежным защищенным образом, например, когда идентификационные данные субъекта ограничена. Соответственно, представленная генетическая торговая площадка позволяет участникам когорты совместно использовать генетические данные без необходимости идентификации субъекта. На такой торговой площадке участники когорты могут делиться вопросами и процессами для продвижения своих исследований в защищенной и безопасной среде, не подвергая риску идентификационные данные геномов своих соответствующих субъектов. Кроме того, пользователь может заручиться помощью остальных исследователей в анализе своих наборов образцов, не раскрывая личности тех, кому эти геномы принадлежат.[00848] In accordance with another aspect, the cohort marketplace described herein allows for secure sharing of data. For example, the transmission and storage of genomic data must be well protected. However, such genetic data is often large and difficult to transmit in a secure and secure manner, for example when the subject's identity is limited. Accordingly, the presented genetic marketplace allows cohort members to share genetic data without the need for subject identification. In such a marketplace, cohort members can share questions and processes to advance their research in a protected and secure environment without compromising the genomic identities of their respective subjects. In addition, the user can enlist the help of other researchers in analyzing their sample sets without revealing the identity of those who own these genomes.

[00849] Например, пользователь может идентифицировать субъектов, обладающих определенным генотипом и/или фенотипом, таким как рак молочной железы 3-й стадии, и/или прохождение терапии конкретным лекарственным средством. Можно сформировать когорту, чтобы посмотреть, как эти лекарственные препараты влияют на рост раковых клеток на генетическом уровне. Таким образом, эти характеристики, среди прочих, могут формировать критерии отбора в когорту, которые позволят другим исследователям, например, находящихся на удалении, выполнять стандартные генетические анализы на генетических данных, используя единообразные аналитические процедуры, на тех доступных для них субъектах, которые удовлетворяют критериям когорты. Таким образом, данному исследователю не нужно отвечать за идентификацию и безопасность тех, чьи образцы входят в набор образцов, например, субъектов, удовлетворяющих критериям, при аргументировании своего научного анализа.[00849] For example, a user may identify subjects having a particular genotype and/or phenotype, such as stage 3 breast cancer, and/or undergoing therapy with a particular drug. A cohort can be formed to see how these drugs affect the growth of cancer cells at the genetic level. Thus, these characteristics, among others, may form cohort selection criteria that will allow other researchers, for example at a remote location, to perform standard genetic analyzes on genetic data, using uniform analytical procedures, on those subjects available to them who meet the criteria cohorts. Thus, a given researcher does not have to be responsible for the identification and safety of those whose samples are included in the sample set, such as eligible subjects, when justifying their scientific analysis.

[00850] В частности, исследователь A может создать исследовательскую когорту на торговой площадке и определить надлежащие критерии выбора для субъектов, геномных тестов, которые будут выполняться, и параметры для выполнения тестов. Исследователи B и C, находящиеся на удалении от исследователя A, могут затем подписаться на когорту, определить и выбрать субъектов, отвечающих критериям, и затем выполнить указанные тесты на своих субъектах, используя единообразные процедуры, описанные в настоящем руководстве, чтобы помочь исследователю A оперативно достичь своих исследовательских целей, или сделать это более эффективно. Это выгодно, так как передается только часть генетических данных, идентификационные данные субъекта защищены, и, поскольку данные анализируются при помощи одной и той же системы генетического анализа с использованием одинаковых параметров, данные результатов будут одними и теми же вне зависимости от того, где и на какой машине выполнялись тесты. Следовательно, когортная торговая площадка позволяет пользователям формировать и создавать когорты, просто публикуя критерии выбора и параметры выполнения на информационной панели. Также можно публиковать ставки вознаграждения и исполненные платежи, используя соответствующим образом сконфигурированную программу для коммерческой деятельности, например для денежного обмена.[00850] Specifically, researcher A may create a research cohort in the marketplace and determine appropriate selection criteria for subjects, genomic tests to be performed, and parameters for performing the tests. Investigators B and C, located remotely from Investigator A, can then sign up for the cohort, identify and select eligible subjects, and then perform specified tests on their subjects using the uniform procedures described in this manual to help Investigator A quickly achieve your research goals, or to do it more efficiently. This is beneficial because only a portion of the genetic data is shared, the subject's identity is protected, and because the data is analyzed using the same genetic analysis system using the same parameters, the results data will be the same regardless of where or on what machine the tests were performed on. Hence, a cohort marketplace allows users to form and create cohorts by simply publishing selection criteria and execution parameters on a dashboard. It is also possible to publish interest rates and executed payments using a suitably configured program for commercial activities, such as money exchange.

[00851] Любой, кто решает принять участие в когорте, может загрузить критерии и файлы данных и/или использовать генетические данные, уже сформированные и/или сохраненные им, при выполнении запрошенного анализа. Например, каждый участник когорты будет должен, или иметь возможность, формировать базу данных файлов BCL и/или FASTQ, которые хранятся на его индивидуальных серверах. Эти генетические файлы будут получены для субъектов, которые окажутся соответствующими критериям отбора. А именно, эти сохраненные генетические и/или другие данные субъекта могут быть отсканированы, чтобы определить пригодность для включения в рамках критериев выбора в когорту. Такие данные могли быть уже сформированы в нескольких целях, но вне зависимости от причин их формирования, они могут после этого быть выбраны и подвергнуты запрошенным конвейерным анализам и использованы для включения в когорту.[00851] Anyone who chooses to participate in the cohort can download the criteria and data files and/or use the genetic data they have already generated and/or stored in performing the requested analysis. For example, each cohort member will be required, or have the ability, to create a database of BCL and/or FASTQ files that are stored on their individual servers. These genetic files will be obtained for subjects who meet the selection criteria. Namely, the subject's stored genetic and/or other data may be scanned to determine eligibility for inclusion as part of the cohort selection criteria. Such data may have already been generated for several purposes, but regardless of the reasons for its generation, it can then be selected and subjected to the requested pipeline analyzes and used for inclusion in the cohort.

[00852] Соответственно, в различных вариантах реализации когортная система может быть форумом для соединения исследователей, чтобы позволить им объединять свои ресурсы и данные, например данные генетической последовательности. Например, вступление в когорту позволит первому исследователю ввести проект, запрашивающий анализы генетических данных, требующие интеллектуального анализа и/или исследования ряда геномов различных субъектов, например, касающихся картирования, выравнивания, определения вариантов и т.п. Поэтому вместо того, чтобы собирать субъектов и отбирать наборы образцов самому, инициатор когорты может объявить о потребности в выполнении заданной процедуры анализов на наборах образцов, собранных другими, или которые будут собраны другими, и такой коллективный подход формированию наборов образцов и анализа их обеспечивается организацией когорты, описанной в настоящем документе. В частности, инициатор когорты может установить выбор в когорту, создать файл конфигурации для совместного использования потенциальными участниками когорты, создать параметры рабочего потока, например, в папке рабочего потока, и может тем самым автоматизировать формирование и анализ данных, например посредством системы управления рабочими потоками. Система может также обеспечить коммерческую сторону транзакции, например, обработку платежа для компенсации участникам когорты предоставления ими наборов генетических данных, которые могут быть проанализированы, например, в отношении картирования, выравнивания, определения вариантов и/или с точки зрения третичного анализа.[00852] Accordingly, in various embodiments, a cohort system may be a forum for connecting researchers to allow them to pool their resources and data, such as genetic sequence data. For example, joining the cohort will allow the first investigator to enter a project requesting analyzes of genetic data that require mining and/or exploration of a number of genomes from different subjects, for example relating to mapping, alignment, variant identification, etc. Therefore, rather than recruiting subjects and selecting sets of samples himself, a cohort initiator can declare a need to perform a given test procedure on sets of samples collected by others, or that will be collected by others, and this collaborative approach to generating sample sets and analyzing them is facilitated by organizing the cohort described in this document. In particular, the cohort initiator may set selections to the cohort, create a configuration file for sharing among potential cohort members, create workflow parameters, for example, in a workflow folder, and can thereby automate the generation and analysis of data, for example, through a workflow management system. The system may also provide the commercial side of the transaction, such as payment processing to compensate cohort participants for their provision of genetic data sets that can be analyzed, for example, for mapping, alignment, variant identification and/or tertiary analysis.

[00853] В различных вариантах реализации когортный структурированный анализ может быть направлен на первичную обработку, например, либо ДНК, либо РНК, например, такую как обработка изображения и/или перекалибровка оценки качества оснований, анализ метилирования и т.п.; и/или может быть направлен на выполнение вторичного анализа, например, в отношении картирования, выравнивания, сортировки, определения вариантов и т.п.; и/или может быть направлен на третичный анализ, например, в отношении матричного, геномного, эпигеномного, метагеномного анализа, анализа генотипирования, вариантов и/или других форм третичного анализа. Кроме того, необходимо понимать, что хотя многие из конвейеров и анализов, выполняемых тем самым, могут включать в себя первичную и/или вторичную обработку, различные платформы анализа, описанные в настоящем документе, могут не относиться непосредственно к первичной или вторичной обработке. Например, в определенных случаях платформа анализа может относиться исключительно к выполнению третичного анализа, например, на генетических данных, или других форм геномных и/или биоинформационных анализов.[00853] In various embodiments, cohort structured analysis may be directed to primary processing of, for example, either DNA or RNA, such as image processing and/or base quality score recalibration, methylation analysis, and the like; and/or may be aimed at performing secondary analysis, for example, in relation to mapping, alignment, sorting, identifying variants, etc.; and/or may be directed to tertiary analysis, such as array, genomic, epigenomic, metagenomic, genotyping, variant, and/or other forms of tertiary analysis. Additionally, it should be understood that while many of the pipelines and analyzes performed thereby may involve primary and/or secondary processing, the various analysis platforms described herein may not specifically address primary or secondary processing. For example, in certain cases, an analysis platform may refer solely to performing tertiary analysis, such as on genetic data, or other forms of genomic and/or bioinformatics analyses.

[00854] Например, в конкретных вариантах реализации, что касается конкретных аналитических процедур, которые будут выполняться, подлежащие выполнению анализы могут включать в себя одно или более из картирования, выравнивания, сортировки, определения вариантов и т.п., для создания данных результатов, которые могут быть подвергнуты оной или более процедур вторичного и/или третичного анализа в зависимости от определенных конвейеров, выбранных для выполнения. Рабочий поток может быть простым или он может быть сложным, например, он может требовать использования одного модуля конвейера, например картирования, или множества модулей, таких как картирование, выравнивание, сортировка, определение вариантов и/или другие, но важным параметром является то, что рабочий поток должен быть идентичным для каждого участника когорты. В частности, уникальным признаком системы является то, что инициатор запроса, создающий когорту, указывает параметры управления, чтобы обеспечить выполнение анализа одинаковым образом вне зависимости от того, где эти процедуры выполняются, и на каких машинах.[00854] For example, in specific embodiments, with respect to the particular analytical procedures that will be performed, the analyzes to be performed may include one or more of mapping, alignment, sorting, variant determination, and the like, to generate result data, which may be subject to one or more secondary and/or tertiary analysis procedures depending on the specific pipelines selected for execution. The workflow may be simple or it may be complex, for example it may require the use of a single pipeline module such as mapping or multiple modules such as mapping, alignment, sorting, variant detection and/or others, but the important parameter is that the work flow should be identical for each cohort member. In particular, a unique feature of the system is that the requester creating the cohort specifies control parameters to ensure that the analysis is performed in the same way regardless of where the procedures are performed or on what machines.

[00855] Соответственно, при настройке когорты инициатор запроса выгрузит критерии выбора вместе с файлом конфигурации. Затем другие участники когорты просмотрят критерии выбора, чтобы определить, имеются ли у них наборы данных генетической информации, попадающие в пределы установленных критериев отбора, и если да, выполнят запрошенный анализ на этих данных на основе настроек файла конфигурации. Исследователи могут подписаться на выбор в качестве участника когорты, и в случае большого числа подписчиков, может быть организован розыгрыш или выбор участников на конкурентной основе. В различных случаях может быть инициирована система открытых торгов. Данные результатов, сформированные участниками когорты, могут быть обработаны в месте эксплуатации или на облаке, и если при этом используют файл конфигурации, обработка данных будет одинаковой. В частности, файл конфигурации указывает, как нужно сконфигурировать устройство BioIT-аналитики, и после того, как устройство настроено в соответствии с заданной конфигурацией и связано с системой, оно будет выполнять запрошенный генетический анализ одинаковым образом вне зависимости от того, где оно расположено, локально или удаленно. Затем данные результатов могут быть выгружены на когортную торговую площадку, и с учетом полученных данных результатов переводится и принимается оплата.[00855] Accordingly, when setting up a cohort, the requester will upload the selection criteria along with the configuration file. Other cohort members will then review the selection criteria to determine whether they have genetic information datasets that fall within the established selection criteria and, if so, perform the requested analysis on those data based on the configuration file settings. Researchers can sign up to be selected as a cohort participant, and if there are large numbers of subscribers, a drawing or competitive selection of participants can be organized. In various cases, an open tender system may be initiated. Outcome data generated by cohort members can be processed on site or in the cloud, and if a configuration file is used, the data processing will be the same. Specifically, the configuration file specifies how the BioIT analytics device is to be configured, and once the device is configured and associated with the system, it will perform the requested genetic analysis in the same manner regardless of where it is located locally or remotely. The results data can then be uploaded to the cohort marketplace and based on the received results data, payment is transferred and accepted.

[00856] Например, анализ генетических данных может быть выполнен локально, а результаты выгружены на облако, или выгружены могут быть сами генетические данные, а анализ может быть выполнен на облаке, например, на сервере или в сети серверов, например, на квантовой платформе обработки, связанной с облаком. В различных случаях, возможно, будет полезно выгружать только данные результатов, чтобы лучше защищать идентификационные данные субъектов. В частности, выгрузка только данных результатов не только надежно защищена, то и избавляет от необходимости передачи больших количеств данных, тем самым повышая эффективность системы.[00856] For example, the analysis of genetic data can be performed locally and the results uploaded to the cloud, or the genetic data itself can be uploaded and the analysis can be performed on the cloud, for example, on a server or network of servers, for example, on a quantum processing platform associated with the cloud. In various cases, it may be useful to download only the results data to better protect the identities of the subjects. In particular, uploading only the results data is not only secure, it also eliminates the need to transfer large amounts of data, thereby increasing system efficiency.

[00857] Более конкретно, в различных случаях может быть выгружен сжатый файл, содержащий данные результатов из одного или более конвейеров, и в некоторых случаях нужно выгружать только файл, содержащий описание вариаций. В некоторых случаях нужно лишь дать ответ, такой как, например, «да» или «нет». Такие ответы предпочтительнее, так как они не указывают идентификационные данные субъекта. Однако, если анализ нужно выполнять в сети, например, в облаке, выбранные файлы BCL и/или FASTQ могут быть выгружены, анализ выполнен, и затем данные результатов могут быть возвращены обратно исходному отправителю, который затем может выгрузить данные результатов через интерфейс когорты. После чего исходные необработанные данные могут быть удалены из памяти в сети. Благодаря этому и прочим подобным вещам инициатор запроса когорты не будет иметь доступа к идентифицирующим данным субъектов.[00857] More specifically, in various cases a compressed file containing result data from one or more pipelines may be downloaded, and in some cases only the file containing the description of the variations needs to be downloaded. In some cases, you just need to give an answer, such as “yes” or “no.” These responses are preferred because they do not provide identifying information about the subject. However, if the analysis needs to be performed online, such as in the cloud, the selected BCL and/or FASTQ files can be uploaded, the analysis performed, and then the results data can be returned back to the original sender, who can then upload the results data through the cohort interface. The original raw data can then be removed from memory on the network. Due to this and other similar things, the cohort requester will not have access to the identifying data of the subjects.

[00858] Для повышения эффективности когорты особенно полезно сжатие, например, с использованием технологии анализа «точно в срок» (JIT). Например, перемещение данных в когортную систему и обратно с использованием типичных процедур обходится очень дорого. Соответственно, хотя в различных конфигурациях необработанные и/или несжатые данные, выгружаемые в систему, могут храниться там, в конкретных случаях данные могут быть сжаты перед выгрузкой, и затем эти данные могут быть обработаны в системе, а результаты после этого могут быть сжаты перед передачей из системы, например, когда сжатие совершается в соответствии с протоколом JIT. В этом случае хранение таких данных, например, в сжатой форме, обходится дешевле, и, следовательно, когортная система весьма экономически эффективна.[00858] Compression, such as using just-in-time (JIT) analysis technology, is particularly useful to improve cohort efficiency. For example, moving data to and from a cohort system using typical procedures is very expensive. Accordingly, while in various configurations the raw and/or uncompressed data uploaded to the system may be stored there, in specific cases the data may be compressed before upload, and the data may then be processed by the system, and the results may then be compressed before transmission from the system, for example, when compression is performed according to the JIT protocol. In this case, storing such data, for example in a compressed form, is cheaper, and therefore the cohort system is very cost-effective.

[00859] Кроме того, в различных случаях на одной торговой интернет-площадке могут быть представлены множество когорт, и при наличии процессов сжатия, описанных в настоящем документе, данные могут быть переданы из одной когорты в другую, чтобы исследователи всевозможных разных когорт могли совместно использовать данные между собой, что без применения способов сжатия, описанных в настоящем документе, могло бы оказаться непозволительно дорогим. В частности, без скорости и эффективности сжатия JIT данные, однажды переданные на облако, будут, как правило, оставаться на облаке, хотя и будут доступны там для просмотра и манипулирования. Однако JIT позволяет быстро передавать данные на облако и обратно для локальной и/или облачной обработки. Кроме того, как показано на ФИГ. 41B и 43, в конкретных случаях система 1 может быть выполнена с возможностью применения к сформированным и/или подвергнутым вторичной обработке данным дальнейшей обработки, например, посредством локального 100 и/или удаленного 300 вычислительного ресурса, например, путем пропускания их через один или более конвейеров третичной обработки, таких как один или более из конвейера микроматричного анализа, конвейера анализа генома, например, полногеномного анализа, конвейера анализа генотипирования, конвейера анализа экзома, конвейера анализа микробиома, конвейера анализа генотипирования, включая совместное генотипирование, конвейера анализа вариантов, включая конвейеры структурных вариантов, конвейеры соматических вариантов, и конвейеры GATK и/или MuTect2, а также конвейеры секвенирования РНК и/или другой конвейер третичной обработки. Данные результатов такой обработки могут быть затем сжаты и/или сохранены удаленно 400 и/или переданы для сохранения локально 200.[00859] In addition, in various cases, multiple cohorts may be represented on a single online marketplace, and with the compression processes described herein, data can be transferred from one cohort to another so that researchers from all sorts of different cohorts can share data between themselves, which would be prohibitively expensive without the compression techniques described herein. In particular, without the speed and efficiency of JIT compression, data once transferred to the cloud will typically remain on the cloud, although still available there for viewing and manipulation. However, JIT allows data to be quickly transferred to and from the cloud for local and/or cloud processing. In addition, as shown in FIG. 41B and 43, in specific cases, the system 1 may be configured to apply further processing to the generated and/or processed data, for example, by a local 100 and/or a remote 300 computing resource, for example, by passing it through one or more pipelines. tertiary processing, such as one or more of a microarray analysis pipeline, a genome analysis pipeline, e.g., a whole genome analysis pipeline, a genotyping analysis pipeline, an exome analysis pipeline, a microbiome analysis pipeline, a genotyping analysis pipeline, including co-genotyping, a variant analysis pipeline, including structural variant pipelines , somatic variant pipelines, and GATK and/or MuTect2 pipelines, as well as RNA sequencing pipelines and/or other tertiary processing pipeline. Data from such processing may then be compressed and/or stored remotely 400 and/or transmitted for storage locally 200.

[00860] В частности, одна или более, например, все, из этих функций могут быть выполнены локально, например, в месте 10 эксплуатации, на локальном облаке 30 или посредством контролируемого доступа при помощи гибридного облака 50. В таком случае создают среду разработчика, которая позволяет пользователю управлять функциональными возможностями системы 1 для удовлетворения своих индивидуальных потребностей и/или для предоставления доступа к ней другим пользователям, которые ищут такие же или подобные результаты. Следовательно, различные компоненты, процессы, процедуры, средства, ярусы и иерархии системы могут быть выполнены с возможностью конфигурирования через интерфейс ГПИ, который позволяет пользователю выбирать, какие компоненты системы использовать, на каких данных, в какое время и в каком порядке в соответствии с установленными требованиями пользователя и протоколами, чтобы сформировать соответствующие данные и соединения между данными, которые могут быть безопасно переданы по всей системе, будь то локально или удаленно. Как было указано, эти компоненты могут быть выполнены с возможностью беспрепятственного обмена данными между собой, например, независимо от местоположения и/или вида соединения, например, за счет конфигурации с жестким связыванием и/или бесшовного связывания посредством облака, и/или возможности конфигурирования, например, посредством протокола JIT, чтобы выполнять одни и те же или подобные процессы одинаковым или аналогичным образом, например, путем использования соответствующих интерфейсов API, рассредоточенных по всей системе, применение которых позволяет различным пользователям конфигурировать различные компоненты для выполнения различных процедур аналогичным образом.[00860] In particular, one or more, for example all, of these functions can be performed locally, for example, at the operational location 10, on a local cloud 30, or through controlled access using a hybrid cloud 50. In such a case, a developer environment is created, which allows the user to control the functionality of the system 1 to meet their individual needs and/or to make it available to other users who are looking for the same or similar results. Consequently, the various components, processes, procedures, tools, tiers and hierarchies of the system can be made configurable through a GUI interface that allows the user to select which system components to use, on what data, at what time and in what order according to established user requirements and protocols to form appropriate data and connections between data that can be securely transferred throughout the system, whether locally or remotely. As stated, these components can be configured to seamlessly communicate with each other, e.g., regardless of location and/or type of connection, e.g., through hard-coupled configuration and/or seamless connectivity via the cloud, and/or configurability, for example, through a JIT protocol to perform the same or similar processes in the same or similar way, for example, by using appropriate APIs distributed throughout the system, the use of which allows different users to configure different components to perform different procedures in a similar way.

[00861] Например, API может быть определен в заголовочном файле в отношении процессов, которые должны выполняться каждым конкретным компонентом системы 1, причем заголовок описывает выполняемые функции и определяет, как вызывать функции, например, параметры, которые передаются, принимаемые входные и передаваемые выходные данные, и способ, каким это происходит, что поступает и как, что выдается и как, что возвращается и каким образом. Например, в различных вариантах реализации один или более компонентов и/или их элементов, которые могут образовывать один или более конвейеров одного или более ярусов системы, могут быть выполнены с возможностью конфигурирования их с помощью инструкций, вводимых пользователем и/или одним или более приложений второй и/или третьей стороны. Эти инструкции могут передаваться в систему через соответствующие API, которые обмениваются данными с одним или более различных драйверов системы, указывая драйверам, какие части системы, например, модули, и/или какие процессы в них нужно активировать, когда и в каком порядке, с учетом предварительной выбранной конфигурации параметров, которая может быть определена с помощью интерфейса, который может быть выбран пользователем, например, ГПИ,[00861] For example, an API may be defined in a header file regarding the processes to be performed by each specific component of system 1, where the header describes the functions performed and specifies how to call the functions, such as parameters that are passed, inputs received, and outputs passed. , and the way in which it happens, what comes in and how, what is issued and how, what is returned and how. For example, in various embodiments, one or more components and/or elements thereof, which may form one or more pipelines of one or more tiers of the system, may be configured by instructions input by the user and/or one or more second-tier applications. and/or a third party. These instructions can be passed to the system through appropriate APIs that communicate with one or more different system drivers, indicating to the drivers which parts of the system, such as modules, and/or which processes within them should be activated, when and in what order, taking into account a pre-selected configuration of parameters, which can be defined using an interface that can be selected by the user, for example a GUI,

[00862] В частности, один или более драйверов DMA системы 1 могут быть выполнены с возможностью работы соответствующим образом, например, на уровне ядра каждого компонента и системы 1 в целом. В таком случае одно или более из предусмотренных ядер может иметь свой собственный базовый API очень низкого уровня, который предоставляет доступ к аппаратному обеспечению и функциям различных компонентов системы 1, чтобы иметь доступ к соответствующим регистрам и модулям для конфигурирования и руководства процессами и тем, как они выполняются в системе 1. А именно, сверху этого слоя может быть построен виртуального слой служебных функций для формирования строительных блоков, которые используются для множества функций, которые отправляют файлы вниз в ядра и получают обратно результаты, кодирую, шифруют и/или передают соответствующие данные и далее выполняют на них функции более высокого уровня. Поверх этого слоя может быть построен дополнительный слой, использующий эти служебные функции, которые могут быть уровня API, с которым может взаимодействовать пользователь, причем этот слой может быть выполнен с возможностью функционирования в основном для конфигурирования системы 1 в целом или ее составляющих частей, загружая файлы и выгружая результаты, при этом файлы и/или результаты могут быть переданы по всей системе, либо локально, либо глобально. Могут быть сконфигурированы и включены дополнительные API, более подробно описанные выше в связи с безопасным хранением данных.[00862] In particular, one or more DMA drivers of system 1 may be configured to operate in an appropriate manner, for example, at the kernel level of each component and system 1 as a whole. In such a case, one or more of the provided cores may have its own very low level core API that provides access to the hardware and functions of various components of the system 1 in order to have access to the corresponding registers and modules for configuring and directing processes and how they executed in System 1. Namely, on top of this layer a virtual layer of utility functions can be built to form the building blocks that are used for a variety of functions that send files down to the cores and receive back the results, encode, encrypt and/or transmit the corresponding data and then perform higher-level functions on them. On top of this layer, an additional layer can be built using these utility functions, which can be an API layer that can be interacted with by the user, and this layer can be configured to function primarily to configure the system 1 as a whole or its component parts by downloading files and uploading results, where files and/or results can be transferred throughout the system, either locally or globally. Additional APIs can be configured and enabled, described in more detail above in connection with secure data storage.

[00863] Такое конфигурирование различных API, памятей и/или прошивки системы может включать в себя обмен данными с регистрами, а также выполнение вызовов функций. Например, как описано выше в настоящем документе, один или более вызовов функций, необходимых и/или полезных для выполнения этапов, например, последовательно, с целью осуществления картирования, и/или выравнивания, и/или сортировки, и/или определения вариантов или других функций вторичной и/или третичной обработки, которые описаны в настоящем документе, могут быть реализованы в соответствии с операциями аппаратного обеспечения и/или связанных алгоритмов для формирования необходимых процессов и выполнения требуемых этапов.[00863] Such configuration of various APIs, memories, and/or system firmware may involve communicating with registers as well as making function calls. For example, as described above herein, one or more function calls necessary and/or useful to perform steps, for example, sequentially, to perform mapping and/or alignment and/or sorting and/or variant determination or other The secondary and/or tertiary processing functions that are described herein may be implemented in accordance with hardware operations and/or associated algorithms to generate the required processes and perform the required steps.

[00864] А именно, ввиду того, что в определенных вариантах реализации одна или более из этих операций могут быть основаны на одной или более структурах, возможно, потребуется построить различные структуры, необходимые для реализации этих операций. В этой связи потребуется вызов функции, которая выполнит данные действия, причем вызов функции приведет к построению нужной структуры для выполнения операции, и поэтому данный вызов примет имя файла, где хранятся файлы параметров структуры, и затем сформирует один или более файлов данных, которые содержат и/или конфигурируют нужную структуру. Другой вызов функции может быть предназначен для загрузки структуры, которая была сформирована посредством соответствующего алгоритма, и передачи ее вплоть до памяти на микросхеме и/или в систему 1 и/или помещения ее в нужное место, где ее нахождение предполагается аппаратным обеспечением. Конечно, для выполнения различных других выбранных функций системы 1 потребуется загружать различные данные в микросхему и/или иным образом передавать в системный генератор, и эти функции может выполнять диспетчер конфигураций, например, путем загрузки всего, что необходимо для того, чтобы модули конвейеров в ярусах платформ микросхемы и/или системы в целом выполняли свои функции, в память, прикрепленную или иным образом связанную с микросхемой и/или системой.[00864] Namely, because in certain implementations one or more of these operations may be based on one or more structures, it may be necessary to construct various structures necessary to implement these operations. This will require a call to a function that will perform these actions, where the function call will result in the construction of the desired structure to perform the operation, and therefore this call will take the name of the file where the structure parameter files are stored, and will then generate one or more data files that contain and /or configure the desired structure. Another function call may be designed to load a structure that has been generated by the appropriate algorithm and transfer it all the way to on-chip memory and/or system 1 and/or place it in the desired location where the hardware expects it to be. Of course, various other selected functions of System 1 will require various data to be loaded into the chip and/or otherwise transferred to the system generator, and these functions can be performed by a configuration manager, for example by loading whatever is needed to make the pipeline modules in the tiers platforms of the chip and/or the system as a whole performed their functions in memory attached to or otherwise associated with the chip and/or system.

[00865] Кроме того, система может быть выполнена таким образом, чтобы обеспечивать различным компонентам системы возможность обмена данными друг с другом, например, чтобы позволять одной или более микросхемам системы 1 взаимодействовать с печатной платой секвенатора 121, вычислительного ресурса 100/300, преобразователя 151, анализатора 152, интерпретатора 310, коллаборатора 320 или других компонентов системы, когда они включены в нее, чтобы принимать FASTQ и/или другие файлы сформированной и/или обработанной генетической последовательности непосредственно из секвенатора или других компонентов обработки, например, немедленно после их формирования и/или обработки, и затем передавать эту информацию в диспетчер конфигураций, который после этого направляет данную информацию в соответствующие банки памяти в аппаратном и/или программно обеспечении, которые делают эту информацию доступной соответствующим модулям аппаратного обеспечения, программного обеспечения и/или системе в целом, чтобы они могли выполнять свои назначенные функции на этой информации для определения оснований, картирования, выравнивания, сортировки и т.д. образца ДНК/РНК относительно референсного генома и/или выполнения на ней связанных операций вторичной и/или третичной обработки.[00865] In addition, the system may be configured to allow various components of the system to communicate with each other, for example, to allow one or more chips of system 1 to communicate with a circuit board of sequencer 121, compute resource 100/300, converter 151 , analyzer 152, interpreter 310, collaborator 320, or other components of the system when included therein, to receive FASTQ and/or other generated and/or processed genetic sequence files directly from the sequencer or other processing components, for example, immediately after they are generated and /or processing, and then pass this information to the configuration manager, which then forwards this information to the appropriate memory banks in the hardware and/or software, which make this information available to the appropriate modules of the hardware, software and/or the system as a whole, so that they can perform their assigned functions on this information for basing, mapping, alignment, sorting, etc. DNA/RNA sample relative to the reference genome and/or performing associated secondary and/or tertiary processing operations on it.

[00866] Соответственно, в различных вариантах реализации может быть включен интерфейс уровня клиентов (CLI), которые может обеспечивать пользователям возможность непосредственного вызова одной или более из этих функций. В различных вариантах реализации CLI может быть программным приложением, например, имеющим ГПИ, которое выполнено с возможностью конфигурирования доступности и/или использования аппаратных и/или различных других программных приложений системы. Следовательно, CLI может быть программой, которая принимает инструкции, например, аргументы, и делает функциональные возможности доступными путем вызова прикладной программы. Как указано выше, CLI может быть основан на командной строке или ГПИ (графическом пользовательском интерфейсе). Уровень командной строки ниже уровня ГПИ, причем ГПИ включает в себя диспетчер файлов на базе Windows с возможностью выбора щелчком мыши функциональных блоков, которые изображают, какие модули, какие конвейеры, какие ярусы каких платформ будут использованы, а также параметры для их использования. Например, во время работы, если предписано, CLI будет находить местоположение ссылки, будет определять, нужно ли формировать хэш-таблицу и/или индекс, или, если они уже сформированы, находить, где они хранятся, и руководить выгрузкой формируемой хэш-таблицы и/или индекса и т.д. Инструкции этих видов могут появляться в виде вариантов на ГПИ, которые пользователь может выбирать для выполнения связанными микросхемами/системой 1.[00866] Accordingly, various implementations may include a client level interface (CLI) that may allow users to directly call one or more of these functions. In various implementations, the CLI may be a software application, for example having a GUI, that is configured to configure the availability and/or use of hardware and/or various other software applications of the system. Therefore, a CLI can be a program that accepts instructions, such as arguments, and makes functionality available by calling an application program. As stated above, the CLI can be command line or GUI (Graphical User Interface) based. The command line level is below the GUI level, with the GUI including a Windows-based file manager with mouse-clickable function blocks that depict which modules, which pipelines, which tiers of which platforms will be used, as well as the parameters for using them. For example, at runtime, if directed, the CLI will find the location of the link, determine whether a hash table and/or index needs to be built, or, if they have already been built, find where they are stored, and direct the unloading of the hash table being built, and /or index, etc. These types of instructions may appear as options on the GUI that the user can select for execution by the associated chips/system 1.

[00867] Кроме того, может быть включена библиотека, которая может содержать уже существующие редактируемые файлы конфигурации, такие как файлы, ориентированные на типичные выбираемые пользователем функциональные возможности аппаратного и/или связанного программного обеспечения, например, относящиеся к анализу части или всего генома и/или белков, например, для различных анализов, таких как анализ персональных медицинских историй и родословной, или диагностика болезней, или открытие новых лекарственных средств, терапевтика и/или одна или более других аналитик и т.д. Параметры этих типов могут предварительно установлены, например, для выполнения таких анализов, и могут быть сохранены в библиотеке. Например, если описанную в настоящем документе платформу используют, например, для исследований в области НИПТ, ОРИТН, рака, LDT, AgBio и связанных исследований на коллективном уровне, настоящие параметры могут быть сконфигурирован иначе, чем если бы платформа была направлена на проведение только геномного и/или генеалогического исследования, например на индивидуальном уровне.[00867] Additionally, a library may be included that may contain pre-existing editable configuration files, such as files targeting typical user-selectable hardware and/or associated software functionality, such as those related to analysis of a portion or entire genome and/ or proteins, for example, for various analyses, such as the analysis of personal medical histories and pedigrees, or the diagnosis of diseases, or the discovery of new drugs, therapeutics and/or one or more other analytics, etc. Parameters of these types can be preset, for example, to perform such analyses, and can be stored in a library. For example, if the platform described herein is used, for example, for research in the fields of NIPT, NICU, cancer, LDT, AgBio and related research at the collective level, the present parameters may be configured differently than if the platform were aimed at conducting only genomic and /or genealogical research, for example at the individual level.

[00868] Более конкретно, в случае определенной диагностики индивида точность может быть важным фактором. Поэтому, параметры системы могут быть установлены так, чтобы гарантировать точность, хотя и в обмен на возможное снижение скорости. Однако для других областей применения геномики скорость может быть основным определяющим фактором, и, следовательно, параметры системы могут быть установлены на максимальное повышение скорости, однако при этом придется пожертвовать точностью. Соответственно, в различных вариантах реализации часто используемые настройки параметров для выполнения разных задач могут быть предварительно установлены в библиотеку, чтобы облегчить их использование. Такие настройки параметров могут также включать в себя необходимые программные приложения и/или аппаратные конфигурации, используемые при эксплуатации системы 1. Например, библиотека может содержать код, который исполняет API и может также включать в себя файлы образов, сценарии и любую другую вспомогательную информацию, необходимую для работы системы 1. Следовательно, библиотека может быть выполнена с возможностью компиляции программного обеспечения для выполнения API, а также различных исполняемых объектов.[00868] More specifically, in the case of a particular diagnosis of an individual, accuracy may be an important factor. Therefore, system parameters can be set to guarantee accuracy, although at the expense of possible speed reduction. However, for other genomics applications, speed may be the main determining factor, and therefore system parameters may be set to maximize speed, but at the expense of accuracy. Accordingly, in various embodiments, frequently used parameter settings for performing various tasks may be preset in the library to facilitate their use. Such parameter settings may also include necessary software applications and/or hardware configurations used in operating system 1. For example, the library may contain code that executes the API and may also include image files, scripts, and any other supporting information needed for the operation of System 1. Therefore, the library can be configured to compile software to execute the API as well as various executable objects.

[00869] Кроме того, как показано на ФИГ. 42C и 43 система может быть выполнена таким образом, чтобы один или более системных компонентов могли быть выполнены удаленно, например, когда компонент системы выполнен с возможностью осуществления одной или более функций сравнения на данных, например, функции 310 интерпретации и/или функции 320 совместной работы. Например, когда к данным применяют протокол интерпретации, протокол 312 интерпретации может быть выполнен с возможностью анализа и делания выводов о данных и/или определения различных взаимосвязей в них, могут также выполняться один или более других аналитических протоколов, которые включают в себя аннотирование 311 данных, выполнение 313 диагностики на данных и/или анализ данных с целью определения присутствия или отсутствия одного или боле биомаркеров 314. Как было указано одна или более из этих функций могут руководиться WMS и/или выполняться модулем ИИ, описанным в настоящем документе.[00869] Additionally, as shown in FIG. 42C and 43, the system may be configured such that one or more system components can be executed remotely, such as when the system component is configured to perform one or more comparison functions on the data, such as an interpretation function 310 and/or a collaboration function 320 . For example, when an interpretation protocol is applied to data, the interpretation protocol 312 may be configured to analyze and draw conclusions about the data and/or determine various relationships therein, and one or more other analytical protocols may also be performed that include annotating the data 311. performing 313 diagnostics on the data and/or analyzing the data to determine the presence or absence of one or more biomarkers 314. As noted, one or more of these functions may be driven by the WMS and/or performed by the AI module described herein.

[00870] Кроме того, при использовании протокола совместной работы система 1 может быть выполнена с возможностью обеспечения электронного форума, где можно делиться 321 данными, причем протокол совместного использования данных может включать в себя настройки безопасности 324 и/или конфиденциальности 322, которые могут быть выбраны пользователем и позволяют шифровать данные и/или защищать их паролем, чтобы можно было скрыть идентификаторы и источники данных от пользователей системы 1. В конкретных случаях система 1 может быть выполнена с возможностью разрешения анализатору 3-й стороны 121 выполнять виртуальные моделирования на данных. Кроме того, после формирования данные, интерпретированные и/или подвергнутые одному или более совместно осуществляемым анализам, могут быть сохранены либо удаленно 400, либо локально 200, чтобы сделать их доступными для удаленного 300 или локального 100 вычислительных ресурсов.[00870] Additionally, when using a collaboration protocol, system 1 may be configured to provide an electronic forum where data can be shared 321, wherein the data sharing protocol may include security 324 and/or privacy settings 322 that can be selected by the user and allow the data to be encrypted and/or password protected so that identifiers and data sources can be hidden from users of the system 1. In specific cases, the system 1 may be configured to allow a 3rd party analyzer 121 to perform virtual simulations on the data. In addition, once generated, data interpreted and/or subjected to one or more collaborative analyzes may be stored either remotely 400 or locally 200 to make it available to remote 300 or local 100 computing resources.

[00871] В соответствии с другим аспектом, как показано на ФИГ. 44, предложен способ использования системы для формирования одного или более файлов данных, на которых можно выполнять один или более протоколов вторичной и/или третичной обработки. Например, способ может включать в себя обеспечение геномной инфраструктуры, например, для одного или более из локального, облачного и/или гибридного формирования, и/или обработки, и/или анализа в области геномики и/или биоинформатики.[00871] In accordance with another aspect, as shown in FIG. 44, a method is provided for using a system to generate one or more data files on which one or more secondary and/or tertiary processing protocols can be performed. For example, the method may include providing a genomic infrastructure, for example, for one or more of local, cloud and/or hybrid generation and/or processing and/or analysis in the field of genomics and/or bioinformatics.

[00872] В таком случае геномная инфраструктура может включать в себя биоинформационную платформу обработки, имеющую одну или более памятей, которые выполнены с возможностью хранения одной или более выполненных с возможностью конфигурирования структур для конфигурирования системы с целью обеспечения возможности выполнения одной или более функций аналитической обработки на данных, таких как данные, содержащие геномную последовательность, представляющую интерес, или относящиеся к ней обработанные результирующие данные. Память может содержать интересующую геномную последовательность, которую нужно обработать, например, после того, как она сформирована и/или получена, одну или более референсных генетических последовательностей и/или может дополнительно содержать индекс одной или более генетических референсных последовательностей и/или список относящихся к ним границ сплайсинга. Система может также включать в себя устройство ввода, имеющее интерфейс прикладных программ (API) платформы для выбора из списка вариантов одной или более структур обработки, выполненных с возможностью конфигурирования, например, путем выбора функций обработки системы, которые будут выполняться на данных, например, предварительной или последующей обработки геномных последовательностей, представляющих интерес. Возможно также наличие графического пользовательского интерфейса (ГПИ), которые выполнен с возможностью функционального связывания с API, например, для предоставления меню, с помощью которого пользователь может выбирать, какие из имеющихся вариантов требуется выполнить на данных.[00872] In such a case, the genomic infrastructure may include a bioinformatics processing platform having one or more memories that are configured to store one or more configurable structures for configuring the system to enable one or more analytical processing functions to be performed on data, such as data containing a genomic sequence of interest or processed result data related thereto. The memory may contain a genomic sequence of interest to be processed, for example, after it has been generated and/or obtained, one or more reference genetic sequences and/or may further contain an index of one or more genetic reference sequences and/or a list related thereto splicing boundaries. The system may also include an input device having a platform application program interface (API) for selecting from a list of options one or more configurable processing structures, e.g., by selecting system processing functions to be performed on the data, e.g. or subsequent processing of genomic sequences of interest. It may also be possible to have a graphical user interface (GUI) that can be functionally linked to an API, for example to provide a menu through which the user can select which of the available options to execute on the data.

[00873] Следовательно, в этих и/или других таких случаях гибридное облако 50 может быть выполнено с возможностью обеспечения возможности беспрепятственной и защищенной передачи данных всем компонентам системы, например, когда гибридное облако 50 выполнено с возможностью разрешения различным пользователям системы конфигурировать ее составляющие части и/или саму систему, например, с помощью WMS, для удовлетворения потребностей пользователей в области исследовательских, диагностических, терапевтических и/или профилактических открытий и/или разработок. В частности, гибридное облако 50 и/или различные компоненты системы 1 могут быть выполнены с возможностью функционального соединения с совместимыми и/или соответствующими интерфейсами API, которые выполнены с возможностью разрешения пользователям удаленного конфигурирования различных компонентов системы 1 для развертывания требуемых ресурсов нужным образом, причем локальным, удаленным или комбинированным способом, например, на основе потребностей системы и особенностей выполняемых анализов, обеспечивая при этом обмен данными в защищенной среде с возможностью шифрования.[00873] Therefore, in these and/or other such cases, the hybrid cloud 50 may be configured to allow data to be transmitted seamlessly and securely to all components of the system, for example, when the hybrid cloud 50 is configured to allow different users of the system to configure its component parts and /or the system itself, for example, using a WMS, to meet the needs of users in the field of research, diagnostic, therapeutic and/or preventative discovery and/or development. In particular, the hybrid cloud 50 and/or the various components of the system 1 can be configured to be operably connected to compatible and/or appropriate APIs that are configured to allow users to remotely configure the various components of the system 1 to deploy the required resources in a desired manner, locally. , remotely or in a combined manner, for example, based on the needs of the system and the characteristics of the analyzes being performed, while ensuring data exchange in a secure environment with the ability to encrypt.

[00874] Как описано выше, система может быть реализована на одной или более интегральных схем, которые могут быть сформированы из одного или более наборов выполненных с возможностью конфигурирования, например, предварительного конфигурирования, или жестко смонтированных цифровых логических схем, которые могут быть взаимно соединены с помощью множества физических электрических межсоединений. В таком случае интегральная схема может иметь вход, например, интерфейс памяти, для приема одного или множества протоколов структуры, выполненных с возможностью конфигурирования, например, из памяти, и может быть также выполнена с возможностью реализации одной или более структур на интегральной схеме в соответствии с протоколами структуры обработки, выполненными с возможностью конфигурирования. Интерфейс памяти входа может быть также выполнен с возможностью приема данных геномной последовательности, которые могут быть в виде множества ридов геномных данных. Интерфейс может быть также выполнен с возможностью доступа к одной или более генетических референсных последовательностей и индексу (-ам).[00874] As described above, the system may be implemented on one or more integrated circuits, which may be formed from one or more sets of configurable, e.g., preconfigured, or hardwired digital logic circuits that may be interconnected with using multiple physical electrical interconnections. In such a case, the integrated circuit may have an input, such as a memory interface, for receiving one or more structure protocols configured, for example, from memory, and may also be configured to implement one or more structures on the integrated circuit in accordance with configurable processing structure protocols. The input memory interface may also be configured to receive genomic sequence data, which may be in the form of multiple genomic data reads. The interface may also be configured to access one or more genetic reference sequences and index(es).

[00875] В различных случаях цифровые логические схемы могут выполнены в виде набора движков обработки, каждый из которых сформирован из подмножества цифровых логических схем. Цифровые логические схемы и/или движки обработки могут быть выполнены с возможностью осуществления одного или более предварительно конфигурируемых этапов протокола первичной, вторичной и/или третичной обработки для формирования множества ридов данных геномной последовательности и/или обработки множества ридов геномных данных, например, в соответствии с генетическими референсными последовательностями или другой информацией, полученной из генетической последовательности. Интегральная схема может также иметь выход, чтобы выводить результирующие данные первичной, вторичной и/или третичной обработки, например, в соответствии с интерфейсом прикладных программ (API) платформы.[00875] In various cases, digital logic circuits may be implemented as a set of processing engines, each of which is formed from a subset of digital logic circuits. Digital logic circuits and/or processing engines may be configured to implement one or more preconfigured primary, secondary and/or tertiary processing protocol steps to generate multiple genomic sequence data reads and/or process multiple genomic data reads, for example, in accordance with genetic reference sequences or other information derived from a genetic sequence. The integrated circuit may also have an output to output primary, secondary, and/or tertiary processing data, for example, in accordance with a platform application program interface (API).

[00876] В частности, в различных вариантах реализации цифровые логические схемы и/или наборы движков обработки могут образовывать множество конвейеров геномной обработки, например, когда каждый конвейер может иметь вход, который определен в соответствии интерфейсом прикладных программ платформы, для приема платформой биоинформационной обработки результирующих данных первичной и/или вторичной обработки и для выполнения на них одного или более аналитических процессов с целью создания результирующих данных. Кроме того, множество конвейеров геномной обработки могут иметь общий API конвейера, который определяет операцию вторичной и/или третичной обработки, которую нужно выполнить на результирующих данных первичной и/или вторичной обработки, например, когда каждый из множества конвейеров геномной обработки выполнен с возможностью осуществления подмножества операций вторичной и/или третичной обработки и вывода результирующих данных вторичной и/или третичной обработки в соответствии с API конвейера.[00876] In particular, in various embodiments, digital logic circuits and/or sets of processing engines may form multiple genomic processing pipelines, for example, where each pipeline may have an input that is defined in accordance with the platform application program interface for receiving the resulting bioinformatics processing platform primary and/or secondary processing data and to perform one or more analytical processes on them to create resulting data. In addition, multiple genomic processing pipelines may have a common pipeline API that defines a secondary and/or tertiary processing operation to be performed on the resulting primary and/or secondary processing data, for example, where each of the plurality of genomic processing pipelines is configured to perform a subset of secondary and/or tertiary processing operations and output of the resulting secondary and/or tertiary processing data in accordance with the pipeline API.

[00877] В таких случаях в памяти и/или связанном репозитории приложений, выполненном с возможностью поиска, могут храниться множество приложений геномного анализа, например, когда каждое из множества приложений геномного анализа может быть доступно компьютеру посредством электронного носителя, например, для исполнения процессором компьютера, с целью осуществления намеченного анализа геномных данных из предварительной или последующей обработки результирующих данных первичной, вторичной и/или третичной обработки, например одним или более из множества конвейеров геномной обработки. В конкретных случаях каждое из множество приложений геномного анализа может быть определено интерфейсом API и может быть выполнено с возможностью приема результирующих данных первичной, вторичной и/или третичной обработки и/или осуществления намеченного анализа геномных данных предварительной или последующей обработки и вывода результирующих данных намеченного анализа в одну или более геномных баз данных.[00877] In such cases, a plurality of genomic analysis applications may be stored in memory and/or an associated searchable application repository, such as where each of the plurality of genomic analysis applications may be accessible to a computer via an electronic medium, such as for execution by a computer processor , for the purpose of carrying out the intended analysis of genomic data from pre- or post-processing of the resulting primary, secondary and/or tertiary processing data, for example, by one or more of a plurality of genomic processing pipelines. In specific cases, each of a plurality of genomic analysis applications may be defined by an API and may be configured to receive primary, secondary, and/or tertiary processing resultant data and/or perform intended analysis of preprocessing or postprocessing genomic data and output intended analysis resultant data to one or more genomic databases.

[00878] Способ может дополнительно включать в себя выбор, например, в меню ГПИ, одного или более конвейеров геномной обработки из множества имеющихся конвейеров геномной обработки системы; выбор одного или более приложений геномного анализа из множества приложений геномного анализа, которые хранятся в репозитории приложений; и исполнение с помощью процессора компьютера одного или более выбранных приложений геномного анализа для осуществления намеченного анализа геномных данных из результирующих данных первичной, вторичной и/или третичной обработки.[00878] The method may further include selecting, for example, from a GUI menu, one or more genomic processing pipelines from a plurality of available genomic processing pipelines of the system; selecting one or more genomic analysis applications from a plurality of genomic analysis applications stored in the application repository; and executing, by a computer processor, one or more selected genomic analysis applications to perform the intended analysis of the genomic data from the resulting primary, secondary, and/or tertiary processing data.

[00879] Кроме того, в различных вариантах реализации все из картирования, выравнивания, сортировки и определения вариантов может происходить на микросхеме, и в различных вариантах реализации локальное повторное выравнивание, маркировка дубликатов, перекалибровка оценки качества оснований и/или один или более протоколов и/или конвейеров третичной обработки тоже могут выполняться на микросхеме или в программном обеспечении, и в различных случаях различные протоколы сжатия, такие как SAM, и/или BAM, и/или CRAM, тоже могут выполняться на микросхеме. Однако после того, как данные в результате первичной, вторичной и/или третичной обработки созданы, они могут быть сжаты, например, перед передачей, такой как оправка по всей системе, отправка на облако, например, для выполнения модуля определения вариантов, платформы вторичной, третичной или другой обработки, например, включая протокол анализа интерпретации и/или совместной работы. Это может быть полезно, особенно с учетом того факта, что определение вариантов, в том числе их третичная обработка, может быть «стрельбой по движущейся мишени», например, стандартизованного согласованного алгоритма, используемого в данной отрасли, нет.[00879] Additionally, in various embodiments, all of mapping, alignment, sorting, and variant determination may occur on-chip, and in various embodiments, local realignment, duplicate flagging, base quality assessment recalibration, and/or one or more protocols and/ or tertiary processing pipelines may also be executed on-chip or in software, and in various cases, various compression protocols such as SAM and/or BAM and/or CRAM may also be executed on-chip. However, after the data from primary, secondary and/or tertiary processing has been created, it may be compressed, for example, before transmission, such as sending across the system, sending to the cloud, for example, to run a variant determination module, a secondary platform, tertiary or other processing, for example, including analysis protocol interpretation and/or collaboration. This can be useful, especially given the fact that identifying variants, including their tertiary processing, can be “shooting at a moving target”, for example there is no standardized, agreed upon algorithm used in the industry.

[00880] Поэтому для достижения различных типов результатов могут использоваться различные алгоритмы, например, удаленным пользователем, и, следовательно, полезно иметь облачный модуль для выполнения данной функции, чтобы обеспечить гибкость при выборе алгоритма, полезного в данный конкретный момент, а также последовательной или параллельной обработки. Соответственно, любой из модулей, описанных в настоящем документе, может быть реализован либо аппаратно, например, на микросхеме, либо программно, например, на облаке, но в определенных вариантах реализации все модули могут быть выполнены с возможностью осуществления их функций только на микросхеме, или все модули могут быть выполнены с возможностью осуществления их функций удаленно, например, на облаке, или может быть смесь модулей, где некоторые из них находятся на одной или более микросхем, а другие расположены на облаке. Кроме того, как было указано, в различных вариантах реализации сами микросхемы могут быть выполнены с возможностью функционирования совместно, а в некоторых вариантах реализации, в непосредственном взаимодействии с генетическим секвенатором, таким как СНП и/или секвенатор на микросхеме.[00880] Therefore, different algorithms may be used to achieve different types of results, for example by a remote user, and therefore it is useful to have a cloud module to perform this function to provide flexibility in choosing the algorithm that is useful at that particular moment, as well as serial or parallel processing. Accordingly, any of the modules described herein may be implemented either in hardware, such as on a chip, or in software, such as in the cloud, but in certain embodiments, all modules may be configured to perform their functions only on a chip, or all modules may be configured to perform their functions remotely, for example on the cloud, or there may be a mixture of modules where some are located on one or more chips and others are located on the cloud. Additionally, as noted, in various embodiments, the chips themselves may be configured to operate in conjunction with, and in some embodiments, directly interact with, a genetic sequencer such as an SNP and/or an on-chip sequencer.

[00881] Точнее говоря, в различных вариантах реализации устройство по настоящему изобретению может быть микросхемой, такой как микросхема, которая выполнена с возможностью обработки геномных данных, например, путем использования конвейера модулей анализа данных. Соответственно, как показано на ФИГ. 45, предложена микросхема 100 процессора геномного конвейера вместе со связанным аппаратным обеспечением геномной конвейерной процессорной системы 10. Микросхема 100 имеет одно или более соединений 102 с внешней памятью («Контроллер памяти DDR3») и соединение 104 (например, интерфейс PCIe или QPI) с внешним миром, таким как, например, главный компьютер 1000. Коммутатор 108 (например, переключатель) обеспечивает доступ к интерфейсам памяти различным инициаторам запросов. Движки 110 DMA передают данные с высоко скоростью между главным устройством и внешними памятями 102) процессора 100 микросхемы (через коммутатор 108) и/или между указанным главным устройством и центральным контроллером 112. Центральный контроллер 112 управляет операциями микросхемы, в частности, координирует действия множества движков 13 обработки. Движки обработки сформированы из набор жестко смонтированных цифровых логических схем, которые взаимно связаны физическими электрическими соединениями и организованы в кластеры 11/114 движков. В некоторых реализациях движки 13 в одном кластере 11/114 совместно используют один порт коммутатора посредством арбитра 115. Центральный контроллер 112 имеет соединения с каждым кластером движков. Каждый кластер 11/114 движков имеет ряд движков 13 обработки для обработки геномных данных, в том числе сопоставитель 120 (или модуль картирования), выравниватель 122 (или модуль выравнивания) и сортировщик 124 (или модуль сортировки) и могут быть предусмотрены один или более движков обработки для выполнения других функций, таких как определение вариантов. Следовательно, кластер 11/114 движков может содержать также другие движки, такие как модуль определителя вариантов.[00881] More specifically, in various embodiments, a device of the present invention may be a chip, such as a chip that is configured to process genomic data, for example, through the use of a pipeline of data analysis modules. Accordingly, as shown in FIG. 45, a genome pipeline processor chip 100 is proposed along with associated hardware of a genome pipeline processor system 10. The chip 100 has one or more connections 102 to external memory (“DDR3 Memory Controller”) and a connection 104 (e.g., a PCIe or QPI interface) to an external world, such as, for example, host computer 1000. Switch 108 (eg, a switch) provides access to memory interfaces to various requesters. The DMA engines 110 transfer data at high speed between the host and the external memories 102) of the chip processor 100 (via the switch 108) and/or between the host and the central controller 112. The central controller 112 manages the operations of the chip, in particular, coordinating the actions of multiple engines. 13 treatments. Processing engines are formed from a set of hard-wired digital logic circuits that are interconnected by physical electrical connections and organized into 11/114 engine clusters. In some implementations, engines 13 in one cluster 11/114 share one switch port through arbiter 115. Central controller 112 has connections to each engine cluster. Each engine cluster 11/114 has a number of processing engines 13 for processing genomic data, including a mapper 120 (or mapping module), an aligner 122 (or an alignment module), and a sorter 124 (or a sorting module), and one or more engines may be provided processing to perform other functions such as variant determination. Therefore, the engine cluster 11/114 may also contain other engines, such as a variant determiner module.

[00882] В соответствии с моделью потока данных, согласующейся с реализациями, описанными в настоящем документе, главное ЦПУ 1000 посылает команды и данные через движки 110 DMA в центральный контроллер 112, который равномерно распределяет данные между движками 13 обработки. Движки обработки возвращают обработанные данные в центральный контроллер 112, который передает их в потоковом режиме обратно в главное устройство посредством движков 110 DMA. Эта модель потока данных приспособлена для картирования, и выравнивания и определения вариантов. Как было указано, в различных случаях обмен данными с главным ЦПУ может осуществляться посредством относительно слабого или жесткого связывания, например, с помощью широкополосного межсоединения с малой задержкой, такого как QPI, для поддержания когерентности кэша между связанными элементами памяти двух или более устройств.[00882] In accordance with the data flow model consistent with the implementations described herein, the main CPU 1000 sends commands and data through the DMA engines 110 to the central controller 112, which evenly distributes the data among the processing engines 13. The processing engines return the processed data to the central controller 112, which streams it back to the host device via the DMA engines 110. This data flow model is suitable for mapping, and alignment and identification of variants. As stated, in various cases, communication with the host CPU can be accomplished through relatively loose or tight coupling, such as using a low-latency, wideband interconnect such as QPI, to maintain cache coherence between coupled memory elements of two or more devices.

[00883] Например, в различных случаях ввиду различных ограничений по питанию и/или пространству, например, при выполнении анализа больших данных, такого как картирование/выравнивание/определение вариантов в среде с гибридным программным/аппаратным ускорением, как описано в настоящем документе, где требуется быстро и беспрепятственно перемещать данные между устройствами системы, для выполнения таких передач по всей системе туда и обратно между связанными устройствами, например, туда и обратно в секвенатор, цифровой сигнальный процессор (ЦСП), ЦПУ и/или ГПУ или гибридный ЦПУ/ГПУ, ускоренную интегральную схему, например, FPGA, ASIC (на сетевой карте), а также другие интеллектуальные сетевые ускорители, быстро и с поддержанием когерентности кэша может быть полезен интерфейс тесного связывания с поддержанием когерентности кэша. В таких случаях подходящее межсоединение жесткого связывания с поддержанием когерентности кэша может быть межсоединением по одной или более технологиям одинарного межсоединения, выполненным с возможностью обеспечения обработки, например, между множеством платформ обработки, использующих разные архитектуры набора команд (АНК), при когерентном совместном использовании данных между разными платформами и/или с одним или более связанных ускорителей, таким как, например, жестко смонтированный ускоритель на FPGA, для обеспечения эффективного разнородного вычисления и тем самым значительного улучшения вычислительной эффективности системы, которая в различных случаях может быть выполнена в виде облачной серверной системы. Следовательно, в определенных случаях может быть использован протокол широкополосного межсоединения с малой задержкой и поддержанием когерентности кэша, такой как QPI, когерентный интерфейс ускорителя процессора (CAPI), NVLink/ГПУ или любой другой подходящий протокол межсоединения для ускорения различных передач данных между различными компонентами системы, например, относящимися к вычислительным функциям картирования, выравнивания и/или определения вариантов, которые могут включать в себя использование движков ускорения, для функционирования которых требуются получение доступа, обработка и беспрепятственное перемещение данных между различными компонентами системы вне зависимости от места нахождения различных подлежащих обработке данных в системе. И, когда такие данные хранятся в связанном запоминающем устройстве, таком как ОЗУ или DRAM, действия по передаче данных могут также включать в себя ускоренный и когерентный поиск и обработку базы данных в памяти.[00883] For example, in various cases due to various power and/or space constraints, for example, when performing big data analysis such as mapping/alignment/variant identification in a hybrid software/hardware accelerated environment as described herein, where there is a need to move data quickly and seamlessly between system devices, to perform such transfers back and forth across the system between related devices, for example, back and forth to a sequencer, digital signal processor (DSP), CPU and/or GPU, or hybrid CPU/GPU, Accelerated integrated circuit such as FPGA, ASIC (on a network interface card), and other smart network accelerators, fast and while maintaining cache coherence can benefit from a tight coupling interface while maintaining cache coherence. In such cases, a suitable cache coherence-maintaining hard-coupled interconnect may be an interconnect of one or more single-interconnect technologies configured to support processing, for example, between multiple processing platforms using different instruction set architectures (ISAs), while coherently sharing data between different platforms and/or with one or more associated accelerators, such as, for example, a hard-wired FPGA accelerator, to enable efficient heterogeneous computing and thereby significantly improve the computing efficiency of the system, which in various cases can be implemented as a cloud server system. Therefore, in certain cases, a low latency, cache coherency wideband interconnect protocol such as QPI, Coherent Processor Accelerator Interface (CAPI), NVLink/GPU, or any other suitable interconnect protocol may be used to speed up various data transfers between different system components. for example, related to the computational functions of mapping, alignment and/or determination of options, which may include the use of acceleration engines, the operation of which requires accessing, processing and seamless movement of data between various components of the system, regardless of the location of the various data to be processed in system. And, when such data is stored in an associated storage device such as RAM or DRAM, data transfer activities may also include accelerated and coherent search and processing of the in-memory database.

[00884] В частности, в конкретных вариантах реализации такие разнородные вычисления могут включать в себя множество архитектур обработки и/или ускорения, которые могут быть взаимно соединены в формате вычислений с сокращенным набором команд. В таком случае это устройство межсоединения может быть устройством когерентное соединение-6 (CCVI), которое выполнено таким образом, что позволяет всем вычислительным компонентам внутри системы применять операции адресации, чтении и/или записи к одной или более связанным памятям единым согласованным и когерентным образом. Более конкретно, межсоединение CCVI может быть использовано для соединения различных устройств системы, таких как ЦПУ и/или ГПУ или гибридное ЦПУ/ГПУ, FPGA, и/или связанных памятей и т.д. друг с другом, например, с широкой полосой пропускания, и выполнено с возможностью повышения скоростей передачи между различными компонентами, о чем свидетельствует резкое сокращение уровней задержки. А именно, межсоединение CCVI может быть использовано и сконфигурировано таким образом, чтобы все компоненты системы получали доступ данным и обрабатывали их независимо от того, где находятся данные, и без необходимости в сложных средах программирования, которые в противном случае пришлось бы реализовывать для обеспечения когерентности данных. В число других таких межсоединений, которые могут быть использованы для ускорения, например, уменьшения времени, и повышения точности обработки, входят QPI, CAPI, NVLink или другие межсоединения, которые могут быть выполнены с возможностью взаимного соединения различных компонентов системы и/или работать поверх связанного периферийного межсоединения PCI-express.[00884] In particular, in particular embodiments, such heterogeneous computing may include multiple processing and/or acceleration architectures that may be interconnected in a reduced instruction set computing format. In such a case, this interconnect device may be a coherent interconnect-6 (CCVI) device, which is configured in a manner that allows all computing components within the system to apply addressing, reading, and/or writing operations to one or more associated memories in a single consistent and coherent manner. More specifically, a CCVI interconnect can be used to interconnect various system devices, such as CPU and/or GPU or hybrid CPU/GPU, FPGA, and/or associated memories, etc. with each other, for example, with a wide bandwidth, and is designed to increase transmission speeds between different components, as evidenced by a sharp reduction in latency levels. Namely, the CCVI interconnect can be used and configured so that all system components access and process data regardless of where the data resides, and without the need for complex programming environments that would otherwise have to be implemented to ensure data coherence . Other such interconnects that can be used to speed up, e.g., reduce processing time, and improve processing accuracy include QPI, CAPI, NVLink, or other interconnects that can be configured to interconnect different system components and/or operate on top of a related PCI-express peripheral interconnect.

[00885] Поэтому в соответствии с альтернативной моделью потока данных, согласующейся с реализациями, описанными в настоящем документе, главное ЦПУ 1000 в потоковом режиме передает данные во внешнюю память 1014 либо непосредственно через движки 110 DMA и коммутатор 108, либо через центральный контроллер 112. Главное ЦПУ 1000 посылает команды в центральный контроллер 112, который посылает в движки 13 обработки команды, указывающие движкам обработки, какие данные обрабатывать. Ввиду жесткого связывания движки 13 обработки вводят данные прямо из внешней памяти 1014 или связанного с ней кэша, обрабатывают их и записывают результаты обратно во внешнюю память 1014, например, посредством жестко связанного межсоединения 3, сообщая статус в центральный контроллер 112. Центральный контроллер 112 либо отправляет результирующие данные в потоковом режиме обратно в указанное главное устройство 1000 из внешней памяти 1014, либо уведомляет главное устройство, чтобы оно само извлекло результирующие данные посредством движков 110 DMA.[00885] Therefore, according to an alternative data flow model consistent with the implementations described herein, the main CPU 1000 streams data to external memory 1014 either directly through the DMA engines 110 and switch 108, or through the central controller 112. Main The CPU 1000 sends commands to the central controller 112, which sends commands to the processing engines 13 instructing the processing engines what data to process. Because of the tight coupling, the processing engines 13 input data directly from the external memory 1014 or its associated cache, process it, and write the results back to the external memory 1014, for example, through the tightly coupled interconnect 3, reporting the status to the central controller 112. The central controller 112 either sends the resulting data is streamed back to said host device 1000 from external memory 1014, or notifies the host device to itself retrieve the result data via the DMA engines 110.

[00886] На ФИГ. 46 приведены процессор конвейера геномной обработки и система 20, показывающие полный комплект движков 13 обработки внутри кластера 11/214 движков. Конвейерная процессорная система 20 может содержать один или более кластеров 11/214 движков. В некоторых реализациях конвейерная процессорная система 20 может содержать четыре или более кластеров 11/214 движков. В число движков 13 обработки или типов движков обработки могут входить, без ограничений, сопоставитель, выравниватель, сортировщик, локальный повторные выравниватель, перекалибровщик оценки качества оснований, маркировщик дубликатов, определитель вариантов, средство сжатия и/или распаковки. В некоторых реализациях каждый кластер 11/214 движков имеет по одному движку обработки каждого типа. Соответственно, все движки 13 обработки одного типа могут получать доступ к коммутатору 208 одновременно через разные порты коммутатора, так кластеры 11/214, в которых находится каждый из них, разные. Формирование в каждом кластере 11/214 движка обработки каждого типа не требуется. Типы движков обработки, которые требуют огромной параллельной обработки или пропускной способности памяти, такие как сопоставитель (с прикрепленными к нему выравнивателями) и сортировщик, могут оказаться в каждом кластере движков конвейерной процессорной системы 20. Движки других типов могут появляться только в одном или нескольких кластерах 214 движков по мере необходимости для удовлетворения требований к их производительности или производительности конвейерной процессорной системы 20.[00886] In FIG. 46 shows the genomic processing pipeline processor and system 20 showing a complete set of processing engines 13 within an engine cluster 11/214. Pipeline processor system 20 may comprise one or more engine clusters 11/214. In some implementations, pipelined processor system 20 may contain four or more engine clusters 11/214. The processing engines 13 or types of processing engines may include, but are not limited to, a matcher, an aligner, a sorter, a local re-aligner, a base quality recalibrator, a duplicate flagger, a variant detector, a compressor and/or decompressor. In some implementations, each 11/214 engine cluster has one of each type of processing engine. Accordingly, all processing engines 13 of the same type can access the switch 208 simultaneously through different ports of the switch, so the clusters 11/214 in which each of them is located are different. The formation of a processing engine of each type in each 11/214 cluster is not required. Types of processing engines that require enormous parallel processing or memory bandwidth, such as a matcher (with aligners attached to it) and a sorter, may end up in every engine cluster of a pipelined processor system 20. Other types of engines may appear in only one or a few clusters 214 engines as necessary to meet the requirements for their performance or the performance of the pipeline processor system 20.

[00887] На ФИГ. 47 приведена конвейерная процессорная система 30 для генома, показывающая в дополнение к кластерам 11 движков, описанным выше, одно или более внедренных центральных процессорных устройств (ЦПУ) 302. В число таких примеров внедренных ЦПУ входят ядра Snapdragon® или стандартные ядра ARM®, или в других случаях это могут быть FPGA. Эти ЦПУ исполняют полностью программируемые биоинформационные алгоритмы, такие как улучшенное определение вариантов, например, построение DBG или выполнение HMM. Такую обработку ускоряют с помощью вычислительных функций в различных кластерах 11 движков, которые могут быть вызваны ядрами 302 ЦПУ по мере надобности. Кроме того, даже ориентированная на движки обработка, такая как картирование или выравнивание, может выполняться ядрами 302 ЦПУ, обеспечивая их повышенную программируемость.[00887] In FIG. 47 illustrates a genome pipeline processor system 30 showing, in addition to the engine clusters 11 described above, one or more embedded central processing units (CPUs) 302. Such examples of embedded CPUs include Snapdragon® cores or standard ARM® cores, or in other cases it may be FPGA. These CPUs execute fully programmable bioinformatics algorithms such as advanced variant detection such as DBG construction or HMM execution. Such processing is accelerated by computational functions in various clusters of 11 engines, which can be called upon by the 302 CPU cores as needed. Additionally, even engine-centric processing such as mapping or alignment can be performed by the CPU cores 302, providing them with increased programmability.

[00888] На ФИГ. 48 показан поток обработки для конвейерной процессорной системы и способа для генома. В некоторых предпочтительных реализациях данные обрабатывают в три прохода. Первый проход включает в себя картирование 402 и выравнивание 404, причем через движки 13 прогоняют полный набор ридов. Второй проход включает в себя сортировку 406, где один большой блок, подлежащий сортировке (например, существенную часть всех ридов, ранее картированных на одну хромосому) загружают в память, сортируют с помощью движков обработки и возвращают в главное устройство. Третий проход включает в себя следующие по цепочке стадии (локальное повторное выравнивание 408, маркировку 410 дубликатов, перекалибровку 412 оценки качества оснований (BQSR), вывод 414 SAM, вывод 416 редуцированного BAM и/или сжатие 418 CRAM). Этапы и функции третьего прохода могут быть выполнены в любой комбинации или подкомбинации и в любом порядке за один проход.[00888] In FIG. 48 shows a processing flow for a pipelined processor system and a method for a genome. In some preferred implementations, the data is processed in three passes. The first pass includes mapping 402 and alignment 404, with the full set of reads being run through the engines 13. The second pass involves sorting 406, where one large block to be sorted (eg, a substantial portion of all reads previously mapped to one chromosome) is loaded into memory, sorted by the processing engines, and returned to the main device. The third pass includes the next steps in the chain (local realignment 408, duplicate labeling 410, base quality score recalibration (BQSR) 412, SAM inference 414, reduced BAM inference 416, and/or CRAM compression 418). The steps and functions of the third pass can be performed in any combination or subcombination and in any order in a single pass.

[00889] Следовательно, таким образом данные проходят относительно беспрепятственно из одного или более движков обработки в главное ЦПУ, например, в соответствии с одним или более методами, описанными в настоящем документе. Таким образом, виртуальную конвейерную архитектуру, например, описанную выше, используют для потоковой передачи ридов из главного устройства в циклические буферы в памяти через один движок обработки за другим последовательно и обратно в главное устройство. В некоторых реализациях распаковка CRAM может быть отдельной функцией потоковой передачи. В некоторых реализациях вывод 414 SAM, вывод 416 редуцированного BAM и/или компрессия 418 CRAM могут быть заменены определением вариантов, сжатием и распаковкой.[00889] Therefore, in this manner, data flows relatively unimpeded from one or more processing engines to the main CPU, for example, in accordance with one or more of the methods described herein. Thus, a virtual pipeline architecture, such as the one described above, is used to stream reads from the host to circular buffers in memory, through one processing engine after another, sequentially, and back to the host. In some implementations, CRAM decompression may be a separate threading function. In some implementations, SAM output 414, reduced BAM output 416, and/or CRAM compression 418 may be replaced by variant detection, compression, and decompression.

[00890] В различных случаях описана аппаратная реализация конвейера анализа последовательности. Это можно сделать множеством различных способов, например при помощи варианта реализация с использованием FPGA, ASIC или структурированной ASIC. Функциональные блоки, которые реализованы с помощью FPGA, ASIC или структурированной ASIC, показаны на ФИГ. 49. Соответственно, система включает в себя ряд блоков или модулей для выполнения анализа последовательности. Входными данными аппаратной реализации может быть файл FASTQ, но этот формат не является ограничением. Помимо файла FASTQ входные данные FPGA, или ASIC, или структурированной ASIC содержат вспомогательную информацию, например, Информацию об объеме потока (Flow Space Informatio)n, относящуюся к технологии, такой как СНП. В число блоков или модулей могут входить следующие блоки: исправление ошибок, картирование, выравнивание, сортировка, локальное повторное выравнивание, маркировка дубликатов, перекалибровка оценки качества оснований, сокращение BAM и побочной информации и/или определение вариантов.[00890] A hardware implementation of a sequence analysis pipeline is described in various cases. This can be done in many different ways, such as an FPGA, ASIC, or structured ASIC implementation. Functional blocks that are implemented using an FPGA, ASIC, or structured ASIC are shown in FIG. 49. Accordingly, the system includes a number of blocks or modules for performing sequence analysis. The input to the hardware implementation may be a FASTQ file, but this format is not a limitation. In addition to the FASTQ file, the FPGA or ASIC or structured ASIC input data contains auxiliary information, such as Flow Space Information, related to the technology, such as the SNP. The blocks or modules may include the following: error correction, mapping, alignment, sorting, local realignment, duplicate labeling, base quality assessment recalibration, BAM and side information reduction, and/or variant identification.

[00891] Эти блоки или модули могут присутствовать внутри, или могут быть реализованы аппаратно, но для достижения цели реализации конвейера анализа последовательности некоторые из указанных блоков могут быть опущены, а другие блоки добавлены. Блоки 2 и 3 описывают два альтернативных варианта платформы с конвейером анализа последовательности. Платформа с конвейером анализа последовательности содержит FPGA, ASIC или структурированную ASIC и программное обеспечение, поддерживаемое главным устройством (например, ПК, сервером, кластером или средствами облачного вычисления) с помощью облачного и/или кластерного хранилища. Блоки 4-7 описывают различные интерфейсы, которые может иметь конвейер анализа последовательности. В блоках 4 и 6 интерфейс может представлять собой интерфейс PCIe и/или QPI/CAPI/CCVI/NVLink, но не ограничиваясь PCIe, QPI или другим интерфейсом. В блоках 5 и 7 аппаратное обеспечение (FPGA, или ASIC, или структурированная ASIC) может быть непосредственно интегрировано в секвенатор. Блоки 8 и 9 описывают интеграцию аппаратного конвейера анализа последовательности, встроенного в главную систему, такую как ПК, кластер серверов или секвенатор. Аппаратное обеспечение FPGA, ASIC или структурированной ASIC окружают множество элементов памяти DDR3 и интерфейс PCIe/QPI/CAPI/CCVI/NVLink. Плата с FPGA/ASIC/sASIC соединена с главным компьютером, состоящим из главного ЦПУ и/или ГПУ, которое может быть маломощным ЦПУ, таким ка ARM®, Snapdragon® или любой другой процессор. Блок 10 иллюстрирует API аппаратного конвейера анализа последовательности, который может быть доступен приложениям третьей стороны для выполнения третичного анализа.[00891] These blocks or modules may be present internally, or may be implemented in hardware, but to achieve the purpose of implementing a sequence analysis pipeline, some of these blocks may be omitted and other blocks may be added. Blocks 2 and 3 describe two alternative platform options for a sequence analysis pipeline. The sequence analysis pipeline platform contains an FPGA, ASIC, or structured ASIC, and software supported by a host device (e.g., PC, server, cluster, or cloud computing facilities) using cloud and/or cluster storage. Blocks 4-7 describe the various interfaces that a sequence analysis pipeline may have. In blocks 4 and 6, the interface may be a PCIe and/or QPI/CAPI/CCVI/NVLink interface, but is not limited to PCIe, QPI or other interface. In blocks 5 and 7, the hardware (FPGA, or ASIC, or structured ASIC) can be directly integrated into the sequencer. Blocks 8 and 9 describe the integration of a hardware sequence analysis pipeline built into a host system such as a PC, server cluster, or sequencer. Surrounding the FPGA, ASIC, or structured ASIC hardware are multiple DDR3 memory elements and a PCIe/QPI/CAPI/CCVI/NVLink interface. The FPGA/ASIC/sASIC board is connected to a host computer consisting of a main CPU and/or GPU, which may be a low-power CPU such as an ARM®, Snapdragon®, or any other processor. Block 10 illustrates a sequence analysis hardware pipeline API that can be accessed by third party applications to perform tertiary analysis.

[00892] На ФИГ. 50A и 50B изображена плата 104 расширения, имеющая микросхему 100, например, FPGA, по данному изобретению, а также один или более соответствующих элементов 105 для связывания FPGA 100 с г главным ЦПУ/ГПУ, например, для передачи данных, таких как данные, подлежащие обработке, и результирующие данные, туда и обратно из ЦПУ/ГПУ в FPGA 100. На ФИГ. 50B изображена плата расширения, показанная на ФИГ. 50A, которая имеет множество, например 3 гнезд, содержащих множество, например, 3, микросхемы обработки по данному изобретению.[00892] In FIG. 50A and 50B illustrate an expansion board 104 having a chip 100, such as an FPGA, in accordance with the present invention, as well as one or more corresponding elements 105 for coupling the FPGA 100 to a host CPU/GPU, such as for transferring data, such as data to be processing, and the resulting data, back and forth from the CPU/GPU to the FPGA 100. In FIG. 50B shows the expansion board shown in FIG. 50A, which has a plurality of, for example 3, slots containing a plurality of, for example, 3, processing chips according to the present invention.

[00893] В частности, как показано на ФИГ. 50A и 50B, в различных вариантах реализации устройство по настоящему изобретению может содержать вычислительную архитектуру, например, внедренную в кремниевую программируемую пользователем вентильную матрицу (FPGA) или специализированную интегральную схему (ASIC) 100. FPGA 100 может быть интегрирована в печатную плату (ПП) 104, такую как плата интерфейса периферийных компонентов типа экспресс (PCIe), которую можно вставить в вычислительную платформу. В различных случаях, как показано на ФИГ. 50A, плата 104 PCIe может содержать одну матрицу FPGA 100, которая может быть окружена локальными памятями 105, однако в различных вариантах реализации, как показано на ФИГ. 50B, плата 104 PCIe может содержать множество матриц FPGA 100A, 100B и 100C. В различных случаях плата PCI может также содержать шину PCIe. Плата 104 PCIe может быть добавлена на вычислительную платформу для исполнения алгоритмов на чрезвычайно больших наборах данных. В альтернативном варианте реализации, который упомянут выше со ссылкой на ФИГ. 34, в различных вариантах реализации матрица FPGA может быть выполнена с возможностью прямого соединения с ЦПУ/ГПУ, например, посредством перемычки, и жестко связана с ним, например посредством интерфейса QPI, CAPI, CCVI. Соответственно, в различных случаях весь рабочий поток секвенирования генома, задействующий матрицу FPGA, может включать в себя следующее: подготовку образца, выравнивание (включая картирование и выравнивание), анализ вариантов, биологическую интерпретацию и/или специальные приложения.[00893] Specifically, as shown in FIG. 50A and 50B, in various embodiments, a device of the present invention may comprise a computing architecture, such as embedded in a silicon field programmable gate array (FPGA) or application specific integrated circuit (ASIC) 100. The FPGA 100 may be integrated on a printed circuit board (PCB) 104 , such as a Peripheral Component Interface Express (PCIe) card that can be inserted into a computing platform. In various cases, as shown in FIG. 50A, PCIe card 104 may include a single FPGA 100, which may be surrounded by local memories 105, but in different implementations, as shown in FIG. 50B, PCIe card 104 may include a plurality of FPGAs 100A, 100B, and 100C. In various cases, a PCI card may also contain a PCIe bus. The 104 PCIe card can be added to a computing platform to run algorithms on extremely large data sets. In an alternative embodiment, which is mentioned above with reference to FIG. 34, in various embodiments, the FPGA may be configured to be directly connected to the CPU/GPU, for example via a jumper, and hard coupled to it, for example via a QPI, CAPI, CCVI interface. Accordingly, in various cases, the entire genome sequencing workflow involving the FPGA may include the following: sample preparation, alignment (including mapping and alignment), variant analysis, biological interpretation, and/or custom applications.

[00894] Следовательно, в различных вариантах реализации устройство по настоящему изобретению может содержать вычислительную архитектуру, которая достигает высокоэффективного исполнения алгоритмов, таких как алгоритмы картирования и выравнивания, которые работают на чрезвычайно больших наборах данных, например, когда наборы данных проявляют плохую локальность ссылок (LOR). Эти алгоритмы предназначены для реконструкции всего генома из миллионов последовательностей коротких ридов из современных, так называемых, секвенаторов нового поколения, требующей многогигабайтные структуры данных с произвольным доступом. По достижении реконструкции, как описано выше в настоящем документе, используют дальнейшие алгоритмы с аналогичными характеристиками для сравнения одного генома с библиотеками других, выполнения функционального анализа генов и т.д.[00894] Therefore, in various embodiments, the device of the present invention may comprise a computing architecture that achieves highly efficient execution of algorithms, such as mapping and alignment algorithms, that operate on extremely large data sets, for example, when the data sets exhibit poor locality of reference (LOR) ). These algorithms are designed to reconstruct the entire genome from millions of short read sequences from modern so-called next-generation sequencers, requiring multi-gigabyte random access data structures. Once reconstruction is achieved, as described above in this document, further algorithms with similar characteristics are used to compare one genome with libraries of others, perform functional analysis of genes, etc.

[00895] Существуют две другие типичные архитектуры, которые, как правило, могут быть построены для выполнения одной или более операций, подробно описанных в настоящем документе, в том числе, например, многоядерные ЦПУ общего назначения и графические процессорные устройства общего назначения (ГПУОН). В таком случае каждый ЦПУ/ГПУ в многоядерной системе может иметь классическую архитектуру на основе кэша, где инструкции и данные извлекаются из кэша уровня 1 (кэш L1), который мал, но обладает чрезвычайно быстрым доступом. Множество кэшей L1 могут быть соединены с более крупным, но более медленным кэшем L2. Кэш L2 может быть соединен с большой, но более медленной системой памяти DRAM (динамическое оперативное запоминающее устройство), или может быть соединен с еще более крупным, но более медленным кэшем L3, который может быть затем соединен с DRAM. Преимущество такой компоновки может заключаться в том, что приложения, в которых программы и данные проявляют локальность ссылок, ведут себя почти так, как если бы они исполнялись на компьютере с одним запоминающим устройством, большим как DRAM, но быстрым как кэш L1. Поскольку полностью заказные, в высшей степени оптимизированные ЦПУ работают при очень высоких тактовых частотах, например от 2 до 4 ГГц, эта архитектура может быть существенна для достижения хороших рабочих характеристик. Кроме того, как подробно обсуждалось со ссылкой на ФИГ. 33, в различных вариантах реализации ЦПУ может быть жестко связано с FPGA, например, с FPGA, выполненной с возможностью осуществления одной или более функций, относящихся к различным операциям, описанным в настоящем документе, например, посредством QPI, CCVI, CAPI, для дальнейшего улучшения рабочих характеристик, а также скорости и когерентности данных, передаваемых по всей системе. В таком случае между двумя устройствами может поддерживаться когерентность кэша, как отмечено выше.[00895] There are two other typical architectures that typically can be built to perform one or more of the operations described in detail herein, including, for example, general purpose multi-core CPUs and general purpose graphics processing units (GPPUs). In this case, each CPU/GPU in a multi-core system can have a classic cache-based architecture, where instructions and data are fetched from the Level 1 cache (L1 cache), which is small but extremely fast to access. Multiple L1 caches can be connected to a larger but slower L2 cache. The L2 cache can be coupled to a larger but slower DRAM (Dynamic Random Access Memory) memory system, or it can be coupled to an even larger but slower L3 cache, which can then be coupled to DRAM. The benefit of this arrangement may be that applications in which programs and data exhibit reference locality behave almost as if they were running on a computer with a single storage device as large as DRAM but as fast as an L1 cache. Since fully custom, highly optimized CPUs operate at very high clock speeds, such as 2 to 4 GHz, this architecture can be essential to achieving good performance. Additionally, as discussed in detail with reference to FIG. 33, in various embodiments, the CPU may be hard coupled to an FPGA, e.g., an FPGA configured to perform one or more functions related to the various operations described herein, e.g., through QPI, CCVI, CAPI, to further improve performance characteristics, and the speed and coherence of data transferred throughout the system. In such a case, cache coherence can be maintained between the two devices, as noted above.

[00896] Кроме того, эту архитектуру можно расширить с помощью ГПУОН, например, за счет реализации очень большого количества малых ЦПУ, каждый со своим кэшем L1, причем каждый ЦП исполняет одни и те же инструкции на различных подмножествах данных. Это, так называемая архитектура ОКМД (один поток команд, много потоков данных). Экономии можно достичь за счет совместного использования логики выборки и декодирования команды по всем большому количеству ЦПУ. Каждый кэш имеет доступ ко множеству больших внешних DRAM через сеть межсоединений. В предположении, что вычисление должно выполняться с возможностью высокого распараллеливания, ГПУОН имеют значительное преимущество над ЦПУ общего назначения благодаря большому количеству вычислительных ресурсов. Тем не менее, они все равно имеют архитектуру с кэшированием и их рабочие характеристики ухудшаются приложениями, которые не обладают достаточной высокой степенью локальности ссылок. Это приводит к высокому коэффициенту непопадания при обращении к кэшу и простою процессора в ожидании поступления данных из внешнего DRAM.[00896] In addition, this architecture can be extended using GPUON, for example, by implementing a very large number of small CPUs, each with its own L1 cache, with each CPU executing the same instructions on different subsets of data. This is the so-called OKMD architecture (one command stream, many data streams). Savings can be achieved by sharing instruction fetching and decoding logic across a large number of CPUs. Each cache has access to many large external DRAMs through a network of interconnects. Assuming that the computation must be highly parallelizable, GPUs have a significant advantage over general-purpose CPUs due to the large amount of computational resources they have. However, they still have a cache-based architecture and their performance is degraded by applications that do not have a high enough degree of reference locality. This results in high cache miss rates and processor idle while waiting for data to arrive from external DRAM.

[00897] Например, в различных случаях в качестве системной памяти могут использоваться динамические ОЗУ, поскольку они более экономичные, чем статические ОЗУ (СОЗУ). Приблизительно можно считать, что при одинаковой стоимости объем DRAM в 4 раза превосходит объем СОЗУ. Однако ввиду падения спроса на СОЗУ в пользу DRAM, разрыв между ними увеличился вследствие значительной экономии пространства, которую предлагают DRAM, которые пользуются большим спросом. Независимо от стоимости DRAM в 4 раза плотнее, чем СОЗУ, размещенные на одинаковой площади кремния, так как для них требуются только один транзистор и одна емкость на бит по сравнению с 4 транзисторами на бит для реализации триггера в СОЗУ. DRAM представляет один бит информации как наличие или отсутствие заряда в емкости.[00897] For example, dynamic RAM may be used as system memory in various cases because it is more cost effective than static random access memory (SRAM). Approximately, we can assume that at the same cost, the volume of DRAM is 4 times greater than the volume of RAM. However, with demand for SRAM falling in favor of DRAM, the gap between the two has widened due to the significant space savings offered by DRAM, which is in high demand. Regardless of cost, DRAM is 4 times denser than SRAM placed on the same silicon area, as it requires only one transistor and one capacitance per bit compared to 4 transistors per bit to implement a flip-flop in SRAM. DRAM represents one bit of information as the presence or absence of charge in the capacitance.

[00898] Проблема с такой структурой состоит в том, что заряд ослабевает со временем, поэтому его нужно периодически обновлять. Такая необходимость привела к архитектурам, организующим память в виде независимых блоков и механизмов доступа, которые выдают множество слов памяти на каждый запрос. Это компенсирует время, когда данный блок недоступен во время обновления. Идея состоит в перемещении огромного количества данных, пока данный блок доступен. В этом отличие от СОЗУ, в котором любое место памяти доступно за одно обращение в течение постоянного количества времени. Данная характеристика позволяет при обращении к памяти ориентироваться на одно слово, а не блок. DRAM работают хорошо в архитектуре с кэшированием, так как каждое непопадание в кэш приводит к блоку памяти, считываемому из DRAM. Теория локальности ссылок состоит в том, что сразу после обращения к слову N, вероятно, последует обращение к словам N + 1, N + 2, N + 3 и т.д.[00898] The problem with this structure is that the charge weakens over time, so it must be renewed periodically. This need has led to architectures that organize memory into independent blocks and access mechanisms that produce multiple words of memory for each request. This compensates for the time when a given block is unavailable during an update. The idea is to move a huge amount of data while a given block is available. This is in contrast to RAM, in which any memory location is accessible in one access for a constant amount of time. This characteristic allows you to focus on one word, rather than a block, when accessing memory. DRAMs work well in a cached architecture because each cache miss results in a block of memory being read from the DRAM. The theory of locality of references is that immediately after a reference to the word N, there will likely be a reference to the words N + 1, N + 2, N + 3, etc.

[00899] На ФИГ. 51 приведен пример реализации системы 500 по настоящему изобретению, содержащей одну или более плат расширения, изображенных на ФИГ. 50, например, для биоинформационной обработки 10. Система включает в себя микросхему 100 биоинформационной обработки, выполненную с возможностью осуществления одной или более функций в конвейере обработки, такой как определение оснований, исправление ошибок, картирование, выравнивание, сортировка, сборка, определение вариантов и т.п., как описано в настоящем документе.[00899] In FIG. 51 illustrates an example implementation of a system 500 of the present invention comprising one or more expansion cards depicted in FIG. 50, for example, for bioinformatics processing 10. The system includes a bioinformatics processing chip 100 configured to perform one or more functions in the processing pipeline, such as base detection, error correction, mapping, alignment, sorting, assembly, variant detection, etc. .p., as described in this document.

[00900] Система 500 также содержит диспетчер конфигураций, который выполнен с возможность конфигурирования на плате одного или более процессором 100. А именно, в различных вариантах реализации диспетчер конфигураций выполнен с возможностью передачи инструкций во внутренний контроллер FPGA, например в прошивку, например, посредством соответствующим образом сконфигурированного драйвера по слабо или жестко связанному межсоединению, для конфигурирования одной или более функций обработки системы 500. Например, диспетчер конфигураций может быть выполнен с возможностью конфигурирования внутренних кластеров 11 и/или связанных с ним движков 13 обработки для выполнения одной или более требуемых операций, таких как картирование, выравнивание, сортировка, определение вариантов и т.п. в соответствии с принятыми инструкциями. Таким образом, только кластеры 11, содержащие движки 13 обработки для выполнения запрошенных операций обработки на данных, предоставленных из главной системы 1000 в микросхему 100, могут быть задействованы для обработки этих данных в соответствии с принятыми инструкциями.[00900] System 500 also includes a configuration manager that is configured to be configured on board by one or more processors 100. Specifically, in various embodiments, the configuration manager is configured to communicate instructions to an internal FPGA controller, such as firmware, such as through appropriate an image configured driver over a loosely or tightly coupled interconnect to configure one or more processing functions of the system 500. For example, the configuration manager may be configured to configure internal clusters 11 and/or associated processing engines 13 to perform one or more desired operations, such as mapping, alignment, sorting, identifying options, etc. in accordance with accepted instructions. Thus, only the clusters 11 containing processing engines 13 for performing the requested processing operations on the data provided from the host system 1000 to the chip 100 can be engaged to process that data in accordance with the received instructions.

[00901] Кроме того, в различных вариантах реализации диспетчер конфигураций может быть также выполнен с возможностью адаптации его самого, например, пользователем третьей стороны, например, посредством соединения API, как более подробно описано выше в настоящем документе, например, с помощью пользовательского интерфейса (ГПИ), представленного приложением системы 500. Кроме того, диспетчер конфигураций может быть подключен к одной или более внешних памятей, такой как память, формирующая или иным образом содержащая базу данных, например, базу данных, содержащую один или более референсов, или секвенированных по отдельности геномов, и/или их индекс, и/или один или более ранее картированных, выровненных и/или отсортированных геномов или их частей. В различных случаях база данных может также содержать один или более генетических профилей, характеризующих болезненное состояние, например, для выполнения одного или более протоколов третичной обработки, например, на вновь картированных, выровненных генетических последовательностях или относящемся к ним файле VCF.[00901] Additionally, in various embodiments, the configuration manager may also be configured to be customized by a third party user, for example, through an API connection as described in more detail herein, for example, through a user interface ( GUI) represented by an application of the system 500. In addition, the configuration manager may be connected to one or more external memories, such as a memory that forms or otherwise contains a database, for example, a database containing one or more references, or separately sequenced genomes, and/or an index thereof, and/or one or more previously mapped, aligned and/or sorted genomes or parts thereof. In various cases, the database may also contain one or more genetic profiles characterizing a disease state, for example, to perform one or more tertiary processing protocols, for example, on the newly mapped, aligned genetic sequences or associated VCF file.

[00902] Система 500 может включать в себя веб-доступ для обеспечения удаленного обмена данными, например, через Интернет, с целью формирования платформы обмена данными посредством облака или по меньшей мере гибридного облака 504. Подобным образом обработанная информация, сформированная биоинформационным процессором, например, данные результатов, могут быть зашифрованы и сохранены в виде электронной записи здоровья, например, во внешней, такой как удаленная, базе данных. В различных случаях база данных EMR может быть выполнена с возможностью поиска в ней, например, в хранящейся там генетической информации, для выполнения одного или более статистических анализов на данных, например, определения болезненных состояний или тенденций, или в целях анализа эффективности в отношении них одной или более профилактических или терапевтических мер. Такая информация вместе с данными EMR может быть затем дополнительно обработана и/или сохранена в еще одной базе 508 данных таким образом, чтобы гарантировать конфиденциальность источника генетической информации.[00902] System 500 may include web access to enable remote data exchange, such as over the Internet, to form a data exchange platform via the cloud or at least a hybrid cloud 504. Similarly processed information generated by a bioinformation processor, e.g. the results data may be encrypted and stored in an electronic health record, for example, in an external database, such as a remote database. In various cases, an EMR database may be configured to search, for example, genetic information stored therein, to perform one or more statistical analyzes on the data, for example, to identify disease states or trends, or to analyze the effectiveness of one or more preventive or therapeutic measures. Such information, along with the EMR data, can then be further processed and/or stored in yet another database 508 in a manner that ensures the confidentiality of the source of the genetic information.

[00903] Более конкретно, на ФИГ. 51 показана система 500 для исполнения конвейера анализа последовательности на данных генетической последовательности. Система 500 содержит диспетчер 502 конфигураций, который включает в себя вычислительную систему. Вычислительная система диспетчера 502 конфигураций может содержать персональный компьютер или другую компьютерную рабочую станцию, или может быть реализована комплектом сетевых компьютеров. Диспетчер 502 конфигураций может также включать в себя одно или более третьесторонних приложений, соединенных с вычислительной системой посредством одного или более API, которые вместе с одним или более частных приложений формируют конфигурацию для обработки данных генома из секвенатора или другого источника данных генома. Диспетчер 502 конфигураций также включает в себя драйверы, которые загружают конфигурацию в конвейерную процессорную систему 10 для генома. Конвейерная процессорная система 10 для генома может выводить результирующие данные в сеть Интернет 504 или другую сеть, или быть доступна через них, для сохранения результирующих данных в электронной записи 506 о здоровье или другой базе 508 данных знаний.[00903] More specifically, in FIG. 51 shows a system 500 for running a sequence analysis pipeline on genetic sequence data. System 500 includes a configuration manager 502, which includes a computing system. The configuration manager computing system 502 may comprise a personal computer or other computer workstation, or may be implemented by a collection of networked computers. Configuration manager 502 may also include one or more third-party applications connected to the computing system through one or more APIs that, together with one or more proprietary applications, generate a configuration for processing genome data from a sequencer or other genome data source. The configuration manager 502 also includes drivers that load the configuration into the genome pipeline processor system 10. Pipeline genome processing system 10 may output the resulting data to or be accessible through the Internet 504 or other network to store the resulting data in an electronic health record 506 or other knowledge database 508 .

[00904] Как не раз отмечалось выше в настоящем документе, микросхем, реализующая конвейерный процессор для генома, может быть соединена или интегрирована с секвенатором. Эта микросхема может быть также соединена или интегрирована, например, напрямую посредством перемычки, или опосредованно, например, может находиться на плате расширения, такой как плата PCIe, а плата расширения может быть соединена или интегрирована с секвенатором. В других реализациях микросхема может быть соединена или интегрирована с серверным компьютером, который соединен с секвенатором, чтобы передавать риды геномов из секвенатора на сервер. В еще одних реализациях микросхема может быть соединена или интегрирована с сервером в облачном вычислительном кластере компьютеров и серверов. Система может включать в себя один или более секвенаторов, подключенных (например, посредством Ethernet) к серверу, содержащему микросхему, причем риды геномов формируются множеством секвенаторов, передаются на сервер, и затем картируются и выравниваются в микросхеме.[00904] As noted several times earlier herein, a genome pipeline processor chip may be coupled or integrated with a sequencer. The chip may also be coupled or integrated, for example, directly via a jumper, or indirectly, for example, on an expansion card such as a PCIe card, and the expansion card may be coupled or integrated with the sequencer. In other implementations, the chip may be coupled or integrated with a server computer that is coupled to the sequencer to transmit genomic reads from the sequencer to the server. In still other implementations, the chip may be coupled or integrated with a server in a cloud computing cluster of computers and servers. The system may include one or more sequencers connected (eg, via Ethernet) to a server containing the chip, with genome reads generated by the plurality of sequencers, transmitted to the server, and then mapped and aligned on the chip.

[00905] Например, обычно в конвейерах данных секвенатора ДНК нового поколения обработка стадии первичного анализа, как правило, специфична для данной технологии секвенирования. Эту стадию первичного анализа выполняют для перевода физических сигналов, обнаруживаемых внутри секвенатора, в «риды» нуклеотидных последовательностей вместе с соответствующими оценками качества (достоверности), например в файлах формата FASTQ или других форматов, содержащих последовательность и, как правило, информацию о качестве. Первичный анализ, как упоминалось выше, по своей природе часто довольно специфичен для используемой технологии секвенирования. В различных секвенаторах нуклеотиды обнаруживаются путем измерения изменений в флуоресценции и/или электрических зарядах, электрических токах или излучаемом свете. Некоторые конвейеры первичного анализа часто включают в себя: обработку сигнала для усиления, фильтрации, разделения и измерения выходного сигнала датчика; уменьшение объема данных, например, путем разбиения на подгруппы, прореживания, усреднения, преобразования и т.д.; обработку изображения или цифровую обработку с целью выявления и усиления имеющих значение сигналов и связывания их с конкретными ридами и нуклеотидами (например, вычисление смещения изображения, идентификацию кластера); алгоритмическую обработку и эвристическую процедуру для компенсации артефактов технологии секвенирования (например, оценку фазирования, матрицы перекрестных помех); вычисления байесовской вероятности; скрытые марковские модели; определение оснований (выбор наиболее вероятного нуклеотида в каждой позиции в последовательности); оценку качества (достоверности) определения оснований и т.п. Как описано в настоящем документе выше, один или более из этих этапов выиграют, если одну или более необходимых функций обработки реализовать в аппаратном обеспечении, например реализовать с помощью интегральной схемы, такой как FPGA. Кроме того, после получения такого формата переходят к вторичному анализу, как описано в настоящем документе, чтобы определить содержимое секвенированного образца ДНК (или РНК и т.д.), например, с помощью картирования и выравнивания ридов на референсный геном, сортировки, маркировки дубликатов, перекалибровки оценки качества оснований, локального повторного выравнивания и определения вариантов. Затем может следовать третичный анализ для извлечения медицинских и исследовательских заключений из определенного содержимого ДНК.[00905] For example, typically in next-generation DNA sequencer data pipelines, the processing of the primary analysis step is typically specific to a given sequencing technology. This primary analysis step is performed to translate the physical signals detected within the sequencer into nucleotide sequence “reads” along with associated quality scores, such as FASTQ files or other formats containing sequence and typically quality information. Primary analysis, as mentioned above, is often quite specific in nature to the sequencing technology used. In various sequencers, nucleotides are detected by measuring changes in fluorescence and/or electrical charges, electrical currents, or emitted light. Some primary analysis pipelines often include: signal processing to amplify, filter, separate, and measure the sensor output; reducing the volume of data, for example, by dividing into subgroups, thinning, averaging, transformation, etc.; image processing or digital processing to identify and amplify significant signals and associate them with specific reads and nucleotides (eg, image bias calculation, cluster identification); algorithmic processing and heuristic procedure to compensate for sequencing technology artifacts (eg, phasing estimation, crosstalk matrices); Bayesian probability calculations; hidden Markov models; base determination (selection of the most likely nucleotide at each position in the sequence); assessment of the quality (reliability) of determining the grounds, etc. As described herein above, one or more of these steps would benefit from having one or more of the required processing functions implemented in hardware, eg, implemented using an integrated circuit such as an FPGA. In addition, once such a format is obtained, it proceeds to secondary analysis, as described herein, to determine the contents of the sequenced DNA (or RNA, etc.) sample, for example, by mapping and alignment of reads to a reference genome, sorting, labeling of duplicates , recalibration of ground quality assessment, local realignment and variant identification. Tertiary analysis may then follow to extract medical and research conclusions from specific DNA contents.

[00906] Соответственно, учитывая последовательный характер описанных выше функций обработки, было бы целесообразно объединить ускорение первичной, вторичной и/или третичной обработки в одной интегральной схеме и множестве интегральных схем, расположенных на одно плате расширения. Это может быть выгодно, поскольку секвенаторы создают данные, которые, как правило, требуют и первичного, и вторичного анализа, чтобы они были полезны и в дальнейшем можно было использовать в различных протоколах третичной обработки, и объединение их в одном устройстве является наиболее эффективной с точки зрения стоимости, пространства, электропитания и совместного использования ресурсов. Поэтому в соответствии с одним конкретным аспектом изобретение относится к системе, например, к системе, для исполнения конвейера анализа последовательности на данных генетической последовательности. В различных случаях система может включать в себя электронный источник данных, такой как источник данных, который обеспечивает цифровые сигналы, например, цифровые сигналы, представляющие множество ридов геномных данных, где каждой из множества ридов геномных данных содержит нуклеотидную последовательность. Система может включать в себя одни или более памятей, таких как память, хранящая одну или более генетических референсных последовательностей и/или индекс одной или более генетических референсных последовательностей; и/или система может содержать микросхему, такую как ASIC, FPGA или sASIC.[00906] Accordingly, given the sequential nature of the processing functions described above, it would be desirable to combine primary, secondary and/or tertiary processing acceleration in a single integrated circuit and multiple integrated circuits located on a single expansion board. This can be beneficial because sequencers produce data that typically requires both primary and secondary analysis to be useful and can be further used in various tertiary processing protocols, and combining them into a single device is most efficient in terms of in terms of cost, space, power and resource sharing. Therefore, in accordance with one specific aspect, the invention relates to a system, for example a system, for running a sequence analysis pipeline on genetic sequence data. In various cases, the system may include an electronic data source, such as a data source that provides digital signals, for example, digital signals representing a plurality of genomic data reads, wherein each of the plurality of genomic data reads contains a nucleotide sequence. The system may include one or more memories, such as a memory storing one or more genetic reference sequences and/or an index of one or more genetic reference sequences; and/or the system may include an integrated circuit such as an ASIC, FPGA, or sASIC.

[00907] Один или более аспектов или признаков объекта изобретения, описанного в настоящем документе, могут быть реализованы в цифровой электронной схеме, интегрированной схеме, специально разработанных специализированных интегральных схемах (ASIC), программируемых пользователем вентильных матрицах (FPGA) или структурированной ASIC, компьютерном аппаратном обеспечении, прошивке, программном обеспечении и/или их комбинациях.[00907] One or more aspects or features of the subject matter described herein may be implemented in a digital electronic circuit, integrated circuit, application-specific integrated circuit (ASIC), field programmable gate array (FPGA), or structured ASIC, computer hardware software, firmware, software and/or combinations thereof.

[00908] Эти различные аспекты или признаки могут включать в себя реализацию в одной или более компьютерных программ, которые выполнены с возможностью исполнения или интерпретации в программируемой системе, включающей в себя по меньшей мере программируемый процессор, который может быть специальным или общего назначения и связан с системой хранения, для получения оттуда данных и инструкций и передачи туда данных и инструкций, по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода. Программируемые система или вычислительная система может включать в себя клиенты или серверы. Клиент и сервер обычно удалены друг от друга и, как правило, взаимодействуют посредством сети связи. Взаимоотношение клиента и сервера появляется благодаря компьютерным программам, выполняемым на соответствующих компьютерах и имеющих взаимосвязь клиент-сервер друг с другом.[00908] These various aspects or features may include implementation in one or more computer programs that are configured to be executed or interpreted on a programmable system including at least a programmable processor, which may be special purpose or general purpose, and associated with a storage system for receiving data and instructions therefrom and transmitting thereto data and instructions, at least one input device and at least one output device. A programmable system or computing system may include clients or servers. The client and server are usually remote from each other and typically communicate via a communications network. The client-server relationship occurs due to computer programs running on the respective computers and having a client-server relationship with each other.

[00909] Эти компьютерные программы, которые также можно назвать программами, программным обеспечением, программными приложениями, приложениями, компонентами или кодом, содержат машинные команды для программируемого процессора и могут быть реализованы на процедурном или объектно-ориентированном языке программирования высокого уровня и/или на ассемблере/машинном языке. Используемый в настоящем документе термин «машиночитаемый носитель информации» относится к любому компьютерному программному продукту, прибору и/или устройству, к такому как, например, магнитные диски, оптические диски, память, и программируемые логические устройства (ПЛУ), используемые для предоставления машинных команд и/или данных в выполненный с возможностью программирования процессор, в том числе машиночитаемый носитель информации, который принимает машинные команды как машиночитаемый сигнал. Термин «машиночитаемый сигнал» относится к любому сигналу, используемому для предоставления машинных инструкций и/или данных в программируемый процессор. Машиночитаемый носитель информации может хранить такие машинные команды некратковременно, например, как это делают некратковременная твердотельная память или накопитель на жестких магнитных дисках или любой другой эквивалентный носитель информации. Машиночитаемый носитель информации может в качестве альтернативы или дополнительно хранить такие машинные команды кратковременно, например, как это делает кэш процессора или другая память с произвольным доступом, связанная с одним или более физическими ядрами процессора.[00909] These computer programs, which may also be called programs, software, software applications, applications, components, or code, contain machine instructions for a programmable processor and may be implemented in a procedural or object-oriented high-level programming language and/or assembly language /machine language. As used herein, the term “computer-readable storage medium” refers to any computer program product, instrument and/or device, such as, for example, magnetic disks, optical disks, memory, and programmable logic units (PLUs) used to provide machine instructions. and/or data into a programmable processor, including a computer-readable storage medium, that receives machine instructions as a computer-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and/or data to a programmable processor. A computer-readable storage medium may store such machine instructions non-transiently, such as a non-transitory solid-state memory or hard disk drive or any other equivalent storage media. A computer-readable storage medium may alternatively or additionally store such machine instructions transiently, such as a processor cache or other random access memory associated with one or more physical processor cores.

[00910] Кроме того, ввиду колоссального роста в создании и получении данных в 21-ом веке появилась потребность в увеличении мощности обработки, которая в состоянии справляться с выполнением анализов с постоянно растущей вычислительной интенсивностью, на которых основывается современное развитие. Появились суперкомпьютеры, которые помогли поступательному развитию технологии целого ряда платформ. Однако, хотя супервычисление полезно, его оказалось недостаточно для ряда очень сложных вычислительных проблем, с которыми сегодня сталкиваются технологические компании. В частности, со времени секвенирования генома человека произошло экспоненциальное развитие технологии в биологических областях. Тем не менее, поскольку сложность ежедневно создаваемых необработанных данных растет высокими темпами, в обработке и анализа формируемых данных образовалось трудноразрешимое узкое место. Поэтому для устранения этого узкого места были разработаны квантовые компьютеры. Квантовое вычисление представляет передний край в области вычислений, обеспечивая абсолютно новый подход к удовлетворению самых сложных вычислительных потребностей в мире. [00910] In addition, with the enormous growth in data creation and acquisition in the 21st century, there is a need for increased processing power that is able to handle the ever-increasing computational intensity analyzes on which modern development is based. Supercomputers appeared, which helped the progressive development of technology on a number of platforms. However, while supercomputing is useful, it has proven insufficient for some of the very complex computing problems tech companies face today. In particular, since the sequencing of the human genome, there has been an exponential development of technology in biological fields. However, as the complexity of the raw data generated daily grows at a rapid pace, a bottleneck has developed in the processing and analysis of the generated data. Therefore, quantum computers were developed to eliminate this bottleneck. Quantum computing represents the cutting edge of computing, providing an entirely new approach to addressing the world's most complex computing needs.

[00911] Квантовое вычисление известно с 1982 г. Например, Richard Feynman в журнале International Journal of Theoretical Physics теоретически описал систему для выполнения квантового вычисления. А именно, Richard Feynman предложил квантовую систему, которую можно было бы сконфигурировать для использования в моделировании других квантовых систем таким образом, чтобы традиционные функции компьютерной обработки могли бы выполняться более быстро и эффективно. См. работу Feynman, 1982, International Journal of Theoretical Physics 21, pp. 467-488, которая полностью включена в настоящий документ путем ссылки. В частности, квантовая компьютерная система может быть выполнена с возможностью экспоненциальной экономии времени при сложных вычислениях. Такие управляемые квантовые системы общеизвестны как квантовые компьютеры и были успешно разработаны в компьютерах для обработки общего назначения, которые можно использовать не только для имитации квантовых систем, но и выполнить с возможностью выполнения специализированных квантовых алгоритмов. Более конкретно, сложные проблемы можно моделировать в вид уравнения, такого как функция Гамильтона, которое может быть представлено в квантовой системе таким образом, что поведение системы обеспечивает информацию о решении уравнения. См. работу Deutsch, 1985, Proceedings of the Royal Society of London A 400, pp. 97-117, которая полностью включена в настоящий документ путем ссылки. В таких случаях решение модели за счет поведения квантовой системы может быть выполнено таким образом, чтоб оно включало в себя решение дифференциального уравнения, относящегося к квантово-механическому описанию частицы, например, гамильтониана, квантовой системы.[00911] Quantum computing has been known since 1982. For example, Richard Feynman in the International Journal of Theoretical Physics theoretically described a system for performing quantum computing. Namely, Richard Feynman proposed a quantum system that could be configured for use in simulating other quantum systems so that traditional computer processing functions could be performed more quickly and efficiently. See Feynman, 1982, International Journal of Theoretical Physics 21, pp. 467-488, which is incorporated herein by reference in its entirety. In particular, a quantum computer system can be designed to provide exponential time savings on complex calculations. Such controllable quantum systems are commonly known as quantum computers and have been successfully developed into general-purpose processing computers that can be used not only to simulate quantum systems but also be made capable of executing specialized quantum algorithms. More specifically, complex problems can be modeled as an equation, such as a Hamiltonian function, which can be represented in a quantum system such that the behavior of the system provides information about the solution to the equation. See Deutsch, 1985, Proceedings of the Royal Society of London A 400, pp. 97-117, which is incorporated herein by reference in its entirety. In such cases, the solution of the model due to the behavior of the quantum system can be performed in such a way that it includes the solution of a differential equation related to the quantum mechanical description of the particle, for example, the Hamiltonian of the quantum system.

[00912] По существу квантовое вычисление представляет собой вычислительную систему, которая использует квантово-механические явления, например, суперпозицию и/или запутанность, для выполнения различных вычислений на больших объемах данных с чрезвычайной скоростью. Поэтому квантовые компьютеры являются огромных улучшением по сравнению с традиционными цифровыми логическими компьютерами. В частности, традиционные цифровые логические схемы функционируют за счет использования двоичных цифровых логических вентилей, которые формируют путем жесткого монтажа электронной схемы на проводящем субстрате. В цифровой логической схеме состояние «включено/выключено» транзистора служит в качестве базовой единицы информации, например, бита. В частности, обычный цифровой компьютерный процессор для кодирования данных использует двоичные цифры, например, биты, в состоянии «включено» или «выключено», например, как 0 или 1. С другой стороны, квантовое вычисление для кодирования данных применяет информационное устройство, которое использует суперпозиции запутанных состояний, называемые квантовыми битами или кубитами.[00912] Essentially, quantum computing is a computing system that uses quantum mechanical phenomena, such as superposition and/or entanglement, to perform various calculations on large amounts of data at extreme speed. Therefore, quantum computers are a huge improvement over traditional digital logic computers. In particular, traditional digital logic circuits operate by using binary digital logic gates, which are formed by rigidly mounting an electronic circuit onto a conductive substrate. In a digital logic circuit, the on/off state of a transistor serves as a basic unit of information, such as a bit. In particular, a conventional digital computer processor uses binary digits, such as bits, in an on or off state, such as 0 or 1, to encode data. On the other hand, quantum computing uses an information device that uses superpositions of entangled states called quantum bits or qubits.

[00913] Основу выполнения таких квантовых вычислений составляет информационное устройство, которое формирует квантовый бит. Кубит является аналогом цифрового «бита» в традиционных цифровых компьютерах за исключением того, что вычислительный потенциал кубит намного больше, чем у цифрового бита. В частности, как описано более подробно в настоящем документе, вместо кодирования только двух дискретных состояний, вроде «0» или «1», как в случае цифрового бита, кубит может быть также приведен в состояние суперпозиции «0» или «1». А именно, кубит может существовать в обоих состояниях, «0» или «1», одновременно. Следовательно, кубит позволяет выполнять квантовое вычисление на обоих состояниях одновременно. Вообще, N кубитов могут быть в суперпозиции 2N состояний. Поэтому в квантовых алгоритмах можно использовать это свойство суперпозиции для ускорения определенных вычислений.[00913] The basis for performing such quantum computing is the information device that generates the quantum bit. A qubit is analogous to the digital “bit” in traditional digital computers, except that the computing power of a qubit is much greater than that of a digital bit. In particular, as described in more detail herein, instead of encoding only two discrete states, such as "0" or "1", as in the case of a digital bit, a qubit can also be brought into a superposition state of "0" or "1". Namely, a qubit can exist in both states, “0” or “1”, simultaneously. Therefore, the qubit allows quantum computing to be performed on both states simultaneously. In general, N qubits can be in a superposition of 2 N states. Therefore, quantum algorithms can use this property of superposition to speed up certain calculations.

[00914] Следовательно, кубит аналогичен биту в традиционном цифровом компьютере, и представляет собой тип информационного устройства, которое проявляет когерентность. В частности, квантовое вычислительное устройство построено из множества строительных блоков, например, кубитов, информационных устройств. Например, вычислительная мощность квантового компьютера возрастает по мере того, как информационные устройства, которые образуют его стандартные блоки, связываются, например, запутываются, вместе управляемым образом. В таком случае квантовое состояние одного информационного устройства влияет на квантовое состояние каждого из других информационных устройств, с которыми оно связано.[00914] Therefore, a qubit is analogous to a bit in a traditional digital computer, and is a type of information device that exhibits coherence. In particular, a quantum computing device is constructed from many building blocks, such as qubits, information devices. For example, the computing power of a quantum computer increases as the information devices that form its building blocks are linked, such as entangled, together in a controlled manner. In such a case, the quantum state of one information device affects the quantum state of each of the other information devices with which it is connected.

[00915] Соответственно, как и бит в классическом цифровом вычислении, кубит в квантовом вычислении служит базовой единицей для кодирования информации, такой как квантовая информация. Подобно биту кубит кодирует данные в системе из двух состояний, которая в данном случае является квантово-механической системой. В частности, для кубита два квантовых состояния подразумевают запутывание, например, включающее в себя поляризацию одного фотона. Поэтому, когда в классической системе бит должен находиться в одном или другом состоянии, в квантовой вычислительной платформе кубит может быть суперпозицией обоих состояний одновременно, и это свойство является фундаментальным для квантовой обработки. Следовательно, отличительным признаком между кубитом и классическим битом является то, что множество кубитов проявляют квантовую запутанность. Такая запутанность является нелокальным свойством, которое позволяет набору кубитов выражать более высокую корреляцию, чем возможно в классической системе.[00915] Accordingly, like a bit in classical digital computing, a qubit in quantum computing serves as a basic unit for encoding information, such as quantum information. Like a bit, a qubit encodes data in a two-state system, which in this case is a quantum mechanical system. In particular, for a qubit, two quantum states imply entanglement, for example involving the polarization of a single photon. Therefore, while in a classical system a bit must be in one state or the other, in a quantum computing platform a qubit can be a superposition of both states at the same time, and this property is fundamental to quantum processing. Therefore, the distinguishing feature between a qubit and a classical bit is that many qubits exhibit quantum entanglement. This entanglement is a nonlocal property that allows a set of qubits to express higher correlation than is possible in a classical system.

[00916] Чтобы такие информационные устройства, например, квантовые биты, работали, они должны удовлетворять нескольким требованиям. Во-первых, информационное устройство должно быть выполнено с возможностью сведения его к квантовой двухуровневой системе. Это означает, что информационное устройство должно иметь два различимых квантовых состояния, которые могут быть использованы для выполнения вычислений. Во-вторых, информационные устройства должны быть в состоянии создавать квантовые эффекты вроде запутывания и суперпозиции. Кроме того, в определенных случаях информационное устройство может быть выполнено с возможностью хранения информации, например, квантовой информации, например в когерентной форме. В таких случаях когерентное устройство может иметь квантовое состояние, которое сохраняется без существенного ухудшения в течение длительного периода времени, например в течение порядка микросекунд или более.[00916] In order for such information devices, such as quantum bits, to work, they must satisfy several requirements. Firstly, the information device must be designed with the ability to reduce it to a quantum two-level system. This means that the information device must have two distinguishable quantum states that can be used to perform calculations. Second, information devices must be able to create quantum effects like entanglement and superposition. In addition, in certain cases, the information device may be configured to store information, such as quantum information, for example in a coherent form. In such cases, the coherent device may have a quantum state that persists without significant degradation over a long period of time, such as on the order of microseconds or more.

[00917] В частности, квантовое запутывание представляет собой физическое явление, которое возникает при формировании или конфигурировании иным образом пары или группы частиц для взаимодействия таким образом, чтобы квантовое состояние одной частицы невозможно было описать независимо от других, несмотря на разделяющее их пространство. Следовательно, вместо описания состояния одной частицы отдельно от остальных квантовое состояние нужно описывать для системы в целом. В таких случаях измерения различных физических свойств, таких как положение, момент, спин и/или поляризация, выполняемые на запутанных частицах, являются коррелированными. Например, если пара частиц сформирована таким образом, что их общий спин известен и равен нулю, и обнаруживается, что одна частица имеет направленный по часовой стрелке спин на определенной оси, то спин другой частицы, измеряемые на этой же оси, окажется направленным против часовой стрелки, как и следовало ожидать ввиду их запутанности.[00917] Specifically, quantum entanglement is a physical phenomenon that occurs when a pair or group of particles is formed or otherwise configured to interact in such a way that the quantum state of one particle cannot be described independently of the others, despite the space separating them. Therefore, instead of describing the state of one particle separately from the others, the quantum state must be described for the system as a whole. In such cases, measurements of different physical properties such as position, momentum, spin and/or polarization made on entangled particles are correlated. For example, if a pair of particles is formed such that their total spin is known to be zero, and one particle is found to have a clockwise spin on a particular axis, then the spin of the other particle measured on that same axis will be found to have a counterclockwise spin. , as would be expected given their intricacy.

[00918] Следовательно, одна частицы запутанной пары просто «знает», какое измерение было выполнено на другой и с каким результатом, даже если не известно средств, при помощи которых такая информация должна была быть передана между частицами, которые на момент измерения могли быть удалены друг от друга на произвольно большие расстояния. Благодаря такой взаимосвязи, в отличие от классических битов, которые могут иметь только одно значение одновременно, запутанность позволяет действовать множеству состояний одновременно. Именно эти уникальные взаимосвязи и квантовые состояния были использованы при разработке квантового вычисления.[00918] Consequently, one particle of an entangled pair simply "knows" what measurement was made on the other and with what result, even if the means by which such information was to be transmitted between particles that at the time of the measurement may have been removed are not known from each other at arbitrarily large distances. Because of this interconnection, unlike classical bits that can only have one value at a time, entanglement allows multiple states to operate simultaneously. It is these unique relationships and quantum states that were used in the development of quantum computing.

[00919] Соответственно, существуют различные виды физических операций, использующих чистые состояния кубита, которые могут быть выполнены. Например, можно сформировать и сконфигурировать квантовый логический вентиль для работы на основе кубита, где кубит подвергают унитарному преобразованию, например, когда унитарные преобразования соответствуют вращениям или иным квантовым явлениям кубита. Действительно, любая двухуровневая система может быть использована как кубит, например, фотоны, электроны, ядерные спины, состояния когерентного излучения, оптические решетки, переходы Джозефсона, квантовые точки и т.п. В частности, квантовый вентиль является основой для квантовой схемы, работающей на малом количестве кубитов. Например, квантовая схема содержит квантовые вентили, которые действуют на фиксированном количестве кубитов, например, двух, трех или более. Следовательно, кубиты являются строительными блоками квантовых схем подобно классическим логическим вентилям для традиционных цифровых схем. А именно, квантовая схема является моделью для квантового вычисления, где вычисление представляет собой последовательность квантовых вентилей, которые являются обратимыми преобразованиями на квантовом механическом аналоге n-битового регистра. Такие аналогичные структуры называют n-кубитовыми регистрами. Однако в отличие от классических логических вентилей квантовые логические вентили всегда обратимы.[00919] Accordingly, there are various types of physical operations using pure qubit states that can be performed. For example, a quantum logic gate may be generated and configured to operate on a qubit basis, where the qubit undergoes a unitary transformation, such as where the unitary transformations correspond to rotations or other quantum phenomena of the qubit. Indeed, any two-level system can be used as a qubit, for example, photons, electrons, nuclear spins, coherent radiation states, optical lattices, Josephson junctions, quantum dots, etc. In particular, a quantum gate is the basis for a quantum circuit that operates on a small number of qubits. For example, a quantum circuit contains quantum gates that operate on a fixed number of qubits, such as two, three, or more. Therefore, qubits are the building blocks of quantum circuits, similar to classical logic gates for traditional digital circuits. Namely, a quantum circuit is a model for quantum computation, where the computation is a sequence of quantum gates that are reversible transformations on the quantum mechanical analogue of an n-bit register. Such similar structures are called n-qubit registers. However, unlike classical logic gates, quantum logic gates are always reversible.

[00920] В частности, как описано выше, цифровой логический вентиль является физическим, монтажным устройством, которое может быть реализовано с помощью одного или более диодов или транзисторов, которые действуют как электронные переключатели для выполнения логических операций, например, булевы функций, на одном или более двоичных входных сигналах с тем, чтобы создать один двоичный выходной сигнал. С помощью усиления логические вентили могут быть расположены каскадом точно также, как булевы функции, что позволяет строить физическую модель всей булевой логики и, следовательно, все алгоритмы и математические соотношения, которые могут быть описаны с помощью булевой логики, могут быть выполнены с использованием цифровых логических вентилей. Подобным образом можно сформировать каскад квантовых логических вентилей для выполнения операций булевой логики.[00920] In particular, as described above, a digital logic gate is a physical, wiring device that can be implemented using one or more diodes or transistors that act as electronic switches to perform logical operations, such as Boolean functions, on one or more binary input signals to create one binary output signal. With the help of amplification, logic gates can be cascaded in exactly the same way as Boolean functions, which makes it possible to build a physical model of all Boolean logic and, therefore, all algorithms and mathematical relationships that can be described using Boolean logic can be performed using digital logic gates. valves In a similar way, a cascade of quantum logic gates can be formed to perform Boolean logic operations.

[00921] Квантовые вентили обычно представляют в виде матриц. В различных реализациях квантовый вентиль действует на k кубитах, которые могут быть представлены унитарной матрицей размером 2k × 2k. В таких случаях количество кубитов на входе и выходе вентиля должно быть одинаковым, и действие вентиля на конкретном квантовом состоянии находят путем умножения вектора, представляющего состояние, на матрицу, представляющую вентиль. Следовательно, при такой конфигурации квантовые вычислительные операции могут быть исполнены на очень маленьком количестве квантовых битов. Например, существуют квантовые алгоритмы, которые выполнены с возможностью осуществления значительно более сложных вычислений быстрее, чем с помощью любого возможного вероятностного классического алгоритма. В частности, квантовый алгоритм - это алгоритм, который выполняется на модели квантовой схемы вычисления.[00921] Quantum gates are typically represented as matrices. In various implementations, the quantum gate operates on k qubits, which can be represented by a 2k × 2k unitary matrix. In such cases, the number of qubits at the input and output of the gate must be the same, and the action of the gate on a particular quantum state is found by multiplying the vector representing the state by the matrix representing the gate. Therefore, with this configuration, quantum computing operations can be performed on a very small number of quantum bits. For example, there are quantum algorithms that are designed to perform significantly more complex calculations faster than any possible probabilistic classical algorithm. Specifically, a quantum algorithm is an algorithm that runs on a model of a quantum computation circuit.

[00922] Тогда как классический алгоритм представляет собой конечную последовательность пошаговых команд или процедур, которые могут быть выполнены цифровыми логическими схемами классического компьютера, квантовый алгоритм является пошаговой процедурой, где каждый шаг может быть выполнен на квантовом компьютере. Однако, несмотря на существование квантовых алгоритмов, например, алгоритмов Шора, Гровера и Саймона, все классические алгоритмы тоже могут быть выполнены на квантовом компьютере с надлежащими конфигурациями. Квантовые алгоритмы обычно используют в качестве алгоритмов, которые квантовые по своей сути, например такие, которые используют суперпозицию или квантовую запутанность. Квантовые алгоритмы могут сформулированы в различных моделях квантового вычисления, такой как модель гамильтонова оракула.[00922] While a classical algorithm is a finite sequence of step-by-step instructions or procedures that can be executed by the digital logic circuits of a classical computer, a quantum algorithm is a step-by-step procedure where each step can be performed on a quantum computer. However, despite the existence of quantum algorithms, such as Shor's, Grover's, and Simon's algorithms, all classical algorithms can also be executed on a quantum computer with the proper configurations. Quantum algorithms are typically used as algorithms that are quantum in nature, such as those that use superposition or quantum entanglement. Quantum algorithms can be formulated in various models of quantum computing, such as the Hamiltonian oracle model.

[00923] Соответственно, в то время как классический компьютер имеет память, построенную из битов, где каждый бит представлен либо «1», либо «0», квантовый компьютер поддерживает последовательность кубитов, где один кубит может представлять единицу, нуль или квантовую суперпозицию этих двух состояний кубита. Соответственно, пара кубитов может быть любой квантовой суперпозицией 4 состояний, а три кубита могут быть любой суперпозицией 8 состояний. В целом квантовый компьютер с n кубитами может быть в произвольной суперпозиции 2n различных состояний одновременно по сравнению с обычным компьютером, который может быть только в одном из 2n состояний одновременно. Следовательно, кубиты могут содержать экспоненциально больше информации, чем их классические аналоги. Во время работы квантовый компьютер совершает операции путем установки кубитов в состояние дрейфа, что решает проблему путем манипулирования этими кубитами с помощью фиксированной последовательности квантовых логических вентилей. В этой последовательности квантовых логических вентилей, которая формирует операции квантовых алгоритмов. Вычисление завершается измерением, схлопывающим систему кубитов в одно из 2n чистых состояний, где каждый кубит является «0» или «1», тем самым разлагая на классические состояния. Следовательно, традиционные алгоритмы тоже могут быть выполнены на квантовой вычислительной платформе, где результатом будет, как правило, n-битовая классическая информация.[00923] Accordingly, while a classical computer has a memory constructed of bits, where each bit is represented by either a "1" or a "0", a quantum computer maintains a sequence of qubits, where one qubit can represent a one, a zero, or a quantum superposition of these two states of the qubit. Accordingly, a pair of qubits can be any quantum superposition of 4 states, and three qubits can be any superposition of 8 states. In general, a quantum computer with n qubits can be in an arbitrary superposition of 2n different states at the same time, compared to a conventional computer which can only be in one of 2n states at a time. Consequently, qubits can contain exponentially more information than their classical counterparts. During operation, a quantum computer performs operations by setting qubits to a drift state, which solves the problem by manipulating these qubits using a fixed sequence of quantum logic gates. In this sequence of quantum logic gates, which forms the operations of quantum algorithms. The calculation ends with a measurement that collapses the system of qubits into one of 2n pure states, where each qubit is a "0" or a "1", thereby decomposing into classical states. Therefore, traditional algorithms can also be executed on a quantum computing platform, where the result will typically be n-bit classical information.

[00924] В стандартном представлении базовые состояния кубита называют состояниями «0» и «1». Однако во время квантового вычисления состояние кубита, как правило, может быть суперпозицией базовых или базисных состояний, такой что кубит имеет ненулевую вероятность нахождения в базисном состоянии «0» и одновременно ненулевую вероятность нахождения в базисном состоянии «1». Соответственно, квантовая природа кубита в большой степени является производной от его способности существовать в когерентной суперпозиции базисных состояний и того, что состояние кубита должно иметь фазу. Кубит будет сохранять свою способность существования в когерентной суперпозиции базисных состояний до тех пор, пока он достаточно изолирован от источников декогерентности.[00924] In standard representation, the basic states of a qubit are called “0” and “1” states. However, during quantum computing, the state of a qubit can typically be a superposition of ground or basis states such that the qubit has a non-zero probability of being in the basis state "0" and simultaneously a non-zero probability of being in the basis state "1". Accordingly, the quantum nature of a qubit is largely a derivative of its ability to exist in a coherent superposition of basis states and the fact that the qubit state must have a phase. The qubit will retain its ability to exist in a coherent superposition of basis states as long as it is sufficiently isolated from sources of decoherence.

[00925] Поэтому, чтобы завершить вычисление с помощью кубита, измеряют состояние кубита. Как указано выше, при выполнении измерения кубита квантовый характер кубита может быть временно утерян, и суперпозиция базисных состояний может быть схлопнуто либо в базисное состояние «0», либо в базисное состояние «1». Поэтому подобным образом кубит снова становится похожим на традиционный цифровой «бит». Однако фактическое состояние кубита после схлопывания будет зависеть от различных вероятностных состояний, имевших место непосредственно перед операцией измерения. Таким образом, кубиты можно использовать для формирования квантовых схем, которые сами могут конфигурироваться образованием квантового компьютера.[00925] Therefore, to complete a calculation using a qubit, the state of the qubit is measured. As stated above, when performing a qubit measurement, the quantum character of the qubit may be temporarily lost and the superposition of basis states may collapse into either a "0" basis state or a "1" basis state. Therefore, in this way, the qubit again becomes similar to a traditional digital “bit”. However, the actual state of the qubit after collapse will depend on the various probabilistic states that occurred immediately before the measurement operation. Thus, qubits can be used to form quantum circuits, which themselves can be configured to form a quantum computer.

[00926] Существуют несколько общих подходов к проектированию и эксплуатации квантового компьютера. Одним подходом, который был сформулирован, является схемная модель квантового вычисления. Схемная модель квантового вычисления требует длительной квантовой когеренции, поэтому типом информационного устройства, используемого в квантовых компьютерах, которые поддерживают такой подход, может быть кубит, который, по определению, обладает длительным временем когеренции. Соответственно, схемная модель квантового вычисления основана на предпосылке, что кубиты могут формироваться и подвергаться действию логических вентилей, во многом напоминая биты, и могут быть запрограммированы с помощью квантовой логики для выполнения вычислений, таких как булевы вычисления. Для разработки кубитов, которые могут быть запрограммированы для выполнения квантовых логических функций таким образом было проведено исследование. Например, см. работу Shor, 2001, arXiv.org:quant-ph/0005003, которая полностью включена в настоящий документ путем ссылки. Аналогичным образом, компьютерный процессор может принять форму квантового процессора в виде сверхпроводящего квантового процессора.[00926] There are several general approaches to designing and operating a quantum computer. One approach that has been formulated is the circuit model of quantum computing. The circuit model of quantum computing requires long quantum coherence, so the type of information device used in quantum computers that support this approach would be a qubit, which by definition has a long coherence time. Accordingly, the circuit model of quantum computing is based on the premise that qubits can be formed and acted upon by logic gates, much like bits, and can be programmed using quantum logic to perform calculations such as Boolean calculations. Research has been conducted to develop qubits that can be programmed to perform quantum logic functions in this manner. For example, see Shor, 2001, arXiv.org:quant-ph/0005003, which is incorporated herein by reference in its entirety. Likewise, a computer processor can take the form of a quantum processor in the form of a superconducting quantum processor.

[00927] Сверхпроводящий квантовый процессор может содержать ряд кубитов и связанных смещающих устройств, например, два, три или более сверхпроводящих кубитов. Соответственно, хотя в различных вариантах реализации компьютерный процессор может быть выполнен в виде нетрадиционного сверхпроводящего процессора, в других вариантах реализации компьютерный процессор может быть сконфигурирован как сверхпроводящий процессор. Например, в некоторых вариантах реализации нетрадиционные сверхпроводящий процессор может быть выполнен так, чтобы он не фокусировался на квантовых эффектах, таких как суперпозиция, запутанность и/или квантовое туннелирование, а, скорее, мог действовать за счет подчеркивания различных принципов, таких как принципы, охватывающие работу классических компьютерных процессоров. В других вариантах реализации компьютерный процессор может быть выполнен в виде традиционного сверхпроводящего процессора, например такого, который может адаптироваться к процессу за счет различных квантовых эффектов, таки как суперпозиция, запутанность и/или квантовое туннелирование.[00927] A superconducting quantum processor may comprise a number of qubits and associated biasing devices, such as two, three, or more superconducting qubits. Accordingly, although in various embodiments the computer processor may be configured as a non-conventional superconducting processor, in other embodiments the computer processor may be configured as a superconducting processor. For example, in some embodiments, the unconventional superconducting processor may be designed such that it does not focus on quantum effects such as superposition, entanglement, and/or quantum tunneling, but rather may operate by emphasizing various principles, such as principles encompassing operation of classical computer processors. In other embodiments, the computer processor may be a traditional superconducting processor, such as one that can adapt to the process through various quantum effects such as superposition, entanglement, and/or quantum tunneling.

[00928] Соответственно, в различных случаях реализация таких сверхпроводящих процессоров может иметь определенные преимущества. В частности, ввиду их естественных физических свойств сверхпроводящие процессоры, как правило, могут быть выполнены с возможностью более высоких скоростей переключения и более короткого времени вычисления, чем несверхпроводящие процессоры, и поэтому, возможно, более практично решать определенные проблемы на сверхпроводящих процессорах. Дальнейшие подробности и варианты реализации примеров квантовых процессоров, которые могут быть использованы совместно с представленными устройствами, системами и способами их использования, описаны в USSN: 11/317,838; 12/013,192; 12/575,345; 12/266,378; 13/678,266 и 14/255,561; а также в различных разделенных заявках, продолжающихся заявках и/или в заявках в частичное продолжение их, включая патенты США №№7,533,068; 7,969,805; 9,026,574; 9,355,365; 9,405,876; и все их зарубежные аналоги, которые полностью включены в настоящий документ путем ссылки.[00928] Accordingly, the implementation of such superconducting processors may have certain advantages in various cases. In particular, due to their natural physical properties, superconducting processors can generally be designed to allow higher switching speeds and shorter computation times than non-superconducting processors, and therefore it may be more practical to solve certain problems on superconducting processors. Further details and implementations of examples of quantum processors that can be used in conjunction with the presented devices, systems and methods of using them are described in USSN: 11/317,838; 12/013.192; 12/575.345; 12/266.378; 13/678.266 and 14/255.561; as well as in various divisional applications, continuing applications and/or continuation-in-part applications thereof, including US Patent Nos. 7,533,068; 7,969,805; 9,026,574; 9,355,365; 9,405,876; and all their foreign equivalents, which are incorporated herein by reference in their entirety.

[00929] Кроме того, помимо вышеупомянутого предложены также квантовые устройства, системы и способы их применения для решения сложных вычислительных задач. Например, квантовые устройства и системы, описанные в настоящем документе, могут быть использованы для управления квантовым состоянием одного или более информационных устройств и/или систем когерентным образом для выполнения одного или более этапов конвейера биониформационной и/или геномной обработки, например, для выполнения одной или более операций при обработке изображений, определения оснований, картирования, выравнивания, сортировки, определения вариантов и/или других геномных и/или биоинформационных конвейеров. В конкретных вариантах реализации одна или более операций могут представлять собой выполнение операций Барроуза-Уилера, Смита-Ватермана и/или HMM.[00929] In addition, in addition to the above, quantum devices, systems and methods for their application to solve complex computing problems are also proposed. For example, the quantum devices and systems described herein may be used to control the quantum state of one or more information devices and/or systems in a coherent manner to perform one or more stages of a bioinformatics and/or genomic processing pipeline, e.g., to perform one or more operations in image processing, base detection, mapping, alignment, sorting, variant detection and/or other genomic and/or bioinformatics pipelines. In specific implementations, one or more operations may be a Burrows-Wheeler, Smith-Waterman, and/or HMM operation.

[00930] В частности, решение сложных геномных и/или биоинформационных вычислительных проблем с помощью квантового вычислительного устройства может включать в себя формирование одного или более кубитов и использование их для формирования квантовых логических схем, представляющих вычислительную проблему, кодирование представления логической схемы как проблемы дискретной оптимизации и решение проблемы дискретной оптимизации с помощью квантового процессора. Представление может быть арифметической и/или геометрической проблемой для решения с помощью схем сложения, вычитания, умножения и/или деления. Проблема дискретной оптимизации может содержать набор миниатюрных проблем оптимизации, где каждая миниатюрная проблема оптимизации кодирует соответствующий логический вентиль из представления логической схемы. Например, в математической схеме можно использовать двоичное представление факторов, и эти двоичные представления можно разложить для сокращения общего количества переменных, требуемых для представления математической схемы. Соответственно, согласно идеям, изложенным в настоящем документе, компьютерный процессор может принимать форму цифрового и/или аналогового процессора, например, квантового процессора, такого как сверхпроводящий квантовый процессор. Сверхпроводящий квантовый процессор может содержать ряд кубитов и связанные локальные смещающие устройства, например, два или более сверхпроводящих кубита, которые могут быть сформированы в одно или более представлений квантовой логической схемы.[00930] In particular, solving complex genomic and/or bioinformatics computing problems with a quantum computing device may include forming one or more qubits and using them to form quantum logic circuits representing the computational problem, encoding the representation of the logic circuit as a discrete optimization problem and solving a discrete optimization problem using a quantum processor. The representation may be an arithmetic and/or geometric problem to be solved using addition, subtraction, multiplication and/or division circuits. A discrete optimization problem may comprise a set of miniature optimization problems, where each miniature optimization problem encodes a corresponding logic gate from a logic circuit representation. For example, a mathematical diagram can use binary representations of factors, and these binary representations can be decomposed to reduce the total number of variables required to represent the mathematical diagram. Accordingly, in accordance with the teachings set forth herein, a computer processor may take the form of a digital and/or analog processor, for example, a quantum processor such as a superconducting quantum processor. A superconducting quantum processor may contain a number of qubits and associated local bias devices, for example, two or more superconducting qubits, which can be configured into one or more quantum logic circuit representations.

[00931] Более конкретно, в различных вариантах реализации может быть предусмотрена сверхпроводящая интегральная микросхема. А именно, в конкретных вариантах реализации такая сверхпроводящая интегральная схема может содержать первый путь сверхпроводящего тока, который размещен в металле, например, в первом металлическом слое. Может быть также включен диэлектрический, например, первый диэлектрический, слой, например, где по меньшей мере часть диэлектрического слоя связана с первым металлическим слоем и/или выполнена на нем. Второй путь сверхпроводящего тока тоже может быть включен и расположен во втором металлическом слое, например, в металлическом слое, выполненном на первом диэлектрическом слое или иным образом связанным с ним. В таком варианте реализации по меньшей мере часть второго пути сверхпроводящего тока может перекрывать по меньшей мере часть первого пути сверхпроводящего тока. Аналогичным образом может быть также включен второй диэлектрический слой, например, где по меньшей мере часть второго диэлектрического слоя связана со вторым металлическим слоем и/или выполнена на нем. Кроме того, третий путь сверхпроводящего тока может быть включен и расположен в третьем металлическом слое, который может быть связан со вторым диэлектрическим слоем или выполнен на нем, например, кода по меньшей мере часть третьего пути сверхпроводящего тока может перекрывать по меньшей мере часть одного или обоих из первого и второго путей сверхпроводящего тока. Также могут быть включены и сконфигурированы соответствующим образом один или более дополнительных слоев, диэлектрических слое и/или путей тока[00931] More specifically, a superconducting integrated circuit may be provided in various embodiments. Namely, in particular embodiments, such a superconducting integrated circuit may comprise a first superconducting current path that is located in a metal, such as a first metal layer. A dielectric layer, for example a first dielectric layer, may also be included, for example where at least a portion of the dielectric layer is associated with and/or provided on the first metal layer. The second superconducting current path may also be included and located in the second metal layer, for example, in a metal layer formed on or otherwise associated with the first dielectric layer. In such an embodiment, at least a portion of the second superconducting current path may overlap at least a portion of the first superconducting current path. Likewise, a second dielectric layer may also be included, for example, where at least a portion of the second dielectric layer is associated with and/or provided on the second metal layer. In addition, the third superconducting current path may be included and located in a third metal layer, which may be associated with or provided on the second dielectric layer, for example, where at least a portion of the third superconducting current path may overlap at least a portion of one or both from the first and second superconducting current paths. One or more additional layers, dielectric layers and/or current paths may also be included and configured accordingly.

[00932] Кроме того, между первым путем сверхпроводящего тока и третьим путем сверхпроводящего тока может быть расположено первое сверхпроводящее соединение, например, где первое сверхпроводящее соединение проходит сквозь оба диэлектрических слоя, первый и второй. Между первым путем сверхпроводящего тока и третьим путем сверхпроводящего тока может быть расположено второе сверхпроводящее соединение, например, где второе сверхпроводящее соединение может проходить сквозь оба диэлектрических слоя, первый и второй. Кроме того, по меньшей мере часть второго пути сверхпроводящего тока может быть окружена наружным путем сверхпроводящего тока, который может быть сформирован по меньшей мере частью одного или более из первого пути сверхпроводящего тока по меньшей мере части второго пути сверхпроводящего тока и/или первого и второго сверхпроводящих соединений. Соответственно, в таких случаях второй путь сверхпроводящего тока может быть выполнен с возможностью соединения, например, индуктивного соединения, сигнала с наружным путем сверхпроводящего тока.[00932] In addition, a first superconducting connection may be located between the first superconducting current path and the third superconducting current path, for example, where the first superconducting connection extends through both the first and second dielectric layers. A second superconducting connection may be located between the first superconducting current path and the third superconducting current path, for example, where the second superconducting connection may extend through both the first and second dielectric layers. In addition, at least a portion of the second superconducting current path may be surrounded by an outer superconducting current path, which may be formed by at least a portion of one or more of the first superconducting current path, at least a portion of the second superconducting current path, and/or the first and second superconducting current paths. connections. Accordingly, in such cases, the second superconducting current path may be configured to couple, for example inductively coupling, the signal to the outer superconducting current path.

[00933] В некоторых вариантах реализации взаимная индуктивность между вторым путем сверхпроводящего тока и наружным путем сверхпроводящего тока может быть почти линейно пропорциональна толщине первого диэлектрического слоя и толщине второго диэлектрического слоя. Каждое из второго и первого сверхпроводящих соединений могут также могут также включать в себя по меньшей мере одно сверхпроводящее сквозное межсоединение. Кроме того, в различных вариантах реализации второй путь сверхпроводящего тока может быть частью линии входного сигнала, а один или оба из первого и третьего путей сверхпроводящего тока могут быть соединены с программируемым сверхпроводящим устройством. В других вариантах реализации второй путь сверхпроводящего тока может быть частью программируемого сверхпроводящего устройства, а первый и третий пути сверхпроводящего тока оба могут соединены с линией выходного сигнала. В конкретных вариантах реализации программируемое сверхпроводящее устройство может быть сверхпроводящим кубитом, который может быть также соединен, например, квантовым образом, с одним или более другими кубитами с образованием квантовой схемы, такой как квантовое обрабатывающее устройство.[00933] In some embodiments, the mutual inductance between the second superconducting current path and the outer superconducting current path may be approximately linearly proportional to the thickness of the first dielectric layer and the thickness of the second dielectric layer. Each of the second and first superconducting connections may also include at least one superconducting through-connection. Additionally, in various embodiments, the second superconducting current path may be part of an input signal line, and one or both of the first and third superconducting current paths may be coupled to the programmable superconducting device. In other embodiments, the second superconducting current path may be part of a programmable superconducting device, and the first and third superconducting current paths may both be coupled to an output signal line. In specific embodiments, the programmable superconducting device may be a superconducting qubit, which may also be coupled, for example, in a quantum manner, to one or more other qubits to form a quantum circuit, such as a quantum processing device.

[00934] Соответственно, в настоящем документе предложены устройства, системы и способы решения вычислительных проблем, особенно проблем, связанных с разрешением узких мест в геномике и/или биоинформатике, которые описаны выше в настоящем документе. В различных вариантах реализации эти устройства, системы и способы вводят метод, посредством которого представление логической схемы вычислительной проблемы может быть решено непосредственно и/или может быть закодировано как проблема дискретной оптимизации, и затем проблема дискретной оптимизации может быть решена с помощью компьютерного процессора, такого как квантовый процессор. Например, в конкретных вариантах реализации решение таких проблем дискретной оптимизации может включать в себя исполнение логической схемы для решения исходной вычислительной проблемы.[00934] Accordingly, devices, systems and methods are provided herein for solving computational problems, particularly problems associated with resolving bottlenecks in genomics and/or bioinformatics, as described above herein. In various embodiments, these devices, systems and methods introduce a method whereby a logic representation of a computational problem can be solved directly and/or can be encoded as a discrete optimization problem, and the discrete optimization problem can then be solved using a computer processor such as quantum processor. For example, in specific embodiments, solving such discrete optimization problems may include executing a logic circuit to solve the original computational problem.

[00935] Следовательно, устройства, системы и способы, описанные в настоящем документе, могут быть реализованы с использованием любой формы компьютерного процессора, в том числе, например, традиционных логических схем и/или представлений логических схем, например, выполненных с возможностью использования в качестве квантового процессора и/или сверхпроводящего процессора. В частности, различные этапы выполнения обработки изображений, определения оснований, картирования, выравнивания и/или определения вариантов биоинформационного конвейера могут быть закодированы как проблемы дискретной оптимизации, и поэтому могут особенно подходить для решения с помощью квантовых процессоров, описанных в настоящем документе. В других случаях такие вычисления могут быть разрешены более обычным путем с помощью компьютерного процессора, который приспосабливает квантовые эффекты для достижения таких вычислений; и/или в других случаях такие вычисления могут быть выполнены с помощью специализированной интегрированной схемы, такой как FPGA, ASIC или структурированная ASIC, как подробно описано в настоящем документе. В некоторых вариантах реализации проблема дискретной оптимизации трактуется как проблема конфигурирования логических схем, кубитов и/или ответвителей в квантовом процессоре. В некоторых вариантах реализации квантовый процессор может быть специально выполнен с возможностью решения таких проблем дискретной оптимизации.[00935] Consequently, the devices, systems and methods described herein can be implemented using any form of computer processor, including, for example, traditional logic circuits and/or logic circuit representations, for example, configured to be used as quantum processor and/or superconducting processor. In particular, the various steps of performing image processing, base detection, mapping, alignment, and/or variant determination of a bioinformatics pipeline can be coded as discrete optimization problems, and therefore may be particularly suitable for solution by the quantum processors described herein. In other cases, such calculations can be resolved in a more conventional way by using a computer processor that adapts quantum effects to achieve such calculations; and/or in other cases, such calculations may be performed using a dedicated integrated circuit such as an FPGA, ASIC, or structured ASIC, as described in detail herein. In some implementations, the discrete optimization problem is treated as a problem of configuring logic circuits, qubits, and/or taps in a quantum processor. In some implementations, the quantum processor may be specifically configured to solve such discrete optimization problems.

[00936] По всему данному описанию изобретения и в прилагаемой формуле изобретения часто упоминается «представление логической схемы», например вычислительной проблемы. В зависимости от контекста логическая схема может содержать набор логических входов, набор логических выходов и набор логических вентилей (например, вентили «И-НЕ», вентили «исключающее ИЛИ» и т.п.), которые преобразуют логические входные сигнал в логические выходные сигналы посредством набора промежуточных логических входов и промежуточных логических выходов. Полная логическая схема может содержать представление входов в вычислительную проблему, представление выходов из вычислительной проблемы и представление последовательности промежуточных этапов между входами и выходами.[00936] Throughout this specification and the accompanying claims, reference is often made to a “logic circuit representation,” such as a computational problem. Depending on the context, a logic circuit may contain a set of logical inputs, a set of logical outputs, and a set of logic gates (for example, NAND gates, XOR gates, etc.) that convert logical inputs into logical outputs. through a set of intermediate logical inputs and intermediate logical outputs. A complete logic diagram may contain a representation of the inputs to a computational problem, a representation of the outputs from the computational problem, and a representation of the sequence of intermediate steps between the inputs and outputs.

[00937] Таким образом, при использовании в различных целях представленных устройств, систем и способов вычислительная проблема может быть определена своими входами, своими выходами и промежуточными этапами, которые преобразуют входы в выхода, и «представление логической схемы» может включать в себя все эти элементы. Специалистам в данной области будет понятно, что кодирование «представления логической схемы» вычислительной проблемы как проблемы дискретной оптимизации и последующим отображением проблемы дискретной оптимизации на квантовый процессор может привести к любому количеству участвующих слоев и любому количеству кубитов на слой. Кроме того, такое отображение может реализовывать какую-либо схему межкубитного связывания для обеспечения какой-либо схемы межслойного связывания (например, связывание между кубитами различных слоев) и внутрислойного связывания (например, связывания между кубитами в пределах конкретного слоя).[00937] Thus, when used for various purposes by the presented devices, systems and methods, a computational problem may be defined by its inputs, its outputs, and intermediate steps that transform the inputs into outputs, and a “logic diagram representation” may include all of these elements . Those skilled in the art will appreciate that encoding a "logic circuit representation" of a computational problem as a discrete optimization problem and then mapping the discrete optimization problem to a quantum processor can result in any number of participating layers and any number of qubits per layer. In addition, such a mapping may implement some kind of inter-qubit coupling scheme to provide some kind of inter-layer coupling scheme (for example, coupling between qubits of different layers) and intra-layer coupling (for example, coupling between qubits within a particular layer).

[00938] Соответственно, как было указано, в некоторых вариантах реализации структура логической схемы может быть разделена на слои. Например, логические входы могут быть представлены первым слоем, каждая последующая логическая (или арифметическая) операция может представлять соответствующий дополнительный слой, а логические выходы могут представлять еще один слой. Как описано ранее, логическая операция может быть исполнена одним логическим вентилем или комбинацией логических вентилей в зависимости от исполняемой конкретной логической операции. Таким образом, «слой» в логической схеме может включать в себя один логический вентиль или комбинацию логических вентилей в зависимости от реализуемой конкретной логической схемы.[00938] Accordingly, as noted, in some embodiments, the logic circuit structure may be divided into layers. For example, logical inputs may be represented by a first layer, each subsequent logical (or arithmetic) operation may represent a corresponding additional layer, and logical outputs may represent another layer. As described earlier, a logic operation can be performed by a single logic gate or a combination of logic gates depending on the specific logic operation being executed. Thus, a "layer" in a logic circuit may include a single logic gate or a combination of logic gates depending on the particular logic circuit being implemented.

[00939] Следовательно, в различных вариантах реализации, таких где структура логической схемы разбита на слои (например, где логические входы представляют первый слой, каждая последующая логическая операция представляет соответствующий дополнительный слой, а логические выходы представляют еще один слой), каждый слой может быть осуществлен с помощью соответствующего набора кубитов в квантовом и/или сверхпроводящем процессоре. Например, в одном варианте реализации квантового процессора один или более, например, каждый ряд, кубитов могут быть запрограммированы для представления соответствующего слоя квантовой логической схемы. То есть, конкретные кубиты могут быть запрограммированы для представления входов в логическую схему, другие кубиты могут быть запрограммированы для представления первой логической операции (исполняемой либо одним, либо множеством логических вентилей), еще одни кубиты могут быть запрограммированы для представления второй логической операции (аналогичным образом исполняемой либо одним, либо множеством логических вентилей), а следующие кубиты могут быть запрограммированы для представления выходов логической схемы.[00939] Therefore, in various implementations, such as where the logic circuit structure is divided into layers (for example, where the logic inputs represent a first layer, each subsequent logic operation represents a corresponding additional layer, and the logic outputs represent another layer), each layer may be implemented using an appropriate set of qubits in a quantum and/or superconducting processor. For example, in one embodiment of a quantum processor, one or more, for example, each row, qubits may be programmed to represent a corresponding layer of a quantum logic circuit. That is, specific qubits can be programmed to represent inputs to a logic circuit, other qubits can be programmed to represent a first logical operation (executed by either one or multiple logic gates), yet other qubits can be programmed to represent a second logical operation (in a similar manner executed by either one or many logic gates), and the following qubits can be programmed to represent the outputs of the logic circuit.

[00940] Кроме того, когда различные наборы кубитов представляют различные слои проблемы, может оказаться целесообразным обеспечение независимого динамического управления каждым соответствующим набором. Кроме того, в различных вариантах реализации различные последовательные логические схемы могут быть отображены в квантовый процессор, а соответствующие кубиты отображены так, чтобы облегчить функциональные взаимодействия для квантовой обработки таким образом, который подходит для обеспечения независимого управления ими. Учитывая вышесказанное, специалистам в данной области будет понятно, как подобную целевую функцию можно определить для любого логического вентиля. Таким образом, в некоторых вариантах реализации проблема, представляющая логическую схему, может по существу содержать множество миниатюрных проблем оптимизации, где каждый вентиль в логической схеме соответствует конкретной миниатюрной проблеме оптимизации.[00940] Additionally, when different sets of qubits represent different layers of the problem, it may be desirable to provide independent dynamic control of each respective set. Additionally, in various embodiments, various sequential logic circuits may be mapped to a quantum processor and the corresponding qubits mapped to facilitate functional interactions for quantum processing in a manner suitable for allowing them to be independently controlled. Given the above, those skilled in the art will appreciate how a similar objective function can be defined for any logic gate. Thus, in some embodiments, a problem representing a logic circuit may essentially comprise a plurality of miniature optimization problems, where each gate in the logic circuit corresponds to a particular miniature optimization problem.

[00941] Следовательно, с помощью систем и способов, которые известны данной области техники, можно сформировать пример представлений логической схемы. В одном примере представление логической схемы вычислительной проблемы, например, проблемы геномики и/или биоинформатики, может быть сформировано и/или закодировано с помощью классического цифрового компьютерного процессора, и/или квантового, и/или сверхпроводящего процессора, как описано в настоящем документе. Соответственно, представление логической схемы вычислительной проблемы может быть сохранено на по меньшей мере одном читаемым компьютером или процессором носителе информации, таком как некратковременный машиночитаемый носитель информации или память (например, энергозависимая или энергонезависимая). Следовательно, как отмечалось выше, представление логической схемы вычислительной проблемы может быть закодировано как проблема дискретной оптимизации или набор целей оптимизации, и в различных вариантах реализации, таких где для решения проблемы сконфигурирована модель обработки классическим цифровым компьютером, система может быть выполнена таким образом, чтобы битовые сроки, которые удовлетворяют логической схеме, имели нулевую энергию, а все другие битовые строки имели энергию больше нуля, и тогда проблема дискретной оптимизации может быть решена таким образом, чтобы решить исходную вычислительную проблему.[00941] Therefore, using systems and methods that are known in the art, example logic circuit representations can be generated. In one example, a logic representation of a computational problem, such as a genomics and/or bioinformatics problem, may be generated and/or encoded using a classical digital computer processor and/or a quantum and/or superconducting processor as described herein. Accordingly, the logic representation of a computing problem may be stored on at least one computer- or processor-readable storage medium, such as a non-transitory computer-readable storage medium or memory (eg, volatile or non-volatile). Therefore, as noted above, a logic representation of a computational problem may be encoded as a discrete optimization problem or a set of optimization objectives, and in various implementations, such as where a classical digital computer processing model is configured to solve the problem, the system may be implemented such that the bit the terms that satisfy the logic circuit had zero energy, and all other bit strings had energy greater than zero, and then the discrete optimization problem can be solved in a way that solves the original computational problem.

[00942] Кроме того, в других вариантах реализации проблема дискретной оптимизации может быть решена с помощью компьютерного процессора, такого как квантовый процессор. В таком случае решение проблемы дискретной оптимизации может включать в себя, например, развертывание квантового процессора до конфигурации, которая минимизирует энергию системы для установления битовой строки, которая удовлетворяет целям оптимизации. Соответственно, в некоторых вариантах реализации акт решения проблемы дискретной оптимизации может включать в себя три действия. Во-первых, проблему дискретной оптимизации можно отобразить на компьютерный процессор. В некоторых вариантах реализации компьютерный процессор может представлять собой квантовый и/или сверхпроводящий процессор, а отображение проблемы дискретной оптимизации на компьютерный процессор может включать в себя программирование элементов (например, кубитов и ответвителей) квантового и/или сверхпроводящего процессора. Отображение проблемы дискретной оптимизации на компьютерный процессор может включать в себя проблему дискретной оптимизации в по меньшей мере одном читаемым компьютером или процессором носителе информации, таком как некратковременный машиночитаемый носитель информации или память (например, энергозависимая или энергонезависимая).[00942] Additionally, in other embodiments, the discrete optimization problem may be solved using a computer processor, such as a quantum processor. In such a case, solving the discrete optimization problem may involve, for example, deploying the quantum processor to a configuration that minimizes the system's energy to establish a bit string that satisfies the optimization goals. Accordingly, in some embodiments, the act of solving a discrete optimization problem may involve three actions. First, the discrete optimization problem can be mapped to a computer processor. In some embodiments, the computer processor may be a quantum and/or superconducting processor, and mapping the discrete optimization problem to the computer processor may include programming elements (e.g., qubits and couplers) of the quantum and/or superconducting processor. Mapping the discrete optimization problem to a computer processor may include the discrete optimization problem on at least one computer- or processor-readable storage medium, such as non-transitory computer-readable storage media or memory (eg, volatile or non-volatile).

[00943] Соответственно, ввиду вышеизложенного, в различных случаях предусмотрены устройство, система и способ для исполнения конвейера анализа последовательности, например, на геномном материале. Например, геномный материал может включать в себя множество ридов геномных данных, например, в файле изображения BCL, FASTQ и т.п. В различных вариантах реализации устройство и/или система могут быть использованы для исполнения анализа последовательности на геномных данных, таких как риды геномных данных, например, с помощью индекса одной или более генетических референсных последовательностей, например, хранящихся в памяти, например, когда каждый рид геномных данных и каждая референсная последовательность представляют нуклеотидные последовательности.[00943] Accordingly, in view of the foregoing, in various cases, an apparatus, system and method are provided for executing a sequence analysis pipeline, for example, on genomic material. For example, the genomic material may include multiple reads of genomic data, such as in a BCL, FASTQ, or the like image file. In various embodiments, the apparatus and/or system may be used to perform sequence analysis on genomic data, such as genomic data reads, e.g., using an index of one or more genetic reference sequences, e.g., stored in memory, e.g., where each genomic read data and each reference sequence represents nucleotide sequences.

[00944] В частности, в различных вариантах реализации устройство может быть квантовым вычислительным устройством, например, сформированным из набора квантовых логических схем, например, жестко смонтированных квантовых логических схем, таких как логические схемы, соединенные друг с другом. В различных случаях квантовые логические схемы могут быть взаимно соединены друг с другом с помощью одного или более сверхпроводящих соединений. Кроме того, одно или более сверхпроводящих соединений могут включать в себя интерфейс памяти, например для получения доступа к памяти. Вместе логические схемы и межсоединения могут быть выполнены с возможностью обработки информации, представляющей квантовое состояние, которое само представлено как набор из одного или более кубитов. Более конкретно, набор жестко смонтированных квантовых логических схем может быть выполнен в виде набора движков обработки, например, где каждой движок обработки может быть сформирован подмножеством жестко смонтированных квантовых логических схем и может быть выполнен с возможностью осуществления одного или более этапов в конвейере анализа последовательностей на ридах геномных данных.[00944] In particular, in various embodiments, the device may be a quantum computing device, for example, formed from a collection of quantum logic circuits, for example, hard-wired quantum logic circuits, such as logic circuits connected to each other. In various cases, quantum logic circuits can be interconnected with each other using one or more superconducting connections. In addition, one or more superconducting connections may include a memory interface, for example for accessing memory. Together, logic circuits and interconnects can be configured to process information representing a quantum state that is itself represented as a collection of one or more qubits. More specifically, a set of hard-wired quantum logic circuits may be implemented as a set of processing engines, for example, where each processing engine may be formed by a subset of hard-wired quantum logic circuits and may be configured to implement one or more stages in the sequence-on-read analysis pipeline genomic data.

[00945] Например, набор движков обработки может быть выполнен с возможностью включения в себя модуля обработки изображений, определения оснований, картирования, выравнивания, сортировки, определения вариантов и/или другого модуля геномики и/или биоинформатики. Например, в различных вариантах реализации может быть включен модуль картирования, например, в первой жестко смонтированной конфигурации. Кроме того, в других вариантах реализации может быть включен модуль выравнивания, например, во второй жестко смонтированной конфигурации. Далее, может быть включен модуль сортировки, например, в третьей жестко смонтированной конфигурации. И в дополнительных вариантах реализации может быть включен модуль определения вариантов, например, во четвертой жестко смонтированной конфигурации. Более того, в различных вариантах реализации может быть включен модуль обработки изображений и/или определения вариантов в дополнительных жестко смонтированных конфигурациях, например, когда одна или более из этих жестко смонтированных конфигураций могут содержать жестко смонтированные квантовые логические схемы, причем этот модуль может быть организован в виде набора движков обработки.[00945] For example, a set of processing engines may be configured to include an image processing, base detection, mapping, alignment, sorting, variant detection, and/or other genomics and/or bioinformatics module. For example, in various embodiments, a mapping module may be included, for example, in a first hard-wired configuration. Additionally, in other embodiments, an alignment module may be included, for example, in a second hard-wired configuration. Further, a sorting module may be included, for example, in a third hard-wired configuration. And in additional embodiments, a variant determination module may be included, for example, in a fourth hard-wired configuration. Moreover, in various embodiments, an image processing and/or variant determination module may be included in additional hard-wired configurations, for example, where one or more of these hard-wired configurations may contain hard-wired quantum logic circuits, which module may be organized into in the form of a set of processing engines.

[00946] А именно, в конкретных случаях квантовое вычислительное устройство и/или система могут содержать модуль картирования, где модуль картирования включает в себя множество квантовых логических схем, которые организованы как набор движков обработки, один или более из которых выполнены с возможностью осуществления одного или более этапов процедуры картирования. Например, один или более квантовых движков обработки могут быть выполнены с возможностью приема рида геномных данных, например, посредством одного или более из множества сверхпроводящих соединений. Далее, один или более квантовых движков обработки могут быть выполнены с возможностью выделения части рида для формирования затравки, например, когда затравка может быть представлять подмножество последовательности нуклеотидов, представленной ридом. Кроме того, один или более квантовых движков обработки могут быть выполнены с возможностью вычисления первого адреса в индексе на основе затравки и обращения по адресу в индексе к памяти, чтобы принять записи с адреса, например, когда запись представляет информацию о позиции в генетической референсной последовательности. Кроме того, один или более квантовых движков обработки могут быть выполнены с возможностью определения, например, на основе записи, одной или более совпадающих позиций рида с генетической референсной последовательностью и вывода по меньшей мере одной из совпадающих позиций в память посредством интерфейса памяти.[00946] Namely, in specific cases, a quantum computing device and/or system may comprise a mapping module, where the mapping module includes a plurality of quantum logic circuits that are organized as a set of processing engines, one or more of which are configured to implement one or more more stages of the mapping procedure. For example, one or more quantum processing engines may be configured to receive a read of genomic data, for example, through one or more of a plurality of superconducting connections. Further, one or more quantum processing engines may be configured to extract a portion of the read to form a seed, for example where the seed may be a subset of the nucleotide sequence represented by the read. In addition, one or more quantum processing engines may be configured to calculate the first address in the index based on the seed and access the address in the index to memory to accept entries from the address, for example, when the entry represents position information in a genetic reference sequence. In addition, one or more quantum processing engines may be configured to determine, for example, based on a record, one or more matching read positions with a genetic reference sequence and output at least one of the matching positions to memory via a memory interface.

[00947] Более того, модуль картирования может включать в себя набор квантовых логических схем, которые организованы в виде набора движков обработки, выполненных с возможностью вычисления второго адреса в индексе, например, на основе записи и второго подмножества последовательности нуклеотидов, которые не содержатся в первом подмножестве последовательности нуклеотидов. Затем движки обработки могут обратиться по второму адресу в индексе в память, чтобы принять вторую запись со второго адреса, например, когда вторая запись, или последующая запись, содержит информацию о позиции в генетической референсной последовательности. Движок обработки может быть также выполнен с возможностью определения на основе информации о позиции одной или более совпадающих позиций рида с генетической референсной последовательностью.[00947] Moreover, the mapping module may include a set of quantum logic circuits that are organized as a set of processing engines configured to calculate a second address in the index, for example, based on an entry and a second subset of the nucleotide sequence that is not contained in the first subset of the nucleotide sequence. The processing engines may then access the second address in the index into memory to accept a second entry from the second address, for example, when the second entry, or subsequent entry, contains information about a position in a genetic reference sequence. The processing engine may also be configured to determine, based on the position information, one or more matching read positions to the genetic reference sequence.

[00948] Кроме того, в различных случаях квантовое вычислительное устройство и/или система могут содержать модуль выравнивания, где модуль выравнивания включает в себя множество квантовых логических схем, которые организованы как набор движков обработки, один или более из которых выполнены с возможностью осуществления одного или более этапов процедуры выравнивания. Например, один или более квантовых движков обработки могут быть выполнены с возможностью приема множества картированных позиций из памяти и обращения к памяти с целью извлечения сегмента генетической референсной последовательности, соответствующего каждой картированной позиции. Один или более движков обработки, сформированных в виде модуля выравнивания, могут также быть выполнены с возможностью вычисления выравнивания рида для каждого извлеченного сегмента генетической референсной последовательности с целью формирования оценки каждого выравнивания. Далее, после того, как одна или более оценок сформированы, может быть выбрано по меньшей мере один рид с лучшей оценкой выравнивания. В конкретных случаях квантовое вычислительное устройство может содержать набор квантовых логических схем, организованных в виде набора движков обработки, которые выполнены с возможностью осуществления выравнивания с гэпами или без гэпов, например выравнивание Смита-Ватермана.[00948] Additionally, in various cases, a quantum computing device and/or system may include an alignment module, where the alignment module includes a plurality of quantum logic circuits that are organized as a set of processing engines, one or more of which are configured to implement one or more more steps in the alignment procedure. For example, one or more quantum processing engines may be configured to receive a plurality of mapped positions from memory and access the memory to retrieve a genetic reference sequence segment corresponding to each mapped position. One or more processing engines configured as an alignment module may also be configured to calculate a read alignment for each extracted genetic reference sequence segment to generate a score for each alignment. Next, after one or more scores have been generated, at least one read with the best alignment score can be selected. In specific cases, a quantum computing device may comprise a set of quantum logic circuits organized as a set of processing engines that are configured to perform gapped or gapless alignment, such as Smith-Waterman alignment.

[00949] Также, в определенных случаях квантовое вычислительное устройство и/или система могут содержать модуль определения вариантов, где модуль определения вариантов включает в себя множество квантовых логических схем, которые организованы как набор движков обработки, один или более из которых выполнены с возможностью осуществления одного или более этапов процедуры определения вариантов. Например, квантовый вычислительный модуль определения вариантов может содержать набор квантовых логических схем, которые выполнены с возможностью исполнения анализа на множестве ридов геномных данных, например, с использованием одного или более гаплотипов-кандидатов, например, хранящихся в памяти, где каждый рид геномных данных и каждый гаплотип-кандидат представляют последовательность нуклеотидов.[00949] Also, in certain cases, a quantum computing device and/or system may include a variant determination module, where the variant determination module includes a plurality of quantum logic circuits that are organized as a set of processing engines, one or more of which are configured to implement one or more steps in the options identification procedure. For example, a variant detection quantum computing module may comprise a set of quantum logic circuits that are configured to perform analysis on multiple genomic data reads, e.g., using one or more candidate haplotypes, e.g., stored in memory, where each genomic data read and each a candidate haplotype is a sequence of nucleotides.

[00950] В частности, набор квантовых логических схем может быть сформирован как один или более квантовых движков обработки, которые выполнены с возможностью приема одного или более ридов геномных данных и формирования и/или приема одного или более гаплотипов-кандидатов, например, из памяти, например, посредством одного или более из множества сверхпроводящих соединений. Кроме того, один или более из квантовых движков обработки может быть выполнен с возможностью приема одного или более ридов геномных данных и одного или более гаплотипов-кандидатов из памяти, а также сравнения нуклеотидов в каждом из одного или более ридов с нуклеотидами одного или более гаплотипов-кандидатов с целью определения вероятности представления каждым гаплотипом-кандидатом правильного определения вариантов. Кроме того, один или более квантовых движков обработки могут быть выполнены с возможностью формирования выходных данных на основе определенной вероятности.[00950] In particular, a set of quantum logic circuits may be configured as one or more quantum processing engines that are configured to receive one or more reads of genomic data and generate and/or receive one or more candidate haplotypes, for example, from memory, for example, through one or more of a variety of superconducting compounds. In addition, one or more of the quantum processing engines may be configured to receive one or more genomic data reads and one or more candidate haplotypes from memory, and compare nucleotides in each of the one or more reads to nucleotides of one or more haplotypes. candidates to determine the likelihood of each candidate haplotype representing the correct variant definition. In addition, one or more quantum processing engines may be configured to generate output based on a certain probability.

[00951] Кроме того, в различных случаях набор квантовых логических схем может быть сформирован как один или более квантовых движков обработки, которые выполнены с возможностью определения вероятности наблюдения каждого рида из множества ридов на основе по меньшей мере одного гаплотипа-кандидата, являющегося действительной последовательностью нуклеотидов, например организма-источник множества ридов. В частных случаях, что касается определения вероятности, один или более квантовых движков обработки могут быть выполнены для исполнения скрытой марковской модели. Более конкретно, в дополнительных вариантах реализации один или более квантовых движков обработки могут быть выполнены с возможностью объединения множества ридов в одну или более непрерывных нуклеотидных последовательностей и/или формирования одного или более гаплотипов-кандидатов из одной или более непрерывных нуклеотидных последовательностей. Например, в различных вариантах реализации объединение множества ридов включает в себя один или более квантовых движков обработки, строящих граф де Брейна.[00951] Additionally, in various cases, a set of quantum logic circuits may be configured as one or more quantum processing engines that are configured to determine the probability of observing each read of a plurality of reads based on at least one candidate haplotype being a valid nucleotide sequence , for example, an organism that is the source of many reads. In special cases regarding probability determination, one or more quantum processing engines can be implemented to execute the hidden Markov model. More specifically, in additional embodiments, one or more quantum processing engines may be configured to combine multiple reads into one or more contiguous nucleotide sequences and/or generate one or more candidate haplotypes from one or more contiguous nucleotide sequences. For example, in various embodiments, combining multiple reads involves one or more quantum processing engines constructing a de Bruijn graph.

[00952] Соответственно, ввиду вышесказанного, предложена система для выполнения различных вычислений при решении проблем, связанных с геномной и/или биоинформационной обработкой. Например, система может включать в себя один или более автоматизированных секвенаторов в месте эксплуатации, например, СНП, и/или сервер обработки, причем один из них или оба могут содержать одно или более ЦПУ/ГПУ и/или другую интегральную схему, в частности, такую как FPGA, ASIC и/или структурированная ASIC, которые, выполнены с возможностью осуществления одного или более этапов в конвейере анализа последовательности, как описано в настоящем документе. В частности, секвенатор нового поколения может быть выполнен с возможностью секвенирования множества последовательностей нуклеиновых кислот для формирования одного или более файлов изображений BCL и/или FASTQ, представляющих секвенированные последовательности нуклеиновых кислот, причем последовательности нуклеиновых кислот могут быть последовательностями ДНК и/или РНК. Эти файлы последовательностей могут быть обработаны самим секвенатором или связанным серверным устройством, например, когда секвенатор и/или связанный сервер содержат встроенную схему, такую как FPGA или ASIC, выполненную, как описано в настоящем документе, с возможностью осуществления одного или более этапов в конвейере вторичного анализа последовательности.[00952] Accordingly, in view of the above, a system is proposed for performing various calculations in solving problems associated with genomic and/or bioinformatics processing. For example, the system may include one or more automated on-site sequencers, such as an SNP, and/or a processing server, one or both of which may comprise one or more CPU/GPU and/or other integrated circuit, in particular such as an FPGA, an ASIC, and/or a structured ASIC that is configured to implement one or more steps in a sequence analysis pipeline as described herein. In particular, a next generation sequencer may be configured to sequence a plurality of nucleic acid sequences to generate one or more BCL and/or FASTQ image files representing the sequenced nucleic acid sequences, wherein the nucleic acid sequences may be DNA and/or RNA sequences. These sequence files may be processed by the sequencer itself or an associated server device, for example, where the sequencer and/or associated server contains embedded circuitry, such as an FPGA or ASIC, configured as described herein, capable of implementing one or more stages in a secondary pipeline. sequence analysis.

[00953] Однако в различных случаях, таких когда автоматизированный секвенатор и/или связанный сервер не выполнены с возможностью осуществления вторичного анализа последовательности на данных, сформированных секвенатором, сформированные данные могут быть переданы на удаленный сервер, который выполнен с возможностью осуществления вторичного и/или третичного анализа на данных, например посредством облачного интерфейса. В таком случае доступный из облака сервер может быть выполнен с возможностью приема сформированных данных последовательности, таких как изображение в виде файла BCL и/или FASTQ, и может также быть выполнен с возможностью осуществления анализа первичной, например обработки изображений, и/или вторичной, и/или третичной обработки, например, конвейера анализа последовательности, на принятых данных. Например, доступный из облака сервер может быть одним или более серверами, содержащими ЦПУ и/или ГПУ, из которых одно или оба могут быть связаны с интегральной схемой, такой как FPGA или ASIC, как описано в настоящем документе. В частности, в определенных случаях доступный из облака сервер может быть квантовым вычислительным сервером, как описано в настоящем документе.[00953] However, in various cases, such as when the automated sequencer and/or associated server is not configured to perform secondary sequence analysis on the data generated by the sequencer, the generated data may be transmitted to a remote server that is configured to perform secondary and/or tertiary analysis on data, for example through a cloud interface. In such a case, the cloud accessible server may be configured to receive generated sequence data, such as an image in the form of a BCL and/or FASTQ file, and may also be configured to perform analysis of the primary, such as image processing, and/or secondary, and /or tertiary processing, such as a sequence analysis pipeline, on the received data. For example, the cloud-accessible server may be one or more servers comprising a CPU and/or GPU, of which one or both may be coupled to an integrated circuit such as an FPGA or ASIC, as described herein. In particular, in certain cases, the server accessible from the cloud may be a quantum computing server, as described herein.

[00954] А именно, доступный из облака сервер может быть выполнен с возможностью осуществления первичного, вторичного и/или третичного геномного и/или биоинформационного анализа на принятых данных, причем анализ может включать в себя выполнение одного или более этапов в одном или более из протоколов обработки изображений, определения оснований, картирования, выравнивания, сортировки и/или определения вариантов. В определенных случаях некоторые этапы могут быть выполнены одной платформой обработки, такой как ЦПУ или ГПУ, а другие могут быть выполнены другой платформой обработки, такой как связанная, например, жестко связанная, интегральная схема, такая как FPGA или ASIC, которая специально выполнена с возможностью осуществления различных этапов в конвейере анализа последовательности. В таких случаях, когда данные и результаты анализа подлежат передаче с одной платформы на другую, система и ее компоненты могут быть выполнены с возможностью сжатия данных перед передачей и распаковкой данных после передачи, и поэтому такие компоненты системы могут быть выполнены с возможностью формирования одного или более файлов SAM, BAM или CRAM, например для передачи. Кроме того, в различных вариантах реализации доступный из облака сервер может быть квантовой вычислительной платформой, которая, как описано в настоящем документе, выполнена с возможностью осуществления одного или более этапов в конвейере анализа последовательности, как описано в настоящем документе, и может включать в себя выполнение одного или более этапов вторичной и/или третичной обработки в соответствии с одним или более способами, описанными в настоящем документе.[00954] Namely, the cloud-accessible server may be configured to perform primary, secondary and/or tertiary genomic and/or bioinformatics analysis on the received data, which analysis may include performing one or more steps in one or more of the protocols image processing, base determination, mapping, alignment, sorting and/or variant determination. In certain cases, some steps may be performed by one processing platform, such as a CPU or GPU, and others may be performed by another processing platform, such as an associated, e.g., hard-coupled, integrated circuit such as an FPGA or ASIC that is specifically configured to implementing various steps in the sequence analysis pipeline. In such cases, where data and analysis results are to be transferred from one platform to another, the system and its components may be configured to compress the data before transmission and decompress the data after transmission, and therefore such system components may be configured to generate one or more SAM, BAM or CRAM files, for example for transfer. Additionally, in various embodiments, the cloud-accessible server may be a quantum computing platform that, as described herein, is configured to perform one or more steps in a sequence analysis pipeline as described herein, and may include performing one or more secondary and/or tertiary processing steps in accordance with one or more methods described herein.

[00955] Кроме того, что касается квантового вычисления, подробные сведения и варианты реализации примеров квантовых процессоров и способов их применения, которые могут быть использованы вместе с представленным устройствами, системами и способами, описаны в патентах США №№7,135,701; 7,533,068; 7,969,805; 8,560,282; 8,700,689; 8,738,105; 9,026,574; 9,355,365; 9,405,876; а также в различных их аналогах, которые полностью включены в настоящий документ путем ссылки.[00955] In addition, with respect to quantum computing, details and implementations of examples of quantum processors and methods of application thereof that can be used in conjunction with the presented devices, systems and methods are described in US Pat. Nos. 7,135,701; 7,533,068; 7,969,805; 8,560,282; 8,700,689; 8,738,105; 9,026,574; 9,355,365; 9,405,876; as well as various analogues thereof, which are incorporated herein by reference in their entirety.

[00956] Кроме того, что касается модуля искусственного интеллекта, описанного выше, в соответствии с одним аспектом предложено доступный из облака модуль искусственного интеллекта, который выполнен с возможностью функционального соединения с возможностью обмена данными с одним или более другими компонентами BioIT-конвейера, описанного в настоящем документе. Например, модуль ИИ может тесно сотрудничать с WMS для эффективного руководства и/или управления различными процессами системы, описанной в настоящем руководстве. Соответственно, в различных вариантах реализации предусмотрен модуль ИИ, который выполнен с возможностью действия в качестве интерфейса между геномной и клинической сферами деятельности.[00956] In addition, with respect to the artificial intelligence module described above, in accordance with one aspect, there is provided a cloud-accessible artificial intelligence module that is operably connected in communication with one or more other components of the BioIT pipeline described in this document. For example, the AI module may work closely with the WMS to effectively guide and/or control the various processes of the system described in this manual. Accordingly, in various embodiments, an AI module is provided that is configured to act as an interface between the genomic and clinical domains.

[00957] Например, в различных случаях BioIT-система может быть выполнена с возможностью приема клинических данных. В таком случае система диспетчера рабочих потоков может быть выполнена с возможностью анализа клинических данных и других таких данных и реализации одной или более систем детерминированных правил для получения данных результатов в соответствии с ее анализом клинических данных. Например, в определенных вариантах реализации различные базы данных системы могут быть выполнены таким образом, чтобы они имели реляционную архитектуру.[00957] For example, in various cases, the BioIT system may be configured to receive clinical data. In such a case, the workflow manager system may be configured to analyze clinical data and other such data and implement one or more deterministic rule systems to produce outcome data in accordance with its analysis of the clinical data. For example, in certain embodiments, the various databases of the system may be configured to have a relational architecture.

[00958] Эти конструкции могут быть представлены одной или более табличных структур. Тогда WMS может использовать ряд таблиц, например, для корреляции итеративным образом. Например, в различных моделях использования первая корреляция может быть выполнена в отношении имени субъекта с медицинским состоянием. После этого другая таблица может быть использована для корреляции медицинского состояния субъекта с его консервативным лечением. Аналогичным образом еще одна таблица может быть использована для корреляции прогресса консервативного лечения со смягчением симптомов и/или самой болезни. Для корреляции таблиц может использоваться ключ, доступ к которому предоставляется в ответ на заданный вопрос или команду. Ключ может быть каким-либо общим идентификатором, таким как имя, номер например, номер социального страхования, индивидуальный номер налогоплательщика, код сотрудника, номер телефона и т.п., по которому можно получить доступ к одной или более таблицам, выполнить корреляцию и/или получить ответ на вопрос. Соответственно, без ключа будет намного труднее строить корреляции между информацией в одной таблице с информацией в другой таблице.[00958] These constructs may be represented by one or more table structures. The WMS can then use a series of tables, for example, for correlation in an iterative manner. For example, in various usage models, the first correlation may be made against a subject's name with a medical condition. Another table can then be used to correlate the subject's medical condition with his conservative treatment. Similarly, another table can be used to correlate the progress of conservative treatment with the improvement of symptoms and/or the disease itself. To correlate tables, a key can be used, access to which is provided in response to a given question or command. The key may be some general identifier such as a name, number such as a social security number, taxpayer identification number, employee code, telephone number, etc., by which one or more tables can be accessed, correlated, and/or or get an answer to a question. Accordingly, without a key it will be much more difficult to build correlations between information in one table with information in another table.

[00959] Однако в других случаях модуль ИИ может быть выполнен с возможностью обеспечения более всеобъемлющего анализа на сформированных и/или предоставленных данных. Например, модуль ИИ может быть выполнен с возможностью реализации одного или более протоколов машинного обучения на данных системы, которые разработаны для обучения модуля ИИ созданию корреляций между геномными данными, например, сформированными системой, и накопленными клиническими данными одного или более субъектов, например, в связи с вводом EMR и других клинически уместных данных в систему.[00959] However, in other cases, the AI module may be configured to provide more comprehensive analysis on the generated and/or provided data. For example, the AI module may be configured to implement one or more machine learning protocols on system data that are designed to train the AI module to create correlations between genomic data, e.g., generated by the system, and accumulated clinical data of one or more subjects, e.g. with EMR and other clinically relevant data entered into the system.

[00960] В частности, модуль ИИ может включать в себя программирование, направленное на убыстрение тренировки системы, например, мгновенное, на распознавание того, каким образом были получены выходные данные на основе типа или характеристик принятых входных данных. Поэтому система выполнена с возможностью обучения на основе входных данных, которые она принимает, и результатах ее выходных данных, чтобы быть в состоянии быстрее и точнее устанавливать корреляции на основе принимаемых входных данных. Как правило, входные данные могут быть двух общих типов. В первом случае данные могут быть типа, в котором выходные данные, например, ответ, известны. Данные этого типа можно вводить в систему и использовать в целях тренировки. Данные второго типа могут быть данными, где ответ не известен, и, следовательно, должен быть определен; эти данные, вероятно, будут геномными данными, на которых нужно выполнить анализ, или клинические данные, для которых нужно определить клинически уместные результаты. В частности, эти способы можно использовать для улучшения возможностей обучения модулей ИИ на входных данных первого типа, чтобы лучше прогнозировать результат для входных данных второго типа. А именно, на основании прошлых подтверждающих данных модуль ИИ может быть выполнен с возможностью обучения прогнозированию результатов, исходя из ранее наблюдаемых данных.[00960] In particular, the AI module may include programming to quickly train the system, such as instantly, to recognize how output data was obtained based on the type or characteristics of input data received. Therefore, the system is configured to learn from the inputs it receives and the results of its outputs in order to be able to more quickly and accurately establish correlations based on the inputs it receives. Typically, input data can be of two general types. In the first case, the data may be of a type in which the output, such as the response, is known. This type of data can be entered into the system and used for training purposes. The second type of data may be data where the answer is not known, and therefore must be determined; these data will likely be genomic data on which analysis needs to be performed, or clinical data on which clinically relevant outcomes need to be determined. In particular, these methods can be used to improve the ability of AI modules to learn from inputs of the first type in order to better predict the outcome of inputs of the second type. Namely, based on past confirmatory data, the AI module may be configured to learn to predict outcomes based on previously observed data.

[00961] Точнее говоря, в настоящем документе представлена клиническая геномная платформа, которая выполнена с возможностью коррелирования клинических исходов заболеваний с геномними данными. В таком случае в систему можно вводить клинические профили субъектов и оценивать вместе с их определенным геномным профилем. В частности, модуль ИИ выполнен с возможностью определения на основе объединения эти двух наборов данных различных взаимозависимостей между ними. Соответственно, на первом этапе можно построить графовую базу данных или граф знаний. Например, в данном случае граф знаний может содержать элементы трех типов, в число которых входят субъект, предикат и объект, и эти элементы образуют узлы, и между узлами нужно определить взаимосвязь. Любую конкретную точку данных можно выбрать в качестве узла, и узлы могут меняться на основе выполняемых запросов. Существуют несколько различных типов взаимосвязей, которые можно определить. Например, взаимосвязи можно определить на основе их последствий, например, на основе их влияния; или их можно определить на основе умозаключений, например, взаимосвязи, которые неизвестны, но поддаются определению.[00961] More specifically, this document presents a clinical genomic platform that is capable of correlating clinical disease outcomes with genomic data. Subjects' clinical profiles can then be entered into the system and assessed along with their defined genomic profile. In particular, the AI module is configured to determine, based on the combination of these two data sets, various interdependencies between them. Accordingly, at the first stage, you can build a graph database or knowledge graph. For example, in this case, the knowledge graph may contain three types of elements, which include subject, predicate and object, and these elements form nodes, and the relationship between the nodes needs to be defined. Any specific data point can be selected as a node, and the nodes can change based on the queries being executed. There are several different types of relationships that can be defined. For example, relationships can be defined based on their consequences, such as their influence; or they can be determined by inference, such as relationships that are unknown but determinable.

[00962] Соответственно, что касается построения графа знаний, любая конкретная точка данных может образовывать узел. Например, на одной стороне графа узлом может быть болезненное состояние, а на другой стороне графа узлом может быть генотип, например, последовательность вариаций. Между этими двумя узлами может быть третий узел, например, ряд узлов, таких как один или более симптомов, один или более лекарственных препаратов, одна или более аллергий, одно или более других состояний или фенотипических признаков, например, кровяное давление, холестерин и т.д. Кроме того, между этими узлами существуют взаимосвязи, которые могут быть определены.[00962] Accordingly, with regard to the construction of a knowledge graph, any particular data point can form a node. For example, on one side of the graph the node could be a disease state, and on the other side of the graph the node could be a genotype, such as a sequence of variations. Between these two nodes there may be a third node, for example, a series of nodes such as one or more symptoms, one or more medications, one or more allergies, one or more other conditions or phenotypic traits, such as blood pressure, cholesterol, etc. d. In addition, there are relationships between these nodes that can be defined.

[00963] В частности, при построении графа знаний в систему вводят клинические данные, например, из учреждения, ведущего медицинские записи, например, электронные медицинские записи, семейный анамнез медицинских состояний и т.д., которые могут быть зашифрованы и безопасно переданы с помощью электронных средств. Аналогичным образом геномные данные субъекта могут быть секвенированы и сформированы в соответствии с этапами вторичной обработки, описанными в настоящем документе. Кроме того, после того, как эти два узла созданы, в систему можно ввести один или более узлов третьего типа, на наличии которых можно определить взаимосвязь (-и) между двумя исходными узлами.[00963] In particular, when constructing a knowledge graph, clinical data is entered into the system, for example, from an institution maintaining medical records, such as electronic medical records, family history of medical conditions, etc., which can be encrypted and securely transmitted using electronic means. Likewise, a subject's genomic data may be sequenced and generated according to the secondary processing steps described herein. In addition, after these two nodes have been created, one or more nodes of a third type can be introduced into the system, from which the relationship(s) between the two original nodes can be determined.

[00964] Например, в одном примере первый узел может быть представлен медицинскими записями человека или популяции людей, а второй узел может быть представлен характеристикой болезни. В таком случае в систему можно ввести и сформировать на графе один или более третьих узлов, где, например, третий узел может быть лекарственным препаратом; физическим, биологическим, ментальным состоянием и/или характеристикой; аллергией; географической областью; режимом питания, продуктом питания и/или ингредиентом; условием окружающей среды; географическим условием; линиями электропередачи, вышками сотовой связи и т.п. Затем можно определить ряд взаимосвязей путем анализа различных точек соединения между этими тремя элементами. В частности, в конкретном случае один узел может представлять пациента, страдающего от болезненного состояния, вторым узлом могут быть геномные данные пациента, в числе третьих узлов могут быть геномные вариации пациента, например, мутации субъекта, хромосома за хромосомой, его лекарственные препараты, физиологические состояния и т.п. Аналогичным образом этот процесс может быть повторен для множества субъектов, имеющих тот же самый диагноз или состояние. Следовательно, подобным образом можно определить корреляцию между клинической и геномной сферами активности.[00964] For example, in one example, the first node may be represented by medical records of a person or population of people, and the second node may be represented by a characteristic of a disease. In this case, one or more third nodes can be introduced into the system and formed on the graph, where, for example, the third node can be a drug; physical, biological, mental state and/or characteristic; allergies; geographical area; diet, food product and/or ingredient; environmental conditions; geographical condition; power lines, cell towers, etc. A series of relationships can then be identified by analyzing the various connection points between these three elements. Specifically, in a given case, one node may represent a patient suffering from a disease condition, a second node may be the patient's genomic data, and third nodes may include the patient's genomic variations, such as the subject's chromosome-by-chromosome mutations, his medications, physiological conditions and so on. Likewise, this process can be repeated for multiple subjects having the same diagnosis or condition. Therefore, the correlation between clinical and genomic domains of activity can be determined in a similar manner.

[00965] Соответственно, этапом в построении клинического геномного графа является определение узлов привязки, представляющих собой два граничных элемента, между которыми все определяют и изучают все различные общности. Следовательно, следующим этапом является определение всех возможных известных соответствий между двумя узлами привязки, которые могут быть представлены в графе как третий узел. Эти известные соответствия могут быть построены путем детализации последствий, вызванных одним или другим узлом и/или их характеристиками. Это могут быть известные и/или наблюдаемые взаимосвязи между узлами. На основе этих известных взаимосвязей можно изучить второй тип взаимосвязи и/или определить, какие взаимосвязи могут быть построены на умозаключениях. Далее, чтобы лучше определять причинные и/или прогнозируемые результаты, всевозможным разным взаимосвязям можно присвоить веса, например, на основе степени определенности, количества общностей, количества экземпляров, совместно использующих узел, количества общих взаимосвязей и т.п.[00965] Accordingly, a step in the construction of a clinical genomic graph is the definition of anchor nodes, which are two boundary elements between which all the different entities are defined and studied. Therefore, the next step is to identify all possible known matches between two anchor nodes that can be represented in the graph as a third node. These known correspondences can be constructed by detailing the consequences caused by one or another node and/or their characteristics. These may be known and/or observable relationships between nodes. Based on these known relationships, the second type of relationship can be explored and/or what relationships can be inferred. Further, to better determine causal and/or predictive outcomes, weights can be assigned to various different relationships, for example, based on degree of certainty, number of commonalities, number of instances sharing a node, number of common relationships, and the like.

[00966] Таким образом, построение и реализация динамического графа знаний лежат в основе клинической геномной платформы обработки. Как было указано, различные платформы обработки глобальной системы можно связать вместе, например, для беспрепятственной передачи данных между ее различными компонентами. Например, как было указано, конвейеры картирования, выравнивания и/или определения вариантов могут быть выполнены с возможностью передачи данных, например, данных результатов, в модуль искусственного интеллекта. В частности, модуль ИИ может быть выполнен с возможностью приема входных данных из одного или более компонентов платформы вторичной обработки и/или одного или более других компонентов системы. Более конкретно, модуль ИИ выполнен с возможностью приема данных картирования, выравнивания и/или определения вариантов из движков обработки сопоставителя, выравнивателя и/или определения вариантов и взятия в оборот этих данных и использования их для формирования одного или более узлов на графе знаний. Кроме того, модуль ИИ может быть выполнен с возможностью приема входных данных из одного или более источников, например, из медицинского учреждения, от поставщика услуг здравоохранения, из исследовательской лаборатории, средства хранения записей и т.п., например, когда записи содержат данные, относящиеся к физическому, ментальному и/или эмоциональному благополучию одного или более субъектов, и взятия в оборот этих данных и использования их для формирования одного или более узлов на графе знаний.[00966] Thus, the construction and implementation of a dynamic knowledge graph is at the core of a clinical genomic processing platform. As stated, the various processing platforms of a global system can be linked together, for example, to seamlessly transfer data between its various components. For example, as noted, the mapping, alignment, and/or variant determination pipelines may be configured to pass data, such as result data, to an artificial intelligence module. In particular, the AI module may be configured to receive input data from one or more components of the secondary processing platform and/or one or more other components of the system. More specifically, the AI module is configured to receive mapping, alignment, and/or variant determination data from the matcher, aligner, and/or variant determination processing engines and take that data and use it to form one or more nodes in the knowledge graph. In addition, the AI module may be configured to receive input data from one or more sources, for example, from a medical facility, from a healthcare provider, from a research laboratory, a record storage facility, and the like, for example, when the records contain data, relating to the physical, mental and/or emotional well-being of one or more subjects, and taking this data into circulation and using it to form one or more nodes in the knowledge graph.

[00967] Кроме того, после того, как архитектура графа знаний построена, она может непрерывно обновляться и расти за счет добавления все больше и больше соответствующих данных в структуру знаний, построения все больше и больше потенциальных узлов и/или взаимосвязей. В таком случае граничные узлы могут быть любой комбинацией узлов, например, в определенных случаях могут выбираться пользователем. Например, в различных вариантах реализации система может быть выполнена с возможностью доступа к ней третьей стороной. В таком случае пользователь может получать доступ к модулю ИИ, например, посредством соответствующим образом сконфигурированного пользовательского интерфейса, выгружать относящуюся к делу информацию в систему и/или определять соответствующие узлы, которыми нужно ограничить запрос, например, щелчком или перетаскиванием их, и может формулировать вопрос для получения ответа от модуля ИИ. Соответственно, пользователь может просматривать и/или выбирать граничные узлы и затем предоставлять системе формирование соответствующей карты знаний с использованием выбранных узлов и определение взаимосвязей между этими узлами, а на основании этих взаимосвязей могут быть заданы вопросы и получены ответы, по меньшей мере умозрительные, например, от системы ИИ.[00967] Additionally, once the knowledge graph architecture is built, it can be continuously updated and grown by adding more and more relevant data to the knowledge structure, building more and more potential nodes and/or relationships. In such a case, the boundary nodes can be any combination of nodes, for example, in certain cases can be selected by the user. For example, in various embodiments, the system may be configured to be accessible by a third party. In such a case, the user can access the AI module, for example through a suitably configured user interface, upload relevant information to the system and/or define relevant nodes to limit the query to, for example, by clicking or dragging them, and can formulate a question to receive a response from the AI module. Accordingly, the user can view and/or select boundary nodes and then allow the system to generate a corresponding knowledge map using the selected nodes and determine the relationships between those nodes, and based on these relationships, questions can be asked and answers obtained, at least speculatively, e.g. from the AI system.

[00968] Например, в одной модели использования пользователь может быть врачом, которому требуется узнать, как определенная дозировка лекарственного средства влияет на пациента применительно к данной болезни. Соответственно, врач может выгрузить EMR пациента, болезненное состояние и дозировку лекарственного средства, и с помощью этих данных модуль ИИ может сформировать подходящий граф знаний (и/или добавить к уже существующему графу знаний), а на основании этого графа знаний можно выбрать граничные узлы и определить взаимосвязи. Кроме того, в различных случаях пользователь может выгрузить генетические данные пациента, которые могут быть подвергнуты вторичной обработке, а ее результаты, например, картированные, выровненные и/или подвергнутые определению вариантов результирующие данные, могут быть выгружены в модуль ИИ. В таком случае данные о болезни, и/или EMR, и/или семейного анамнеза могут быть коррелированы с геномными данными, на основании чего могут быть определены различные взаимосвязи, оценены логические выводы и сделаны прогнозы.[00968] For example, in one use model, the user may be a physician who wants to know how a certain dosage of a drug affects a patient for a given disease. Accordingly, the doctor can upload the patient's EMR, disease state and drug dosage, and with the help of this data, the AI module can generate a suitable knowledge graph (and/or add to an existing knowledge graph), and based on this knowledge graph, boundary nodes can be selected and identify relationships. In addition, in various cases, the user can upload the patient's genetic data, which can be subjected to secondary processing, and the results, such as mapped, aligned and/or variant-identified resulting data, can be uploaded to the AI module. In such a case, disease and/or EMR and/or family history data can be correlated with genomic data, from which various relationships can be determined, inferences assessed, and predictions made.

[00969] В частности, в систему можно ввести файл VCF субъекта, например, можно выгрузить все установленные хромосомные свойства, например, в виде группы узлов, и эти узлы могут быть использованы для определения различных взаимосвязей, имеющих отношение к субъекту, например, путем ввода запроса в систему и предоставления ей формирования соответствующих связей, из которых могут быть логически выведены ответы. Точнее говоря, в систему можно выгрузить одну или более фенотипических характеристик субъекта, например, онтологию фенотипа человека, чтобы сформировать еще одну группу узлов. Например, когда в систему вводят геномные и/или медицинские истории двух людей, модулем ИИ могут быть определены любые взаимосвязи между ними, например в отношении общих генотипов, фенотипов, условий, окружающей среды, географических положений, аллергий, этническо-культурного происхождения, лекарственных препаратов и т.п.[00969] In particular, a subject's VCF file can be entered into the system, for example, all identified chromosomal properties can be downloaded, for example, as a group of nodes, and these nodes can be used to define various relationships relevant to the subject, for example, by entering request to the system and allow it to form appropriate connections from which responses can be logically derived. More precisely, one or more phenotypic characteristics of a subject, for example, a human phenotype ontology, can be uploaded into the system to form another group of nodes. For example, when the genomic and/or medical histories of two people are entered into the system, any relationships between them can be determined by the AI module, for example in relation to common genotypes, phenotypes, conditions, environment, geographical locations, allergies, ethnic-cultural background, medications and so on.

[00970] Кроме того, могут быть определены взаимосвязи между двумя или более характеристиками субъекта. Например, система может определить взаимосвязь между систолическим и диастолическим кровяным давление субъекта. В частности, в систему можно ввести ряд прошлых показаний систолического и диастолического давления, на основании чего машиннообучаемая платформа системы может проанализировать эти показания и/или определить одну или более взаимосвязей между этими двумя давлениями, так что при вводе в систему данного систолического давления может быть выдано предполагаемое диастолическое давление с учетом предсказуемых соотношений между ними. Необходимо отметить, что хотя предыдущий пример приведен для кровяного давления одного субъекта, то же самое справедливо в отношении любых данных узлов, которые математически связаны друг с другом, например, в отношении множества субъектов и/или множества условий.[00970] In addition, relationships between two or more characteristics of a subject can be determined. For example, the system may determine the relationship between a subject's systolic and diastolic blood pressure. In particular, a series of historical systolic and diastolic pressure readings may be input into the system, from which the machine learning platform of the system may analyze those readings and/or determine one or more relationships between the two pressures, such that when a given systolic pressure is entered into the system, a expected diastolic pressure, taking into account predictable relationships between them. It should be noted that although the previous example is given for the blood pressure of a single subject, the same is true for any given nodes that are mathematically related to each other, for example, for multiple subjects and/or multiple conditions.

[00971] Кроме того, хотя в некоторых случаях взаимосвязи могут быть сконфигурированы в линейном массиве, например, с образованием нейронной сети информации, в различных других случаях взаимосвязи могут быть сформированы в виде множества стадий, таких как в протоколе глубокого обучения. Например, система ИИ может быть выполнена с возможностью послойной или многостадийной обработки информации, например, в целях глубокого обучения. Соответственно, система может быть выполнена с возможностью оценки данных на стадиях. В частности, модуль ИИ может быть выполнен таким образом, чтобы по мере исследования различных данных, например, при выполнении протокола обучения, стадия за стадией, каждая связи между данными система присваивала вес, например, на основе прошлых подтверждающих данных и/или характеристик взаимосвязей.[00971] Additionally, while in some cases the relationships may be configured in a linear array, such as forming a neural network of information, in various other cases the relationships may be formed in multiple stages, such as in a deep learning protocol. For example, an AI system may be designed to process information in layers or stages, such as for deep learning purposes. Accordingly, the system may be configured to evaluate data at stages. In particular, the AI module may be designed such that as it examines various data, such as running a learning protocol, stage by stage, each relationship between data is assigned a weight by the system, for example, based on past supporting data and/or characteristics of the relationships.

[00972] Чем больше стадий обучения инициировано в системе, тем лучше будет присвоение весов связям и глубже обучение. Кроме того, выгрузка данных на стадиях обеспечивает улучшение схождения данных в системе. В частности, можно также использовать различные парадигмы извлечения признаков, чтобы лучше организовывать, присваивать веса и анализировать наиболее характерные признаки данных, которые будут выгружены. Кроме того, чтобы лучше коррелировать данные, один или более пользователей могут вводить и/или модулировать основные функции взвешивания, хотя система сама может использовать более совершенную функцию взвешивания на основе протоколов активного обучения.[00972] The more stages of learning initiated in the system, the better the weighting of connections and the deeper the learning. In addition, uploading data at stages improves data convergence in the system. In particular, you can also use different feature extraction paradigms to better organize, weight, and analyze the most salient features of the data that will be dumped. Additionally, to better correlate data, one or more users may input and/or modulate basic weighting functions, although the system itself may employ more advanced weighting functions based on active learning protocols.

[00973] Для обеспечения взаимодействия с пользователем можно реализовать один или более аспектов или признаков объекта изобретения, описанных в настоящем документе, на компьютере, имеющем устройство отображения, такое как, например, электронно-лучевая трубка (ЭЛТ), жидкокристаллический дисплей (ЖКД) или монитор на светоизлучающих диодах (СИД), для отображения информации пользователю, и клавиатуру или указательное устройство, такое как, например, мышь или трекбол, с помощью которого пользователь может осуществлять ввод в компьютер. Для обеспечения взаимодействия с пользователем можно также использовать устройства других видов. Например, обратная связь с пользователем может быть любой формой сенсорной обратной связи, такой как, например, визуальная обратная связь, звуковая обратная связь или тактильная обратная связь; а ввод пользователя может приниматься в любой форме, включая, без ограничений, звуковой, речевой или тактильный ввод. В число других возможных устройств ввода входят, без ограничений, сенсорные экраны или другие сенсорные устройства, такие как одно- или многоточечные резистивные или емкостные сенсорные панели, аппаратное или программное обеспечение распознавания голоса, оптические сканеры, оптические указатели, устройства захвата цифровых изображений со связанным программным обеспечением для интерпретации и т.п.[00973] To provide user interaction, one or more aspects or features of the subject matter described herein may be implemented on a computer having a display device, such as, for example, a cathode ray tube (CRT), liquid crystal display (LCD), or a light-emitting diode (LED) monitor for displaying information to the user, and a keyboard or pointing device, such as a mouse or trackball, with which the user can make inputs into the computer. Other types of devices can also be used to provide user interaction. For example, the user feedback may be any form of sensory feedback, such as, for example, visual feedback, audio feedback, or haptic feedback; and user input may be received in any form, including, but not limited to, audio, speech, or tactile input. Other possible input devices include, but are not limited to, touch screens or other touch devices such as single or multi-point resistive or capacitive touch panels, voice recognition hardware or software, optical scanners, optical pointers, digital image capture devices with associated software provision for interpretation, etc.

[00974] Объект изобретения, описанный в настоящем документе, может быть реализован в системах, устройствах, способах и/или изделиях в зависимости от требуемой конфигурации. Реализации, указанные в вышеизложенном описании, представляют не все реализации, соответствующие объекту изобретения, описанному в настоящем документе. Напротив, это всего лишь некоторые примеры, соответствующие аспектам, связанным с описанным предметом изобретения. Хотя выше приведено подробное описание нескольких вариантов, возможны другие модификации и дополнения. В частности, описанные в настоящем документе признаки и/или варианты могут быть дополнены другими признаками и/или вариантами. Например, реализации, описанные выше, могут относиться к различным комбинациям и подкомбинациям описанных признаков и/или к комбинациям и подкомбинациям нескольких дополнительных признаков, описанных выше. Кроме того, логические потоки, изображенные на прилагаемых фигурах и/или описанные в настоящем документе, не обязательно требуют соблюдения конкретного показанного порядка или последовательного порядка для достижения требуемых результатов. Возможны другие реализации в объеме следующей формулы изобретения.[00974] The subject matter described herein may be implemented in systems, devices, methods and/or products depending on the desired configuration. The implementations set forth in the foregoing description do not represent all implementations consistent with the subject matter described herein. On the contrary, these are just some examples corresponding to aspects related to the described subject matter. Although several options are described in detail above, other modifications and additions are possible. In particular, the features and/or options described herein may be supplemented by other features and/or options. For example, the implementations described above may relate to various combinations and subcombinations of the described features and/or to combinations and subcombinations of several additional features described above. In addition, the logical flows depicted in the accompanying figures and/or described herein do not necessarily require adherence to the particular order shown or sequential order to achieve the desired results. Other implementations are possible within the scope of the following claims.

Claims (54)

1. Способ улучшения точности определения вариантов посредством совместной оценки ридов, которые картируют две или более области референсной последовательности, которые являются гомологичными, причём способ включает:1. A method for improving the accuracy of variant detection by jointly evaluating reads that map two or more regions of a reference sequence that are homologous, the method comprising: обращение посредством одного или более компьютеров к совместному скоплению множества ридов последовательности, причём совместное скопление содержит первое скопление ридов, выровненное с первой областью референсной последовательности, и по меньшей мере второе скопление ридов, выровненное со второй областью референсной последовательности, при этом первая область и вторая область гомологичны друг другу;accessing, by one or more computers, a shared collection of multiple sequence reads, wherein the shared collection comprises a first read collection aligned to a first region of a reference sequence, and at least a second collection of reads aligned to a second region of a reference sequence, wherein the first region and the second region homologous to each other; определение посредством одного или более компьютеров набора вариантов-кандидатов из совместного скопления, причем каждый вариант-кандидат в наборе вариантов-кандидатов соответствует варианту-кандидату между определением основания одного из указанного множества ридов последовательности и определением основания соответствующего местоположения референсной последовательности;determining, by one or more computers, a set of candidate variants from the joint population, each candidate variant in the set of candidate variants corresponding to a candidate variant between the determination of the base of one of said plurality of sequence reads and the determination of the base of a corresponding reference sequence location; установление посредством одного или более компьютеров порядка обработки вариантов-кандидатов;establishing, by one or more computers, an order for processing the candidate variants; оценку посредством одного или более компьютеров каждого варианта-кандидата из набора вариантов-кандидатов на основе установленного порядка обработки; иevaluating, by one or more computers, each candidate of the set of candidates based on the established processing order; And формирование посредством одного или более компьютеров и на основе оценки вариантов-кандидатов файла определения вариантов, идентифицирующего один или более вариантов-кандидатов.generating, by one or more computers and based on the evaluation of the candidate variants, a variant definition file identifying the one or more candidate variants. 2. Способ по п. 1, также включающий2. The method according to claim 1, also including получение множества гомологичных областей референсной последовательности от одного или более запоминающих устройств.obtaining a plurality of homologous reference sequence regions from one or more storage devices. 3. Способ по п. 1, согласно которому определение набора вариантов-кандидатов с использованием совместного скопления включает3. The method according to claim 1, according to which determining a set of candidate variants using a joint cluster includes использование графа де Брёйна для выделения вариантов-кандидатов из совместного скопления.using the de Bruijn graph to identify candidate variants from a joint population. 4. Способ по п. 3, согласно которому узлы в указанном графе представляют список кандидатов,4. The method according to claim 3, according to which the nodes in the specified graph represent a list of candidates, причём использование графа де Брёйна включает формирование графа де Брёйна с использованием каждой области указанной референсной последовательности в качестве остова и выравнивание каждой позиции варианта-кандидата по универсальным координатам.wherein the use of the de Bruijn graph involves the formation of a de Bruijn graph using each region of the specified reference sequence as a skeleton and aligning each position of the candidate variant to universal coordinates. 5. Способ по п. 1, согласно которому установление посредством одного или более компьютеров порядка обработки вариантов-кандидатов включает5. The method of claim 1, wherein establishing, by one or more computers, an order in which candidate variants are processed includes установление посредством одного или более компьютеров порядка обработки вариантов-кандидатов как функции длины рида или размера инсерции.establishing, by one or more computers, the order in which candidate variants are processed as a function of read length or insertion size. 6. Способ по п. 5, согласно которому установление порядка обработки вариантов-кандидатов как функции длины рида или размера инсерции включает6. The method according to claim 5, according to which establishing the order of processing candidate variants as a function of the read length or insertion size includes формирование матрицы связности, устанавливающей порядок обработки вариантов-кандидатов как функции длины рида и размера инсерции.formation of a connectivity matrix that establishes the order of processing candidate variants as a function of the read length and insertion size. 7. Способ по п. 1, согласно которому оценка посредством одного или более компьютеров каждого варианта-кандидата из набора вариантов-кандидатов на основе установленного порядка обработки включает:7. The method of claim 1, wherein the evaluation by one or more computers of each candidate from the set of candidates based on a specified processing order includes: для каждого варианта-кандидата из набора вариантов-кандидатов: формирование совместных диплотипов-кандидатов, расчет апостериорной вероятности каждого совместного диплотипа,for each candidate option from a set of candidate options: formation of joint candidate diplotypes, calculation of the posterior probability of each joint diplotype, вычисление матрицы генотипа, обрезание совместных диплотипов-кандидатов и включение следующей активной позиции в качестве подтверждающих данных для текущей позиции.computing the genotype matrix, pruning joint candidate diplotypes, and including the next active position as supporting data for the current position. 8. Система для улучшения точности определения вариантов посредством совместной оценки ридов, которые картируют две или более области референсной последовательности, которые являются гомологичными, причём система содержит8. A system for improving the accuracy of variant detection by jointly evaluating reads that map two or more regions of a reference sequence that are homologous, wherein the system contains один или более компьютеров и одно или более устройств хранения, хранящих инструкции, выполненные с возможностью инициирования, при выполнении одним или более компьютерами, выполнения одним или более компьютерами операций, включающих:one or more computers and one or more storage devices storing instructions configured to cause, when executed by one or more computers, the performance of one or more computers operations, including: обращение посредством одного или более компьютеров к совместному скоплению множества ридов последовательности, причём совместное скопление содержит первое скопление ридов, выровненное с первой областью референсной последовательности, и по меньшей мере второе скопление ридов, выровненное со второй областью референсной последовательности, при этом первая область и вторая область гомологичны друг другу;accessing, by one or more computers, a shared collection of multiple reads of a sequence, wherein the shared collection comprises a first collection of reads aligned to a first region of a reference sequence, and at least a second collection of reads aligned to a second region of a reference sequence, wherein the first region and the second region homologous to each other; определение посредством одного или более компьютеров набора вариантов-кандидатов из совместного скопления, причем каждый вариант-кандидат в наборе вариантов-кандидатов соответствует варианту-кандидату между определением основания одного из указанного множества ридов последовательности и определением основания соответствующего местоположения референсной последовательности;determining, by one or more computers, a set of candidate variants from the joint population, each candidate variant in the set of candidate variants corresponding to a candidate variant between the determination of the base of one of said plurality of sequence reads and the determination of the base of a corresponding reference sequence location; установление посредством одного или более компьютеров порядка обработки вариантов-кандидатов;establishing, by one or more computers, an order in which the candidate variants are processed; оценку посредством одного или более компьютеров каждого варианта-кандидата из набора вариантов-кандидатов на основе установленного порядка обработки; иevaluating, by one or more computers, each candidate of the set of candidates based on the established processing order; And формирование посредством одного или более компьютеров и на основе оценки вариантов-кандидатов файла определения вариантов, идентифицирующего один или более вариантов-кандидатов.generating, by one or more computers and based on the evaluation of the candidate variants, a variant definition file identifying the one or more candidate variants. 9. Система по п. 8, в которой операции также включают9. The system according to claim 8, in which the operations also include получение множества гомологичных областей референсной последовательности от одного или более запоминающих устройств.obtaining a plurality of homologous reference sequence regions from one or more storage devices. 10. Система по п. 8, в которой определение набора вариантов-кандидатов с использованием совместного скопления включает10. The system of claim 8, wherein determining a set of candidate variants using the joint aggregation includes использование графа де Брёйна для выделения вариантов-кандидатов из совместного скопления.using the de Bruijn graph to identify candidate variants from a joint population. 11. Система по п. 10, в которой узлы в указанном графе представляют список кандидатов, причём использование графа де Брёйна включает формирование графа де Брёйна с использованием каждой области указанной референсной последовательности в качестве остова и выравнивание каждой позиции варианта-кандидата по универсальным координатам.11. The system of claim 10, wherein the nodes in said graph represent a list of candidates, wherein the use of the de Bruijn graph involves forming a de Bruijn graph using each region of the specified reference sequence as a skeleton and aligning each position of the candidate candidate to universal coordinates. 12. Система по п. 8, в которой установление посредством одного или более компьютеров порядка обработки вариантов-кандидатов включает12. The system of claim 8, wherein establishing, by one or more computers, an order in which candidate variants are processed includes установление посредством одного или более компьютеров порядка обработки вариантов-кандидатов как функции длины рида или размера инсерции.establishing, by one or more computers, the order in which candidate variants are processed as a function of read length or insertion size. 13. Система по п. 12, в которой установление порядка обработки вариантов-кандидатов как функции длины рида или размера инсерции включает13. The system of claim 12, wherein establishing the processing order of candidate variants as a function of read length or insertion size includes формирование матрицы связности, устанавливающей порядок обработки вариантов-кандидатов как функции длины рида и размера инсерции.formation of a connectivity matrix that establishes the order of processing candidate variants as a function of the read length and insertion size. 14. Система по п. 8, в которой оценка посредством одного или более компьютеров каждого варианта-кандидата из набора вариантов-кандидатов на основе установленного порядка обработки включает:14. The system of claim 8, wherein the evaluation by one or more computers of each candidate of the set of candidates based on the established processing order includes: для каждого варианта-кандидата из набора вариантов-кандидатов: формирование совместных диплотипов-кандидатов, расчет апостериорной вероятности каждого совместного диплотипа,for each candidate option from a set of candidate options: formation of joint candidate diplotypes, calculation of the posterior probability of each joint diplotype, вычисление матрицы генотипа, обрезание совместных диплотипов-кандидатов и включение следующей активной позиции в качестве подтверждающих данных для текущей позиции.computing the genotype matrix, pruning joint candidate diplotypes, and including the next active position as supporting data for the current position. 15. Машиночитаемое устройство хранения, на котором сохранены инструкции, которые, при выполнении устройством обработки данных, инициируют выполнение устройством обработки данных операций для улучшения точности определения вариантов посредством совместной оценки ридов, которые картируют две или более области референсной последовательности, которые являются гомологичными, причём операции включают:15. A machine-readable storage device storing instructions that, when executed by a processing device, cause the processing device to perform operations to improve the accuracy of variant detection by jointly evaluating reads that map two or more regions of a reference sequence that are homologous, wherein the operations include: обращение посредством одного или более компьютеров к совместному скоплению множества ридов последовательности, причём совместное скопление содержит первое скопление ридов, выровненное с первой областью референсной последовательности, и по меньшей мере второе скопление ридов, выровненное со второй областью референсной последовательности, при этом первая область и вторая область гомологичны друг другу;accessing, by one or more computers, a shared collection of multiple sequence reads, wherein the shared collection comprises a first read collection aligned to a first region of a reference sequence, and at least a second collection of reads aligned to a second region of a reference sequence, wherein the first region and the second region homologous to each other; определение посредством одного или более компьютеров набора вариантов-кандидатов из совместного скопления, причем каждый вариант-кандидат в наборе вариантов-кандидатов соответствует варианту-кандидату между определением основания одного из указанного множества ридов последовательности и определением основания соответствующего местоположения референсной последовательности;determining, by one or more computers, a set of candidate variants from the joint population, each candidate variant in the set of candidate variants corresponding to a candidate variant between the determination of the base of one of said plurality of sequence reads and the determination of the base of a corresponding reference sequence location; установление посредством одного или более компьютеров порядка обработки вариантов-кандидатов;establishing, by one or more computers, an order in which the candidate variants are processed; оценку посредством одного или более компьютеров каждого варианта-кандидата из набора вариантов-кандидатов на основе установленного порядка обработки; иevaluating, by one or more computers, each candidate of the set of candidates based on the established processing order; And формирование посредством одного или более компьютеров и на основе оценки вариантов-кандидатов файла определения вариантов, идентифицирующего один или более вариантов-кандидатов.generating, by one or more computers and based on the evaluation of the candidate variants, a variant definition file identifying the one or more candidate variants. 16. Машиночитаемое устройство хранения по п. 15, в котором операции также включают16. The machine-readable storage device of claim 15, wherein the operations further include получение множества гомологичных областей референсной последовательности от одного или более запоминающих устройств.obtaining a plurality of homologous reference sequence regions from one or more storage devices. 17. Машиночитаемое устройство хранения по п. 15, в котором определение набора вариантов-кандидатов с использованием совместного скопления включает17. The computer-readable storage device of claim 15, wherein determining a set of candidate candidates using the co-aggregation includes использование графа де Брёйна для выделения вариантов-кандидатов из совместного скопления.using the de Bruijn graph to identify candidate variants from a joint population. 18. Машиночитаемое устройство хранения по п. 17, в котором узлы в указанном графе представляют список кандидатов, причём использование графа де Брёйна включает формирование графа де Брёйна с использованием каждой области указанной референсной последовательности в качестве остова и выравнивание каждой позиции варианта-кандидата по универсальным координатам.18. The machine-readable storage device of claim 17, wherein the nodes in said graph represent a list of candidates, wherein using the de Bruijn graph includes generating a de Bruijn graph using each region of said reference sequence as a backbone and aligning each position of the candidate candidate to universal coordinates . 19. Машиночитаемое устройство хранения по п. 15, в котором установление посредством одного или более компьютеров порядка обработки вариантов-кандидатов включает19. The computer-readable storage device of claim 15, wherein establishing, by the one or more computers, an order of processing the candidate variants includes формирование матрицы связности, устанавливающей порядок обработки вариантов-кандидатов как функции длины рида и размера инсерции.formation of a connectivity matrix that establishes the order of processing candidate variants as a function of the read length and insertion size. 20. Машиночитаемое устройство хранения по п. 15, в котором оценка посредством одного или более компьютеров каждого варианта-кандидата из набора вариантов-кандидатов на основе установленного порядка обработки включает:20. The computer-readable storage device of claim 15, wherein the evaluation by the one or more computers of each candidate of the set of candidates based on the established processing order comprises: для каждого варианта-кандидата из набора вариантов-кандидатов: формирование совместных диплотипов-кандидатов, расчет апостериорной вероятности каждого совместного диплотипа,for each candidate option from a set of candidate options: formation of joint candidate diplotypes, calculation of the posterior probability of each joint diplotype, вычисление матрицы генотипа, обрезание совместных диплотипов-кандидатов и включение следующей активной позиции в качестве подтверждающих данных для текущей позиции.computing the genotype matrix, pruning joint candidate diplotypes, and including the next active position as supporting data for the current position.
RU2021118824A 2016-06-07 2017-06-07 Bioinformation systems, devices and methods for secondary and/or tertiary processing RU2799750C9 (en)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US201662347080P 2016-06-07 2016-06-07
US62/347,080 2016-06-07
US201662399582P 2016-09-26 2016-09-26
US62/399,582 2016-09-26
US201662414637P 2016-10-28 2016-10-28
US62/414,637 2016-10-28
US15/404,146 US10847251B2 (en) 2013-01-17 2017-01-11 Genomic infrastructure for on-site or cloud-based DNA and RNA processing and analysis
US15/404,146 2017-01-11
US201762462869P 2017-02-23 2017-02-23
US62/462,869 2017-02-23
US201762469442P 2017-03-09 2017-03-09
US62/469,442 2017-03-09
US15/497,149 US10068183B1 (en) 2017-02-23 2017-04-25 Bioinformatics systems, apparatuses, and methods executed on a quantum processing platform
US15/497,149 2017-04-25

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2018140888A Division RU2750706C2 (en) 2016-06-07 2017-06-07 Bioinformatic systems, devices and methods for performing secondary and/or tertiary processing

Publications (3)

Publication Number Publication Date
RU2021118824A RU2021118824A (en) 2021-11-12
RU2799750C2 RU2799750C2 (en) 2023-07-11
RU2799750C9 true RU2799750C9 (en) 2023-09-07

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2282242C2 (en) * 2000-12-08 2006-08-20 Лэндмарк Графикс Корпорейшн Method for evening out a grid of nodes in accordance to characteristic features in digital image
US9322872B2 (en) * 2010-06-01 2016-04-26 The United States Of America As Represented By The Secretary Of The Navy Correlated testing system
AU2014335877A1 (en) * 2013-10-15 2016-05-05 Regeneron Pharmaceuticals, Inc. High resolution allele identification

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2282242C2 (en) * 2000-12-08 2006-08-20 Лэндмарк Графикс Корпорейшн Method for evening out a grid of nodes in accordance to characteristic features in digital image
US9322872B2 (en) * 2010-06-01 2016-04-26 The United States Of America As Represented By The Secretary Of The Navy Correlated testing system
AU2014335877A1 (en) * 2013-10-15 2016-05-05 Regeneron Pharmaceuticals, Inc. High resolution allele identification

Similar Documents

Publication Publication Date Title
AU2022252718B2 (en) Bioinformatics systems, apparatus, and methods for performing secondary and/or tertiary processing
AU2022218629B2 (en) Bioinformatics Systems, Apparatuses, And Methods For Performing Secondary And/or Tertiary Processing
US20210257052A1 (en) Bioinformatics Systems, Apparatuses, and Methods for Performing Secondary and/or Tertiary Processing
US10068183B1 (en) Bioinformatics systems, apparatuses, and methods executed on a quantum processing platform
WO2017214320A1 (en) Bioinformatics systems, apparatus, and methods for performing secondary and/or tertiary processing
RU2799750C9 (en) Bioinformation systems, devices and methods for secondary and/or tertiary processing
RU2799750C2 (en) Bioinformation systems, devices and methods for secondary and/or tertiary processing
NZ789147A (en) Bioinformatics systems, apparatus, and methods for performing secondary and/or tertiary processing
NZ789137A (en) Bioinformatics systems, apparatus, and methods for performing secondary and/or tertiary processing
NZ789149A (en) Bioinformatics systems, apparatuses, and methods for performing secondary and/or tertiary processing