CN114974426A - 用于现场或基于云的dna和rna处理和分析的基因组学基础架构 - Google Patents

用于现场或基于云的dna和rna处理和分析的基因组学基础架构 Download PDF

Info

Publication number
CN114974426A
CN114974426A CN202210534739.5A CN202210534739A CN114974426A CN 114974426 A CN114974426 A CN 114974426A CN 202210534739 A CN202210534739 A CN 202210534739A CN 114974426 A CN114974426 A CN 114974426A
Authority
CN
China
Prior art keywords
user
data
genomic
processing pipeline
read
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
CN202210534739.5A
Other languages
English (en)
Inventor
彼得·范罗文
罗伯特·J·麦克米伦
迈克尔·吕勒
拉米·米尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Edico Genome Corp
Original Assignee
Edico Genome Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Edico Genome Corp filed Critical Edico Genome Corp
Publication of CN114974426A publication Critical patent/CN114974426A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B20/00ICT specially adapted for functional genomics or proteomics, e.g. genotype-phenotype associations
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B30/00ICT specially adapted for sequence analysis involving nucleotides or amino acids
    • G16B30/10Sequence alignment; Homology search
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B30/00ICT specially adapted for sequence analysis involving nucleotides or amino acids
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • G16B50/10Ontologies; Annotations
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • G16B50/30Data warehousing; Computing architectures
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • G16B50/50Compression of genetic data
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02ATECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
    • Y02A90/00Technologies having an indirect contribution to adaptation to climate change
    • Y02A90/10Information and communication technologies [ICT] supporting adaptation to climate change, e.g. for weather forecasting or climate simulation

Landscapes

  • Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Biotechnology (AREA)
  • Evolutionary Biology (AREA)
  • Medical Informatics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Chemical & Material Sciences (AREA)
  • Analytical Chemistry (AREA)
  • Genetics & Genomics (AREA)
  • Molecular Biology (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Apparatus Associated With Microorganisms And Enzymes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Peptides Or Proteins (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Investigating Or Analysing Biological Materials (AREA)

Abstract

用于对基因序列数据执行序列分析管道的***、方法和设备,包括集成电路,该集成电路由一组硬连线数字逻辑电路形成,该硬连线数字逻辑电路通过多个物理电气互连进行互连。其中一个物理电气互连形成与电子数据源连接的该集成电路的输入,用于接受基因组数据read。该硬连线数字逻辑电路被布置为一组处理引擎,每个处理引擎由硬连线数字逻辑电路的子集形成,以对基因组数据read执行序列分析管道中的一个或多个步骤。硬连线数字逻辑电路的每个子集为有线配置,执行序列分析管道中的一个或多个步骤。

Description

用于现场或基于云的DNA和RNA处理和分析的基因组学基础 架构
相关申请
本申请是申请号为201780006359.1,发明名称为《用于现场或基于云的DNA和RNA处理和分析的基因组学基础架构》的中国申请的分案申请,该申请的申请日为2017年1月11日,其要求了US专利局的申请日2016年1月11日为优先权日。
技术领域
本公开描述的主题涉及生物信息学,并且更具体地涉及用于实现生物信息学方案的***、设备和方法,例如执行用于分析集成电路(例如硬件处理平台)上的基因组数据的一个或多个函数。
背景技术
医疗保健研究人员以及从业医生的目标是提升和改善每位患者的健康护理的安全性,质量以及有效性。个性化的健康护理则是指在每位患者身上实现这些目标。例如,“基因组学”和/或“生物信息学”就是关注于提升个体层面上预防性和治疗性治疗的安全性,质量和有效性的研究领域。因此,通过运用基因组学和/或生物信息学技术,可以确定每个个体的基因组成,例如男性或者女性的基因,并且这些信息可以被用于开发治疗和/或预防方案,包括药物治疗,为个人提供定制化服务从而使得药物可以满足每个人的需求。
提供个体定制化护理是为了改变当今的医疗保健***。医疗保健***的这种转变很可能由在医学科学和信息技术的交叉领域产生的突破性的创新所推动,例如基因组学和生物信息学领域。因此,基因组学和生物信息技术学是这一未来建设的关键基础。自2000年在总成本超过1亿美元的第一个人类基因全面测序以来,科学发展迅猛。如今,我们每个基因组高分辨测序成本将近不到1千美元,这使得让它首次脱离实验室研究并投入到广泛的医疗护理的运用,在经济上变得可行。因此,基因组数据可能成为诊断观察,治疗和/或预防性药物发现,和/或疾病治疗的重要依据。
更详细来说,基因组学和生物信息技术学是涉及将信息技术和计算机科学应用于分子生物学的领域。具体来说,生物信息技术可以被用来处理分析各种基因组数据,例如来自一个个体的数据以便确定该数据的定性的和定量的信息,这些数据又可被各种从业医生用于开发预防和治疗手段来去预防或至少改善疾病状态,从而来提升个人健康护理的安全性、质量、有效性。
因为关注于推进个性化健康护理,生物信息学促进了种主动的而不是被动的个人定制化健康护理,并且这使得患者有更多的机会掌控他们自己的身体健康。通常,这可由两个指导原则来实现。首先,可以通过联邦政府的权力来支持研究以解决疾病和疾病预防的这些个别方面,例如以形成定制化诊断和预防护理来满足每个个体的独特基因特征为最终目标。此外,可以搭建一个“网中网”来汇总医疗护理数据,以帮助研究人员建立模式并确定现有疾病的基因“定义”。
在这种情况下运用生物信息学技术的一个优点是分子生物学数据的定性和/或定量分析可以在一个更广范围的样品组上,更快速和更准确的执行,从而促进个性化的健康护理***。
因此在各种情况下,基于生物信息学的平台中处理过的分子数据通常涉及到基因组数据,比如脱氧核糖核酸(DNA)和/或核糖核酸(RNA)数据。举例来说,众所周知用于生成DNA和/或RNA数据的方法会涉及到DNA/RNA测序。为了确定一个个体的遗传物质样品的基因组成,DNA/RNA测序可以在实验室手动进行,又或者可以通过自动测序仪,如核心测序设施。然后个人的基因信息可以被用来与参考对象进行比较,如参考序列,单体型或理论单体型,从而确定其中的变异。然后这种变异信息可以被进一步处理和用来确定或预测个体中病态状态的发生。
例如,可以运用手动或者自动匹配的DNA/RNA测序来确定样本中的核苷酸碱基序列,比如从实验对象中获得的样本。通过使用各种不同的生物信息学技术,这些序列可以组合在一起产生实验对象的基因组序列。然后这些序列又可以被确定实验对象基因组序列和参考序列的差异。这种过程会涉及到确定样本序列的变异,并且对生物信息学方法提出了核心挑战。
比如说,DNA测序中的核心挑战是从遗传物质样本中构建全长基因序列,例如染色体序列,此样本可以与参考基因序列进行比较从而确定所采样的全长基因序列的变异。具体而言,测序方案中运用的方法不产生样品DNA的全长染色体序列。
然而,序列片段的通常长度有100-1000个核苷酸,而且并没有指示出其所在的基因组中的排列位置。因此,为了生成全长染色体基因组的结构,这些DNA序列片段需要被映射、比对、合并和/或与参考基因组序列比较。通过这样的过程,由参考基因序列比较来的样本基因序列的变异才可以被确定。
但是,人类的基因组由大约31亿个碱基组成,并且每个序列片段的长度通常为100到500个核苷酸,因此构建这种全长基因组序列和确定其中的变异需要花费大量的时间和尽力,并且通常需要几种不同长时间算法的电脑资源。
在特定的情况下,上千上百万个DNA序列片段被生成、比对,和合并来形成一个接近染色体长度的基因序列。该过程中的一个步骤可能包括将DNA片段参考序列比较从而确定其在基因组中的位置。
在构建染色体长度序列和确定样本序列中的变异中包含了许多类似的步骤。因此,许多执行这些步骤的方法已经被开发。比如,有运用软件实现执行一个或者多个生物信息***的步骤。然而,这种基于生物信息方法和***的软件的特点是需要大量的劳动力,时间来在通用处理器上执行,并且容易出错。
因此,要求更少劳动力和/或有更高准确度的集中处理方法的软件来执行算法的生物信息学***会变得很有效。然而,即使我们接近了“1000美元成本基因组”,研究,分享这些原始数字数据的成本也远远超出了生产成本。这种数据分析的瓶颈正是逐渐增长的原始数据以及我们寻求的真正医学见解之间的关键障碍。
因此,本文呈现了实施基因组学和/或生物信息学方案的***,装置和方法,例如执行分析基因组数据的一个或多个函数,比如经由软件执行和/或在集成电路上,比如在硬件处理平台上。举例说,如下所述,在各种实施方案中,可以采用软件实施和/或硬件加速器解决法的组合,诸如包括用于与其交互的集成电路和软件,来执行这类生物信息技术学的相关任务,其中集成电路可以由硬连线数字逻辑电路形成,该硬连线数字逻辑电路通过多个物理电气互连进行互连,可以被排列为一组处理引擎,其中每个处理引擎可以执行生物信息遗传分析方案的一个或多个步骤。这种安排的优点则是生物信息学的相关任务可以比单独的软件,比如通常用于执行这样任务的软件,以更快的方式来执行。然而,目前这种硬件加速器技术通常不用于基因组学和/或生物信息学领域。
发明内容
本公开涉及执行例如生物信息学方案中的任务。在各种情况下,执行多个任务,并且在一些情况下,执行这些任务以形成管道,其中每个任务和/或其已完成部分为每个后续任务的基础构件,直到期望的最终结果得以实现。因此,在各种实施例中,本公开涉及在一个或多个设备上执行一个或多个方法,其中该设备已经对用于执行那些方法进行了优化。在某些实施例中,一个或多个方法和/或一个或多个设备被配置成一个或多个***。
例如,在某些方面,本公开涉及用于实现基因组和/或生物信息学方案的***、设备和方法,例如在各种情况下用于执行一个或多个函数以通过采用创新软件和/或在集成电路上(例如在软件和/或硬件处理平台的组合中实现的)生成和/或分析基因数据的***、设备和方法。例如,在一个方面,本公开提供了基因组学和/或生物信息学***。该***可以涉及执行各种生物分析生产和/或分析函数,这些函数经过优化以便更快和/或以更高的准确性执行。执行这些函数的方法可以用软件或硬件解决方案来实现。因此,在某些情况下,本公开提出了方法,其中该方法涉及数据生成和/或采集和/或分析,该数据生成和/或采集和/或分析可以包括执行一种或多种算法,其中该算法已经根据其实施方式(例如在软件、硬件或两者的组合中)进行了优化。特别地,在算法在软件解决方案中实现的情况下,可以优化算法和/或其运算过程,以便该介质更快和/或以更高的准确性执行。类似地,在算法的函数在硬件解决方案中实现的情况下,硬件被设计为以优化的方式执行这些函数和/或其运算过程,以便该介质更快和/或以更高的准确性执行。此外,在函数涉及软件和/或硬件解决方案的组合的情况下,这些函数及其运算过程被设计和配置为无缝地一起工作以实现迄今为止无法达到的速度,同时保持或提高准确性。
因此,在一个方面,本文提出用于实现生物信息学方案的***、设备和方法,例如用于执行一个或多个函数以生成和/或分析基因数据的***、设备和方法,例如经由一个或多个开发和/或优化的算法和/或在一个或多个优化的集成电路(例如在一个或多个硬件处理平台上)上实现。因此,在一个实施例中,本公开提供了用于实现一个或多个算法的方法,该算法用于执行在基因组学和/或生物信息学方案中生成和/或分析基因组数据的一个或多个步骤。在另一个实施例中,本公开提供了用于实现一个或多个算法的函数的方法,该算法用于执行在生物信息学方案中分析基因组数据的一个或多个步骤,其中该函数至少部分地在集成电路(例如由一个或多个硬连线数字逻辑电路形成的集成电路)上实现。在这样的情况下,该硬连线数字逻辑电路可以互连,例如通过一个或多个物理电气互连来进行互连,并且可以被配置为用作一个或多个处理引擎。在各种情况下,本公开提供多个硬连线数字逻辑电路,该硬连线数字逻辑电路被配置为一组处理引擎,其中每个处理引擎能够执行生物信息基因分析方案(例如生物信息处理管道)中的一个或多个步骤。
更具体地,在一个实施例中,本公开提供了一种***、装置和方法,用于生成基因序列数据(例如包括用于核酸测序),和/或用于该基因序列数据执行序列分析管道。该***可以包括一个或多个电子数据源(例如与本文所述的DNA/RNA测序装置相关联的电子数据源)、存储器和/或集成电路。例如,在一个实施例中,包括电子数据源,其中可以配置电子数据源用于生成和/或提供一个或多个数字信号,例如代表一个或多个基因组数据读长(read)的数字信号(例如其中每个基因组数据read都包括一个核苷酸序列)。此外,可以配置存储器用于存储一个或多个基因参考序列,并且还可以用于存储索引(index),例如一个或多个基因参考序列和/或经注释的剪接点数据的索引。
此外,本公开提供了用于生成基因序列数据的装置和/或方法。例如DNA/RNA分析方法,例如用于基因诊断和/或测序的方法,涉及核酸杂交、检测和/或测序反应中的一项或多项。在各种情况下,该方法可以包括杂交和/或检测装置和/或程序,用于实现以下一个或多个步骤。特别地,对于基因分析,可以将待分析的受试RNA或DNA样本分离和固定(例如直接和/或间接地)在基底上,例如该基底含有化学敏感的一维(1D)和/或二维(2D)反应层(例如石墨烯反应层)和/或三维(3D)反应层,以及已知或待检测的基因序列的探针(例如疾病标记物)可以在基底上洗涤,反之亦然。在各种情况下,可以标记一个或多个受试RNA或DNA样本和/或探针。
在其他情况下,例如基底包括1D或2D(例如石墨烯)反应层和/或其它化学敏感反应层的情况下,标签或探针(例如化学或放射性标签)可以不是必需的和/或包括在内。在任一情况下,如果存在疾病标记物,将发生结合事件,例如杂交,并且由于可经由例如标记的分析物或探针和/或适当配置的反应层检测到杂交事件,因此疾病标记物的存在可被检测到。如果不存在疾病标记物,则不会有反应,因此不会检测到。当然,在某些情况下,没有结合事件可能是指示性事件。因此,可以配置***为可以检测或不检测杂交事件,从而指示受试样本中存在或不存在疾病标记物。
同样,对于DNA和/或RNA测序,首先将待测的未知核酸序列(例如受试DNA或RNA的单链序列)分离、扩增并且固定在基底上,如本文所述,基底可以包括1D、2D(例如石墨烯层)、3D或其他在其上配置的反应层。接下来,在聚合酶的存在下,将可以用可识别标签进行标记的已知核酸(例如核苷酸碱基)与未知核酸序列接触。如上所述,当反应事件发生在适当配置的反应层(例如含石墨烯的反应层)附近时,不需要包含被标记的反应物。
因此,当发生杂交时,核酸与其未知序列中的互补碱基结合,例如被测序的样本DNA或RNA,并固定在基底表面上,例如靠近反应层。然后结合事件会被检测到,例如光检测、电检测,和/或通过在反应层处发生的适当的可检测的反应来检测。然后重复这些步骤直到完整的DNA或RNA样本测序完全。通常,如本领域已知的那样,通过测序仪(Next GenSequencer)执行这些步骤,或者可以根据本文所述的装置和方法执行这些步骤,从而可以同时执行和/或处理数千至数百万的测序反应,并且作为其结果产生的数字数据可以通过结合本文公开的创新测序装置和过程(例如在多路复用生物信息处理管道中)来进行分析。
例如,在一个方面,例如关于本文提出的创新测序装置,可以提供适当配置的测序平台作为包含化学反应层的场效应晶体管(FET),例如用于执行杂交和/或测序反应。特别地,这样的场效应晶体管(FET)可以被制造在例如晶片(例如硅晶片)的主结构上。在各种情况下,主结构可以包括一个或多个附加结构,例如堆叠结构,例如绝缘体材料层。例如,绝缘体材料可以被包括在硅晶片主结构的顶部上,并且可以是无机材料,例如硅氧化物(例如二氧化硅),或氮化硅,或者有机材料,例如聚酰亚胺、BCB或其他类似材料。
主结构和/或绝缘体层可以包括含有一个或多个导电源极和/或导电漏极的附加结构,例如彼此隔空分开,并且嵌入主结构和/或绝缘体材料层,和/或可以与绝缘体的顶部和/或底部表面成平面,以形成顶部和/或底部栅极。在各种情况下,该结构(例如硅晶片结构)可以进一步包含集成电路或者另外与集成电路(例如处理器(例如微处理器))相关联,用于处理生成的数据,例如传感器导出的数据,例如作为测序反应的结果而得出的数据,例如栅极区域附近。因此,多个结构可以被配置为集成电路或者另外包括集成电路,和/或可以作为ASIC、结构化ASIC或FPGA而存在。
特别地,这些结构可以被配置为互补金属氧化物半导体(CMOS),互补金属氧化物半导体(CMOS)又可以被配置为化学敏感的FET传感器,其包含一个或多个导电源极、导电漏极和/或反应区域,例如栅极区域,其本身可以包括微米或纳米的沟道、腔室和/或阱配置,该传感器可以适合于与处理器通信。例如,FET可以包括CMOS配置,其具有集成电路或另外与集成电路相关联,该集成电路在硅晶片上制造,其还包括绝缘体层,该绝缘体层包括嵌入在绝缘体层中的导电源极和导电漏极,其源极和漏极可以由金属构成,例如金属镶嵌铜(damascene copper)。在各种情况下,CMOS和相关结构可以包括表面(例如顶表面),该表面可以包括沟道和/或腔室以形成反应阱,其中反应阱的表面可以被配置为从导电源极延伸到导电漏极,并适于接收有助于执行生物化学反应(例如DNA或RNA杂交和/或测序反应)的各种试剂。
在某些情况下,表面和/或沟道和/或腔室可以包括一维晶体管材料、二维晶体管材料、三维晶体管材料等。在各种情况下,可以包括一维(1D)晶体管材料,该一维材料可以由碳纳米管或半导体纳米线组成,其在各种情况下可以形成为薄片或通道,和/或在各种实施例中可以包括纳米孔,尽管在许多情况下,纳米孔不被包括也不是必要的。在各种情况下,可以包括二维(2D)晶体管材料,该2D材料可以包括石墨烯层、硅烯、二硫化钼、黑磷和/或金属二硫化物。也可以存在三维(3D)配置。在各种情况下,表面和/或沟道可以包括电介质层。另外,在各种情况下,反应层(例如氧化物层)可以布置在表面上和/或沟道和/或腔室内,例如以层状或沉积在1D、2D(例如石墨烯),或者3D层上。这种氧化物层可以是氧化铝或硅氧化物,例如二氧化硅。在各种情况下,可以在表面和/或沟道上和/或腔室内设置钝化层,例如以层状或沉积在1D、2D(例如石墨烯)或3D层上,和/或在表面和/或沟道和/或腔室上的相关反应层上。
在特定情况下,可以制造或配置主结构和/或二级结构和/或三级结构,以便在表面中和/或表面上包括腔室或阱结构,例如,以某些方式形成反应区域。例如,阱结构可以位于主结构和/或二级结构和/或三级结构的表面的一部分上,例如外表面上。在一些情况下,阱结构可以被配置为微米或纳米腔室,并且可以形成在或者包括在1D、2D(例如,石墨烯)和/或3D材料的至少一部分的顶部上,和/或可以另外包括反应层,例如氧化物层,和/或钝化层。在各种情况下,腔室和/或阱结构可以限定开口,例如允许进入腔室内部的开口,例如允许与1D(例如,碳纳米管或纳米线)、2D(例如,石墨烯)或3D表面和/或沟道和/或腔室的直接接触。在特定情况下,腔室和/或阱的尺寸可以设计为微米或纳米腔室。
因此,本公开的另一方面是生物传感器,例如用于执行核酸测序反应。生物传感器包括CMOS结构,其可以被配置为化学敏感的FET传感器并且可以包括含金属的源极和漏极,例如金属镶嵌铜源极和/或漏极,其还包括表面,例如反应区域,该反应区域包括1D或2D层状(例如石墨烯层状)或3D表面,其从源极延伸到漏极。特别地,反应区域可以包括或配置为阱或腔室结构,其可以位于1D或2D层状阱的外表面的一部分上。在这种情况下,阱结构可以被配置为限定允许与纳米管、纳米线和/或石墨烯阱或腔室表面直接接触的开口。在各种情况下,氧化物层和/或钝化层可以布置在腔室中或表面上。因此,在某些情况下,可以提供化学敏感的晶体管,例如包括一个或多个纳米或微米阱用于执行测序反应的场效应晶体管(FET)。
在一些实施例中,化学敏感场效应晶体管可以包括多个阱并且可以被配置为阵列,例如传感器阵列。可以采用一个或多个这种阵列来检测多种化学和/或生物学过程中各种类型分析物的存在和/或浓度变化,包括DNA和/或RNA杂交和/或DNA或RNA测序反应。例如,本文所述的装置和/或包含所述装置的***可以用于分析生物或化学材料的方法,例如用于全基因组测序和/或分析、基因组分型分析、微阵列分析、固定样本分析、外显子组分析、微生物组分析和/或临床分析,例如癌症分析、NIPT分析和/或UCS分析等。
因此,在特定实施例中,如本文所述,可以采用石墨烯FET(gFET)阵列来促进DNA和/或RNA测序和处理技术,例如在基因分析管道中。例如,CMOS FET(例如石墨烯FET(gFET)阵列)可以配置为包括反应阱,该反应阱包括反应层,该反应层适于检测氢离子浓度(pH)的变化、其他分析物浓度的变化,和/或与化学过程相关的结合事件,例如与DNA或RNA合成有关的事件,例如在栅极反应腔室内或基于gFET的传感器阱内。这样的化学敏感的场效应晶体管可以包括一个或多个集成电路或者适合于与一个或多个集成电路相关联,和/或适合于增加测量灵敏度和/或传感器和/或相关联的阵列的准确度,例如在反应腔室或阱内包括一个或多个表面,该反应腔室或阱具有至少一个层状表面有1D和/或2D和/或3D材料、电介质层或反应层、钝化层等。
因此,本公开的一个方面可以包括一个或多个集成电路,该一个或多个集成电路可以由一组或多组硬连线数字逻辑电路形成(例如一组硬线数字逻辑电路互连时,通过多个物理电气互连进行互连),并且可以适用于参与DNA或RNA杂交和/或测序反应(例如初级处理)的执行和/或检测,和/或适用于进一步处理其结果,例如在一个或多个二级处理和/或三级处理步骤中。在这种情况下,集成电路可以包括例如经由多个物理电气互连中的一个或多个获得的输入,以便与电子数据生成源连接,例如本公开的测序CMOS FET和/或NextGen Sequencer被配置为用于生成这些数据,例如以基因组数据的多个测序片段(例如read)的形式。在特定情况下,一个或多个集成电路可以包括一组硬线数字逻辑电路,其被配置为用于对生成的基因组数据的read执行二级和/或三级处理分析管道,并且因此可以连接到电子数据生成源,例如通过一个或多个相关联的互连。
在这种情况下,集成电路的硬连线数字逻辑电路和/或相关联的互连可以被配置为能够接收基因组数据的一个或多个read,例如从电子数据源接收。在特定实施例中,一个或多个硬连线数字逻辑电路可以被配置为一组处理引擎,例如每个处理引擎由硬连线数字逻辑电路的子集形成,并且被配置为执行测序和/或分析管道中的一个或多个步骤,例如针对基因组数据的多个read。在这种情况下,硬连线数字逻辑电路的每个子集可以在某些情况下为有线配置以执行测序和/或分析管道中的一个或多个步骤。然而,如上所述,测序和/或分析管道中的一个或多个步骤可以被配置为以软件实现,例如软件和/或以优化的方式相互适配的硬件。
因此,在各种情况下,本公开提供了多个硬连线数字逻辑电路,其中硬连线数字逻辑电路被配置为一组处理引擎,其中一个或多个处理引擎可以包括一个或多个测序模块和/或映射模块(mapping module)和/或比对模块(alignment module)和/或排序模块(sorting module)和/或变异检测模块(variant call module)和/或一个或多个如本文所述的三级处理模块。例如,在各种实施例中,一个或多个处理引擎可以包括映射模块,该映射模块可以为有线配置并且可以被配置用于与存储器通信,在设备上或与其相关联,例如,经由适当配置的互连,以便访问含有一个或多个基因参考序列的索引、生成的测序数据的一个或多个read和/或剪接点索引(例如在RNA测序的情况下),并使用它们来执行一个或多个映射操作。
具体而言,适当配置的处理引擎可以包括或可以另外适配为用于执行一个或多个映射操作的映射模块,例如包括访问来自存储器的一个或多个基因参考序列的索引,例如通过多个物理电气互连中的一个或多个,以便将多个read映射到一个或多个基因参考序列。另外,在各种实施例中,一个或多个处理引擎可以包括比对模块,该比对模块可以为有线配置并且可以被配置用于从存储器访问一个或多个基因参考序列,例如通过一个或多个物理电气互连,以便将多个read与一个或多个基因参考序列中的一个或多个片段进行比对。
此外,在各种实施例中,一个或多个处理引擎可以包括排序模块,该排序模块可以为有线配置并且可以被配置用于访问来自存储器的一个或多个经过比对的read,例如通过多个物理电气互连中的一个或多个,以便根据其在一个或多个基因参考序列中的一个或多个位置来对每个经过比对的read进行排序。在这种情况下,多个物理电气互连中的一个或多个可以包括来自集成电路的输出,例如用于传送来自映射模块和/或比对模块和/或排序模块的结果数据。此外,在特定实施例中,如上所述,一个或多个处理引擎可以被配置用于与实现处理函数的各种软件交互,例如经由一个或多个互连(例如,多个物理电气互连)来执行分析管道中的一个或多个步骤,包括实现一个或多个RNA和/或DNA测序方案和/或变异检测方案。
在各种情况下,一个或多个集成电路可以包括主控制器,以便为硬连线数字逻辑电路的每个子集建立有线配置,例如,用于执行一个或多个映射函数、比对函数和/或排序函数,该函数可以被配置为序列分析管道中的一个或多个步骤和/或可以包括执行测序和/或变异检测函数的一个或多个方面。此外,在各种实施例中,本文公开的一个或多个集成电路可以被配置为具有硬连线数字逻辑电路的现场可编程门阵列(FPGA),例如可以在制造集成电路时建立有线配置,并且有线配置可能是非易失性的。在其他各种实施例中,集成电路可以被配置为具有硬连线数字逻辑电路的专用集成电路(ASIC)。在其它各种实施例中,集成电路可以被配置为具有硬连线数字逻辑电路的结构化专用集成电路(StructuredASIC)。
在某些情况下,一个或多个集成电路(例如CMOS FET测序和/或生物传感器)和/或一个或多个相关联的存储器可以容纳在扩展卡上,例如外设组件互连(PCI)卡,例如,在各种实施例中,本公开的集成电路可以是具有PCIe卡的芯片。在各种情况下,集成电路和/或芯片可以是测序仪内的组件,例如采用FET传感器和/或NGS的自动测序仪,和/或在其他实施例中,集成电路和/或扩展卡可通过互联网进行访问,例如通过云端访问。此外,在一些情况下,存储器可以是易失性随机存取存储器(RAM)或DRAM。
因此,在一个方面中,本公开提供了用于执行序列分析管道的一个或多个步骤的设备,例如基于基因数据,其中基因数据包括一个或多个基因参考序列、一个或多个基因参考序列中的索引、一个或多个剪接点索引,例如经注释的剪接点索引或表,和/或多个read,例如基因数据,例如DNA或RNA。在各种情况下,该设备可以包括集成电路,该集成电路可以包括一个或多个(例如一组)硬连线数字逻辑电路,其中该组硬连线数字逻辑电路可以互连,例如通过一个或多个物理电气互连进行互连。在某些情况下,多个物理电气互连中的一个或多个可以包括输入,例如用于接收基因组数据的多个read,例如来自如本文公开的测序装置的输入。另外,该组硬连线数字逻辑电路可以进一步为有线配置,以便经由多个物理电气互连中的一个访问一个或多个基因参考序列和/或经注释的剪接点索引,并且根据例如一个或多个索引,将DNA和/或RNA的多个read映射到一个或多个基因参考序列的一个或多个片段上。
在各种实施例中,索引可以包括一个或多个散列表,例如主散列表和/或二级散列表和/或剪接点表。例如,可以包括主散列表,在这种情况下,一组硬连线数字逻辑电路可以被配置为进行以下一项或多项:从基因数据的多个read中提取基因数据的一个或多个种子;对例如基因数据的一个或多个种子执行主散列函数,以便为该一个或多个种子中的每一个生成查找地址;以及使用查找地址访问主散列表,以便为基因数据的一个或多个种子中的每一个提供在一个或多个基因参考序列中的位置。在各种情况下,基因数据的一个或多个种子具有固定数量的核苷酸。
此外,在各种实施例中,索引可以包括二级散列表,例如一组硬连线数字逻辑电路被配置用于以下目的中的至少一种:将一个或多个种子中的至少一个种子与附加相邻核苷酸一起扩展,以产生至少一个基因数据的扩展种子;对至少一个基因数据的扩展种子执行散列函数,例如二级散列函数,以便为该至少一个扩展种子生成第二查找地址;以及例如使用第二查找地址访问二级散列表,以便为至少一个基因数据的扩展种子中的每一个提供在一个或多个基因参考序列中的位置。在各种情况下,二级散列函数可由该组硬连线数字逻辑电路执行,例如主散列表返回扩展记录,指示该组硬连线数字逻辑电路对一个或多个种子中的至少一个与附加相邻核苷酸进行扩展。在某些情况下,扩展记录可以指定附加相邻核苷酸(通过其对至少一个或多个种子进行扩展)的数量和/或种子的扩展方式,例如种子的每一端同样为偶数个“x”核苷酸。
此外,如已知的,DNA编码基因。然而,为了表达基因,需要将其基因密码转录并翻译成蛋白质。具体而言,基因可以通过RNA聚合酶在细胞核内转录成信使RNA(mRNA)转录产物或其他类型的RNA(例如转运RNA)。除了DNA胸腺嘧啶(T)碱基被转录成RNA尿嘧啶(U)碱基,最初RNA转录产物是该基因的单链拷贝。但是在产生该拷贝之后,其序列包括不同的内含子拷贝和外显子拷贝,通常需要将这些不同的内含子拷贝剪切出来,例如通过剪接体,仅留下待于“剪接”点连接在一起的外显子拷贝,以形成密码子区域。然后将含有密码子区域的剪接的mRNA从细胞核运送到核糖体,该核糖体将其解码成蛋白质,其中每组三个RNA核苷酸形成编码一个氨基酸的密码子。在解码过程中,一串氨基酸被串联在一起,当它们串联在一起并且糖基化形成蛋白质时,这些蛋白质构成细胞、组织和器官。通过这种方式,DNA中的基因可作为制造蛋白质的原始指令。
因此,因为DNA包括编码区(例如外显子)和非编码区(例如内含子),所以将RNA映射和/或比对和/或排序回其在基因组DNA中的基因前体可能很复杂。特别地,每个基因存在于双螺旋结构DNA双链的单链上,通常作为由内含子(非编码区片段)分隔开的一系列外显子(编码区片段)。有些基因只有一个外显子,但大多数有几个外显子(由内含子分隔开),有些具有数百个外显子或数千个外显子。外显子通常有几百个核苷酸长,但也可能与单个核苷酸一样短或与数十或数十万个一样长。内含子通常有数千个核苷酸长,并且有一些比一百万个核苷酸更长。因此,当对RNA(例如剪接的mRNA)进行映射、比对和/或排序时,剪接的mRNA的部分可以来自DNA的不同区域,该DNA可以通过一个或两个或甚至一百万或更多个核苷酸彼此分开。这使得RNA的处理非常复杂。
然而,本公开的一个方面通过本文所述的方法克服了这些挑战,并因此允许快速且准确地对全转录组RNA进行测序、映射、比对和/或排序。更具体地,在涉及RNA处理的情况下,前述索引可以包括一个或多个表,例如散列表或其他索引,其包括某种表或与这种表相关联,这种表允许准备查找各种已知或确定的剪接点(由生物***用于从DNA转录RNA)。因此,在这种情况下,可映射/比对RNA的映射器/比对器可以被配置为处理这种剪接点并且解释与转录和剪接的RNA的片段相对应的RNA序列read,例如read穿过一个或多个剪接点的位置;对于DNA的参考基因组而言,其意思是read的第一部分来自第一外显子并且应该映射到第一外显子,read的第二部分应该映射到第二外显子等等。相应地,该索引可以包括或与一个或多个剪接点表相关联,并且该组硬接线数字逻辑电路可以被配置为执行以下一项或多项:使用所述剪接数据从多个基因RNA数据的多个read中来确定和/或提取基因数据(例如RNA)的一个或多个种子;执行函数(例如散列函数),例如针对基因RNA数据的一个或多个种子,以便为一个或多个种子中的每一个生成查找地址;以及使用查找地址访问散列表,以便为基因RNA数据的一个或多个种子中的每一个提供一个或多个基因参考序列中的位置。
另外,在一个方面中,本公开提供了用于对基因序列数据(例如DNA或RNA)执行序列分析管道的一个或多个步骤的设备,其中基因序列数据包括一个或多个基因参考序列中的一个或多个(其中可包括外显子和内含子)、一个或多个基因参考序列的索引和/或经注释的剪接点的索引,以及基因组数据的多个read。在各种情况下,该设备可以包括集成电路,该集成电路可以包括一个或多个(例如一组)硬连线数字逻辑电路,其中该组硬连线数字逻辑电路可以互连,例如通过一个或多个物理电气互连进行互连。在某些情况下,多个物理电气互连中的一个或多个可以包括输入,例如用于接收基因组数据的多个read,该read可以已经被预先处理以便被映射。另外,该组硬连线数字逻辑电路还可以为有线配置,以便经由多个物理电气互连中的一个访问一个或多个基因参考序列以接收位置信息(例如来自映射器),指定一个或多个参考序列的一个或多个片段,并且将多个read与一个或多个基因参考序列的一个或多个片段进行比对。
因此,在各种情况下,该组硬连线数字逻辑电路的有线配置被配置为将DNA或RNA基因数据的多个read与一个或多个基因参考序列的一个或多个片段比对,并且还包括波前处理器,该波前处理器可以由该组硬连线数字逻辑电路的有线配置形成。在某些实施例中,波前处理器可以被配置为处理比对矩阵(例如由该组硬件数字逻辑电路的子集所定义的矩阵)的单元阵列。例如,在某些情况下,比对矩阵可以定义第一轴(例如代表多个read中的一个)和第二轴(例如代表一个或多个基因参考序列的一个或多个片段)。在这种情况下,波前处理器可以被配置成产生从第一轴延伸到第二轴的单元阵列的单元波前模式;并且可以进一步被配置为例如针对单元波前模式中的每个单元生成分数,该分数可以表示多个read中的一个与一个或多个基因参考序列中的一个片段的匹配程度。
在这样的情况下,波前处理器可以进一步被配置为在比对矩阵上方控制单元波前模式,使得最高分可以集中在单元波前模式。另外,在各种实施例中,波前处理器可进一步被配置成通过比对矩阵中的先前位置回溯一个或多个(例如全部)计分单元波前模式中的位置;跟踪一个或多个(例如全部)回溯路径,直到收敛;并根据收敛的回溯生成一个CIGAR字符串。
在某些实施例中,一组硬连线数字逻辑电路的有线配置用于将多个read与一个或多个基因参考序列的一个或多个片段比对,该有线配置可以包括可以实现Burrows-Wheeler算法的有线配置,例如用于在比对之前进行映射,和/或实现Smith-Waterman和/或Needleman-Wunsch评分算法。在这种情况下,Smith-Waterman和/或Needleman-Wunsch评分算法可以被配置为实现对碱基质量评分敏感的评分参数。此外,在某些实施例中,Smith-Waterman评分算法可以是仿射Smith-Waterman评分算法。
在特定实施例中,该设备可以包括集成电路,该集成电路可以包括一个或多个(例如一组)硬连线数字逻辑电路,其中该组硬连线数字逻辑电路可以互连,例如通过一个或多个物理电气互连进行互连。在这些情况中的某些情况下,多个物理电气互连中的一个或多个可以包括输入,例如用于接收基因组数据的多个read,该read可以已经被预先处理以便被映射和/或比对。另外,该组硬连线数字逻辑电路还可以为有线配置,以便经由多个物理电气互连中的一个访问一个或多个基因参考序列以接收位置信息(例如来自映射器和/或比对器),指定一个或多个参考序列的一个或多个片段,并且将多个read与一个或多个基因参考序列的一个或多个片段进行排序。
因此,在一个方面,本公开可以提供用于对基因物质进行测序(例如以产生电子基因数据)的方法。在特定情况下,该方法涉及如本文一般性描述和本领域已知的那样,使用Next Gen Sequencer测序仪对基因组DNA和/或由其衍生的RNA进行测序。在其他情况下,该方法涉及使用经过如本文所述的修改的Next Gen Sequencer测序仪,用于对基因组DNA和/或由其衍生的RNA进行测序。在进一步的例子中,该方法包括使用场效应晶体管和/或CMOS测序仪,例如芯片上的测序仪,如以下详细描述的,用于对基因组DNA和/或由其衍生的RNA进行测序。在各种情况下,产生的基因物质可以被转换成电子形式(例如数字形式),其可以以流式传输或转移至本文描述的一个或多个管道模块。
另外,一旦接收到电子(例如模拟或数字)基因数据(例如测序数据),则本公开的另一方面涉及对这样的基因序列数据执行序列分析管道。基因数据可以包括一个或多个基因参考序列、一个或多个基因参考序列的一个或多个索引和/或一个或多个与其相关的经注释的剪接点列表(例如,在RNA测序的情况下)、和/或基因组数据的多个read(例如DNA和/或RNA)。该方法可以包括以下一项或多项:对基因序列数据的各种迭代进行接收、访问、映射、比对和/或排序。例如,在某些实施例中,该方法可以包括在从由电子数据源到集成电路的输入上接收基因组数据的多个read中的一个或多个,其中基因组数据的每个read可以包括核苷酸序列。在这种情况下,集成电路可以由一组硬连线数字逻辑电路形成,例如通过多个物理电气互连来进行互连,该物理电气互连可以包括多个物理电气互连中的一个或多个,该物理电气互连包括输入。
该方法可以进一步包括由来自存储器的多个物理电气互连中的一个或多个物理电气互连上的集成电路访问一个或多个基因参考序列的索引和/或在RNA测序的情况下的经注释的剪接点。特别地,如果将经注释的剪接点提供给映射引擎,则可以利用它们来提高映射灵敏度。在这种情况下,经注释的剪接点列表可以被加载到存储器中以便由映射引擎访问,从而协助映射RNA基因物质。有利的是,经注释的剪接点可以被格式化成表,例如与之关联的散列表或索引,以便由映射引擎容易地访问。因此,该方法可以包括由集成电路的硬连线数字逻辑电路的第一子集将多个基因read(例如DNA或RNA read)映射到一个或多个基因参考序列的一个或多个片段。另外,该方法可包括由来自存储器的多个物理电气互连中的一个或多个物理电气互连上的集成电路访问一个或多个映射的read和/或基因参考序列;以及由集成电路的硬连线数字逻辑电路的第二子集将多个read(例如,映射的read)与一个或多个基因参考序列的一个或多个片段比对。
在各种实施例中,该方法可以另外包括由来自存储器的多个物理电气互连中的一个或多个物理互连上的集成电路访问比对的多个read。在这种情况下,该方法可以包括由集成电路的硬连线数字逻辑电路的第三子集根据它们在一个或多个基因参考序列中的位置来比对多个read。在某些情况下,该方法可以进一步包括例如在集成电路的多个物理电气互连中的一个或多个上输出来自映射和/或比对和/或排序的结果数据,例如结果数据包括经映射的和/或比对的和/或排序的多个read的位置。
此外,一旦基因数据已经被生成和/或处理,例如在一个或多个二级处理方案中,例如通过被映射、比对和/或排序,以产生一个或多个变异检测文件(例如为了确定来自受试基因序列数据与一个或多个参考序列的区别)。本公开的另一方面涉及对所生成的和/或经处理的基因数据执行一个或多个其他分析函数,例如进一步的处理(例如三级处理)。例如,该***可以被配置用于进一步处理所生成的和/或经二级处理的数据,例如经过一个或多个三级处理管道执行,例如基因组管道、表观基因组管道、宏基因组管道、联合基因分型、MuTect2管道或其他三级处理管道中的一个或多个,例如通过本文公开的装置和方法。特别地,在各种情况下,可以提供附加的处理层,例如用于疾病诊断、治疗处理和/或疾病预防,例如包括NIPT、NICU、癌症、LDT、AgBio和其他类似疾病的诊断、预防和/或治疗,通过采用由一个或多个初级管道和/或二级管道和/或三级管道生成的数据进行。因此,本文所公开的装置和方法可以用于生成基因序列数据,然后该数据可以用于生成一个或多个变异检测文件和/或其他相关数据,其可以进一步用于其他三级处理管道,与本文公开的装置和方法一致,例如用于特定的和/或一般的疾病诊断以及疾病预防和/或疾病治疗和/或可发展式物理疗法。
因此,在各种情况下,本公开的各个方面的实施例可以包括但不限于:包括如本文中详细描述的一个或多个特征的设备、***和方法,以及包括对机器可读介质有形地具体化的物件,可操作其以使一个或多个机器(例如,计算机等)产生如本文描述的操作。类似地,本公开还描述了可以包括一个或多个处理器和/或直接或远程地耦合到一个或多个处理器的一个或多个存储器的计算机***和/或网络。因此,可以通过保留在单个计算***或多个计算***(例如一个或多个计算机集群)中的一个或多个数据处理器来实现与当前主题的一个或多个实施例一致的计算机实现方法。这样的多个计算***可以被连接并且可以经由一个或多个连接来进行交换数据和/或命令或其他指令等(这些连接包括但不限于通过网络(例如因特网、无线广域网、本地区域网络、广域网络、有线网络等)连接)、经由多个计算***中的一个或多个之间的直接连接等。可以包括计算机可读存储介质的存储器,该存储器可以包括编码、存储等一个或多个使一个或多个处理器执行一个或多个如本文所述的操作的程序。
以下结合附图对如本文所述的主题的一个或多个不同变化细节进行详细阐述。本文所述的主题的其它特征和优点将从说明书和附图以及权利要求中显而易见。虽然为了说明目的描述当前公开的主题的某些特征涉及到企业资源软件***或其他商业软件解决方案或体系结构,但应当理解的是,这些特征并非旨在用于限制。本申请权利要求遵循本公开,旨在界定受保护主题的范围。
附图说明
以下附图包含在申请文件中,并作为申请文件的一个部分。附图与说明书示出本文主题的某些方面,用于解释本公开实施方式相关的原理。附图中:
图1示出了一个RNA read,表明了一个或多个剪接点的交叉,以及一个穿过read剪接点的种子。
图2示出了另一个示例性RNA read,表明了短(L-碱基)种子更容易匹配至短的外显子,以及适应短的外显子的突出端,或被例如SNPs编辑的外显子片段。
图3示出了一个示例性参考bin,位于成功映射的K-碱基种子的搜索范围内,该成功映射的K-碱基(K-base)种子能够在固定种子散列表中找到,例如使用L-碱基种子。
图4示出了拼接位置的左侧和右侧的read部分的比较。
图5示出了抽象比对矩形,纵轴为连接的查询序列,横轴为连接的参考序列。
图6示出了根据本公开的实施方式的设备。
图7示出了根据本公开的另一实施方式的另一设备。
图8示出了用于现场或基于云的DNA和RNA处理和分析的基因组学基础架构的框图。
图9示出了基于本地和/或云计算函数的用于现场或基于云的DNA和RNA处理和分析的基因组学基础架构(图8)的框图。
图10示出了图9的框图,说明了关于用于现场或基于云的DNA和RNA处理和分析的基因组学基础架构(图9)的计算函数的更多细节。
图11示出了图8的框图,更详细地说明了关于用于现场或基于云的DNA和RNA处理和分析的基因组学基础架构的第三方分析函数。
图12示出了混合云配置的框图。
图13示出了图12混合云配置框图更多细节。
图14示出了图13混合云配置框图更多细节。
图15示出了如本公开提出的初级、二级和/或三级分析管道的框图。
图16示出了本公开的分析管道的流程图。
图17示出了集成电路的示例性设计和制造。
图18示出了根据本公开实施方式的硬件处理器架构的框图。
图19示出了根据本公开的另一实施方式的硬件处理器架构的框图。
图20示出了基因序列分析管道。
图21示出了使用基因序列分析硬件平台的处理步骤。
实际应用时,类似的附图标记用于表示相似的结构、特征或元件。
具体实施方式
为了解决与当前可用解决方案有关的问题和潜在的其他问题,与当前主题的一个或多个实施方式一致的方法、***、产品等可以提供序列分析装置,用于对基因序列数据执行序列分析管道(除了其他可能的优点)。
以下提供了用于执行一个或多个三级处理方案的测序平台、序列分析管道以及***的各种实施方式的细节。
在其最基本的形式中,身体由细胞构成,细胞构成组织,组织构成器官,器官构成***,并且这些***共同起作用以确保身体运行以维持个体的生命。因此,身体的细胞是生命的基石。更具体地说,每个细胞都有一个细胞核,并且在每个细胞核内存在着染色体。染色体由脱氧核糖核酸形成,脱氧核糖核酸具有有序但缠绕的双螺旋结构。DNA本身由两条相对但互补的核苷酸链组成,这些核苷酸组成编码蛋白质的基因,这些蛋白质赋予细胞其结构并介导人体组织和器官的函数和调节。基本上,蛋白质完成细胞维持人体正常过程和函数的大部分工作。
鉴于身体组成部分的多样性以及它们相互作用以维持身体的各种过程和函数的复杂性,身体可能有多种方式在这些不同水平中的任何一个水平上发生“故障”。例如,在这样一个情况下,特定基因编码给定蛋白质的方式可能会出现“故障”,其依赖于蛋白质,并且其失效的性质可能导致疾病状态的发生。
因此,在诊断、预防和/或治疗这样的疾病状态时,确定参考的基因组成可能是非常有用的。例如,一旦知道一个人的基因组成,例如他或她的基因组组成,可以用于诊断和/或确定一个人是否已具有或潜在具有的疾病状态,因此可以用于疾病预防。同样,已知一个人的基因组可能有助于确定各种潜在的治疗方式(如药物)可以或不可以用于预防或治疗方案而不会对用户造成伤害。在各种情况下,也可以采用已知的人类基因组来确定药物功效和/或预测和/或识别使用这种药物的副作用。潜在地,已知一个人的基因组可以用来生产设计药物,例如根据个体的特定基因组合制作和优化药物。具体而言,在一种情况下,可以将工程蛋白质或核苷酸序列加工成个体独特的基因特征,从而关闭或启动基因的转录,过多或过少地产生蛋白质并由此改善患病状态。
因此,在一些情况下,确定人的个体基因组是生物信息学处理的目标,确定人的个体基因组可以用于基因发现方案以及用于疾病预防和/或治疗方案以更好地提高每个个体和人类的生活。此外,已知个体基因组可以用于例如在药物发现和/或FDA试验中,以更好地预测可能对个体起作用的药物(如果有的话)和/或可能具有有害副作用的药物,例如通过分析个体的基因组和/或由其衍生的蛋白质图谱并将其与施用此类药物的预测生物反应进行比较。
这种基因组学和生物信息学处理通常涉及三个定义明确,但通常单独的信息处理阶段。第一阶段涉及DNA/RNA测序,其中获得受试者的DNA/RNA并用于各种过程,由此受试者的遗传密码被转换为机器可读的数字代码,例如FASTQ文件。第二阶段涉及使用生成的受试者的数字遗传密码来确定个体的基因组成,例如确定个体的基因组核苷酸序列和/或变异检测文件,例如个体的基因组与一个或多个参考基因组的不同之处。第三阶段涉及对受试者的基因组成进行一项或多项分析,以便从中确定对治疗有用的信息。这些阶段可依次分别称为:初级处理、二级处理和三级处理。
例如,在阶段I或初级处理中,必须对遗传物质进行预处理,例如通过核苷酸测序,以便导出可用的基因序列数据。核酸(例如脱氧核糖核酸(DNA)和核糖核酸(RNA))的测序是生物学发现的基础部分。这种检测可用于多种用途,并且经常用于科学研究以及医学研究中。例如,基因组学和生物信息学领域涉及信息技术和计算机科学在遗传学和/或分子生物学领域的应用。具体而言,例如本文描述的生物信息技术可用于生成、处理和分析例如来自个体的各种基因组数据,以便确定关于该数据的定性和定量信息,然后可由各种从业者在个体和/或全面的诊断、预防和/或治疗方法的研发过程中使用,用于检测、预防和/或至少改善疾病状态,从而提高个体和/或社区的健康护理的安全性、质量和有效性。
通常,DNA/RNA分析的方法(例如基因诊断)涉及核酸杂交和检测。例如,各种典型的杂交和检测方法包括以下步骤。对于遗传分析,可以将待分析的受试者的RNA或DNA样本分离并固定在基底上,已知基因序列的探针可以在基底上标记并洗涤(例如疾病标记物)。如果疾病标记物存在,则会发生结合事件,例如杂交,并且因为探针已被标记,所以杂交事件可以被检测或不被检测到,从而指示受试者样本中存在或不存在疾病标记物。或者,如上所述,在杂交反应紧挨着反应层(例如反应层被配置成检测反应物和/或反应的副产物,例如在适当配置的FET装置中)发生的情况下,不需要采用标记探针。
通常,关于核苷酸测序,首先将待测的未知核酸序列(例如受试者的DNA和/或RNA的单链序列)分离、扩增并固定在基底上。接下来,在聚合酶存在下,将标记可识别标签的已知核酸与未知核酸序列接触。当发生杂交时,标记的核酸与固定在基底表面上的未知序列中的互补碱基结合。然后可以检测(例如光检测或电检测)结合事件。重复这些步骤,直到整个DNA样本测序完全。
通常,这些步骤通过手动执行的或者通过自动测序仪(例如Next Gen Sequencer,NGS)执行,可以在下一代测序过程中同时产生数千至数百万个序列。然而,本公开提出了用于DNA和/或RNA测序的直接的、无标签***(例如在计算机芯片,例如互补金属氧化物半导体(CMOS)芯片上),例如测序仪各种组件或整个传感装置可以体现在半导体芯片内或者与半导体芯片相关联。如本文所提供的***允许初级处理、二级处理和/或三级处理无缝集成(例如在相同的半导体芯片组内)。
更具体地,不管所采用的测序设备的类型如何,典型的测序程序涉及从受试者获得生物样本(例如通过静脉穿刺,头发等),并处理样本以从中分离出遗传物质。当遗传样本为DNA,一旦分离,DNA发生变性并且链分离。在处理RNA时,由于RNA已经是单链,所以这一步可能不是必需的。然后可以例如通过聚合酶链式反应(PCR)使分离的DNA和/或RNA或其部分扩增,从而构建待测序和解读的复制链的文库,例如通过自动测序仪,该测序仪被配置为例如通过合成(by synthesis)来解读复制链,从而确定组成DNA和/或RNA的核苷酸序列。此外,在各种情况下,例如在构建复制和扩增链的文库时,在预处理给定部分的DNA和/或RNA时提供过度覆盖(over-coverage)可能是有用的。为了执行这种过度覆盖(例如使用PCR),可能需要增加样本制备的资源和时间,并且更昂贵,但是其通常可能会提高最终结果的准确性。
一旦已经产生了DNA/RNA复制链的文库,它们可以被注入到自动测序仪(例如NGS)中,然后可以例如通过合成来解读该链,从而确定其核苷酸序列。例如,可以将复制的单链DNA或RNA附着到玻璃珠上并将其***测试容器(例如阵列)中。用于复制其互补链的所有必要组分(包括标记的核苷酸)也以一种连续的方式加入到容器中。例如,所有可能被标记的“A”、“C”、“G”和“T's”一次一个,或者全部一起加入(如果被标记),以查看哪些核苷酸将结合在单链DNA或RNA的位置1(position one)上。
在每次添加之后,在标记的模型中,用光(例如激光)照射在阵列上。如果组合物发荧光,则产生图像,指示与受试位置结合的核苷酸。在未标记的模型中,可以检测结合事件,例如通过在含有复制的单链DNA或RNA的玻璃珠所在的反应层附近的栅极(例如溶液栅极)处的电阻变化。更特别地,在一次添加一个核苷酸的情况下,如果发生结合事件,则将观察到其指示性荧光或电阻变化。如果未发生结合事件,则可以洗涤测试容器并重复该过程,直到四个核苷酸中适当的一个与受试位置处的补体结合,并且可观察到其指示性变化。在同时添加全部四种核苷酸的情况下,可以用不同的荧光指示剂标记每种核苷酸,并且可以例如通过荧光的颜色来确定在受试位置与其补体结合的核苷酸。这极大地加速了合成过程。
一旦发生结合事件,洗涤复合物并在位置2(position two)重复合成步骤。例如,可以向反应混合物中加入标记的或另外标记的核苷酸“A”以确定被测序的结合模板分子中位置1的补体是否为“A”,如果是,则标记的“A”反应物将与具有该补体的模板序列结合并因此发荧光,之后将样品全部洗涤以清除过量的核苷酸反应物。发生结合事件时,结合的核苷酸不会被洗掉。对于所有位置的所有核苷酸重复该过程,直到所有重复采样的核酸片段(例如read)都被测序并收集数据。或者,在同时添加全部四种核苷酸的情况下,每种核苷酸用不同的荧光指示剂标记,只有一种核苷酸在受试位置处与其补体结合,其余的被洗掉,因此,在容器经洗涤后,可以在容器上照射激光,则可以例如通过荧光的颜色确定与其互补物结合的核苷酸。然而,在采用CMOS FET传感器的情况下,如下所述,可以通过在适当配置的栅极或其他反应区域附近发生的电导变化来检测结合事件。
特别地,部分地,由于在测序反应中需要使用可光学检测(例如荧光)的标记,所以用于执行这种高通量测序的所需仪器可能容易产生体积大、成本高、耗时且不可移植等问题。由于这个原因,本公开提出了一种用于DNA和/或RNA测序的直接、无标记检测的新方法。例如,本公开尽管在各种实施例中,提供了用于执行NGS处理的改进方法,但是在其他实施例中,提供了不必涉及NGS的用于核酸测序和/或处理的改进方法和装置。例如,在特定情况下,本公开提出了基于使用各种电子分析装置的检测方法。这种直接电子检测方法与典型的NGS平台相比具有多个优点。
更具体地说,如本文所公开的,传感器和/或检测装置可以结合在基底本身中,例如采用在芯片上的生物***(biosystem-on-a-chip)器件,例如互补金属氧化物半导体器件,“CMOS”。具体而言,在基因检测中使用CMOS器件时,代表杂交事件的输出信号(例如杂交和/或核酸测序)可以直接在微芯片上获取和处理。在这种情况下,可以即时实现自动识别,并且成本低于目前使用的典型NGS处理所需的成本。而且,可以采用标准的CMOS基底器件进行这种电子检测,使得该工艺简单、便宜、快速和便携。
例如,为了使新一代测序(next-generation sequencing)广泛用作医疗保健行业中的诊断手段,测序仪器将需要以高质量、高移动性和经济的方式批量生产。实现这一目标的一种方法是通过充分利用目前已大规模、高质量、低成本制造的计算机芯片的制造基础(例如互补金属氧化物半导体(CMOS)芯片),对DNA/RNA测序进行重塑。为了实现这一目的,理想情况下,测序仪的整个传感装置可以体现在标准的半导体芯片中,例如在用于逻辑和存储器芯片的相同制造工厂中制造。
因此,在本公开的另一方面中,提出了可以在CMOS芯片上制造或与CMOS芯片相关联的场效应晶体管(FET),所述CMOS芯片被配置用于执行一个或多个DNA/RNA测序和/或杂交反应。这种FET可以包括栅极、连接源极端子和漏极端子的沟道区域以及可以被配置为将栅极与沟道分离的绝缘壁垒。这种FET的最佳操作依赖于沟道电导率的控制,故漏极电流的控制,例如通过施加在栅极和源极端子之间的电压。
对于高速应用以及为了提高传感器灵敏度,本文提供的FET可以按一定方式操作,使栅极电压(VGS)对变异响应快速。但是,这需要沟道中的短栅极和快速载波。鉴于此,例如用于核酸杂交和/或测序反应的FET传感器被构造成具有在垂直和/或水平尺寸上非常薄的沟道,以允许载体的高速传输并提高传感器的灵敏度和准确性,从而使本公开提出的传感器对于核酸测序反应具有特别的优点。因此,本公开提供的装置、***和使用其的方法对于进行基因组学分析和应用(例如核酸测序和/或遗传诊断)是理想的。
因此,本公开的一个方面是化学敏感的晶体管,例如用于分析生物材料或化学材料的场效应晶体管(FET),其解决了当前许多与核酸测序和基因诊断相关的问题。这种FET可以被制造在例如晶片(例如硅晶片)的主结构上。在各种情况下,主结构可以包括一个或多个附加结构,例如堆叠结构,例如绝缘体材料层。例如,绝缘体材料可以被包括在主结构的顶部上,并且可以是无机材料,例如硅氧化物(例如二氧化硅),或氮化硅,或者有机材料,例如聚酰亚胺、BCB或其他类似材料。
主结构和二级结构(例如包括绝缘体层)可以包括含有一个或多个导电源极和/或导电漏极的附加结构,例如彼此隔空分开,并且嵌入主结构和/或绝缘体材料,和/或可以与绝缘体的顶部表面成平面。在各种情况下,该结构可以进一步包括处理器或与处理器相关联,例如用于处理生成的数据,例如传感器导出的数据。因此,该结构可以被配置为集成电路或者包括集成电路,如本文所述,和/或可以作为ASIC、结构化ASIC或FPGA。
在特定情况下,该结构可以被配置为互补金属氧化物半导体(CMOS),互补金属氧化物半导体(CMOS)又可以被配置为化学敏感的FET传感器,其包含一个或多个导电源极、导电漏极、沟道或阱,和/或处理器。例如,FET可以包括具有在硅晶片上制造的集成电路的CMOS结构,还包括绝缘体层,该绝缘体层包括导电源极和导电漏极,例如嵌入其中的源极和漏极,源极和漏极的端子可以由金属构成,例如金属镶嵌铜源和金属镶嵌铜漏极。在各种情况下,该结构可以包括表面(例如顶表面),该表面可以包括沟道,例如表面和/或沟道可以被配置为从导电源极延伸到导电漏极并且形成反应区域。
在某些情况下,表面和/或沟道可以包括一维晶体管材料、二维晶体管材料、三维晶体管材料和/或类似物。在各种情况下,可以包括一维(1D)晶体管材料,该一维材料可以由碳纳米管或半导体纳米线组成。在其他情况下,腔室和/或沟道由例如包含一个或多个碳纳米管和/或半导体纳米线(例如半导体纳米线片)的一维晶体管材料组成。
在特定情况下,可以包括二维(2D)晶体管材料,例如可以是一个或两个原子厚度并且可以在平面中伸展的二维(2D)晶体管材料。在这种情况下,2D材料可以包括或由以下材料组成:例如石墨烯(graphene)、石墨炔(graphyne,由乙炔键连接的苯环晶格组成的碳同素异形体)、硼烯(borophene,硼同素异形体)、锗烯(germanene,一种锗同素异形体)、锗烷(germanane,另一种锗同素异形体)、硅烯(silicene,硅同素异形体)、锡烯(stanene,锡同素异形体)、磷烯(phosphorene,一种磷同素异形体有时称为黑磷)或金属单原子层如钯或铑;过渡金属二硫属化物(每两个硫属元素原子含有一个过渡金属原子),例如二硫化钼(MoS2有时称为辉钼矿)、二硒化钨(WSe2)、二硫化钨(WS2)等;MXenes(过渡金属碳化物和/或氮化物,通常具有通式Mn+1Xn,其中M是过渡金属,X是碳和/或氮),例如Ti2C、V2C、Nb2C、Ti3C2、Ti3CN、Nb4C3或Ta4C3(MXenes可以用O、OH或F封端以产生具有小带隙的半导体);或有机金属化合物,如Ni3(HITP)2(Ni3(2,3,6,7,10,11-六亚胺三亚苯基)2);或二维超晶体(超晶体被定义为超原子周期性结构,在结构节点的原子通常被其对称配合物取代)。应当注意的是,过渡金属二硫属化合物可以包括一个任意过渡金属原子(Sc,Ti,V,Cr,Mn,Fe,Co,Ni,Cu,Zn,Y,Zr,Nb,Mo,Tc,Ru,Rh,Pd,Ag,Cd,Hf,Ta,W,Re,Os,Ir,Pt,Au,Hg,Rt,Db,Sg,Bh,Mt,Ds or Rg)与两个任意硫属元素原子(S,Se or Te)的配对比例。在特定情况下,2D材料可以包括石墨烯层、硅烯、二硫化钼、黑磷和/或金属二硫属化物中的一种或多种。在各种情况下,三维(3D)材料可以被包括在表面上和/或沟道可以包括电介质层。
另外,在各种情况下,反应层(例如氧化物层)可以设置在表面和/或沟道上,例如分层或沉积在1D、2D(例如石墨烯)或3D层上。这种氧化物层可以是氧化铝或硅氧化物,例如二氧化硅。在各种情况下,钝化层可设置在表面和/或沟道上,例如分层或沉积在1D,2D(例如石墨烯)或3D层上,和/或在表面和/或沟道上的相关反应层上。
在特定情况下,可以制造或配置主结构和/或二级结构,以便在表面中和/或表面上包括腔室或阱结构。例如阱结构可以位于主结构和/或二级结构的表面的一部分上,例如外表面上。在一些情况下,阱结构可以形成在或者包括在1D、2D(例如,石墨烯)和/或3D材料的至少一部分的顶部上,和/或可以另外包括反应层,例如氧化物层,和/或钝化层。在各种情况下,腔室和/或阱结构可以限定开口,例如允许进入腔室内部的开口,例如允许与1D(例如,碳纳米管或纳米线)、2D(例如,石墨烯)表面和/或沟道的直接接触。
相应地,在各种实施例中,本公开涉及生物传感器。生物传感器包括CMOS结构,其可以包括含金属的源极(例如金属镶嵌铜源极)以及含金属的漏极(例如金属镶嵌铜漏极),1D或2D层状(例如石墨烯层状)表面或沟道,其从源极延伸到漏极端子,以及阱或腔室结构,其可以位于1D或2D或3D层状阱结构的外表面的一部分上。在这种情况下,阱结构可以被配置为限定允许与纳米管、纳米线和/或石墨烯阱或腔室表面直接接触的开口。在各种情况下,氧化物层和/或钝化层可以布置在腔室中或表面上。因此,在某些情况下,可以提供化学敏感的晶体管,例如包括一个或多个纳米或微米阱的场效应晶体管(FET)。
在一些实施例中,化学敏感场效应晶体管可以包括多个阱并且可以被配置为阵列,例如传感器阵列。这样,***可以包括具有一个或多个(例如多个)传感器的阱阵列,例如其中每个传感器包括化学敏感场效应晶体管,该晶体管具有导电源极、导电漏极和从导电源极延伸到导电漏极的反应表面或沟道。可以使用一个或多个这种阵列来检测多种化学和/或生物学过程(包括DNA/RNA杂交和/或测序反应)中各种分析物类型的存在和/或浓度变化。例如,本文描述的装置和/或包括其的***可以用于诊断疾病和/或分析生物或化学材料的方法,例如用于全基因组分析、基因组分型分析、微阵列分析、固定样本分析、外显子组分析、微生物组分析和/或临床分析,例如癌症分析、NIPT分析和/或UCS分析。
在特定实施例中,如本文所述,FET可以是石墨烯FET(gFET)阵列,并且可以用于促进DNA/RNA测序和/或杂交技术,例如基于监测氢离子浓度(pH)的变化、其他分析物浓度的变化和/或与DNA或RNA合成相关的化学过程相关的结合事件,例如在栅极反应腔室内或基于gFET的传感器阱内。例如,化学敏感的场效应晶体管可以被配置为CMOS生物传感器和/或可以适于增加传感器和/或相关阵列的测量灵敏度和/或准确度,例如通过包括一个或多个表面或阱,具有一层1D和/或2D和/或3D材料、电介质层或反应层、钝化层等。例如,在特定实施例中,提供化学敏感的石墨烯场效应晶体管(gFET),例如具有CMOS结构的gFET,其中gFET传感器(例如生物传感器)可以包括氧化物层和/或钝化层,例如设置在阱或腔室的表面上的层,以增加传感器和/或相关阵列的测量灵敏度和/或精确度。当存在氧化物层时,其可以由氧化铝、硅氧化物、二氧化硅等组成。
该***可以进一步包括一个或多个流体组件(例如用于执行反应)、电路组件(例如用于运行反应过程)和/或计算组件(例如用于控制和/或处理)。例如,在流体组件可以包括在其中的情况下,该流体组件被配置成控制阵列和/或其一个或多个腔室上的一个或多个试剂流。特别地,在各种实施例中,该***包括多个反应位置,例如表面或阱,其包括多个传感器和/或多个通道,并且还包括一个或多个源流体,该源流体包含多种试剂和/或分析物流,用于递送至一个或多个表面和/或阱,用于在其中进行一种或多种反应。在某些情况下,还可以包括用于产生一个或多个电场和/或磁场的装置。
该***可以另外包括电路组件,例如电路组件可以包括采样保持电路、地址解码器、偏置电路和/或至少一个模数转换器。例如,采样保持电路可以被配置为保持施加到本公开的设备的阵列的选定列和/或行上的电压的模拟值,例如在读取间隔期间。另外,地址解码器可以被配置成为阵列的列和/或行创建列和/或行选择信号,以便访问阵列内具有给定地址的传感器。偏置电路可以耦合到阵列的一个或多个表面和/或腔室并且包括偏置组件,例如可以适用于向选定的阵列的化学敏感场效应晶体管施加读取和/或偏置电压,例如,晶体管的栅极端子。模数转换器可以被配置为将模拟值转换为数字值。
该***还可以包括计算组件,例如计算组件可以包括一个或多个处理器,例如信号处理器;碱基检测模块,其被配置用于确定经过测序的核酸的一个或多个read的一个或多个碱基;映射模块,其被配置用于从测序数据的一个或多个reads中生成一个或多个种子,并且用于对所述一个或多个种子和/或read执行映射函数;比对模块,被配置为对所述一个或多个经映射的read执行比对函数;排序模块,用于对所述一个或多个经映射和/或比对read执行排序函数;和/或变异检测模块,其被配置为对所述一个或多个经映射的、经比对的和/或经排序的read执行变异检测函数。在特定情况下,碱基检测模块的碱基检测器可以被配置为校正多个信号(例如用于相位和信号损失),以归一化为密钥,和/或为每个传感器中的每个流生成多个校正的碱基检测以产生多个测序read。在各种实施例中,装置和/或***可以包括至少一个参考电极。
特别地,该***可以被配置用于执行测序反应。在这种情况下,FET测序装置可以包括具有一个或多个与其相关联的化学敏感场效应晶体管的传感器阵列。这样的晶体管可以包括具有源极端子、漏极端子和/或栅极端子中的一个或多个的共源共栅晶体管。在这种情况下,晶体管的源极端子可以直接地或间接地连接到化学敏感场效应晶体管的漏极端子。在一些情况下,可以包括一维或二维沟道并且可以从源极端子延伸到漏极端子,例如1D沟道材料可以是碳纳米管或纳米线,并且二维通道材料可以由石墨烯、硅烯、磷烯、二硫化钼和金属二硫属化合物组成。该装置可以进一步被配置为包括多个列和行,其耦合到传感器阵列中的传感器。在这种情况下,多条列线中的每条列线可以直接地或间接地连接到或者耦合到阵列中相应的多个像素的晶体管(例如,共源共栅晶体管)的漏极端子,并且同样地,多条行线中的每个行线可以直接地或间接地连接到或者耦合到阵列中相应的多个传感器的晶体管(例如,共源共栅晶体管)的源极端子。
在一些情况下,可以包括多个源极端子和漏极端子,多个源极端子和漏极端子具有多个反应表面,例如沟道构件,所述反应表面在所述源极端子和所述漏极端子之间。例如其中每个沟道构件包括一维材料或二维材料或三维材料。在这种情况下,多个第一和/或第二导电层可以耦合到阵列中相应列和行中的化学敏感场效应晶体管的第一和第二源极/漏极端子。另外,可以提供控制电路并将其连接到多条列线和行线,例如用于读取连接到选定列线和/或选定行线的选定传感器。该电路还可以包括偏置组件,例如可以被配置用于将读取电压施加到选定的行线,和/或将偏置电压施加到例如晶体管(例如FET和/或选定的传感器的共源共栅晶体管)的栅极端子上。在特定实施例中,偏置电路可以耦合到阵列的一个或多个腔室并且被配置为通过导电列和/或行线向选定的化学敏感场效应晶体管施加读取偏压。特别地,偏置电路可以被配置为将读取电压施加到选定的行线,和/或配置为将例如在读取间隔期间的偏置电压施加到晶体管的栅极端子上,例如共源共栅晶体管。
感测电路可以被包括并耦合到阵列,以感测耦合到选定的化学敏感场效应晶体管的一个或多个栅极配置的电荷。感测电路还可以被配置为基于选定的行和/或列线上的采样电压水平来读取选定的传感器。在这种情况下,感测电路可以包括一个或多个预充电电路,例如以便在读取间隔之前将选定的列线预充电至预充电电压水平;以及采样电路,例如以便在读取间隔期间对选定晶体管(例如,共源共栅晶体管)的漏极端子处的电压水平进行采样。采样电路也可以被包括并且包含采样保持电路,该采样保持电路被配置为在读取间隔期间保持选定的列线上的电压的模拟值,并且还可以包括模数转换器以将模拟值转换为数字值。
在另一方面中,可以使用本领域已知的任何合适的互补金属氧化物半导体(CMOS)处理工艺来制造本公开提出的1D、2D或3D FET集成电路,例如gFET,传感器和/或阵列。在某些情况下,这样的CMOS处理工艺可以增加传感器和/或阵列的测量灵敏度和/或精确度,并且同时明显促进传感器尺寸减小和gFET腔室传感器区域变密集。特别地,本文描述的改进的制造技术采用1D、2D、3D和/或氧化物作为反应层,可以快速对从小传感器到大而密集的传感器阵列的数据进行采集。在包括离子选择性渗透膜的特定实施例中,膜层可以包括聚合物,例如全氟磺酸材料、全氟羧酸材料、PEEK、PBI、Nafion和/或PTFE。在一些实施例中,离子选择性渗透膜可以包括无机材料,例如氧化物或玻璃。可通过旋涂、阳极氧化、PVD和/或溶胶凝胶法制造或施加各层中的一个或多个层,例如反应层、钝化层和/或可渗透膜层。
因此,本文描述的CMOS FET器件可以用于对核酸样本进行测序,在这种情况下,核酸样本充当用于DNA/RNA合成和测序的模板,其可以连接到或靠近反应区的表面,例如石墨烯涂覆表面。一旦被固定,则可以通过执行一个或多个以下步骤来对模板序列进行测序和/或分析。例如,可以将引物、和/或聚合酶(例如DNA和/或RNA聚合酶)、和/或一个或多个底物(例如脱氧核苷酸三磷酸酯dATP、dGTP、dCTP和dTTP)例如按顺序地加入到反应室中,例如在杂交反应开始之后,以诱导延伸反应。一旦适当的(例如相应的)底物与模板序列中的其互补序列杂交,就会伴随着个体电气特征电压变化,例如源极-漏极电压(Vsd),可由新的局部栅控效应测量。在包含反应层的情况下,例如沉积在1D、2D或3D表面上的氧化物层,结合事件发生的灵敏度可以被放大,例如反应层被配置用于产生和/或监测氢离子浓度(pH)的变化和其他分析物浓度的变化。
因此,对于每个与合适的底物(例如互补体)的延伸反应,特征电压和/或pH浓度会有变化。例如,如本文所述,用于核酸测序和/或基因检测的场效应装置可设置在流动池(flow cell)的样本室或阱中,并且样本溶液(例如含有聚合酶和一种或多种底物,例如核酸)可以加入样本溶液室中,例如经由***的一个或多个流体组件。在各种实施例中,参考电极可以设置在场效应器件的上游、下游或与场效应装置和/或源极和/或漏极端子流体接触,其本身可以用作电极,例如用于杂交检测,并且在需要的时候可以施加栅极电压。
特别地,在一个示例性延伸反应中,如果添加的底物与DNA/RNA引物和/或模板的碱基序列互补,则合成多核苷酸。如果添加的底物不与模板中下一个可用的碱基序列互补,则不会发生杂交并且不存在延伸。由于核酸(例如DNA和RNA)在水溶液中具有负电荷,导致延伸的杂交可以通过反应表面上和/或反应室中电荷密度的变化逐渐确定。这种检测可以通过检测离子浓度的增加而增强,例如通过检测pH的变化。因为底物是按顺序添加的,所以很容易确定哪个核苷酸与模板结合,从而促进了延伸反应。因此,延伸反应可导致石墨烯层状栅极表面、绝缘膜表面和/或反应室的侧壁表面上的负电荷增加。该电荷增加可以被检测,例如在本文详细描述的栅源电压和/或离子浓度变化。通过确定添加哪个底物导致栅源电压的信号变化或pH变化,可以确定和/或分析靶核酸的碱基序列同一性。
具体而言,不管所采用何种测序装置,例如NGS测序装置和/或如本文所述的基于FET的测序装置,该迭代合成过程持续进行,直到整个DNA/RNA模板链在容器中复制。通常以这种方式复制的序列的典型长度为约100至约500个碱基对,例如150至约400个碱基对,包括约200至约350个碱基对,例如约250个碱基对至约300个碱基对,取决于使用的测序方案。此外,这些模板片段的核苷酸长度可以是预定的,例如工程化设计的,以符合运行它的任何特定测序仪器和/或方案。
最终结果是由复制的DNA/RNA片段组成的readout或read,例如约100至约1000个核苷酸或更长的长度,已经以如下方式标记:该序列中的每个核苷酸例如read,已经通过其标签知晓,或者通过栅极特性的改变(例如电压和/或pH的变化)而被确定并知晓。因此,由于人类基因组由大约32亿个碱基对组成,并且各种已知的测序方案通常产生标记的复制序列,例如read,约100个或101个碱基至约250个或约300个或约400个碱基,需要被测序的片段以及因此产生的read的总数可以是约10,000,000至约40,000,000,例如约15,000,000至约30,000,000中的任意数,取决于标记的复制序列的长度。因此,测序仪通常可以产生约30,000,000个read,例如read长度为100个核苷酸长度,以覆盖基因组一次。然而,如本文所指出的,由于本文提出的在芯片上测序的格式具有压缩性,可能要获得更多的实质read长度,例如800个碱基、1,000个碱基、2,500个碱基、5,000个碱基、多达10,000个碱基。
此外,如上所述,在这样的程序中,对DNA/RNA重复采样可能有用,例如约5X,或约10X,或约20X,或约25X,或约30X,或约40X,或约50X,或约100X,或约200X,或约250X,或约500X,或约1,000X,或约5,000X,或甚至约10,000X或更多,因此需要花费大量时间去完成大量的初级处理工作。例如,对于40倍重复采样,其中各种合成的read设计为在一定程度上重叠,可能需要合成多达约12亿个read。通常,大部分(如果不是全部)这些标记的序列可以并行生成。最终结果是,对最初的生物遗传物质进行处理,例如通过本文总结的那些测序方案,并且生成该数据的数字表示,该数据的数字表示可以用于初级处理方案。
特别地,受试者的遗传物质可以以产生可测量的电学、化学、放射性和/或光学信号的方式进行复制和测序,然后该信号例如通过测序仪和/或与其相关的处理设备转换成受试者遗传密码的数字表示。更具体地说,初级处理可以包括将图像(例如记录的闪光或其他电信号或化学信号数据)转换成FASTQ文件数据。因此,该信息被存储为FASTQ文件,然后可以将其发送用于进一步的例如二级处理。典型的FASTQ文件包括表示数字编码的核苷酸序列的大量read集合,其中已对序列中的每个预测的碱基进行了检测,并给出指定位置处的被检测碱基不正确的概率分数。
在许多情况下,对从测序仪和/或测序方案获得的数字编码的序列数据进行进一步处理可能有用,例如将数字表示的数据用于二级处理。例如,该二级处理可以用于组装个体的整个基因组图谱,例如确定个体的全部基因组成,例如每个染色体和每个染色体的每个核苷酸以连续顺序确定,由此确定个体的整个基因组的组成。在这样的处理中,个体的基因组可以例如通过与参考基因组(例如标准,例如从人类基因组计划获得的一个或多个基因组)进行比较来组装,以便确定个体的基因组成与参考基因组的区别。这个过程通常被称为变异检测。由于任何一个人与另一个人的DNA/RNA之间的差异是1000个碱基对中的1个,所以这种变异检测过程可能非常费时费力。
因此,在典型的二级处理方案中,受试者的基因组成通过与参考基因组进行比较来组装。该比较涉及从数百万个短read序列中重建个体基因组和/或将整个个体的DNA和/或RNA与示例性DNA和/或RNA序列模型进行比较。在典型的二级处理方案中,从包含原始序列read数据的测序器接收FASTQ文件。例如,在某些情况下,假设没有重复采样,例如每个read的长度大约为100个核苷酸,则可以有多达30,000,000个或更多的read覆盖受试者的基因组。因此,在这种情况下,为了将受试者的DNA/RNA基因组与标准参考基因组进行比较,需要确定每一个read对应于参考基因组的位置,例如它们彼此之间的比对情况,和/或每个read按染色体顺序进行排序以确定每个read属于哪个染色体和哪个位置。在对整个全长序列执行变异检测函数之前,可能会发生这些函数中的一个或多个。一旦确定了基因组中每个read所属的位置,就可以确定全长基因序列,然后可以评估受试者的遗传密码和参考对象之间的差异。
由于人类基因组的长度超过30亿个碱基对,现已开发了有效的自动化测序方案和仪器,以便在可能临床上有用的时间段内实现这种DNA/RNA基因组的测序。在自动化测序方面的这些创新已经可以在几小时至几天内对整个基因组测序,这取决于待测基因组的数量、涉及的重复采样的数量以及专用于处理该工作的资源的数量。因此,鉴于这些先进的测序技术,大量的测序数据能够在相对较短的时间内生成。然而,这些进步也是二级处理阶段的发展瓶颈。为了帮助克服这一瓶颈,已经开发了各种基于软件的算法,例如本文所述的那些,以帮助加速组装受试者的测序DNA和/或RNA的过程,例如基于参考对象的组装过程。
例如,基于参考对象的组装是典型的二级处理组装方案,涉及将受试者的测序基因组DNA和/或RNA与一种或多种标准(例如已知的参考序列)进行比较。已经开发了各种算法来帮助加快这一过程。这些算法通常包括以下一种或多种的变型:对从数字(例如FASTQ)文件接收的由测序器进行通信的数百万个read进行映射、比对和/或排序,以确定每个特定read在每个染色体上的位置或对应于其他地方。通常,这些各种算法的函数背后的一个共同特征是它们使用索引和/或阵列来加速其处理函数。
例如,关于映射,可以对大量(例如全部)测序read进行处理,以确定read在参考基因组中可能对准的位置。一种可用于此目的的方法是将read与参考基因组进行直接比较以找到所有匹配的位置。为了将read映射到参考DNA/RNA基因组中的各个位置,另一种方法是使用前缀或后缀数组,或构建前缀或后缀树。用于执行这种函数的典型算法是Burrows-Wheeler变换,该变换使用压缩重复序列数据的压缩公式将选定的read映射到参考基因组中。
另一种方法是使用散列表,例如将选定的read子集、选定长度为“k”的k-mer(例如种子)作为关键字(key)置于散列表中,并且参考序列被分解成相等的k-mer部分,并且根据散列函数映射到的表中的位置,通过算法将这些部分及其位置***散列表中。执行此函数的典型算法是“BLAST”(a Basic Local Alignment Search Tool)。这种基于散列表的程序将查询核苷酸或蛋白质序列与一个或多个标准参考序列数据库进行比较,并计算匹配的统计显着性。以这样的方式,可以确定任何给定read可能位于参考基因组的哪个位置。这些算法是有用的,因为它们需要较少的内存,较少的查找,并且因此在执行其函数时需要较少的处理资源和时间。否则,例如受试者的基因组不使用这些算法而是通过直接比较进行组装。
另外,可以执行比对函数以确定给定read可以映射到基因组上的所有可能位置,例如当read可以映射到基因组中的多个位置,其实际上是它实际位置,例如通过原始测序方案对其进行排序。该函数可以在基因组的多个read上进行,并且可以获得表示受试者的DNA和/或RNA的部分或全部基因序列的一串有序核苷酸碱基。与有序基因序列一起,对每个核苷酸位置上的任意核苷酸进行评分,该评分表示对于任意给定的核苷酸位置,预测该位置上的核苷酸(例如“A”、“C”、“G”、“T”或“U”)是否实际上是属于该比对位置。用于执行比对函数的典型算法是Needleman-Wunsch和Smith-Waterman。在任一种情况下,这些算法在受试者的查询基因组DNA和/或RNA序列与参考基因组序列之间执行序列比对,由此,将一个选定的可能长度的片段与另一个进行比较代替比较整个基因组序列。
一旦read已经被分配了例如相对于参考基因组的位置(其可包括识别read所属的哪个染色体和/或其与该染色体的起点的偏移),那么read可按位置排序。这可能使下游分析能够利用上述的重复采样。所有与基因组中给定位置重叠的read在排序后彼此相邻,并且它们可以被组织成堆积并且易于检查以确定它们中的大多数是否与参考序列一致。如果他们不是,可以标记变异。
尽管这些算法和其他类似的算法寻求解决二级处理中固有的瓶颈的方法,但仍需要加快处理时间和提高准确性。更具体地说,尽管对生成DNA/RNA序列数据等原始数据的相关处理有了进步,但信息技术的进步并没有跟上步伐,导致数据分析瓶颈。例如上述那些帮助加速这些分析的各种算法的发展可以稍微减弱这种瓶颈,但是仍然需要新技术来处理数据生成和采集、计算、存储和/或分析数据,尤其是涉及基因组序列分析的数据,例如在二级处理阶段。
例如,采用标准的NGS技术对人类基因组进行测序可能需要几个小时,甚至长达约一天,并且使用用于对这样获得的基因组测序数据进行二级处理的标准方案可能需要多达三天或甚至一周或更长时间来处理测序数据,以便产生个体的临床相关基因组序列信息。采用各种不同的优化装置、算法、方法和/或***,将从初级处理到二级处理所花费的时间缩短到仅仅27-48小时。然而,为了实现这样的快速结果,通常需要同时并行处理实际上产生的所有read,例如每个100个核苷酸的3000万个read。这种并行处理需要涉及大量CPU资源的大量处理能力,并且还需要相当长的时间。
此外,在各种情况下,希望提高结果的准确性。通过对测序基因组进行一定量的重复采样可以提高结果的准确性。例如,如上所述,可能期望以这样的方式处理受试者的DNA,即在核苷酸序列的任何给定位置处进行该区域的重复采样。如上所述,可能需要将基因组的任何给定区域重复采样至10X,或15X,或20X,或25X,或30X,或40X,50X,100X,250X或甚至500X或1000次或更多。但是,如果基因组是重复采样的,例如40X,则要处理的read量大约为3000万x 40(取决于read的长度),这等于整个基因组被40X重复采样时需要处理约12亿个read。尽管这样的重复采样通常会达到更高的准确性,但由于基因组的每一部分都覆盖了任何地方1到40次,因此需要花费更多的时间和更多的处理资源。此外,对于临床医生试图用于区分血液中癌细胞突变基因组与健康细胞基因组时,重复采样多达500X,或1,000X或5,000X,或者甚至可以使用10,000X。
因此,本公开涉及一种新技术,可以执行一个或一系列基因组学和/或生物信息学方案(例如管道),用于基于获得的基因组测序数据或其一部分进行基因采集和/或分析,例如初级和/或二级处理。测序数据可以从自动化高通量测序仪***直接获得,例如通过来自ROCHE的“Sequencing by Synthesis”454自动测序仪、HiSeq x Ten或来自ILLUMINA的Solexia自动测序仪、“Sequencing by Oligonucleotide Ligation and Detection”(SOLiD)或LIVE TECHNOLOGIES的Ion Torrent测序仪,和/或HELICOS GENETIC ANALYSISSYSTEMS的“Single Molecule Fluorescent Sequencing”测序仪等,例如通过与测序处理单元直接连接,或测序数据如本文所述可直接获得,例如在芯片配置上测序,例如包含CMOS测序芯片的石墨烯层状FET传感器。这些测序数据还可以例如从数据库远程访问,例如可以通过因特网或可以通过无线通信方案访问的其他远程位置访问,例如Wi-Fi、蓝牙等。
在某些方面,这些基因采集和/或分析技术可以采用改进的算法,这些算法可以通过软件来实现,其以较低处理强度和/或较少耗时的方式和/或以较高百分比准确度运行。例如,在某些实施例中,提供了用于产生基因序列信息的改进的装置和方法,例如本公开的初级处理方案,和/或用于在其上执行二级处理的改进算法。在各种特定实施例中,改进的装置、***、其使用方法和所使用的算法涉及更高效和/或更准确地执行测序、映射、比对和/或排序函数中的一个或多个,例如以生成和/或分析从测序平台获得的DNA/RNA序列数据的数字表示,例如从自动化测序器和/或芯片上的测序器获得的FASTQ文件格式,例如以上所述之一。
另外,在某些实施例中,提供了改进的算法,用于更有效和/或更准确地执行局部重新比对、重复标记、碱基质量评分重新校准、变异检测、压缩和/或解压缩函数中的一个或多个。此外,如在下文中更详细描述的,在某些方面,这些基因产生和/或分析技术可以采用一种或多种算法,例如改进的算法,通过硬件实现,其以与其他多种软件相比较低的处理强度和/或者较少耗时的方式和/或更高的百分比准确度运行。
在具体实施方式中,提供了用于对DNA/RNA进行测序以产生基因序列数据和/或用于执行基因分析的技术平台,其中该平台可以包括以下一项或多项:测序、映射、比对、排序、局部重新比对、重复标记、碱基质量评分重新校准、变异检测、压缩和/或解压缩函数,和/或可以进一步包括如本文所述的三级处理方案。在某些情况下,实现这些平台函数中的一个或多个是为了产生和/或执行以下一项或多项:确定和/或重建受试者的共有基因组序列,将受试者的基因组序列与参考序列进行比较,例如,参考或模型基因序列,确定受试者的基因组DNA和/或RNA与参考对象的不同(例如变异检测)和/或用于对受试者的基因组序列进行三级分析,例如全基因组分析,例如全基因组变异分析和/或基因组分型分析、基因函数分析、蛋白质函数分析(例如蛋白质结合分析)、基因组和/或转录组的定量和/或组装分析、微阵列分析、固定样本分析分析、外显子组分析、微生物组分析和/或临床分析,例如癌症分析、NIPT分析和/或UCS分析,以及各种诊断和/或预防和/或治疗评估分析。
特别地,一旦基因数据已经被生成和/或被处理,例如在一个或多个初级和/或二级处理方案中,例如通过被映射、比对和/或排序,以产生一个或多个变异检测文件,例如,为了确定来自受试者的基因序列数据与一个或多个参考对象的不同,本公开的另一方面可涉及对所生成和/或处理的遗传数据执行一个或多个其他分析函数,例如进一步的,例如三级处理。例如,该***可以被配置用于进一步处理生成的和/或经二级处理的数据,例如通过运行它经过一个或多个三级处理管道,例如基因组管道、表观基因组管道、宏基因组管道、联合基因分型、MuTect2管道或其他三级处理管道中的一个或多个,例如通过本公开的装置和方法。例如,在各种情况下,可以提供附加处理层,例如用于疾病诊断、治疗处理和/或疾病预防,例如包括NIPT、NICU、癌症、LDT、AgBio和其他此类疾病的诊断、预防和/或治疗,采用由一个或多个本公开的初级和/或二级和/或三级管道产生的数据。因此,本文所公开的装置和方法可以用于生成基因序列数据,该数据可以用于生成一个或多个变异检测文件和/或其他相关数据,其可以进一步用于根据本文公开的装置和方法的三级处理管道,例如针对特定和/或一般疾病诊断以及预防性和/或治疗性治疗和/或可发展式物理疗法。
此外,在各种实施例中,如本文所公开的,生物信息学处理制度可用于创建一个或多个掩码,例如基因组参考掩码、默认掩码、疾病掩码和/或迭代反馈掩码,其可以例如与参考对象一起被添加到映射器和/或比对器中,其中掩码组被配置为识别特定区域或感兴趣的目标对象。例如,在一个实施例中,可以采用本文描述的方法和装置以创建基因组参考掩码,例如创建可以与参考对象一起加载到映射器和/或比对器中的掩码组,其中掩码组被配置为识别例如对于从业者或受试对象具有高度重要性和/或相关性的区域,和/或以便识别更易出错的区域。在各种实施例中,掩码组可以向映射器和/或比对器提供智能引导,例如基因组的哪些区域集中于提高质量。因此,可以以分层的方式创建掩码,以便根据各种特定的应用提供不同级别的指导或迭代指导。相应地,每个模板可以识别感兴趣的区域并为该区域提供最低质量目标。此外,可以采用默认掩码来提供指导,例如在基因组的已鉴定的,例如典型的“高值”区域上。这些领域可能包括已知的编码区域、控制区域等,以及众所周知会产生错误的区域。此外,疾病掩码或应用特定掩码可用于识别高重要性区域的掩码组,例如基于已知标记(例如癌症)需要非常高水平准确性的区域。此外,可以采用迭代反馈掩码,例如通过添加新的特设掩码,其可以通过利用来自三级分析***(如Cypher Genomics)的反馈来专门设计,其基于观察到的错误或不一致识别出关注区域。
如上所述,在一个方面,在软件中实现这些平台函数中的一个或多个,例如映射、比对、排序、重新比对、重复标记、碱基质量评分重新校准、变异检测、一个或多个三级处理模块、压缩和/或解压缩。在另一个实施例中,在软件中实现这些平台函数中的一个或多个,例如映射、比对、排序、局部比对、重复标记、碱基质量评分重新校准、解压缩、变异检测、三级处理、压缩和/或解压缩。
因此,在某些情况下,本文提出的方法涉及执行算法,例如用于执行一个或多个遗传分析函数的算法,例如映射、比对、排序、重新比对、重复标记、碱基质量评分重新校准、变异检测、压缩和/或解压缩,其中算法已根据其实施方式进行了优化。特别地,在软件解决方案中实现算法时,算法和/或其运算过程已经被优化,以便该介质更快和/或以更高的准确性执行。同样,在硬件解决方案中实现算法的函数时,硬件被设计为以优化的方式执行这些函数和/或其运算过程,以便该介质更快和/或以更高的准确性执行。例如,可以在迭代变异检测过程中采用这些方法。
因此,在一个方面,本文提出了用于实现生物信息学方案的***、设备和方法,例如用于执行一个或多个生成和/或分析基因数据的函数,例如经由一个或多个优化的算法和/或在一个或多个优化的集成电路(例如在一个或多个硬件处理平台上)上实现。因此,在一个实施例中,本公开提供了用于实现一个或多个算法的方法,该算法用于执行在基因组和/或生物信息学方案中生成和/或分析基因组数据的一个或多个步骤,例如所述步骤可以包括执行以下一项或多项:映射、比对、排序、局部重新比对、重复标记、碱基质量评分重新校准、变异检测、压缩和/或解压缩。在另一个实例中,提供了用于实现一个或多个算法函数的***和方法,该算法用于执行分析生物信息学方案中的基因组数据的一个或多个步骤,如本文所述,其中函数可以在硬件加速器上实现,其可以或可以不与一个或多个通用处理器和/或超级计算机耦合。
更具体地,在一些情况下,提供了用于对与受试者的基因组成有关的数据执行二级分析的方法。在一个实例中,要执行的分析可能涉及基于参考基因组对受试者基因组重建。例如,基于参考对象的映射涉及使用参考基因组,该参考基因组可以通过对单个或多个个体的基因组进行测序而生成,或者该参考基因组可以是将多个人的DNA合并,以便产生可与任何个体的DNA比较的原型标准参考基因组,例如用于确定和重构个体的基因序列和/或用于确定其基因组成和标准参考基因组之间的差异,例如变异检测。
更特别地,对受试者的测序DNA进行二级分析的原因是确定受试者的DNA与参考对象的不同之处。更具体地说,为了确定受试者的核苷酸序列中的一个或多个或所有与参考对象的差异。例如,任意两个随机的人的基因序列之间的差异是1,000个碱基对中有1个,由于整个基因组有超过30亿个碱基对,因此这意味着每个人有多达3,000,000个不同的碱基对。例如,确定这些差异可能是有用的(例如用于三级分析方案中),可用于预测发生疾病状态的可能性(例如由于基因异常引起的),和/或可能成功地预测疾病预防或者治疗方式,例如与受试者的DNA或由其产生的蛋白质相关的疾病预防或治疗方案。在各种情况下,基于参考基因对受试者基因组进行重建可能是有用的,可以确认一对一的结果并在需要时提高变异检测方***性。
在各种情况下,如上所述,可执行初级测序方案以对受试基因组的一个或多个区域进行重复采样。这些区域可以基于变异性增加的已知区域、可疑的变异区域(例如基于受试者的状况)和/或整个基因组来选择。在其基本形式中,如上所述,基于所执行的测序方案的类型,测序会产生readout(例如read),它是受试基因序列代码的数字表示。这些read长度通常基于正在使用的测序机器的类型来设计。例如,来自ROCHE的454自动测序仪通常产生的read长度为从100或150个碱基对到约1,000个碱基对;对于ILLUMINA,在其一些技术中,read长度通常设计为约100或101至约150个碱基对,在其他技术中的长度为250个碱基对;对于LIFE TECHNOLOGIES,在SOLiD技术中,read长度通常设计为约50至约60个碱基对,在Ion Torrent技术中长度为35至450个碱基对;并且对于HELICOS GENETIC ANALYSISSYSTEMS来说,read长度可以不同,但通常可以小于1,000个核苷酸长度。
然而,由于处理DNA样本需要产生特定尺寸的工程化read长度,因此这种处理既是劳动密集型又是化学密集型的,并且因为测序本身通常取决于测序机器的函数,所以在整个测序进行过程中可能存在一些错误,从而会在发生错误时将异常引入测序基因组的部分。这样的错误可能是有问题的,特别是在为了确定至少一部分基因组与参考标准或参考模型的不同而对受试者基因组进行重建的情况下。例如,机器或化学错误导致一个核苷酸发生改变,例如在read中,错误指示会产生实际上并不存在的变异。这可能导致不正确的变异检测并且可能进一步导致对患病状态等的错误指示。因此,由于在执行测序方案时可能发生机器、化学和/或甚至人为的错误,在许多情况下,期望在分析***中构建冗余,例如通过对部分或整个基因组进行重复采样。更具体地说,自动测序器产生一个FASTQ文件,检测出read序列具有位于给定位置的核苷酸,而与此同时,给定核苷酸在被检测位置上可能实际上是不正确的,例如碱基检测,因此通常需要采用重复采样等方法,以确保测序过程所产生的碱基检测可以被检测和纠正。
因此,在实施本文所述的方法时,在某些情况下,以这样一种方式执行初级测序方案以产生测序基因组,其中,对部分或整个基因组进行约10X、约15X、约20X、约25X、约30X、约40X,例如约50X或更多的重复采样。因此,在read长度被设计为长约50-60个碱基对的情况下,重复采样可产生约20亿至约25亿个read,或者read长度为约100或101个碱基对时,重复采样可产生约10至约12亿个read,并且read长度为约1,000个碱基对的长度时,测序器可以产生约5000万至约1亿个read,例如重复采样大约为40X。更具体地说,在一种情况下,由于40倍重复采样,在基因组的任意给定点处,预计将有40个read覆盖任意一个位置,尽管给定位置可能在一个read的起始处、另一个的中间或另一个的终止处,但预计将被覆盖约40次。
因此,重复采样可产生被大量read覆盖的测序基因组的区域,例如重复(duplications),例如多达约40个read,例如重复采样约为40X。这些至少部分duplications用于确定任意特定read中的任意给定变异是否是实际的基因组变异还是机器或化学(错误导致的)产物。因此,可以采用重复采样来提高重建受试者基因组的精确度,特别是在将受试者的基因组与参考基因组进行比较以确定受试者的基因序列与参考基因序列的不同之处的情况下。以这种方式,如下所述,可以确认重建序列和模型之间的任意给定变异是实际存在的变异而不是样本DNA或read比对软件等在初级处理中产生的错误。
例如,在构建个体的测序DNA的基因序列时,必须确定核苷酸在增长的核苷酸序列中的哪个位置。为了确定哪个核苷酸到达哪里,可以组织不同的read,并且可以建立覆盖重复位置的多个read堆积(pile-up)。这允许对覆盖相同位置的所有read进行比较,以便更精确地确定在任意给定位置处是否存在实际的变异,或者在所讨论的位置处的read堆积中任意read是否可能存在错误。例如,如果在40个read中只有一个或两个在位置X处具有特定核苷酸,并且其他所有38或39个read一致认同在该位置为不同的核苷酸,两个偏离的read则可能由于错误被排除在外,至少在这个特定的位置是错误的。
更特别地,当受试基因组的任何一个位置存在多个read时,对于任意给定的核苷酸位置可能存在多个重叠或堆积。这些堆积代表任何特定位置的覆盖范围,并且可以用于以更好的准确度确定受试者基因组的正确序列。例如,如所指出的,测序会产生read,并且在各种情况下,所产生的read是重复采样的,因此在不同位置将重叠不同的特定read。这种重叠对于确定实际样本基因组很有用,例如可以提高正确率。
因此,目的可以是多次增量地扫描参考基因组,如下文所述,以更准确地重建受试者的基因组,并且在需要确定受试者的基因组与不同的基因组的区别时,例如模型基因组,使用堆积(pile-up)可以更准确地识别错误,如化学、机器或read错误,并将它们与实际变异区分开来。更具体地说,在受试者在位置X处具有实际变异的情况下,堆积中的大部分read应该验证(例如包括)该变异。然后可以执行统计分析程序,例如本文所述,以从参考基因组中确定受试者的实际基因序列及其所有变异。
例如,在根据参考基因组对受试者的基因序列进行重建时,一旦已经产生了read(例如,read的堆积),接下来则可以将该read与一个或多个参考基因组进行映射和/或比对和/或排序(例如,使用越多的示例性参考基因组作为模型,则分析可能越好),从而重建受试者的基因组,进而产生一系列read,其已经根据参考基因组在链上匹配的所有可能位置进行映射、比对,并且在每个这样的位置,它们被给予关于它们实际上属于该位置的可能性评分。
因此,在各种情况下,一旦read已经产生,它们的位置被定位,例如read可能映射到参考基因组中的可能位置,并且它们的序列顺序经过比对,则可以确定受试者基因组实际的基因序列,例如通过对比对数据执行排序函数来确定。此外,一旦实际样本基因组已经知晓并与参考基因组比较,就可以确定两者之间的差异,确定并检测出参考基因组与样本基因组之间所有变异/偏差的列表。这两种基因序列之间的变异可能是由于许多原因造成的。
例如,可能存在单核苷酸多态性(SNP),例如其中受试者基因序列中的一个碱基已经被另一个碱基取代;可能有多个核苷酸被广泛取代;可能存在***或缺失,例如其中一个或多个碱基被添加到受试者的基因序列或从受试者的基因序列中删除,和/或可能存在结构变异,例如由于两条染色体交叉导致,和/或可能由于偏移而导致序列的改变。在各种情况下,生成包含受试者基因序列较参考序列的所有变异的变异检测文件。更具体地,在各种实施方式中,本公开的方法包括生成变异检测文件(VCF),该变异检测文件标识一个或多个(例如全部)个体被测DNA的基因变异,例如与一个或多个参考基因组相关。VCF的基本形式是变异的位置及其类型的列表:例如染色体3上的位置X处,“A”代替“T”等。
然而,如上所述,为了产生这样的文件,在确定其变异之前,必须对受试者的基因组进行测序和重建。但是,尝试生成这种组件时可能会出现若干问题。如上所述,测序过程中可能存在化学、测序仪和/或人为错误等问题。另外,可能存在遗传假象使重建出现问题。例如,进行这种组装的问题是有时候有很大一部分基因组会重复,例如包含相同核苷酸串的基因组长片段。因此,由于任何基因序列在任何地方都不是唯一的,因此可能难以确定被识别的read实际上在基因组中哪个位置被映射和比对。
例如,依赖于所采用的测序方案,可以产生更短或更长的read。在这样一种情况下较长的read是有用的:read越长,在基因组中多个位置出现的可能性越小,减少待评估的可能的位置也可以加速***。然而,read越长,也可能越成问题,因为它们越可能包括真实或错误的变异(例如由SNP、InDel(***或缺失)或机器错误等引起的),使read与参考基因组不匹配。另一方面,较短的read是有用的,因为read越短越不可能覆盖编码变异的位置。然而,较短read的问题是read越短,其出现在基因组中的多个位置的可能性就越大,因此需要额外的处理时间和资源,以便确定所有可能位置中的哪一个位置是最有可能的它对准的实际位置。理想地,例如通过实践本文公开的方法可以实现的是可以产生变异检测文件,其中生成测序基因组(查询序列)的列表显示所有变异碱基对在哪里,确保每个被称为“变异”的都是实际的变异,而不仅仅是化学或机器或其他人为的错误。
因此,变异主要有两种可能。其一,例如,在特定位置存在实际变异,例如在特定位置,人的基因组确实与参考基因组不同,例如由于SNP(一个碱基取代)、***或缺失(一个或多个核苷酸长度)导致的自然变异,和/或结构变异,例如来自一个染色体的DNA物质与不同的染色体或leg交叉,或在DNA某个区域复制两次。其二,由化学或机器、测序器或比对器或其他人为错误导致read数据出现问题,进而引起变异。因此,使用本文公开的方法可以补偿这些类型的错误,并且更具体地,可区分由化学、机器或人为造成的错误引起的变异,以及测序基因组中的实际变异。更具体地说,已经开发了如本文描述的方法、设备和使用其的***,可清楚地区分这两种不同类型的变异,并因此更好地确保所生成的任何检测文件的准确性,从而正确识别真实的变异。
此外,在各种实施例中,一旦已经重建了受试者的基因组和/或已经生成了VCF,则可以将这些数据进行三级处理以对其进行解释,例如用于在识别这个人可能患有哪些疾病时确定这些数据意味着什么,和/或用于确定该受试者采用哪些治疗或生活方式可能改善和/或预防患病状态。例如,可以分析受试者的基因序列和/或其变异检测文件以确定临床相关的基因标记,其指示疾病状态的存在或可能性和/或指示所提出的治疗或预防方案对该受试者可能具有的功效。然后可以使用该数据向受试者提供一种或多种治疗或预防方案,以便改善受试者的生活质量,例如治疗和/或预防疾病。
更具体地说,随着信息技术的进步,医学科学技术也已经得到了发展,这种进步提高了存储和分析医学数据的能力。因此,一旦确定了一个或多个个体的基因变异,可以使用这种变异检测文件信息来开发医学上有用的信息,其又可用于确定(例如使用各种已知的统计分析模型)健康相关数据和/或医疗有用信息,例如用于诊断目的,例如诊断疾病或潜在因素、临床解释(例如寻找代表疾病变异的标记)、在各种临床试验中是否应该包括或排除受试者,以及其他目的。由于存在由遗传畸形引起的有限数量的疾病状态,因此在三级处理中,可以查询某种类型的变异(例如那些已知与发生疾病状态相关的变异),例如通过确定一个或更多基于基因的患病标记物是否包括在受试者的变异检测文件中。
因此,在各种情况下,本文公开的方法可包括针对已知的疾病序列变异分析(例如扫描)VCF和/或产生的序列,例如在基因组标记的数据库中,以识别VCF中和/或所产生的序列中是否存在基因标记,并且如果存在的话,则检测出是否已存在或具有潜在的遗传诱导的疾病状态。由于存在大量已知的基因变异和大量个体患有由这种变异引起的疾病,因此在一些实施方案中,本文公开的方法可能需要产生一个或多个连接测序数据的用于整个基因组和/或与其有关的变异检测文件以及患病状态(例如来自一个或多个个体)的数据库,和/或用于搜索所生成的数据库以确定特定受试者是否具有会使他们患有某种疾病的遗传组合物。此类搜索可涉及将一个完整基因组与一个或多个其他基因组或一个基因组的片段(例如仅包含该变异的片段),与一个或多个其他基因组的一个或多个片段进行比较,例如在参考基因组或其片段的数据库中。
此外,应理解,以这些方式采用的基因序列可以是DNA、ssDNA、RNA、mRNA、rRNA、tRNA等。因此,尽管本公开全文提及了用于分析基因组DNA的各种方法和设备,但在各种情况下,本文公开的***、设备和方法同样适用于包括DNA、ssDNA、RNA、mRNA、rRNA、tRNA等所有类型的遗传物质。此外,在各种情况下,本公开的方法可以包括:分析来自受试者的生成的基因序列,例如DNA、ssDNA、RNA、mRNA、rRNA、tRNA等,并由此确定可能由基因序列引起的蛋白质变异,和/或确定和/或预测其患病状态(例如由蛋白质表达错误引起)的可能性。应当指出,所获得的基因序列可以表示内含子或外显子,例如,基因序列可以仅为DNA的编码部分,例如获得外显子组,并且使用已知的处理技术可仅测序编码区域或非编码区域,这可使测序和/或处理更快地进行,尽管涉及更困难的样本准备程序。
目前,本文描述的这些步骤和分析通常使用不同的分析机器、在不同的位置、在各种不同且不相关的步骤中执行。因此,在各个方面中,本公开的方法和***由一个设备和/或在一个位置执行,例如结合被配置为生成基因序列数据的自动测序器或其他装置。在各种情况下,可以在相同位置或多个远程位置采用多个装置,并且在一些情况下,这些方法可以涉及两个或更多个处理单元,该处理单元被布置在两个或更多个位置处。
例如,在各个方面中,可以提供管道,其中管道包括在一个或多个个体的基因组的基因序列上执行一个或多个如本文所述的分析函数,例如从自动测序器获得的数字格式的数据,例如FASTQ。待执行的典型管道可以包括一个或多个受试者的一种或多种测序遗传物质(例如部分或全部基因组),所述遗传物质可以包括DNA、ssDNA、RNA、rRNA、tRNA等,和/或在一些情况下,遗传物质可以代表编码区或非编码区,如外显子组,DNA的游离体。管道可以包括执行一个或多个碱基检测和/或错误校正操作(例如数字化基因数据),和/或可以包括对基因数据执行以下一个或多个函数:映射、比对和/或排序。在某些情况下,管道可以包括对数字化基因数据执行一个或多个:重新比对、重复数据删除(deduplication)、碱基质量或评分重新校准、缩减和/或压缩、和/或解压缩。在某些情况下,管道可能包括对基因数据进行变异检测操作。
因此,在各种情况下,本公开的管道可以包括一个或多个模块,其中这些模块被配置用于执行一个或多个函数,例如对基因数据(例如测序基因数据)进行碱基检测和/或纠错操作和/或映射和/或比对和/或排序。并且在各种情况下,管道可以包括一个或多个模块,其中模块被配置用于对基因数据执行一个或多个:局部重新比对、重复数据删除、碱基质量评分重新校准、变异检测、缩减和/或压缩、和/或解压缩。这些模块中的多个可以由软件或在硬件上执行或远程执行,例如通过软件或硬件(例如在云或远程服务器和/或服务器银行上)来远程执行。
另外,管道中的许多步骤和/或模块是可选的和/或可以以任何逻辑顺序布置和/或完全省略。例如,本文公开的软件和/或硬件可以包括或不包括碱基检测或序列校正算法,例如可能担心这些函数会导致统计偏差的情况。因此,***包括或不包括碱基检测和/或序列校正函数,这取决于所期望的准确性和/或效率水平。并且如上所述,一个或多个管道函数可以用于生成受试者基因组序列,例如通过基于参考组的的基因组重建。同样如上所述,在某些情况下,管道的输出是变异检测文件,指示基因组或其部分中的部分变异或全部变异。
因此,如上所述,执行测序方案的输出(例如如上述的一个或多个)通常是受试者的遗传物质的数字表示,例如以FASTQ文件格式。但是,也可以采用已经被数字转录的图像记录(autorad)。更具体地说,来自测序方案的输出可以包括多个read,其中每个read包括核苷酸序列(例如一串),其中每个核苷酸的位置已经被检测,以及多个质量评分,表示被测核苷酸的错误概率。然而,这些输出的质量可以通过各种预处理方案来改进,以便获得更高质量的评分,其中这些方案中的一个或多个可以用于本公开的方法中。
例如,在某些情况下,可处理原始FASTQ文件数据以清理从测序器/读取器获得的初始碱基检测(base calls),例如在初级处理阶段中,例如在上文所述的二级处理之前。具体而言,测序器/读取器通常分析测序数据(例如荧光数据,其指示哪个核苷酸处于什么位置),并且将图像数据转换为具有质量评分的碱基检测,例如其中质量评分基于比较每个位置的荧光亮度。可以采用专门的算法,例如在初级处理阶段,以正确地分析荧光中的这些区别,以便更准确地进行适当的碱基检测。如上所述,该步骤可以被包括在管道步骤中,并且可以通过软件或硬件或两者来实现,但是在这种情况下将是初级处理平台的一部分。
另外的预处理步骤可以包括纠错函数,其可以包括尝试从FASTQ文件中获取数百万到数十亿个read并且利用与碱基检测和质量评分有关的信息来纠正机器测序的部分错误,该质量评分可在进行任意进一步处理(例如映射、比对和/或排序函数等)前获得。例如,可以分析FASTQ文件内的read以确定在任何read中是否存在在其他read中出现的任何子序列,这是由于重复覆盖可以增加read中的子序列正确率。这可以通过以下步骤实现:创建包含每个read中所有任意给定长度为k的k-mer的散列表,并且存储它们每个的频率以及紧随其后的碱基和概率。然后,可以使用散列表对每个read重新扫描。由于read中的每个k-mer可以在散列表中查找,所以可以评估紧跟在该k-mer之后的碱基是否可能是正确的。如果不正确,那么它可以被散列表中下一个最有可能的替换。随后read的k-mers将包含校正后的碱基作为该位置的值并重复该过程。这可以非常有效地纠正错误,因为重复采样可以收集准确的统计数据,以预测每个k-mer后面会发生什么。但是,如上所述,这种修正可能会增加***和数据的统计偏差,例如由于错误修正而导致,因此需要时可以跳过这些程序。
相应地,根据本公开的各方面,在各种情况下,本公开的方法、设备和/或***可以包括获取经过预处理或未经过预处理的read数据,例如通过直接从自动测序器的FASTQ文件获得,以及将所得的数据执行以下一个或多个函数:映射、比对和/或排序。执行这些函数可能是有用的,因为如上所述,在各种情况下,通常由各种自动测序器产生的测序数据(例如read)具有比被分析的整个基因组序列短得多的长度,并且由于人类基因组通常具有多个重复部分,并且已知其中具有各种重复样式(pattern),因此可能存在多个位置,即任何给定的read序列可对应于人类基因组中的一个片段。因此,考虑到给定read与基因组序列匹配的所有可能性,例如由于基因组中的各种重复序列等,原始read数据可能无法清楚地指示哪一种可能性实际上是从中得出的正确的位置。因此,对于每个read,需要确定read片段实际上映射在基因组中的什么位置。另外,确定read的顺序排列也是有用的,以便确定受试者实际序列同一性,和/或确定序列每个部分的染色***置也是有用的。
在各种情况下,本公开的方法可以涉及对FASTQ文件的原始read数据进行映射、比对和/或排序,以便找到给定read可能对齐的所有可能位置,和/或确定受试者的实际序列,和/或确定序列每个部分的染色***置。例如,可以采用映射将生成的read映射到参考基因组,并且由此找到每个read看起来与基因组良好匹配的位置,例如,找到将给定read对齐到参考基因组具有较高评分的所有位置。因此,映射可能涉及从FASTQ文件中取一个或多个(例如全部)原始或预处理的read,并将read与一个或多个参考基因组进行比较,并确定read可与参考基因组匹配的位置。在其基本形式中,映射涉及找到参考基因组中的位置,其中从测序器获得的一个或多个FASTQ read看起来与该位置匹配。
类似地,可以采用比对函数以评估个体read针对参考基因组的窗口的所有候选位置,以确定read序列与基因组最佳比对的位置和方式。然而,由于替换、***、缺失、结构变异等可能妨碍read准确比对,因此执行比对可能是困难的。因此,有几种不同的方法可以进行比对,但要这样做可能需要对read进行改变,才能获得适当的比对结果,从而获得较低的置信度分数。例如,与参考基因组相比,任意给定的read都可能具有替换、***和/或缺失,并且在进行比对时需要考虑这些变异。
因此,给出预测比对的同时也可以给出预测比对正确的概率评分。该评分表示在read可能对齐的多个位置中的任意给定read的最佳比对。例如,比对评分的预测取决于给定read与潜在映射位置相匹配的程度,并且可能包括拉伸、压缩以及改变read的位数以获得最佳比对。
评分反映read为了适应参考组所做的改变方式。例如,为了在read和参考组之间比对,可能需要在read中***一个或多个空位,其中每个空位的***代表read在参考上的缺失。同样,可能需要在read中进行删除,其中read的每个删除表示参考中的***。此外,各种碱基可能需要改变,例如由于一个或多个替换。这些更改都是为了使read更准确地与参考比对,但每次更改都会损失质量评分,该评分是衡量整个read与参考组某个区域的匹配程度。然后通过查看read所有可映射到基因组的位置,并比较每个位置的评分,选择最高分数,这样来确定质量评分的置信度。更具体地说,如果多个位置具有高质量评分,则置信度较低,但是如果第一和第二最佳评分之间的差值很大,则置信度较高。最后,对所有提出的read和置信度分数进行评估,并选择最适合的。
一旦read被分配了相对于参考基因组的位置,该参考基因组由识别read属于哪个染色体的标识及其与该染色体起始的偏移量组成,则可以按照位置对它们进行排序。这使下游分析能够利用本文所述的各种重复采样方案。所有与基因组中给定位置重叠的read可能在排序后彼此相邻,并且它们可以堆积并容易检查以确定它们中的大多数是否与参考一致。如果不,如上所述,则可以标记变异。
如上所述,从测序仪获得的FASTQ文件包含多个read,例如数百万至十亿或更多,该read由表示个体的一部分或全部基因组的短串核苷酸序列数据组成。一般而言,映射涉及将read映射到参考基因组中的所有位置以找到匹配的位置。例如,取决于read的大小,可以有一个或多个位置,其中read基本上与参考基因组上的相应序列匹配。因此,本文公开的映射和/或其他函数可以用于确定参考基因组中的一个或多个read可能匹配的所有位置中的哪个位置实际上是它们映射到的真实位置。
可以将每个read与32亿参考基因组中的每个位置进行比较,以确定read与参考基因组的哪个位置(如果有的话)相匹配。例如,这可以在read长度接近约100,000个核苷酸,约200,000个核苷酸,约400,000个核苷酸,约500,000个核苷酸,甚至约1,000,000个或更多个核苷酸的情况下完成。然而,在read的长度明显较短的情况下,例如5000万个或更多read,例如10亿个read的情况下,该处理可能花费很长时间并且需要大量的计算资源。因此,如本文所述,已经开发出几种算法,用于以更快的方式将FASTQ read与参照基因组进行比对。例如,如上所述的,可以采用一个或多个算法,以便将测序仪产生的一个或多个read映射(例如,在FASTQ文件中),并将它们与参考基因组进行匹配,从而确定受试read可能映射在参考基因组的什么位置。
例如,在各种方法中,生成参考的索引,使得read或部分read可以在索引中查找,检索参考中的位置的指示,以便将read映射到参考组。这种参考索引可以以各种形式构建并以各种方式查询。在一些方法中,索引可以包括前缀和/或后缀树。在其他各种方法中,索引可以包括参考的Burrows/Wheeler变换。在其他方法中,索引可以包括一个或多个散列表,并且可以在read的一个或多个部分上执行散列函数,以试图将read映射到参考组。在各种情况下,可以按顺序地或同时执行这些算法中的一个或多个,以便准确地确定一个或多个(例如大部分或每个)read与参考基因组正确匹配的位置。
这些算法中的每一个可能具有优点和/或缺点。例如,可以对序列数据执行前缀和/或后缀树和/或Burrows/Wheeler变换,构建参考基因组的索引和/或查询为树状数据结构,从read的单个碱基或短的子序列开始,子序列在read中递增地扩展,每个递增扩展促进对索引的访问,在树状数据结构中追踪路径,直到子序列变得足够独特,例如达到最佳长度,和/或在树状数据结构中达到叶节点,叶节点或最后访问的树节点指示read可能源自参考基因组中的一个或多个位置。因此,这些算法通常对于可以通过查询索引来映射的read子序列没有固定的长度。然而,散列函数通常采用固定长度比较单元,该单元可能是read的整个长度,但通常是其长度的一部分(子部分),其子部分被称为种子(seed)。这种种子可以更短或更长,但与前缀和/或后缀树和/或Burrows/Wheeler变换不同,散列函数中使用的read的种子通常具有预先选定的固定长度。
前缀和/或后缀树是从参考基因组构建的数据结构,使得从父节点到子节点的每个链路被标记或与核苷酸或核苷酸序列相关联,并且每条路径从根节点通过各种链路和节点追踪其相关聚集核苷酸序列与参考基因组的一些连续子序列相匹配的路径。由这条路径到达的节点隐含地与从其根路径跟踪的参考子序列相关联。从根节点出发,前缀树中的子序列在参考基因组中向前生长,而后缀树中的子序列在参考基因组中向后生长。前缀树和后缀树都可以用在混合前缀/后缀算法中,以便子序列可以在任一方向上增长。前缀和后缀树还可以包含附加链接,例如从与一个参考子序列相关联的节点跳转到与较短参考子序列相关联的另一个节点。
例如,用作参考基因组的索引的树状数据结构可以通过追踪贯穿树的路径来查询,所述路径对应于被映射的read的子序列,该路径通过将核苷酸添加到子序列,使用添加的核苷酸来选择下一个要遍历树的链接,并根据需要进行深入处理,直到生成唯一的序列。该唯一序列也可以被称为种子,并且可以表示序列树数据结构的分支和/或根。或者,可以在积累的子序列完全唯一之前终止树下降,从而种子可以映射到参考基因组中的多个位置。特别地,可以针对参考基因组的每个起始位置构建树,然后可以将生成的read与树的分支和/或根进行比较,并且可以将这些序列遍历树来找到参考基因组中read适合的位置。更具体地说,可以将FASTQ文件的read与参考树的分支和根进行比较,并且一旦与之匹配,就可以确定参考基因组中read的位置。例如,样本read可以沿着树进行,直到到达某个位置,由此确定累积的子序列足够唯一以便识别read确实与参考中的特定位置对准,例如穿过树直到达到叶节点。
然而,这样的前缀和/或后缀树的缺点在于,它是一个巨大的数据结构,在沿树查询时必须多次访问以便将read映射到参考基因组。另一方面,如下面更详细描述的,散列表函数的优点在于,一旦构建,它通常只需要一次查找来确定种子和参考之间可能在何处匹配(如果有)。前缀和/或后缀树通常在确定是否存在匹配以及在哪里存在匹配时采用多个查找,例如5,10,15,20,25,50,100,1,000或更多等。此外,由于DNA的双螺旋结构,还可能需要构建和搜索反向互补树,因为还可能需要找到参考基因组的反向互补。关于上述,数据树被描述为从参考基因组构建,然后与来自受试者的测序DNA的read进行比较。然而,应该理解的是,数据树可以最初由参考序列或样本read,或两者建立,并如上所述进行相互比较。
或者,除了采用前缀或后缀树之外,可以对数据执行Burrows/Wheeler变换。例如,可以使用Burrows/Wheeler变换以紧凑格式(例如在被分配用于存储参考基因组的空间中)来存储抽象地等效于前缀和/或后缀树的树状数据结构。在各种情况下,所存储的数据不是树状结构,而参考序列数据处于线性列表中,该线性列表可能已被加扰成不同的顺序,以便以非常特定的方式对其进行转换,使得伴随算法允许根据样本read对参考对象进行搜索,以便有效地在“树”中进行查询。Burrows/Wheeler变换的一个优点是,比如在前缀和/或后缀树上,通常需要更少的内存来存储,而散列函数的一个优点是它支持可变的种子长度,因此它可以一直进行搜索直到确定唯一序列并找到匹配。例如,与前缀/后缀树一样,无论给定序列是独特的还是映射到足够少的参考位置,所需的许多核苷酸都决定了种子的长度。而对于散列表,种子全部具有相同的预定长度。然而,Burrows/Wheeler转换的一个缺点是它通常需要多次查找,例如两次或多次查找,例如树中的每一次查找。
或者,除了对参考基因组和受试序列数据采用前缀/后缀树和/或Burrows/Wheeler变换以找出其中一对一映射定位的方法之外,还有另一种方法,该方法涉及生成散列表索引和/或执行散列函数。散列表索引可以是从参考基因组的序列构建的大参考结构,然后可以将其与read的一个或多个部分进行比较以确定一个可以与另一个匹配的位置。类似地,散列表索引可以从read的一部分开始构建,然后可以将其与参考基因组的一个或多个序列进行比较,并由此用于确定哪个可以与另一个匹配。
更具体地,在本文所述的任何映射算法中,例如用于在本文公开的任何方法步骤中实施的,可以在软件或硬件中采用一种或全部三种映射算法或本领域中已知的其它算法以便将测序DNA的一个或多个序列映射到一个或多个参考基因组的一个或多个序列。如以下更详细描述的,所有这些操作可以经由软件或通过硬连线来执行,例如集成电路(例如芯片上),例如作为电路板的一部分。例如,可以将这些算法中的一个或多个的运作嵌入到芯片上,例如FPGA(现场可编程门阵列)ASIC(专用集成电路)芯片或结构化ASIC(专用集成电路)芯片,并且由于其在这种硬件中的实现,因此可以被优化以便更高效地执行。
另外,这些映射函数中的一个或多个(例如,两个或全部三个)可以形成模块,例如映射模块,其可以形成***(例如,管道)的一部分,该***用于确定个体的实际完整的或部分的基因组序列。映射函数的执行返回的输出可以是关于一个或多个(例如,每个)read到一个或多个参考基因组的可能性列表。例如,每个映射read的输出可以是read可能被映射到参考基因组中的匹配序列的可能位置的列表。在各种实施例中,可以为至少一个(例如种子)read(如果不是全部read的话)和参考组找到精确匹配。因此,在各种情况下,所有read的所有部分不必完全匹配参考基因组的所有部分。
此外,这些函数中的一个或全部可以以某种方式来编程,能进行精确或近似的匹配和/或编辑(例如结果的编辑)。因此,所有这些过程也可以被配置为在需要时进行不精确匹配(例如根据预选变异,例如80%匹配,85%匹配,90%匹配,95%匹配,99%匹配或者更多等)。然而,如下文中更详细描述的,不精确匹配可能更昂贵(例如需要大量的时间和处理能力),因为它可能需要进行任意数量的编辑,例如编辑可以是SNP或***或删除一个或多个碱基,例如1个或2个或3个或5个或更多的编辑,以实现可接受的匹配。这种编辑可能会更广泛地用于实施散列方案或实现前缀和/或后缀树和/或执行Burrows/Wheeler变换。
关于散列表,可以以许多不同方式产生散列表。在一个实例中,可以通过将参考基因组分成标准长度的片段(例如,长度为约16至约30个核苷酸或更多的种子,例如约18至约28个核苷酸),将它们格式化为可搜索的表,并且对所有参考片段进行索引标记,从中可以比较测序DNA,例如一个或多个read或其一部分,以确定匹配。更具体地说,散列表索引可以通过将参考基因组分解为已知的、均匀长度的核苷酸序列的片段(例如种子),并将它们以随机顺序存储到参考表中的单元中来生成。这可以针对部分或整个参考基因组完成,以便构建实际的参考索引表,其可以用于比较参考基因组的部分与一个或多个read的部分(例如来自FASTQ文件)。
然后,可以以大致相同的方式对FASTQ文件中的一部分(例如大部分或全部)read重复该方法,以便生成合适的(例如选定的)长度的种子。例如,可以使用FASTQ文件的read来产生预定长度的种子,该种子可以被转换成二进制形式并且通过散列函数馈送并且适合散列表索引,其中种子的二进制形式可以与参考基因组片段的二进制匹配,从而给出样本种子在基因组中与参考基因组中相匹配的位置。
例如,在read长度约为100个碱基的情况下,典型的种子长度可以是约一半或约三分之一,例如约27至约30个碱基。因此,在这种情况下,对于每个read,可以产生多个种子覆盖read,例如取决于read长度和/或种子长度的大约3或4个种子。然后可以将每个种子转换成二进制形式和/或将其馈送到散列表中,获得关于其相对于参考基因组的位置的可能结果。在这种情况下,不需要将整个read与整个参考基因组中的每个可能位置进行比较,而仅需要将一个read的一部分(例如每个read产生的一个或多个样本种子),例如与包含参考基因组的相同种子部分的索引进行比较。因此,在各种情况下,散列表可以被配置为仅通过一次存储器查找,即可确定样本种子以及read相对于参考基因组的位置。但是,在某些情况下,可能需要执行散列函数并从一个read中查找一个或多个种子重叠的部分。在这种情况下,待生成的种子可以以其序列的至少一部分彼此重叠的方式形成。例如,这可能有助于避免机器和/或人为错误或受试对象和参考基因组之间的差异,并促进精确匹配。
在某些情况下,通过散列函数创建散列表并执行一个或多个不同比较。散列函数部分是一个扰码器。它需要一个输入,并给它一个看起来是随机的顺序。在这种情况下,散列函数扰码器将参考基因组分解成预选长度的片段并将它们随机放置在散列表中,然后数据可以均匀地存储在整个存储空间中。或者,存储空间可以被分段和/对存储进行不同加权。更特别的是,散列函数是一个函数,它接受任意输入并给出一个数字,例如二进制模式输出,该数字通常可以是随机的,除了对于任意给定的输入,总是返回相同的输出。因此,即使馈送到散列表中的两个输入几乎相同,因为它们不是完全匹配,因此会返回两个完全随机不同的输出。
此外,由于遗传物质可以由四种核苷酸碱基组成,例如“A”,“C”,“G”和“T”(在RNA的情况下为“U”),待馈送到散列表中的个体核苷酸序列(例如参考片段和/或read或其部分)可以被数字化并且以二进制格式表示,例如其中四个碱基中的每一个代表两位数字代码,例如“A”=00,“C”=01,“G”=11,“T”/“U”=10。在某些情况下,这个二进制“种子”值被随机放置在散列表中一个与其二进制表示的值相等的已知位置。因此,散列函数用于将参考基因组分解为参考种子的二进制表示,并且基于其数值,将每个二进制种子数据***散列表中的随机空间(例如,单元)。除了这个数字二进制代码,例如访问密钥,每个单元还可以包括实际参考基因组中该片段的实际入口点,例如参考位置。因此参考位置可以是指示基因组中原始参考种子的位置的数字。也可以针对重叠位置进行这样的操作,重叠位置以随机顺序放入表格中,例如通过散列函数。在这种情况下,可以生成散列表索引,其中该索引包括一个或多个参考基因组的一部分或其全部的片段的数字二进制代码,作为一个或多个个体的遗传物质的一个或多个序列,例如一个或多个read,或其部分的参考。
当用散列表和/或函数实现模块(例如模块管道中的模块)时,可以在软件(例如,位宽是上述种子中碱基数量的2倍)和/或硬件上实现,如上所述,可以创建散列表,使得参考种子的二进制表示可以是任意期望的位宽。由于种子可以长或短,因此二进制表示可以更大或更小,但是通常应该选择种子长度足以使其唯一,但不能太长以至于难以匹配基因组参考的种子和样本read的种子,例如由于错误或变异。例如,如上所述,人类基因组由约31亿个碱基对组成,典型的read长度可以是约100个核苷酸。因此,有用的种子长度可以是约16或约18个核苷酸或更少的长度至约28或约30个核苷酸或更多的长度。例如,在某些情况下,种子长度可以是20个核苷酸的片段长度。在其他情况下,种子长度可以是28个核苷酸的片段长度。
因此,在种子长度是20个核苷酸的片段长度的情况下,每个片段可以由40位输出(例如,种子的40位二进制表示)数字表示。例如,选择2位来表示每个核苷酸,例如A=00,C=01,G=10和T=11,一个种子20个核苷酸×2位/核苷酸=40位(5字节)向量,例如数字。在种子长度是28个核苷酸长度的情况下,种子的数字表示(例如二进制)可以是56位向量。因此,在种子长度约为28个核苷酸长度的情况下,可以使用56位来处理28个核苷酸种子长度。更具体地,56位表示被随机放置在散列表中的参考基因组的种子的二进制形式,可以使用另外的56位来对与参考种子进行匹配的read的种子进行数字表示。这56位可以通过一个多项式进行运算,该多项式以1:1的对应关系将56位转换为56位。在不增加或减少输出位数的情况下,执行此操作会使相邻输入值的存储位置随机化,以便不同种子值将在所有可能的存储位置中均匀分布。这也可以减少散列表中相同位置的值之间的冲突。特别地,本文描述的典型散列表实施方式中,仅56位的一部分被用作查找地址来选择存储位置,并且其余位被存储在用于确认匹配的位置。如果没有使用散列函数,则具有相同地址位但存储位不同的大量模式将不得不共享相同的散列位置。
更具体地说,通过软件和/或硬件将参考基因组种子随机放置在散列表中来创建散列表的方式与read中被散列的种子访问散列表的方式之间存在相似性,使得它们都以相同的方式访问表格。由于它们以相同方式访问散列表(例如相同的输入模式),因此相同的参考种子和样本read的种子(例如具有相同二进制代码)将最终在表格中的相同位置(例如地址)中。这是执行样式匹配最快的已知方法。每次查找都需要几乎恒定的时间来执行。这可能与Burrows-Wheeler方法形成对比,Burrows-Wheeler方法每次查询需要许多探针(数量可能因需要多少位查找唯一样式而不同)以找到匹配,或者采用log2(N)探针的二进制搜索方法,其中N是表中种子样式的数量。
此外,即使散列函数可以将参考基因组分解成任意给定长度(例如,28个碱基对)的种子片段,并且可以将种子转换为56位的数字表示(例如二进制),但是不需要同时或以相同的方式完全访问所有的56位。例如,散列函数可以以这样的方式来实现:每个种子的地址由少于56位指定,例如大约20至大约45位,例如大约25至大约40位,例如大约28到约35位(包括约28到约30位),其可以用作初始密钥或地址以访问散列表。
例如,在某些情况下,大约26到大约29位可以用作散列表的主要访问密钥,留下大约27到大约30位,这可以用作用于双重检查第一密钥,例如,如果第一和第二密钥都到达散列表中的同一单元,则相对清楚的是,所述位置是它们所属的位置。具体而言,为了节省空间并且减少散列模块的存储需求和/或处理时间,例如当以硬件实现散列表和/或散列函数时,表示测序read种子的原始56位中,表示主要访问密钥的大约26到大约29位可以由散列函数使用以包括主地址,留下可以在双重检查方法中使用的约27至约30位。
更具体地,在各种情况下,表示参考种子的二进制形式的56位中,可以采用其中大约26至大约29位来包括主地址,该主地址由26位至29位指定,随后在散列表中分配一个随机地址,该散列表又可以填充参考种子最初来自的位置以及种子的其余27到30位,从而可以确定精确匹配。表示被转换成二进制形式的受试基因组的read的查询种子也可以被进行同样的函数散列,使得它们也由包括主要访问密钥的29位来表示。如果表示参考种子的29位与表示查询种子的29位完全匹配,则它们都指向散列表中的相同位置。如果与参考种子完全匹配,那么我们期望在包含剩下相同的27到30位的位置找到entry。在这样的情况下,然后可以查找参考序列的29位指定地址,以识别来自查询read的查询种子在参考对象中的对准位置。
然而,关于剩下的27到30位,这些位可以表示二级访问密钥,其也可以被导入到散列表中,例如用于确保主要访问密钥的前26到29位。由于散列表表示28核苷酸/56位序列的理想1:1加扰,并且只有大约26至大约29位用于确定地址,所以已经基本上对主要访问密钥的这些26至29位进行了检查,从而确定第一次访问的正确地址。因此,这些数据不需要确认。但是,必须检查二级访问密钥的剩余大约27到大约30位。因此,查询种子剩余的大约27到30位被***散列表中以完成匹配。这比存储56位全部密钥更短,因此节省空间并减少模块的所有存储需求和处理时间。
因此,散列表可以被配置为索引,将一个或多个参考基因组的已知序列分解成预定长度的序列(例如种子,例如长度为28个核苷酸),随机组成一个表。从受试者基因组DNA或RNA测序得到的一个或多个测序read或其“种子”部分,例如根据散列函数通过散列表索引,因此在索引中查找种子。从表中获得一个或多个位置(例如参考基因组中的位置),其中样本种子匹配参考基因组中的位置。使用暴力线性搜索来扫描参考基因组中的种子匹配位置,必须检查超过30亿个位置。但是,通过使用散列法,每个种子查找可以在大约恒定时间内进行。通常情况下,该位置可以通过一次访问来确定。在多个种子映射到表中的相同位置的情况下,可以进行一些额外的访问以找到当前查找的种子。因此,即使对于给定的100个核苷酸长度read可以有30M或更多的可能位置以匹配参考基因组,散列表和散列函数可以快速地确定read显示在参考基因组的什么位置。因此,通过使用散列表索引,无需搜索整个参考基因组以确定read对准的位置。
如上所述,染色体具有双螺旋结构,该结构由结合在一起以形成双螺旋的两条相对的核酸序列互补链组成。例如,当形成双螺旋结构时,这些互补碱基对按照下式结合:“A”结合“T”,“G”结合“C”。因此产生彼此互补的两条相等且相反的核酸序列链。更特别地,一条链的核苷酸序列的碱基将通过它们在相对链上的互补碱基来形成镜像,产生两条互补链。然而,DNA的转录只发生在一个方向上,从DNA的一端开始并向另一端移动。因此,事实证明,对于DNA的一条链,转录发生在一个方向,对于其互补链,转录发生在相反的方向。因此,DNA序列的两条链反向互补,即如果将DNA的一条链的序列顺序与另一条链的序列顺序相比较,可以看到的是两条链其中一条链的核苷酸字母为它们在另一条链中互补,例如“As”为“Ts”和“Gs”为“Cs”,反之亦然,它们的顺序相反。
由于DNA是双螺旋结构,因此在对DNA测序之前的样品制备期间,可以将染色体拉开(例如变性),分离成单独的链,溶解成预定长度的更小片段例如长度为100-300个碱基,然后对其进行测序。在测序之前可以将这些链分开,使得只有一条链被测序。但是,通常不分离DNA链,因此DNA的两条链都被测序。因此,在这种情况下,FASTQ文件中大约一半的read可能为反向互补。
当然,参考基因组的两条链(例如补体和反向互补)可以进行如上所述的处理和散列,然而这会使得散列表变为两倍大,并且使散列函数变为两倍长,例如,可能需要大约两倍的处理量来比较互补序列和反向互补序列两种基因组序列。因此,为了节省存储空间、降低处理能力和/或减少处理时间,在各种情况下,只需要将模型基因组DNA的一条链存储在散列表中作为参考。
然而,根据典型的测序方案,例如受试DNA的两条链尚未彼此分离,从测序DNA产生的任意read可能来自链、补体或其反向互补体,因此难以确定哪条链正在被处理,反向互补的补体。更具体地说,在各种情况下,由于仅需要使用参考基因组的一条链来产生散列表,因此测序方案产生的一半read可能不匹配模型参考基因组特定链,例如补体或其反向互补体,例如,因为正在处理的read的一半时间是相对于参考基因组的散列片段的反向补充。因此,只有从DNA的一条链产生的read与参考基因组的索引序列相匹配,而从另一条链产生的read在理论上是它们的反向互补序列,并且不会匹配参考基因组中的任何位置。此外,另外的复杂情况可能是,对于与存储的参考基因组链反向补充的任何给定的read,例如偶然机会仍可能错误地与参考基因组的一部分匹配。鉴于以上所述,为了有效地进行映射,在各种情况下,不仅必须确定在参考基因组中read匹配的位置,还必须确定read是否被反向补充。因此,需要构造散列表和/或函数模块减少这些复杂性和/或由此导致的错误。
例如,如上所述,散列表可以用参考基因组的补体和反向互补体填充,使得受试者的测序DNA的每个read或其反向互补可以与基因组参考DNA中的各链相匹配。在这种情况下,对于read中的任意给定的种子,假设没有错误或变异,种子理论上应该与参考的一条链或另一条链即补体或反向互补体相匹配。然而,将参考基因组的两条链保存在散列索引中可能需要大约两倍的存储空间(例如,可能需要64千兆字节而不是32千兆字节),并且可能需要两倍的处理资源和/或两倍的处理时间。此外,这样的解决方案不能解决在两个方向上匹配的回文的问题,例如补体和反向互补链。
因此,散列表索引可被构建为包括基因组参考序列的两条链。在各种情况下,散列表可以被构建为仅包含模型基因组的一条链作为参考。这可能是有用的,因为将散列表存储在存储器中仅需要存储和/或处理两条链需要的一半的存储和/或处理资源,并且查找所需的时间也更少。然而,仅存储基因组的一条链作为参考可能会产生复杂的问题,因为如上所述,在测序的受试DNA是双链的情况下,通常不知道任意给定的read从哪条链产生。在这种情况下,应该构建散列表以解释被映射的read可能来自哪一条链,因此可以是参考基因组的存储片段的互补或反向互补。
相应地,在各种情况下,例如当来自参考组的只有一个方向的种子被填充到散列表中时,当对从FASTQ文件产生的read种子执行散列函数时,可以首先按照当前方向查看种子和/或然后可以被反向互补,并且可以查找反向互补。这可能需要在散列索引中查找两次,但是如果没有错误或变异,则一个种子或其反向互补序列应与其参考基因组中的互补片段匹配,并且减少整体处理资源,例如,较少存储以及时间,例如,不需要对许多序列进行比较。
更具体地说,例如,一个特定方向上的种子由28个核苷酸组成(例如以56位二进制格式数字化地表示),种子可以被反向互补并且反向互补体也可以被56位二进制格式数字化表示。每个用于表示种子序列及其互补序列的二进制格式产生一个数字,例如一个整数,其数值由该数字表示。可以比较这两个值,例如两个整数,并且可以选择具有较高或较低值(例如较高或较低绝对值)的数值作为方向的规范选择,并且该值可以存储在散列表和/或用于散列函数。例如,在某些情况下,可选择具有较高值的数字由散列函数处理。
另一种可以采用的方法是构建种子,其中每个种子由奇数个碱基组成。要选择的规范方向可以是具有中间碱基为“A”或“G”,但不是“T”或“C”的链,反之亦然。随后对满足规范方向要求的种子执行散列函数。以这种方式,仅需要比较两个代表中间碱基的位以查看哪一个具有较高值,并且仅查找该序列的2个位。因此,只需查看代表中间两个碱基的位。通常,这很有用,因为如果种子的长度是奇数,那么它总是反向补充中心碱基。然而,虽然这可能适用于奇数种子长度,但如上所述,对具有更高或更低值的种子进行散列应该适用于所有种子长度,尽管这种方法可能需要处理(例如查找)更多数据位。
这些方法可以用于参考对象任意数量(例如全部)的种子和/或从FASTQ文件的全部或部分read得到的任意数量(例如全部)的种子。大约一半的时间,给定方向的种子的二进制表示(例如补体)具有较高的值,并且大约一半的时间,相反方向的种子的二进制表示(例如反向互补体)具有更高的值。但是,在查看二进制数字时,较高的值就是被馈送至散列表的那个。例如,可以比较每个read和它的补体的二进制整数,并且遇到的第一个1是选择存储为散列表中的链和/或用于散列函数的两个链中的一个。如果两条链在同一位置上具有第一个1,则选择首先出现第二个1的链,等等。当然,也可以选择具有较低值的read,在这种情况下,将选择具有第一和/或较大数目的初始0的链。指示(例如标记flag)也可以被***到散列表中,其中如果反向补充,标记指示存储的和/或散列的链代表哪个方向、补体或反向互补(例如1RC标记)。
更具体地说,当执行散列函数并访问散列表时,将来自参考基因组DNA的种子和从序列数据的read中获得的种子进行相同的操作,例如转换成二进制形式并与其反向互补相比,其中将具有较高或较低值的整数选为规范方向并且用于散列函数并且馈送到散列表中以相互查找和匹配。然而,因为对参考序列和read序列以基本上相同的方式进行相同的操作,所以会得到相同的记录。如果两个序列即参考序列和受试种子具有相同的起始序列,即使一个被反向互补,它们也将全部指向散列表中的同一个单元。
因此,参考序列中的某个种子具有特定方向的给定序列,如果被转换为二进制形式并被散列,来自具有相同序列的样本read的种子,但是在其相反方向(例如反向互补)用于上述方案,当确定二进制值并且执行散列函数时,查找将指向散列表中相同地址,如同散列函数在互补种子上进行的。因此,以这种方式,种子处于哪个方向处理并不重要,因为它总是指向相同的地址。
因此,以这种方式,本公开的方法能够进行散列并由此确定种子在该表内的位置而不管其方向。由于记录中的标记,还会知道给定的种子是否是反向补充的。例如,知道是否从参考对象中翻转了种子,并且还知道是否也必须翻转受试者read的种子。因此,如果双方的判定是相同的,那么在read和参考对象之间的方向是相同的。但是,如果一方翻转而另一方不翻转,则可以推断read映射至参考对象的反向补充。因此,通过使用散列表,可以确定给定read或其部分(例如种子)匹配位置和/或反向补充基因组中的位置。此外,应该理解的是,虽然以上描述是关于从参考基因组生成散列表并且对从read生成的种子(例如,从FASTQ文件)进行各种辅助散列函数处理,但该***也可以被构造为由受试者的测序DNA的read获得的种子生成散列表索引,并且在从参考基因组产生的种子上执行不同的辅助散列函数处理。
如上所述,采用散列表和/或散列函数的优点在于,通过使用种子,测序DNA的大部分read经常可以通过使用单个散列查找来与参考基因组序列匹配,并且在各种情况下,并非所有从read中获得的种子都需要散列和/或查找。种子可以具有任意合适的长度,例如相对较短,例如16个核苷酸或更少,例如约20个核苷酸,例如约24个核苷酸,例如约28个核苷酸,例如约30或约40或约50,或者75或约100个核苷酸,或甚至多达250或500或750或甚至999或甚至约1,000个核苷酸;或相对较长,例如超过约1,000个核苷酸或超过约10,000,或超过约100,000或超过1,000,000或更多个核苷酸。然而,如上所述,使用种子存在一些缺点,例如在散列表中,特别是关于选择适当长度的种子。
例如,可以在映射函数中使用任何合适的种子长度,然而使用相对较短或相对较长的种子长度存在优点和缺点。例如,种子长度越短,引入错误或变异的可能性越小,其中该变异可阻止查找散列表内的匹配。然而,种子长度越短,其独特性就越低,参考基因组的种子和来自受试者测序DNA的read的种子之间的匹配就越多。此外,种子长度越短,散列函数执行的查找次数越多,需要更多的时间和更高的处理能力。
另一方面,种子长度越长,其越独特,并且在参考种子和查询种子之间存在多个匹配位置的可能性越小。此外,如果种子越长,read内一定需要更少的种子,因此查找次数更少,占用的时间更少,处理能力更弱。然而,种子越长,来自测序DNA的种子越可能包含错误,例如测序错误和/或可能包括与参考相比的变异,从而阻止进行匹配。长的种子还具有可能碰上read和/或染色体末端的缺点。因此,如果一个种子的长度只有20-100个核苷酸,那么在散列表中可能有几个匹配,但是,如果种子的长度为1,000或更多核苷酸,那么可能会有比较少的匹配,但是也可能没有任何匹配。
有一些方法可以帮助减少这些问题。一种方法是确保在测序之前在DNA处理步骤中进行适当的重复采样。例如,由于已知在每1,000个碱基对中通常存在至少一个变异,因此可以选择种子长度以进行最大化匹配,同时由于引入错误和/或变异而减少“不匹配”。另外,例如在预排序和/或排序步骤中,使用重复采样可以作为另一种方法,减少使用种子固有的各种问题,例如在散列函数内。
如上所述,重复采样会产生堆积。堆积是那些通常以重叠的方式映射到基因组中相同位置的read集合。对于大部分样本read,这样的堆积可能不是必需的,例如read和/或由此产生的种子,不包括变异和/或不映射到散列表中的多个位置(例如,不是在基因组中完全重复)。然而,对于可能包含变异和/或错误和/或错配(种子和/或read与参考基因组之间的错配)的那些read和/或种子,基因组的任何给定区域产生堆积可能是有用的。例如,尽管从样本基因组的read产生的种子之间只有一个确切的命中是必要的,以便能够将样本read映射到参考基因组,但是,可能存在机器错误或样品DNA序列中的真实变异会阻止read与参考之间进行精确匹配,因此,通常在预测序和测序步骤中产生重叠堆积是有用的。
例如,对于样本种子确实包含变异或错误的那些情况,产生read堆积可用于区分实际变异和机器和/或化学错误。在这种情况下,可以采用堆积来确定明显的变异是否实际上是真实的变异。例如,如果堆积中的95%的read表明在某个位置存在“C”,那么即使参考基因组在该位置具有“T”,也是正确的检测。在这种情况下,错配可能是由于SNP,例如,基因组中该位置的“C”代替“T”,其中个体的遗传密码实际上与参考基因密码不同。在这种情况下,可以采用堆积的深度,以便在有变异的位置比较堆积read的重叠部分,并且基于具有变异的堆积中的read的百分比,可以确定变异是否实际上是由于样本序列的实际变异产生。因此,最匹配基因组序列的read的实际序列可部分根据在堆积深度中反映的内容来确定。然而,使用堆积的缺点是需要更多处理时间来处理由此产生的所有过量的read和/或种子。
另一种减少短read或长read各种问题的方法是与一级散列表(例如主散列表)一起或结合使用二级散列表。例如,二级散列表和/或散列函数可以用于在主散列表中没有任何命中的种子,或者在主散列表中具有多个命中的种子。例如,将一个种子与另一个种子进行比较时,可能会导致一些结果。在一种情况下,无命中,例如在两个序列之间没有任何匹配,在这种情况下,这提示可能存在错误或变异,例如在与参考基因组种子比较的受试read的种子。或者可能找到一个或多个匹配。然而,如果发现大量的匹配,这可能是有问题的。
例如,关于主散列表,如果参考中的每个被散列的种子只出现几次,例如一次、两次或三次等,则可能不需要二级散列表和/或散列函数。然而,如果一个或多个种子出现更多次数,例如5,10,15,20,25,50,100,1,000次或更多次,则这可能是有问题的。例如,人类基因组序列中已知的区域因为重复多次已被确定为具有数学重要性。因此,任何映射到这些位置之一的种子实际上可能无意中会映射到多个这些位置,例如种子包含重叠序列的核苷酸。在这种情况下,在所有可能性中确定种子实际比对的那一个可能是困难的。然而,由于这些重复区域是已知的和/或变得已知,因此通常映射到一个或多个这些区域的任何种子可以分配给二级散列表以供一级散列函数或二级散列函数处理,以免浪费时间和处理能力去使用主散列函数来确定可能无法确定的事情。
更特别地,当将参考基因组的种子与从受试者的基因组read产生的种子进行比较时,可能导致1到数百或甚至数千个匹配位置。然而,本***可以被配置为处理一定数量的重复匹配,例如不需要进一步的处理步骤,例如匹配数量低于约50,或低于约40,或低于约30,例如低于约25或约20,例如低于约16或低于约10或约5。但是,如果命中匹配的次数多于返回次数,则可以将***配置为执行二级散列函数,例如使用二级散列表。
因此,可以将已知可能冗余的种子放置在二级散列表或一级散列表中的第二区域中,而不是放置在主散列表中。另外,在一些情况下,记录可以被放置在主散列表,其中该记录不传送任何关于该种子的多个可能映射位置的信息,而是传送访问二级散列表的命令(例如,延伸记录)。例如,延伸记录可以是指令,例如指示主要种子(例如非独特的或重复的),将种子长度增加到更长、更独特的种子长度,例如通过在其旁边添加一个或多个额外的碱基,例如在种子的末端添加,以使其成为更长的种子序列,然后可以散列并查找,例如在二级表中。
记录可以被配置为通知或指示已知冗余的种子延伸一定量,并且还可以指示种子在何处和/或如何延伸。例如,因为散列表通常是预先计算的,例如最初从参考基因组产生的种子创建,所以在创建表格之前可以知道,从参考基因组产生的种子(如果有的话)中的哪些将会发生多次。因此,在各种情况下,可以预先确定哪些种子将需要转移到二级散列表。例如,在创建散列表索引时,被输入散列表作为索引的参考种子序列的特征是已知的,因此对于每个可能的种子,可以确定它是否会多次命中,例如10-10,000次命中。
更具体地,在各种情况下,可以执行算法以确定来自参考对象和/或受试者read的种子的所有预测匹配。如果确定对于某个种子,其可能返回多个匹配,则可以生成标记(flag,例如记录等),例如在散列表的单元格内,指示该种子具有高的命中频率。在这种情况下,记录可以进一步指示跳过对该种子以及与其类似的种子的主散列,因为对需要精确确定其实际映射的位置的种子进行大量评估(例如,20-10,000或更多)是不实际的。在这种情况下,主散列函数可能无法准确地确定在可以匹配种子的所有可能位置中的哪一个是read实际比对的位置,因此出于实际目的,由于种子在此阶段无法准确映射,因此主散列函数可能不会返回可用的结果,例如准确指示种子在基因组中实际匹配的位置。
在这种情况下,散列函数算法可以被配置为计算需要完成什么以使得冗余种子更加独特。例如,二级散列函数可以确定种子需要延伸多少个碱基,以及以什么顺序以及在什么位置,以确保种子不再是冗余的,而是适当地独特以便被散列。因此,记录还可以包括指示在种子的一端或两端延伸冗余种子(例如延伸两个、四个、六个等)的指令,以实现唯一的预定水平。以这样的方式,最初看起来相同的种子可以被确定为不相同的。
例如,在一些情况下,典型的记录可以指示重复的种子延伸多达X个(奇数或偶数个)碱基,但是在一些情况下,延伸偶数个碱基,例如约2个至4个至约8个至16个至约32个或约64个或更多个碱基,例如在每侧均等。例如,如果延伸64个碱基,则记录可以指示在种子的每一侧添加32个碱基。种子延伸的碱基的数量是可配置的,并且可以是任意合适的数量,取决于***如何构建。在某些情况下,可以使用二级散列函数来确定种子应该被延伸多少个碱基以便获得合理数量的匹配结果。因此,可以对相对唯一的位置进行延伸,例如只有1个,2个,3个或甚至多达16个或25个或50个样式出现的匹配位置。在各种情况下,从两端均匀地延长种子可能是有用的,例如以避免反向read的问题,但是在各种情况下,种子可以通过向两侧不等地添加一个或多个碱基而延长。
更具体地,例如在一个实施方式中,如果种子包括28个碱基,并且延伸记录(例如位于主散列表单元格内的延伸记录)指示散列函数对种子进行延伸,例如延伸64个碱基,那么记录可以进一步指示散列函数如何延伸种子,例如在种子的每一侧添加32个碱基。但是,延伸可以在read的任意合适的位置进行,并且可以以对称或不对称的方式完成。在某些情况下,记录可以指示散列函数对称地延伸种子,因为在某些情况下,对称延伸更有用,例如反向补充。在这种情况下,添加相同数量的碱基,例如延伸时在种子的相对侧。尽管在其它情况下,以不对称的方式添加偶数个或奇数个碱基来进行延伸,因此,不必在每一侧以相同数量的碱基延伸种子。通常,主散列表配置为不完全满。例如,最好将其配置为不超过其容量的80%或90%。这是为了保持高效的查找率。创建表时,如果散列种子中有大量冲突到同一位置,存储机制将创建一个到其他位置的引用链,以便查找机制能够找到分配给溢出种子的位置。表格密度越高,碰撞次数越多,查找实际匹配的链条越长。
在各种情况下,例如初始的冗余种子长28个碱基,并且记录指示其延伸,例如18个至32个至64个碱基,例如在种子的每个相对侧上,种子的数字表示可以是约64个碱基×2个比特每个碱基=128个比特。相应地,取决于如何设置映射模块,这可能对于主散列表来说处理量太大。因此,在某些情况下,为了解决对这种大量处理的需要,在某些实施例中,可以配置二级散列模块存储与较大种子相关联的信息。由于需要延伸的种子数量是种子总数的一小部分,因此二级散列表可能小于主散列表。然而,在其他情况下,例如为了减少模块的处理要求,例如节省比特,序列(例如主序列)的已知冗余部分可以被预选变量(例如预定序列长度)代替。在这种情况下,由于冗余序列是已知的并且已被识别,所以不需要完整地数字化表示。相反,在各种情况下,真正需要做的就是用已知变量序列替换已知冗余序列,并且真正需要查找的所有内容都是已添加到变量序列的任一侧的延伸部分,例如wings,因为那些是初始序列中唯一的非冗余和新的部分。因此,在某些情况下,可以用较短的唯一标识符代码(例如24位代理而不是56位表示)替换主序列,然后可以将延伸碱基添加到代理上,例如36位延伸(例如总共60位),然后可以将其放入主表的延伸记录中。以这种方式,可以减少read过短和/或太长的缺点,并且可以保持散列表中只有一个或几个查找的好处。
如上所述,可以用软件和/或硬件来实现上述散列函数。在硬件中实现散列模块的优点是可以加速并因此以更快的方式进行处理。例如,软件包括用于执行一个或多个这些不同函数的各种指令时,实现这些指令通常需要存储和/或提取和/或读取和/或解释数据和指令,例如在执行之前。然而,如上所述,并且在下文中更详细地描述,芯片可以通过硬连线来执行这些函数而不必提取、解释和/或执行一个或多个序列指令。相反,芯片可以被连线以直接执行这些函数。因此,在各个方面中,本公开涉及个性化定制硬连线机器,其可以被配置成使得上述散列模块的部分或全部可以由一个或多个网络电路来实现,例如在芯片上硬连线的集成电路,例如FPGA、ASIC或结构化ASIC。
例如,在各种情况下,可以构建散列表索引并且可以在芯片上执行散列函数,并且在其他情况下,散列表索引可以从芯片生成,例如通过由主机CPU运行的软件,但是一旦产生,它会被加载到芯片上并应用,例如用于运行散列模块。在某些情况下,芯片可以包括任意合适数量的千兆字节,例如8千兆字节,例如16千兆字节,例如32千兆字节,例如64千兆字节,例如约128千兆字节。在各种情况下,可配置芯片仅使用部分或使用全部存储器资源来执行散列模块的各种处理。例如,在构建个性化参考基因组的情况下,大部分存储器可以专用于存储散列参考索引和/或用于存储read和/或用于预留空间以供其他函数模块使用,例如16千兆字节专用于存储read,8千兆字节专用于存储散列索引,另外8千兆字节专用于其他处理函数。在另一个实施方式中,32千兆字节专用于存储read,26千兆字节可专用于存储主散列表,2.5千兆字节专用于存储二级表,并且1.5千兆字节可专用于参考基因组。
在某些实施例中,创建二级散列表,具有比主散列表更大的数字存在位。例如,在各种情况下,主散列表可以被配置为存储8字节的散列记录,每个散列桶8条记录,每个桶总共64字节;二级散列表可以被配置为存储16条散列记录,总共128字节每桶。对于每个包含与散列关键字的相同位匹配的溢出散列位的散列记录,会报告参考基因组中的可能匹配位置。因此,对于主散列表,最多可以报告8个位置。对于二级散列表,最多可以报告16个位置。
无论以硬件还是软件实现,在许多情况下,构建散列表以避免冲突可能是有用的。例如,因为各种***工件,可能存在多个种子希望被***到散列表中的相同位置,而不管是否存在匹配。这种情况被称为冲突。通常情况下,冲突可以通过散列表的构建方式部分避免。因此,在各种情况下,散列表可以被构建为避免冲突,并且因此可以被配置为包括一个或多个虚拟散列桶。
在各种情况下,散列表可以被构建为以8字节、16字节、32字节、64字节、128字节等格式来表示。但是在各种示例性实施例中,以64字节格式表示散列表可能是有用的。例如,在用散列函数对存储器(例如DRAM)进行访问的情况下(例如,在标准DIMM或SODIMM型中,例如其中最小突发大小(burst size)通常为64字节),这可能是有用的。在这种情况下,设计用于访问给定存储器的处理器使得在散列表中形成桶所需的字节数也是64,因此可以实现最大化的效率。但是,如果表格是以32字节格式构建的,则这将是低效的,因为在突发中大约一半传递的字节包含处理器不需要的信息,会降低一半的有效字节传输速率。相反,如果在散列表中用于形成桶的字节数是最小突发大小的倍数,例如128,则只要在单次访问中返回的所有信息是处理器实际上需要的,则不存在性能损失。因此,在存储器访问的最佳突发大小为给定大小(例如,64字节)的情况下,散列表可以被构建为能够最佳地利用存储器的突发大小,例如被分配用于表示散列表存储单元并由映射函数处理的字节(例如64字节)与存储器的突发大小一致。因此,在存储器带宽是约束条件的情况下,散列表可以被构造为最优地利用这些约束条件。
此外,应该注意,虽然记录可以被塞入8个字节,但是散列函数可以不被构建为通过读取来自表的8个字节以处理一个记录,因为这可能是低效的。相反,一个桶中的所有8个记录(或者其中的一部分)都可以一次读取。这对于优化***的处理速度可能是有用的,因为考虑到上述架构,在处理所有8条记录时花费与处理1条记录时相同的速度和相同的时间。因此,在某些情况下,映射模块可以包括散列表,其自身可以包括一个或多个子部分(例如虚拟部分或桶),其中每个桶可以具有一个或多个槽(例如8个槽),可以在其中***一个或多个不同的记录,例如管理冲突。然而,在某些情况下,这些桶中的一个或多个可能会填满记录,因此可以提供一种手段来存储其他桶中的附加记录,并在原桶中记录信息,指示散列表查找机制需要进行进一步的查找以找到匹配。
因此,在某些情况下,采用一个或多个附加方法例如用于管理冲突也可能是有用的,其中一种方法可以包括一个或多个线性探测和/或散列链接。例如,如果不知道在散列表或其一部分(例如在散列表的一个桶中)中究竟搜索了什么,并且特定桶是满的,则可以配置散列查找函数,使得如果一个桶已满并经过搜索找不到所需的记录,则可以将该函数引导至下一个桶,例如+1桶,然后对该桶进行检查。以这种方式,当查找特定记录时可以对所有桶进行搜索。因此,这种搜索可以通过一个桶到另一个依次地执行,直到找到待查找的内容,或者不会找到(例如在至少一个桶中找到空槽的情况下)。特别地,依次填充每个桶并且根据填充顺序对每个桶进行搜索,如果找到空槽(例如当依次搜索桶寻找特定记录时),则空槽可以指示记录不存在,因为如果确实存在,如果不存在于前面的桶中,则至少已经将其映射在空槽中。
更具体地,在64字节被指定用于将信息存储在包含8个记录的散列桶中时,一旦接收到提取的桶,映射处理器可以同时对所有8个记录进行操作以确定哪些是匹配,哪些不是。例如,当在参考基因组产生的种子中进行查找时(例如来自测序样本DNA的read的种子),可以将样本种子的数字表示与在所有记录(例如8个)中的参考种子进行比较,以便找到匹配。在这种情况下,可能会导致一些结果。可能发现直接匹配。样本种子可能会进入散列表,并且在某些情况下,找不到匹配,例如,因为它与参考对象中的任意对应种子不完全相同,例如因为存在关于该种子或其产生的read的机器或序列的错误,或者因为该个体具有与参考基因组不同的基因序列。或者种子可以进入散列表并且返回多个匹配,例如,样本种子匹配到表中的2个、3个、5个、10个、15个、20个或更多个位置。在这种情况下,可以返回多个记录,全部指向特定种子匹配的参考基因组中的各个不同位置,这些匹配的记录可以在同一个桶中,或者可能必须对多个桶进行探查并返回所有重要的结果,例如匹配结果。
在某些情况下,例如在空间可能成为散列表中(例如散列表桶中)的限制因素的情况下,可以实现用于解决冲突和/或用于节省空间的附加机制。例如,当空间有限时,例如当需要将多于8个记录存储在桶中时,或者对于其他实施例,可以执行散列链接函数。散列链接可以包括例如用包含链指针的记录替换包含基因组序列中特定位置的记录,而不是指向基因组中指向某个其它地址的位置,例如,当前散列表(例如主散列表或二级散列表)的二级桶。这比使用散列查找机制直接访问包含所需记录的桶而不是按顺序检查桶的线性探查方法具有优势。
对于***架构,这样的过程可能是有用的。例如,被散列的初级种子(例如在初级查找中)被映射在表中的给定位置处(例如它们的原始位置),而被链接的种子被放置在可能与其原始桶不同的位置。因此,如上所述,数字表示的种子的第一部分,例如大约26至大约29比特,可以被散列并且可以在第一步中查找。并且,在第二步中,剩余的大约27到大约30比特可以被***散列表中,例如在散列链中,作为用于确认第一步的手段。因此,对于任何种子,它的原始地址比特可以在第一步骤中散列,并且二级地址比特可以在第二确认步骤中使用。因此,可以将种子的第一部分***主记录位置,并且可以将第二部分适合在二级记录链位置的表。而且,如上所述,在各种情况下,这两个不同的记录位置可以在位置上分开,例如通过链式记录。因此,任何链接了链式记录的目标桶用于本地主要第一桶访问、检查和记录链以便将entry/记录分开。
这样的散列链可以持续多个长度。这种链接的优点在于,在一个或多个桶包括一个或多个(例如2个、3个、4个、5个、6个或更多个)空记录槽的情况下,可以使用这些空槽来存储散列链数据。相应地,在某些情况下,散列链可以以一个在桶中的空槽开始,并将该槽链接到另一个桶中的另一个槽,其中这两个桶可以位于散列表中的远程位置处。需要额外注意的是,避免混淆放在作为散列链一部分的远程桶中的记录,以及直接散列到同一桶中的“本机”记录。通常,将二级访问密钥的剩余大约27到大约30位与存储在远程放置在链式桶中的记录中相应的大约27到30位进行核对,但是由于链式桶与原始散列桶的距离较远,因此仅确认这些大约27到30比特将不足以保证匹配的散列记录对应于通过链接到达该桶的原始种子,而不是通过直接访问而到达相同桶的其他种子(例如,当用于散列表寻址的大约26至29位通过接近所访问的初始散列桶隐式地检查时,确认大约27至30位是完全验证)。
为了防止查询错误的散列记录而无需在记录中存储整个散列密钥,可以在链接桶中使用定位***。相应地,链式桶必须包含链延续式记录,如果需要,其包含进一步链指针以延续桶链;在所有对应于直接散列访问的“本机”记录之后,以及在属于该链的所有远程记录之前,该链延续记录必须出现在桶的槽中。在查询期间,在跟随任何链指针之前,任何出现在链延续记录之后的记录都应该被忽略;在跟随任何链指针之后,任何出现在链延续记录之前的记录都应该被忽略。
例如,在桶满75%-85%的情况下,可以扫描8个桶并且仅可以找到15-25个可以使用的槽,而对于散列链,这些槽可以找到2个或3个或4个桶。在这种情况下,存储散列记录所需的探查或链式步骤的数量很重要,因为它会影响***的速度。在运行时,如果需要探查来查找记录,则可能需要执行多次散列查找访问(例如,读取64字节的桶),这会降低***速度。散列链有助于最大限度地减少必须执行的访问的平均次数,因为每个链接桶可以填充更多的超额散列记录,这可以从广泛的区域选择,而不是每个探测桶必须依次选择。因此,给定数量的超额散列记录通常可以被填充到比探测桶的必需序列更短的链式桶的序列中,这同样限制了在查询中定位这些超出记录所需的访问次数。尽管如此,探查仍然对于较小数量的多余散列记录是有价值的,因为探查不需要为链指针牺牲一个桶槽。
例如,在确定了针对参考基因组的种子的所有可能匹配之后,必须确定给定read可匹配的所有可能位置中的哪一个实际上是其比对的正确的位置。因此,映射之后可能有多个位置,一个或多个read似乎与参考基因组匹配。因此,如果考虑种子在read中的位置,可能有多个种子似乎指示完全相同的东西,例如它们可能与参考上完全相同的位置匹配。
因此,对于每个给定的read,必须确定实际的比对。该确定可以以几种不同的方式进行。在一个实例中,基于在散列查找处理期间,read的每个种子返回的位置信息中指示的位置对所有read进行评估,以确定它们相对于参考基因组的正确比对。然而,在各种情况下,在执行比对之前,可以在一个或多个种子上执行种子链过滤函数。
例如,在某些情况下,与给定read相关联的种子似乎映射到与参考基因组相同的大概位置,可以被聚集成参考相同区域的单个链。与一个read相关联的所有种子可以被分组为一个或多个种子链,其中每个种子仅是一个链的一员。这种链可以使read与参考基因组中的每个指示位置比对。具体而言,在各种情况下,具有相同支持证据表明它们全部属于参考中的相同大概位置的所有种子,可聚集在一起以形成一个或多个链。因此,组合在一起的种子,或者至少表现为在参考基因组彼此靠近的种子(例如在某个带内),将被分组为一链种子,而那些在上述带外的种子作为不同的种子链。
一旦这些种子已经聚集成一个或多个种子链,就可以确定哪个链实际上代表了待比对的正确链。这可以至少部分地通过使用过滤算法来完成,所述过滤算法是一种用于消除不太可能是正确的弱种子链的试探式算法。一般而言,根据read范围内的长度,较长的种子链更可能是正确的,此外,具有更多贡献种子的种子链更可能是正确的。在一个例子中,可以应用试探法,其中相对较强的“优等”种子链(例如长的或具有许多种子),过滤出相对较弱的“劣等”种子链,例如短的或种子少的。
在一个变型中,“劣等”种子链的长度确定阈值长度(例如两倍长),使得具有至少阈值长度的“优等”种子链可以将其过滤掉。在另一变型中,“劣等”种子链的种子数确定阈值种子数(例如是种子数量的五倍),因此至少可以通过阈值种子计数的优势链可以将其过滤掉。在另一变型中,“劣等”种子链的长度确定阈值种子数,例如种子数的两倍减去种子长度,使得具有至少阈值种子数的“优等”种子链可以将其过滤掉。在一些变型中,例如当需要read的嵌合比对时,只有在read内基本上重叠“劣等”种子链的“优等”种子链可以将它们过滤掉。
该过程淘汰那些识别参考基因组区域概率较低的种子——能找到read的高质量比对的参考基因组区域。因此,它可能很有用,因为它减少了每个read需要执行的比对的数量,从而加快了处理速度并节省了时间。因此,该过程可以部分地用作调谐特征,由此当期望更高的速度时(例如高速模式时),执行更详细的种子链过滤,期望更高的整体精度时(例如增强的精度模式),执行较少的种子链过滤(例如对所有种子链进行评估)。
在各种实施例中,可以执行种子编辑,例如在种子链过滤步骤之前。例如,对于每个read,如果read的所有种子都经历了映射函数并且没有一个返回命中,那么read中可能存在一个或多个错误的可能性很高,例如,测序器产生的错误。在这种情况下,可以在每个种子上执行编辑函数,例如单次改变编辑过程(例如SNP编辑过程),例如在返回不匹配结果的情况下。例如,在位置X处,单次改变编辑函数可以指示指定的核苷酸被其他3个核苷酸中的一个替换,并且通过进行该改变(例如SNP替代)来确定是否得到命中,例如匹配。可以以相同的方式在种子中的每个位置和/或read的每个种子上执行这种单次改变编辑,例如将每个替代基因替换为种子中的每个位置。此外,如果在一个种子中进行了单次改变,那么改变对每一个其他重叠种子的影响可以根据该改变来确定。
还可以针对***物(inserts)执行这种编辑(例如在给定***位置X处添加四个核苷酸中的一个),并且确定是否通过进行取代获得命中。这可以针对所有四种核苷酸和/或种子中的所有位置(X,X+1,X+2,X+3等)和/或read中的所有种子完成。这种编辑也可以针对缺失(deletions)进行,例如在种子中的给定位置X处缺失四个核苷酸中的一个,并且确定是否通过缺失获得命中。然后可以针对所有位置X+1,X+2,X+3等重复这种操作。然而,这种编辑会导致大量额外的处理工作和时间,例如需要多次额外的查找,例如2次或3次或4次或5次或10次或50次或100次或200次等。然而,在没有匹配时如果通过这样的编辑可以确定实际命中(例如匹配),那么这样的额外处理和时间可能是有用的。在这种情况下,通常可以确定出现了错误并且进一步修正错误,从而挽回了read。
另外,可以采用另外的试探法来确定是否应该执行编辑函数,算法执行计算以确定如果要执行这样的编辑将获得命中的概率。如果满足某个阈值概率,例如85%的可能性,则可以执行这种种子链编辑。例如,***可以生成关于种子链的各种统计信息,例如计算存在多少高频命中和/或多少种子链包含高频命中,从而确定种子链编辑是否对确定匹配有影响。例如,如果确定存在大部分的高频命中,则在这种情况下,可以跳过种子链编辑,因为不可能使各种序列足够独特并在合理的散列表查找次数范围内获得命中,例如100次或更少,50次或更少,40次或更少,30次或更少,20次或更少,或10次或更少。这些统计数据可以被审查,然后可以确定是否进行种子编辑。例如,如果统计数据显示对于任何一个read,如果一半的位置显示不匹配,而另外一些显示高频率匹配,则可能值得做种子编辑,因为如果没有返回匹配,则可能有错误,但是如果返回很多高频匹配,那么可能根本不值得进行种子编辑。
执行映射、过滤和/或编辑函数中的一个或多个得到的结果是read列表,对于每个read其包括read可能与参考基因组匹配的所有可能位置的列表。因此,可以执行映射函数以便快速确定从测序仪获得的FASTQ文件的read到参考基因组的位置,例如不同的read所映射到的全基因组中的位置。但是,如果在任意read或遗传变异中出现错误,可能无法与参考完全匹配,或者可能存在几处可能与一个或多个read片段匹配的地方。因此,必须确定不同read实际上与整个基因组相对应的位置。
因此,在映射和/或过滤和/或编辑之后,已经确定了大量read的位置,其中对于一些个体read已经确定了多个位置,接下来需要确定所有可能位置中的哪一个实际上是各种read比对的真实或最可能的位置。这样的比对可以通过一个或多个算法来执行,例如动态编程算法,其将映射的read与参考基因组进行匹配并且在其上运行比对函数。
示例性比对函数将一个或多个(例如所有的)read与参考对象进行比较,例如通过将它们放置在彼此的图形关系中,例如在表中(例如虚拟阵列或矩阵),其中参考基因组或映射read的序列之一被放置在一个维度或轴上(例如水平轴上),而另一个被放置在相对的维度或轴上(例如垂直轴上)。然后将概念评分波前(波阵面)通过阵列以确定read与参考基因组的比对,例如通过计算矩阵中每个单元的比对评分。
评分波前代表矩阵中的一个或多个(例如所有)单元或这些单元的一部分,其可根据在比对算法(例如Smith-Waterman和/或Needleman-Wunsch,和/或相关算法)中适用的动态规划规则独立评分和/或同时评分。例如,将矩阵的原点(对应于read起始点和/或概念评分波前的参考窗的起始点)设置在左上角,首先只对左上角的单元矩阵的坐标(0,0)进行评分,例如1-单元波前;接下来,可以对坐标(0,1)和(1,0)处的右侧和下侧的两个单元进行评分,例如2-单元波前;接下来可以对(0,2)、(1,1)和(2,0)处的三个单元进行评分,例如3-单元波前。然后,这些示例性的波前可以以对角方式从左下角到右上角延伸,并且波前从左上角到右下角通过矩阵以对角方式逐步运动。可以依次连续地或以其他顺序计算比对评分,例如从左到右计算第一行中的所有分数,然后从左到右计算下一行中的所有分数等。以这种方式,以对角方式扫描的对角线波前代表在一系列波前步骤中同时或并行批量计算分数的最佳顺序。
例如,在一个实施例中,包含read映射的片段的参考基因组的窗口放置在水平轴上,read放置在垂直轴上。以这种方式产生阵列或矩阵(例如虚拟矩阵),将read中每个位置处的核苷酸与参考窗口中每个位置处的核苷酸进行比较。当波前通过阵列时,read与参考窗口比对的所有可能方式都被考虑,包括是否需要改变序列以使read与参考序列匹配,例如将read的一个或多个核苷酸更改为其他核苷酸,或在序列中***一个或多个新的核苷酸,或从序列中删除一个或多个核苷酸。
生成的比对评分表示为了实现精确比对而需要做出的改变的程度,其中该评分和/或其它相关数据可以存储在阵列的给定单元中。阵列中的每个单元对应于read轴上的核苷酸与参考轴上的核苷酸比对的可能性,并且,针对每个单元生成的评分表示部分比对,终止于该单元在read和参考窗口的位置。任何单元中生成的最高分数表示read与参考窗口的最佳整体比对。在各种情况下,比对可以是全局比对,其中整个read必须与参考窗口的某个部分比对,例如使用Needleman-Wunsch或类似的算法;或者在其他情况下,比对可以是局部比对,其中只有一部分read可以与参考窗口的一部分比对,例如通过使用Smith-Waterman或类似算法。
参考窗口的大小可以是任意合适的大小。例如,由于典型的read长度可以是约100个至约1,000个核苷酸,因此在一些情况下,参考窗口的长度可以是约100个至1,000个核苷酸长度或更长。然而,在一些情况下,read的长度可能更长,和/或参考窗口的长度可能更长,例如约10,000个、25,000个、50,000个、75,000个、100,000个、200,000个核苷酸长度或更长。参考窗口比read稍长一些可能是有利的,例如在超出参考基因组片段极限的参考窗口中,包括32个或64个或128个或200个或甚至500个额外的核苷酸,以便完全评估read末端附近的***和/或缺失。例如,如果只有一部分read被映射到参考片段,则可以将额外扩充应用于对应于read的未映射部分的参考窗口,或者通过一些因素进行延长,例如10%或15%或20%或25%或甚至50%或更多,以便允许read的未映射部分隔开以完全比对参考窗口。然而,在一些情况下,参考窗口的长度可以选择为比read的长度更短,例如read的长部分未被映射到参考对象,例如在read的一段有多于或少于1000个核苷酸,例如为了将比对关注在映射部分上。
比对波前长度不限,或限于任何合适的固定长度或可变长度。例如,在每个波前步骤中,从一个轴线完全延伸到另一个轴线,对沿着整个对角线的所有单元进行评分。或者,可以在每个波前步骤对有限长度(例如64个单元宽度)进行评分,例如对通过矩阵的对角的64个单元宽的带评分,并对该带以外的剩余单元不评分。在一些情况下,可能不需要计算远离真实比对路径周围的带的评分,并且通过仅在有限宽带中计算评分来节省实质性工作,通过使用如本文所述的固定长度的评分波前。
因此,在各种情况下,可以执行比对函数,例如对从映射模块获得的数据执行。因此,在各种情况下,比对函数可以形成模块(例如比对模块),其可以形成***的一部分(例如管道),其在例如映射模块之外的过程中用于确定个体的实际完整基因组序列或其部分。举例说,从执行映射函数返回的输出,例如来自映射模块,例如关于一个或多个或全部read映射到一个或多个参考基因组中的一个或多个位置的可能性的列表,可用于比对函数以确定受试者的测序DNA的实际序列比对。
这种比对函数有时可能是有用的,因为如上所述,经常出于各种不同原因,测序的read并不总是精确地与参考基因组完全匹配。例如,在一个或多个read中可能存在SNP(单核苷酸多态性),例如在单个位置上一个核苷酸替换另一个核苷酸;可能存在“indel”,沿着一个或多个read序列的一个或多个碱基存在***或缺失,参考基因组中不存在该***或缺失;和/或可能存在导致这些明显变异的一个或多个的排序错误(例如,样本准备和/或测序器read和/或测序器readout等中的错误)。相应地,当read与参考不同时,例如SNP或indel,这可能是因为参考不同于样本的真实DNA序列,或者因为read与样本的真实DNA序列不同。问题是要弄清楚如何正确地将read与参考基因组进行比对,因为很可能这两个序列将以多种不同的方式彼此不同。
因此,在各种情况下,对比对函数的输入,例如来自映射函数,例如前缀/后缀树,或Burrows/Wheeler变换,或者散列表和/或散列函数,可以是关于一个或多个read可以与一个或多个参考序列的一个或多个位置匹配的可能性的列表。例如,对于任意给定的read,其可以匹配参考基因组中任意数量的位置(例如1个,或16个,或32个,或64个,或100个,或500个,或者1,000个或更多个位置),其中给定read映射到基因组中。然而,任何单独的read仅来自基因组(例如经测序得到的)的一个特定部分。因此,为了找到给定的特定read来源的真实位置,可以执行比对函数,例如Smith-Waterman空位比对,Needleman-Wunsch比对等,以便确定一个或多个read实际来自基因组中的什么位置,例如通过比较所有可能发生匹配的位置并确定所有可能位置中哪一个是最可能的位置,基于哪个位置的比对评分最大。
如上所述,典型地,使用算法来执行这样的比对函数。例如,Smith-Waterman和/或Needleman-Wunsch比对算法可用于将两个或更多个序列彼此比对。在这种情况下,可以使用它们用于确定read映射到参考基因组的任意给定位置是read来源的实际位置的概率。典型地,这些算法由软件执行,然而,在各种情况下,例如如本文提出的,这些算法中的一个或多个可以由硬件执行,如下面更详细描述的。
具体而言,尽管存在一个或多个部分错配(例如SNP,***、缺失、结构伪像等),但可以部分地操作比对函数至少将一个或多个(例如全部)read与参考基因组比对,以便确定read适合基因组的正确位置。例如,考虑取代和/或***和/或结构变异的同时,将一个或多个read与参考基因组进行比较,并确定最适合的read与基因组的匹配。然而,为了更好地确定read的哪个修改版本与参考基因组最佳配合,必须考虑所提出的改变,因此也可以执行评分函数。
例如,可以执行评分函数,例如作为比对函数整体的一部分,比对模块执行其函数并引入一个或多个改变到一个进行比较的序列中,例如以便实现两个比较序列之间的更好匹配或最佳匹配,对于为了实现更好比对而进行的每个改变,以满分或零分为起始分数,对分数进行扣减,例如当执行比对时,确定比对评分,例如在检测到匹配的情况下增加评分,并且对于引入的每个变化产生罚分,因此可以确定对于可能比对的最佳配合,例如,通过最高分数确定所有可能的经修改的read中哪一个与基因组配合。因此,在各种情况下,比对函数可以确定需要对read进行的改变的最佳组合,以获得最佳评分,然后确定该比对是正确的或最可能的比对。
鉴于以上所述,通过执行比对函数可以实现至少两个目标。其一,报告最佳比对,包括参考基因组中的位置,以及为了使read在该位置处匹配参考片段而需要进行的改变。其二,比对质量评分。例如,在各种情况下,比对模块可以输出简要比对信息报告(CompactIdiosyncratic Gapped Alignment Report,CIGAR),例如CIGAR字符串,其中CIGAR字符串输出是描述对所述read进行的所有改变的详细报告,以便实现最佳配合比对,例如详细的比对说明,说明该查询实际上如何与参考对准。这样的CIGAR字符串readout可用于进一步的处理阶段以更好地确定给定受试者的基因组核苷酸序列与参考基因组相比,预测的变异实际上是真正的变异,而不仅仅是机器、软件或人为错误。
如上所述,在各种实施例中,比对通常按顺序执行,其中该算法接收(例如来自映射模块)与read以及一个或多个参考基因组中的一个或多个位置有关的read序列数据,其中read可能潜在地映射到该一个或多个参考基因组,并且进一步接收与一个或多个参考基因组中的一个或多个位置有关的基因组序列数据(例如来自一个或多个存储器),其中read可以映射到该一个或多个参考基因组中的一个或多个位置。具体地,在各种实施例中,映射模块处理例如来自FASTQ文件的read,并且将它们中的每一个映射到参考基因组中的一个或多个可能对准的位置。随后,比对器获取这些预测位置,并使用它们将read与参考基因组进行比对,例如通过构建虚拟阵列,通过该阵列可以将read与参考基因组进行比较。
在执行该函数时,比对器评估每个单独read的每个映射位置,并且特别地评估映射到参考基因组中的多个可能位置的read,并对每个位置是正确的概率进行评分。然后比较最佳评分,例如两个最佳评分,并且对特定read实际比对的位置做出判定。例如,在比较第一个和第二个最佳比对评分时,比对器会查看分数差,如果分数差很大,那么分数较大的分数正确的置信度评分将会很高。然而,在分数差很小(例如零)的情况下,能够从两个位置中得出read实际来源的位置的置信度评分较低。为清楚地确定参考基因组中read来源的真实位置,可能需要进行更多处理。因此,在对给定read映射到参考基因组中的给定位置进行检测时,比对器部分地寻找第一和第二最佳置信度评分之间的最大差。理想情况下,最佳比对评分显着大于该序列的第二最佳比对评分。
比对评分方法有许多不同的实施方式,例如,可以根据本文公开的方法对阵列的每个单元或单元的子部分进行评分。通常,如果对应的read和参考核苷酸匹配,则对应于比对矩阵中的对角步骤的每个比对匹配贡献正分数,例如+1;如果两个核苷酸不匹配,则贡献负分数,例如-4。此外,参考中的每个删除(对应于比对矩阵中的水平步骤)贡献负分数,例如-7,并且参考中的每个***(对应于比对矩阵中的垂直步骤)贡献负分数,例如-7。
在各种情况下,核苷酸匹配、核苷酸错配、***和缺失的评分参数可以具有任意不同的正值或负值或零值。在各种情况下,可以基于可用信息来修改这些评分参数。例如,在某些情况下,比对空位(***或缺失)受到空位长度的仿射函数的判罚,例如对于第一个被删除的(***的)核苷酸为-7,但对于连续序列每个额外的被删除的(***的)核苷酸为-1。在各种实施方式中,可通过将空位(***或删除)罚分分成两个部分来实现仿射空位罚分,例如:空位开放罚分,例如-6,适用于空位的第一步;和空位扩展罚分,例如-1,适用于空位的每一步或更多步骤。仿射空位罚分可以产生更精确的比对,例如通过让含有长***或缺失的比对获得适当的高分。此外,每个横向移动需要相同或不同的成本,例如每步相同的成本,和/或在出现空位的情况下,出现空位可以有更高或更低的成本,因此比对器的横向移动的成本可以比空位成本更低。因此,在各种实施例中,可以实现仿射空位评分,然而,这在软件和/或硬件中可能是更花费成本的,因为针对每个待评分的单元,通常需要多个(例如3个)评分,因此在各种实施方式中,没有实施仿射空位评分。
在各种情况下,评分参数也可能对read中对应于核苷酸的“碱基质量评分”敏感。一些测序DNA read数据(例如以FASTQ等形式)可包括与每个核苷酸相关的碱基质量评分,指示该核苷酸不正确的估计概率,例如,由于测序产生的错误。在一些read数据中,碱基质量分数可以指示***和/或删除测序错误存在于每个位置或与每个位置相邻的可能性,或者额外的质量评分可以单独提供该信息。因此,根据与当前read的核苷酸或位置相关的碱基质量评分,采用不同的评分参数,可以实现更准确的比对,其中评分参数包括核苷酸匹配评分、核苷酸错配评分、空位(***和/或删除)罚分、空位开放罚分和/或空位扩展罚分中的任意一个或全部。例如,当碱基质量评分指示存在测序或其他错误的概率较高时,分数奖励和/或罚分可以变小。可以使用碱基质量敏感评分,例如使用固定或可配置的查找表来实现,该查找表使用碱基质量评分来访问,返回相应评分参数。
在一种硬件实施方式中,在集成电路(例如FPGA,ASIC或结构化ASIC)中实施,可将评分波前作为评分单元的线性阵列,例如16个单元或32个单元或64个单元,或128个单元等。每个评分单元可以由有线配置的数字逻辑元件构建以计算比对评分。因此,对于波前的每个步进,例如每个时钟周期或某个其他固定或可变的时间单位,每个或一部分评分单元计算评分或为虚拟比对矩阵中的新单元进行评分。从概念上讲,不同的评分单元被认为处于比对矩阵中的不同位置,对应于本文讨论的评分波前,例如,沿矩阵中从左下角延伸到右上角的直线。数字逻辑设计领域的技术人员容易理解的是,物理评分单元及其包含的数字逻辑不需要以类似的方式物理布置在集成电路上。
因此,当波前对虚拟比对矩阵进行扫进时,评分单元的概念位置相应地更新每个单元,例如,概念性地“移动”到右侧,或者例如在比对矩阵中向下“移动”。所有评分单元都会进行相同的相对运动,保持对角线波前的完整性。波前每次移动到新的位置时,例如在矩阵中垂直向下或水平向右时,评分单元到达新的概念位置,并计算其输入的虚拟比对矩阵单元的比对评分。
在该实施方式中,线性阵列中相邻的评分单元被耦合以传递查询(read)核苷酸、参考核苷酸和先前计算的比对评分。参考窗口的核苷酸可以顺序地馈送到波前的一端,例如线性阵列中的右上评分单元,并且可以从该处依次地向下移动波前的长度,使得在任意给定的时间内,单元内存在的参考核苷酸片段,其长度等于评分单元数,每个连续评分单元中存在一个连续核苷酸。
因此,每当波前水平步进时,将另一个参考核苷酸馈送到右上方的单元中,并且其他参考核苷酸向下左移通过波前。参考核苷酸的这种移动可能是评分单元波前向右穿过比对矩阵的概念性移动的潜在现实。因此,read的核苷酸可以按顺序馈送到波前的相对端,例如,线性阵列中的左下角的评分单元,并且从该处依次地向上移动波前的长度,使得在任意给定时间内,单元内存在的查询核苷酸片段,其长度等于评分单元数,每个连续评分单元中存在一个连续核苷酸。
同样,每当波前垂直步进时,将另一个查询核苷酸馈送到左下方的单元中,并且其他查询核苷酸向上右移通过波前。查询核苷酸的这种转移是评分单元波前向下通过比对矩阵的概念性移动的潜在现实。因此,通过命令参考核苷酸移位,波前可以水平移动,通过命令查询核苷酸移位,波前可以垂直移动。因此,为了使波前大致沿对角线运动,例如随查询和参考序列的典型比对(没有***或缺失),可以命令波前在垂直和水平方向上交替步进。
因此,线性阵列中相邻的评分单元可以被耦合以传递先前计算的比对评分。在不同的比对评分算法中,例如Smith-Waterman或Needleman-Wunsch或其变型,可以使用对于矩阵其他单元的先前计算的分数来计算虚拟比对矩阵中每个单元的比对评分,例如最接近当前单元的左边、上方以及对角左上方的三个单元。当评分单元对已输入的另一矩阵单元计算新评分时,它必须检索对应于其他矩阵位置的先前计算的分数。这些先前计算的分数可以通过在相同单元内存储先前计算的分数和/或在线性阵列中的一个或两个相邻的评分单元中存储先前计算的分数来获得。这是因为虚拟比对矩阵中的三个贡献评分位置(左、上、对角左上)由当前评分单元或线性阵列中其相邻的评分单元之一进行评分。
例如,如果最近的波前步进是水平的(向右),则矩阵中左边最靠近的单元由当前评分单元进行评分;或者如果最近的波前步进是垂直的(向下),则由线性阵列左下方相邻的单元进行评分。类似地,如果最近的波前步进是垂直的(向下),则矩阵中上方最靠近的单元由当前评分单元进行评分;或者如果最近的波前步进是水平的(向右),则由线性阵列右下方相邻的单元进行评分。类似地,如果最近的两个波前步进是不同方向的,例如先下后右,或先右后下,则矩阵中对角线左上的单元由当前评分单元进行评分;或者如果最近的两个波前步进都是水平的(向右),则由线性阵列右下方相邻的单元进行评分;或者如果最近的两个波前步进都是垂直的(向下),则由线性阵列左下方相邻的单元进行评分。
相应地,通过考虑关于最近一个或两个波前的步进方向的信息,评分单元可以利用相邻单元之间的耦合来选择适当的先前计算的分数,在其自身内和/或相邻评分单元内访问。在一个变型中,波前两端的评分单元可能会将其外部分数输入硬连线为无效或零值或最小值分数,使它们不会影响这些极端单元格的新分数计算。
在线性阵列的评分单元中实现的波前,具有这样的偶合,其中,参考核苷酸和查询核苷酸在相反方向上移动通过阵列,使波前在垂直和水平方向概念性步进移动;或者,访问由相邻的单元先前计算的评分,以计算由波前输入的新的虚拟矩阵单元位置比对分数。相应地,可以对虚拟矩阵中的单元带、波前的宽度进行评分,例如通过命令波前连续步进扫过矩阵。因此,对于新的read和待比对的参考窗口,波前可以开始映射在评分矩阵内部,或者有利地,可以从外部开始逐渐进入评分矩阵,例如从左侧开始,或者从上方开始,或者左斜方和在矩阵的左上角上方。
例如,波前可以由其左上方的评分单元开始,位于虚拟矩阵的左上单元的左侧,然后波前可以通过一系列水平步骤向右扫入矩阵中,对在矩阵左上区域中的水平单元带进行评分。当波前到达参考和查询之间的预测比对关系时,或者当从增加的比对分数中检测到匹配时,通过交替的垂直和水平步骤,波前可以开始对角地向右下方扫动,对通过矩阵中间的对角单元带进行评分。当左下方的波前评分单元到达比对矩阵的底部时,波前可以通过连续的水平步骤再次开始向右扫动,直到一些或全部波前单元扫过比对矩阵的边界,对在矩阵的右下区域中水平单元带进行评分。
在一个变型中,比对波前通过在两个连续比对操作之间共享其评分单元,可以提高效率。随着波前的右上部分离开当前比对矩阵的右下区域,已经预先建立下一个比对矩阵,波前可以立即或在穿过最小空位(例如一个或三个单元)后进入下一个比对矩阵的右上角区域。以这种方式,从一个比对矩阵扫出的水平波前可以与扫入下一个比对矩阵的运动相同。这样做可能包括下一个比对的参考碱基和查询碱基,该比对将被馈送到进入下一个比对矩阵的评分单元中,并且可以减少每次比对花费的平均时间,通过执行若干波前步骤,其几乎等于波前中的比对单元数量,例如64或63或61步,可能需要例如64或63或61个时钟周期。
可以选择比对波前的评分单元的数量以平衡各种因素,包括数字逻辑的比对精度、最大***和删除长度、面积、成本和功耗、比对器逻辑的时钟频率以及整个集成电路的性能。对于比对准确性来说,长的波前是理想的,尤其是因为N个单元的波前可以比对大约N个核苷酸长度或略短的indels。但较长的波前会产生更高的功耗,因此需要花费的成本更高。此外,较长的波前可增加集成电路上的布线复杂性和延迟,从而降低最大时钟频率,降低比对器性能。此外,如果集成电路具有有限的尺寸或功耗,则使用较长的波前可能需要在IC其他地方上实施较少的逻辑,例如复制较少的整个波前或其他比对器或映射器逻辑组件,从而降低IC的性能。在一个特定实施例中,波前的64个评分单元可以给出对这些因素的可接受的平衡。
因此,在波前为X的情况下,例如64个评分单元宽,比对矩阵中的评分带同样是64个单元宽(对角测量)。如果通过矩阵的最佳(最佳评分)比对路径停留在评分带内,则不需要处理该单元带以外的矩阵单元,也不需要计算它们的分数。因此,在相对小的、用于比较相对较短的read的矩阵中,例如100个核苷酸或250个核苷酸的read,这可能是安全的假设,例如波前沿着read的预测比对位置扫出完美的对角线。
然而,在一些情况下,例如在用于比对长的read(例如1000或10,000或100,000个核苷酸)的大比对矩阵中,可能存在累积indels的风险,导致真实比对偏离完美对角线,以至于可能脱离评分带。在这种情况下,控制波前转向使最高分数靠近波前的中心,这样可能会很有用。因此,当波前进行扫进时,如果最高分开始以一种方式或另一种方式移动,例如从左向右移动,则移动波前以追踪该最高分的移动。例如,如果在距离波前中心正上方的评分单元中观察到最高评分,则可以通过连续的水平步进将波前向右直行一段距离,直到最高评分返回到波前的中心附近。
因此,可以在波前控制逻辑中实现自动转向控制机制,以基于在波前评分单元中观察到的当前评分和过去评分来确定波前在其长度范围内的转向目标位置,如果偏离中心,则引导波前转向该目标。更特别地,最近被评分的波前位置中的最高评分的位置可以用作转向目标。在某些情况下,这是一种有效的方法。然而,在某些情况下,最高分数位置可能是一个糟糕的转向目标。例如,对于一些比对评分参数的组合,当一个长的indel开始时,分数开始相应地下降,沿着波前形成两个高峰(高分),并在两个高峰之间形成低分谷(低分),随着indel的继续,两个高峰逐渐远离。
因为不容易确定正在进行的事件是***还是删除,所以重要的是波前沿着对角线进行跟踪,直到再次成功匹配,对于删除,向右移动一段距离,或者对于***,向下移动一些距离。但是,如果形成两个展开的评分峰,其中一个可能会比另一个稍高,并且可能会在该方向拉动自动转向,如果实际indel在另一个方向,则会导致波前丢失比对。因此,更稳健的方法可以是从最高观察波前评分中减去增量值(delta值)以确定阈值评分,识别至少等于该阈值评分的两个极端评分单元,并将该极端单元之间的中点作为转向目标。这将倾向于在双峰评分模式之间进行对角引导。可以应用其他转向标准,用于在波前中心附近保持较高的分数。如果在获得来自波前评分单元的分数和作出相应的转向决定之间存在延迟反应,则可以有利地应用滞后以补偿在期间进行的转向决定,以避免自动波前转向的振荡模式。
一个或多个这样的比对过程可以通过任意合适的比对算法来执行,例如Needleman-Wunsch比对算法和/或Smith-Waterman比对算法,可以修改该算法以适应本文描述的函数。通常,这些算法和类似的算法在某些情况下基本上以类似的方式执行。例如,如上所述,这些比对算法通常以类似的方式构建虚拟阵列,使得在各种情况下,水平顶部边界可以被配置为表示基因组参考序列,其根据碱基对组成可以被布置在阵列顶行。类似地,垂直边界可以被配置为表示经测序和映射的查询序列,该查询序列沿着第一列向下排列,使得它们的核苷酸序列顺序通常与它们所映射到的参考核苷酸序列相匹配。中间的单元填有分数,该分数是关于查询在给定位置的相关碱基位于相对于参考的那个位置的概率。在执行该函数时,可以在中间单元内横跨填充分数的矩阵对角地移动列,并且可以确定查询的每个碱基在指示位置的概率。
关于可进行最佳全局(或半全局)比对的Needleman-Wunsch比对函数,将整个read序列与参考基因组的某个片段比对,波前转向可以被配置为使其典型地一直从比对矩阵的顶部边缘扫到底部边缘。当波前扫进完成时,选择比对矩阵底部边缘(对应于read末端)的最高评分,并且比对被返回到矩阵顶部边缘上的单元(对应于read的起始端)。在本文公开的各种实施例中,read可以是任意长度,任意大小,并且不需要关于执行比对的广泛的read参数,例如在各种情况下,read可以与染色体一样长。然而,在这种情况下,存储容量和染色体长度可能是限制因素。
关于可进行最佳局部比对的Smith-Waterman算法,将整个read序列或read序列的一部分与参考基因组的某个片段对齐,该算法可以基于read的全部或部分比对找到可能的最佳评分。因此,在各种情况下,波前评分带可能不会延伸到比对矩阵的顶部和/或底部边缘,例如如果非常长的read仅在其中间有种子映射到参考基因组,但是通常波前仍然可以从矩阵的顶部到底部进行评分。局部比对通常通过两个调整来实现。首先,比对评分绝不允许低于零(或其他下限值),并且如果另外计算的单元评分为负值,则替换零得分,表示新比对的开始。其次,在矩阵中的任意单元中产生的最高比对评分,不一定沿着底部边缘,可用作比对的终点。向上和向左通过矩阵从这个最高评分到零分,对比对进行回溯,该分数用作局部比对的开始位置,即使它不在矩阵的顶行。
鉴于以上所述,通过虚拟阵列存在几种不同的可能路径。在各种实施例中,波前从虚拟阵列的左上角开始,并且向下朝着最高评分的标识符向下移动。例如,可以对所有可能比对的结果进行收集、处理、关联和评分以确定最高分数。当已经达到边界的末端或阵列的末端和/或当确定了对所有处理过的单元获得最高分数的计算方法(例如,识别出总体最高分数)时,则可以执行回溯(Backtrace),从而找到获得最高分数的路径。
例如,可以识别出得到预测的最高评分的路径,并且一旦识别出,就可以执行审查以确定如何获得最高分数,例如沿着最佳评分比对箭头向后移动回溯路径,通过其可获得所识别的最高分数,例如由波前评分单元计算得到的。这种向后重建或回溯涉及从确定的最高分数开始,并且向后经过先前的单元,该单元可用于对可获得最大评分的单元路径进行导航,一直沿表格向上并返回初始边界,例如阵列的起始,或者零分(在局部比对的情况下)。
在回溯期间,已经到达比对矩阵中的特定单元,下一个回溯步骤到达贡献了最佳评分的相邻单元,紧邻向左,或向上,或在对角线左上方,其中,该最佳评分构成当前单元格的评分。以这种方式,可以确定最高分数的变化,由此确定如何实现最高分数。回溯可以在角落、边缘或边界处结束,或者可以以零分结束,例如在阵列的左上角。因此,这种回溯可以识别适当的比对,并产生CIGAR链readout,例如3M,2D,8M,4I,16M等,其表示来自个体的样本基因组序列或其部分,与参考DNA基因组序列匹配或对比的情况。
因此,一旦已经确定了每个read被映射的位置,并且进一步确定了每个read被比对的位置,例如,每个相关的read都被赋予一个位置以及质量评分,该评分反应了该位置是正确比对的概率,知晓受试者的DNA核苷酸序列,则可以验证受试者的不同read和/或基因组核酸序列的顺序,例如通过执行向后通过阵列的追踪回溯函数以便确定样本基因组序列中每个核酸正确顺序。因此,在一些方面中,本公开涉及回溯函数,例如作为比对模块的一部分,该比对模块执行比对和回溯两种函数,例如可以是模块管道的一部分,例如涉及采集原始序列read数据(例如形成个体的基因组样本)、映射和/或比对该数据的管道,然后可以对该数据进行排序。
为了便于回溯操作,可以将用于每个评分单元的评分向量存储在比对矩阵中,对该评分选择决定进行编码。对于采用线性空位罚分进行评分的经典Smith-Waterman和/或Needleman-Wunsch算法,评分向量可以编码四种可能性,其可选择性地被存储为从0到3的2-bit整数,例如:0=新比对(空的分数选择);1=垂直比对(来自上方单元的评分,由空位罚分修改);2=水平比对(来自左边单元评分,通过空位罚分修改);3=对角线比对(来自单元向上和向左选择的评分,通过核苷酸匹配或错配评分修改)。可选地,还可以存储每个评分矩阵单元的计算得分(除了标准存储的获得的最大比对评分之外),但这通常不是回溯所必需的,并且会消耗大量的存储容量。执行回溯随后成为遵循评分向量的问题;当回溯已经到达矩阵中的给定单元时,下一个回溯步骤由该单元的存储评分向量确定,例如:0=终止回溯;1=向上追溯;2=向左回溯;3=斜向左上方的回溯。
这样的评分向量可以被存储在根据比对矩阵的维度布置的二维表中,其中仅填充与由波前评分的单元相对应的entry。或者,为了节约存储容量,更容易记录它们生成时的评分向量,并且更容易地容纳各种大小的比对矩阵,可以将评分向量存储在表中,每行的大小被设置为存储来自单个波前评分单元的评分向量,例如128位存储来自64个单元波前的64个2-bit评分矢量,并且行数等于比对操作中波前的最大步骤数。
另外,对于该选项,可以保存波前步骤方向的记录,例如,在每个表行中存储额外的(例如,129位)bit,对于该波前位置之前的垂直波前步骤编码例如0,对于在该波前位置之前的水平波前步骤编码1。这个额外的比特可以在回溯期间使用,以跟踪每个表格行中的评分向量对应于哪个虚拟评分矩阵位置,以便在每个连续的回溯步骤之后可以检索适当的评分向量。当回溯步骤是垂直或水平的时候,应该从前面的表格行中检索下一个评分向量,但是当回溯步骤是对角线时,应该从之前的两行中检索下一个评分向量,因为波前必须采取两个步骤从任意一个单元移动到单元对角线右下方进行评分。
在仿射空位评分的情况下,评分向量信息可以被扩展,例如,到每个评分单元4位。例如,除了2位分数选择方向指示符,可以添加两个1位标志(flag),一个垂直扩展标志和一个水平扩展标志。根据Smith-Waterman或Needleman-Wunsch的仿射空位评分扩展方法或类似的比对算法,对于每个单元,除了代表最佳评分比对的、终止于该单元的初级比对评分之外,应当产生“垂直评分”,对应于以最终垂直步骤到达该单元的最大对准分数;并且应当产生“水平分数”,对应于以最终水平步骤到达该单元的最大对准分数;当计算三个分数中的任何一个时,可以使用来自上述单元的初级分数减去空位开放罚分或使用来自上述单元的垂直分数减去空位扩展罚分来计算进入该单元的垂直步骤,以较大者为准;并且可以使用从单元到左边的初级分数减去空位开放罚分,或者使用从单元到左边的水平分数减去空位扩展罚分来计算进入该单元的水平步骤,以较大者为准。在选择垂直分数减去空位扩展罚分的情况下,应该在评分向量中设置垂直扩展标记,例如,'1',否则它应该是未设置的,例如,“0”。在选择水平分数减去空位扩展罚分的情况下,应该在评分向量中设置水平扩展标记,例如,'1',否则它应该是未设置的,例如,“0”。在回溯仿射空位评分的过程中,任何时候回溯会从给定单元向上垂直移动,如果设置了该单元的评分向量的垂直扩展标志,则后面的回溯步骤也必须是垂直的,而不管上方单元的评分向量。同样,任何时候回溯都会从给定的单元向左水平移动,如果设置了该单元的评分向量的水平扩展标志,则后面的回溯步骤也必须是水平的,而不管左侧单元的评分向量如何。
因此,这样的评分向量表,例如,对于使用线性空位评分的64个单元的每行129比特或使用仿射空位评分的64个单元的每行257比特,具有一些数量的NR行,足以在结束比对评分之后支持回溯,其中评分波前进行NR步长或更少。例如,当对齐300个核苷酸的read时,所需的波前步骤的数量可能总是少于1024,因此该表可能是257×1024位或约32千字节,在许多情况下,该表可能是在IC中合理的本地存储器。但是如果需要比对非常长的read,例如100,000个核苷酸,评分向量的存储需求可能相当大,例如,8兆字节,在IC内包括本地存储器可能是非常花费成本的。因此,评分向量信息可以被记录到IC外的大容量存储器中,例如,DRAM,但是随后的带宽要求可能会过多,例如每个比对模块每个时钟周期257位,这可能会造成瓶颈并显着降低比对器性能。
因此,希望有一种在完成比对之前处理评分向量的方法,以使它们的存储需求可以保持有界性,例如,以执行增量回溯,从比对的评分向量历史的早期部分产生增量部分CIGAR字符串,随后丢弃所述评分向量的早期部分。面临的挑战是回溯应该从比对终点开始,最高评分单元,直到比对评分完成时才知道,所以在比对完成之前开始的任何回溯可能会从错误的单元开始,而不是沿着最终总体最优比对路径。
因此,给出了一种用于从部分比对信息(例如,包括当前已评分的对比矩阵单元的部分评分向量信息)执行增量回溯的方法。根据当前完成的比对边界,例如特定的评分波前位置,从边界上的所有单元位置开始回溯。来自所有边界单元的这种回溯可以按顺序地执行,或者有利地,特别是在硬件中实现,所有的回溯可以一起执行。不需要从这些多次回溯中提取比对符号,例如CIGAR字符串,仅需要确定在回溯期间它们经过的比对矩阵位置。在从评分边界同时回溯时,可以利用多个1比特寄存器,其对应于比对单元的数目,例如全部初始化为1,表示任何回溯是否通过对应位置。对于同时回溯的每一步,对应于这些寄存器中的所有当前'1'的评分向量,例如从评分向量表的一行开始,可以对评分向量进行检查以确定与寄存器中的每个'1'相对应的下一个回溯步骤,使寄存器中的每个'1'的下一个位置,用于下一个同时回溯步骤。
重要的是,很容易使寄存器中的多个'1'合并到共同位置,对应于多个同时回溯合并到公共回溯路径上。一旦两个或更多的同时回溯合并在一起,它们将无限期地合并,因为此后它们将利用来自同一单元的评分向量信息。基于经验和理论,据观察,所有同时回溯在相当少量的回溯步数内很有可能会合并成单一的回溯路径,其中回溯步数是波前评分单元数量的若干倍数,例如可能是一个小的倍数(例如8倍)。例如,来自给定波前(64单元波前)边界的所有回溯在512个回溯步数内很有可能合并为单个回溯路径。或者,对于所有回溯来说,在一定数量的回溯步数内终止也是可能的,并非罕见的,例如,512个回溯步数。
因此,多个同时回溯可以从评分边界执行,例如,评分的波前位置,距离足够远以至于它们全部终止或合并成单个回溯路径,例如,在512个或更少的回溯步数内。如果它们全部合并成单一的回溯路径,则从它们合并的评分矩阵位置或沿着单一回溯路径进一步返回的任意距离,可以从部分比对信息进行增量回溯。通过常规的单一回溯方法,包括记录相应的比对符号,例如部分CIGAR串,从合并点或进一步返回的任意距离开始进行进一步回溯。这种增量回溯,例如部分CIGAR字符串,必须是任意可能的最终回溯的一部分,例如完整的CIGAR字符串,在比对完成后产生,除非这样的最终回溯在到达同时回溯开始的评分边界之前终止,因为如果它到达评分边界,它必须跟随同时回溯路径中的一个,并合入单一的回溯路径,当前被增量提取。
因此,可以安全地丢弃对应于增量提取的回溯的矩阵区域的所有评分向量,例如在提取的单一回溯开始之前的波前位置的所有表行中。当从最高评分单元执行最后的回溯时,如果它在到达评分边界之前终止(或者,如果它在到达提取的单一回溯起始点之前终止),则增量比对记号例如部分CIGAR字符串,可以被丢弃。如果最后的回溯持续到提取的单一回溯起始点,则其比对记号例如CIGAR字符串可以移植到增量比对记号(例如部分CIGAR字符串)上。
此外,在非常长的比对中,从评分边界(例如评分的波前位置)同时回溯直到所有回溯终止或合并,然后提取具有比对记号的单一回溯,这一过程可以从不同的、连续的评分边界重复执行。除非新的同时回溯或单一回溯提前终止,否则来自每个连续增量回溯的增量比对记号,例如部分CIGAR字符串,可移植到累积的先前比对记号上,在这种情况下,可以丢弃累积的先前比对记号。最终回溯同样可以将其比对记号移植到最近累积的比对记号上,以获得完整的回溯描述,例如,CIGAR字符串。
因此,以这种方式,假设同时回溯总是在有限数量的步数内合并在一起,例如512步,那么存储评分向量的存储器则可以保持有界。在极少数情况下,同步回溯无法在有限数量的步数内合并或终止,可能需要采取各种例外操作,包括不进行当前比对,或者以更高边界或无边界重复执行,可能采用不同的或传统的方法例如存储完整比对的所有评分向量,例如存储在外部DRAM中。在一个变型中,失败的比对可能是合理的,因为它非常罕见,更罕见的是,失败的比对是比对报告中的最佳评分比对。
在可选的变型中,评分向量存储可以被物理地或逻辑地划分为多个不同的块(block),例如,每个512行,并且每个块中的最后一行可以用作评分边界以开始同时回溯。可选地,同时回溯在单个区块内终止或合并,例如,512步。可选地,如果同时回溯在更少的步数内合并,则在开始提取前一个区块中的单一回溯之前,合并的回溯可以继续贯穿整个区块。因此,在评分向量完全写入block N并开始写入block N+1之后,可以在block N中开始同时回溯,然后在block N-1中进行单一回溯和比对符号提取。如果同时回溯、单一回溯和比对评分的速度都相似或相同,并且可以同时执行,例如在IC中的并行硬件中,则blockN-1中的单一回溯可以与评分向量填充block N+2同时进行,并且当block N+3将被填充时,block N-1可以被释放并再循环。
因此,在这样的实例中,可以采用最少4个评分向量块,并且可以循环利用。因此,比对模块的评分向量总的存储量可以是4个块,其中每个块257×512比特,或者例如大约64千字节。在一个变型中,如果当前最高比对评分对应于比当前波前位置更早的区块,则该区块和前一个块可以被保留而不是被再循环。如果仍然是最高评分,则可以从该位置开始最终回溯;具有额外的2个块以这种方式保持可使块最少,例如达到6块。在另一个变型中,为了支持重叠对齐,可以利用评分波前、附加块(例如1或2个附加块),例如总共8块,例如大约128千字节;其中,评分波前如上所述从一个比对矩阵逐渐横越到下一个比对矩阵。因此,如果循环使用这种有限数量的区块,例如4个块或8个块,则对任意长度的read进行比对和回溯是可能的,例如100,000个核苷酸或整个染色体,而无需对评分向量使用外部存储。
如上所述,DNA的某些区域是编码蛋白质或函数性RNA的基因。通常作为由内含子(非编码区段)隔开的一系列外显子(编码区段),每个基因存在于双链DNA双螺旋的单链上。有些基因只有一个外显子,但大多数有数个外显子(由内含子隔开),有些具有数百个外显子或数千个外显子。外显子通常有数百个核苷酸长,但也可能与单个核苷酸一样短或长达数十或数十万个核苷酸。内含子通常是数千个核苷酸长,并且有一些超过一百万个核苷酸。
基因可以被RNA聚合酶转录成信使RNA(mRNA)或其他类型的RNA。最初RNA转录物是该基因的单链拷贝,除了DNA胸腺嘧啶(T)碱基被转录成RNA尿嘧啶(U)碱基。但是在产生这种拷贝之后,内含子拷贝通常通过剪接体剪接,留下外显子拷贝在“剪接点”连接在一起(“剪接点”不直接显现)。RNA剪接并不总是以相同的方式进行。有时候剪接出一个或多个外显子,有时候剪接点不会落在最常见的内含子/外显子边界上。因此,单个基因可以产生多个不同的转录RNA片段,这一过程有时称为可变剪接。
剪接的mRNA(在真核生物中)从细胞核转运到核糖体,该核糖体将其解码成蛋白质,其中每组三个RNA核苷酸(密码子)编码一个氨基酸。通过这种方式,DNA中的基因可作为制造蛋白质的原始指令。
RNA剪接更容易发生在连续的外显子/内含子边界处,其特征在于典型的序列组成,特别是在内含子末端附近。特别地,一个内含子的前两个和最后两个碱基,被称为内含子基序(motif),仅有3个序列中的一个,即“典型”内含子基序,绝大多数时间(大约99.9%)。最常见的典型内含子基序是“GT/AG”,即内含子的前两个碱基是'G','T',最后两个碱基是'A','G'。GT/AG基序发生概率为在98.8%。其他典型的内含子基序是GC/AG,大约概率为1.0%,AT/AC大约概率为0.1%。这些典型基序及其发生概率在各物种间合理一致,但可能并不普遍。
不是所有的基因都被转录,并且基因可以以不同的速率转录。许多因素可以影响给定的基因是否被转录成RNA,以及影响转录频率。其中一些因素是遗传的,一些因个体组织细胞而异,另一些因环境条件或疾病而异。因此,具有完全相同的DNA的两个细胞可以产生完全不同类型和数量的蛋白质和功能性RNA。因此,对存在于一个或多个细胞中的RNA进行测序(解读)为DNA测序提供不同信息。将DNA测序和RNA测序结合起来,可以更全面地了解细胞状况和活性。
全转录组RNA测序通常首先选择靶RNA,例如蛋白质编码RNA,然后使用逆转录酶将RNA片段转换回互补DNA链(cDNA)。该DNA可以用聚合酶链式反应(PCR)扩增和/或片段化成所需的序列长度分布。然后,用DNA测序仪对DNA片段进行测序,例如“shotgun”新一代测序仪。
得到的DNA read是反向互补的或原始RNA链的正向拷贝,除了'U'再次被'T'替代。通过使用文库和测序方案,可以维持或标记测序DNA链相对于原始RNA的方向;但在常见方案中,大约50%的测序DNA相对于原始RNA反向补充,没有直接指示方向(尽管存在间接指示)。
RNA-seq方案中的DNA read不同于全基因组或全外显子组DNA测序。首先,除了污染物之外,只有转录的RNA被测序,因此非编码DNA和非活性基因通常不会出现。其次,各种基因的测序read的数量与这些基因的生物转录速率有关。第三,由于内含子剪接,RNA-seqread倾向于跳过基因内的内含子(非编码)片段。
RNA-seq read的处理方式通常与DNA read不同。虽然这两种类型的read通常被映射并与参考基因组进行比对,但DNA和RNA的映射和比对的技术不同(见以下部分)。对于DNA和RNA,映射和比对后,read通常通过它们的映射参考位置进行排序。对于DNA处理,重复标记是可选的,通常不用于RNA-seq数据。
此后,DNA read通常由变异检测器处理,以识别样本DNA和参考基因组之间的差异。RNA-seq read通常不用于变异检测,虽然这是偶尔完成的。更常见的是,对经过比对和排序的RNA read进行分析以确定哪些基因、以什么相对数量表达,或哪些各种可变剪接转录产物、以什么相对数量产生。这种分析通常涉及计算多少个read与各种基因(例如外显子等)进行比对,还可能涉及转录本组装(根据参考或de novo)以从相对较短的RNA-seq read推断较长的RNA转录物如何从DNA提取出来。
基因、外显子或转录物表达分析通常扩展至差异表达分析,其中比较来自多个样本的RNA-seq数据,通常来自两个或更多个类型(亚群或表型),以对基因、外显子或转录物在不同类别中不同的表达程度进行量化。这可以包括计算“无效假设”的可能性——假设不同类别的表达水平是相同,以及评估样本间表达的“倍数变化”,例如8倍、10倍或更多倍的差异。
对于DNA或RNA测序的许多应用,早期处理阶段是将read与参考基因组进行映射和比对。正常情况下,DNA和RNA测序都使用面向DNA的参考基因组,'T'存在,'U'不存在',特别是考虑到RNA-seq通常涉及在测序前逆转录成cDNA。就RNA-seq而言,与全外显子组测序相关,参考基因组可想象地限于已知的编码区,或限于接近编码DNA的区域。然而,对样本生物体,通常的做法是与全参考基因组进行映射和比对。
可映射/比对RNA的映射器/比对器的最大差异是处理剪接点的能力。因为RNA-seqread对应于转录和剪接RNA的片段,所以通常一个read穿过一个或多个剪接点。对于面向DNA的参考基因组而言,这意味着read的第一部分来自第一外显子并且应该映射到第一外显子,read的第二部分应该映射到第二外显子等等。例如,在100个碱基的read中,前40个碱基可以来自染色体3的外显子,偏移2,345,000,其余的60个碱基可以来自另外的外显子100,000个碱基,从染色体偏移量2,445,040开始。用于这种read的比对可以用映射位置Chr3:2345000和比对CIGAR字符串“40M100000N60M”来表示,其中“40M”和“60M”表示与各个外显子比对的部分,并且“100000N”表示100,000碱基内含子,这些100,000个参考碱基被read比对跳过。(摘要,这个CIGAR字符串可以看作等同于“40M100000D60M”,其中“100000D”表示参考的100,000个碱基的缺失,但通常用'N'表示假定的剪接内含子,用'D'表示假定的变异缺失或测序错误。)
'N'(内含子)和'D'(缺失)CIGAR事件之间的实际差异与它们的典型长度有关。缺失很少超过50个碱基,因此使用Smith-Waterman或类似的序列比对算法可用于发现缺失并精确映射。内含子通常长达数千个碱基,甚至一百万个碱基或更多,使用Smith-Waterman型比对器来检测这种长的比对空位是不实际的。因此,初步发现剪接点更多的是属于“映射”的范围,而不是“比对”。
映射问题是每个read可能在未知边界处被划分为外显子片段,并且各种外显子片段可能映射到广泛分离的基因组位置,而这些位置是需要单独发现的。将外显子片段映射到它们对应的参考位置的技术可以类似于将整个read映射到一个参考片段的技术,但间接映射(前者)更具挑战性,因为每个外显子可能比整个read更短,并且因此包含更少的信息来指导映射器。事实上,单个外显子可能短至一个(1)碱基,如“G”,并且没有额外的信息,确定把单个碱基映射到百万个碱基潜在内含子范围的位置是不实际的。
至少在一些应用中,除了发现read的两个连续外显子片段的映射之外,也需要对它们之间的剪接点进行精确映射。即使可能很清楚的知道,一个100个碱基的read中约前40个碱基和约最后60个碱基映射到在染色体3中正好相距100,000个碱基的位置,但是通常不太清楚到底有多少read碱基映射到这两个位置,或确切地说,剪接点,两个外显子片段之间的边界落入read中的位置。例如,正确的CIGAR可能不仅仅是“40M100000N60M”,而是“39M100000N61M”或“42M100000N58M”。剪接点的精确映射更多的是“比对”操作,而不是“映射”。
可用于RNA的映射器也可用于推断read序列从两个DNA链中哪一个转录而来。在典型的非面向RNA-seq方案中,给定read可以与参考正向比对或反向互补比对(有或没有剪接点)。在双末端(paired-end)RNA-seq方案中,通常两个配对read定向“FR”(正向/反向),其中一个较早映射至参考基因组中,为正向,而另一个为反向互补。但是在典型的非面向RNA-seq方案中,这些映射方向并不能确定哪条DNA链携带了用于该read的RNA转录的基因,部分原因是两种方向都是在通过PCR扩增cDNA时产生的。
最后,可用于RNA的映射器可以利用“注释”的已知剪接点的输入数据库。例如,经过详细研究的所有常见的人类基因,以及在基因组数据库中注释的最常见和较不常见的RNA转录物的剪接点。这些信息不是100%全面的;任意个体样本都可能会出现一些未在数据库中记录的“新颖”剪接。但是,注释剪接点仍然可以作为提高RNA-seq映射和比对准确性的有用指南。在映射/比对RNA-seq read时可以使用或不使用带注释的剪接点,一种先进的方法是检测在比对read中观察到的一组剪接点,其中包括一些标准,例如覆盖剪接点的最小比对数,并使用该组的检测经验剪接点作为注释剪接点用于第二次RNA映射/比对。将在一些read中发现的剪接点用来指导其他read的映射,可以提高灵敏度。
对于RNA-seq read的初始种子的映射与DNA read类似。选择主要种子长度K,理想情况下比以4为底参考基因组大小的对数稍长,以使得种子映射足够独特,例如对于人类全基因组参考,K=18或K=21。构建散列表,使用来自参考基因组的一些或全部种子填充散列表,其中该散列表中的散列记录指示其在参考中的位置和方向。散列表被加载到映射器引擎硬件可访问的存储器中,例如FPGA板上的DRAM模块,连接到FPGA上的bin,作为映射器引擎硬件的一个实例。
映射器引擎接收源自RNA或DNA测序仪的RNA read(通常在测序之前已被逆转录为cDNA)。从每个read中,映射器提取长度为K的种子,理想情况下为多个重叠K碱基种子的滑动窗口,以某种模式选择,例如从每个碱基位置开始,或从每个偶数位置开始。映射器访问存储器中的每个种子的散列表,获得种子匹配参考基因组中的零个,一个或多个位置的列表。与DNA映射一样,种子可能会被不断进行扩展,必要时连续更长的种子会反复访问散列表,以将大量匹配位置减少到相当少,例如16个或更少的匹配。种子匹配被聚合成种子链,包括沿着相似的比对对角线以相同方向匹配的种子(相对于参考正向或反向补充)。
对于RNA-seq read,映射引擎利用固定的短种子映射来改进初始种子映射,这一附加步骤可能是有利的。例如,如图1所示,RNA read经常穿过一个或多个剪接点,而穿过read剪接点的种子通常无法进行映射,因为其参考中的真实图像在两个位置之间分开。当read包含比初始种子长度K更短的外显子时,或者read通过比K更少的碱基重叠更长的外显子,则种子映射可能无法找到该外显子的对应参考位置。即使整个或部分外显子比K碱基略长,但比整个read短,它可能容易受到种子映射失败的影响,当它与参考相比至少包含一个编辑(差异),如单核苷酸多态性(SNP)或***或缺失(indel),来自相对于参考的样本变异或来自测序错误。例如,如图1所示,图1示出了没有将所有外显子片段与长(K碱基)种子进行映射的示例。因此,为了获得良好的种子映射灵敏度,需要查询较短的种子,这些种子可以适合短外显子或外显子的短read突出端,或在编辑之间。
对全基因组散列表的种子进行查询可能是不切实际的,因为其比与以4为底参考基因组大小的对数相关的最小长度短得多,而较短的种子趋向于匹配大量的位置。例如,对于大小约为31亿碱基的人类参考基因组,以4为底的对数大约为15.8,查询的最小实际种子长度可以是K=16或18,可能K=21是理想的设置;查询K=11个碱基种子是不实际的,因为每个11个碱基的样式将匹配平均为700多个参考位置。
然而,在用例如K=21个碱基的种子进行初始映射后,可以用较短长度的固定种子如L=11个碱基的种子改进映射。对于固定种子映射,固定种子散列表(可以与主散列表
或单独的散列表相同)用来自参考的L-碱基的种子填充,该种子被键入特定的参考区域,比
如一定大小的bin,例如216=65,536个碱基。每个参考区域或bin都被赋予一个唯一的ID,例
如它在参考基因组中的起始位置除以bin尺寸。使用由L种子碱基与bin ID形成的散列密钥,将每个参考bin内的L碱基种子填充到固定种子散列表中。
映射器引擎可以使用由L-碱基种子与bin ID以相同方式形成的查询散列键,对任意给定bin内的任意给定的L-碱基种子查询固定种子散列表。该查询只能查找该特定参考bin内的L-碱基种子匹配。由于bin比整个参考基因组小得多,所以短L-碱基种子具有足够的信息,经常映射唯一。例如,以4为底bin 65,536的对数为8,因此L=11(或10,12等)是用于填充和查询的实际固定种子长度。如图2所示,短的(L-碱基)种子更容易适合短外显子、短外显子突出端或通过编辑(如SNP)切割的外显子片段。
使固定种子映射起作用的关键是查询固定种子散列表的映射引擎由初始种子映射的结果指引。初始匹配例如K=21个碱基种子可能无法成功地映射read的所有外显子片段,但它们很可能映射每个read或其成对双末端read(paired end mate)的至少一个外显子片段。鉴于RNA read或其配对(mate)中至少一个外显子片段内至少有一个K-碱基匹配,read中没有被K-碱基种子成功映射的任意其他外显子片段很可能与参考基因组中相对较近的相匹配。
例如,大约99%的人类内含子短于65536个碱基,因此如果一个外显子片段与K碱基种子一起映射到给定参考位置,则其他未映射的外显子片段可能在相同的65,536碱基参考bin,或相邻bin中匹配。如图3所示,可以定义搜索范围,例如,bin大小,或者bin大小的1/2或者1/4,或者bin大小的两倍,并且可以在固定种子散列表中使用L-碱基种子,在成功映射的K-碱基种子的搜索范围内查询一个或者多个参考bin。因此,K-碱基种子匹配作为用于短L-碱基种子的局部搜索的固定点。这很可能会找到与先前未映射的read外显子片段的其他匹配。以这种方式,RNA read的种子映射灵敏度得到提高。
另外,映射器引擎可以有多种方式利用固定的短种子映射。在一个实施例中,在映射器查询散列表中的K-碱基初始种子并且将匹配聚合成种子链之后,映射器从read中提取L-碱基种子,并且在附近的参考bin中查询这些种子(在当前种子链选定的搜索半径内)以找到与较短的L-碱基种子的额外匹配,然后该映射引擎聚集成另外的种子链,或者加入具有类似比对对角线的现有种子链。在该实施例中,这对于固定种子散列表与主散列表相同,或者不同的主散列表和固定种子散列表同时驻留在可访问存储器中是有利的。在任何一种情况下,为了在存储器中,为散列表提供K-碱基和L-碱基种子,可以使用大约两倍的存储器,例如64GB的DRAM而不是32GB的DRAM,或者每个长度的大约一半的参考种子可以被填充,例如50%的填充种子密度而不是100%的填充种子密度。为了限制所需的固定种子散列表查询的数量,仅使用更有希望的初始种子链作为固定点,和/或从仅来自某些区域的read提取L-碱基种子,例如K-碱基种子没有成功映射的区域。
在另一个实施例中,可以在仅使用K-碱基种子的第一遍中完成一组read映射和/或比对。然后可以例如通过映射器引擎之外的软件检查每个read的映射/比对结果,以确定哪些read需要使用固定的短种子对映射进行改进。一个可能触发固定种子改进的迹象是第一遍(first-pass alignment)比对被剪切,尤其是在剪切接近或大于短种子长度L的情况下。触发固定种子改进的另一个迹象可能是在第一遍比对内观察到大量错配。触发固定种子改进的又一个迹象可能是成对双末端不能成功映射,或映射得彼此远离或以意想不到的相对方向映射。有利的是,如果选择一个read用于短种子改进,则也选择其成对双末端。有利的是,只有一部分第一遍比对可能需要短种子改进,例如15%或30%。
对于使用短种子改进的子集中的每个read,可以选择一个或多个要搜索的参考bin,例如bins与围绕第一遍read和/或其mate的比对结果的检索半径重叠(参见图3)。然后对选择用于改进的read子集进行第二遍映射/比对。在第二遍中,可以在固定种子散列表中查询来自每个read的L-碱基种子,将其键入每个read的一个或多个选定的参考bin。通常,对于选择用于第二遍的至少一些read,改进映射/比对结果,例如具有较高的比对评分;当这些情况得到改善时,可以保留第二遍的结果,或者在其他情况下保留第一遍的结果。可选地,主散列表可以在第一遍映射之前被加载到引擎可访问的存储器中,并且可以在第二遍映射之前加载固定种子散列表,从而不需要在存储器中同时适应两个散列表(或者单个组合散列表),尽管两者可能同时被加载,或者为了减少参考种子种密度以使两者同时适应。
在一些实施例中,参考bin具有可配置大小,搜索半径是可配置的,并且初始种子长度(K)和固定种子长度(L)都是可配置的。在其他实施例中,参考bin大小是2的幂。人类全转录组RNA-seq处理的示例性优选设置是K=21,L=11,参考bin尺寸为2^16=65,536,并且搜索半径为2^14=16,384。
如果向映射器引擎提供注释的剪接点,则可以利用它们来提高映射灵敏度。注释的剪接点列表被加载到映射器引擎可访问的存储器中。有利的是,注释的剪接点可以被格式化为易于被映射器引擎访问的表,例如具有用于每个例如1024-碱基参考bin的entry的表格,其中在bin中,包含具有至少有一个端点的内含子的信息,或者指向多个内含子描述符的列表(在初始表格之后分配的空间中)。每个内含子描述符指示相关内含子的两个端点的参考位置,并且还可以携带附加信息,例如内含子基因所在的DNA链、内含子的基序以及剪接点发生频率。
在种子映射(初始种子和/或固定的短种子)和种子链形成之后,在与每个种子链跨越的参考区域相对应的行,或长种子链末端附近的区域访问注释的剪接点表。获取附近至少有一个端点的内含子列表,并与至少用于访问的种子链进行比较。如果不是来自种子链的可能或可能的剪接点,则丢弃每个内含子。具体而言,通过比较参考中的内含子端点位置,与在参考中和read中的种子链端点,计算read中剪接点的有效位置。如果这个有效位置超出了read的范围,或者实质上与种子链重叠(例如,在种子链的端点内超过maxSpliceOlap=16),或者在read中距离种子链的范围太远(例如种子链外部超过maxSpliceGap=150个碱基),则注释的剪接点被丢弃,因为不太可能相关。
每个剩余的内含子描述符被认为是来自相关种子链一端的可能的剪接点。这些信息有两种使用方式。首先,将参考中内含子的另一端作为read的相邻部分应映射到的可能位置,即使该位置未通过种子映射发现。实际上,内含子相对末端最可能的比对斜线是通过从当前种子链对应末端的比对斜线加上或减去(取决于取向)内含子长度来精确计算。如果该参考位置和比对斜线与任意现有的种子链不一致,则在内含子的相对末端的参考位置开始制造新的(伪)种子链,从由计算出的比对斜线暗示的对应位置处的read处开始。以这种方式,通过推断它们在现有种子链的内含子之间的位置,可以发现read的外显子片段可能的映射位置,而无需在它们内部的种子映射。
其次,注释的内含子信息被用于建立两条种子链之间的已知链接,所述两条种子链表示read中的相邻外显子片段。链接信息记录在一条或两条种子链的描述符中,通过注释剪接点识别其链接到的其他链。此外,剪接点的精确位置是已知的(假设注释剪接点是正确的),通过注释内含子终点和种子链比对斜线的差来计算。这种精确的剪接点映射也记录在一条或两条种子链的描述符中。
如果发现从相同的种子链链接多个注释的剪接点,则可以以各种方式记录链接和剪接点位置信息。例如,两条链之间的每条链接可能只需记录在两条链中的一条链中,因此,如果它总是记录在链接的“目的终点”端,则可能不会发生冲突。一个种子链描述符可以有空间存储多个链接,或者具有链接信息的动态空间。此外,现有种子链描述符的拷贝可以保存备用链接信息。
注释的剪接点查找可以有利地迭代。例如,从一个种子链覆盖开始,例如read的前1/3,可能会发现一个带注释的剪接点,连接到一个先前未被发现的参考位置,该参考位置被制造成新的种子链。对于新制造的种子链,可以再次访问带注释的剪接点表,可能发现在read的第二个1/3之后存在另一个已知的链接,链接到另一未被发现的参考位置。有利的是,注释剪接点表entry可以在达到最近的其他注释剪接点之前,在相同基因的转录物内或通常情况下,指示距离(在与注释剪接点相同的方向上继续)。当该距离超出read末端时(该距离在计算出read中的剪接点位置之后测量),不需要再次访问带注释的剪接点表,因为不会再发现任何内容。
在映射器引擎内,种子以相同方向(相对于参考的正向或反向补充)匹配,并且类似的比对斜线聚集成种子链,旨在可以稍后检查单个无空位比对或空位比对操作并且对每个种子链的read和参考之间的比对进行评分。比对斜线可以被想象为被匹配种子覆盖的斜线定向比对路径,比对矩形由read序列和参考序列形成,其中read序列在一个轴上,参考序列在另一个轴上;可以计算整数表示,针对正向比对,通过从种子在参考中的位置减去其在read中的位置,以及针对反向互补比对,通过将种子的read位置添加到其参考位置。
当read精确地匹配参考的片段时,例如read的位置0至100匹配参考中的位置1,200,000至1,200,100,所有种子通常在相同的斜线上匹配,例如,1,200,000-0=1,200,100-100=1,200,000;read中30至50碱基中特定21-碱基种子将与参考碱基1,200,030至1,200,050匹配,在相同斜线1,200,030-30=1,200,000处匹配。具有相同取向和对角线的种子匹配通常包括在相同的种子链中,但在相同的种子链中也可以包括稍微不同的比对斜线上的种子,例如对角线相差不超过20或不超过50的种子,或者一些更复杂的规则。允许一些这样的斜线差异是有用的,因为read有时包含关于参考的indels(***或缺失),并且空位比对(例如比对器引擎中的Smith-Waterman比对)可以解决并对单个种子链的这种***进行评分,只要indels不太大,如***或缺失不超过50个碱基。
但是RNA-seq read经常交叉剪接点,在该剪接点处,从一个read碱基到下一个read碱基的步骤跳过参考中的整个内含子,其可以是数千个碱基长,或者甚至超过一百万个碱基长。在这种情况下,read中剪接点一侧的种子将映射到参考,其中比对斜线与剪接点另一侧的斜线显着不同;斜线-整数差等于内含子跳过的长度,可能是数千或超过一百万。这样的种子可能不会被允许进入相同的种子链,因为有空位的比对器不能直接解决参考中的这种长距离差距。
因此,对于RNA映射,与DNA不同,可以预期给定read的真实比对可以包含多个种子链,每个种子链对应于read中的不同外显子片段。因此,每个候选比对可包含几个种子链的序列。映射器引擎中的下一个阶段是确定种子链的这种候选序列,在本文中称为支架(scaffold)。
作为一个或多个种子链的序列的每个scaffold具有物理解释,即read的连续外显子片段与参考基因组中对应的外显子片段的分段比对。因此,一个scaffold中的每个种子链通常应该只覆盖read的一部分,这些部分从read开始沿着种子链序列到read末端;种子链的相应参考片段应该通过参考在固定方向上前进,***空位对应于预期的内含子长度。每个scaffold将被传递给比对器引擎,以解决精确比对并对它们进行评分,并选择最有可能的候选序列。但从种子链的原始列表中获取scaffold列表是具有挑战性的。
实际上,对于单个RNA-seq read的种子映射可能产生的种子链数量为从少量到数十条或超过一百条。鉴于超过一百条种子链,潜在的种子链序列的数量可能是个天文数字。因此,需要在比对器引擎中获得相当短的scaffold列表,并在合理的时间内从给定的种子链列表中确定scaffold列表,以便不使映射器引擎慢下来。递归方法可以有效地执行此操作。
首先,按照read中其覆盖位置的顺序对种子链进行排序是非常有用的,例如按照种子链在read中起始位置的递增次序。种子链自然可以按照这样的顺序构建,即按照从read开始到结束的顺序在散列表中查询种子,并按照相同的顺序将它们形成种子链。但是,如果情况并非如此,或者如果后续通过固定种子映射修改种子链列表使得顺序被打乱,或通过查找注释剪接点使顺序被打乱,则应在scaffold之前对种子链进行排序,例如使用“快速排序”或其他排序算法。
接下来,建立规则,在该规则下允许一个种子链(B)在相同的scaffold中紧随另一个种子链(A),建立从A到B的种子链链接。在规则中存在相当大的灵活性可以很好地工作,但是这些规则应该允许在真正的比对scaffol中的可能的种子链链接,同时排除尽可能多的不可能的种子链链接。这是一组运行良好的规则,具有不同命名参数和良好的默认值。
种子链B在scaffol中紧随种子链A的标准:
A&B具有相同方向
(read中的A和B之间的空位)=:gap≤maxSpliceGap=150
(read中的A和B之间的重叠)=:olap≤maxSpliceOlap=16
(read中的A起点和B起点之间的空位)=:head≥olap+(olapAdj=4)
(read中的A末端和B末端之间的空位)=:tail≥olap+(olapAdj=4)
(A/B参考空位减去A/B read空位)=:intronLen≥minIntronLen=20
(A/B参考空位减去A/B read空位)=:intronLen≤maxIntronLen=1,000,000
当使用带注释的剪接点,在种子链A和B之间记录带注释的链接,他们总是被允许相互跟随。
以下是形成多个scaffol的递归算法:
必要时根据read中的起始位置对N个种子链进行排序,
从c0=0循环至N-1
如果在任意scaffold中已经使用则跳过c0
初始化last=0,scaf[0]=c0,start=c0+1,stack[0]=1,stack[1]=0,stackPos=0
当last≥0时循环
从c=start循环至N-1
如果链c紧随链scaf[last]:
则scaf[++last]=c
如果stack[last]=c,则stack[last]=0
否则,如果last>stackPos并且链c紧随链scaf[last-1]:
则stack[last]=c
输出scaffold scaf[0..last]
设置stackPos=maximum in(0..last)with stack[stackPos]>0
设置start=scaf[stackPos]+1
设置last=stackPos–1
算法中的术语和变量含义:
“chain”:从第0到第N-1个种子链的索引
scaf[]=构建的scaffold,每个slot获得chain 0..N-1
c0=scaffold中的第一链(slot 0)
last=scarffold最末slot#(当前)
start=搜索循环中的第一链
stack[i]=scaf[i]的最高编号替代链,如果没有则为0。这代表了在递归备份之后,寻找scaf[i]的替代方案的端点。
stackPos=通过递归备份来替换目标scarffold slot。注意,当备份发生时,固定stack[stackPos],并且在清除之前不会更新。
该递归搜索在映射器引擎内的物理逻辑中实现。使用硬件并行的标准方法,可以有时间执行这个算法,而不会显着减慢引擎的速度。具体来说,可以缓冲给定read的一批种子链,以便scaffol逻辑在处理管道的中下游处理,与种子映射和链接逻辑并行处理下一read。
在实践中,递归偶尔会失效,所以有必要限制它。在限制所产生的scaffol同时限制递归的一种有用的方式是:在制造scaffol时过滤劣等scaffol。提出了一种有用的scaffol过滤方法。对于每个scaffol,计算其read的净覆盖率,通过对被scaffol中一个或多个种子链覆盖的read碱基数进行计数。更高覆盖率的scaffol更可能代表真正的比对。尤其是,如果跟踪到所形成的所有scaffol(当前)中的最大read覆盖率,则具有最大覆盖范围之后的大覆盖角度的scaffol不太可能代表真正的比对。
此外,对于每个scaffold,计算其在参考基因组中的净跨度(net span),即scaffold中第一个和最后一个种子链参考中最外侧碱基之间的距离。具有非常大的参考跨度的scaffold不太可能代表真正的比对。将以下两个测量结合起来对scaffol过滤特别有效:filter_metric=(max_coverage_coverage)+floor(25*(log2(ref_span+213)-13)。常量25和13应该是可配置的参数:rna-filt-ratio=25,rna-span-log-min=13。过滤掉所有多链scaffold,其度量超出可配置阈值,例如rna-max-covg-gap=150。阈值200使滤波器更宽松,100则使滤波器更严格。
将该过滤器应用于从给定read的种子链列表产生的完整scaffold组或不完整scaffold组,通过跟踪或计算所有scaffold之间的最大覆盖范围,并扫描scaffold列表,丢弃满足下式的scaffold filter_metric>rna-max-covg-gap。
这种过滤器也可以用作scaffold形成过程中的递归剪枝。当每个新的种子链被添加到scaffold时,应注意到,参考范围以及潜在的覆盖范围会进行更新,其中覆盖范围通过用read长度减去种子链内和种子链之前的覆盖空位来计算。如果度量标准会触发过滤,则使用该部分跨度和潜在覆盖率,那么使用当前部分scaffold作为前缀的任意更长的scaffold也将被过滤,因为参考跨度只会增加,而潜在覆盖范围只会减小。因此,保留当前部分scaffold作为前缀的所有递归可以被跳过。用scaffold过滤器进行递归剪枝可以显着减少递归的长度,从一长串种子链形成一组scaffold。
可以对递归式scaffold搜索的性能进行优化。递归循环反复扫描种子链列表的各部分,因此当种子链列表较短时,算法的速度会更好。但当某些种子链不能与其他种子链形成scaffold时,实际上并不需要在整个种子链列表上执行递归算法。一种优化的方法是检测“分离的”种子链,其远离参考中的任意其他种子链距离比maxIntronLen更远(例如1,000,000个碱基)。分离的种子链可以作为单链scaffold自动释放,并在进一步形成scaffold之前从种子链列表中移除,从而缩短递归期间扫描的种子链列表。同样地,可以检测到种子链良好分离的子集,例如每个染色体内的子集,或参考中超过maxIntronLen的子集,形成scaffold的递归算法可以在每个这样的子集上分别执行,可以显着减少总的执行时间。
用于每个scaffold的比对器引擎第一步骤是:精确定位每个剪接点、两个外显子片段之间的边界(该片段由scaffold中的两个对应的种子链表示)。这被称为“拼接”(stitching)在一起的外显子片段,或拼接剪接点。在种子映射和形成scaffold之后仍然需要更精确的拼接,因为两个连续的种子链本身可能无法确定它们之间真实边界的位置。例如,如果种子不能立即映射到剪接点的一侧或两侧,那么连续的种子链可能会在read中分开一段距离;或特别是如果一个外显子末端的read序列与下一个外显子开始处的序列匹配,那么连续种子链可能在read中彼此重叠。即使连续种子链没有空位或重叠邻接,也不能保证它们之间的边界真正位置位于剪接点。
剪接点拼接因此主要是分析选择在read中的连续外显子片段之间的最佳拼接位置,其对应于最可能的拼接连接位置。两个因素可用于确定这一点。第一个因素是read序列与参考基因组中两个外显子片段映射位置处的左参考序列和右参考序列的比较。给定的拼接位置意味着将左侧的read碱基映射到左侧参考区域,并将右侧的read碱基映射到右侧参考区域。由于read中潜在的拼接位置从左向右移动,所以read碱基会在其交叉时将其映射从右侧参考区域切换到左侧。
如图4所示,真正的剪接点位置是,在read的左侧部分和左侧参考区域之间有良好匹配,以及read的右侧部分和右侧参考区域之间具有良好匹配。通过与相应的参考区域比较,可以计算出在潜在的拼接位置两侧的错配(或SNP)的总数;而其中SNP计数较小的拼接位置更可能是真正的剪接点位置。图4中示出read部分的每个拼接位置的左右两侧的比较。
可以针对SNP计数进行有效地建模,通过扫描read中可能位置的窗口(例如两个种子链中的每一个重叠一段距离,例如48个碱基)来扫描出拼接位置。这种扫描在硬件比对引擎中运行,例如,以每个时钟周期一个位置的速度运行。每次扫描移动一步的时候,例如从左到右,只有一个read碱基将其映射从右侧参考区域切换到左侧参考区域。因此,左侧的序列比较获得一个SNP,或者保持不变;右侧的序列比较丢失一个SNP,或者保持不变。因此净SNP计数改变为-1,0或+1。每个步骤的增量SNP计数变化可以计算出,通过将一个read碱基(由穿过拼接位置步骤)和两个参考碱基比较。如果将这个增量SNP计数变化相加,从左到右,那么可以将当前总和作为相对分数,其中最小分数是最好的。相同地,每个匹配的碱基可以被给予正匹配分数,每个不匹配的碱基为负的错配惩罚;针对最佳拼接位置,应该将增量分数变化的总和最大化。
另一个因素是由每个拼接位置隐含的内含子基序。内含子基序定义为被跳过的参考片段或内含子的前两个碱基和最后两个碱基。等价地,任意可能的拼接位置的基序都是由左参考区域之后的前两个碱基和右参考区域之前的最后两个碱基形成的,如图4所示。这暗示了内含子基序取决于拼接位置,并且通常随着扫过可能的拼接位置的窗口而发生变化。某些“规范”内含子基序在天然RNA剪接中比其他基序更常见。对应于“规范”内含子基序的拼接位置更可能是真正的剪接点,特别在如果它是更常见的一种规范基序时。
表I示出了人类RNA中三个典型内含子基序。对于每个基序,还显示了其反向互补,因为在大多数RNA-seq方案中,read可以映射相对于转录的正向或反向补充因此虽然在原始转录的基因链中只出现“正向”规范基序,但其反向互补可出现在RNA-seq read中。对于每个规范基序以及其余类别的非规范基序,人类RNA剪接的大概频率,可以使用该样本罚分,例如碱基匹配得分+1,碱基错配得分-4。
表I
Figure BDA0003647401720000681
剪接拼接模块相应地扫描(例如从左到右)可能拼接位置的窗口上的潜在拼接位置,将由于碱基切换其映射的参考区域而引起的增量分数变化相加,并且在每个可能的拼接位置处减去内含子基序罚分,其中该内含子基序在左侧参考区域之后和右侧参考区域之前,并且选择最高得分位置进行拼接。
另外,可以考虑某些特殊结果并对其进行评分。在可能的拼接位置的窗口的左边缘或右边缘进行拼接可被认为是拼接失败,当两个参考区域中的一个不是针对read外显子片段的真实映射位置时,会出现上述情况。例如遵循了注释的剪接点,但对于该read结果并不正确。在左边缘或右边缘拼接可以利于加分,例如在相同的示例性评分标准中为25分,因此必须出现真正的剪接点的重要证据才能成功拼接。
而且,如果识别出注释的剪接点连接两个被拼接种子链,则注释的剪接点位于可能的拼接位置的窗口内的已知位置处。作为一种选择,可以跳过拼接操作,只需接受注释剪接点处的已知位置即可。作为另一种选择,可以执行拼接操作,但是注释剪接点的已知位置可以给予分数奖励,和/或可以自动地给予最佳可用的内含子基序罚分或零罚分。作为另一种选择,代替内含子基序罚分,注释剪接点的已知位置可以被给予分数奖励或罚分,其与注释数据库中所注释的该剪接点处可观察到的共同性或罕见性相关。如果选择在注释剪接点的已知位置进行拼接,则拼接连接点可能会被标记为与注释剪接点一致,所以如果此剪接点出现在read的输出比对中,则可以报告此事实。
所选择的拼接位置可以以各种方式注释到scaffold中。在一个优选实施例中,对构成scaffold的种子链进行编辑,使其起始点和末端紧邻所选择的拼接位置。
另外,基于拼接结果,在某些情况下,比对器引擎进行更大的scaffold编辑是有利的。如果拼接失败,那么scaffold可能会被截断,或在故障点***成两个scaffold。另外,可以尝试在scaffold中的非相邻种子链之间进行拼接,例如跳过单个种子链。例如,对于含有种子链1,2,3和4的scaffold,应当在链之间进行剪接点连接:(1,2),(2,3)和(3,4);但是,(1,3)和(2,4)之间可能会尝试拼接。如果从1到3的拼接比从1到2,然后是2到3的拼接更好,那么种子链2可以从scaffold上移除。
通过拼接确定了候选scaffold中精确的剪接点,可以通过使用无空位比对器或空位比对器(例如Smith-Waterman)模块为每个scaffold确定相应的完全比对和比对评分。对于只有单个种子链的scaffold,其与DNA read的比对没有显着不同,并且可以使用相同的硬件模块和方法。对于具有多个种子链的scaffold,需要一些进一步的方法来获得完整的、可能的拼接(包含内含子操作)比对。
一种可以确定完整剪接比对的方法是:利用无空位比对器或空位比对器将每个对应于scaffold中的每个种子链的read外显子片段分别与其相应的参考片段进行比对。这在当需要进行局部比对(即可能被剪切)时具有缺点。如果单独的外显子片段比对是在没有剪切的情况下产生的,那么它们不容易组装成完整的剪接比对。如果单个外显子片段比对是在没有剪切的情况下产生的,那么可以检查它们的比对评分以确定最佳整体局部比对是否要剪切一个或多个全部外显子片段,但是在外显子片段内的任意位置处的适当剪切不容易确定。为了解决这些困难,可生成每个外显子片段经过剪切的比对和未经过剪切的比对,但这样可能需要花费大量的成本。
一种用于确定多链scaffold的完整剪接比对的方法包括:在比对之前将外显子片段连接在一起。每个比对模块——无空位或有空位——可以供给两个核苷酸序列以比对查询(read)序列和参考序列。如果第一个或最后一个外显子片段没有延伸到read的开始或结束,那么连接的查询序列可能仅仅是整个read,即它的外显子片段的连接,可选地在read开始或结束进行剪切。
取参考基因组片段,其中这些参考基因片段作为每个外显子片段种子链的映射图像,并将这些参考片段连接在一起,从而获得连接的参考序列。应当注意,对于给定的外显子片段(种子链),在种子链中最左侧的种子落在与最右侧种子稍有不同的比对斜线上的情况下,其参考片段可能与其read片段的长度不同;例如,种子链中的种子意味着存在indel。在这种情况下,应使用空位比对器。
此外,对于空位比对,参考序列的第一个和最后一个外显子片段可以向外延伸,例如将第一个外显子片段向前延伸50个参考碱基,将最后一个外显子片段向后延伸50个参考碱基,以在第一个和最后一个外显子片段内提供空间用于删除(deletion)。
通过连接来自read和参考的scaffold的外显子片段,单个连接的查询序列和单个连接的参考序列可以被馈送到比对模块,因此,它们在非剪切(RNA或DNA)比对和剪切RNA比对中,可以以大致相同的方式运行。但是,一些进一步的修改是有利的。首先,为了确定在任意外显子片段内的任意位置处的局部比对的适当剪切,可以在比对穿过的每个剪接点应用评分处罚(或奖励)。在一个实施方案中,每个剪接点的罚分与其内含子基序和注释的剪接点状态相关,并且可以是在剪接点拼接中使用的相同罚分。
因此,极罕见的或非规范的内含子基序的未注释剪接点可能具有较大的相关罚分,并且一个或多个全部外显子片段更可能从剪接比对中被剪切,以排除这种不可能的剪接点,除非在剪接点的两侧发生充分的序列匹配,以作为令人信服的证据证明剪接点真正存在(通过克服其罚分)。在一个优选实施方案中,连接的查询序列和参考序列各自具有***连续外显子片段之间的虚拟碱基,并且每个剪接点的适当罚分被附到其对应的虚拟碱基上。这允许在没有专门逻辑的情况下包括剪接点罚分,并且为剪接点虚拟碱基的任一侧上的可能的比对剪切提供空间。
另外,在各种情况下,对于空位比对(例如Smith-Waterman),强制比对路径穿过预定的剪接点可能是有利的。换句话说,没有这样一种比对路径——在从一个查询外显子片段跨越到下一个时,而没有同时从相应的参考外显子片段跨越到下一个。这种限制的一个原因是,只有适当同步的剪接点才能根据剪接点拼接过程中确定的内含子基序进行适当计分。
另一个原因是,已经通过使用精确的参考外显子片段边界,形成连接的参考序列,其中该边界对应于每个剪接点的所选的拼接位置,因此没有额外的参考碱基用于空位比对,从而自由地调节剪接点。此外,为了避免难以解释的比对(例如与'N'操作相邻的'I'或'D'操作的CIGAR字符串),有必要要求在每个被包括的剪接点前的至少一个查询碱基和参考碱基,进行斜线比对(查询碱基与参考碱基比对,同在CIGAR中的“M”操作),以及在每个被包括的剪接点后的至少一个查询碱基和参考碱基,进行斜线比对。
为了实施这些限制,连接的参考序列和查询序列被划分成若干区域,该区域被分配标识符或区域ID,例如整数值。在一个实施例中,一个区域ID被分配给外显子片段之间的每个虚拟碱基;另一个区域ID分配给在剪接点之前的每个外显子片段的最后一个碱基(但不是连接序列的最末的碱基);又一个区域ID被分配给每个外显子片段中其余所有的碱基。
例如,对于具有三个外显子片段(种子链)的scaffold,其中每个外显子片段为20个碱基长度,可以有4个区域ID:区域1——第一外显子片段的碱基1-19,区域2——第一外显子片段的碱基20,区域3——第一外显子片段和第二外显子片段之间的虚拟碱基,区域4——第二外显子片段的碱基1-19,区域5——第二外显子片段的碱基20,区域6——第二外显子片段和第三外显子片段之间的虚拟碱基,以及区域7——第三外显子片段的碱基1-20。对连接的查询序列和连接的参考序列应用同样的区域映射,同时铭记由于种子链中的indel,具有相同区域ID的相应的多碱基查询区域和参考区域可能具有不同的长度。然后,在无空位比对器中,修改评分单元以仅允许在相同区域ID之间的交集处(即,查询区域ID与参考区域ID匹配的位置)的有效比对评分。
因此,在不同的情况下,本公开涉及用于映射或比对DNA和/或RNA的装置和方法。在特定情况下,提供硬连线数字逻辑电路(例如集成电路),其中IC包括一配置(例如硬连线的和/或预配置的),其中所述配置适于在DNA和/或RNA映射和/或比对操作中执行一个或多个步骤。更具体地,本文公开的装置可以被配置为对RNA执行各种分析,例如由一个或多个硬连线处理引擎或其子集执行的RNA分析。
例如,在一些实施方案中,提供了用于对DNA和/或RNA序列数据(例如源自RNA的基因组数据read)执行DNA和/或序列分析管道的装置和/或***。在这种情况下,***可以包括以下中的一个或多个:存储器,例如用于存储一个或多个DNA和/或RNA参考序列(例如源自RNA(RNA-derived)的参考基因组数据)、一个或多个DNA和/或RNA参考序列的索引,以及多个基因组数据read,例如其中每个DNA和/或RNA参考序列和多个序列数据read包括核苷酸序列;和集成电路,如本文所述。特别地,集成电路可以由一组硬连线数字逻辑电路形成,其中所述硬连线数字逻辑电路通过多个物理电气互连进行互连。在这样的情况下,所述多个物理电气互连中的一个或多个可以包括用于集成电路访问存储器的存储器接口。此外,硬连线数字逻辑电路可以被布置为一组处理引擎,例如其中一个或多个处理引擎由硬连线数字逻辑电路的子集形成,并且被配置为对多个序列数据read执行在DNA和/或RNA基因组序列分析管道中的至少一个步骤。应当注意的是,在不同的情况下,源自RNA的基因组数据read可以表示通过直接对样本RNA进行测序或通过对来自样本RNA的一些其他产物进行测序而获得的read,例如反转录cDNA等,并且在本文中称为“RNA read”或“RNA数据read”,其包括关于所获得的RNA数据的来源的一般性。
更具体地,该组处理引擎可以包括DNA和/或RNA映射模块、比对模块、排序模块和/或变异检测模块,其可以包括HMM模块和/或Smith-Waterman(SW)模块。例如,在第一配置中,如本文所公开的,硬连线数字逻辑电路被配置为可以经由存储器接口从存储器中存取:在多个read中选定的read中的至少一些DNA和/或RNA核苷酸序列、所述一个或多个DNA和/或RNA参考序列的索引,并基于所述索引将选择的RNA和/或DNA read映射到所述一个或多个基因参考序列的一个或多个片段,以产生映射read。在特定情况下,例如关于RNA映射,RNA映射模块可以被配置用于执行一个或多个:固定短种子映射、注释剪接点查找和/或形成种子链scaffold等关于RNA映射的步骤。
类似地,在硬连线数字逻辑电路的第二配置中,可以提供比对模块,其中比对模块被配置用于经由存储器接口从存储器中存取一个或多个DNA和/或RNA参考序列,从而将映射的DNA和/或RNA read(例如来自映射模块)与一个或多个DNA和/或RNA参考序列中的一个或多个片段中的一个或多个位置进行比对,以产生比对read。在特定情况下,例如关于RNA比对,RNA比对模块可以被配置用于执行一个或多个:剪接点拼接和/或剪接read比对等关于RNA比对的步骤。
因此,在不同情况下,可提供硬连线数字逻辑电路,其中所述数字逻辑电路或其子集包括映射和/或比对模块,该映射和/或比对模块可适于包括一组配置的(例如,预配置的)处理引擎,用于在RNA分析管道中执行一个或多个步骤,例如其中所述一个或多个步骤可以包括固定短种子映射、注释剪接点查找、形成种子链scaffold、剪接点拼接、剪接read比对和/或一个或多个其他与映射和/或比对操作相关的步骤,例如在基因分析管道中。
另外,在一些情况下,可以提供变异检测模块,其中变异检测(VC)模块被配置为,例如在硬连线数字逻辑电路的第三配置中,访问比对DNA和/或RNA read以及至少一个参考序列,并执行一个或多个下述步骤。例如,VC模块可以被配置为:将比对的DNA和/或RNAread中的核苷酸序列与至少一个参考基因序列的核苷酸序列进行比较,以便确定在比对DNA/RNA read中的核苷酸序列和至少一个参考基因序列中的DNA/RNA核苷酸序列之间的一个或多个差异,并且得到代表一个或多个差异的一个或多个变异检测。此外,关于本公开的IC,多个物理电气互连中的一个或多个还可以包括来自集成电路的输出,用于传送来自映射模块和/或比对模块和/或变异检测模块的结果数据。
更具体地,本公开的集成电路可以包括一组或多组硬连线数字逻辑电路和/或其子集,例如包括配置的(例如预先配置的)硬连线数字逻辑电路的第一子集、第二子集、第三子集或更多子集,其被配置为一个或多个处理引擎,用于在DNA和/或RNA序列分析管道中执行一个或多个离散步骤。例如,硬连线数字逻辑电路可以包括第一子集,其被配置为处理引擎,经由一个或多个物理电气互连接收DNA和/或RNA数据read。另外,可以提供硬连线数字逻辑电路的第二子集,其被配置为处理引擎,提取DNA或RNA read的一部分以产生种子,例如其中种子代表由read表示的DNA或RNA核苷酸序列的子序列,例如用于执行一个或多个固定短种子映射。还可以包括数字逻辑电路的一个或多个附加子集,例如用于注释剪接点查找和/或用于执行种子链映射的处理引擎。此外,还可以包括被配置为例如用于对RNA数据执行一个或多个比对函数的处理引擎的数字逻辑电路的子集,例如用于执行剪接点拼接操作和/或剪接read比对。
因此,本公开的集成电路可以包括一个或多个数字逻辑电路或其子集,用于执行固定短种子映射中的一个或多个步骤。如本文详细描述的,可以执行短种子映射以提高数据库(例如基于散列表的种子映射)的灵敏度,例如通过使用较长种子匹配作为固定点来指导使用较短种子的本地化搜索。它对于使基于散列表的映射适用于RNA read很有用,对于提高DNA映射的灵敏度也很有用。特别地,初始种子映射可以使用来自基因组DNA和/或RNA数据read的一个或多个K-碱基种子来查询参考DNA和/或RNA基因组的第一索引,例如基于散列表的索引。在这种情况下,可以例如通过使用L-碱基种子(L<K)来查询多个参考bin的基于二级散列表的索引,从而执行随后的固定短种子映射,例如,其中每个参考bin可能是参考基因组的完整或不完整的子序列。这在使用每个K-和/或L-碱基种子来分别查询第一索引和/或第二索引(例如基于散列表的索引),以便对准选自多个参考bin中的一个或多个固定bin中的每一个。
在这种情况下,可以提供一个或多个数据结构,例如单个或多个数据结构,其中数据结构可以包括第一索引,例如基于散列表的索引,并且可以进一步包括第二索引,例如,基于二级散列表的索引。此外,在提供一个或多个固定点bin的情况下,可以包括一个或多个固定点bin的对准,作为该过程中的一个步骤。因此,这样的对准可能涉及将每个固定bin的标识符包括在散列键中,例如用于查询基于一级和/或二级散列表的索引的散列键。在一些情况下,可选择一个或多个固定bin,例如用于L-碱基种子查询,例如在映射引擎内,基于由K-碱基种子查询所找到的匹配。因此,映射引擎可以被配置用于在输出匹配位置之前或之后执行固定的短种子映射操作,例如基于映射引擎输出的匹配位置,在映射引擎的内部或外部选择用于L-碱基种子查询的一个或多个固定bin。在某些情况下,映射引擎可以执行固定的短种子映射,其中二级映射过程可以越过输入read的至少一个子序列。
另外,关于执行比对,可以在映射引擎的内部或外部选择用于K-碱基或L-碱基种子查询的一个或多个固定bin,并且其可以是以由比对模块输出的比对作为基础,无论是软件还是硬件,例如比对引擎接收来自映射引擎的匹配位置。在这种情况下,可以选择输入read的子序列以包括或排除具有充分剪切比对的read。在一些情况下,可以选择输入read的子序列以包括或排除具有足够低的比对评分的read。并且在各种其他情况下,输入read可以是配对末端read,并且可以选择输入read的子序列以包括或排除缺少正确配对配置比对的read对。
此外,用于执行RNA序列分析的映射模块可以包括一个或多个处理引擎,所述处理引擎被配置用于执行一个或多个注释剪接点查找。可以采用剪接点查找来提高RNA特异性read映射的灵敏度。例如,在使用RNA参考索引(例如其可以是或不是基于散列表的索引)对部分RNA read进行映射后,“数据库”或任何其它合适形式的数据结构(例如与参考和/或其索引的内存相同)可以被生成和/或查询。具体而言,可基于受试物种的已知和/或已确定的RNA剪接点产生“数据库”,并且可基于映射的位置来访问“数据库”。应该注意的是,每个已知的剪接点可以代表参考中可能长的“内含子”(长达1Mbp或更长)片段,例如read比对通常会从内含子的一个端点“跳到”另一个端点。
因此,可以以这样的方式访问数据库,以便检索已知剪接点,其一个端点在沿着已经映射的read部分的每个参考片段中或附近,但是其另一部分的read延伸到近内含子端点之外。在这样的情况下,可以暂时假定在跳过内含子后,所述另一部分的read继续匹配参考序列,即使先前的映射工作可能没有检测到该区域中的任何这种匹配。随后剪接比对和评分可以衡量read在该剪接点比对的实际匹配程度。因此,尽管存在例如短外显子、短外显子突出端和/或编辑(SNP等)的障碍,阻断了中等长度的外显子片段的匹配,但是该方法可以增强集成电路检测read可能的剪接映射的能力。
因此,可以提供可连接到集成电路的存储器,其中存储器包含参考基因组的索引和该参考基因组内的注释剪接点的列表。因此,映射引擎可以将来自RNA的基因组数据read的第一部分映射到参考基因组中的匹配位置,例如通过使用read的第一部分访问参考的索引。然后,映射引擎可以访问注释剪接点的列表,并且检索内含子描述符,例如内含子描述符包括参考基因组中的第一端点和第二端点,例如,其中第一端点在参考基因组中的匹配位置的有限距离内。
然后,映射引擎可以将来自RNA的基因组数据read的第二部分映射到参考基因组中的推断位置,例如参考基因组中的推断位置可以与参考基因组中的内含子描述符的第二端点相邻。然后映射器将输出来自RNA的基因组数据read的映射位置,例如映射的来自RNA的基因组数据至少包括参考基因组中的匹配位置和参考基因组中的推测位置。因此,在各种情况下,可以提供注释剪接点的列表,其中该列表可以被制定为包含用于多个参考bin中的一个或多个(例如每个)的entry的表格,从而形成参考基因组的分区。然后可以按照以下方式访问这个注释剪接点列表,包括:确定在参考基因组中的匹配位置的有限距离内的至少一个参考bin,以及访问对应于至少一个参考bin的表格entry。
在这种情况下,可以对read中的有效剪接点进行确认,例如通过使用read的第一部分,例如匹配参考基因组中的位置,通过使用在参考基因组中的内含子描述符的第一端点和第二端点终点。此外,在一些情况下,可以确定有限的距离,至少要求有效剪接点位置在read中而不在read边界之外。因此,可以确定第一种子链,例如至少使用来自RNA的基因组数据read的第一部分以及参考基因组中的匹配位置。然后可以确定第二种子链,例如通过使用来自RNA的基因组数据read的至少第二部分以及参考基因组中的推测位置。然后可以建立第一种子链和第二种子链之间的链接,并且可以将输出映射到来自RNA的基因组数据read的位置,其包括关于第一种子链、第二种子链和它们之间的链接的描述。
此外,用于执行RNA序列分析的映射模块可以包括一个或多个处理引擎,所述处理引擎被配置用于执行形成种子链scaffold操作。然而,应该注意的是,虽然本文引用了“种子”链,但是该“种子”链不限于上下文中基于散列表的种子映射,该概念可以扩展到从read部分到参考基因组的片段的任何映射。这种形成scaffold的操作对于将种子链列表翻译成scaffold列表是有用的,例如其中每个scaffold是一个或多个种子链的序列,其表示read的可能的剪接比对。
在各种情况下,read的连续部分可映射到参考的单个染色体的连续片段,例如以一致的方向和顺序。因此,形成该组scaffold的方法可以是选择性的,因为对于大量的种子链列表,那些种子链的可以想象的序列的数量可能非常高。因此,可以生成一个scaffold列表,其足够全面地包括read的真实剪接比对,并且具有高置信度,例如不会产生太多虚假scaffold。在这种情况下,每个scaffold随后可以被评分,例如通过剪接比对。
因此,本公开的映射引擎可以被配置为确定种子链列表,其中种子链列表中的每个种子链表示来自RNA的基因组数据read的相应部分与参考基因组的相应片段之间的匹配。通过查看种子链列表,映射器可以产生scaffold列表,例如每个scaffold可以包括来自种子链列表的一个或多个不同种子链的序列,和/或scaffold意味着来自RNA的基因组数据read的一个或多个对应部分的对应read部分序列。在这种情况下,通过来自RNA的基因组数据read,read部分序列可以以统一的方向发展。类似地,scaffold可以进一步意味着参考基因组的一个或多个相应片段的对应参考片段序列,其中参考片段序列以统一的方向发展通过参考基因组。
此外,scaffold列表的生成可以另外涉及按照参考基因组的相应片段的递增或递减的顺序对种子链列表进行排序,例如其中根据一组规则构建scaffold列表,其中所述规则确定一个种子链何时可以遵循scaffold内的另一个种子链。这样的一组规则可以包括在read部分序列中的连续read部分之间的最小和/或最大允许空位和/或最小和/或最大允许重叠。在某些情况下,read部分序列和参考片段序列可能意味着计算的比对对角线内含子长度的序列从每个read部分和对应参考片段移到下一read部分。此外,该组规则可以包括内含子长度序列的最小允许长度和最大允许长度。
此外,在各种情况下,scaffold列表的生成可涉及:生成初始scaffold部分,其具有一个或多个不同种子链的部分序列,并且可另外包括在scaffold列表中生成至少两个不同的scaffold,其中至少两个不同的scaffold中的一个或全部可以是初始scaffold部分的更长延伸。这种scaffold列表的生成可涉及:筛选过滤出较差的scaffold(例如劣等的scaffold),例如根据计算的过滤度量,例如通过计算每个scaffold对来自RNA的基因组数据read的净覆盖率之间的差得出,和/或来自RNA的基因组数据read的最大净覆盖率,例如在scaffold列表上计算的最大净覆盖率。在一些情况下,可以使用参考基因组中的每个scaffold的净跨度来计算过滤度量。
如本文所指出的,在各种情况下,可提供硬连线数字逻辑电路,其中数字逻辑电路或逻辑电路的子集包括比对模块,该比对模块可适于包括一组处理引擎以执行RNA分析管道中的一个或多个比对步骤,例如其中一个或多个步骤可以包括剪接点拼接和/或剪接read比对。具体而言,用于执行RNA序列分析的比对模块可以包括一个或多个处理引擎,其被配置用于执行一个或多个剪接点拼接操作和/或一个或多个拼接剪接read比对。
具体地,在各种情况下,可产生和/或提供RNA read的一对部分映射,例如种子链,例如scaffold中两个连续种子链。在各种情况下,部分映射的种子链可以代表剪接映射候补序列的两个外显子片段,其跳过参考中可能的内含子。在这种情况下,比对模块的处理引擎可以被配置用于执行剪接点拼接操作,剪接点拼接操作适于或多或少准确地(例如精确地)确定内含子跳过的read中最可能的位置。结果是read的两个碱基之间的拼接位置,使得拼接点左侧的碱基对齐第一外显子片段,拼接点右侧的碱基对齐第二外显子片段。这可以通过1)测试许多可能的拼接位置;以及2)对测试结果进行评分来实现。这种评分可以基于许多不同标准,例如所观察到的碱基错配的数目,和/或存在或不存在在参考中隐含的内含子跨度的两端处观察到的规范内含子基序,以及内含子基序的类型,例如,对应于给定的拼接位置。
该剪接点拼接操作可以被配置为用于剪接比对的预处理过程,如果执行该操作必须考虑所有可能的拼接位置,则该操作过程需要花费大量资源和/或成本。因此,比对器引擎可以接收来自RNA的基因组数据read的剪接映射,其中剪接映射至少包括来自RNA的基因组数据read的第一部分和第二部分,以及参考基因组的第一片段和第二片段。
此外,比对器引擎可以被配置用于执行剪接点拼接操作,确定来自RNA的基因组数据read内的最佳拼接位置。可以通过优化与每个被考虑的拼接位置有关的多个拼接因素来确定最佳拼接位置。拼接因素可包括read的第一部分(例如进行长度调整以在所考虑的拼接位置处结束)和参考基因组的第一片段(其长度进行相同调整)之间的匹配程度。拼接因素可以进一步包括read的第二部分(长度调整到开始于所考虑的拼接位置)和参考基因组的第二片段(其长度进行相同调整)之间的匹配程度。在这种情况下,拼接因素可进一步包括与所考虑的拼接位置相对应的内含子基序的可能性,例如内含子基序包括至少两个与长度经过调节的参考基因组的第一片段相邻的参考碱基,以及至少两个与长度经过调节的参考基因组的第二片段相邻的参考碱基。
在各种情况下,拼接因素可以被组合成分数,并且在所考虑的拼接位置中具有最佳分数的可以被确定为最佳拼接位置。在某些情况下,可以从第一考虑的拼接位置过渡到第二考虑的拼接位置,跨过来自RNA的基因组数据read中至少一个中间的核苷酸。在这种情况下,计算第二考虑的拼接位置的分数可以部分地通过调整第一考虑的拼接位置的分数,以考虑至少一个中间的核苷酸与参考基因组的第一片段之间的匹配程度,与至少一个中间的核苷酸与参考基因组的第二片段之间的匹配程度的任意差值。在某些情况下,可以将最佳拼接位置传送至无空位比对模块,无空位比对模块可以被配置为确定来自RNA的基因组数据read与至少两个长度经过调节的参考基因组片段的连接的最佳无空位比对。然后可以将最佳拼接位置传送到空位比对模块,空位比对模块可以确定来自RNA的基因组数据read与至少两个长度经过调节的参考基因组片段的连接的最佳空位比对或无空位比对。
比对器模块可以进一步包括被配置用于执行剪接read比对的引擎。例如,在执行剪接read比对时,可以产生多个部分映射的RNA read序列,例如种子链,例如scaffold中连续的种子链。多个部分映射可以表示剪接映射候选序列的多个外显子片段,该候选序列可以跳过参考序列中的一个或多个可能的内含子(例如对每个内含子进行剪接点拼接)。在这样的情况下,剪接比对操作可以为:将read与参考中的多个外显子片段的连接进行比对。
具体而言,提供比对器引擎,该比对器引擎可以被配置用于接收对于一个或多个来自RNA的基因组数据read的剪接映射。剪接映射可以包括确定来自RNA的基因组数据read与具有一个或多个(例如多个)参考基因组片段的一个或多个对应序列之间的多个邻接部分的序列。比对器引擎然后可以对这些序列进行剪接比对操作以确定来自RNA的基因组数据read与参考基因组的多个片段的序列的最佳剪接比对。例如,剪接比对操作可以包括将参考基因组的多个片段连接成聚集参考序列,其中所述聚集参考序列中所述参考基因组的多个片段中的每一个在连接点处连接。此外,可以产生至少具有来自RNA的基因组数据read的多个邻接部分的read序列,在连接点处连接。
read序列的最佳序列比对可以进行计算,涉及聚集参考序列。例如在最佳序列比对被约束的情况下,使得read序列中的连接点与聚集参考序列中的对应连接点对齐。序列比对可以被编辑成剪接比对,该编辑可以包括在对应于连接点的比对位置处***内含子描述符,例如内含子描述符编码的内含子长度可以等于参考基因组片段之间的对应距离。然后比对器引擎可以输出剪接比对。
在这种情况下,可以将最佳序列比对确定为最佳分数的比对,所述最佳分数在所有候选比对的计算分数中产生,其中计算每个候选比对分数包括:错配罚分——read序列的每个核苷酸未能匹配聚集参考序列的比对核苷酸。计算候选比对分数可进一步包括:一个或多个其它罚分,例如indel罚分——候选比对中的每个***或缺失;和/或剪接罚分——候选比对中包括的每个连接,例如至少部分地根据与参考基因组的邻接片段相关的内含子基序来确定剪接罚分。在各种情况下,可将聚集参考序列配置为包括虚拟碱基,例如在连接点处,可利用虚拟碱基赋予相关联的剪接罚分值。
在这些情况下,计算最佳序列比对可涉及动态编程以计算二维矩阵评分单元的单元分数,所述二维对应于read序列和聚集参考序列。在这种情况下,read的多个邻接部分中的每一个可以被分配区域ID;另外,参考基因组的多个片段中的每一个还可以被分配区域ID。这样的区域ID可以被配置为对于参考片段和read的每个对应部分是相等的,例如在评分单元矩阵中的每个评分单元的单元read区域ID等于read相应部分的区域ID。此外,单元参考区域ID可被配置为等于相应的参考片段的区域ID,并且最佳序列比对可被约束为仅通过具有与它们的单元参考区域ID相同的单元read区域ID的评分单元。
图5显示了一个抽象的比对矩形,在纵轴上有一个连接的查询序列,在水平轴上有一个连接的参考序列。每个连接序列的虚拟碱基都有阴影(区域3和6)。网格覆盖比对矩形以显示每个轴上的区域之间的边界。具有匹配区域ID的子矩形为有效比对区域,其他(阴影的)子矩形是无效比对区域。在一个有效的示例性比对中,查询序列是首尾相连(end-to-end)的,并且在第二外显子片段(区域4)中包括***(垂直片段),在第三外显子片段(区域7)中包括缺失(水平片段)。有效的比对按斜线地通过剪接点(区域3和6)。
使用连接的查询序列和参考序列的无空位或空位比对可以产生正确的比对评分,但比对线(例如CIGAR串)需要编辑,因为它尚不包含内含子('N')操作。例如,与CIGAR“101M”比对时,可能会出现无indels的100个碱基read的剪接比对,这意味着101个碱基斜线比对而没有indels。这个CIGAR需要进行两个调整。首先,外显子片段之间的虚拟碱基在CIGAR中计数,而不应该如此。其次,内含子操作,例如895个碱基长,需要在虚拟碱基的位置***。例如,正确的CIGAR可能是“40M895N60M”。
考虑到包含种子链的scaffold将外显子片段的端点定义为拼接(stitched),则直接通过算术来定位CIGAR中的每个剪接点的位置,移除虚拟碱基的“1M”,并将其替换为适当长度的内含子操作。对于局部比对,这个过程必须考虑到一个或多个全部外显子片段从比对中被剪掉的可能性。相同的算术过程可以计算参考基因组中比对的正确起始和终止位置。
获得了比对分数、起始和终止位置以及每个比对的scaffold的CIGAR串后,关于选择和输出最佳可能剪接比对的处理类似于DNA处理。检查双末端(paired-end)比对候选序列以找到正确定位和方向的比对对。比对候选对(包括配对不适当的候选对)由于不成对或不可靠的经验***长度而被给予罚分;通过组合(例如添加)来自每个配对(mate)的比对分数和配对罚分来形成配对分数;并且从比对器引擎中选择并输出最佳得分比对对。
表观***长度通常由被两个mate read比对覆盖的参考序列中的跨度测量,由于在两个mate之一或两者内的内含子,或者在两个mate之间的空位观察到的内含子,表观***长度可以显得非常长。(物理***可能短得多,是由内含子拼接出来的测序的RNA或cDNA分子的长度。)因此,更长的表观***长度必须考虑适当配对并给予零分或小的配对罚分;这可以根据采样物种中已知的内含子长度分布和/或正在处理的RNA-seq数据中观察到的表观***分布来完成。
在一个实施例中,对于每个处理的read,从比对器模块输出比对分数、开始位置和编码的CIGAR串。另外,在另一个实施例中,对于比对中的每个剪接点,输出其内含子基序和注释状态。也可以评估和输出映射质量或置信度,如phred-scale“MAPQ”参数。在一个优选实施例中,MAPQ评估主要与最佳配对分数和第二最佳配对分数之间的差成比例,其中当前read具有不同的比对。附加的比对候选或二次比对也可以针对每个read输出,例如在定义的或配置的得分差异阈值内打分的有限数量的其他候选。
应该理解的是,例如参照以上描述,尽管在一些情况下描述了映射函数(例如根据映射器)和/或在一些情况下描述了比对函数(例如根据比对器),但是这些不同的函数可以通过相同的架构依顺序执行,这在本领域通常被称为比对器。因此,在各种情况下,如本文描述的映射函数和比对函数两者可以通过一种通用架构来执行,其可以被理解为比对器。尤其是在执行比对函数的情况下,映射函数需要优先执行。
来自比对模块的输出是SAM(文本)或BAM(例如,SAM的二进制版本)文件以及映射质量评分(MAPQ),该质量评分反映了read的预测和比对位置是其在参考序列中的实际来源位置的置信度。因此,一旦已经确定了每个read被映射的位置,并且进一步确定了每个read比对的位置,例如对每个相关read给定一个位置和质量评分,其中该质量评分反映该位置是正确比对的概率,从而知晓受试者DNA的核苷酸序列,以及受试者的DNA与参考基因组的DNA不同(例如,已经确定CIGAR序列),然后表示受试者的基因组核酸序列的不同read可以通过染色***置进行排序,以便可以确定染色体上read的确切位置。因此,在一些方面,本公开涉及排序函数,例如可以由排序模块执行,该排序模块可以是模块管道的一部分,例如该管道用于:获取原始序列read数据(例如形成个体的基因组样本)以及映射和/或比对该数据,其中该数据随后可以进行排序。
更具体地说,一旦read被分配了位置,例如相对于参考基因组的位置,其可以包括识别read所属的染色体和/或其与该染色体的起点的偏移,那么可以对read按位置进行排序。排序可以是有用的,例如在下游分析中,由此与基因组中的给定位置重叠的所有read可以形成堆积以彼此相邻,例如在通过排序模块处理之后,由此可以容易地确定大部分read是否与参考值一致。因此,如果大部分read与参考值不一致,则可以标记变异检测。因此,排序可涉及一个或多个对与相对相同的位置(例如相同染色***置)比对的read进行排序,以便产生堆积,使得覆盖相同位置的所有read被物理地分组在一起;并且所述排序可以进一步涉及分析堆积的read以确定read可以指示基因组中的实际变异的位置(与参考基因组相比较),其中该变异可以例如通过共同的堆积而与“错误”区别开来,例如机器错误或read错误,测序方法中的错误可能由少数read显示。
一旦获得数据,就可以运行一个或多个其他模块以清理数据。例如,可以包括在例如序列分析管道中的一个模块(例如用于确定个体的基因组序列),可以是局部重新比对模块。例如,通常很难确定在read末端发生的***和缺失。这是因为Smith-Waterman或者等价的比对过程缺乏足够的、超出indel的环境以允许评分并检测其存在。因此,实际indel可能被报告为一个或多个SNP。在这种情况下,可以通过对经过映射和/或比对和/或排序的read数据执行局部重新比对来提高对于任意给定的read的预测位置的准确性。
在这种情况下,可以使用堆积来帮助表明正确的比对,例如所讨论的位置在任意给定的read末端位置,相同的位置可能在堆积的其他read中间。因此,在执行局部重新比对时,可以分析堆积中的各种read,以确定堆积中的一些read是否指示在给定位置存在***或缺失,其中另一read不包括indel,或者更确切地说包括替代,那么在该位置,然后可以将indel***,例如***到参考中,其中在该参考中不存在。重叠该区域的局部堆积中的read可以被重新比对以查看是否在***和/或缺失不存在时可以获得更好的分数。相应地,如果有改进,可以重新检查堆积中的整组read,并且如果整组的分数已经提高,那么可以很明显地知道在那个位置上确实存在一个indel。以这种方式,对于任意个体read,没有足够的环境来更精确地比对染色体末端的read可以得到补偿。因此,在执行局部重新比对时,检查一个或多个可能存在一个或多个indel的堆积,并且确定是否通过在任意给定位置添加indel来提高整体比对分数。
可以包括另一个模块,例如在序列分析管道中,所述模块例如用于确定个体的基因组序列,该模块可以是重复标记模块(duplicate marking module)。例如,可以执行重复标记函数以补偿在测序阶段可能发生的化学错误。例如,如上所述,在一些测序过程中,将核酸序列连接至珠子并使用标记的核苷酸碱基在该处组合。理想情况下,每个珠子只会有一个read。但是,有时多个read会连接到单个珠子上,这会导致read过多的拷贝。这种现象被称为read重复。
这样的read重复可能会丢弃统计数据并产生统计偏差,因为它不是具有所有read的相等表示,而是重复了各种read,例如因为连接上多个小珠的重复模板序列被过度表示。相应地,这些因素可以确定,因为与完全相同的位置比对并具有完全相同的长度的任何read可能是重复的。一旦***识别出这一点,只需要对一个read进行进一步处理即可,而其他read则可以标记为重复,因此可以丢弃或忽略。发生这种情况的典型情况是,从一开始就没有足够的遗传物质进行处理,***试图对此进行过度补偿。
可以包括另一个模块,例如在序列分析管道中,所述模块例如用于确定个体的基因组序列,该模块可以是碱基质量评分重新校准器。例如,每个read的每个碱基都有一个Phred分数,表示该位置上的被调用碱基不正确的概率。例如,任意碱基的Phred分数部分是由于其之前的碱基的性质,并且错误的情况会根据所述碱基之前的碱基将会不同。此外,在read末端发生错误的可能性更大,例如,在read末端,化学物质开始失去其性能。碱基质量评分重新校准是一种协变分析,可以返回并根据哪些会使它们产生不同的因素测量碱基质量评分的经验质量。
在各种情况下,它涉及两个步骤。首先,收集观察到的错误率的所有实际经验测量数据和统计数据作为函数的所有变量,第二步涉及将所有read通过过滤器从而对分数进行实际重新校准,所述过滤器根据数据集中实际经过测量的数据对每个碱基修改质量评分,作为函数变量。这补偿了由于各种变量导致的数据差异,并清理了数据和分数。所有这些清理的目的是确保实现最佳的变异检测。许多不同的变异检测的决定部分基于基因组中每个位置堆积的每个核苷酸的报告质量。如果质量评分不准确,可能会导致错误的检测。
可以包括另一个模块,例如在序列分析管道中,所述模块例如用于确定个体的基因组序列,该模块可以是执行压缩函数的压缩模块。如上所述,在某些时候将生成和处理的数据取出并传送到远程位置(例如云)可能是有用的,因此,可能需要在处理过程中的特定阶段压缩数据,一经压缩它可以被传输和/或上传,例如,上传到云或服务器农场等,例如用于执行变异检测模块。然后,结果一旦获得,则可以被解压缩和/或存储在存储器中,云上的数据库上,例如电子健康和/或研究数据库等,其又可用于三级处理等等。
特别地,一旦基因数据已经被生成和/或处理,例如在一个或多个初级和/或二级处理方案中,例如通过被映射、比对和/或排序,例如以产生一个或多个变异检测文件,例如为了确定来自受试者的基因序列数据与一个或多个参考序列不同,本公开的另一方面可涉及对所生成和/或处理的基因数据执行一个或多个其他分析函数,例如用于进一步的,例如三级处理。例如,该***可以被配置用于进一步处理生成的和/或二级处理的数据,例如通过运行它经过一个或多个三级处理管道,例如一个或多个基因组管道、表观基因组管道、宏基因组管道、联合基因分型、MuTect2管道或其他三级处理管道,例如通过本文公开的设备和方法。例如,在各种情况下,可以提供额外的处理层,例如用于疾病诊断、治疗和/或预防,例如包括NIPT、NICU、癌症、LDT、AgBio和其他此类疾病诊断、预防和/或治疗,采用由一个或多个本公开的初级和/或二级和/或三级管道产生的数据。因此,本文所公开的装置和方法可以用于生成基因序列数据,该数据然后可以用于生成一个或多个变异检测文件和/或其他相关数据,其可以进一步用于其他三级处理管道根据本文公开的装置和方法,例如针对特定和/或一般的疾病诊断以及预防和/或治疗和/或可发展式物理疗法。
因此,如上所述,在各个方面,用于实现基因组学和/或生物信息学方案的***、设备和方法,例如在各种情况下用于执行一个或多个函数以在集成电路上分析基因数据,例如在硬件处理平台中实现。例如,在一个方面中,本公开提供了一种生物信息学***,其中该***可以涉及执行各种生物分析生产和/或分析函数,这些函数经过优化以便在硬件中更快和/或以更高的准确性执行。因此,在各种情况下,本文描述的方法和***可以包括用于执行这些函数的一个或多个算法,其中算法可以在硬件解决方案中实现,例如优化算法以用于在集成电路中实现,其中所述集成电路由一个或多个硬连线数字逻辑电路组成。在这样的情况下,硬连线数字逻辑电路可以例如通过一个或多个物理电气互连进行互连,并且可以被布置为用作一个或多个处理引擎。在各种情况下,本公开提供多个硬连线数字逻辑电路,所述硬连线数字逻辑电路被配置为一组处理引擎,其中每个处理引擎能够执行生物信息学基因分析方案中的一个或多个步骤。
更具体地,在一个实例中,提供了用于(例如对基因序列数据)执行序列分析管道的***。该***可以包括一个或多个电子数据源、存储器和集成电路。例如,在一个实施例中,包括电子数据源,其中电子数据源可以被配置用于提供一个或多个数字信号,例如代表一个或多个基因组数据read的数字信号,例如,其中每个基因组数据的read包括核苷酸序列。此外,可以配置存储器用于存储一个或多个基因参考序列,并且还可以用于存储索引,例如一个或多个基因参考序列的索引。
此外,在各种情况下,多个物理电气互连中的一个或多个可以包括输入(例如至集成电路),并且还可以与电子数据源连接,以便能够接收一个或多个基因组数据read。在各种实施例中,硬连线数字逻辑电路可以被布置为一组处理引擎,例如其中每个处理引擎由硬连线数字逻辑电路的子集形成,并且被配置为执行序列分析管道中的一个或多个步骤,例如基于数字化基因数据,例如多个基因组数据read。在这种情况下,硬连线数字逻辑电路的每个子集可以为有线配置,以便执行序列分析管道中的一个或多个步骤,例如一个或多个步骤可以包括执行以下一个或多个操作:碱基检测和/或错误校正操作,例如基于数字化基因数据,和/或可以包括对基因数据执行一个或多个映射、比对和/或排序函数。在某些情况下,所述管道可以包括对数字化基因数据执行一个或多个重新比对、重复数据删除、碱基质量评分重新校准、缩减和/或压缩和/或解压缩。在某些情况下,管道可能包括对基因数据进行变异检测操作。
因此,在各种实施例中,如本文所述的用于实现基因组学和/或生物信息学方案的***、设备和方法可涉及采取可能通常在软件上执行的过程,并将这些函数嵌入到集成电路例如在芯片100上,例如作为电路板105的一部分,例如函数已被优化以增强其在芯片上的性能。因此,在一个实施例中,如图6和图7所示,提供芯片100,其中芯片100被设计成有效地执行管道函数。在各种特定实施例中,芯片100可以是现场可编程门阵列(FPGA)、专用集成电路(ASIC)或结构化专用集成电路(sASIC)等。
例如,可以将一个或多个这些算法的功能嵌入到芯片上,例如FPGA或ASIC或结构化ASIC芯片,并且可以被优化以便更有效地在硬件中执行。因此,在一个实施例中,提供FPGA芯片,其中芯片能够被配置,例如其编程可以被改变,以便更适应于满足给定用户关于执行本文详述的各种基因组功能的需求。在这种情况下,用户可以根据期望在整个***中强调的关键参数来改变和/或修改所采用的算法,例如提供附加功能或者改变芯片上首次呈现的内容,例如,重新配置芯片以采用不同的算法。
此外,在另一个实施例中,提供了FPGA或结构化ASIC芯片,其中芯片能够被(例如完全或有限程度地)配置,例如其一些编程可以被改变,以便更适应于满足给定用户关于执行本文详述的各种基因组功能的需求。根据另一个实施例,提供了一种ASIC,例如其中FPGA或sASIC被转换为ASIC芯片,其中其函数可以被锁定在芯片中。在这种情况下,各种参数(例如关于本文阐述的一个或多个算法的函数的各种参数)可以是用户选择的,例如,控制各种模块应该如何运作,但是这些模块实际上的运作方式被锁定。
在各种实施例中,如图6和图7所示,芯片100可以是电路板的一部分,例如扩展卡104的一部分,例如***组件互连(PCI)卡,其包括PCIe卡,其在各种实施例中可以与自动测序器设备相关联,例如可通信地耦合(例如电连接),以便与测序器分开运作并一起包装。例如,紧接在FASTQ文件生成和/或初级处理之后,例如紧接在执行了测序函数之后,由测序器生产的数据文件(例如FASTQ文件),直接传送到芯片,用于基因组二级处理。
因此,在某些情况下,提供PCI 104卡,其中PCI卡可以包括具有PCIe总线105的芯片,其中卡102和/或芯片100可以包括以下一个或多个:配置管理器,例如配置控制(Cent-Com);直接存储器访问引擎(例如,驱动程序);API;客户端级接口(CLI),文库;存储器,例如随机存取存储器(RAM)或动态随机存取存储器(DRAM);和/或芯片级互连,例如DDR3。例如,在各种情况下,可以包括配置管理器,其中例如通过参数文件来驱动配置管理器。在这种情况下,可以调整配置管理器以便配置管道的各种模块。在各种情况下,它可以是用户可编辑的,并且允许用户确定将使用管道中的哪些模块,例如,从所有模块到少于全部模块的模块子集,例如特定数据集,例如一组特定的FASTQ文件。
例如,在各种实施例中,管道的运作是可配置的,一个或多个模块(例如结构化到芯片中的模块)可以根据需要运行或不运行。此外,使用中的每个模块还可以被配置为根据一个或多个预选参数运行,其中用户可对其进行控制,例如关于模块将如何执行和表现。因此,可能存在两组不同的配置文件,例如一组整体控制***的基本操作,并且可能对用户隐藏,另一组配置文件能够被用户操作,从而允许用户选择运行芯片100和/或PCI卡104的一个或多个子***(例如,模块)的各种参数。
因此,上述各种模块可以被硬连线到芯片中,或者可以在芯片外部,但是与芯片存在耦合关系,例如在PCI板104上,或者它们可以远离芯片,例如在不同的PCI板上,或者甚至在不同的服务器上,例如在可以经由云30访问的服务器上。例如,在某些实施方式中,一个或多个上述模块可以硬连接到芯片100上,并且该芯片安装在独立设备300的电路板104上,或者耦合到测序器,用户根据它们自己的预选参数直接自行配置和运行***。备选地,如本文所指出的,一个或多个上述模块可以存在于可通过云30访问的***上,其中管道的运作和/或其模块的引导可以包括连接到服务器(例如远程服务器)上的用户日志,并且向其传输数据,从而选择在数据集上运行哪些模块。在某些情况下,可以远程执行一个或多个模块,例如通过云访问的服务器。
在各种情况下,在配置***时,芯片,例如PCI卡之类的扩展卡104上的芯片100,可以被包括在服务器300中,由此服务器运行***的各种应用程序。在某些情况下,服务器300具有可与其连接的终端,由此窗口界面可以呈现给用户,使得用户可以选择要运行的模块以及它们将要运行的参数,例如通过从菜单框中选择。然而,在其他情况下,参数文件可以是文本文件,该文件详细描述了文件名称下的模块类别,然后用户可以编辑,以便根据参数选择将运行的模块。例如,在各种实施例中,每个芯片可以包括全部模块或选择的模块,例如以下一个或多个:碱基检测、纠错、映射、比对、排序、局部重新比对、重复标记、重新校准、变异检测、压缩和/或解压缩模块,用户可以从中选择将运行哪些模块,何时以及如何运行,而不改变单个模块操作的基础算法的运作。
另外,在各种情况下,可以包括芯片中的直接存储器访问(DMA)引擎和DMA驱动器,其中DMA驱动器包括在内核中运行的代码。因此,DMA驱动程序可能是整个操作***的基础。例如,内核在一个文字寻址空间中运行,分层的上面可能是一个虚拟用户空间。因此,该操作***软件在这些层之间运行,管理从虚拟到物理空间的映射。更具体地说,内核表示使平台能够访问与芯片100耦合的PCI 104(例如PCIe总线105)的最低级别的代码。因此,由于在各种实施例中,芯片100可以被配置为具有PCIe扩展总线105的扩展卡104,该扩展卡104可以与设备(例如测序器)的各种硬件耦合,所以DMA驱动器可以起作用以与测序器的硬件进行通信,并且还可以被配置为在CPU 100上的内核运行,以便还与芯片100中的DMA引擎进行通信,和/或被配置为在虚拟用户空间操作以接收来自用户的指令。
为了促进芯片内和/或芯片与一个或多个卡之间的通信,可以将模块的每个单个可配置参数分配给寄存器地址。在这种情况下,卡可以具有其自己的地址空间,该地址空间可以与一个或多个存储器的地址空间不同,例如64千兆字节的存储器,和/或另外每个模块可以具有寄存器和与之关联的本地存储器,每个都有自己的地址空间。因此,驱动程序知道一切都在什么位置,所有地址,并且知道如何在芯片100、PCI卡104和/或服务器的硬件之间进行通信。此外,知道所有地址在哪里,并与API通信,驱动程序可以读取用户生成的参数文件,并可以查找该参数,其中该文件实际位于主机***中,读取并解释在文件中的值,并发送该值,在芯片正确位置的正确寄存器中。因此,驱动器可以处理传送所选择的参数指令,例如关于各种用户选择的配置,并且经由DMA引擎将该数据传送到芯片以配置其任意处理函数。
特别地,一旦基因数据已经被生成和/或处理,例如在一个或多个初级和/或二级处理方案中,例如通过被映射、比对和/或排序,例如以产生一个或多个变异检测文件,例如为了确定来自受试者的基因序列数据与一个或多个参考序列不同,本公开的另一方面可涉及对所生成和/或处理的基因数据执行一个或多个其他分析函数,例如用于进一步的,例如三级处理。例如,如图8-11所示的***可以被配置用于进一步处理生成的和/或二级处理的数据,例如通过运行它经过一个或多个三级处理管道700,例如一个或多个基因组管道、表观基因组管道、宏基因组管道、联合基因分型、MuTect2管道或其他三级处理管道,例如通过本文公开的设备和方法。例如,在各种情况下,可以提供额外的处理层122,例如用于疾病诊断、治疗和/或预防,例如包括NIPT、NICU、癌症、LDT、AgBio和其他此类疾病诊断、预防和/或治疗,采用由一个或多个本公开的初级和/或二级和/或三级管道产生的数据。
因此,本文公开的装置和方法可以用于生成基因序列数据,该数据然后可以用于生成一个或多个变异检测文件和/或其他相关数据,其可以进一步用于其他三级处理管道根据本文公开的装置和方法,例如针对特定和/或一般的疾病诊断以及预防和/或治疗和/或可发展式物理疗法。
此外,在各种情况下,可以包括API,其中API被配置为包括用户可以进行调用的函数列表,以配置和操作***。例如,可以在头文件中定义API,该文件描述函数并确定如何调用函数,例如传递的参数、输入和输出、进来的内容、出去的内容以及返回的内容。例如,在各种实施例中,管道的一个或多个元素可以是可配置的,例如对于预选参数的配置,通过由用户和/或一个或多个第三方应用程序输入的指令来配置。这些指令可以经由与驱动器通信的API传递给芯片,指示驱动器芯片的哪些部分(例如哪些模块将被激活)、何时以及以何种顺序执行相关操作。
如上所述,DMA驱动器在内核级运行,并且具有其自己的、低级别的、基本API,其提供对硬件和函数的访问以便访问适用的寄存器和模块。在这层之上构建了一个虚拟的服务函数层,它构成了用于多种函数的构建块(building block),这些函数将文件发送到内核并返回结果,并进一步执行更高级别的函数。在该层之上是一个附加层,它使用这些服务函数,这是用户将与之接口的API级别,它主要用于配置、下载文件和上传结果。这样的配置可以包括与寄存器通信以及执行函数调用。
例如,如上所述,函数调用可以是通过散列算法生成散列表。具体而言,因为在某些实施例中,该函数可能基于参考基因组,因此对于每个参考基因组而言,可能需要基于该参考基因组构建映射器中使用的散列表,因此存在执行这个函数的函数调用,该函数调用将接受存储参考文件的文件名,然后生成一个或多个包含散列表和参考的数据文件。另一个函数调用可以是加载通过散列算法生成的散列表,并将散列表下传到芯片100上的存储器,和/或将其放置在硬件期望的正确位置。当然,参考本身需要被下载到芯片100上,同样对于比对函数,配置管理器可以执行该函数,例如通过加载所有需要的东西以便为芯片100模块将其函数执行到芯片上的存储器中或附接到芯片100。
另外,API可以被配置为允许芯片100与测序器的电路板连接,当API被包括在其中时,以便直接从测序器接收FASTQ测序文件,例如它们生成后立即接收,然后将该信息传送给配置管理器,然后该配置管理器将该信息引导至硬件100中的适当存储体中,使该信息供硬件的相关模块使用,对该信息执行其指定的函数以便对样本DNA与参考基因组进行碱基检测、映射、比对、排序等。
此外,可以包括客户端级接口(CLI),其中CLI可以允许用户直接调用这些函数中的一个或多个。在各种实施例中,CLI可以是适用于配置使用硬件的软件应用程序。因此,CLI可以是接受指令(例如参数)的程序,并且仅通过调用应用程序就可以运作。如上所述,CLI可以基于命令行或基于GUI(图形用户界面)。基于行的命令发生在GUI下的一个级,GUI包括一个基于窗口的文件管理器,点击函数框描述将使用哪些模块及其使用的参数。例如,在操作中,如果指示,CLI将定位参考,确定是否需要生成散列表和/或索引,或者如果已经生成了它存储的位置定位,并且指导生成的散列表和/或索引的上传等。这些类型的指令可以在用户可以选择芯片执行的GUI处显示为用户选项。
此外,可以包括文库,其中文库可以包括预先存在的、可编辑的配置文件,例如针对典型用户选择的硬件功能文件,例如关于部分或全基因组分析,例如用于血统分析或疾病诊断、药物发现或蛋白质分析等。这些类型的预设参数(例如用于执行分析的参数)可以存储在文库中。例如,如果使用本文描述的平台,例如用于肿瘤学研究,则预设的参数可以不同于仅针对研究族谱的情况。
更具体地说,对于肿瘤学来说,准确性可能是一个重要因素,因此可以设置***的参数以确保提高准确性,尽管可能会降低速度。但是,对于其他基因组学应用而言,速度可能是关键的决定因素,因此***的参数可能会设置为使速度最大化,但这可能会牺牲一些准确性。相应地,在各种实施例中,用于执行不同任务的经常使用的参数设置可以预先设置到文库中以便于使用。这些参数设置还可以包括运行***所需的软件应用程序。例如,文库可能包含执行API的代码,并且还可能包含示例文件、脚本以及运行***所需的任何其他辅助信息。因此,文库可以被配置为编译用于运行API以及各种可执行文件的软件。
在各种情况下,PCI 104和/或芯片100还可以包括存储器,例如随机存取存储器(RAM)或DDR3接口的动态快速存取存储器等,例如可用于促进本文所述的各种模块(例如,映射器、比对器和/或排序器)的性能的存储器。例如,参考、散列表和/或散列表索引和/或read可以存储在DRAM中。此外,如图9所示,存储器可以用于促进本文所述的各种其他模块(例如,114)的执行,例如重复删除器(deduper)、局部重新比对器、碱基质量评分重新校准器、变异检测器、压缩器和/或解压缩器。例如,排序的read、注释read、压缩read和/或变异检测可以存储在DRAM中。此外,存储器可以被配置为包括用于由比对器和/或任何其他模块采用的各种存储器模块中的每一个的单独接口,例如在每个存储器包括文件层和逻辑层的情况下。如上所述,因为可能存在多个存储器和/或多个模块,所以可以包括芯片级互连以促进通过芯片100的通信。
因此,在各种情况下,本公开的设备可以包括芯片100,其中芯片包括集成电路,所述集成电路由一组硬连线数字逻辑电路形成,所述逻辑电路通过一个或多个物理电气互连进行互连。在各种实施例中,一个或多个物理电气互连包括集成电路的输入,该输入可以与用于接收数据的电子数据源连接。此外,在某些实施例中,硬连线数字逻辑电路可以被布置为一组处理引擎,例如其中每个处理引擎可以由硬连线数字逻辑电路的子集形成,硬连线数字逻辑电路被配置为执行序列分析管道中的一个或多个步骤。更具体地,硬连线数字逻辑电路的每个子集可以为有线配置,以便执行序列分析管道中的一个或多个步骤。
在各种情况下,该组处理引擎可以包括一个或多个映射模块112、比对模块113和/或排序模块114a中,例如其中一个或多个所述模块为有线配置。例如,可以包括映射模块,该模块为有线配置,映射模块可以例如从存储器访问例如一个或多个基因参考序列的索引,例如通过一个或多个物理电气互连,以便将所述多个read映射到所述一个或多个基因参考序列的一个或多个片段。此外,在各种情况下,可以包括比对模块,该模块为有线配置,比对模块可以例如从存储器访问一个或多个基因参考序列,例如经由多个物理电气互连中的一个或多个,从而将多个read与一个或多个基因参考序列的一个或多个片段进行比对。此外,在各种情况下,可以包括排序模块,该模块为有线配置,排序模块可以例如从存储器访问一个或多个比对的序列,例如经由多个物理电气互连中的一个或多个,从而将多个read排序为染色体,例如从一个或多个基因参考序列中。以类似的方式,在各种情况下,芯片中可以包括一个或多个局部重新比对模块、重复标记模块、碱基质量评分重新校准模块和/或变异检测模块,例如在与上述模块一致的有线配置中,以执行它们各自的函数。
如上所述,在各种情况下,本公开的一个或多个集成电路可以被配置为一个或多个芯片,例如ASIC、FPGA和/或结构化ASIC芯片中的一个或多个。例如,集成电路是在半导体材料(例如硅)的小晶片或“芯片”上的一组电子电路。通常集成电路包括不可分离地关联并且电气互连的电路元件。原型数字集成电路包括各种电路元件,例如逻辑门、触发器、多路复用器和其他各种电路元件中的一个或多个,这些电路元件被配置和/或可配置用于在电路(例如微处理器)中工作,或者其他微控制器,例如用于“0”和“1”信号的二进制处理,例如在本公开的一个或多个操作中。
更具体地,可以配置或编程一个或多个掩模可编程逻辑门执行逻辑操作,例如实现Boolean函数,一个或多个逻辑输入以便产生单个逻辑输出。该逻辑门可以使用一个或多个二极管或晶体管来配置,作为电子开关。在各种情况下,逻辑门可以为级联,以类似于Boolean函数可以被组合的方式,允许构建所有Boolean逻辑的物理模型,并且所有用布尔逻辑解释的算法和数学运算(例如如本文所述)可以在本公开的集成电路的逻辑门中实现。在各种实施例中,逻辑门集合可以以形成门阵列(例如门阵列电路)的方式存在于晶片上。
在各种情况下,集成电路还可以包括一个或多个触发器。触发器可以是电路或其至少一部分,被配置为锁存器。典型地,触发器具有两个稳定状态并且可以从一个状态变为另一个状态,例如通过施加到一个或多个控制输入的信号,并且因此触发器将具有一个或两个输出。在使用中,触发器被用来存储状态信息,并且因此可以被部署为基本存储元件,例如在顺序逻辑操作中。集成电路可能还包括一个多路复用器。多路复用器可以被配置用于选择若干输入信号中的一个,例如数字(或模拟)输入信号,并且还可以被配置用于将所选择的输入转发到输出。以这种方式,可以使用多路复用器来增加在一定时间内和一定带宽内通过网络发送的数据量。
在某些情况下,如本文所述,典型的集成电路可以包括被配置用于执行操作的一个至数百万个这样的电路元件,例如当前公开的操作,其中各种电路元件仅占用几平方毫米空间。这些电路尺寸小,可实现高速,低功耗,并降低制造成本。
这种集成电路可以使用各种不同的技术来制造,但是通常构造为单片集成电路。例如,典型的集成电路(例如半导体)可以以层工艺制造,例如包括约三个主要工艺步骤(例如成像、沉积和蚀刻)的层工艺。在各种情况下,这些处理步骤中的一个或多个可以通过进一步的处理步骤来补充,例如掺杂、清洁等。例如,在典型的制造过程中,可以提供晶片(例如单晶硅晶片),以用作构造集成电路(例如印刷)的衬底。然后可以采用光刻法在晶片上进行印刷,以便标记衬底的不同区域,然后可以用例如铝之类的金属绝缘体对轨道进行掺杂和/或印刷。
通常,集成电路由一个或多个重叠层组成,例如其中每个层由光刻定义。一些层可以形成扩散层,标记各种掺杂剂已经扩散到衬底中的位置,并且其他层限定可以注入附加离子的位置。额外的层可以限定导体(例如多晶硅、金属层等)以及导电层之间的连接层。例如,可以在栅极层(多晶硅或金属)穿过扩散层的任何地方形成晶体管,并且在各种情况下,曲折条纹可以用于形成芯片上的电阻器。示例性集成电路可以包括:ASIC、FGPA和/或结构化ASIC。
通常,集成电路被制造为通用的。然而,在各种情况下,例如本文描述的一些情况下,可以定制集成电路,例如以形成专用集成电路或“ASIC”。通常称为“标准单元ASIC”的ASIC是为特定用途定制的集成电路,而不是用于通用用途。典型地,ASIC可以具有大量的逻辑门,例如在一些情况下超过1亿个门,所述门可以被配置用于执行多种不同的操作,例如被配置为微处理器和/或存储器块,包括ROM、RAM、EEPROM、闪存和其他大型构建块,例如用于执行本文公开的操作的目的。ASIC的独特特征是因为它是构建用于执行特定应用集合的芯片,所以可以以可定制的方式制造芯片,例如通过采用门阵列设计方案。
例如,可以在设计和制造专用集成电路(ASIC)中使用门阵列或自由逻辑阵列(ULA)。在这种情况下,ASIC可以由预制芯片制造,该预制芯片具有有源器件,例如门(与非门),所述有源器件最初可以是未连接的,但可以在稍后时间为互连的,例如根据门阵列设计方案,例如通过添加金属层,例如在工厂中。因此,就生产ASIC而言,门阵列电路可以预制在硅芯片电路上,该芯片电路在生产时不具有特定函数,但不包括晶体管、标准NAND或NOR逻辑门中的一个或多个,并且可以具有其他可以放置在预定位置并在晶片上制造的有源器件,在这种情况下该晶片可以被称为“主片”。因此,制造过程后期,可以通过添加最终表面层或金属互连到主片上的芯片,并且连接这些元件,根据需要进行定制芯片的函数,例如根据设计方案,由此构建具有确定的特定函数的电路。
更具体地说,门阵列设计方案采用的制造方法,其中对各种分散层进行预定义,例如晶体管和其它有源电路元件(例如上述元件),并将所述分散层构建在通用晶片上,但是在金属化之前存储分散层,使得各种电路元件保持不连接。在这种情况下,芯片可以随后的某个时间点根据各种特定的使用参数进行定制,例如通过定义最终设备的互连的物理设计过程。例如,通常预制门阵列主片并大量储存,待定制。应用电路必须建立在门阵列上,使得该电路具有足够的门、接线和I/O引脚以便执行期望的函数。
由于需求变化,门阵列晶片通常以标准系列出现,包括具有更多(例如全部)资源但相应更昂贵的较大的部件,以及具有有限的资源选择但较不昂贵的稍小的部件。应根据执行选定函数所需的资源数量来选择正确的晶片标准。要部署的资源数量可以很容易地确定,例如通过计算需要多少个门和I/O引脚,但所需的路由轨道数量可能有很大差异,因此应仔细选择。但是,由于主片有所预制,因此与标准单元或全定制(FPGA)设计相比,根据各个设计方案的设计和制造可以在更短的时间内完成。以这种方式,门阵列方法降低了掩模成本,因为需要生产的定制掩模更少。此外,制造测试工具的交付时间和成本也会降低,因为相同的测试装置可用于所有门阵列产品在相同模具尺寸下制造。
在这种情况下,制造标准单元芯片(例如ASIC)可以包括从两个到九个或到十个或到十二个或到更多个沉积层,例如其中一个或多个(例如全部),随后的金属层垂直于其下面的金属层。这样的制造方法是有用的,因为它们在相对较短的构建时间段内提供了定制的芯片设计,因为最终的金属化工艺可以快速执行。然而,这种门阵列芯片,例如ASIC,通常是一种折中方案,因为将给定的设计映射到“库存”晶片通常不会100%利用。关于ASIC的另一个缺点是非经常性工程(NRE)成本可能会达到数百万美元。尽管如此,ASIC单元生产成本相对较低。
另一种用于生产可定制芯片的标准单元ASIC是现场可编程门阵列或“FPGA”。FPGA采用可重写的可编程逻辑块和互连,从而允许设计相同的FPGA并且允许至少部分地重新设计以便在许多不同的应用中使用,或者在相同的应用中以多种不同的方式使用。更具体地说,现场可编程门阵列是集成电路,该集成电路被设计成可以进行一次或多次配置,例如由用户或设计者在制造之后进行配置。
通常,FPGA具有大量的逻辑门和/或存储器的资源,例如RAM,可被配置为实现复杂数字计算指令的模块。例如,FPGA包含称为“逻辑块”的可编程逻辑组件,以及多种(例如层级)可重新配置的互连,其允许所述逻辑块“有线连接在一起”。更具体地,FGPA可以具有多种可变逻辑门,其可以以各种不同配置进行内部连线,以便形成逻辑块,所述逻辑块可以被配置为执行各种不同的复杂组合函数,例如执行本文详述的操作。在各种情况下,FPGA的逻辑块可以被配置为包括存储器元件,例如简单触发器或更完整的存储器块,例如ROM或RAM。由于FPGA设计使用非常快速的I/O和双向数据总线,在某些情况下,可能难以在建立时和保持时间内验证有效数据的正确时序。因此,在一些情况下,适当的平面布置可以使得FPGA内的资源分配能够满足这些时间限制。因此,FPGA可用于实现标准单元ASIC可执行的任何逻辑函数。但是,能够更新功能、部分设计的部分重新配置以及相对于ASIC设计的更低的非经常性工程成本(尽管每单位成本通常更高)可利于许多应用。
在一些情况下,典型FPGA的制造方法——粗粒度构建方法可以将传统FPGA的逻辑块和互连与嵌入式微处理器和相关***设备组合以形成完整的“在可编程芯片上的***”。在某些情况下,本公开的FPGA能够在“运行时间”被重新编程,并且可以根据本文公开的方法允许可重新配置的计算或产生可重新配置的***,例如,可以重新配置其自身以适合本文所公开的操作的CPU。在一些情况下,可以采用软件可配置的微处理器来提供处理器内核阵列和类似FPGA的可编程内核,其可能存在于同一芯片上。
普通FPGA架构可以包括可配置逻辑块阵列、I/O衬垫和/或一个或多个路由通道。典型地,逻辑块可以包括一个或多个逻辑单元,其中典型单元可以包括4-input LUT、全加器(FA)和/或触发器等等,其用于产生输出。在各种情况下,所述输出可以是同步的也可以是异步的。应用电路可以被映射到FPGA中,并且可以根据设计来确定要包括的逻辑块、I/O和路由轨道的数量,该数量可以变化。应当注意的是,由于未使用的路由轨道可能增加成本并降低集成电路的性能而没有任何益处,所以路由轨道的数量应该足以使其适合查找表(LUT)和I/O的路由而不会过多。此外,由于时钟信号路由通常经由专用路由网络(例如,全局缓冲器)实现,所以它们和其他信号可以分开管理。
如本文所公开的,FPGA还可以包括固定到硅中的较高级函数,例如一个或多个乘法器、通用DSP块、嵌入式处理器、高速I/O逻辑和/或嵌入式存储器。嵌入硅片中的这些通用函数可以减少所需的面积,并提高这些函数的速度。要注意的是,所公开的FPGA可以用于***验证,包括硅前验证、硅后验证和固件开发,例如在生产“供使用”的芯片之前验证最终设计,例如可能代表最终产品的标准单元ASIC或结构化ASIC芯片。
在示例性集成电路(例如FPGA等)的制造中,所述集成电路其具有如本文所述的必要功能,可以以任何逻辑顺序进行一个或多个以下步骤。首先,提供硬件描述语言(HDL)或原理图设计。然后可以采用电子设计自动化工具(例如CAD)来生成技术映射网表。该网表可以例如经过布局布线适用于实际的FPGA体系结构,例如根据适当的布局布线软件。设计和验证完成后,生成的二进制文件可用于(重新)配置FPGA。
在典型的设计方案流程中,可以在整个设计过程的多个阶段模拟设计。最初,RTL描述(例如VHDL或Verilog)可以通过创建测试台来模拟***并观察结果来模拟。在某些情况下,合成引擎可将所提出的设计映射到网表,并且在合成引擎将设计映射到网表之后,网表可被翻译为门级描述。在此阶段,可以例如再次进行模拟以确认合成没有错误地进行。然后可以将设计布置在FPGA中,在该点处可以添加传播延迟,可以例如再次进行模拟,并且这些值被反注释到网表上,例如在最终验证和进一步制造(例如生成一个或多个ASIC或基于结构化ASIC的芯片)之前。
因此,ASIC和FPGA之间的混合是结构化ASIC,其落在FPGA和ASIC之间。上文公开的传统“标准单元ASIC”通常是花费成本的,例如非常昂贵并且开发耗时。例如,在开发标准单元ASIC时,可以为每个标准单元ASIC设计生成大量的光刻掩模。但是,在初始开发的前期投资完成之后,典型的生产成本变得非常低,并且容易优化功率、频率和逻辑容量等操作参数。
或者,与标准单元ASIC不同,含有可编程逻辑的典型FPGA和/或CLPD开发相对快速且便宜,这很大程度上是因为预先存在的器件是电子编程的,并且不需要光刻掩模。然而,就功率、频率和逻辑容量等操作参数而言,与标准单元ASIC相比,这些参数很差,单位成本可能非常高,特别是对于大容量器件。
另一方面,结构化ASIC是这两者之间的折中。与门阵列不同,结构化ASIC倾向于包括预定义或可配置的存储器和/或模拟块。因此,开发成本远低于标准单元,因为每个结构化ASIC设计只需要生成少量光刻掩模,例如用于可配置金属层。而且,虽然单位生产成本明显高于标准单元,但仍远低于FPGA单元成本。在功耗和频率方面,这些是标准单元和FPGA之间的折中,但它们的逻辑容量与最大的FPGA类似。因此,在许多情况下,结构化ASIC可能是一种可以降低开发新定制集成电路的前期成本和时间的技术。
关于结构化ASIC的设计和制造,在开发一系列结构化ASIC之前,可首先开发“主片”,例如通过使用标准单元ASIC方法。如上所述,主片可以包括大部分典型集成电路层,例如一个或多个晶体管、存储器或存储器单元、输入/输出单元,锁相环或其他时钟发生器等。可选地,主片可以包含触发器、锁存器和/或多晶体管组合门。组件之间的一些局部布线可以被包括在主片中,但是实现完整逻辑设计的大部分布线可以被省略,例如稍后添加。应当注意的是,主片理论上可以构建为包含适用于标准单元ASIC的任何逻辑,可能包括大型复杂模块。主片逻辑的操作参数(功率、频率、逻辑容量)是最佳的,就像标准单元ASIC一样。可以为主片内容产生光刻掩模,该掩模集与标准单元ASIC掩模集相似或略小。相应地,主片包括一组数字逻辑电路,其可以或者可以不被硬连线以特定方式工作。
在构建主片之后,可以实现一系列一个或多个完整结构化的ASIC,例如通过建立在相同的主片上。通常,许多结构化ASIC设计使用相同的主片,以平摊许多项目中主片的成本。每个单独的结构化ASIC设计可以通过确定主片中的组件(晶体管等)之间的一组新的有线连接来实现,这将有效地将主片组件构建到更高级门、触发器、锁存器、存储器和大型复杂逻辑模块中。因此,这些确定的有线连接可以在主片的顶部上制造的少量额外“可配置”金属层904A和904B中实现,例如通过连接在主片中的金属垫,或通孔,例如通过在可配置的金属层中的电线。这些额外的金属层为“可配置的”,因为它们可以针对每个结构化ASIC设计项目进行定制;然而,它们在制造时固定,并且除了实施提供的逻辑设计之外不能重新电子布线。可以有任意数量的可配置金属层。
因此,只要主片包含足够的逻辑资源(晶体管、存储器等)以形成所有所需的逻辑设计元件,则大多数任何可设想的逻辑设计都可以使用主片和适当的布线金属层来实现。从一个结构化ASIC设计流程到另一个结构化ASIC设计流程,可配置金属层的数量可能发生变化,但是通常可配置金属层的数量可以或多或少地在1到5个之间。可以制造与可配置金属层相对应的小的附加光刻掩模组,并且在器件制造中,可以使用全掩模组(主片掩模和可配置金属层掩模)来构建完整结构化ASIC的晶片。或者,主片晶片可以成批地预制,并且在稍后的制造步骤中添加金属层以完成特定结构化ASIC设计的晶片。
有利的是,结构化ASIC主片可以在一个步骤中设计,例如由第一设计者设计,而基于该主片的特定结构化ASIC逻辑设计可以在第二步骤中设计,例如通过各种不同的其他设计者利用结构化ASIC设计者的服务进行设计。具体而言,各方通常可以负责特定于期望的集成电路函数的“前端”逻辑设计,例如RTL(寄存器传输逻辑)代码开发、模拟、仿真、回归测试、调试等等;而结构化ASIC设计者通常可能负责“后端”设计流程,包括合成、布局和布线、静态时序分析、测试逻辑***和/或流片(tapeout)。可以采用另一方,例如铸造厂来制造物理光刻掩模、制造晶片、和/或测试和/或封装器件。在各种情况下,结构化ASIC设计者还可以为特定应用类别设计定制主片,例如以包含为这些应用定制的逻辑资源类型或数量。
因此,由于存在预定义的金属层(因此减少了制造时间)并预先表征了硅晶片(例如主片)上的内容(从而缩短了设计周期时间),所以与典型的ASIC制造工艺相比,可以减少结构化ASIC的周期时间和设计周期时间。例如,在基于单元的ASIC设计或FPGA(例如门阵列)中,设计用户可能经常必须自己设计功率、时钟和测试结构。但是,在结构化ASIC中,这些可以是预定义的,与基于单元的或门阵列配置文件相比,可以节省生产时间和成本。
特别地,结构化ASIC的设计任务是将电路映射到已知单元的固定布置中。更具体地说,结构化ASIC的比较架构通常可以包括两个主要层次,例如结构化元件和结构化元件阵列。该结构化元件可以包括组合函数块和顺序函数块,其可以用作逻辑元件或存储元件。另外,关于结构元件的阵列,可以采用均匀或不均匀的阵列样式,例如结构化元件的固定布置。
因此,在结构化ASIC设计中,设备的逻辑掩模层可以是预定义的。在这种情况下,可以实现设计差异化和定制化,例如通过创建定制金属层,该金属层在预定义的低层逻辑元件之间创建定制连接。同样,与基于单元的工具相比,用于结构化ASIC的设计工具的成本更低,使用起来更容易(更快),因为它们不必执行基于单元的工具所具有的所有函数。更具体地说,可以在设计过程中使用预先存在的标准的基于单元的CAD工具。然而,在某些情况下,可能会使用专门为结构化ASIC设计的CAD工具。也可以使用产品特定的放置工具。此外,如本文所公开的,已经开发了新的和改进的算法,利用结构化ASIC的模块性,更好地考虑更多的时钟感知设计。此外,如上所述,可以使用本文公开的方法来增强评估和分析过程。
以这些方式,结构化ASIC技术可充当填补现场可编程门阵列和标准ASIC设计之间的空白的桥梁。更具体地说,因为只有少量的芯片层需要定制生产,所以结构化ASIC设计可能具有比“标准单元”或“全定制”芯片小得多的非经常性支出(NRE),它们要求为每个设计生产一组全掩模。因此,结构化ASIC具有高性能(典型ASIC的特性)和低NRE成本(FPGA的特性)。因此,可以采用结构化ASIC制造工艺,将最终产品快速推向市场,成本更低,并且更容易设计。
然而,在一些情况下,FPGA可能是有利的,因为互连和逻辑块在制造之后是可编程的。这为原型设计提供了高度的设计灵活性并且便于调试。然而,FPGA实现大电路的能力有时受到尺寸大小和速度的限制,这在一些情况下可能是由于可编程布线的固有复杂性和/或可能由各种编程元件占据空间导致的。另一方面,ASIC也有一些缺点,例如昂贵的设计流程,部分原因在于每个不同的设计通常需要完全不同的一组掩模。因此,结构化ASIC可能是这两者之间的解决方案。它可以基本上具有与FPGA相同的结构,但是通过在金属层之间配置一个或多个通孔层,它可以是掩模可编程的,例如在ASIC中,而不是现场可编程的。例如,一个或多个(例如,每个)SRAM配置位可以由另一种选择来代替,可以选择包括或不包括通孔或在各种金属触点之间。
例如,关于结构化ASIC的体系结构,典型的体系结构通常可能是细粒度的、中等粒度的和/或分层的。细粒度的体系结构可能包含许多结构化元件的进出连接,而更高的粒度减少了与结构化元件的连接,但也可能减少了其可支持的功能。每个单独的设计在不同粒度下都会受益不同。更具体地说,在细粒度体系结构中,体系结构可以包括结构化元件,其包含未连接的分立元件,例如晶体管、电阻器以及稍后可以连接的其他控制元件。在中等粒度体系结构中,结构化元件的体系结构可以包括通用逻辑和门、MUX、LUT和/或存储元件,例如触发器。或者,在分层体系结构中,体系结构可以包括微型结构化元件,例如包含门、MUX和LUT的元件,但通常不包含触发器等存储元件。在其他情况下,微型元件可以与寄存器或触发器组合。
关于实现结构化ASIC,制造步骤可以包括一个或多个寄存器传输级设计(RTL);逻辑综合,以便将RTL映射至结构化元件;设计测试***,以提高可测试性和故障覆盖率;布局,以便将每个结构化元件映射到阵列元件上并将每个元件放置到固定布置中;物理综合,改善布局的时序的方式,并优化每个元件的布置;时钟综合,分配时钟网络并减少时钟偏差和延迟;以及在各种元件之间布线或***布线。在各种情况下,这些步骤可以以任何逻辑顺序进行,以使设计过程(例如关于逻辑综合)较不复杂,并且帮助构建更完整的目标结构化ASIC文库,其增强了可以从设计中实现的功能。
此外,处理器内核的一些设计者将处理器设计许可给各种客户以嵌入他们自己的硅器件中,这样的做法已经变得很普遍。这种嵌入式内核可以包括ARM、PowerPC、Krait等作为通用处理器,并且还可以包括更专用的处理器,例如图形处理器(GPU)或矢量处理器。嵌入式处理器内核可能是大型、复杂的逻辑模块,管道在大约1或2GHz至大约3至6GHz或更高的高工作频率下运行。为了实现这样的高频率,可以对处理器内核和关联的高速缓冲存储器使用仔细的物理布局和布线;因此,嵌入式处理器技术通常可以作为特定硅制造工艺的“硬宏(hard macro)”(例如用于定义子部件的精确布局和布线)。
然而,这样的嵌入式处理器内核可能是用于在使用了可配置金属层的结构化ASIC中实现的次优候选。硬宏通常不适用于结构化ASIC的可配置层,并且即使嵌入式处理器尽可能接近其可配置金属层中的硬宏,也可能会受到频率限制(例如名义操作的30%或50%频率),并可能消耗可用主片资源的很大一部分。与标准单元相比,结构化ASIC结构的相对面积效率低下可能导致嵌入式处理器覆盖更大的物理硅面积,并且结合降低的工作频率,其性能与面积(或成本)的比率可能远远低于采用相同的嵌入式内核的标准单元。
然而,例如通过使用如本文所公开的标准单元设计方法,包括使用硬宏,在结构化ASIC主片中有效地嵌入一个或多个处理器内核是实际的。这些将保持全部的工作频率和性能,并且仅消耗正常的硅面积。处理器内核和/或高速缓存输入和输出线可以连接到主片中的其他资源,或者有利地暴露于可配置的金属层布线,以使嵌入的内核能够连接到任何基础架构和在每个特定结构化的ASIC设计中实现的逻辑模块。以这种方式,嵌入式处理器内核成为后来用主片实现的许多各种结构化ASIC设计可用的主片资源。
结构化ASIC中的嵌入式处理器内核可以连接到逻辑基础架构,使得运行在内核上的软件(固件)可以共享和访问芯片上和芯片外的各种存储器和其他资源,并与芯片上任何或所有其他逻辑模块,通过存储器和/或直接地。以这种方式,处理器内核可以与其他逻辑模块并行操作,和/或与其他逻辑模块协作以完成联合工作,例如通过处理器内核请求任务由其他模块执行,或者其他模块请求任务由处理器内核执行,或者两者都执行。
当Bio-IT加速模块(例如执行本文所述的映射、比对、排序、重复标记、碱基质量评分重新校准、局部重新比对、变异检测、压缩、解压缩等)在FPGA和/或结构化ASIC以及嵌入式处理器内核中实现,所产生的芯片上的***(SOC)具有重要的优势,特别是在速度和灵活性方面。硬件加速模块可以达到极限速度,并且可以通过处理器内核的完整可编程性实现极高的灵活性。通过重新编程处理器内核,执行的bio-IT算法可以轻松修改,但这些算法可以比传统CPU运行快几个数量级,因为计算密集型操作可能会卸载到硬件加速器。通信和内存组织可以针对合作处理器-加速器工作进行优化。额外的软件算法加速可以通过设计用于对由处理器内核使用的数据进行预处理或后处理的附加硬件模块来获得,例如将read与参考基因组轨迹重叠成堆积数据结构,以呈现给处理器内核。在一些处理器体系结构中,指令集可以扩展以利用连接的硬件资源;在Bio-IT SOC环境中,可以定义新的处理器指令来访问Bio-IT硬件加速功能。
如下面的表II所总结的,因此,结构化ASIC具有几个预制的优点,例如比起ASIC或FPGA。例如,各种组件可以“几乎”连接,例如以各种预定义配置连接,并且可以预制多个全局和局部时钟。因此,这意味着信号完整性和时序问题应该被固有地解决。另外,制造仅需要少量金属层。此外,与标准FPGA不同,结构化ASIC应具有更接近标准单元ASIC的容量、性能和功耗。与标准单元ASIC相比,这应该使设计过程更简单和更快速并且时间以及NRE成本的降低,并且应该大幅缩短周转时间。更进一步,不应该需要解决歪斜问题。
Figure BDA0003647401720000911
因此,结构化ASIC具有若干不同的有益性质,包括以下一项或多项:低NRE成本,对实施工程努力的较低要求,例如在ASIC之上的较低掩模工具费用,以及高性能的附加益处,低功耗,更少的制造层,更少的复杂性,在预制单元块配置中,其中所述配置可用于放置电路元件,这导致更快的生产时间。然而,结构化ASIC存在一些缺点,例如,有时缺乏足够的设计工具,哪些工具和处理可能是昂贵的并且是否需要对传统的ASIC工具做改变。此外,这些新架构仍在进行正式评估和比较分析。而且,可能会在3,4和5输入LUT之间和/或分布式RAM的大小之间进行权衡。
因此,鉴于上述情况,ASIC,FPGA和结构化ASIC都具有优点和缺点。例如,标准单元ASIC可能难以设计,开发时间长,NRE成本高。但是,ASIC也可能支持大型设计,支持复杂设计,在低功耗情况下具有高性能,因此可能导致单位成本(大批量)较低。另一方面,FPGA可能易于设计,开发时间短,NRE成本低。然而,FPGA可能具有有限的设计尺寸和/或复杂性,可能具有有限的性能和高功耗,这可能导致较高的单位成本。在许多情况下,可以设计结构化ASIC以最大化这些益处并将这些缺点最小化。例如,一般来说,对于标准单元ASIC,结构化ASIC和FPGA,给定区域内的门数可能大约为100:33:1。性能比例为100:75:15(基于时钟频率);和功率的1:3:12比率。
如上所述,在各种情况下,本公开的芯片100可以被配置为扩展卡,例如芯片包括PCIe总线并且与一个或多个存储器通信,例如被记忆包围着,如被记忆充分包围,如完全被记忆包围。在各种实施例中,芯片可以是密集的和/或快速的FPGA芯片,其在各种情况下可以转换为ASIC或sASIC。在各种情况下,芯片可以是可转换成ASIC的结构化ASIC。在某些情况下,芯片可能是ASIC。
如上所述,本文公开的模块可以在芯片的硬件中实现,例如为硬连线的,并且在这种情况下,与在软件中实现时相比,它们的运作速度更快,例如在有最小指令要被获取、读取和/或执行时。因此,考虑到上述独特的硬件实现,本公开的模块可以根据其操作参数直接起作用,例如不需要获取、读取和/或执行指令。此外,存储器需求和处理时间可能会缩短,例如在芯片内的通信是通过文件而不是通过访问存储器的情况下。当然,在某些情况下,芯片和/或卡的尺寸可以设计成包括更多的存储器,例如更多的板上存储器,以增强并行处理能力,从而获得更快的处理速度。例如,在某些实施例中,本公开的芯片可以包括嵌入式DRAM,使得芯片不必依靠外部存储器,进一步提高处理速度,例如使用Burrows-Wheeler算法,而不是散列表和散列函数,散列函数和散列函数可能在各种情况下依赖于外部的例如主机存储器。在这种情况下,整个管道的运行(例如从头到尾)可以在6分钟或更短的时间内完成。
如上所述,并且如图8所示,任何给定的模块可以定位在硬件上,或者远离其定位,例如在云上可访问的服务器上。当给定模块被定位在芯片上,例如硬连线到芯片中的情况下,其函数可以由硬件执行,然而,在需要时,模块可以远离芯片定位,此时平台可以包括必要的用于将相关数据发送到远程位置(例如可经由云访问的服务器)的工具,以便根据用户选择的期望方案来使用特定模块的功能用于进一步处理数据。因此,根据本文公开的一个或多个模块的功能,平台的一部分可以包括用于执行一个或多个任务的基于web的界面。例如,映射112、比对113和/或排序114a是可能发生在芯片上的所有模块,在不各种情况下,局部重新比对114d、重复标记114b、碱基质量评分重新校准114c和/或变异检测115中的一个或多个,可能发生在云上。
特别地,一旦基因数据已经被生成和/或处理,例如在一个或多个二级处理方案中,例如通过被映射、比对和/或排序,以产生一个或多个变异检测文件(例如为了确定来自受试基因序列数据与一个或多个参考序列的区别)。本公开的另一方面涉及对所生成的和/或经处理的基因数据执行一个或多个其他分析函数,例如进一步的处理(例如三级处理),如图8-11所示。例如,该***可以被配置用于进一步处理所生成的和/或经二级处理的数据,例如经过一个或多个三级处理管道700和122执行,例如基因组管道、表观基因组管道、宏基因组管道、联合基因分型、MuTect2管道或其他三级处理管道中的一个或多个,例如通过本文公开的装置和方法。特别地,在各种情况下,可以提供附加的处理层800,例如用于疾病诊断、治疗处理和/或疾病预防,例如包括NIPT、NICU、癌症、LDT、AgBio和其他类似疾病的诊断、预防和/或治疗,通过采用由一个或多个初级管道和/或二级管道和/或三级管道生成的数据进行。因此,本文所公开的装置和方法可以用于生成基因序列数据,然后该数据可以用于生成一个或多个变异检测文件和/或其他相关数据,其可以进一步用于其他三级处理管道,与本文公开的装置和方法一致,例如用于特定的和/或一般的疾病诊断以及疾病预防和/或疾病治疗和/或可发展式物理疗法。
如上所述,本文提出的***1可以包括生成(例如通过本文公开的芯片上的测序器技术生成)或获取基因序列数据;执行一个或多个二级处理方案,例如包括对所生成的基因序列数据进行以下一个或多个:映射、比对和排序,例如以产生一个或多个变异检测文件,以便确定来自受试基因序列数据与一个或多个参考序列的区别。本公开的另一方面可涉及对生成的和/或经过处理的基因数据执行一个或多个其他分析函数,例如用于进一步的处理(例如三级处理),该处理可以在相同芯片或者上述测序器中的芯片组上执行或与其相关联。
在第一种情况下,例如关于基因序列数据的生成、获取和/或传输,如图8所示,可以在本地或远程产生这样的数据,和/或其结果可以直接处理(例如由本地计算资源100处理),或者可以被传输到远程位置进一步处理(例如由远程计算资源300处理)。例如在测序和二级处理功能位于同一芯片组和/或同一设备内的情况下,所生成的基因序列数据可以在本地直接处理。同样地,所生成的基因序列数据可以在本地处理,也可以是间接处理,例如测序和二级处理功能分别由不同设备分开进行,该不同设备共享相同设施或位置但可以通过空间隔开,尽管可通信地连接,例如通过本地网络100。在进一步的例子中,基因序列数据可以例如通过NGS远程导出,并且所得到的数据可以通过基于云的网络50被传输到远程位置,例如从测序器地理上分离。
具体地说,如图8-11所示,在各种实施例中,可以现场提供核苷酸测序仪,例如通过芯片上的测序仪或通过NGS,其中测序仪与本地计算资源100直接或间接相关联,例如通过本地网络连接10。本地计算资源100可以包括数据生成110和/或数据获取120装置中的一个或多个,或者与其关联。这样的装置可以是被配置用于生成和/或获取数据(例如与受试者或受试者组的一个或多个基因序列有关的模拟、数字和/或电磁数据)的任何装置。
例如,这样的数据生成装置110可以是主处理器,例如测序器,例如NGS,芯片上测序器或用于生成基因序列信息的其他类似装置。此外,这样的数据采集装置120可以是被配置用于接收例如所生成的基因序列信息之类的数据的任何装置,和/或与数据生成器110和/或能够使其用于一个或多个二级处理方案,例如配置用于在本文描述的生成的和/或获取的序列数据上运行映射器、比对器、排序器和/或变异检测方案的二级处理管道设备。在各种情况下,数据生成110和/或数据采集120装置可以例如通过本地网络10(例如用于本地存储器200)一起联网,或者可以通过基于云的网络30联网在一起,例如用于传输和/或接收例如与远程位置30相关的例如远程处理300和/或存储器400的基因序列信息的基本和/或二级处理相关的数据,例如数字数据。在各种实施例中,一个或多个这些组件可以如本文所述通过混合网络可通信地耦合在一起。
本地计算资源100还可以包括编译器130和/或处理器150或者与编译器130和/处理器150相关联,例如编译器130被配置用于编译生成的和/或获取的数据,处理器150被配置用于处理生成的和/或获取的和/或编译的数据和/或控制***1及其组件,如本文所述。此外,本地计算资源100可以包括压缩器单元160,压缩器单元160被配置用于压缩可以被压缩的数据(例如生成的和/或获取的初级和/或二级处理的数据),例如在通过本地10和/或云30和/或基于混合云的50网络之前。
在特定情况下,如图8和图11所示,***1可以被配置用于对生成的和/或二级处理的数据进行进一步处理(例如经由本地100和/或远程300计算资源),例如使其经过一个或多个三级处理,例如基因组管道、表观基因组管道、宏基因组管道、联合基因分型、MuTect2管道或其他三级处理管道中的一个或多个。这样的数据然后可以被本地压缩和/或本地存储200和/或被传送以便被远程存储。
在另外的实例中,***1可以包括另一层处理模块,例如所述另一层处理模块被配置用于提供例如用于疾病诊断和/或治疗和/或预防的附加处理。例如,在各种情况下,可以提供额外的处理层,例如用于疾病诊断、治疗和/或预防,例如包括NIPT、NICU、癌症、LDT、AgBio和其他此类疾病的诊断、预防和/或治疗,采用由一个或多个本公开的初级和/或二级和/或三级管道产生的数据。
因此,本文提出的***1可用于产生和使用全局混合云网络50的。例如,云30主要用于存储,例如在远程存储位置400处。在这种情况下,数据的计算由本地计算资源150在本地执行100,并且在存储需求非常广泛的情况下,访问云30以存储由本地计算资源150生成的数据,例如通过使用远程存储资源400。因此,生成的数据通常或者在本地完全管理100,或者在云30上的非现场300完全管理。
具体而言,在生物信息学分析平台的一般实施方式中,计算150和/或存储200函数在现场本地维护,其中,存储需求超过本地存储容量;或者需要将存储的数据供其他远程用户使用,因此这些数据可以通过因特网30传输到远程存储器400的云端。在这种情况下,执行计算函数所需的计算资源150最小但存储需求变大,计算函数150可以在本地维护100,而存储函数400可以远程维护,而完全处理数据在处理函数150(例如仅用于本地处理)和存储函数400(例如远程存储400经处理的数据)之间来回传送。
例如,关于测序函数,可以举例说明。例如典型的NGS,其中计算资源150被配置用于执行遗传物质测序所需的函数以产生基因测序数据(例如read),其中该数据为现场产生100。这些read一旦生成(例如通过现场NGS生成),则可以进行传输,例如通过云网络30传输,例如用于在远程位置300处存储400,从而在需要时可以从云30中召回,例如需要用于进一步处理时(例如用于执行一个或多个二级和/或三级处理函数),其位于远离存储设施400的位置处,例如本地。在这种情况下,本地存储资源150仅用作存储高速缓存,在等待将数据传输至云30或传输来自云30的数据时(例如去往或来自远程存储设施400)将数据放置在其中。
同样地,在计算函数很广的情况下,例如需要一个或多个远程计算集群内核300来处理数据,当用于存储处理的数据200的存储需求相对较小(与处理数据所需的计算资源300相比)时,可以例如通过云30发送要处理的数据,以便由远程计算资源300处理,该远程计算资源300可以包括一个或多个内核或计算资源集群,例如一个或多个超级计算资源。在这种情况下,当数据经基于云的计算机内核300处理后,则经处理的数据可以在云网络30上传输,以便存储在本地200并且容易地供本地计算资源150使用,例如用于本地分析和/或诊断。
对于典型的二级处理函数,可以举例说明。例如,通过本地计算资源100来访问本地存储200的预处理的测序数据(例如,read),并且通过云互联网30将该数据发送到远程计算设施300以进行进一步处理(例如在二级处理函数中),从而获得经处理的结果数据,然后该处理后的结果数据可以被发送回本地设施100用于存储200。例如,本地从业者使用本地数据生成资源100(例如自动测序器)生成测序read数据,然后通过网络30将该数据发送到远程计算设施300,所述远程计算设施300然后对该数据运行一个或多个函数,例如Burrows-Wheeler变换或Needlemen-Wunsch和/或Smith-Waterman比对函数,以便生成结果数据,然后可以通过因特网30将结果数据传输到本地计算资源100,以便在一个或多个本地管理的处理方案中检查和/或本地存储200。
然而,本地计算处理100与远程计算处理300之间、以及本地存储200与远程存储400存储之间的接合之间需要无缝集成,例如在本文中提出的基于混合云50的***中。在这样的情况下,***可以被配置为使得本地100和远程300计算资源无缝地一起运行,待处理的数据可以被实时分配给本地200或远程300计算资源,而不会因传输速率和/或工作效率而受到惩罚,例如,在计算资源部署的或运行的软件和/或硬件彼此对应和/或彼此相同或彼此函数相似的情况下,例如硬件和/或软件以相同的方式配置,以便以相同的方式对生成的和/或接收的数据运行相同的算法。
例如,如图8-9所示,本地计算资源100可以被配置用于生成数据,因此可以包括数据生成装置110,例如用于初级数据生成和/或分析,以便生成FASTQ序列文件。该数据生成装置110可以是如本文所述的本地计算机,其具有处理器,该处理器可以被配置为运行一个或多个软件应用程序和/或可以被硬连线以执行一个或多个算法,例如以有线配置在生成的和/或获取的数据上执行。例如,数据生成装置110可以被配置用于生成一个或多个数据(例如,测序数据111),该数据可以是感测数据111a,例如该数据是可检测的,例如电压、离子浓度、电磁辐射等等;和/或数据生成装置110可以被配置用于生成和/或处理信号,例如模拟或数字信号数据,例如表示相关核苷酸的序列或链中的一个或多个核苷酸同一性的数据。在这种情况下,数据生成装置110(例如测序器111)可以进一步被配置用于初步处理所生成的数据,以便执行一个或多个碱基检测操作111c,例如对数据进行碱基检测以产生序列标识数据,例如,FASTQ文件。
应该注意,在这种情况下,生成的数据111可以例如通过本地数据生成和/或计算资源150(例如芯片上的测序器)在本地生成;或者它可以例如通过远程计算和/或生成资源(例如远程NGS 300)远程生成,但是可以通过云30/50传输到本地计算资源100,例如用于二级处理150和/或存储在本地存储资源200中,例如在等待进一步的本地处理150的同时。在这种情况下,在数据生成资源300远离本地处理100和/或存储200资源的情况下,配置相应的资源,远程和/或本地存储、远程和本地处理、和/或由每个资源使用的通信方案可以适合于平滑地和/或无缝地彼此集成,例如通过运行相同的、类似的和/或等同的软件和/或通过具有相同的、类似的和/或等同的硬件配置,和/或采用相同的通信和/或传输方案,其在某些情况下可能已经在制造时或稍后实现。
特别地,这些函数可以以硬连线配置来实现。例如,测序函数和二级处理函数被保持在相同的或关联的芯片或芯片组上,例如,在测序器和二级处理器在芯片上直接互连,如本文所述,或者可以通过软件来实现,该软件经过优化以允许两个远程设备彼此无缝通信。如本文所述,还可以采用用于执行所述函数的优化硬件和软件的组合实现。在各种实施例中,数据生成源(例如测序器111)以软件和/或以硬件或其组合来实现,还可以进一步被配置为包括处理器500的初始层,例如调度器、各种分析器、比较器、绘图器、释放器等,以便帮助数据生成器111(例如测序器)将生物信息转换为原始read数据,例如以FASTQ文件格式111d。
同样地,关于可由本地100和/或远程300计算资源部署的其他函数的执行也是如此。例如,本地计算资源100可以包括硬件和/或软件,该硬件和/或软件被配置用于在远程和/或本地生成的数据(例如基因序列数据)上执行二级层级700处理函数112-115中的一个或多个,处理过程及其结果可以彼此无缝地共享和/或存储。特别地,本地计算函数100和/或远程计算函数300可以被配置用于生成和/或接收初级数据,例如基因序列数据,例如以FASTQ或其他类似的文件格式,并对该生成的和/或获取的数据运行一个或多个二级处理方案600,该方案可以以软件、硬件或其组合格式来实现。例如,数据生成和/或处理资源110可以被配置用于对所获取或生成的数据执行映射操作112、对齐操作113或其他相关函数114中的一个或多个。
更具体地,数据生成资源110可以包括如本文所述的映射引擎112,或者可以包括用于对基因序列数据运行映射算法的编程,例如用于执行Burrows-Wheeler变换和/或其他用于构建散列表和/或在所述数据上运行散列函数112a的算法,例如用于散列种子映射,以便生成映射的序列数据。如本文所述,数据生成资源110还可以包括如本文所述的比对引擎113,或者可以包括用于对基因序列数据运行比对算法的编程,例如映射的测序数据,例如用于执行空位和/或无空位Smith-Waterman比对,和/或Needleman-Wunsch或其他类似的评分算法113a,以便生成比对的测序数据。数据生成资源110还可以被配置为包括一个或多个其他模块114,其适于对基因序列数据执行一个或多个其他处理函数,例如映射的和/或比对的测序数据,因此可以包括适当的配置引擎114或包括用于运行一个或多个其他处理函数的编程,例如排序114a,重复数据删除114b,重新校准114c,局部重新比对114d,重复标记114f,碱基质量评分重新校准114g函数和/或压缩函数(例如产生BAM、简化BAM和/或CRAM压缩和/或解压缩文件)114e,根据本文所描述的方法,该处理函数可以被配置为***1的一个或多个管道。类似地,***1可以被配置成包括适于处理数据的模块115,例如,经测序的、经映射的、经比对的和/或经排序的数据,以产生变异检测文件116,例如在基于硬件和/或软件的处理中。更具体地,***1可以包括变异检测模块115,用于运行一个或多个变异检测函数,例如隐马尔可夫模型(HMM)和/或GATK函数115a,例如以有线配置和/或经由一个或多个软件应用程序,例如本地或远程地,和/或用于其的转换器115b。
在特定实施例中,如图8和图10,***1可以包括本地计算函数100,其可以被配置为使用计算机处理资源150来对***生成器110生成的或者由***获取装置120获取的数据执行一个或多个其他计算机处理函数(如下所述),例如通过例如由第三方121例如通过云30或混合云网络50向其传送。例如,第三方分析器121可以部署远程计算资源300以生成需要进一步处理的相关数据,例如基因序列数据等,该数据可以通过网络30/50传送给***1以便进一步处理。例如,在远程计算资源300是NGS的情况下,这可能是有用的,其被配置用于获取原始生物数据并将其转换为其数字表示,例如以包含基因序列数据read的一个或多个FASTQ文件的形式,需要进一步处理,例如以确定所生成的个体的序列与一个或多个参考序列的区别,如本文所述,和/或期望对其结果进行进一步处理,例如三级处理。
在这种情况下,***1可以被适配为允许一方或多方(例如初级和/或第二和/或第三方用户)访问关联的本地处理资源100,和/或适当配置的远程处理资源300与其相关联,以便允许用户对生成的和/或获取的数据执行一个或多个定量和/或定性处理函数152。例如,在一种配置中,除了初级600和/或二级600处理管道以外,***1还可以包括第三层处理模块700,所述处理模块可以被配置用于对生成的和/或获取的初级和/或二级处理的数据执行一个或多个处理函数。
具体地,在一个实施例中,***1可以被配置用于生成和/或接收经处理的基因序列数据111,其已被远程或本地映射112、比对113、排序114a和/或进一步处理114,以便生成变异检测文件116,该变异检测文件然后可以例如在***1内用于进一步处理,例如响应第二和/或第三方分析请求121。更具体地,***1可以被配置用于接收来自第三方121的处理请求,并且对所生成的和/或获取的数据执行所请求的这样的三级处理700。具体而言,***1可以被配置用于产生和/或获取基因序列数据111,可以被配置用于获取该基因序列数据和映射112、比对113和/或排序114a以产生一个或多个变异检测文件(VCF)116。另外,***1可以被配置为对数据执行三级处理函数700,例如关于一个或多个VCF。***1可以被配置为对生成的和/或获取的数据执行任何形式的三级处理700,例如通过使其用于一个或多个管道处理函数700以生成基因组数据122a、表观基因组数据122b、宏基因组数据122c等,包括联合基因分型122d、GATK 122e和/或MuTect2 122f分析管道。此外,***1可以被配置用于对生成的和/或处理的数据执行额外的处理层,例如包括非侵入性产前测试(NIPT)123a、N/P ICU 123b、癌症相关诊断和/或治疗模式123c、各种实验室开发的测试(LDT)123d、农业生物(AgBio)应用123e或其他与健康护理相关的处理函数中的一个或多个。
因此,在各种实施例中,在主用户可以直接访问和/或配置***1及其各种组件的情况下,例如通过直接访问(例如通过本地计算资源100),如本文所述,***1也可以适用于由第二方访问,例如通过本地网络或内部网连接10连接到***1,以便在本地环境内配置和运行***1。另外,在某些实施例中,如图10所示,该***可适用于由第三方121访问和/或配置,例如通过相关联的混合云网络50,其通过应用程序接口(API)将第三方121连接至***1,可通过一个或多个图形用户界面(GUI)组件访问。这样的GUI可以被配置为允许第三方用户访问***1,并且使用该API来配置***的各种组件、模块、相关联的管道以及其他相关联的数据生成和/或处理函数,以运行只对第三方有用和/或必需的***组件和/或被请求或希望由此运行的***组件。
相应地,在各种情况下,本文中呈现的***1可适于由***的主用户、第二用户或第三用户配置。在这样的情况下,***1可适于允许用户配置***1并且布置其组件,以部署一个、全部或选择的分析***资源(例如152),从而在生成、获取或传输到***的数据上运行(例如由主用户、第二方用户或第三方用户),使得***1仅运行对于运行用户请求的分析所必需或有用的***部分,以获得其期望的结果。例如,对于这些和其他目的,API可以包括在***1内,其中API被配置为包括图形用户界面(GUI)或与图形用户界面(GUI)可操作地关联,该图形用户界面(GUI)包括可操作的菜单和/或相关的***函数调用列表,用户可以根据需要选择和/或配置和操作***及其组件。
在这种情况下,GUI菜单和/或***函数调用可以指导第一操作层600中的一个或多个用户可选操作,包括:测序111、映射112、比对113、排序114a、变异检测115,和/或其它根据本文所述的相关函数114,例如关于本文描述的初级处理函数和/或二级处理函数。此外,在需要时,GUI菜单和/或***函数调用可指导第二操作层700中的一个或多个的操作,包括:基因组管道122a、表观基因组管道122b、宏基因组管道122c、联合基因分型管道122d、GATK 122e和/或MuTect2 122f分析管道。此外,在需要时,GUI菜单和***函数调用可指导第三层操作800中的一个或多个用户可选操作,包括:非侵入性产前测试(NIPT)123a、N/PICU 123b、癌症相关诊断和/或治疗模式123c、各种实验室开发的测试(LDT)123d、农业生物(AgBio)应用程序123e或其它与健康护理相关的处理函数。
因此,菜单和***函数调用可以包括一个或多个初级、二级和/或三级处理函数,以便配置***和/或其组成部分,例如由用户选择和配置以执行一个或多个数据分析管道。在这样的实例中,本地计算资源100可以被配置为对应于远程计算资源300和/或镜像远程计算资源300,和/或同样地,本地存储资源200可以被配置为对应远程存储资源400和/或镜像远程存储资源400,因此,***的各种组件可以运行和/或由此生成的数据可以本地或远程存储,按照使用***1选择的无缝分布的方式。另外,在特定实施例中,***1可供第三方访问,用于对所生成和/或处理的数据运行专有分析方案121a,例如通过运行人工智能界面以找到它们之间的相关性。
***1可以被配置为对生成的和/或获取的数据执行任何形式的三级处理。因此,在各种实施例中,主用户、第二用户或第三用户可以可以直接(例如通过直接访问计算资源100)或间接地(例如通过本地网络连接10或通过将该方连接到***1的相关联的混合云网络50)访问和/或配置***1及其各种组件的任何级别,例如通过具有适当许可的适当配置的API。在这种情况下,***组件可以呈现为菜单,例如GUI可选菜单,其中用户可以从所有处理和存储选项中进行选择,选择期望在用户提供的数据上运行的处理和存储选项。此外,在各种情况下,用户可以上传他们自己的***方案以便由***采用和运行,并按照用户设计和选择的方式处理各种数据。在这种情况下,GUI和相关API允许用户访问***1并使用API添加并配置***的各种组件、模块、相关管道以及其他相关联的数据生成和/或处理函数,以运行只对该方有用和/或必需的***组件和/或被请求或希望由此运行的***组件。
以上关于图9和图9的描述针对数据生成110,例如本地数据生成100,采用本地计算资源150;如上所述,在图9中,一个或多个上述划分的模块及其相应的函数和/或相关联的资源可以被配置为远程执行,例如由远程计算资源300执行,并且被发送到***1,例如通过基于云的互联网连接30/50的无缝传输方案,例如经由适当配置的数据获取装置120。
因此,在这种情况下,本地计算资源100可以包括数据获取装置120,例如被配置用于发送和/或接收这样的获取数据和/或关联信息。例如,***1可以包括数据获取装置120,该数据获取装置120被配置为允许数据的继续处理和/或存储为无缝且稳定的,例如基于云或基于混合网络30/50,其中处理函数分布在本地100和/或远程300,并且类似地,这样的处理的一个或多个结果可以本地存储200和/或远程存储400,使得***无缝地分配给本地或远程资源,无论其物理位置在哪里,给定作业将被发送用于处理和/或存储。这样的分布式处理、传输和获取可以包括以下各项中的一项或多项:测序111、映射112、比对113、排序114a、重复标记114c、重复数据删除、重新校准114d、局部重新比对114e、碱基质量评分重新校准114f函数和/或压缩函数114g,以及如本文所述的变异检测函数116。在本地存储200或远程400的情况下,处理的数据无论处于何种状态,都可以被本地100或远程处理300资源使用,例如用于在重新传输和/或重新传输之前的进一步处理。-存储。在本地存储200或远程存储400的情况下,处理的数据可以处于本地或远程处理300资源中,例如用于重新传输和/或重新存储之前的进一步处理。
具体地,***1可以被配置用于产生和/或获取基因序列数据111,可以被配置用于获取基因序列数据111并在本地处理150,或者通过适当配置的云30或混合云50网络传输数据,例如传输至远程处理设备用于远程处理300。此外,经过处理后,***1可以被配置用于远程存储处理的数据400或者将其传送回本地存储器200。因此,***1可以被配置用于本地或远程生成和/或处理数据,例如该生成和/或处理步骤来自初级和/或二级处理函数600的第一层,该层可以包括以下一个或多个:测序111、映射112、比对113和/或排序114a,以便产生一个或多个变异检测文件(VCF)116。同样,***1可以被配置用于本地或远程生成和/或处理数据,例如该生成和/或处理步骤来自三级处理函数700的第二层,该层可以包括以下一个或多个:生成和/或获取数据,按照基因组管道122a、表观基因组管道122b、宏基因组管道122c、联合基因分型管道122d、GATK 122e和/或MuTect2 122f分析管道。另外,***1可以被配置用于本地或远程生成和/或处理数据,例如该生成和/或处理步骤来自三级处理函数的第三层,如图11所示,该层可以包括:非侵入性产前测试(NIPT)123a、N/P ICU123b、癌症相关诊断和/或治疗模式123c、各种实验室开发的测试(LDT)123d、农业生物(AgBio)应用123e或其他与健康护理相关的处理函数。
在具体实施例中,如图8、9和10所示,***1还可以被配置为允许一方或多方访问***,并且将信息传递到关联的本地处理100和/或远程300处理资源或从关联的本地处理100和/或远程处理资源300传输信息,以及在本地200或远程400存储信息,以允许用户选择被处理的信息和/或存储在***1的位置。在这种情况下,用户不仅可以确定对生成的和/或获取的数据执行什么初级、二级和/或三级处理函数,还可以部署这些资源,和/或选择存储这些处理结果的位置。例如,在一种配置中,用户可以选择本地或远程产生数据,或其组合,以及选择是否进行二级处理;如果是,则确定进行二级处理的模块,和/或运行该过程的资源,并且还可以确定生成的或获取的数据是否进一步进行三级处理;如果是,则确定它接受的第三处理700模块和/或层,和/或运行这些进程的资源,并且同样地,这些进程的结果被存储用于每个操作步骤。
具体地,在一个实施例中,用户可以配置***1,使得基因序列数据111远程地生成(例如通过NGS),但是数据的二级处理600在本地发生100。在这样的实例中,用户可以确定本地的二级处理函数100,例如通过从可用处理选项的菜单中选择处理函数,例如映射112、比对113、排序111和/或产生VCF 116。然后,用户可以选择本地处理的数据是否经过三级处理,如果是,则可选择被激活的模块以进一步处理该数据,以及这种三级处理是本地发生的还是远程发生的。同样,用户可以选择各种在任何给定的步骤或操作时间内,本地200或远程400存储任何生成的和/或获取的数据的各种三级处理选项。
更具体地,主用户可以将***配置为接收来自第三方的处理请求,其中第三方可以配置该***,以便对所生成的和/或获得的数据执行所请求的初级、二级和/或三级处理。具体而言,用户或第二方或第三方可以将***1配置为用于本地地100或远程地200产生和/或获取基因序列数据,可以配置***1以本地或远程地获取该基因序列数据以及对其进行映射、比对和/或排序,以便产生一个或多个变异检测文件(VCF),并且另外可以将***配置为对数据执行三级处理函数,例如关于一个或多个VCF,本地或远程地。更具体地,用户或其他方可以配置***1以对所生成的和/或所获取的数据执行任何形式的三级处理,并且该处理在***中发生。因此,在各种实施例中,第一方、第二方和/或第三方用户可以直接访问和/或配置***1及其各种组件,例如通过本地网络连接10直接访问本地计算函数100,或通过连接第三方121与***1的相关的混合云网络50,例如通过应用程序接口(API),可通过一个或多个图形用户界面(GUI)组件访问。在这种情况下,第三方用户可以访问***1并使用API来配置***的各种组件、模块、关联的管道以及其他关联的数据生成和/或处理函数,以运行只对第三方有用和/或必需的***组件和/或被请求或希望由此运行的***组件,并进一步分配哪些计算资源将提供所请求的处理,以及结果数据将被存储在何处。
相应地,在各种情况下,***1可以由***的主用户、第二用户或者第三用户配置,其可以配置***1以布置其组件,一个、全部或选择的分析***资源,所述分析***资源在用户直接生成的、由***1生成、传送至***1的数据上运行,例如通过与其相关联的网络,例如通过数据获取装置120。因此,***1是可配置的,以运行只对请求方有用和/或必需的***部分。例如,为了这些目的和其他目的,可以包括API,其中API被配置为包括GUI可操作菜单和/或***函数调用的相关列表,用户可以从中选择***函数调用以根据需要配置和操作***。另外,在特定实施例中,***1可以被第三方访问,例如政府监管机构,例如联邦药品管理局(FDA)70b,或者允许第三方整理、编译和/或访问由***1导出或获得和/或汇编的遗传信息的数据库,以便形成电子病历(EMR)数据库70a和/或允许政府对***的访问和/或监督,例如药物开发评估。***1还可以被设置为对数据70c进行聚集、编译和/或注释和/或允许其他高级用户访问。
因此,在各种实施例中,如图13,提供混合云50,其中混合云被配置用于将本地计算100和/或存储资源200与远程计算300和/或存储400资源连接,例如本地和远程资源在空间上、地理上彼此分离。在这样的情况下,本地资源和远端资源可以被配置为彼此通信,以便在两者之间无缝地共享例如数字数据的信息。特别地,本地资源可以被配置为对数据执行一种或多种类型的处理,例如在混合网络50上传输之前,并且远程资源可以被配置为对数据执行一种或多种类型的进一步处理。
例如,在一个特定配置中,可以配置***1,从而配置生成和/或分析函数152为由本地计算资源在本地执行100,例如用于执行初级和/或二级处理函数,从而生成和/或处理基因序列数据,如本文所述。另外,在各种实施例中,本地资源可以被配置用于对数据执行一个或多个三级处理函数,例如基因组、外显子组和/或表观基因组分析、或者癌症、微生物组和/或其他DNA/RNA处理分析中的一种或多种。此外,在意图将这种处理的数据传输到例如远程计算300和/或存储400资源的情况下,可以例如通过适当配置的变换器151来变换数据,该变换器151可以被配置用于索引、转换、压缩和/或加密数据,例如在通过混合网络50传输之前。
在特定实例中,例如将所生成和处理的数据传输到远程计算资源300以进行进一步处理,这样的处理可以具有全局性质并且可以包括:从多个本地计算资源100接收数据;整理所述多种数据;注释数据;比较数据,比如解释数据,确定其趋势;分析各种生物标记;以及帮助开发诊断、治疗和/或预防。因此,在各种情况下,远程计算资源300可以被配置为数据处理集线器,例如在等待被转换和/或传送的同时可以传送、处理和/或存储来自各种源的数据,例如通过被本地计算资源100访问。更具体地,远程处理集线器300可以被配置用于接收来自多个资源100的数据,对其进行处理并且将经处理的数据分发回各本地资源100,以允许研究者和/或资源100之间的协作。这样的协作可以包括各种数据共享方案,并且可以另外包括准备待传送的数据,例如通过允许***1的用户在各种安全方案中进行选择以及/或隐私设置,以控制数据如何准备传输。
在一个特定实例中,如图11所示,提供本地计算100和/或存储200资源,例如在用户的位置现场。如本文所述,计算资源100和/或存储200资源可以耦合到数据生成资源121(例如NGS或如本文所述的芯片上的测序器),例如通过直接或者内部网连接10,其中测序器121配置用于生成基因序列数据,例如FASTQ文件。例如,测序器121可以是与计算资源100和/或存储单元200相同的装置的一部分和/或容纳在该装置中,以便具有与其直接可通信和/或可操作的连接,或者测序器121并且计算资源100和/或存储资源200可以是彼此分开的设备的一部分,但是容纳在相同的设施中,并且因此通过有线连接或内联网10连接。在一些情况下,测序器121可以容纳在与计算机100和/或存储器200资源不同的设施中,并且因此可以通过互联网30或混合云50连接。
在这样的情况下,基因序列数据可以在被变换之前,使用适当配置的变换器151对其进行处理100并本地存储200,或者所生成的序列数据可以被直接传送到一个或多个变换器151和/或分析器152中,例如通过适当配置的本地连接10、内联网30或混合云连接50,如上所述,例如在本地处理之前。特别地,如同数据生成资源121一样,变换器151和/或分析器152可以是与计算资源100和/或存储单元200相同的设备的一部分和/或容纳在该设备中,以便具有与其直接可通信和/或可操作的连接,或者变换器151和/或分析器152以及计算资源100和/或存储资源200可以是彼此分开的设备的一部分,但是容纳在相同的设施中,并且因此通过有线连接或内联网10连接。在一些情况下,变换器151和/或分析器152可以容纳在与计算机100和/或存储器200资源不同的设施中,并且因此可以通过互联网30或混合云50连接。
在这种情况下,如图13所示,变换器151可以被配置为例如通过适当配置的计算资源100和/或分析器152,在分析前或分析后准备待传输的数据。例如,分析器152可以对该数据执行二级和/或三级处理函数,如本文所述,例如用于分析关于确定其基因组和/或外显子特征152a,其表观基因组特征152b,各种感兴趣的DNA和/或RNA标记物和/或癌症指标152c及其与一种或多种微生物组152d的关系的序列数据,以及如本文所述的一个或多个其他二级和/或三级过程。如上所述,例如通过适当配置的变换器151来变换所生成的和/或处理的数据,例如在数据通过***1从其一个组件传输到另一组件之前,例如通过直接的本地30连接、互联网30连接或混合云50连接。这样的变换可以包括一个或多个转换151d,例如数据从一种形式转换为另一种形式;理解151c,包括编码、解码和/或从不可理解的形式获取数据并将其转化为可理解的形式,或从一个可理解的形式转化为另一个;索引151b,例如包括编译和/或整理来自一个或多个资源的所生成的数据,并且例如经由生成的索引使其可定位和/或可搜索;和/或加密151a,例如在通过互联网30和/或混合云50传输之前,创建可锁定和解锁的、密码保护的数据集。
因此,在这些和/或其他实例中,混合云50可以被配置为允许在整个***的组件中无缝且受保护地传输数据,例如混合云50适合于允许***的各种用户配置***组成部分和/或***本身以满足用户的研究、诊断、治疗和/或预防发现和/或开发需求。特别地,混合云50和/或***1的各种组件可以与兼容的和/或对应的API接口可操作地连接,所述API接口适用于允许用户远程配置***1的各种组件,从而可以以期望的方式部署期望的资源,并且进一步在本地,远程或者其组合,例如基于***的需求和正在执行的分析的细节,并且能够一直在安全的,可加密的环境进行通信。混合云***的另一个示例性实施例在图12中示出。
例如,从图10-12可见,并且更具体地参考图15,***1可以是一个多层次的和/或复用的生物分析处理平台,其包括处理单元层,每个处理单元具有一个或多个处理管道,所述处理管道可以***的和/或同时和/或按顺序的方式布置,以处理基因信息,从初级处理阶段400/500(以生成基因序列数据,例如在一个或多个FASTQ文件中),到二级处理阶段600(以产生一个或多个变异检测文件),并进一步取一个或多个变异检测文件或其他相关的处理过的数据,执行一个或多个诊断和/或预防和/或治疗程序,例如响应于第三方请求121和/或响应于第三方121提交的数据。这样的进一步处理可以包括各种管道方案700,例如被配置为对一个或多个受试对象的基因变异数据运行分析,其中包括基因组、表观基因组、宏基因组和/或基因分型分析,例如在一个层中,和/或各种疾病诊断和/或研究方案800,其可包括一个或多个NIPT、NICU、癌症、LDT、生物、AgBio应用等。特别地,***1可以进一步适用于接收和/或发送与本文的程序和处理有关的各种数据900,例如涉及电子医疗记录(EMR)数据、联邦药物管理局测试和/或结构化数据、与注释有关的数据等等。这样的数据可能是有用的,以便允许用户使用和/或允许访问所产生的医疗、诊断、治疗和/或预防信息,通过使用***1和/或由此可访问。
因此,这些函数中的一个或多个(例如全部)可以在本地执行,例如在现场10上,在云30上执行,或者通过混合云50的受控访问执行。在这种情况下,创建开发者环境,允许用户控制***的函数以满足他或她的个人需求和/或允许他人访问寻求相同或类似结果。因此,***的各种组件、程序、处理、工具、层和层次结构可以是可配置的,例如通过GUI界面来配置,该界面允许用户根据需求和方案选择运行哪些组件,以及对哪些数据、在哪个时间、按照哪个顺序运行,以便生成相关数据和数据之间的连接,所述数据可以在本地或远程地在整个***中安全地传送。如上所述,无论位置和/或连接方式如何,这些组件都可以无缝地通信,例如通过配置为以相同或相似的方式运行,例如通过采用分散在整个***中的相应API接口,其允许各种用户配置各种组件以类似方式运行各种过程。
例如,可以在关于由***1的每个特定组件运行的进程的头文件中定义API,其中头文件描述函数并确定如何调用函数,例如传递的参数、接收到的输入和传输的输出,以及发生这种情况的方式、进入的内容和方式、出去的内容和方式,以及返回的内容和方式。例如,在各种实施例中,一个或多个组件和/或其元件可形成***的一个或多个层的一个或多个管道,所述一个或多个组件和/或其元件可以是可配置的,例如通过由用户和/或一个或多个第二和/或第三方应用程序输入的指令。这些指令可以经由相应的API传送给***,所述API与***的各个驱动器中的一个或多个进行通信,指示驱动器激活***的哪些部分,例如哪些模块和/或其哪些处理,在什么时间、以什么顺序,在给定预选参数配置时,所述预选参数配置可以由用户可选界面(例如,GUI)来确定。
如上所述,***1的一个或多个DMA驱动器可以被配置为以相应的方式运行,例如在每个组件和整个***1的内核级别运行。在这种情况下,所提供的内核中的一个或多个可以具有其非常低级的基本API,其提供对***1的硬件和各种组件的函数的访问,从而访问适用的寄存器和模块以便配置并指导它们在***1上运行的处理过程和方式。特别地,在该层之上,可以构建虚拟服务函数层以便形成用于多种函数的构建块,将文件发送到内核并取回结果,编码,加密和/或传输相关数据,并进一步在其上执行更高级别的函数。在该层之上,可以构建使用服务函数的附加层,所述服务函数可以是用户与之对接的API层级,其可以主要用于整个***1或其组成部分,下载文件和上传结果,其中所述文件和/或结果可以在整个***中本地或全局传输。
这样的配置可以包括与寄存器通信并且执行函数调用。例如,如上所述,执行步骤所必需和/或有用的一个或多个函数调用,例如顺序地执行步骤以进行映射和/或比对和/或排序和/或变异检测,或其他如本文所述的二级和/或三级函数,可以根据硬件操作和/或相关算法来实现,以便生成必要的处理过程并执行所需的步骤。
具体而言,在某些实施例中,因为这些操作中的一个或多个可以基于一个或多个结构,所以可能需要构建实现这些操作所需的各种结构。因此需要一个函数调用,其用于执行这个函数,该函数调用可以构建用于执行操作必要的结构,并且调用将接受存储结构参数文件的文件名,然后将生成一个或多个包含和/或配置必要结构的数据文件。另一个函数调用可以是加载通过相应算法生成的结构,并将结构向下传递到芯片和/或***1上的存储器,和/或将其放置在硬件期望的正确位置。当然,需要将各种数据下载到芯片上和/或以其他方式传送到***生成器,以及执行***1的各种其他选择的函数,配置管理器可以执行这些函数,例如通过加载需要在那里的所有东西,以便芯片和/或整个***的平台的层的管道模块执行其函数,进入存储器中,所述存储器在芯片和/或***上,或附接在芯片和/或***上,或与芯片和/或***相关联。
另外,如图16所示,API可以被配置为允许***1的一个或多个芯片与测序器121、计算资源100/300、变换器151、分析器152、解释器310、协作器320或其他***组件(当包括时)的电路板连接,以便直接从测序器或其他处理组件接收FASTQ和/或其它生成的和/或经处理的基因序列文件,例如数据一旦已经生成和/或经过处理就立即将该信息传送给配置管理器,再将该信息引导至硬件和/或软件中的适当存储体,该硬件和/或软件使该信息对硬件、软件和/或整个***的相关模块可用,以便它们可以对该信息执行其指定的函数从而相对于参考基因组对样本DNA/RNA进行碱基检测、映射、比对、排序,和/或在其上运行相关的二级和/或三级处理操作。
因此,在各种实施例中,可以包括客户端级接口(CLI),其中CLI可以允许用户直接调用一个或多个这些函数。在各种实施例中,CLI可以是软件应用程序(例如具有GUI),其适于配置***的硬件和/或各种其他软件应用程序的可访问性和/或使用。因此,CLI可以是接受指令(例如参数)的程序,并且仅通过调用应用程序就可以实现函数。如上所述,CLI可以基于命令行或基于GUI(图形用户界面)。基于行的命令发生在GUI下的一级,其中GUI包括一个基于窗口的文件管理器,点击函数框描述将使用哪些模块、哪些管道、哪些层、哪些平台及其使用的参数。例如,在操作中,如果指示,CLI将定位参考,确定是否需要生成散列表和/或索引,或者如果已经生成了它存储的位置定位,并且指导生成的散列表和/或索引的上传等。这些类型的指令可以在用户可以选择芯片和/或***1执行的GUI处显示为用户选项。
此外,可以包括文库,其中文库可以包括预先存在的、可编辑的配置文件,例如针对典型用户选择的硬件和/或相关软件的功能的文件,例如关于部分或全基因组和/或蛋白质分析,例如用于各种分析,例如个人病史和血统分析,或疾病诊断,或药物发现,治疗,和/或一种或多种其他分析等。这类参数可以被预先设定,例如用于执行上述分析,并且可以存储在文库中。例如,如果使用本文描述的平台,例如用于NIPT、NICU、癌症、LDT、AgBio以及集体层面上的相关研究,则预设参数可以不同于仅针对研究基因组和/或研究族谱的情况,例如个人水平。例如参见图11。
更具体地,对于个体的特定诊断,准确性可能是重要因素,因此可以设置***的参数以确保提高准确性,尽管可能会降低速度。但是,对于其他基因组学应用而言,速度可能是关键的决定因素,因此***的参数可能会设置为使速度最大化,但这可能会牺牲一些准确性。相应地,在各种实施例中,用于执行不同任务的经常使用的参数设置可以预先设置到文库中以便于使用。这些参数设置还可以包括运行***1所需的软件应用程序和/或硬件配置。例如,文库可能包含执行API的代码,并且还可能包含示例文件、脚本以及运行***1所需的任何其他辅助信息。因此,文库可以被配置为编译用于运行API以及各种可执行文件的软件。
另外,如图12-14所示,可以配置***使得可以远程地执行一个或多个***组件,例如***组件适于对数据运行一个或多个比较函数,例如解释函数310和/或协作函数320。例如,对数据采用解释方案,该解释方案312可以被配置为分析和得出关于数据的结论和/或确定与其有关的各种关系,也可以执行一个或多个其他分析方案并且其包括注释数据311,对数据执行诊断313,和/或分析数据,以确定一个或多个生物标记314是否存在。另外,在采用协作方案的情况下,***1可以被配置用于提供电子论坛(供数据共享321),该数据共享方案可以包括用户可选的安全性324和/或隐私322设置,以允许数据加密和/或密码保护,使得数据的标识和来源可以对***1的用户隐藏。在特定情况下,***1可以被配置为允许第三方分析器121对数据运行虚拟模拟。此外,解释的数据和/或经过一个或多个协作分析得到的数据一旦生成,则可以远程存储400或本地存储200,以供远程300或本地100计算资源使用,例如用于进一步处理和/或分析。
因此,鉴于本文的公开内容,在一个方面中,提供了用于执行基因组序列分析操作中的一个或多个操作的装置。在某些情况下,该设备可以是一种“工作台”计算解决方案,其具有与PCIe卡相关联的芯片组,该PCIe卡本身可以被***到计算设备中从而与一个或多个内部CPU、GPU和/或相关存储器相关联。特别地,计算设备、处理单元、相关存储器和/或相关PCIe卡,其具有本文公开的一个或多个FPGA/ASIC芯片组,可以彼此通信并且设置在外壳中,例如以本领域中典型的箱体组(box set)形式,可以被配置用于工作台使用和/或在服务器机架内提供和/或可用。在其他实施例中,芯片组和/或相关的互连扩展接口可以在NGS测序设备内相关联,以在其中形成一个单元。
然而,在各种情况下,本文公开提供一个或多个集成电路,所述集成电路被配置为经由基于云的接口来访问,例如见图12-15。在一些情况下,箱体组可以被配置为可远程访问,例如箱体组配置可移植到云端。然而,在其他情况下,本文公开的一个或多个集成电路可以是服务器机架的一部分,例如服务器可访问的***被特别配置为例如经由云远程访问。
例如,在一个实施例中,一个或多个(例如多种)服务器具有一个或多个CPU和/或GPU内核及相关存储器,连同本文公开的一个或多个FPGA/ASIC。特别地,在一个实施方式中,提供可远程访问的18-24CPU内核箱体组/服务器(具有SSD,128×8RAM),以及一个或多个BioIT FPGA/ASIC***。在这种情况下,一个或多个FPGA可在基因组学分析管道的一个或多个不同步骤之间重新配置,例如部分重新配置。在其他情况下,服务器***可以包括多达约36个CPU/GPU内核以及约972GB的RAM,其可以与约8个FPGA相关联,为可配置的,如本文所述。
更具体地,所提供的FPGA可以被配置为专用于在BioIT管道中执行一个或多个计算密集型操作,例如其中提供一个FPGA专用于执行映射操作,并且提供另一FPGA用于执行比对操作,但是在一些情况下,可以提供单个FPGA其在执行映射和比对操作之间可以至少部分地重新配置。管道中其他可以由专用FPGA执行的操作可以包括:执行HMM操作、局部重新比对,例如Smith-Waterman操作,和/或各种其他变异检测操作。类似地,各种管道操作可以被配置为由***的一个或多个相关联的CPU/GPU执行。这样的操作可以是管道中的一个或多个计算量较小的操作,例如用于执行排序、重复删除以及其他变异检测操作。因此,该***可以被配置为执行CPU和硬件操作的组合,即部分操作由CPU执行,部分操作由硬件执行,例如由***的FPGA/ASIC执行。
因此,在***的各种实施方式中,可以提供各种CPU和硬连线集成电路,用于执行本文提供的基因组管道分析的专用函数。例如,可以提供各种FPGA用于执行基因组分析专用操作,例如用于执行映射的FPGA,用于执行比对的另一FPGA,用于执行局部重新比对和/或其他Smith-Waterman操作的另一FPGA,用于执行HMM操作的另一FPGA,等等。类似地,可以提供各种CPU/GPU实例来执行基因组分析的专用操作,例如用于执行排序、重复数据删除、压缩、各种变异检测操作。在这种情况下,可以提供相关的一个或多个存储器,例如在管道的各种计算步骤之间,用于在整个***计算、编译和处理时接收结果数据,例如在各种CPU和/或FPGA之间。此外,需要注意的是,各种CPU和/或FPGA的大小可以根据***的计算需求而变化,并且可以从小到中到大到很大,并且CPU/GPU和FPGA/ASIC的数量也同样会变化。
因此,该***可以进一步包括工作流程管理器,该工作流程管理器被配置用于调度和引导数据在***中从一个实例到另一个实例移动,从一个存储器到另一个存储器。在一些情况下,存储器可以是专用存储器,在其他情况下,存储器可以被配置为灵活的并且能够从一个实例切换到另一个实例,例如弹性块存储器。在其他情况下,存储器可以是非特定的并且能够可通信地耦合到多个实例,例如用于弹性文件存储。
另外,工作流程管理器可以是专用的实例,例如专用的和/或配置用于确定哪些作业需要被执行以及何时和哪些资源将被用于执行这些作业的CPU/GPU内核,以及对工作进行排队并将他们从一资源引导到另一资源。工作流程管理器可以包括或可以被配置为负载估计器和/或形成弹性控制节点,该弹性控制节点是可以由处理器运行的专用实例,例如,C4 CPU内核,或者可能无需多内核运行。在各种情况下,工作流程管理器可以具有与其进行连接的数据库,该数据库用于管理需要处理、正在处理或已经处理的所有作业。因此,该管理器可以被配置用于检测和管理数据在整个***中的流动方式,确定如何分配***资源以及何时使更多资源联机。
如上所述,在某些情况下,可以提供工作台解决方案,其中该***包括多个X CPU内核服务器,该X CPU内核服务器馈送到尺寸为Z的FPGA中,其中X,Y和Z为数字,其取决于***的处理需求而变化,但应该对其选择和/或配置进行优化。例如,典型的***配置没有被优化用于执行本文描述的***的BioIT操作。具体而言,某些***配置尚未被优化,以最大化从各种CPU/GPU实例到***的各种集成电路(例如FPGA)的数据流。更具体地说,可以***架构进行配置,使CPU/FPGA硬件以最优效率的方式运行,以便在所有运行时间保持两个实例平台繁忙。
因此,尽管具有大的FPGA能力通常是好的,但是如果没有足够的需要被处理的数据馈送到***中,那么具有巨大的处理数据的能力也可能是不高效的。例如,在各种情况下,4个CPU内核可以被配置为将数据馈送到大中型(例如2.5X)FPGA中。但是,如果CPU没有产生足够的工作来保持FPGA繁忙和/或充分利用,那么配置不太理想。这种配置中,CPU没有产生足够的工作来保持可用的FPGA繁忙。因此,本文提供了一种体系结构和实现该体系结构的方式,在***运行中,CPU/FPGA软件/硬件可有效运行,以确保当前CPU优化地馈送可用的FPGA,在所有运行时间内保持两个实例平台的繁忙。随后,允许从云访问该***可确保将多个数据提供给***,以便由工作流程管理器排队并引导到能够以最优效率接收和处理数据的特定CPU/FPGA资源,例如CPU执行计算较不密集的数据,FPGA处理计算密集型任务,存储器提供在处理的各个步骤之间和/或各种不同类型的实例和实例之间存储数据,从而避免实例延迟的时间。具体而言,在映射和比对期间,由于计算的密集性,很少使用CPU,因此这些任务由硬件执行。类似地,在变异检测期间,任务可以以在其任务中的CPU/FPGA实例(例如HMM和Smith-Waterman操作可由硬件执行)之间大致公平地分配,以及各种其他操作可以通过在一个或多个CPU/GPU实例上运行的软件来执行。
因此,本文阐述的体系结构参数不一定限于单组(one-set)体系结构,***具有更多灵活性,并且依赖于工作流管理器来确定哪些实例是活动的、何时、如何以及持续多久,并指导哪些计算在哪些实例上执行。具体而言,例如在附图中提供的基于云的体系结构,先前体系结构产品中的各种已知缺陷可能导致低效率,而这些缺陷可以通过灵活地允许更多CPU/GPU内核实例访问各种不同的硬件实例来克服,例如FPGA,它们以更有意义的方式组织起来,能够将正确的实例专用于执行适当的函数,以便以该格式实现优化,使得更多的可用CPU实例可以全时忙碌地生成结果数据,这些数据可以优化地输入到可用的FPGA实例中,以便保持所选FPGA实例全时繁忙。因此,希望提供尽可能高效且全时繁忙的结构化体系结构。需要注意的是,太少的CPU馈送太多FPGA以致一个或多个FPGA未被充分利用,这样的配置效率不高,应该避免。
在一个实施方式中,架构可以被配置为虚拟地包括若干不同的层,例如具有X个(例如4个到大约30个)CPU内核的第一层,以及具有1个到12个FPGA实例的第二层,其大小可以从小到中到大,等等。也可以包括第三级别的CPU内核和/或第四级别的进一步的FPGA等等。在云中存在许多可用实例,例如简单地包括CPU或GPU和/或FPGA和/或它们的组合的实例,例如本文描述的一个或多个级别。因此,以这样的方式组织这样的架构,使得硬件实例执行最密集的特定计算函数,并且这些函数可以通过CPU运行,并被引导至适当级别的适当的CPU用于一般处理。
例如,可以将体系结构配置为通过组合各种不同虚拟级别上的各种实例来提高效率并减少等待时间。特别地,多个(例如,重要的和/或全部的)1级CPU实例可以被配置为馈送到已经被专门配置为执行特定函数(例如映射、比对、Smith-Waterman、HMM、变异检测等)的各种2级FPGA实例(例如F12X)。因此,1级CPU可以参与形成基因组分析管道的第一级,用于执行一般处理步骤和排队以准备用于管道分析的数据,数据一旦由一个或多个CPU处理过,则可以被馈送到专用的2级的FPGA实例(例如F12X),例如配置FPGA实例——F12X以执行密集计算函数,例如映射和/或比对函数等。
以此方式,在特定实施方式中,管道中的CPU实例一旦准备好就将其数据路由到一个或两个映射和比对FPGA实例。执行映射后,结果数据可以被存储在存储器中和/或然后被馈送到可以进行比对的比对实例,其中比对可以例如通过至少一个专用的2级FPGA实例来执行。类似地,处理后的映射和比对的数据然后可以被存储在存储器中和/或被引导至3级CPU实例以进行进一步处理,其可以是相同的1级或不同的实例,例如用于执行较少处理强度的基因组学分析函数,例如用于执行排序函数。另外,3级CPU执行了它们的处理后,则结果数据可以被转发回到其他FPGA的2级实例或者4级实例,例如用于进一步处理基因组密集函数,例如在SW专用FPGA实例中执行Smith-Waterman处理函数。类似地,例如通过SW专用F12X FPGA执行SW分析后,则处理的数据可以被发送到一个或多个关联的存储器和/或处理管道(例如另一个4级或5级),或者备份到1级或3级的CPU和/或FPGA实例,例如用于执行HMM和/或变异检测分析,例如在专用FPGA和/或CPU处理内核层中。
以这样的方式,可以通过一个或多个不同级的各种不同实例的组合来克服这种等待时间和效率问题,以便为基因组处理提供管道平台。这样的配置可能涉及不止一个缩放和/或组合实例,这些实例可能被配置为专用于执行专用函数。在这种情况下,映射FPGA实例仅执行映射,同样,比对FPGA仅执行比对等,而不是执行管道端到端处理的单个实例。尽管在其他配置中,一个或多个FPGA可以至少部分地被重新配置,例如在执行管道任务之间。
因此,管道管理器可用于管理由I级CPU实例制定的基因组处理请求的队列,以便将其分解成离散作业,聚集并路由到适当的专用CPU/F1实例进行处理(例如映射和/或比对),其中经处理的F1数据可以向后或向前发送到处理结果数据的下一级CPU/FPGA,例如在变异检测模块中执行各种步骤。例如,变异检测函数可以被分成多个操作,这些操作可以用软件来执行,然后被转发到HMM,在一个或多个FPGA硬件实例中处理,然后被发送到CPU继续变异检测操作。整个平台的弹性尺寸和实施方式可以最大限度地降低昂贵的FPGA实例的成本,同时最大限度地提高利用率,最大限度地减少延迟,从而优化操作。这种方式由于其纯粹的处理能力和硬连线专用性,所以需要更少的硬件实例,并且因此可以减少FPGA的数目与CPU的数目,增加它们的使用率(例如FPGA的使用)。因此,***得到优化,保持所有实例全时繁忙。这种配置是针对基因组处理分析而优化设计的,尤其适用于映射、比对和变异检测。
可以在本文公开的管道体系结构中添加附加结构元件(例如作为附属),其可以是一个或多个弹性存储器模块,可以用于提供数据(例如结果数据)的块存储,在整个管道中作为过渡。因此,一个或多个弹性块数据存储(EBDS)模块可以在一个或多个处理级别之间***,例如在不同实例和/或不同实例级别之间,当数据经处理并且获得结果后,处理结果可以在被路由到下一级处理(例如通过专用FPGA处理模块)之前被引导到EBDS设备以进行存储。可以在所有实例或实例级别之间采用相同的EBDS,或者可以在各种实例和/或实例级别之间采用多个EBDS,例如用于对结果数据进行存储和/或编译和/或排队。
在该配置中,在直接从一个实例和/或一个处理级别向另一个实例和/或处理级别发送数据之前,可以将数据路由到EBDS或其他存储器装置或结构进行存储,并且之后路由到适当的硬连线处理模块。具体来说,块存储模块可以被附加到存储器存储的节点,其中数据可以被写入到BSD以便在一个级别上存储,并且BSD可以被翻转到另一个节点,将存储的数据路由到下一个处理级别。以这种方式,一个或多个(例如多个)BDS模块可以被包括在管道中并被配置为从一个节点翻转到另一个节点,以便参与数据在整个管道中的过渡。此外,如上所述,可以使用更灵活的文件存储装置,例如能够并行地耦合到一个或多个实例的装置,例如不必从一个切换到另一个。
因此,在处理管道中存在许多步骤,例如在其伴随的节点处,准备数据用于处理(例如预处理),一旦准备好数据就将数据导向某一级适当的处理实例,生成结果数据,然后可以将结果数据存储在例如EDS设备内,排队并准备用于下一阶段的处理,通过翻转到实例的下一个节点并且路由到下一个实例,由下一个FPGA和/或CPU处理实例处理,可以生成进一步的结果数据。再次地,生成结果数据后,该结果数据在进入下一阶段处理前可以被引导回相同的或者前进到用于存储的下一级别的EDS。
特别地,在一个特定实施方式中,通过管道的流程可以如下所示:CPU:准备(排队和/或存储)数据;FPGA:映射,临时存储,FPGA:比对,临时存储,CPU:排序,临时存储,CPU:重复数据删除,临时存储,FPGA:HMM,临时存储,CPU:变异检测1,临时存储,FPGA:Smith-Waterman,临时存储,CPU:变种检测2,临时存储,CPU:VCGF,临时存储等。应当注意的是,这些步骤中的一个或多个步骤可以以任何逻辑顺序执行,并且可以通过任何适当配置的资源来实现,例如以软件和/或硬件以各种不同组合来实现。此外,一个或多个EDS或其他适当配置的数据和/或文件存储设备可以附到各个节点中的一个或多个节点上,例如在各种级别的实例之间,例如用于各种不同处理步骤之间的临时存储。相应地,以这样的方式,每个级别的处理实例可以根据需要被弹性缩放,例如在每个不同节点或节点级之间,例如用于处理一个或多个基因组。
在另一方面,参照图16,提供了使用该***来生成一个或多个数据文件的方法,其中可以对该数据文件实施一个或多个二级和/或三级处理方案。例如,该方法可以包括提供基因组学基础架构,例如用于现场、基于云、和/或混合的基因组学和/或生物信息学生成和/或处理和/或分析中的一个或多个。
在这种情况下,基因组学基础架构可以包括具有一个或多个存储器的生物信息学处理平台,所述一个或多个存储器被配置为存储用于配置***的一个或多个可配置的处理结构,以便***能够对数据执行一个或多个分析处理函数,例如数据包括:感兴趣的基因组序列或与其有关的处理结果。可以存储包括待处理的基因组序列(例如生成和/或获取的)、一个或多个基因参考序列,和/或可以另外包括一个或多个基因参考序列和/或与之相关的剪接点列表的索引。***还可以包括具有平台应用程序编程接口(API)的输入,用于从一个或多个可配置的处理结构的选项列表中进行选择,例如用于配置***,例如通过选择对数据运行***的哪些处理函数,例如,预处理或经过处理的感兴趣的基因组序列。也可以存在图形用户界面(GUI)以呈现菜单,例如与API可操作地相关联,通过该菜单用户可以选择他或她希望在数据上运行哪些可用选项。
***可以在一个或多个集成电路上实现,该集成电路可以由一组或多组可配置的数字逻辑电路(例如预配置的和/或硬连线的)形成,其中所述数字逻辑电路通过多个物理电气互连进行互连。在这样的情况下,集成电路可以具有用于接收例如来自存储器的一个或多个可配置的结构方案的输入(例如存储器接口),并且可以进一步适用于按照可配置的处理结构方案在该集成电路上实现一个或多个结构。输入的存储器接口也可以被配置用于接收基因组序列数据,该基因组序列数据可以是基因组数据的多个read。界面还可以适用于访问一个或多个基因参考序列和索引。
在各种情况下,数字逻辑电路可以被布置为一组处理引擎,每个处理引擎均由数字逻辑电路的子集形成。数字逻辑电路和/或处理引擎可以被配置为执行初级、二级和/或三级处理方案的一个或多个预配置步骤,以便生成多个基因组序列数据read和/或用于处理多个基因组数据read,例如根据基因参考序列或基因序列导出的其他信息。集成电路还可以具有输出,以便输出来自初级处理、二级处理和/或三级处理的结果数据,例如根据平台应用程序编程接口(API)。
具体地,在各种实施例中,数字逻辑电路和/或处理引擎组可以形成多个基因组处理管道,例如每个管道可以具有根据平台应用程序编程接口定义的输入,以接收来自生物信息学处理平台的初级处理和/或二级处理的结果数据,并在其上执行一个或多个分析处理以产生结果数据。另外,多个基因组处理管道可以具有公共管道API,其定义要在来自初级处理和/或二级处理的结果数据上运行的二级和/或三级处理操作,例如多个基因组中的每一个处理管道为执行二级和/或三级处理的子集操作并且根据管道API输出二级和/或三级处理的结果数据。
在这种情况下,可以将多个基因组学分析应用程序存储在存储器和/或相关联的可搜索的应用程序库中,例如每个所述基因组学分析应用程序均可通过计算机等电子介质访问(例如由计算机处理器执行),以便对来自初级、二级和/或三级处理的结果数据的预处理或后处理数据进行目标分析,例如通过一个或多个基因组处理管道。在特定情况下,每个所述基因组学分析应用程序可以由API定义并且可以被配置用于接收初级、二级和/或三级处理的结果数据,和/或用于对预处理或后处理的基因组数据执行目标分析,并且将来自目标分析的结果数据输出到一个或多个基因组数据库中的一个。
该方法可以另外包括:从来自***的多个可用基因组处理管道中选择(例如从GUI的菜单中选择)一个或多个基因组处理管道;从存储在应用库中的多个所述基因组学分析应用程序中选择一个或多个基因组学分析应用程序;以及用计算机处理器执行一个或多个所选择的基因组学分析应用程序以对初级、二级和/或三级处理的结果数据执行基因组数据的目标分析。
另外,在各种实施例中,映射、比对和排序可以全部在芯片上进行;在一些实施例中,局部重新比对、重复标记、碱基质量评分重新校准和/或一个或多个三级处理方案和/或管道也可以在芯片上进行;在一些实施例中,各种压缩方案,例如BAM和CRAM,也可以在芯片上进行。然而,一旦产生初级、二级和/或三级处理的数据,该数据可以被压缩,例如在被传输之前,例如通过跨***发送,被发送到云,例如用于变异检测模块、二级、三级和/或其他处理平台,例如包括解释和/或协作分析方案。特别是考虑到变异检测(包括其三级处理)可以是一个移动的目标时(例如,没有一个业界使用的标准化的商定算法),这可能是有用的。
因此,可以采用不同的算法,例如通过远程用户,以根据需要获得不同类型的结果,具有用于执行该函数的基于云的模块可以允许灵活地选择哪种算法在任何特定给定时刻是有用的,以及用于串行和/或并行处理。因此,本文公开的任何一个模块可以被实现为例如芯片上的硬件或者例如云上的软件,但是在某些实施例中,所有模块可以被配置为可以在芯片上执行它们的函数,或者所有模块可以被配置为可以远程地执行它们的函数,例如在云上执行,或者存在模块的混合,其中一些模块被放置在一个或多个芯片上,一些模块被放置在云上。此外,如上所述,在各种实施例中,芯片本身可以被配置为结合基因测序仪(例如NGS和/或芯片上的测序器)一起操作。
更具体地,在各种实施例中,本公开的装置可以是芯片,例如被配置用于处理基因组学数据的芯片,例如通过采用数据分析模块的管道。据此,参见图17-19,提供了基因组管道处理器芯片100以及基因组管道处理器***10的相关硬件。芯片100具有一个或多个连接到外部存储器102(在“DDR3存储控制器”处)的连接,以及连接到外部世界的连接104(例如“PCIe接口”),例如主计算机106。交叉开关108(例如开关)提供各种请求者对存储器接口的访问。DMA引擎110在主机与处理器芯片100的外部存储器102之间(经由交叉开关108)和/或在主机与中央控制器112之间高速传输数据。中央控制器112控制芯片操作,特别是协调多个处理引擎的工作。处理引擎由一组硬连线数字逻辑电路(通过物理电气互连进行互连)形成,并且被组织成引擎集群114。在一些实例中,一个引擎集群中的引擎经由仲裁器共享一个交叉端口。中央控制器112连接到每个引擎集群。每个引擎集群114具有用于处理基因组数据的多个处理引擎,包括映射器120(或映射模块)、比对器122(或比对模块)和排序器124(或排序模块)。引擎集群114也可以包括其他引擎或模块。
根据与本文描述的实施方式一致的一个数据流模型,主机经由DMA引擎110将命令和数据发送到中央控制器112,中央控制器112将数据负载平衡到处理引擎。处理引擎将经处理的数据返回到中央控制器112,中央控制器112经由DMA引擎110将其流回到主机。该数据流模型适合于映射和比对。
根据与本文描述的实施方式一致的另一个数据流模型,主机直接经由DMA引擎110和交叉开关108或经由中央控制器112将数据流式传输到外部存储器中。主机将命令发送到中央控制器112,中央控制器112向处理引擎发送命令,其指示处理引擎处理哪些数据。处理引擎访问来自外部存储器的输入数据,对其进行处理,并将结果写回外部存储器,向中央控制器112报告状态。中央控制器112或者将结果数据从外部存储器流回到主机,或者通知主机经由DMA引擎110获取结果数据。
图17和18示出了基因组学管道处理器***,示出了引擎集群114/214内的全部处理引擎。管道处理器***可以包括一个或多个引擎集群114/214。在一些实施方式中,管道处理器***20包括四个或更多的引擎集群114/214。处理引擎或处理引擎的类型可以包括但不限于映射器、比对器、排序器、局部重新比对器、碱基质量重新校准器、重复标记、变异检测器、压缩器和/或解压缩器。在一些实施方式中,每个引擎集群114/214具有每个处理引擎类型中的一个。因此,相同类型的所有处理引擎可以通过不同的交叉开关端口同时访问交叉开关108,因为它们各自位于不同的引擎集群114/214中。不是每个处理引擎类型都需要在每个引擎集群114/214中形成。需要大量并行处理或内存带宽的处理引擎类型(例如映射器(和附加比对器)和排序器)可能会出现在管道处理器***的每个引擎集群中。其他引擎类型可以根据需要仅出现在一个或一些引擎集群114/214中,以满足其性能要求或管道处理器***的性能要求。
图19示出了基因组学管道处理器***,除了上述的引擎集群之外还示出了一个或多个嵌入式中央处理单元(CPU)202。这种嵌入式CPU的实例包括
Figure BDA0003647401720001111
或标准
Figure BDA0003647401720001112
内核。这些CPU执行完全可编程的bio-IT算法,例如高级变异检测。这种处理通过引擎群集的计算函数来加速,其可以根据需要由CPU内核202调用。此外,即使是以引擎为中心的处理,例如映射和比对,也可以由CPU内核202管理,给予它们更高的可编程性。
图20示出了基因组学管道处理器***和方法的处理流程。在一些优选的实施方式中,对数据进行三次处理。第一次,包括映射402和比对404,全套read通过引擎流式传输。第二次,包括排序406,其中将待排序的一个大块(例如,先前映射到单个染色体的实质部分或全部read)加载到存储器中,由处理引擎排序并返回给主机。第三次,包括下游阶段(局部重新比对408、重复标记410、碱基质量评分重新校准(BQSR)412、BAM输出414、简化BAM输出416和/或CRAM压缩418)。第三次处理的步骤和函数在单次内可以以任何组合或子组合的方式进行,并且以任何顺序进行。如上所述的虚拟管道体系结构用于将来自主机的read流式传输至存储器中的循环缓冲器,通过一个接一个的处理引擎并返回到主机。在一些实施方式中,CRAM解压缩可以是单独的流式传输函数。在一些实施方式中,BAM输出414、简化BAM输出416和/或CRAM压缩418可以用变异检测、压缩和解压缩替换。
在各种情况下,序列分析管道的硬件实施方式,如下所述。图21示出了本公开的实施方式的一般框图。在框1(block 1)中描述了序列分析管道的硬件实施方式,可以通过许多不同的方式完成,例如FPGA或ASIC或结构化ASIC。由FPGA或ASIC或结构化ASIC实现的函数块在图6和图7中示出。图6和图7包括许多块或模块进行序列分析。对硬件的输入可以是FASTQ文件,但不限于这种格式。除了FASTQ文件之外,FPGA或ASIC或结构化ASIC的输入还包含辅助信息,例如Ion Torrent等技术的流动空间信息。图21中的框说明以下模块:错误控制、映射、比对、排序、局部重新比对、重复标记、碱基质量重新校准、BAM和边信息简化以及变异检测。
这些框或块可以存在于硬件内或由硬件实现,但是可以省略这些块中的一些或添加其他块以实现序列分析管道。框2和3描述了序列分析管道平台的两种替代方案。序列分析管道平台包括FPGA或ASIC或结构化ASIC以及由具有云和/或存储器集群的主机(即,PC,服务器,集群或云计算)辅助的软件。框4-7描述了序列分析管道可以具有的不同接口。在框4和6中,接口可以是PCIe接口,但不限于PCIe接口。在框5和7中,硬件(FPGA或ASIC或结构化ASIC)可以直接集成到测序仪器中。框8和9描述了硬件序列分析管道集成到主机***中,例如PC、服务器集群或测序器。硬件FPGA或ASIC或结构化ASIC周围有大量DDR3存储器元件和PCIe接口。带有FPGA/ASIC/sASIC的电路板连接到主机,主机包含一个主CPU,可以是低功耗CPU(例如
Figure BDA0003647401720001121
)或任何其他处理器。框10示出了可由第三方应用访问以执行三级分析的硬件序列分析管道API。
因此,在各种实施例中,本公开的装置可以包括计算体系结构,例如嵌入在FPGA或硅专用集成电路(ASIC)100中,如图6和7所示。集成电路100可以集成到可***计算平台的印刷电路板(PCB)104,例如***组件接口-快速(PCIe)卡。在各种情况下,如图6所示,PCIe卡104可以包括单个FPGA或ASIC 100,该集成电路可以被本地存储器105包围,然而,在各种实施例中,如图7所示,PCIe卡104可以包括多个FPGA和/或ASIC 100A、100B和100C。在各种情况下,PCI卡还可以包括PCIe总线。该PCIe卡104可以被添加到计算平台以对极大数据集执行算法。因此,在各种情况下,涉及集成电路的基因组测序的总体工作流程可包括以下:样本制备、比对(包括映射和比对)、变异分析、生物学解释和/或特定应用。
因此,在各种实施例中,本公开的设备可以包括计算体系结构,其中在该体系中算法可高效执行,例如映射和比对算法,其在极大数据集上运行,例如数据集表现出较差的局部性(LOR)。这些算法被设计用于对来自现代所谓的“新一代测序仪(NGS)”的数百万个短read序列重建全基因组,需要随机存取的数千兆字节的数据结构。一旦重建完成,如上所述,具有相似特征的进一步的算法被用于将一个基因组与其他文库进行比较,进行基因函数分析等。
目前使用的有两种主要方法,通用多核CPU和通用图形处理单元(GPGPU)。在这种情况下,多核***中的每个CPU可能具有传统的基于高速缓存的体系结构,其中指令和数据是从1级高速缓存(L1 cache)获取的,该1级高速缓存很小但具有极快的访问速度。多个L1缓存可能连接到较大但较慢的共享L2缓存。L2高速缓存可以连接到较大但较慢的DRAM(动态随机存取存储器)***存储器,或者可以连接到甚至更大但较慢的L3高速缓存,然后其可以连接到DRAM。这种布置的优点可能在于,程序和数据表现出较差的局部性(LOR)的应用程序表现出像在具有与DRAM一样大的单个存储器但是与L1高速缓存一样快的计算机上执行一样。由于全定制,高度优化的CPU以非常高的时钟频率(例如2至4GHz)运行,所以该架构对于实现良好的性能可能是必不可少的。
此外,可以采用GPGPU来扩展该体系结构,例如通过非常大量的小型CPU,每个小型CPU具有其自己的小型L1高速缓存,其中每个CPU在不同的数据子集上执行相同的指令。这是所谓的SIMD(单指令流,多数据流)架构。通过在大量CPU上共享指令获取和解码逻辑,可以获得经济效益。每个高速缓存可通过互连网络访问多个大型外部DRAM。假设要执行的计算具有高度的可并行性,由于GPGPU具有大量计算资源,因此比通用CPU具有显着的优势。尽管如此,它们仍然具有缓存架构,并且它们的性能受到较差的局部性(LOR)的应用程序的损害。使得高速缓存未命中率较高,以及处理器在等待数据从外部DRAM到达时处于空闲状态。
例如,在各种情况下,动态RAM可以用于***存储器,因为它们比静态RAM(SRAM)更经济。过去的经验法则是,4倍容量的DRAM与SRAM的成本相同。然而,由于SRAM的需求下降,DRAM的需求量非常大,所以这种差距已经大大增加。与成本无关,DRAM的密度是在相同硅片区域的SRAM的4倍,因为它们每个位只需要一个晶体管和电容器,而SRAM的触发器每个位需要4个晶体管。DRAM代表一个信息的单个位,如电容上存在或不存在电荷。这种布置的一个问题是电荷随时间衰减,所以必须定期刷新。这使得在架构中将存储器组织成独立的块和访问机制,为每个请求提供多个存储字。这补偿了给定块在刷新时不可用的时间,在给定块可用时移动大量数据。这与SRAM形成对比,SRAM中的任何位置在一段恒定时间内的单次访问中是可用的。这个特性允许存储器访问是面向单个字的,而不是面向块的。DRAM在高速缓存体系结构中运行良好,因为每个高速缓存未命中(cache miss)会使从DRAM读入存储器块。局部性理论是,如果只访问了字N,那么可能会访问字N+1,N+2,N+3等。
图7给出了图6的替代实施例,具有多个芯片100A、100B、100C,其中每个芯片可以包括一个或多个各种基因组学和/或生物信息学处理模块,例如本文公开的示例性管道分析装置。
图17图示了用于对基因序列数据执行序列分析管道的***100。***100包括配置管理器102,所述配置管理器102包括计算***。配置管理器102的计算***可以包括个人计算机或其他计算机工作站,或者可以由一整组联网计算机来实现。配置管理器102可以进一步包括一个或多个第三方应用,其通过一个或多个API与计算***连接;与一个或多个专有应用一起产生用于处理来自测序器或其他基因组数据源的基因组数据的配置。配置管理器102进一步包括将配置加载到基因组学管道处理器***10的驱动器。基因组学管道处理器***10可以输出结果数据到网络50或其他网络,或通过网络50或其他网络访问,以便将结果数据存储在电子健康记录200或其他知识数据库400。
如上所述,基因组学管道处理器的芯片可以连接或集成在测序器中。芯片也可以连接或集成在扩展卡上,例如PCIe,并且扩展卡可以连接或集成在测序器中。在其他实施方式中,芯片可以连接或集成在连接到测序器的服务器计算机上,以将基因组read从测序器转移到服务器。在实施方式中,芯片可以连接或集成在计算机和服务器的云计算集群中的服务器中。***可以包括一个或多个测序器连接(例如通过以太网)到包含芯片的服务器,其中基因组read由多个测序器产生,被发送到服务器,然后在芯片中映射和比对。
例如,在通常的新一代DNA测序仪(NGS)数据管道中,初级分析阶段处理通常对于给定的测序技术是特定的。该初级分析阶段用于将在测序仪内检测到的物理信号翻译成具有相关质量(置信)分数的核苷酸序列的“read”,例如FASTQ格式文件或包含序列和一般质量信息的其他格式。在获得这种格式之后,如本文所述继续进行二级分析以确定测序样本DNA(或RNA等)的含量,例如通过将read与参考基因组进行映射和比对、排序、重复标记、碱基质量评分重新校准、局部重新校准和变异检测。然后可以进行三级分析,从确定的DNA含量中提取医学或研究暗示。
然而,如上所述的初级分析通常对于所采用的测序技术来说具有非常特定的性质。在各种测序仪中,通过感测电荷、电流或辐射光来检测核苷酸。一些初级分析管道通常包括:信号处理——放大,过滤,分离和测量传感器输出;数据缩减——如量化,抽取,平均,转换等;图像处理或数字处理——以识别和增强有意义的信号,并将它们与特定的read和核苷酸相关联(例如图像偏移量计算,簇识别);算法处理和启发式算法——用于补偿测序技术伪像(例如相位估计、串扰矩阵);贝叶斯概率计算;隐马尔可夫模型;碱基检测(在序列中每个位置选择最可能的核苷酸);碱基检测质量(置信度)估计等。
初级分析可以是非常交换密集的,有时与二级分析一样密集。例如,在现有的测序技术中,初级分析通常利用FPGA和/或GPU来加速处理超越CPU的能力。但是这些加速函数可以在定制集成电路中更高效地执行,例如如本文所述的定制集成电路。例如,它们可以在使用可配置金属层的结构化ASIC中实施,因为它们不需要与嵌入式处理器内核一样多的物理布局精度;然而,在大型FPGA和GPU中实现大规模并行计算可能难以适应可配置的结构化ASIC资源。另一种方法是在结构化ASIC的主片中实现初级处理加速逻辑,利用主片中的标准单元空间效率。
二级处理函数可以在结构化ASIC可配置金属层中实现的原因在于二级基因组数据处理算法仍然通过积极的研究而发展。因此,能够定期地(例如每年或每两年)便宜地更新结构化ASIC设计以利用最新的算法。相比之下,目前采用的初级分析算法更加成熟,必要的处理已由相应的测序器制造商研究和定义。即使在它仍然可能发生变化的情况下,这些算法与二级分析中的情况相比是更通用的信号和数字处理,因此初级处理加速模块的适当可配置性和微编码可以使它们足够灵活以适应显着变化。由于这些原因,嵌入式处理器内核(如果存在)甚至会进一步提高这种灵活性,如本文所述,将初级处理加速模态设计为FPGA和/或结构化ASIC主片是合理的。
在具有或不具有嵌入式处理器的情况下,将初级处理加速和二级处理加速集成在单个集成电路FPGA或ASIC(标准单元或结构化ASIC)中也是有利的。这可能是有益的,因为测序器产生的数据都需要初级分析和二级分析,因此将它们集成在单个设备中在成本、空间、功率和资源共享方面是最有效的。如果嵌入式处理器也存在,则可以利用它们来提高初级处理和二级处理的速度和灵活性。
这三个组件——初级加速器、二级加速器和嵌入式处理器——可以以FPGA或结构化ASIC主片和/或使用可配置金属层的任何组合来实现。所有这三个组件可以在主片中,或者全部三个可以使用可配置的金属层,或者其中的任何一个或两个可以在主片中,而其他的可以在可配置的金属层中。在任何这些配置中,全部三个可以(任意组合)直接和/或通过存储器彼此通信,并且在共同任务中协作。一个有利的配置是在主片中实现初级加速器和嵌入式处理器,并使用可配置的金属层实现二级加速。
另外,如上所述,无论是作为ASIC、FPGA还是结构化ASIC实现的芯片都可以包括一个或多个存储器体系结构或与一个或多个存储器体系结构相关联。例如,存储器体系结构可以由M个与芯片连接的存储器模块组成,例如与ASIC连接。ASIC可以使用许多不同的技术来实现,包括FPGA(现场可编程门阵列)或结构化ASIC,标准单元或全定制逻辑。ASIC内部是存储器子***(MSS)和函数处理单元(FPU)。MSS包含用于存储器模块的M个存储器控制器(MC),用于FPU的N个***存储器接口(SMI)以及允许任何SMI访问任何MC的N×M交叉开关。在争用的情况下提供仲裁。
每个存储器模块根据DRAM芯片构建,所述DRAM芯片由AMM位字寻址并且支持数据传输DMM位宽。存储器有2AMM地址位置。DRAM的一个关键特性是它使用提供的地址作为基地址B执行W字突发的读取/写入,并且还获取或存储位置B+1,B+2,...B+W-1。W的典型值是8。
在ASIC的MSS中,每个存储器控制器提供所需的控制信号并且在***字宽DSYS和存储器字宽DMM之间执行任何必要的复用/解复用,以及处理读/写突发。它可以包含额外的缓冲,以便多个存储器请求可以排队并以管道方式处理,以增加吞吐量。这补偿了地址呈现和内存操作完成(读取或写入)之间的多个时钟周期延迟。
MC可以以存储器模块中附接的DRAM的速度运行。假设它的时钟频率是CMM。这通常比ASIC中大多数逻辑电路的内核速度CSYS快几倍。因此,复用/解复用逻辑放置在其相关的接口引脚附近以缩短信号距离。解复用是对输入数据执行的第一个操作,复用是对输出数据执行的最后一个操作。MSS的其余部分使用比DMM宽的DSYS宽度数据进行操作,从而可以使用较慢的CSYS时钟速度。
MSS中的每个***存储器接口向任何附接的FPU呈现ASYS位地址总线和DSYS位数据总线。SMI旨在让附接的FPU看起来可以随机访问单个大型快速存储器。FPU没有意识到存在单独的存储器模块。ASYS足够大,可以访问任何附接的存储器模块中的任何存储器位置。下面介绍从***地址空间到存储器模块地址空间的映射。
N个***存储器接口经由N×M交叉开关连接到M个存储器模块。交叉开关在SMI和MC之间提供最小(M,N)同时连接,为冲突提供仲裁,并便于将***地址空间转换为存储器模块地址空间。
FPU的组织非常灵活。一个或多个FPU可以共享相同的***存储器接口。为了最大限度地提高性能,不同时运行的FPU应共享一个SMI。那些同时运行的应该被附加到不同的SMI。在大于DSYS的数据结构上运行的FPU可以使用多个SMI以在单个存储器操作中访问整个数据结构。因此,这种存储器架构支持广泛的计算体系结构。每个FPU可以是相同的,因此它们的阵列可以以二维结构实现。这表明FPU(i,j)是连接到SMI i的第j个单元,其中0≤i≤N,0≤j≤ki。在这种情况下,所有的ki都是相同的大小,并且ki可以小到1。支持SIMD(单指令流,多数据流)和MIMD体系结构(多指令流,多数据流),取决于FPU是否获取来自相同或单独的指令存储器的指令。
在一个特定方面,本公开涉及一种***,例如用于对基因序列数据执行序列分析管道的***。在各种情况下,***可以包括电子数据源,例如提供数字信号的数据源,例如表示多个基因组数据read的数字信号,其中多个基因组数据read中的每一个包括核苷酸序列。该***可以包括一个或多个存储器,例如存储一个或多个基因参考序列和/或一个或多个基因参考序列的索引的存储器;和/或该***可以包括芯片,例如ASIC、FPGA或sASIC。
更具体地,在各种特定实施例中,***可以包括结构化专用集成电路(ASIC),例如其中芯片由一组掩膜可编程硬连线数字逻辑电路形成,其可以通过多个物理电气互连进行互连。在各种情况下,多个物理电气互连中的一个或多个包括结构化ASIC的输入,该结构化ASIC与电子数据源连接,例如用于接收多个基因组数据read。在这种情况下,多个物理电气互连中的一个或多个可以包括用于结构化ASIC访问存储器的存储器接口。因此,硬连线数字逻辑电路可以被布置为一组处理引擎,例如其中每个处理引擎可以由硬连线数字逻辑电路的子集形成,以便在序列分析管道中对多个基因组数据read执行一个或多个步骤。在各种实施例中,硬连线数字逻辑电路的一个或多个(例如,每个)子集可以为有线配置,以便执行序列分析管道中的一个或多个步骤。例如,该组处理引擎可以被配置为包括映射模块、比对模块和/或排序模块中的一个或多个。
例如,该组处理引擎可以包括映射模块,该映射模块为有线配置,并且被配置为根据多个read中的read的至少一些核苷酸序列,通过所述存储器接口从所述存储器访问一个或多个基因参考序列的索引,基于所述索引将所述read映射到所述一个或多个基因参考序列的一个或多个片段。例如,在某些实施例中,一个或多个基因参考序列的索引可以包括散列表,和/或映射模块可以对至少一些核苷酸序列应用散列函数以访问所述索引的散列表。
处理引擎还可以或可选地包括比对模块,该比对模块为有线配置,并且被配置为(例如经由存储器接口)从存储器访问一个或多个基因参考序列,以便将read对准到一个或多个基因参考序列的一个或多个片段中的一个或多个位置,例如从映射模块获得的。处理引擎还可以或者可选地包括有线配置的排序模块,并且被配置为(例如经由存储器接口)从存储器访问一个或多个比对的read,以便将read排列至基因参考序列中的一个或多个位置,例如染色***置,例如从比对模块获得的。
在各种情况下,结构化ASIC可以包括主片,其与至少一些硬连线数字逻辑电路结合,并且在一些情况下,结构化ASIC可以包括形成在主片上的一个或多个可配置金属层,例如其中所述一个或多个可配置金属层中的每一个可具有多个物理电气互连中的至少一些,至少一些硬连线数字逻辑电路通过所述物理电气互连进行互连形成一组处理引擎。在某些实施例中,多个物理电气互连中的一个或多个可以包括来自结构化ASIC的输出,例如用于传送来自映射模块和/或比对模块和/或排序模块的结果数据。
在各种情况下,结构化ASIC可以包括主控制器,以建立用于硬连线数字逻辑电路的每个子集的有线配置,执行序列分析管道中的一个或多个步骤。在各种实施例中,有线配置是在制造集成电路时建立的并且是非易失性的。在一些实施例中,结构化ASIC和/或存储器容纳在扩展卡上,例如***组件互连(PCI)卡。如上所述,在各种实施例中,***可以包括测序器,例如测序器包括电子数据源,所述电子数据源提供代表多个基因组数据read的数字信号。在这种情况下,扩展卡可以与测序器物理集成。
另外,在各种实施例中,可以提供结构化的专用集成电路(ASIC),例如用于分析基因序列数据,例如在基因序列数据存储在存储器的情况下,例如存储器存储一个或更多与基因组数据相关的基因参考序列、和/或一个或多个基因参考序列的索引。在这种情况下,结构化ASIC可以包括主片,主片还包括一组数字逻辑电路,并且可以另外包括形成在主片上的一个或多个可配置金属层,例如所述一个或多个可配置金属层的每一个可具有一组有线连接,其被布置为互连数字逻辑电路的子集以形成一组处理引擎。在这种情况下,该组处理引擎可以包括映射引擎、比对引擎和/或排序引擎。在各种情况下,主片中的一组数字逻辑电路的一部分被硬连线为碱基检测引擎。
例如,该组处理引擎可以包括映射引擎,以访问存储在存储器中的一个或多个基因参考序列的索引(例如根据多个read的read中的至少一些核苷酸序列),从而(例如基于索引)将read映射到一个或多个基因参考序列的一个或多个片段。此外,或者可选地,该组处理引擎可以包括比对引擎,以便(例如经由存储器接口)从存储器访问一个或多个基因参考序列,从而将read与来自映射模块的一个或多个基因参考序列的一个或多个片段的一个或多个位置进行比对。此外,或者可选地,该组处理引擎可以包括排序引擎,用于根据一个或多个基因参考序列中的一个或多个位置对每个经比对的read进行排序。
在一个实施例中,提供了一种用于对基因序列数据执行序列分析管道的***,其中***包括电子数据源,所述电子数据源提供代表多个基因组数据read的数字信号,例如其中多个基因组数据read的每一个包括核苷酸序列。该***可以包括一个或多个存储器,例如用于存储一个或多个基因参考序列和/或一个或多个基因参考序列的索引的存储器;和/或该***可以包括具有主片的集成电路,例如主片由限定一组数字逻辑电路的光刻掩模形成。在这种情况下,主片可以被配置为具有集成在其中的一个或多个函数,如上文所述。例如,主片可以具有一个或多个可配置金属层,例如其中一个或多个可配置金属层中的每一个具有一个或多个导电互连,其连接该组有线配置的数字逻辑电路的子集以执行上述函数。
在各个方面,提供了一种用于分析基因序列数据的结构化应用专用集成电路(ASIC)的制造方法。在某些实施例中,该方法包括以下一个或多个步骤:提供多个光刻掩模,例如限定主片的一组数字逻辑电路的掩模;形成一组数字逻辑,例如通过使用多个光刻掩模来形成主片;提供两个或多个不同组的专用设计的可配置金属层掩模,例如限定对应的两个或多个数字逻辑以实现一组处理引擎的掩模;形成两个或多个可配置金属层,例如使用两个或多个不同组的专用设计的可配置金属层掩模来形成,例如其中两个或多个可配置金属层的每一个具有一组有线连接,该有线连接可以根据可配置金属层掩模的设计进行布置,例如用于互连数字逻辑电路的子集以形成一组处理引擎;和/或将所述两个或多个可配置金属层提供到所述主片上以形成一组处理引擎。
可以在数字电子电路、集成电路、专门设计的专用集成电路(ASIC)、现场可编程门阵列(FPGA)或结构化ASIC计算机硬件、固件、软件和/或其组合中实现本文描述的主题的一个或多个方面或特征。
这些各个方面或特征可以包括在可编程***上可执行和/或可解释的一个或多个计算机程序中的实现,所述可编程***包括至少一个可编程处理器,其可以是特殊的或通用的,耦合以接收来自存储器***、至少一个输入设备和至少一个输出设备的数据和指令,并向存储器***、至少一个输入设备和至少一个输出设备传输数据和指令。可编程***或计算***可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器之间的关系是通过运行在各个计算机上的计算机程序产生的,并且彼此具有客户端-服务器关系。
这些计算机程序也可被称为程序、软件、软件应用程序、应用程序、组件或代码,包括用于可编程处理器的机器指令,并且可以在高级过程和/或对象面向对象的编程语言,和/或汇编/机器语言中实现。如本文所使用的,术语“机器可读介质”是指任何计算机程序产品、装置和/或设备,例如磁盘、光盘、存储器和可编程逻辑器件(PLD),其可用于提供机器指令和/或数据到可编程处理器,包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。机器可读介质可以非暂时地存储这样的机器指令,例如像非瞬态固态存储器或磁性硬盘驱动器或任何等同的存储介质那样。机器可读介质可以可选地或附加地以瞬态方式存储这样的机器指令,例如像处理器高速缓存或与一个或多个物理处理器内核相关联的其他随机存取存储器一样。
为了提供与用户的交互,本文描述的主题的一个或多个方面或特征可以在具有显示设备的计算机上实现,该显示设备例如是阴极射线管(CRT),液晶显示器(LCD)或用于向用户显示信息的发光二极管(LED)监视器以及用户可通过其向计算机提供输入的键盘和指点设备(例如鼠标或轨迹球)。其他类型的设备也可以用来提供与用户的交互。例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括但不限于声音、语音或触觉输入。其他可能的输入设备包括但不限于触摸屏或其他触敏设备,例如单点或多点电阻式或电容式触控板、语音识别硬件和软件、光学扫描仪、光学指针、数字图像捕获设备和相关联的口译软件等。
取决于期望的配置,本文所描述的主题可体现在***、装置、方法和/或产品中。在前面的描述中阐述的实施方式并不代表与本文所描述的主题一致的所有实施方式。相反,它们仅仅是与所描述的主题相关的方面的一些示例。尽管上面已经详细描述了一些变型,但是其他修改或添加也是可能的。特别地,除了本文阐述的那些特征和/或变型之外,还可以提供其他特征和/或变型。例如,以上描述的实施方式可以针对所公开的特征和/或以上公开的几个其他特征的组合和子组合的各种组合和子组合。另外,附图中描述的和/或本文描述的逻辑流程不一定需要按照所示的特定顺序或依次顺序,以实现期望的结果。其他实现可以在权利要求的范围内。

Claims (22)

1.一种基因组数据分析平台,所述基因组数据分析平台包括:
图形用户界面,所述图形用户界面呈现多个用户可选选项,其中所述多个用户可选选项中的一个或多个对应于特定基因组数据处理管道;和
平台应用程序接口(API),所述平台应用程序接口:
(i)获得表示对应于特定基因组数据处理管道的所述多个用户可选选项中的一个或多个的选择的数据,并且
(ii)基于所获得的表示该选择的数据配置一个或多个计算资源以实施一组一个或多个基因组数据处理管道,其中该配置包括:基于所获得的表示该选择的数据,API定义一个或多个基因组数据处理管道的每一个的输入。
2.根据权利要求1所述的基因组数据分析平台,其中所述多个用户可选选项中的一个或多个对应于存储在一个或多个应用程序存储库中的特定基因组数据分析应用程序中;并且
其中所述API还(iii)获得表示对应于特定基因组数据分析应用程序的所述多个用户可选选项中的一个或多个的选择的第二数据,并且(iv)基于所获得的第二数据配置一个或多个输入至存储在所述一个或多个应用程序存储库中的一个或多个相应的基因组数据分析应用程序。
3.根据权利要求1所述的基因组数据分析平台,其中所述多个用户可选选项包括:对应于基因组处理管道的用户可选选项、对应于表观基因组处理管道的用户可选选项、对应于宏基因组处理管道的用户可选选项、对应于联合基因分型处理管道的用户可选选项或对应于基因组分析工具包(GATK)处理管道的用户可选选项中的一个或多个。
4.根据权利要求2所述的基因组数据分析平台,其中所述多个用户可选选项包括:对应于非侵入性产前测试应用程序的用户可选选项、对应于新生儿重症监护单元应用程序的用户可选选项、对应于癌症分析应用程序的用户可选选项、对应于实验室开发的测试(LDT)应用程序的用户可选选项或对应于农业和生物分析应用程序的用户可选选项中的一个或多个。
5.一种方法,包括:
通过由一台或多台计算机执行的应用程序接口(API)获得表示通过图形用户界面提交的多个用户可选选项中的一个或多个选项的选择的第一数据,其中所述多个用户可选选项中的一个或多个识别特定基因组数据处理管道;
使用由所述一台或多台计算机执行的API基于所述第一数据配置基因组数据处理管道,其中配置基因组数据处理管道包括:使用API定义用于实现由所述第一数据识别的一个或多个基因组数据处理管道中的每一个的计算资源的输入;
通过所述一台或多台计算机获得表示基因组数据组或从源自基因组数据的数据组的第二数据;
通过所述一台或多台计算机使用基于所述第一数据配置的所述基因组数据处理管道对所获得的第二数据进行处理;
通过所述一台或多台计算机获得由所述基因组数据处理管道基于所述基因组数据处理管道对所获得的第二数据进行处理而生成的结果数据;和
通过所述一台或多台计算机提供基于所述结果数据的输出数据。
6.根据权利要求5所述的方法,其中所述基因组数据组包括由核酸测序仪产生的一个或多个基因组序列。
7.根据权利要求5所述的方法,其中所述源自基因组数据的数据组包括一个或多个变异的组。
8.根据权利要求5所述的方法,
其中所述多个用户可选选项中的一个或多个对应于存储在一个或多个应用程序存储库中的特定基因组数据分析应用程序,
其中所述第一数据进一步包括表示一个或多个用户可选选项的选择的数据,其中每个用户可选选项识别一个或多个基因组数据分析应用程序,并且
所述方法还包括:
基于所获得的第一数据,通过API配置存储在所述一个或多个应用程序存储库中的一个或多个相应基因组数据分析应用程序的输入。
9.根据权利要求5所述的方法,其中所述多个用户可选选项包括:对应于基因组处理管道的用户可选选项、对应于表观基因组处理管道的用户可选选项、对应于宏基因组处理管道的用户可选选项、对应于联合基因分型处理管道的用户可选选项或对应于基因组分析工具包(GATK)处理管道的用户可选选项中的一个或多个。
10.根据权利要求8所述的方法,其中所述多个用户可选选项包括:对应于非侵入性产前测试应用程序的用户可选选项、对应于新生儿重症监护单元应用程序的用户可选选项、对应于癌症分析应用程序的用户可选选项、对应于实验室开发的测试(LDT)应用程序的用户可选选项或对应于农业和生物分析应用程序的用户可选选项中的一个或多个。
11.一种非暂时性计算机可读介质,其存储软件,该软件包括可由一台或多台计算机执行的指令,执行该指令可使所述一台或多台计算机执行操作,该操作包括:
通过应用程序接口(API)获得表示通过图形用户界面提交的多个用户可选选项中的一个或多个选项的选择的第一数据,其中所述多个用户可选选项中的一个或多个识别特定基因组数据处理管道;
使用API基于所述第一数据配置基因组数据处理管道,其中配置基因组数据处理管道包括:
使用API定义用于实现由所述第一数据识别的一个或多个基因组数据处理管道中的每一个的计算资源的输入;
获得表示基因组数据组或从源自基因组数据的数据组的第二数据;
使用基于所述第一数据配置的所述基因组数据处理管道对所获得的第二数据进行处理;
获得由所述基因组数据处理管道基于所述基因组数据处理管道对所获得的第二数据进行处理而生成的结果数据;和
提供基于所述结果数据的输出数据。
12.根据权利要求11所述的计算机可读介质,其中所述基因组数据组包括由核酸测序仪产生的一个或多个基因组序列。
13.根据权利要求11所述的计算机可读介质,其中所述源自基因组数据的数据组包括一个或多个变异的组。
14.根据权利要求11所述的计算机可读介质,
其中所述多个用户可选选项中的一个或多个对应于存储在一个或多个应用程序存储库中的特定基因组数据分析应用程序,
其中所述第一数据进一步包括表示一个或多个用户可选选项的选择的数据,其中每个用户可选选项识别一个或多个基因组数据分析应用程序,并且
其中所述操作还包括:
基于所获得的第一数据,通过API配置存储在所述一个或多个应用程序存储库中的一个或多个相应基因组数据分析应用程序的输入。
15.根据权利要求11所述的计算机可读介质,其中所述多个用户可选选项包括:对应于基因组处理管道的用户可选选项、对应于表观基因组处理管道的用户可选选项、对应于宏基因组处理管道的用户可选选项、对应于联合基因分型处理管道的用户可选选项或对应于基因组分析工具包(GATK)处理管道的用户可选选项中的一个或多个。
16.根据权利要求14所述的计算机可读介质,其中所述多个用户可选选项包括:对应于非侵入性产前测试应用程序的用户可选选项、对应于新生儿重症监护单元应用程序的用户可选选项、对应于癌症分析应用程序的用户可选选项、对应于实验室开发的测试(LDT)应用程序的用户可选选项或对应于农业和生物分析应用程序的用户可选选项中的一个或多个。
17.一种***,包括:
一台或多台计算机和一个或多个存储可操作的指令的存储设备,当所述一台或多台计算机执行该指令时可使所述一台或多台计算机执行操作,该操作包括:
通过由所述一台或多台计算机托管的应用程序接口(API)获得表示通过图形用户界面提交的多个用户可选选项中的一个或多个选项的选择的第一数据,其中所述多个用户可选选项中的一个或多个识别特定基因组数据处理管道;
使用由所述一台或多台计算机托管的API基于所述第一数据配置基因组数据处理管道,其中配置基因组数据处理管道包括:使用API定义用于实现由所述第一数据识别的一个或多个基因组数据处理管道中的每一个的计算资源的输入;
通过所述一台或多台计算机获得表示基因组数据组或从源自基因组数据的数据组的第二数据;
通过所述一台或多台计算机使用基于所述第一数据配置的所述基因组数据处理管道对所获得的第二数据进行处理;
获得由所述基因组数据处理管道基于所述基因组数据处理管道对所获得的第二数据进行处理而生成的结果数据;和
通过所述一台或多台计算机提供基于所述结果数据的输出数据。
18.根据权利要求17所述的***,其中所述基因组数据组包括由核酸测序仪产生的一个或多个基因组序列。
19.根据权利要求17所述的***,其中所述源自基因组数据的数据组包括一个或多个变异的组。
20.根据权利要求17所述的***,
其中所述多个用户可选选项中的一个或多个对应于存储在一个或多个应用程序存储库中的特定基因组数据分析应用程序,
其中所述第一数据进一步包括表示一个或多个用户可选选项的选择的数据,其中每个用户可选选项识别一个或多个基因组数据分析应用程序,并且
其中所述操作还包括:
基于所获得的第一数据,通过API配置存储在所述一个或多个应用程序存储库中的一个或多个相应基因组数据分析应用程序的输入。
21.根据权利要求17所述的***,其中所述多个用户可选选项包括:对应于基因组处理管道的用户可选选项、对应于表观基因组处理管道的用户可选选项、对应于宏基因组处理管道的用户可选选项、对应于联合基因分型处理管道的用户可选选项或对应于基因组分析工具包(GATK)处理管道的用户可选选项中的一个或多个。
22.根据权利要求20所述的***,其中所述多个用户可选选项包括:对应于非侵入性产前测试应用程序的用户可选选项、对应于新生儿重症监护单元应用程序的用户可选选项、对应于癌症分析应用程序的用户可选选项、对应于实验室开发的测试(LDT)应用程序的用户可选选项或对应于农业和生物分析应用程序的用户可选选项中的一个或多个。
CN202210534739.5A 2016-01-11 2017-01-11 用于现场或基于云的dna和rna处理和分析的基因组学基础架构 Pending CN114974426A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662277445P 2016-01-11 2016-01-11
US62/277,445 2016-01-11
PCT/US2017/013057 WO2017123664A1 (en) 2016-01-11 2017-01-11 Genomic infrastructure for on-site or cloud-based dna and rna processing and analysis
CN201780006359.1A CN108604260B (zh) 2016-01-11 2017-01-11 用于现场或基于云的dna和rna处理和分析的基因组学基础架构

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201780006359.1A Division CN108604260B (zh) 2016-01-11 2017-01-11 用于现场或基于云的dna和rna处理和分析的基因组学基础架构

Publications (1)

Publication Number Publication Date
CN114974426A true CN114974426A (zh) 2022-08-30

Family

ID=57915106

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201780006359.1A Active CN108604260B (zh) 2016-01-11 2017-01-11 用于现场或基于云的dna和rna处理和分析的基因组学基础架构
CN202210534739.5A Pending CN114974426A (zh) 2016-01-11 2017-01-11 用于现场或基于云的dna和rna处理和分析的基因组学基础架构

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201780006359.1A Active CN108604260B (zh) 2016-01-11 2017-01-11 用于现场或基于云的dna和rna处理和分析的基因组学基础架构

Country Status (15)

Country Link
EP (2) EP3937178A1 (zh)
JP (3) JP7308616B2 (zh)
KR (1) KR20180107148A (zh)
CN (2) CN108604260B (zh)
AU (2) AU2017207317A1 (zh)
BR (1) BR112018014086A2 (zh)
CA (1) CA3008176A1 (zh)
HK (1) HK1259309A1 (zh)
IL (3) IL302704A (zh)
MX (1) MX2018008527A (zh)
MY (1) MY193874A (zh)
RU (1) RU2761066C2 (zh)
SG (1) SG11201805562QA (zh)
WO (1) WO2017123664A1 (zh)
ZA (2) ZA202210297B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115881225A (zh) * 2022-12-28 2023-03-31 云舟生物科技(广州)股份有限公司 生物信息序列的分析方法、计算机存储介质及电子设备

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110057882B (zh) * 2018-01-19 2020-07-28 中国科学院大连化学物理研究所 一种基于二维钛碳化合物的电化学生物传感器及其应用
CN109448788B (zh) * 2018-10-24 2022-03-15 广州基迪奥生物科技有限公司 基因组学及生物信息学的微生物组学在线分析平台架构
KR20200058246A (ko) 2018-11-19 2020-05-27 서울여자대학교 산학협력단 군집 분석 데이터에 대한 어셈블리 데이터 생성 방법 및 그 장치
CN111835507B (zh) * 2019-04-19 2023-04-25 富联国基(上海)电子有限公司 基于基因芯片的非对称加密解密方法
CN112309501A (zh) * 2019-08-02 2021-02-02 华为技术有限公司 基因比对技术
CN110648723A (zh) * 2019-09-29 2020-01-03 江苏医健大数据保护与开发有限公司 一种基于云架构平台的基因数据分析方法
CN111049799B (zh) 2019-11-13 2022-01-21 华为终端有限公司 控制方法、装置和***
CN112825268B (zh) * 2019-11-21 2024-05-14 深圳华大基因科技服务有限公司 测序结果比对方法及其应用
US20230028058A1 (en) * 2019-12-16 2023-01-26 Ohio State Innovation Foundation Next-generation sequencing diagnostic platform and related methods
CN110968730B (zh) * 2019-12-16 2023-06-09 Oppo(重庆)智能科技有限公司 音频标记处理方法、装置、计算机设备及存储介质
CN111309387B (zh) * 2020-01-22 2023-04-18 阿里巴巴集团控股有限公司 一种驱动加载的方法及装置、电子设备、存储介质
CN111445952B (zh) * 2020-03-25 2024-01-26 山东大学 超长基因序列的相似性快速比对方法及***
CN111460747B (zh) * 2020-04-10 2023-03-31 重庆百瑞互联电子技术有限公司 一种用于集成电路设计的标准单元追踪方法
JP2023529321A (ja) * 2020-05-28 2023-07-10 エフ. ホフマン-ラ ロシュ アーゲー 高エラー単一分子読み取りにおいて短いモチーフを同定するための配列位置合わせシステムおよび方法
US11198121B1 (en) 2020-06-10 2021-12-14 Element Biosciences, Inc. Flow cell systems and devices
JP7393439B2 (ja) * 2020-10-22 2023-12-06 ビージーアイ ジェノミクス カンパニー リミテッド 遺伝子シークエンシングデータ処理方法及び遺伝子シークエンシングデータ処理装置
CN112507649B (zh) * 2020-12-23 2024-04-02 珠海一微半导体股份有限公司 一种模拟版图的数模引脚映射到数字版图的方法
CN112634988B (zh) * 2021-01-07 2021-10-08 内江师范学院 基于Python语言的基因变异检测方法及***
CN113160906B (zh) * 2021-04-21 2024-01-02 南京信息工程大学 一种MXenes材料稳定性分类***及其运行方法
US20230051863A1 (en) * 2021-08-10 2023-02-16 Micron Technology, Inc. Memory device for wafer-on-wafer formed memory and logic
CN117373696B (zh) * 2023-12-08 2024-03-01 神州医疗科技股份有限公司 一种基于文献证据库的遗传病自动解读***及方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11385226B2 (en) * 2007-09-17 2022-07-12 Red Ivory Llc Self-actuating signal producing detection devices and methods
CN102521528A (zh) * 2011-12-05 2012-06-27 中国科学院计算机网络信息中心 一种基因序列数据的筛选方法
US9444880B2 (en) * 2012-04-11 2016-09-13 Illumina, Inc. Cloud computing environment for biological data
WO2013166517A1 (en) * 2012-05-04 2013-11-07 Complete Genomics, Inc. Methods for determining absolute genome-wide copy number variations of complex tumors
EP2994749A4 (en) * 2013-01-17 2017-07-19 Edico Genome Corp. Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
EP2759953B1 (en) 2013-01-28 2022-03-02 Hasso-Plattner-Institut für Softwaresystemtechnik GmbH System and method for genomic data processing with an in-memory database system and real-time analysis
MX2015012031A (es) * 2013-03-15 2016-03-08 Nanobiosym Inc Sistemas y métodos para el análisis con dispositivo móvil de ácidos nucleicos y proteínas.
US10528758B2 (en) * 2014-05-02 2020-01-07 Koninklijke Philips N.V. Genomic informatics service

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115881225A (zh) * 2022-12-28 2023-03-31 云舟生物科技(广州)股份有限公司 生物信息序列的分析方法、计算机存储介质及电子设备
CN115881225B (zh) * 2022-12-28 2024-01-26 云舟生物科技(广州)股份有限公司 生物信息序列的分析方法、计算机存储介质及电子设备

Also Published As

Publication number Publication date
IL260118A (en) 2018-07-31
IL302704A (en) 2023-07-01
KR20180107148A (ko) 2018-10-01
JP2024023350A (ja) 2024-02-21
EP3403208B1 (en) 2021-06-16
JP2019510323A (ja) 2019-04-11
CA3008176A1 (en) 2017-07-20
MY193874A (en) 2022-10-30
HK1259309A1 (zh) 2019-11-29
ZA202308916B (en) 2024-05-30
EP3403208A1 (en) 2018-11-21
IL260118B (en) 2021-06-30
BR112018014086A2 (pt) 2018-12-11
JP7308616B2 (ja) 2023-07-14
JP2022130389A (ja) 2022-09-06
RU2761066C2 (ru) 2021-12-02
RU2018120941A (ru) 2020-02-13
ZA202210297B (en) 2023-07-26
IL283416B2 (en) 2023-10-01
EP3937178A1 (en) 2022-01-12
RU2018120941A3 (zh) 2020-08-31
IL283416A (en) 2021-06-30
RU2021134292A (ru) 2022-04-01
SG11201805562QA (en) 2018-07-30
CN108604260B (zh) 2022-06-10
AU2017207317A1 (en) 2018-06-28
AU2022228089A1 (en) 2022-09-29
IL283416B1 (en) 2023-06-01
MX2018008527A (es) 2019-05-15
WO2017123664A1 (en) 2017-07-20
CN108604260A (zh) 2018-09-28

Similar Documents

Publication Publication Date Title
CN108604260B (zh) 用于现场或基于云的dna和rna处理和分析的基因组学基础架构
US20210193261A1 (en) Genomic Infrastructure for On-Site or Cloud-Based Dna and Rna Processing and Analysis
US10068054B2 (en) Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
US9953135B2 (en) Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
AU2022263591B2 (en) Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
WO2014186604A1 (en) Bioinformatics systems, apparatuses, and methods executed on an integrated circuit processing platform
RU2804029C9 (ru) Геномная инфраструктура для локальной и облачной обработки и анализа днк и рнк
RU2804029C2 (ru) Геномная инфраструктура для локальной и облачной обработки и анализа днк и рнк

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination