质量分数压缩的制作方法

文档序号:33133120发布日期:2023-02-01 13:34阅读:64来源:国知局
质量分数压缩的制作方法
质量分数压缩
1.相关申请的交叉引用
2.本技术要求2020年11月5日提交的美国申请序列号63/110,308的权益,该申请的全部内容以引用方式并入本文。


背景技术:

3.在一些情况下,基因组测序描述鉴定核苷酸或基因组数据的其他组分部分的方法。计算机可用于分析一组或多组基因组数据,并且将组分部分(诸如核苷酸)的集合与其在给定参考基因组中的相应位置相关。以此方式,计算机可以将分子标志物的集合“映射”到参考基因组上。


技术实现要素:

4.通常,本公开涉及用于压缩由测序引擎基于基因组数据而生成的质量分数的方法、系统和计算机程序。在一个具体实施中,由测序引擎基于基因组数据而生成的质量分数最初可通过将一个或多个质量分数分组到表示一组质量分数的数据项序列内的单个数据项中来进行压缩。然后,可以将数据项序列进一步压缩或编码成最终压缩形式。
5.根据本公开的一个创新方面,公开了一种用于压缩核酸序列数据的方法。在一个方面,该方法可包括:由一个或多个计算机获得核酸序列数据,该核酸序列数据表示(i)读段序列,该读段序列包括对应于由核酸测序设备生成的多个碱基检出(base calls)的数据,和(ii)多个质量分数,其中该多个质量分数中的每个质量分数指示读段序列的特定碱基检出由核酸测序设备正确生成的可能性;由一个或多个计算机确定读段序列是否包括至少一个“n”碱基;基于确定读段序列不包括至少一个“n”碱基,由一个或多个计算机通过使用第一编码过程来生成第一经编码数据集,第一编码过程使用以(x-1)为底数的数对读段序列的质量分数中的每个质量分数进行编码,其中x是表示由核酸测序设备使用的不同质量分数的数量的整数;以及由一个或多个计算机使用第二编码过程对第一经编码数据集进行编码,从而压缩待压缩的数据。
6.其他版本包括执行由在计算机可读存储设备上编码的指令所定义的方法的动作的对应系统、装置和计算机程序。
7.这些和其他版本可任选地包括以下特征中的一个或多个特征。例如,在一些具体实施中,x等于3。
8.在一些具体实施中,第一编码过程可包括由一个或多个计算机通过将读段序列的该多个质量分数中的每组五个质量分数中的每个质量分数表示为以3为底数的数,将一组五个质量分数编码到单个字节中。
9.在一些具体实施中,该方法还可包括:基于确定读段序列包括至少一个“n”碱基,由一个或多个计算机通过使用第三编码过程来生成第二编码数据集,第三编码过程用于将读段序列的每组四个质量分数编码到存储器的单个字节中;以及由一个或多个计算机使用第四编码过程对第二编码数据进行编码。
10.在一些具体实施中,第二编码过程和第四编码过程是相同的。
11.在一些具体实施中,所获得的数据可包括fastq文件。
12.在一些具体实施中,第一经编码数据集是该多个质量分数的压缩版本。
13.在一些具体实施中,第二编码过程是压缩过程。
14.在一些具体实施中,压缩过程包括范围编码器的通过部分匹配(ppmd)进行预测的具体实施。
15.在一些具体实施中,对于第一经编码数据集的给定值,根据4位上下文相对于给定值在第一经编码数据集内的位置来压缩给定值。
16.根据本公开的另一个创新方面,公开了另一种用于压缩核酸序列数据的方法。在一个方面,该方法可包括:由一个或多个计算机获得核酸序列数据,该核酸序列数据表示(i)读段序列,该读段序列包括对应于由核酸测序设备生成的多个碱基检出的数据,和(ii)多个质量分数,其中该多个质量分数中的每个质量分数指示读段序列的特定碱基检出由核酸测序设备正确生成的可能性;由一个或多个计算机确定该多个质量分数中每个质量分数组的发生频率,其中每个质量分数组包括该多个质量分数的质量分数子集;对于该多个质量分数的第一子集中的每个特定质量分数:由一个或多个计算机确定质量分数是具有满足预先确定的阈值的发生频率的特定质量分数组的成员;基于确定质量分数是具有满足预先确定的阈值的发生频率的特定质量分数组的成员,由一个或多个计算机使用预先确定的组映射来生成将用作减小序列中的单个条目的第一数据,其中将用作减小序列中的单个条目的第一数据表示特定质量分数组;以及由一个或多个计算机通过聚合用于特定质量分数组中的每个特定质量分数组的所生成的第一数据来生成减小序列。
17.其他版本包括执行由在计算机可读存储设备上编码的指令所定义的方法的动作的对应系统、装置和计算机程序。
18.这些和其他版本可任选地包括以下特征中的一个或多个特征。例如,在一些具体实施中,所获得的数据包括fastq文件。
19.在一些具体实施中,该多个质量分数中的每个质量分数是表示质量分数的ascii值的数据。
20.在一些具体实施中,该方法还包括:对于该多个质量分数的第二子集中的每个特定质量分数:由一个或多个计算机确定质量分数的序列的第二子集中的特定质量分数不是具有满足预先确定的阈值的发生频率的特定质量分数组的成员;以及由一个或多个计算机使用预先确定的单个映射来生成将用作减小序列中的单个条目的第二数据,其中将用作减小序列中的单个条目的第二数据表示不是具有满足预先确定的阈值的发生频率的特定质量分数组的成员的质量分数,其中预先确定的单个映射定义多个单个质量分数中的每个单个质量分数与对应的单个条目之间的一对一映射。
21.在一些具体实施中,由一个或多个计算机生成减小序列可包括:由一个或多个计算机聚合用于特定质量分数组中的每个特定质量分数组的所生成的第一数据;以及由一个或多个计算机聚合用于不是具有满足预先确定的阈值的发生频率的特定质量分数组的成员的质量分数中的每个质量分数的所生成的第二数据。
22.在一些具体实施中,该方法还可包括由一个或多个计算机识别该多个质量分数中的多个质量分数组。
23.在一些具体实施中,预先确定的组映射定义多个不同的质量分数组中的每个质量分数组与对应的单个条目之间的一对一映射。
24.根据本公开的另一个创新方面,公开了另一种用于压缩核酸序列数据的方法。在一个方面,该方法可包括:由一个或多个计算机获得核酸序列数据,该核酸序列数据表示(i)读段序列,该读段序列包括对应于由核酸测序设备生成的多个碱基检出的数据,和(ii)多个质量分数,其中该多个质量分数中的每个质量分数指示读段序列的特定碱基检出由核酸测序设备正确识别的可能性;由一个或多个计算机确定该多个质量分数中每个质量分数组的发生频率,其中每个质量分数组包括该多个质量分数的质量分数子集;对于该多个质量分数的第一子集中的每个特定质量分数:由一个或多个计算机确定该多个质量分数的第一子集中的特定质量分数不是具有满足预先确定的阈值的发生频率的特定质量分数组的成员;由一个或多个计算机使用预先确定的单个映射来生成将用作减小序列中的单个条目的第一数据,其中将用作减小序列中的单个条目的第一数据表示不是具有满足预先确定的阈值的发生频率的特定质量分数组的成员的质量分数;以及由一个或多个计算机通过聚合用于不是具有满足预先确定的阈值的发生频率的特定质量分数组的成员的质量分数中的每个质量分数的所生成的第一数据来生成减小序列。
25.其他版本包括执行由在计算机可读存储设备上编码的指令所定义的方法的动作的对应系统、装置和计算机程序。
26.这些和其他版本可任选地包括以下特征中的一个或多个特征。例如,在一些具体实施中,所获得的数据包括fastq文件。
27.在一些具体实施中,该多个质量分数中的每个质量分数是表示质量分数的ascii值的数据。
28.在一些具体实施中,方法还可包括:对于该多个质量分数的第二子集中的每个特定质量分数:由一个或多个计算机确定质量分数是具有满足预先确定的阈值的发生频率的特定质量分数组的成员;以及基于确定质量分数是具有满足预先确定的阈值的发生频率的特定质量分数组的成员,由一个或多个计算机使用预先确定的组映射来生成将用作减小序列中的单个条目的第二数据,其中将用作减小序列中的单个条目的第二数据表示特定质量分数组,其中预先确定的组映射定义多个不同的质量分数组中的每个质量分数组与对应的单个条目之间的一对一映射。
29.在一些具体实施中,由一个或多个计算机生成减小序列可包括:由一个或多个计算机聚合用于不是具有满足预先确定的阈值的发生频率的特定质量分数组的成员的质量分数中的每个质量分数的所生成的第一数据;以及由一个或多个计算机聚合用于特定质量分数组中的每个特定质量分数组的所生成的第二数据。
30.在一些具体实施中,该方法还可包括由一个或多个计算机识别该多个质量分数中的多个质量分数组。
31.在一些具体实施中,预先确定的单个映射定义多个单个质量分数中的每个单个质量分数与对应的单个条目之间的一对一映射。
32.本文参考详细描述、附图和所附权利要求书描述了本公开的这些和其他创新方面。
附图说明
33.图1是示出用于编码(例如,压缩)具有第一数据格式的质量分数序列的系统的示例的图。
34.图2是示出用于编码(例如,压缩)具有第一数据格式的质量分数序列的过程的示例的流程图。
35.图3是示出用于编码(例如,压缩)具有第二数据格式的质量分数序列的系统的示例的图。
36.图4是示出用于编码(例如,压缩)具有第二数据格式的质量分数序列的过程的示例的流程图。
37.图5是示出用于解压缩具有第一数据格式的质量分数序列的过程的示例的流程图。
38.图6是示出用于解压缩具有第二数据格式的质量分数序列的过程的示例的流程图。
39.图7是示出用于确定质量分数的压缩方法的过程的示例的流程图。
40.图8是用于编码具有第一数据格式的质量分数序列的过程的实验结果的图形描绘
41.图9是用于编码具有第二数据格式的质量分数序列的过程的实验结果的图形描绘
42.图10是可用于实施用于编码具有第一数据格式的质量分数序列的过程的计算机系统部件的图。
43.各种附图中类似的参考标号和名称指示类似的元件。
具体实施方式
44.本公开涉及用于压缩表示由核酸测序设备生成的读段序列的质量分数序列的数据的方法、系统和计算机程序。质量分数序列中的每个质量分数提供了读段序列中的对应碱基由核酸测序设备正确测序的可能性的指示。与不利用本文所述的技术的常规方法相比,本文所公开的方法和系统能够实现更快的压缩速度和更小的压缩比。通过执行预压缩编码步骤来减小表示由压缩引擎处理的质量分数序列的输入数据的大小,从而实现更快的压缩速度和更小的压缩比。因为压缩引擎接收并处理表示质量分数序列的大小减小的输入,所以相对于常规方法,压缩引擎可更快地执行输入数据的压缩并且实现大小更小的压缩文件。因此,本公开的压缩方法能够实现比常规系统更高的压缩比,其中压缩比等于未压缩文件大小除以压缩文件大小。
45.通常,本公开描述了在将表示质量分数序列的数据输入到压缩引擎中之前对表示质量分数序列的数据执行初始编码阶段的系统和方法。可相对于特定示例描述这种方法的益处。在一个或多个第一具体实施中,质量分数序列中的每个质量分数可表示为8位(或一个字节)ascii值。在本文所述的此类第一具体实施中,本公开可以对质量分数序列中的质量分数的此类8位表示执行初始编码,以将质量分数的8位表示减小为质量分数的2位表示或1.6位表示,因此使得4个质量分数或5个质量分数分别能够被编码到单个字节中。因此,此类初始编码阶段可显著地且可预测地将输入到压缩引擎的输入数据大小减小为质量分数的初始表示的大小的四分之一或五分之一。
46.然而,本公开不限于将质量分数的8位表示减小到质量分数的2位表示或质量分数
的1.6位表示以用于输入到压缩引擎。相反,可以用质量分数的其他大小的表示来实现类似比率的减小。部分地提供了这些示例以突出由本公开实现的技术改进。
47.此外,本公开的其他第二具体实施描述了对表示质量分数序列的数据执行操作以生成用于输入到压缩引擎中的减小序列集的其他初始阶段编码引擎。此类第二具体实施提供了与上述具体实施相似的技术益处(例如,与常规方法相比,更快的压缩速度和更高的压缩比)。然而,由于在数据输入到压缩引擎中之前,输入数据的初始尺寸减小,而初始尺寸减小是可变的并且与质量分数的自发分组或非分组相关,因此尽管这些第二具体实施仍然得到比常规方法更快的压缩速度、更小的压缩文件大小和更高的压缩比,但是最终可具有比本公开上述第一具体实施更快的速度和更不可预测的压缩比,后者在每个阶段可具有限定的数据大小。
48.通常,如本文所用,术语“编码”是指由一个或多个软件引擎、一个或多个硬件引擎(例如,处理器)或它们的组合执行的过程,其包括接收第一组数据并处理第一组数据以生成表示呈不同形式的第一组数据的第二组数据。在一些实施方案中,第二组数据可用比接收到的第一组数据更少的存储器空间存储。例如,对数据进行编码的一种形式可包括例如用压缩引擎将数据压缩成比压缩之前数据的大小更小的大小。
49.图1是示出用于压缩具有第一数据格式的质量分数序列的系统100的示例的图。第一数据格式可以将“x”个不同质量分数分配给读段序列中的对应碱基,其中“x”是小于给定阈值的任何正整数。可基于使得使用图1中所描绘的系统100比其他系统诸如图3中所描绘的系统300更有效或实用的唯一质量分数的数量来确定给定阈值。例如,给定阈值可以是8。如果“x”小于8,则可以由系统100处理对应的质量分数。通过特定示例,在一些具体实施中,“x”可等于4,从而指示第一数据格式可使用4个不同质量分数中的任一个来指示由核酸测序设备生成的读段序列的一个或多个碱基检出正确的可能性。在一些具体实施中,可能性可包括在对应于质量分数的一个或多个碱基检出处发生测序错误的概率。在一些实施方案中,测序错误可包括由核酸测序设备针对读段序列中的特定位置进行的不正确的碱基检出。例如,测序设备可能针对读段序列中的特定位置确定由字母a表示的腺嘌呤的碱基检出,而实际上,正确的碱基检出应是由字母c表示的胞嘧啶。给定碱基检出的低质量分数可指示此类错误可能性更高,而高质量分数可指示此类错误可能性更低。碱基检出可包括由核酸测序设备生成的数据,该数据表示读段序列的特定核苷酸。
50.系统100被配置为从一个或多个数据源接收输入数据102。在一些具体实施中,该一个或多个数据源可包括核酸测序设备。核酸测序设备可以是下一代测序设备,诸如6000、2000等。在其他具体实施中,该一个或多个数据源可包括在计算设备上操作的一个或多个处理器,诸如平板电脑、台式计算机、一个或多个服务器计算机或它们的组合。在一些具体实施中,可经由一个或多个网络从该一个或多个数据源接收输入数据102。该一个或多个网络可包括有线以太网网络、有线光网络、无线网络、lan、wan、wi-fi网络、蜂窝网络、互联网或它们的任何组合。在一些具体实施中,输入数据102可经由直接连接诸如usb电缆连接、usb-c电缆连接等从一个或多个数据源接收。在又一些具体实施中,整个系统100可托管在该一个或多个数据源内。例如,在一些具体实施中,整个系统100可以由核酸测序设备托管。
51.系统100可包括接收输入数据102的输入引擎。输入数据102可包括多个记录,每个
记录包括描述读取序列的数据以及描述一系列核苷酸或碱基的质量分数的数据,该读段序列包括对应于一系列碱基检出的数据。碱基检出可包括由核酸测序仪设备生成的数据,该数据对应于或表示由核酸测序仪设备测序的dna片段的核苷酸。然而,为了本公开的目的,术语碱基检出和核苷酸可以在全文中互换使用,以指代由核酸测序仪生成的数据,该数据对应于读段序列的字母诸如a、c、t或g等。下文更详细地描述了此类字母的含义。
52.在每个记录中,质量分数序列中的每个质量分数可对应于读段序列中的特定核苷酸或碱基。例如,在图1的示例中,质量分数序列“f#ffff...f;ff”中的第一质量分数“f”对应于读段序列“cntgta...ataag”中的第一核苷酸或碱基。在一些具体实施中,输入数据102可包括一个或多个fastq文件,并且该多个记录中的每个记录可包括fastq文件的一部分,在本文中称为fastq记录。fastq文件的每个部分可包括一个读段序列和该读段序列的对应的质量分数序列。
53.每个读段序列可以先前由一个或多个核酸测序设备通过由该一个或多个核酸测序仪对生物样品进行测序来生成。生物样品可包括任何活生物体(诸如人、动物或植物)的核酸样品。每个读段序列包括来自限定词汇表的字母串。例如,最小词汇表可以由一组五个符号表示:{a,c,g,t,n}。字母a、c、g和t表示存在于脱氧核糖核酸(dna)中的四种类型的核苷酸,即腺嘌呤、胞嘧啶、鸟嘌呤和胸腺嘧啶。在核糖核酸(rna)中,胸腺嘧啶被尿嘧啶(u)替代。核酸测序设备可使用字母“n”来指示测序设备无法在读段序列中由“n”占据的特定位置处检出任何碱基,因此未能确定读段序列中该位置的实际和正确的性质。字母a、c、g和t或u的使用是常见的,因为这些字母表示每个相应核苷酸的首字母。然而,本公开不限于使用字母“n”来表示所生成的读段序列中未确定的位置。相反,核酸测序设备可使用任何字母或符号来表示读段序列中核酸测序设备无法准确地检出正确的碱基的位置。应当理解,在本文所述的具体实施中,用于表示未知碱基的字母或符号等效于字母“n”的用途。
54.存储读段序列的碱基的质量分数可具有许多有用的应用。然而,给定活生物体(诸如人)的测序基因组可包括多于30亿个碱基和对应的多于30亿个对应质量分数。对应于所得质量分数集的数据可以非常大(例如,数千兆字节至兆兆字节,取决于测序深度),并且可能需要压缩以便有效地存储、传输或归档质量分数信息。参考图1描述的本公开的方面提供了一种多阶段压缩方法,其依赖于初始编码引擎来准备用于压缩引擎的输入数据集。通过在使用压缩引擎的稍后阶段之前基于输入数据102的固有性质对数据进行初始编码,系统100可实现高的压缩比,同时维持快的压缩速度。所得压缩质量分数可具有减小的存储器占用,这可减少相关存储器存储装置的操作成本,以及在访问或分析所得压缩质量分数时增加的处理速度。出于本公开的目的,“引擎”可包括一个或多个软件模块、一个或多个硬件模块或它们的任何组合。
55.在阶段a处,分类器引擎104可获得输入数据102,并且基于输入数据102的特定部分的属性将输入数据102的目标或特定部分路由到不同的初始质量分数编码引擎。在本公开的上下文中,获得的过程是指接收、检索或以其他方式获取的过程。在一些具体实施中,分类器引擎104可用作决策引擎,该决策引擎确定是否应将输入数据102的每个特定部分提供给初始质量分数编码引擎v1 106或初始质量分数编码引擎v2 118。在对其接收到的输入数据102的部分执行其相应初始编码操作之后,初始编码引擎v1、v2中的每一者可以将其相应的经编码输出114、126提供给压缩引擎116作为输入。压缩引擎可处理其接收作为输入的
经编码输出114、126,并且可生成最终输出128,该最终输出是输入数据102的压缩版本。
56.更详细地,在图1的阶段a处,由分类器引擎104获得的输入数据102可包括第一记录102a、第二记录102b和第i记录102c。在图1的示例中,第一记录102a、第二记录102b和第i记录102c可以是fastq文件的部分,在本文中也称为fastq记录。fastq记录可包括记录标头(例如,“@a0:90:h46:1
…”
),该记录标头识别fastq记录所源自的fastq文件并将该fastq记录与其他fastq记录区分开。fastq记录可包括表示由核酸测序仪生成的读段序列的数据。fastq记录还可包括对应于fastq记录序列的质量分数序列。fastq记录还可包括一个或多个分隔符以便隔开一个或多个数据部分,例如,记录标头、质量分数序列、序列等。
57.在图1的示例中,输入数据102被示出为具有三个数据记录,然而,可以在输入数据102内包括任何数量的记录。该三个数据记录在图1的后续过程中示出,但可以用类似的方式处理任何数量的记录。在阶段b处,分类器引擎104可基于一个或多个分类规则来确定输入数据102的第一记录102a、第二记录102b和第i记录102c中的每一者的分类。在一些具体实施中,可基于相应fastq记录中的读段序列的碱基检出来确定分类。
58.在一些具体实施中,例如,分类器引擎104可基于fastq记录中的读段序列是否包括至少一个“n”碱基对每个fastq记录进行分类或将其路由到初始质量分数编码引擎v1、v2。如果确定fastq记录的读段序列包括至少一个“n”碱基,则可以将fastq记录路由到初始质量分数编码引擎v1 106。另选地,如果确定fastq记录的读段序列不包括至少一个“n”碱基,则可以将fastq记录路由到初始质量分数编码引擎v2 118。然而,这仅仅是分类规则的一个示例,并且认为可根据本公开使用其他类型的分类器规则对fastq记录进行分类并且在初始质量分数编码引擎v1、v2之间路由。在一些具体实施中,分类器引擎104使用输入数据的其他元素对输入数据进行分类。例如,代替基于“n”碱基的存在或不存在进行分类,分类器引擎104可基于“n”碱基或其他碱基的百分比或确定比例进行分类。此外,分类器引擎104可使用其他碱基检出或对应数据(例如,质量分数)对一个或多个fast q记录或相关数据进行分类或路由。
59.在图1的示例中,分类器引擎104可以在阶段b基于第一fastq记录102a和第i fastq记录102c的相应读段序列的碱基检出来确定第一fastq记录102a和第i fastq记录102c两者均包括表示读段序列具有至少一个“n”碱基的数据。基于确定第一fastq记录102a和第i fastq记录102c各自具有至少一个“n”碱基,分类器引擎104可以将第一fastq记录102a和第i fastq记录102c路由到初始质量分数编码引擎v1 106。在一些具体实施中,分类器引擎104例如在不发送对应于第一fastq记录102a或第i fastq记录102c的一个或多个完整fastq记录的情况下,对对应于第一fastq记录102a和第i fastq记录102c的数据进行路由。在将对应于第一fastq记录102a和第i fastq记录102c的数据路由到初始质量分数编码引擎v1 106之后,系统100的执行可以在阶段c继续。
60.在阶段c处,初始质量分数编码引擎v1 106可获得分别对应于第一fastq记录102a和第i fastq记录102c的读段序列的第一fastq记录102a和第i fastq记录102c的相应质量分数序列。在此示例中,由初始质量分数编码引擎v1 106接收的质量分数序列可包括4个质量分数,并且4个质量分数中的每个质量分数由8位ascii值“f”、“:”、“,”和“#”表示,其中“#”表示“n”碱基的质量分数。然而,在其他具体实施中,可存在少于或多于4个质量分数,并且其他字符或符号也可用于表示类似信息。
61.初始质量分数编码引擎v1 106可以在阶段c执行对第一记录102a中的质量分数序列的初始编码。由初始质量分数编码引擎v1 106执行的这种初始编码可以对来自第一fastq记录102a中的质量分数序列的每个质量分数进行编码。该初始编码可包括将质量分数“f”、“:”、“,”或“#”中的每一者的8位ascii表示编码成每个相应质量分数的2位表示。在一些具体实施中,对第一fastq记录102a的质量分数序列的每个质量分数的每个8位ascii表示进行编码可导致初始质量分数编码引擎106产生每字节包括4个质量分数的输出数据114。由初始质量分数编码引擎v1 106生成的这种编码比将输入到压缩引擎116的输入数据记录的大小减小为4分之一。在其他具体实施中,可以通过将更多或更少的质量分数或不同数据大小的质量分数压缩到一个或多个信息位中来实现其他压缩比。
62.初始质量分数编码引擎v1 106可继续对被路由到初始质量分数填压引擎v1 106的每个fastq记录执行初始编码过程。例如,初始质量分数编码引擎v1 106可接收第i fastq记录102c并且将质量分数从8位ascii值编码到质量分数的2位表示中。该过程可继续直到由初始质量分数填压引擎v1接收到的质量分数序列已被处理以将其初始编码生成为2位质量分数。
63.更详细地,初始质量分数编码引擎v1 106可通过执行项108、110和112中所示的过程来执行将8位质量分数编码成2位质量分数的输出二进制流114。质量分数编码引擎v1 106可以从第一记录102a获得第一4个质量分数。在一些具体实施中,这可包括初始质量分数编码引擎v1 106获得质量分数的相应ascii值。在其他具体实施中,这可包括获得质量分数的其他表示并且将每个相应质量分数映射为对应的ascii值,如110所示。例如,第一4个质量分数“f”、“#”、“f”和“f”可以由初始质量分数编码引擎v1 106映射为其对应的ascii值70、35、70和70。表110中示出了使用具有“n”的第一数据格式的其他质量分数的映射。然后,质量分数的ascii表示可被映射为相应质量分数类别,其中每个类别对应于一个质量分数类别。在该示例中,质量分数类别由0、1、2和3表示,因为存在一系列4个可能的质量分数。然而,基于正在使用的质量评分系统,可能存在更多类别(例如,0、1、2、3、4、5等)或更少类别(例如,0、1)。虽然在该示例中,0对应于未知碱基并且3对应于高碱基质量分数,但是本公开不限于该具体实施。相反,例如,代替整数,可使用满分100的百分比、基于语言的分数值(例如,低、中和高)或本领域已知的其他指示值来表示质量分数。
64.在图1的示例中,初始质量分数编码引擎v1 106可使用对应于4个基于ascii的质量分数“f”、“#”、“f”和“f”的质量分数值3、0、3和3来执行计算。初始质量分数编码引擎v1 106可使用式诸如q1+4*q2+42*q3+43*q4来计算经质量编码的分数,其中q1、q2、q3和q4表示质量分数值。在质量分数值为3、0、3和3的情况下,该式可被评估为3+4*0+42*3+43*3,其等于243,如项112中所示。初始质量分数编码引擎v1 106可通过生成数243的二进制表示来生成这四个质量分数的对应二进制表示。该二进制表示是11110011,然后可以将其添加到输出二进制流114中。该过程可迭代地继续,直到第一fastq记录102a的质量分数序列中的质量分数中的每个质量分数被初始编码成输出二进制流114。
65.在对第一fastq记录102a的质量分数序列进行初始编码之后,初始质量分数编码引擎v1 106可继续对接收到的每个后续fastq记录执行初始编码过程。例如,初始质量分数编码引擎v1 106可继续以上文参考第一fastq记录102a所述的相同方式执行对第i fastq记录102c的初始编码。初始质量分数编码引擎v1 106可继续获得后续质量分数,并且以与
项108中所示的初始4个质量分数类似的方式执行初始编码。
66.在阶段d处,初始质量分数编码引擎v1 106可以将输出二进制流114发送到压缩引擎116。然后,压缩引擎116可以对对应于预先确定的压缩方法的输出二进制流114执行后续压缩。通常,压缩引擎116可采用任何压缩过程以进一步压缩或压缩输出二进制流114的大小。例如,在一些具体实施中,压缩引擎116可使用zstandard(zstd)库11级来执行压缩。然而,本公开不限于此。相反,在一些具体实施中,可使用其他压缩方法,包括zstd库的其他级以及其他压缩库。通常,可使用本领域已知的任何压缩方法或压缩方法的组合。
67.在其他情况下,分类器引擎104可通过应用一个或多个分类规则来确定接收到的fastq记录包括不包括至少一个“n”的读段序列。基于确定接收到的fastq不包括至少一个“n”,分类器引擎104可以将对应于第二fastq记录102b的数据路由到初始质量分数编码引擎v2 118。
68.因为第二fastq记录102b不包括任何n,所以潜一系列潜在质量分数可以是潜在质量分数数量减一。即,如果分类器引擎104确定第二fastq记录包含“x”个潜在质量分数,则可以在初始质量分数编码引擎v2 118处处理的潜在质量分数是“x
”‑
1个。在该具体实施中,质量分数序列具有仅3个不同质量分数。因此,在该示例中,仅3个不同质量分数被单独至少部分地压缩,以实现更高的压缩比。
69.在阶段e中,初始质量分数编码引擎v2 118可获得第二记录102b的质量分数序列。项120示出了第二记录102b的质量分数序列的质量分数的子集。更详细地,初始质量分数编码引擎v2 1118可通过执行项120、122和124中所示的过程来执行将8位质量分数编码成1.6位质量分数的输出二进制流126。初始质量分数编码引擎v2 118可以从第二fastq记录102b获得确定数量的质量分数,例如,5个质量分数。在一些具体实施中,这可包括初始质量分数编码引擎v2 118仅获得质量分数的相应ascii值。在其他具体实施中,这可包括获得质量分数的另一表示并且将每个相应质量分数映射为对应的ascii值,如122所示。例如,第一5个质量分数“:”、“f”、“:”、“,”、“f”和“f”可以由初始质量分数编码引擎v2 118映射为其对应的ascii值58、70、58、44和70。
70.然后,质量分数的ascii表示可被映射为相应质量分数类别,其中每个类别对应于一个质量分数类别。在该示例中,质量分数类别由0、1和2表示,因为存在一系列3个可能的质量分数(即,x个可能的质量分数-1,因为没有fastq记录中的“n”碱基被路由到初始质量分数编码引擎v2118)。在该示例中,初始质量分数编码引擎v2 118可通过将8位ascii质量分数表示为以3为底数的数,将8位ascii质量分数编码成1.6位质量分数。使用底数3,因为这里存在3个唯一质量分数类别。
71.然而,本公开不限于上述示例。相反,在存在更多质量分数类别(诸如总共8个唯一质量分数类别)的具体实施中,初始质量分数编码引擎v2118可获得具有7个唯一质量分数类别的序列,其中原始的8个唯一质量分数类别包括“n”碱基的质量分数。在此类具体实施中,可使用以7为底数的数来表示初始质量分数编码引擎v2 118的初始编码。
72.类似于项112,项124示出了由与第一组质量分数相关的初始编码引擎118执行的计算。在这种情况下,初始质量分数填压引擎v2 118使用式诸如q1+3*q2+32*q3+33*q4+34*q5来计算经质量填压的分数,其中q1、q2、q3、q4和q5中的每一者表示质量分数值。在质量分数值为1、2、1、0和2的情况下,该式可被评估为1+3*2+32*1+33*0+34*2,其等于178,如项124中所
示。然后可以将178的二进制表示,例如,10110010,添加到输出二进制流126中。
73.在图1的示例中,初始质量分数填压引擎v2 118可以将5个8位质量分数编码到1个字节的单个ascii字符中,从而将第二记录102b的每个质量分数压缩为5分之一。在其他具体实施中,可以通过将更多或更少的质量分数或不同数据大小的质量分数压缩到一个或多个信息位中来实现其他压缩比。
74.类似于初始质量分数编码引擎v1 106,初始质量分数编码引擎v2 118可获得后续质量分数,并且以与项120中所示的初始5个质量分数类似的方式执行编码。在阶段f中,初始质量分数编码引擎v2 118可以将输出二进制流126提供给压缩引擎116作为输入。然后,压缩引擎116可以对对应于预先确定的压缩方法的输出二进制流126执行后续压缩。例如,在一些情况下,压缩引擎116基于范围编码器的通过部分匹配(ppmd)进行预测的具体实施来执行压缩以压缩字节串。在一些具体实施中,代替ppmd具体实施或除此之外,可使用本领域已知的其他压缩方法。通常,压缩引擎116可使用任何压缩或压缩方法的组合,诸如本领域已知的任何压缩方法。
75.在一些具体实施中,馈送到范围编码器的输出二进制流126的每个符号可根据表示先前分数中最高质量分数值的数量的4位上下文来计算。例如,可以将4位上下文计算为30个先前质量分数中的最高质量分数的总数除以2。这种特定的4位上下文公式可产生在4位上下文中拟合的0至15范围内的值。通过使用基于4位上下文或其他上下文的编码方法,系统100可考虑特定质量分数(例如,最高分数“f”)的多个相邻实例,其可以是后续分数的良好预测因子。在一些具体实施中,根据存储器、计算或其他要求使用更大或更小的上下文。例如,更大的上下文可产生更高的压缩比,但可能需要更多的存储器空间和计算时间。
76.在一些具体实施中,可以在系统100内使用其他编码引擎。例如,除了初始质量分数编码引擎v1 106和初始质量分数编码引擎v2 118之外,具体实施还可包括基于由分类器引擎104定义的特定标准的第三编码引擎。在一些具体实施中,可使用多于3个引擎。在一些具体实施中,分类器引擎104可确定输入数据102内仅使用2个不同质量分数的第三组记录。以此方式,系统100可针对具有仅2个不同质量分数的组实现甚至更大的压缩比。
77.为了便于描述,使用阶段a至g。尽管由系统100执行的过程可以按由阶段a至g指示的次序发生,但是在其他具体实施中,特定阶段的次序可以是不同的。在一些具体实施中,两个或更多个阶段可同时发生。
78.图2是示出基于第一输入数据格式的用于质量分数压缩的过程200的示例的流程图。过程200可以由一个或多个电子系统(例如,图1的系统100)执行。
79.过程200包括获得由基因测序设备生成的遗传读段序列(202)。例如,如图1所示,获得输入数据102并将其提供给系统100。输入数据102可包括一个或多个记录,每个记录包括表示读段序列的数据,该读段序列包括对应于由核酸测序设备生成的多个碱基检出的数据,以及描述该多个碱基检出的质量分数的数据。质量分数中的每个质量分数对应于读段序列的特定碱基检出。
80.在一些具体实施中,使用字符来表示输入数据102内的质量分数。例如,第一fastq记录102a的质量分数序列“f#ffff...f;ff”ff”的第一质量分数“f”对应于第一fastq记录102a的读段序列“cntgta...ataag”中的第一核苷酸或碱基(在下文中称为“碱基”)。在一些具体实施中,输入数据102可包括一个或多个fastq文件,并且该多个记录中的每个记录可
包括fastq文件的一部分,在本文中称为fastq记录。fastq文件的每个部分可包括一个读段序列和该读段序列的对应的质量分数序列。
81.过程200可包括获得对应于基因读段序列的多个质量分数(204)。例如,如图1所示,输入数据102包括第一记录102a、第二记录102b和第i记录102c。第一记录102a、第二记录102b和第i记录102c中的每一者包括遗传序列和对应于遗传序列的质量分数序列。例如,第一记录102a包括遗传序列“cntgta...ataag”和对应的质量分数序列“f#ffff...f:,ff”,其中质量分数序列的每个值指示对应的遗传序列的特定位置处的测序错误的可能性。
82.过程200包括确定基因读段序列包括至少一个“n”碱基(206)。例如,如图1所示,分类器引擎104获得包括一个或多个基因读段序列的输入数据102。输入数据102包括第一记录102a。第一记录102a包括遗传序列“cntgta...ataag”。遗传序列“cntgta...ataag”包括碱基“n”。分类器引擎104可确定第一记录102a的基因序列“cntgta...ataag”包括碱基“n”并且可以将对应于第一记录102a的数据路由到初始质量分数编码引擎v1 106。类似地,分类器引擎104可获得第二记录102b。第二记录102b包括不包括碱基“n”的遗传序列“gtctag...cactt”。分类器引擎104可确定第二记录102b的基因序列“gtctag...cactt”不包括碱基“n”并且可以将对应于第二记录102b的数据路由到初始质量分数编码引擎v2 118。
83.过程200包括通过使用以x为底数的数对质量分数中的每个质量分数进行编码来生成第一经编码数据集,其中x是表示由基因测序设备使用的不同质量分数的数量的整数(208)。例如,初始质量分数编码引擎v1 106获得第一记录102a的质量分数序列。第一记录102a的质量分数序列包括4个唯一质量分数:“f”、“:”、“,”和“#”。在其他具体实施中,可使用其他合适的符号或值。然后,初始质量分数编码引擎v1 106可基于以4为底数的数来计算整数。例如,如图1的项108所示,初始质量分数编码引擎v1106基于项110中所示的映射来生成对应于基因质量分数“f#ff”的值3033。然后,初始质量分数编码引擎v1 106基于值3033来生成整数,如同值3033是用以4为底数的符号的形式书写的。如项112所示,所得整数等于243,其可以用8个二进制位书写为“11110011”。用于生成质量分数组(诸如质量分数“f#ff”)的二进制形式的公式可被构建成使得该整数值可使用8位或更少位来表示。例如,由初始质量分数编码引擎v1 106使用的公式可被构建成使得该整数值小于255。
84.又如,初始质量分数编码引擎v2 118获得第二记录102b的质量分数序列。与第一记录102a的质量分数序列相比,第二记录102b的质量分数序列包括3个唯一质量分数:“f”、“:”和“,”。在其他具体实施中,可使用其他合适的符号或值。然后,初始质量分数编码引擎v2 118可基于以3为底数的数来计算整数。因为存在更少的唯一质量分数,所以初始质量分数编码引擎v2 118可以将附加的质量分数(例如,5个而不是4个)编码到8个二进制位中。例如,如图1的项124所示,初始质量分数编码引擎v2 118基于项122中所示的映射来生成对应于基因质量分数“:f:,f”的值12102。然后,初始质量分数编码引擎v2 118基于值12102来生成整数,如同值12102是用以3为底数的符号的形式书写的。如项124所示,所得整数等于178,其可以用8个二进制位书写为“10110010”。用于生成质量分数组(诸如质量分数“:f:,f”)的二进制形式的公式可被构建成使得该整数值可使用8位或更少位来表示。例如,由初始质量分数编码引擎v2 118使用的公式可被构建成使得该整数值小于255。
85.过程200包括通过使用第二编码算法对第一经编码数据集进行编码来生成第二编
码数据集(210)。例如,如图1所示,压缩引擎116基于由初始质量分数编码引擎v1 106或初始质量分数编码引擎v2 118提供的输入来生成输出128。在一些具体实施中,压缩引擎116组合来自不同压缩过程的多个输出以生成输出128。例如,初始质量分数编码引擎v1 106和初始质量分数编码引擎v2 118两者均可生成用于压缩引擎116的数据,如经编码输出114和126中所示。
86.在一些具体实施中,压缩引擎116基于所获得的数据来执行一种或多种类型的压缩。例如,用于压缩初始质量分数编码引擎v1 106的输出的压缩过程可不同于用于压缩初始质量分数编码引擎v2 118的输出的压缩过程。如本文所讨论的,初始质量分数编码引擎v1 106的经编码输出114的压缩可包括使用zstandard(zstd)库11级(level 11)的压缩或其他形式的压缩。初始质量分数编码引擎v2 118的经编码输出126的压缩可包括使用范围编码器的通过部分匹配(ppmd)进行预测的具体实施的压缩或其他形式的压缩。在一些具体实施中,可使用围绕序列的给定值的上下文来压缩给定序列。例如,压缩引擎116可使用表示先前分数中最高质量分数值的数量的4位上下文。在一些情况下,可组合多个压缩过程以产生压缩输出。
87.图3是示出用于压缩具有第二数据格式的质量分数序列的系统的示例的图。系统300包括基于q40数据格式格式化的质量分数序列302。质量分数序列302由组识别引擎304、频率计数器引擎310、减小序列生成引擎316、单个映射引擎320、组映射引擎326和压缩引擎334处理以生成表示质量分数序列302的压缩版本的减小序列332和后续输出336。
88.在图3的阶段a中,生成质量分数序列302并将其发送到组识别引擎304。在图3的示例中,质量分数序列302由测序仪生成,该测序仪使用如上文所论述的q40数据格式对与碱基相关的质量分数进行编码。通常,使用大于阈值数量的唯一质量分数的任何测序仪可使用由图3中所示的系统300执行的过程或类似的过程来压缩所得输出数据。例如,如果测序仪使用大于8个唯一质量分数来编码对应于基因序列的质量分数,则测序仪可使用参考图3所讨论的编码和压缩过程。
89.在阶段b中,组识别引擎304获得质量分数序列302并且基于质量分数序列302来生成一个或多个组,如项306所示。在该具体实施中,组识别引擎304将相邻质量分数分组为3个一组。在其他具体实施中,可以在一个或多个组内包括其他数量的质量分数。如项316中所示,第一组3个质量分数是对应于质量分数序列302的字符的字符“@”、“c”和“@”。在图3的示例中,质量分数序列302的每个字符表示指示测序错误的可能性的质量分数。
90.组识别引擎304生成质量分数组308并将质量分数组308发送到频率计数器引擎310。在阶段c中,频率计数器引擎310获得质量分数组308并且确定质量分数组308内的每个组的发生次数,如项312中所示。
91.在一些具体实施中,组识别引擎304和频率计数器引擎310至少部分地并行工作。例如,组识别引擎304可基于质量分数序列302来识别单个组。然后,组识别引擎304可以将所识别的单个组发送到频率计数器引擎310。然后,频率计数器引擎310可确定所识别的单个质量分数组的发生次数。在一些情况下,从质量分数序列302生成组可包括识别质量分数序列302的一个或多个质量分数。通常,本说明书内描述的任何过程可以与另一过程按线程或同时运行,并且该两个或更多个过程可以在一个或多个设备或软件实例上运行。
92.频率计数器引擎310生成质量分数组频率314并将质量分数组频率314发送到减小
序列生成引擎316。质量分数组频率314可包括质量分数序列302中的一个或多个质量分数的发生次数。在阶段d中,减小序列生成引擎316可获得质量分数组频率314并且与单个映射引擎320和组映射引擎326两者通信。即,如果质量分数序列320的质量分数不是具有超过阈值数量的质量分数的质量分数组的一部分,则减小序列生成引擎316可以在阶段e处使用单个映射引擎320来生成减小序列332中的条目。另选地,如果质量分数序列320的质量分数是具有超过阈值数量的质量分数的质量分数组的一部分,则减小序列生成引擎316可以在阶段f处使用组映射引擎326。出于本公开的目的,减小序列332的“条目”或“单个条目”可包括减小序列332中的单个值,诸如“72”,其用于替代单个质量分数或质量分数组。
93.出于本说明书的目的,可通过使用质量分数的阈值数量和组中的质量分数数量的正或负表示来确定质量分数组是否具有超过阈值数量的质量分数。因此,符合本说明书的是确定质量分数组中的质量分数数量是否“满足”阈值,而不仅仅是确定质量分数数量是否大于阈值。这是因为此类关系可以被描述为具有4个质量分数的质量分数组超过3个质量分数的阈值,或者具有负4个质量分数的质量分数组不大于负3个质量分数的阈值。在任一情况下,质量分数组具有超过3个质量分数,无论阈值如何实施。
94.为了便于解释,在描述组映射引擎326的过程之前,本说明书现在描述单个映射引擎320的过程。然而,可使用同时处理和其他类似方法,使得单个映射引擎320不需要在组映射引擎326完成组映射过程之前完成单个映射过程。相反,将基于由减小序列生成引擎326处理的质量分数302的序列的特定质量分数来确定减小序列生成引擎316是调用单个映射引擎320还是组映射引擎326。
95.在阶段e中,单个映射引擎320获得质量分数序列302。单个映射引擎320使用质量分数序列302和单个映射字符列表322来生成预先确定的单个映射324,如项321中所示。在图3的示例中,单个映射字符列表322包括整数值0至63。质量分数序列302的ascii值包括值33至96。以此方式,质量分数序列302的每个值可被映射为在0与63之间的特定值。例如,质量分数序列302中对应于ascii值64的“@”字符可被映射为整数值31。类似地,给定质量分数序列中对应于ascii值65的“a”字符可被映射为整数值33,等等。
96.如预先确定的单个映射324中所示,对应于值33的ascii字符“!”被映射为在0与63之间的值0。对应于值34的ascii字符
““”
被映射为值1。类似地,对应于值95的ascii字符“_”被映射为值62,并且对应于值96的ascii字符“`”被映射为值63。在预先确定的单个映射324中未示出的其他映射也可由单个映射引擎320生成。
97.在其他具体实施中,可使用其他映射。例如,代替0至63,可使用更小或更大的范围,其中质量分数序列302的值(诸如从33至96的ascii值)被映射为在33与96之间的值。其他映射,诸如由组映射引擎326生成的映射,可占用除在33与96之间的值之外的值范围。在一些具体实施中,使用质量分数序列302的唯一质量分数的数量来确定用于映射质量分数序列302的质量分数的范围。例如,如果质量分数序列302包括63个唯一质量分数,则用于映射质量分数序列302的质量分数的范围可包括63个值。在一些具体实施中,使用其他范围。例如,如果质量分数序列302包括第一数量的唯一质量分数,则可例如通过单个映射引擎320基于唯一质量分数的第一数量来计算范围,以包括唯一质量分数的第一数量除以2或其他计算结果。在一些具体实施中,对用于确定映射范围的处理结果应用后续操作。例如,如果唯一质量分数的第一数量是奇数,则对唯一质量分数的第一数量应用的第一操作是除以
整数2,则第二操作可包括根据具体实施将对应的处理结果上舍入或下舍入。
98.在阶段f中,组映射引擎326获得质量分数组频率314。组映射引擎326使用质量分数组频率314或与质量分数序列302相关的其他数据以及组映射字符列表328来生成预先确定的组映射330,如项327中所示。在图3的示例中,组映射字符列表328包括对应于190个最频繁发生的组的整数值64至245。在一些具体实施中,可通过组映射引擎326映射更多或更少的组。例如,代替生成包括190个最频繁发生的组的预先确定的组映射330,组映射引擎326可生成包括200、230、185个或任何其他数量的最频繁发生的组的映射。对应于质量分数组频率314的ascii值包括值33至96。组映射引擎326可基于质量分数组频率314来确定用于映射的组的一部分。例如,组映射引擎326可确定特定数量的最频繁发生的组(例如,190个最频繁发生的组),并且向最频繁发生的组中的每个组分配值,例如,从64至254的整数值。
99.如在预先确定的组映射330中所示,在图3的示例中,由字符“acd”表示的质量分数组被映射为值64。由字符“fff”表示的质量分数组被映射为值72。由字符“hij”表示的质量分数组被映射为值73。在预先确定的组映射330中未示出的其他映射也可由组映射引擎326生成。
100.在其他具体实施中,可使用其他映射。例如,代替64至254,可使用质量分数组频率314内的组被映射在其中更小或更大的范围。例如,质量分数组频率314内的组可被映射为在0与255之间的值。其他映射,诸如由单个映射引擎320生成的映射,可占用除用于组映射的在0与255之间的值之外的值。
101.减小序列生成引擎316使用组映射引擎326和单个映射引擎320来处理质量分数序列302以便生成减小序列332。从质量分数序列302导出的数据可包括质量分数序列332本身。另选地,从质量分数序列302导出的数据可包括由频率计数器引擎310输出的数据。由频率计数器引擎310输出的数据可包括质量分数组频率314。减小序列332是来自预先确定的单个映射324和预先确定的组映射330的值的组合。
102.减小序列生成引擎316可处理质量分数序列302、质量分数组频率或两者,并且确定是使用单个映射引擎320还是组映射引擎326来生成减小序列332中的条目。属于预先确定的组映射330内的组的质量分数序列302内的组的发生被来自预先确定的组映射330的值替代。例如,“a”质量分数之后是“c”质量分数之后是“d”质量分数的发生被减小序列332中的值64替代。
103.对于不是预先确定的组映射330的组中的一个组的成员的质量分数,使用预先确定的单个映射324。例如,质量分数序列302的第一值是对应于ascii值64的字符“@”。字符“@”不是预先确定的组映射330内的组的成员,因为其出现在质量分数序列302内。然后,基于预先确定的单个映射324对字符“@”进行映射。基于预先确定的单个映射324对“@”的映射是值31。减小序列生成引擎316在减小序列332内对应于“@”的位置添加值31。
104.在阶段g中,减小序列生成引擎316使用预先确定的组映射330、预先确定的单个映射324和从质量分数序列302导出的数据来生成减小序列332,如上所述并且如项331所示。减小序列生成引擎316将减小序列332发送到压缩引擎334。
105.在阶段h中,压缩引擎334对减小序列332执行对应于预先确定的压缩方法的后续压缩。例如,在一些情况下,压缩引擎334基于范围编码器的通过部分匹配(ppmd)进行预测的具体实施来执行压缩以压缩减小序列332。在一些具体实施中,代替ppmd具体实施或除此
之外,可使用本领域已知的其他压缩方法。通常,压缩引擎334可使用任何压缩或压缩方法的组合,诸如本领域已知的任何压缩方法。压缩引擎334基于减小序列332来生成输出336作为由压缩引擎334使用的压缩方法的输入。输出336表示质量分数序列302的压缩版本。
106.在一些具体实施中,馈送到压缩引擎334的减小序列332的每个值根据1个字节上下文进行压缩。例如,对于减小序列332的给定值,减小序列332中的先前值可用作上下文,以便压缩减小序列332的给定值。可使用1个字节上下文根据范围编码器的ppmd具体实施或另一压缩或编码方法来压缩减小序列332。为了平衡速度、所得压缩输出或其他参数,可使用更大或更小的上下文。在一些情况下,输出336的所得压缩比可大于或等于每质量分数2位。例如,可以将4个或更多个质量分数压缩到1个字节或8位存储器空间中。通常,类似于图1的输出128的输出336可用于任何另外的过程或可根据具体实施存储。
107.为了便于描述,使用阶段a至h。尽管由系统300执行的过程可以按由阶段a至h指示的次序发生,但是在其他具体实施中,特定阶段的次序可以是不同的。在一些具体实施中,两个或更多个阶段可同时发生。
108.图4是示出用于压缩具有第二数据格式的质量分数序列的过程的示例的流程图。过程400可以由一个或多个电子系统(例如,图3的系统300)执行。
109.过程400包括获得由基因测序设备生成的遗传读段序列(402),以及获得对应于基因读段序列的多个质量分数(404)。例如,如图3所示,质量分数序列302由测序仪基于基因数据序列来生成并发送到组识别引擎304。在图3的示例中,质量分数序列302由测序仪生成,该测序仪使用如上文所论述的q40数据格式对与碱基相关的质量分数进行编码。通常,使用大于阈值数量的唯一质量分数的任何测序仪可使用由图3中所示的系统300执行的过程或类似的过程来压缩所得输出数据。例如,如果测序仪使用大于8个唯一质量分数来编码对应于基因序列的质量分数,则测序仪可使用参考图3所讨论的编码和压缩过程。
110.过程400包括确定该多个质量分数中每个质量分数组的发生频率(406)。例如,如图3所示,组识别引擎304获得质量分数序列302并且基于质量分数序列302内的该多个质量分数来生成多个质量分数组。在一些具体实施中,质量分数组包括在质量分数序列302内彼此相邻的质量分数。例如,如果质量分数序列302包括质量分数“@c@d f f f f...”,则在使用3个质量分数生成组的具体实施中,由组识别引擎304确定的组可包括质量分数“@c@”。
111.在一些具体实施中,组识别引擎304将一个或多个组发送到频率计数器引擎310,并且频率计数器引擎310确定每个质量分数组的发生频率。例如,频率计数器引擎310可针对由组识别引擎304确定的每个组确定该组在质量分数序列302内存在的发生次数。在图3的示例中,质量分数序列302的质量分数被分组为3个一组。然而,在其他具体实施中,可使用其他数量的质量分数。例如,组识别引擎304可确定具有4个质量分数、2个质量分数或任何其他数量的质量分数的组以生成质量分数组。
112.过程400包括:对于该多个质量分数中的每个质量分数,确定质量分数是否是具有满足预先确定的阈值的发生频率的特定质量分数组的成员(408)。例如,如图3所示,减小序列生成引擎316、单个映射引擎320和组映射引擎326基于预先确定的单个映射324和预先确定的组映射330来生成减小序列332。对于减小序列332中的每个质量分数,减小序列生成引擎316确定质量分数是否是被包括在预先确定的组映射330中的组的成员。如果质量分数是被包括在预先确定的组映射330中的组的成员,则将该质量分数以及该组的其他质量分数
编码为减小序列332中的单个条目。
113.在一些具体实施中,预先确定的组映射330的每个组满足预先确定的阈值。例如,预先确定的组映射330的每个组可以在质量分数序列302内发生预先确定的次数以被包括在组映射中。预先确定的组映射330的每个组可属于比质量分数序列302内的其他组更频繁地发生的预先确定数量的组。在图3的示例中,预先确定的组映射330包括190个最频繁发生的质量分数组。然后,可根据具体实施将阈值定义为对应于第191个最频繁发生的质量分数组、第190个最频繁发生的质量分数组等的发生次数。然后,预先确定的组映射330的190个最频繁发生的质量分数组都满足该阈值。
114.在一些具体实施中,可使用不同量的质量分数组来生成预先确定的组映射330。例如,可基于由测序仪使用的质量分数的数量来确定预先确定的组映射330的组的数量。然后,可生成映射以满足优化过程。例如,优化过程可包括使被编码为单个值的组的数量最大化并且使不属于预先确定的组映射330的质量分数组并且被编码为单个值的质量分数的数量最小化。要优化的参数可包括要包括在组映射(诸如图3的预先确定的组映射330)中的组的数量,以及用于在预先确定的组映射330内生成一个或多个组的质量分数的数量。单个映射(诸如图3的预先确定的单个映射324)中的质量分数的数量可对应于由测序仪使用以表示对应于基因序列读段的质量分数的唯一质量分数的数量。
115.在一些具体实施中,质量分数组基于在质量分数序列内出现在一起的相邻质量分数。例如,表示为“@c@d f f f f
…”
的质量分数序列302包括相邻质量分数组“fff”。相邻质量分数组“fff”被包括在预先确定的组映射330中。根据预先确定的组映射330,相邻质量分数组“fff”将由减小序列生成引擎316编码为单个值72。当然,在其他具体实施中,其他值可用于映射或编码目的。
116.在一些具体实施中,不是质量分数组的成员的分数被映射为减小序列内的单个条目。例如,在使用3个质量分数来生成质量分数组的具体实施中,表示为“@c@d f f f f
…”
的质量分数序列302的第一值“@”不是特定质量分数组的成员。因此,根据预先确定的单个映射324,第一值“@”在减小序列332中被编码为单个值31。在图3的示例中,预先确定的单个映射324是用于表示质量分数序列302中的质量分数的值与具有相同长度的新范围的一对一映射,使得不是预先确定的组映射330内的组的一部分的任何质量分数在减小序列332中被编码为原始值加或减用于生成预先确定的单个映射324的移位值。例如,在图3中,对应于不是质量分数组的成员的质量分数的单个值移位值33。可使用移位来生成专用于组映射或单个映射的连续值范围。
117.过程400包括基于确定质量分数是特定质量分数组的成员来生成用于包括在减小序列中的单个条目作为特定质量分数组的表示(410)。例如,减小序列生成引擎316可确定表示为“@c@d f f f f
…”
的质量分数序列302包括质量分数组“fff”。质量分数组“fff”被包括在预先确定的组映射330中。根据预先确定的组映射330,相邻质量分数组“fff”将由减小序列生成引擎316编码为单个值72。然而,本公开不限于用单个条目或值替代质量分数组。在其他具体实施中,可使用预先确定的单个映射用单个条目或值替代单个质量分数。这种单个质量分数替代可以是有益的,因为可选择具有比单个质量分数更小的位大小的单个条目或值来表示单个质量分数。
118.过程400包括通过聚合所生成的条目中的每个条目来生成减小序列(412)。例如,
减小序列生成引擎316可聚合对应于表示为“@c@d ff f f
…”
的质量分数序列302的质量分数“@”的第一经编码值31、对应于质量分数“c”的第二经编码值34、对应于质量分数“@”的第三经编码值31、对应于质量分数“d”的第四经编码值35、和对应于质量分数组“fff”的第五经编码值72。减小序列生成引擎316可基于质量分数序列302的后续值来生成后续经编码值。减小序列生成引擎316可继续,直到质量分数序列302的所有值已经在减小序列332内表示。
119.在一些具体实施中,基于减小序列332来执行进一步的压缩步骤。例如,如图3所示,可以将减小序列332发送到压缩引擎334。然后,压缩引擎334可以对减小序列332执行一个或多个压缩过程以生成输出336。类似于图1中所描绘的过程,由减小序列332表示的第一编码在改进输出336的所得压缩方面可以是有利的,该减小序列在由压缩引擎334执行的后续压缩步骤之前生成。减小序列332的形式可使得压缩引擎334可以比原始质量分数序列302更快速或有效地压缩数据。例如,减小序列332可以是质量分数序列302的压缩版本,并且由压缩引擎334执行的压缩的持续时间或质量可取决于输入的大小。以此方式,生成减小序列332的初始编码步骤可减少压缩所花费的时间并提高由压缩引擎334实现的压缩质量。
120.图5是示出用于解压缩具有第一数据格式的质量分数序列的过程500的示例的流程图。过程500可以由一个或多个电子系统(例如,图1的系统100)执行。
121.过程500包括获得通过使用以x为底数的数对多个质量分数中的每个质量分数进行编码而生成第一经编码数据集,其中x是表示由基因测序设备使用的不同质量分数的数量的整数(502)。例如,解码引擎可获得二进制输出114或二进制输出126。
122.过程500包括使用以x为底数的数来生成第一经解码数据集(504)。例如,类似于项108和项120中所示的过程,可基于用于编码的以x为底数的数对第一经编码数据集进行解码,其中x是对应于该多个质量分数中存在的唯一质量分数的数量的整数。在一些具体实施中,可以将第一经解码数据的二进制表示的整数值迭代地除以以x为底数的数的x,以生成以x为底数的数。
123.过程500包括对第一经解码数据集在一个或多个其他经解码数据集内进行排序(506)。在一些具体实施中,排序引擎可获得经解码数据集和一个或多个其他解码数据集,并且基于第一经编码数据集对第一经解码数据进行排序。例如,排序引擎可确定第一经编码数据集的随后该第一经编码数据集被解码以生成第一经解码数据集的一部分。排序引擎还可确定第一经编码数据集的被解码以生成一个或多个其他经解码数据集的部分。基于第一经解码数据集和一个或多个其他解码数据集在第一经编码数据集内的原始位置,排序引擎可以对第一经解码数据集在一个或多个其他经解码数据集内进行排序。
124.过程500包括基于第一经解码数据集和一个或多个其他解码数据集来生成聚合的经解码数据集(508)。例如,基于第一经解码数据集在一个或多个其他经解码数据集内的排序,聚合的经解码数据集引擎可生成包括第一经解码数据集和一个或多个其他经解码数据集的聚合的经解码数据集。聚合的经解码数据集可包括与用于生成第一经编码数据集的数据类似的数据。根据具体实施,聚合的经解码数据集可以在其他过程或操作中使用。
125.图6是示出用于解压缩具有第二数据格式的质量分数序列的过程600的示例的流程图。过程600可以由一个或多个电子系统(例如,图3的系统300)执行。
126.过程600包括获得基于单个映射数据库和组映射数据库而生成的减小序列(602)。
例如,解码引擎可以从系统300或其他系统获得减小序列332或其他相关数据。然后,可反向执行如图所示对应于减小序列生成引擎316的过程以生成质量分数序列302。
127.过程600包括基于减小序列和单个映射数据库和组映射数据库来生成第一经解码数据集(604)。如上所述,解码引擎可执行类似于减小序列生成引擎316的操作,但是按反转次序来生成质量分数序列302。例如,解码引擎可获得减小序列332,并且使用预先确定的组映射330和预先确定的单个映射324来解码减小序列332,并且生成对应于质量分数序列302的至少一部分的第一经解码数据集。
128.过程600包括将第一经解码数据集在一个或多个其他经解码数据集中进行排序(606)。例如,解码引擎可解码减小序列332的第一部分并且确定对应于减小序列332的第一部分的第一次序。在一些具体实施中,减小序列332的次序可用于确定第一经解码数据集和一个或多个其他经解码数据集的次序。例如,第一经解码数据集可对应于减小序列332的第一部分。结果,第一经解码数据集可以被排序在最终聚合的经解码数据集开头处。然后,可基于对应于用于生成后续一个或多个其他经解码数据集的减小序列332的数据的次序对该一个或多个其他经解码数据集进行排序。
129.过程600包括基于第一经解码数据集和该一个或多个其他经解码数据集来生成聚合的经解码数据集(608)。例如,聚合的经解码数据集引擎可用于基于如上文所论述的将第一经解码数据集在一个或多个其他经解码数据集内进行排序来生成聚合的经解码数据集。聚合的经解码数据集可包括与用于生成减小序列(诸如减小序列332)的数据类似的数据。根据具体实施,聚合的经解码数据集可以在其他过程或操作中使用。
130.图7是示出用于确定质量分数的压缩方法的过程700的示例的流程图。过程700可以由一个或多个电子系统(例如,图3的系统300或图1的系统100)执行。
131.过程700包括从基因测序仪获得基因数据(702)。各种形式的遗传序列将是本领域技术人员已知的。例如,决策引擎可获得对应于由给定基因测序仪生成的一个或多个质量分数的基因数据。
132.过程700包括确定基因数据内的唯一质量分数的数量(704)。例如,根据给定测序仪的类型、型号或特定软件,碱基检出的质量分数可以由一个或多个符号或值表示。然后,可使用用于表示一个或多个质量分数的唯一符号或值的数量来确定要针对基因数据的质量分数使用哪个压缩方法。
133.过程700包括对应于确定从基因测序仪获得的基因数据内存在8个或更少唯一质量分数的第一决策路径和对应于确定从基因测序仪获得的基因数据内存在超过8个唯一质量分数的第二决策路径。如果基因数据内存在8个或更少唯一质量分数,则可执行对应于图2所述的过程200的过程来压缩基因数据的质量分数。如果基因数据内存在超过8个唯一质量分数,则可执行对应于图4所述的过程400的过程来压缩基因数据的质量分数。
134.在一些具体实施中,使用其他阈值来确定要使用的压缩方法。例如,代替8个唯一质量分数,系统可确定需要7个、9个或10个唯一质量分数来实现对应于图4所述的过程400的过程。通常,系统可使用任何合适的阈值或决策建模来确定要使用多个不同压缩方法中的哪个方法来压缩给定数据集,诸如给定质量分数集。
135.本公开中所提及的基因组数据(例如,输入数据102等)可包括例如但不限于核苷酸序列、脱氧核糖核酸(dna)序列、核糖核酸(rna)序列和氨基酸序列。尽管本文的具体实施
方式相当详细地描述了关于核苷酸序列形式的基因组信息,但是应当理解,如本领域技术人员所理解的,本说明书的有序数据序列也可以被实施用于其他基因组数据,尽管有一些变化。
136.图8是用于编码(例如,压缩)具有第一数据格式的质量分数序列的过程的实验结果的图形描绘。图8示出了来自数据集“srr6882909_1.fastq”的压缩的结果。数据集“srr6882909_1.fastq”使用上述q4格式格式化。数据集“srr6882909_1.fastq”的质量分数包括4个唯一质量分数。图表802示出了对应于数据集“srr6882909_1.fastq”的原始数据的相对大小,以及在使用各种技术进行压缩之后的数据集“srr6882909_1.fastq”的压缩版本,各种技术包括gzipped 9级(level 9)压缩、zstd 11级压缩和lena q4压缩。lena q4压缩对应于图1所示的过程100和本文所述的方法。
137.图表802示出数据集“srr6882909_1.fastq”的原始数据为7402335856字节,使用gzipped 9级压缩的数据集“srr6882909_1.fastq”的压缩版本为417512395字节,使用zstd 11级压缩的数据集“srr6882909_1.fastq”的压缩版本为452733689字节,并且使用lena q4压缩的数据集“srr6882909_1.fastq”的压缩版本为259865991字节。通过数据集“srr6882909_1.fastq”的lena q4压缩获得的压缩大于由其他另选压缩方法实现的压缩。图例806示出了哪一条对应于哪个压缩方法,并且哪一条对应于数据集“srr6882909_1.fastq”的原始数据。
138.图表804示出了对数据集“srr6882909_1.fastq”使用的每个压缩方法的压缩时间。图表804示出了使用gzipped 9级压缩的数据集“srr6882909_1.fastq”的压缩版本花费1980秒来生成,使用zstd 11级压缩的数据集“srr6882909_1.fastq”的压缩版本花费108秒来生成,并且使用lena q4压缩的数据集“srr6882909_1.fastq”的压缩版本花费36秒来生成。使用lena q4压缩来压缩数据集“srr6882909_1.fastq”花费的时间小于由其他另选压缩方法实现的压缩时间。
139.图9是用于编码(例如,压缩)具有第二数据格式的质量分数序列的过程的实验结果的图形描绘。图9示出了来自数据集“err1744700_1.fastq”的压缩的结果。数据集“err1744700_1.fastq”使用上述q40格式格式化。数据集“err1744700_1.fastq”的质量分数包括超过4个唯一质量分数。图表902示出了对应于数据集“err1744700_1.fastq”的原始数据的相对大小,以及在使用各种技术进行压缩之后的数据集“err1744700_1.fastq”的压缩版本,各种技术包括gzipped 9级压缩、zstd 11级压缩和lena q40压缩。lena q40压缩对应于图3所示的过程300。
140.图表902示出数据集“err1744700_1.fastq”的原始数据为5033592178字节,使用gzipped 9级压缩的数据集“err1744700_1.fastq”的压缩版本为1289564690字节,使用zstd 11级压缩的数据集“err1744700_1.fastq”的压缩版本为1290828665字节,并且使用lena q40压缩的数据集“err1744700_1.fastq”的压缩版本为1228518456字节。通过数据集“err1744700_1.fastq”的lena q40压缩获得的压缩大于由其他另选压缩方法实现的压缩。图例906示出了哪一条对应于哪个压缩方法,并且哪一条对应于数据集“err1744700_1.fastq”的原始数据。
141.图表904示出了对数据集“err1744700_1.fastq”使用的每个压缩方法的压缩时间。图表904示出了使用gzipped 9级压缩的数据集“err1744700_1.fastq”的压缩版本花费
3762秒来生成,使用zstd 11级压缩的数据集“err1744700_1.fastq”的压缩版本花费306秒来生成,并且使用lena q40压缩的数据集“err1744700_1.fastq”的压缩版本花费101秒来生成。使用lena q40压缩来压缩数据集“err1744700_1.fastq”花费的时间小于由其他另选压缩方法实现的压缩时间。
142.图10是计算机系统1000部件的图,这些部件可用于实施用于基于多变量序数数据使用联合模型生成医学分析的系统。
143.计算设备1000旨在表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片式服务器、大型机和其他适当的计算机。计算设备1050旨在表示各种形式的移动设备,诸如个人数字助理、移动电话、智能电话和其他类似的计算设备。另外,计算设备1000或1050可包括通用串行总线(usb)闪存驱动器。usb闪存驱动器可存储操作系统和其他应用程序。usb闪存驱动器可包括输入/输出部件,诸如可插入到另一个计算设备的usb端口中的无线发射器或usb连接器。此处所示的部件、它们的连接和关系以及它们的功能仅意在作为示例,并不意在限制本文档中描述和/或要求保护的本发明的具体实施。
144.计算设备1000包括处理器1002、存储器1004、存储设备1008、连接到存储器1004和高速扩展端口1010的高速接口1008和连接到低速总线1014和存储设备1008的低速接口1012。部件1002、1004、1008、1008、1010和1012中的每个部件使用各种总线互连,并且可安装在公共主板上或视情况以其他方式安装。处理器1002可处理用于在计算设备1000内执行的指令,包括存储在存储器1004中或存储设备1008上的指令,以在外部输入/输出设备(诸如耦接到高速接口1008的显示器1016)上显示gui的图形信息。在其他具体实施中,可视情况将多个处理器和/或多个总线与多个存储器和多种类型的存储器一起使用。另外,可连接多个计算设备1000,每个设备提供必要操作的一些部分,例如,作为服务器库、一组刀片式服务器或多处理器系统。
145.存储器1004将信息存储在计算设备1000内。在一个具体实施中,存储器1004是一个或多个易失性存储器单元。在另一具体实施中,存储器1004是一个或多个非易失性存储器单元。存储器1004还可以是另一种形式的计算机可读介质,诸如磁盘或光盘。
146.存储设备1008能够为计算设备1000提供海量存储。在一个具体实施中,存储设备1008可以是或包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或磁带设备、闪存存储器或其他类似的固态存储器设备,或设备阵列,包括存储区域网络中的设备或其他配置。计算机程序产品可在信息载体中有形地体现。计算机程序产品还可包含指令,该指令在被执行时,执行一种或多种方法,诸如上文所述的那些方法。信息载体是计算机可读介质或机器可读介质,诸如存储器1004、存储设备1008或处理器1002上的存储器。
147.高速控制器1008管理计算设备1000的带宽密集型操作,而低速控制器1012管理带宽较不密集型操作。这种功能分配仅为示例。在一个具体实施中,高速控制器1008例如通过图形处理器或加速器耦接到存储器1004、显示器1016,并且耦接到高速扩展端口1010,该端口可接受各种扩展卡(未示出)。在该具体实施中,低速控制器1012耦接到存储设备1008和低速扩展端口1014。低速扩展端口(该端口可包括各种通信端口,例如usb、蓝牙、以太网、无线以太网)可例如通过网络适配器耦接到一个或多个输入/输出设备,诸如键盘、指向设备、麦克风/扬声器对、扫描仪或联网设备诸如交换机或路由器。计算设备1000可以多种不同的
形式实施,如图所示。例如,该计算设备可被实施为标准服务器1020,或者在一组此类服务器中被实施多次。它还可被实施为机架式服务器系统1024的一部分。此外,该计算设备可在个人计算机诸如膝上型计算机1022中实施。另选地,来自计算设备1000的部件可与移动设备(未示出)诸如设备1050中的其他部件组合。此类设备中的每个设备可包含计算设备1000、1050中的一个或多个设备,并且整个系统可由彼此通信的多个计算设备1000、1050组成。
148.计算设备1000可以多种不同的形式实施,如图所示。例如,该计算设备可被实施为标准服务器1020,或者在一组此类服务器中被实施多次。它还可被实施为机架式服务器系统1024的一部分。此外,该计算设备可在个人计算机诸如膝上型计算机1022中实施。另选地,来自计算设备1000的部件可与移动设备(未示出)诸如设备1050中的其他部件组合。此类设备中的每个设备可包含计算设备1000、1050中的一个或多个设备,并且整个系统可由彼此通信的多个计算设备1000、1050组成。
149.计算设备1050包括处理器1052、存储器1064和输入/输出设备诸如显示器1054、通信接口1066和收发器1068,以及其他部件。设备1050还可设置有存储设备,诸如微驱动器或其他设备,以提供额外的存储。部件1050、1052、1064、1054、1066和1068中的每个部件使用各种总线互连,并且这些部件中的若干部件可安装在公共主板上或视情况以其他方式安装。
150.处理器1052可执行计算设备1050内的指令,包括存储在存储器1064中的指令。处理器可被实现为包括独立的多个模拟处理器和数字处理器的芯片的芯片组。另外,处理器可使用多种架构中的任一种架构来实现。例如,处理器1010可以是cisc(复杂指令集计算机)处理器、risc(精简指令集计算机)处理器或misc(最小指令集计算机)处理器。处理器可提供例如设备1050的其他部件的协调,诸如对用户接口的控制、由设备1050运行的应用程序以及由设备1050进行的无线通信。
151.处理器1052可通过耦接到显示器1054的控制接口1058和显示接口1056与用户通信。显示器1054可为例如tft(薄膜晶体管液晶显示器)显示器或oled(有机发光二极管)显示器或其他适当的显示技术。显示接口1056可包括用于驱动显示器1054以向用户呈现图形和其他信息的适当电路。控制接口1058可接收来自用户的命令并转换这些命令以提交给处理器1052。此外,可提供与处理器1052通信的外部接口1062,以便实现设备1050与其他设备的近距区域通信。外部接口1062可例如在一些具体实施中提供有线通信,或在其他具体实施中提供无线通信,并且还可使用多个接口。
152.存储器1064将信息存储在计算设备1050内。存储器1064可被实施为一个或多个计算机可读介质、一个或多个易失性存储器单元或一个或多个非易失性存储器单元中的一者或多者。还可提供扩展存储器1074并通过扩展接口1072将其连接到设备1050,该扩展接口可包括例如simm(单列直插式存储器模块)卡接口。此类扩展存储器1074可为设备1050提供额外的存储空间,或者还可为设备1050存储应用程序或其他信息。具体地,扩展存储器1074可包括用于执行或补充上述过程的指令,并且还可包括安全信息。因此,例如,扩展存储器1074可被提供为用于设备1050的安全模块,并且可被编程为具有允许设备1050安全使用的指令。此外,安全应用程序可经由simm卡连同附加信息一起提供,诸如将识别信息以不可破解的方式放置在simm卡上。
153.存储器可包括例如闪存存储器和/或nvram存储器,如下所述。在一个具体实施中,计算机程序产品在信息载体中有形地体现。计算机程序产品包含指令,该指令在被执行时,执行一种或多种方法,诸如上文所述的那些方法。信息载体是计算机可读介质或机器可读介质,诸如存储器1064、扩展存储器1074或处理器1052上的可通过例如收发器1068或外部接口1062接收的存储器。
154.设备1050可通过通信接口1066进行无线通信,该通信接口在需要时可包括数字信号处理电路。通信接口1066可以提供在各种模式或协议下的通信,诸如gsm语音呼叫、sms、ems或mms信息收发、cdma、tdma、pdc、wcdma、cdma2000或gprs等。此类通信可通过例如射频收发器1068发生。此外,可发生近程通信,诸如使用蓝牙、wi-fi或其他此类收发器(未示出)。此外,gps(全球定位系统)接收器模块1070可向设备1050提供附加的导航相关和位置相关的无线数据,该无线数据可由在设备1050上运行的应用程序视情况使用。
155.设备1050还可使用音频编解码器1060可听地通信,该音频编解码器可从用户接收口头信息并将其转换为可用的数字信息。音频编解码器1060同样可诸如通过扬声器(例如,在设备1050的手持终端中)为用户生成可听声。此类声音可包括来自语音电话呼叫的声音,可包括录制的声音,例如语音消息、音乐文件等,并且还可包括由在设备1050上操作的应用程序生成的声音。
156.计算设备1050可以多种不同的形式实施,如图所示。例如,该计算设备可被实施为移动电话1080。该计算设备还可被实施为智能电话1082、个人数字助理或其他类似的移动设备的一部分。
157.本文所述的系统和方法的各种具体实施可在数字电子电路、集成电路、特别设计的asic(专用集成电路)、计算机硬件、固件、软件和/或此类具体实施的组合中实现。这些各种具体实施可包括在一个或多个计算机程序中的具体实施,该一个或多个计算机程序能够在包括至少一个可编程处理器的可编程系统上执行和/或解释,该至少一个可编程处理器可以是专用或通用处理器,被耦接以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令以及将数据和指令发送到存储系统、至少一个输入设备和至少一个输出设备。
158.这些计算机程序(也称为程序、软件、软件应用程序或代码)包括用于可编程处理器的机器指令,并且可以高级程序化和/或面向对象的编程语言和/或以汇编语言/机器语言来实现。如本文所用,术语“机器可读介质”、“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、装置和/或设备,例如磁盘、光盘、存储器、可编程逻辑设备(pld),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任何信号。
159.为了提供与用户的交互,本文所述的系统和技术可在计算机上实现,该计算机具有用于向用户显示信息的显示设备(例如crt(阴极射线管)或lcd(液晶显示器)监视器),以及用户可用来向该计算机提供输入的键盘和指向设备(例如鼠标或轨迹球)。也可使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声音、语音或触觉输入。
160.本文所述的系统和技术可在计算系统中实现,该计算系统包括后端部件(例如,作
为数据服务器)或包括中间件部件(例如,应用程序服务器)或包括前端部件(例如,具有图形用户界面或web浏览器的客户端计算机),用户可通过该计算系统与本文所述的系统和技术的具体实施进行交互,或者与此类后端部件、中间件部件或前端部件的任何组合进行交互。该系统的部件可通过数字数据通信的任何形式或介质(例如,通信网络)互连。通信网络的示例包括局域网(“lan”)、广域网(“wan”)和互联网。
161.该计算系统可包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并彼此具有客户端-服务器关系的计算机程序而产生。
162.已经描述了多个实施方案。然而,应当理解,在不脱离本发明的实质和范围的情况下,可进行各种修改。此外,附图中所示的逻辑流程不需要所示的特定顺序或有序顺序来实现所需的结果。此外,可在所述流程中提供其他步骤,或者可消除步骤,并且可将其他部件添加到所述系统或从所述系统中移除。因此,其他实施方案也在以下权利要求书的范围内。
163.本说明书中描述的本发明的实施方案和所有功能操作可在数字电子电路系统中实施,或在计算机软件、固件或硬件中实施,包括本说明书中公开的结构以及这些结构的结构等同物或它们中一者或多者的组合。本发明的实施方案可实施为一个或多个计算机程序产品,例如,在计算机可读介质上编码以供数据处理装置执行或控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、实现机器可读传播信号的物质的组成或它们中的一者或多者的组合。术语“数据处理装置”涵盖用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,装置还可包括创建用于所讨论的计算机程序的执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中一者或多者的组合的代码。传播的信号是人工生成的信号,例如,机器生成的电气、光学或电磁信号,生成该信号以编码用于传输到合适的接收器装置的信息。
164.计算机程序(也称为程序、软件、软件应用程序、脚本或代码)可以任何形式的编程语言(包括编译或解释语言)编写,并且该计算机程序可以任何形式部署,包括作为独立程序或作为模块、部件、子例程或适用于计算环境中的其他单元。计算机程序不一定对应于文件系统中的文件。程序可存储在保持其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中或存储在多个协调文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可被部署成在一个计算机上或在位于一个站点处或分布在多个站点上并通过通信网络互连的多个计算机上执行。
165.本说明书中描述的过程、操作和/或逻辑流程可以由执行一个或多个计算机软件指令的一个或多个中央处理单元(cpu)或图形处理单元(gpu)执行,以实现本文所述的过程、操作和/或逻辑流程的功能。过程、操作和/或逻辑流程也可以在硬件电路中执行。例如,在一些具体实施中,本公开的操作可以由使用现场可编程门阵列(fpga)的逻辑门电路实施的处理引擎来执行,所述逻辑门电路已被编程地配置为实现本文所述的过程、操作和/或逻辑流程的功能。作为另一示例,本公开的操作可以由使用专用集成电路(asic)的逻辑门电路实施的处理引擎来执行,所述逻辑门电路已被配置为实现本文所述的过程、操作和/或逻辑流程的功能。在又一些具体实施中,过程、操作和/或逻辑流程的一些部分可以由一个或
多个cpu或一个或多个gpu来实施,并且过程、操作和/或逻辑流程的一些部分可以由硬件电路以任何顺序来实施。
166.适用于执行计算机程序的处理器包括例如通用和专用微处理器两者,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元素是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦接以从一个或多个用于存储数据的海量存储设备(例如,磁盘、磁光盘或光盘)接收数据或将数据转移到该一个或多个海量存储设备或两者。然而,计算机不需要具有此类设备。此外,计算机可嵌入另一个设备中,例如,平板计算机、移动电话、个人数字助理(pda)、移动音频播放器、全球定位系统(gps)接收器等等。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如,eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及cd rom和dvd-rom盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
167.为了提供与用户的交互,本发明的实施方案可在计算机上实施,该计算机具有用于向用户显示信息的显示设备(例如crt(阴极射线管)或lcd(液晶显示器)监视器),以及用户可用来向该计算机提供输入的键盘和指向设备(例如鼠标或轨迹球)。也可使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以任何形式接收来自用户的输入,包括声音、语音或触觉输入。
168.本发明的实施方案可在计算系统中实施,该计算系统包括后端部件(例如,作为数据服务器)或包括中间件部件(例如,应用程序服务器)或包括前端部件(例如,具有图形用户界面或web浏览器的客户端计算机),用户可与本发明的具体实施或一个或多个此类后端部件、中间件部件或前端部件的任何组合进行交互。该系统的部件可通过数字数据通信的任何形式或介质(例如,通信网络)互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”),例如互联网。
169.该计算系统可包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并彼此具有客户端-服务器关系的计算机程序而产生。
170.虽然本说明书含有许多细节,但这些不应被解释为对本发明的范围或可要求保护的范围的限制,而是作为对本发明的特定实施方案特有的特征的描述。在本说明书中在单独实施方案的上下文中描述的某些特征也可以组合形式在单个实施方案中实施。相反,在单个实施方案的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施方案中实施。此外,尽管特征可在上文中描述为以某些组合起作用,并且甚至最初也如此要求保护,但在一些情况下,可从组合中删除来自要求保护的组合的一个或多个特征,并且所要求保护的组合可针对子组合或子组合的变型。
171.类似地,虽然以特定顺序在附图中描绘操作,但是这不应被理解为要求以所示的特定顺序或按顺序执行此类操作,或者要求执行所有说明的操作以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上文所描述的实施方案中各种系统部件的分离不应被理解为在所有实施方案中都需要此类分离,并且应当理解,所描述的程序部
件和系统通常可集成在单个软件产品中或打包到多个软件产品中。
172.在提及html文件的每种情况下,可由其他文件类型或格式替代。例如,html文件可以被xml、json、普通文本或其他类型的文件替代。此外,在提及表格或散列表的情况下,可使用其他数据结构(诸如电子表格、关系数据库或结构化文件)。
173.已经描述了本发明的特定实施方案。其他实施方案也在以下权利要求书的范围内。例如,权利要求中叙述的步骤可以不同的顺序执行并且仍然会实现期望的结果。
174.其他实施方案
175.已经描述了本发明的特定实施方案。其他实施方案也在以下权利要求书的范围内。例如,权利要求中叙述的步骤可以不同的顺序执行并且仍然会实现期望的结果。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1