面向存储的dna序列的并行快速匹配方法及其系统的制作方法

文档序号:10725448阅读:357来源:国知局
面向存储的dna序列的并行快速匹配方法及其系统的制作方法
【专利摘要】本发明提供一种面向存储的DNA序列的并行快速匹配方法,应用于DNA序列的压缩存储,所述方法包括:哈希索引构建步骤:基于前缀对FASTA格式的参考基因组构建哈希索引,找出指定前缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置;文件分块步骤:输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理;多线程处理步骤:开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组,通过存储匹配结果代替原始DNA序列达到压缩存储目的。
【专利说明】
面向存储的DNA序列的并行快速匹配方法及其系统
技术领域
[0001]本发明涉及数据压缩领域,尤其涉及一种面向存储的DNA序列的并行快速匹配方法及其系统。
【背景技术】
[0002]下一代测序技术的发展促进了高通量DNA测序数据的产生,数据指数级的增长速度超过了计算机微处理器和存储设备的增长速度,而高通量DNA测序数据压缩技术是有效解决DNA序列存储和传输的方法。而在应用于压缩存储之前,一种常见做法是将高通量测序数据FASTQ序列文件匹配到已有的基因组即参考基因组中,其中参考基因组文件的格式为FASTA文件格式,存储目标序列和参考基因组的匹配结果代替原始序列达到压缩存储的目的,有效地剔除了冗余信息,只保留记录不同的部分信息。因此碱基匹配就成为了DNA序列压缩存储所需要解决的一个重要问题。
[0003]目前主流的FASTQ匹配软件有包括BWA(Burrows_WheelerAligner)工具、Bowtie工具,都是基于BWT的匹配方法。但是,基于BWT算法的BWA工具计算量较大,对存储空间要求高,计算机内存消耗多,在运算速度上也较稀疏索引算法慢,内存占用和运算速度上相对于基于稀疏索引算法并不占据优势。同时,Bowtie工具由于考虑质量分数的处理问题,其匹配时间和内存消耗进一步扩大,并且错配情况考虑仅有3个以下,并且不允许序列和参考基因组之间有间隔的存在,例如插入和删除的错误。上述方法都是针对下游序列分析而设计的匹配工具,它们追求匹配结果的完整性和精确性,但在DNA压缩存储中并不适用,特别是在高噪声的DNA数据上。DNA压缩存储要求匹配速度快但对匹配结果的精确性要求可以适当放宽。
[0004]此外,现有已存在的这些匹配工具大多使用单线程,程序没有采用多线程级进行并行化的处理,不能充分发挥多核处理器的线程应用的能力,不能够充分利用多个执行内核,不能在特定的时间内执行更多任务,在整个匹配过程中,经常会出现运行速度慢、时间消耗多、内存消耗大等等问题,导致匹配效率非常低。

【发明内容】

[0005]有鉴于此,本发明的目的在于提供一种面向存储的DNA序列的并行快速匹配方法及其系统,旨在解决现有技术中针对DNA序列的匹配效率低的问题。
[0006]本发明提出一种面向存储的DNA序列的并行快速匹配方法,应用于DNA序列的压缩存储,其中,所述方法包括:
[0007]哈希索引构建步骤:基于前缀对FASTA格式的参考基因组构建哈希索引,找出指定前缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置;
[0008]文件分块步骤:输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理;
[0009]多线程处理步骤:开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组,通过存储匹配结果代替原始DNA序列达到压缩存储目的。
[0010]优选的,所述哈希索引构建步骤具体包括:
[0011 ] 定义以碱基组合“AT”、“CG”为前缀的k个连续碱基称为kmer;
[0012]找出FASTA格式的参考基因组中所有“AT”或“CG”前缀的kmer并转化成哈希值;
[0013]定义四种碱基“A”、“C”、“G”、“T”的二进制哈希值分别为00、01、10、11,少量存在的“N”、“W”碱基,采用近似规则转换成相应的“A”、“C"、“G”、“T”碱基;
[0014]将一个kmer中的碱基分别转换成二进制哈希值,组合起来作为哈希表的一个键值,一个键值关联的哈希表项存储对应kmer在参考基因组中出现的所有位置,由此即构建了哈希索引;
[0015]并根据需要调整错误匹配率参数、最小有效匹配长度参数以及匹配线程数参数,并将调整后的多个参数应用到后续匹配运算步骤中。
[0016]优选的,所述文件分块步骤还包括:
[0017]在进行分块处理之前,预置所需分块的数量;
[0018]对原有的DNA序列文件进行文件指针遍历;
[0019]计算出每个子块含有的具体的序列的数量。
[0020]优选的,所述多线程处理步骤具体包括:
[0021]开启与子块数量相应的线程数,并执行调用了基于kmer哈希索引快速定位的匹配函数的线程函数来处理命令;
[0022]根据所述线程函数处理命令调用相应匹配函数,同步执行所有线程,直至所有线程执行完毕;
[0023]在匹配函数中,找出待匹配的DNA序列中所有“AT”或“CG”前缀的kmer并转化为二进制哈希值,若哈希表中不存在该键值即不做匹配;
[0024]若存在键值,即以哈希表返回的匹配位置为起点对DNA序列和参考基因组进行双向延展匹配,并设置容错率允许部分碱基存在错配、插入、删除的情况;
[0025]当匹配长度大于设定值最小有效匹配长度并且错配率小于设置的容错率时,则匹配成功;
[0026]若序列只有部分匹配,则将不匹配的部分转换为回文结构再重复上述过程进行重新匹配;
[0027]最后输出匹配结果包括匹配位置、匹配类型、匹配长度、错配位置,错配内容,并将多个子块各自执行匹配运算所得到的多个匹配结果作归档合并处理。
[0028]另一方面,本发明还提供一种面向存储的DNA序列的并行快速匹配系统,所述系统包括:
[0029]哈希索引构建模块,用于基于前缀对FASTA格式的参考基因组构建哈希索引,找出指定前缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置;
[0030]文件分块模块,用于输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理;
[0031]多线程处理模块,用于开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组;
[0032]具体匹配模块,用于找出待匹配的DNA序列中所有指定前缀的kmer并转化成哈希值,查询哈希表获得参考基因组中对应kmer的位置,以此为起点进行双向延展匹配。
[0033]优选的,所述文件分块模块还用于:
[0034]在进行分块处理之前,预置所需分块的数量;
[0035]对原有的DNA序列文件进行文件指针遍历;
[0036]计算出每个子块含有的具体的序列的数量。
[0037]优选的,所述多线程处理模块具体用于:
[0038]开启与子块数量相应的线程数,并执行调用了匹配运算的线程函数来处理命令;
[0039]根据所述线程函数处理命令调用相应的匹配函数,同步执行所有线程,直至所有线程执行完毕。
[0040]优选的,所述哈希索引构建模块具体用于:
[0041 ] 定义以碱基组合“AT”、“CG”为前缀的k个连续碱基称为kmer;
[0042]找出FASTA格式的参考基因组中所有“AT”或“CG”前缀的kmer并转化成哈希值;
[0043]定义四种碱基“A”、“C”、“G”、“T”的二进制哈希值分别为00、01、10、11,少量存在的“N”、“W”碱基,采用近似规则转换成相应的“A”、“C"、“G”、“T”碱基;
[0044]将一个kmer中的碱基分别转换成二进制哈希值,组合起来作为哈希表的一个键值,一个键值关联的哈希表项存储对应kmer在参考基因组中出现的所有位置,由此即构建了哈希索引;
[0045]并根据需要调整错误匹配率参数、最小有效匹配长度参数以及匹配线程数参数,并将调整后的多个参数应用到后续匹配运算步骤中。
[0046]优选的,所述系统还包括具体匹配模块用于:
[0047]找出待匹配的DNA序列中所有“AT”或“CG”前缀的kmer并转化为二进制哈希值,若哈希表中不存在该键值即不做匹配;
[0048]若存在键值,即以哈希表返回的匹配位置为起点对DNA序列和参考基因组进行双向延展匹配,并设置容错率允许部分碱基存在错配、插入、删除的情况;
[0049]当匹配长度大于设定值最小有效匹配长度并且错配率小于设置的容错率时,则匹配成功;
[0050]若序列只有部分匹配,则将不匹配的部分转换为回文结构再重复上述过程进行重新匹配;最后输出匹配结果包括匹配位置、匹配类型、匹配长度、错配位置,错配内容,并将多个子块各自执行匹配运算所得到的多个匹配结果作归档合并处理。
[0051]本发明提供的技术方案应用于DNA序列压缩方法中的基于参考基因组的压缩方法,对FASTQ格式中的碱基序列作基于参考基因组的轻量级并行匹配,将最终得出的匹配结果再使用压缩工具进行进一步处理。其中并行算法处理部分主要是基于PthreadS(P0SIXthreads)的线程级并行编程,是一套创建线程的应用程序接口,使用多线程并行实现多任务处理,实现了轻量级匹配的并行化,有效提高针对FASTQ格式的DNA数据的效率,并使得程序的运行速度大大加快。
【附图说明】
[0052]图1为本发明一实施方式中面向存储的DNA序列的并行快速匹配方法流程图;
[0053]图2为本发明一实施方式中匹配并行执行过程的流程图;
[0054]图3为本发明一实施方式中多子块匹配结果的合并过程的流程图;
[0055]图4为本发明一实施方式中并行匹配模型的总体流程图;
[0056]图5为本发明一实施方式中具体匹配流程图;
[0057]图6为本发明一实施方式中面向存储的DNA序列的并行快速匹配系统10的内部结构示意图。
【具体实施方式】
[0058]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0059]本发明【具体实施方式】提供了一种面向存储的DNA序列的并行快速匹配方法,应用于DNA序列的压缩存储,其中,所述方法主要包括如下步骤:
[0060]S11、哈希索引构建步骤:基于前缀对FASTA格式的参考基因组构建哈希索引,找出指定前缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置;[0061 ] S12、文件分块步骤:输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理;
[0062]S13、多线程处理步骤:开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组,通过存储匹配结果代替原始DNA序列达到压缩存储目的。
[0063]本发明提供的一种面向存储的DNA序列的并行快速匹配方法使用多线程并行实现多任务处理,实现应用于压缩存储的轻量级DNA序列匹配的并行化,有效提高针对FASTQ格式的DNA数据的效率,并使得匹配速度也相应加快,从而使整个程序的运行速度大大加快,减少了在时间上的消耗,并增强了该方法的可用性。
[0064]以下将对本发明所提供的一种面向存储的DNA序列的并行快速匹配方法进行详细说明。
[0065]请参阅图1,为本发明一实施方式中面向存储的DNA序列的并行快速匹配方法流程图。
[0066]在步骤SII中,哈希索引构建步骤:基于前缀对FASTA格式的参考基因组构建哈希索引,找出指定前缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置。
[0067]在本实施方式中,FASTQ格式是一种存储生物序列的文本格式,也是DNA序列常用的存储格式之一。DNA测序技术产生成千上万条DNA序列,这些DNA序列存储于以FASTQ为格式的文件中,包含测序产生的所有信息。在广泛使用的FASTQ格式中,每条序列包含四行,每行由换行符分割。每条序列以字符开始,后面紧接着元数据作为第一行,用来唯一标识DNA序列。第二行是碱基数据,由包含常见的{‘A’,‘T’,‘C’,‘G’,‘N’}五个字符的序列构成,其中字符‘N’表示不明确的碱基,可表示为{‘A’,‘T’,‘C’,‘G’}中任意一个字符。第三行以字符‘ + ’开始,紧接着与第一行相同的DNA序列标识。最后一行为质量分数行,与碱基对应,表示每个碱基字符对应位置测序的可信度。
[0068]在步骤S12中,文件分块步骤:输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理。
[0069]在本实施方式中,需要对FASTQ格式的DNA序列文件进行预处理,主要包括:由于每条DNA序列记录含有四行关键信息,所以根据四的倍数对FASTQ格式的DNA序列文件进行分块处理,同时预置所需分块的数量为10,当然也可作调整,例如可以根据需要将分块数目调整为8、9、11、12等等,在分块处理之前对原有的FASTQ格式的文件进行文件指针遍历之后,计算得出每个子块含有的具体的序列的数量。
[0070]在本实施方式中,所述文件分块步骤S12还包括:在进行分块处理之前,预置所需分块的数量;对原有的DNA序列文件进行文件指针遍历;计算出每个子块含有的具体的序列的数量。
[0071]在步骤S13中,多线程处理步骤:开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组,通过存储匹配结果代替原始DNA序列达到压缩存储目的。
[0072]在本实施方式中,并行的算法思路是使用线程级并行编程,开启多个线程分别处理由线程数决定的若干个任务,再将该任务放到后台去处理,其中线程函数调用了匹配函数,多个子块同时执行线程函数,以实现匹配运算的并行执行。
[0073]在本实施方式中,多线程处理步骤S13采用Pthreads(即POSIX threads)的线程级并行编程方式来实现匹配运算的并行化,有效提高针对FASTQ格式的DNA数据的效率,具体包括:开启与子块数量相应的线程数,并执行调用了基于kmer哈希索引快速定位的匹配函数的线程函数来处理命令;根据所述线程函数处理命令调用相应的匹配函数,同步执行所有线程,直至所有线程执行完毕;在匹配函数中,找出待匹配的DNA序列中所有“AT”或“CG”前缀的kmer并转化为二进制哈希值,若哈希表中不存在该键值即不做匹配;若存在键值,SP以哈希表返回的匹配位置为起点对DNA序列和参考基因组进行双向延展匹配,并设置容错率允许部分碱基存在错配、插入、删除的情况;当匹配长度大于设定值最小有效匹配长度并且错配率小于设置的容错率时,则匹配成功;若序列只有部分匹配,则将不匹配的部分转换为回文结构再重复上述过程进行重新匹配;最后输出匹配结果包括匹配位置、匹配类型、匹配长度、错配位置,错配内容。并将多个子块各自执行匹配运算所得到的多个匹配结果作归档合并处理。其中,匹配并行执行的流程如图2所示,为本发明一实施方式中匹配并行执行过程的流程图。
[0074]如图2中,在分成定义的子块数量确定之后,例如分成η个子块,根据子块数量开启相应的线程数(即开启η个线程),每个子块执行调用了基于kmer哈希索引快速定位的匹配函数的线程函数,然后所有线程同步执行,直至所有线程执行完毕。
[0075]在本实施方式中,所述哈希索引构建步骤SII还包括:定义前缀即碱基组合“AT”、“CG等,其后的k个喊基称为kmer;找出参考基因组中所有如缀,然后将其后的kmer喊基序列转化成哈希值;定义四种碱基“A”、“C”、“G”、“T” 二进制哈希值分别为00、01、10、11,少量存在的“N”、“W”等碱基,可以采用近似规则转换成相应的“A”、“C”、“G”、“T”等碱基;将转换的哈希值存入哈希表中,即构建了哈希索引;并根据需要调整错误匹配率参数、最小有效匹配长度参数以及匹配线程数参数,并将调整后的多个参数应用到后续匹配运算步骤中。
[0076]在本实施方式中,所述具体匹配过程包括:找出待匹配的DNA序列中所有的前缀以及前缀后面k个碱基(kmer)转化为哈希值,若不存在则直接输出不匹配信息;并根据之前构建的哈希表返回的最佳匹配位置进行双向匹配,并设置容错率允许部分碱基存在错配、插入、删除的情况;当匹配长度大于设定值最小有效匹配长度并且错配率小于设置的容错率时,则匹配成功;若第一次匹配不满足上述条件时候,将该序列的匹配部分输出,将不匹配的部分转换为回文结构再进行重新匹配;最后根据匹配过程,输出匹配结果,匹配结果包括匹配位置、匹配类型、匹配长度等信息。如图5所示,为本发明一实施方式中具体匹配流程图。
[0077]本发明在所有线程任务执行完毕之后,由于文件分块后进行并行匹配过程中会产生中间文件,记录与分块数量相应的匹配结果,理论上这些匹配结果可以直接应用于下一步的压缩储存工作,但压缩存储过程中必须基于FASTQ格式的DNA序列文件的整体匹配结果,所以需要将多个匹配结果作归档合并处理,以便后续工作进行,同时,输出与性能相关的关键统计信息,在此就不在详述,其中,多子块匹配结果的合并过程如图3所示,为本发明一实施方式中多子块匹配结果的合并过程的流程图。
[0078]在本实施方式中,本发明的面向存储的DNA序列的并行快速匹配方法,还进一步包括:
[0079]参数可调步骤:在FASTA格式的参考基因中找出所有前缀,取前缀之后的k个碱基数创建哈希索引值,根据需要调整错误匹配率参数、最小有效匹配长度参数以及匹配线程数参数,并将调整后的多个参数应用到所述匹配运算步骤中。
[0080]在本实施方式中,一些匹配过程中运行所需要的关键参数,例如匹配前缀P(默认值为“CG”)、匹配错误容忍度e(默认值为0.05)、最小有效匹配长度L(默认值为30),取前缀之后的k个碱基数创建哈希索引值,k默认值为8,匹配错误容忍度e即错误匹配率,这些都是固定的默认参数,本发明中提供参数的可调化,用户可以根据需要调整参数以得到性能的最大化。同时,匹配线程也进行了参数可调处理,线程数b(默认值为10)可以根据需要调整开启相应的线程数进行快速匹配。
[0081 ] 在本实施方式中,利用步骤S12对FASTQ格式的DNA序列文件进行分块预处理,得到FASTQ格式的DNA序列文件的子块,从而减少一次性串行匹配所带来的时间占用问题。利用步骤S13实现应用于DNA序列文件压缩存储的轻量级匹配过程的并行化,开启多个线程处理多个子块,实现多子块同步快速匹配,并将匹配结果作归档合并处理。同时,对参数设置进行可调化处理,可以自行调整参数来得到理想的匹配结果。在本实施方式中,并行匹配模型的总体流程图图4所示。
[0082]本发明提供的一种面向存储的DNA序列的并行快速匹配方法,对FASTQ格式中的碱基序列作基于参考基因组的轻量级并行匹配,将得出的匹配结果再使用压缩工具进行进一步处理。其中并行算法处理部分主要是基于Pthreads(P0SIX threads)的线程级并行编程,是一套创建线程的应用程序接口,使用多线程并行实现多任务处理,实现了轻量级匹配的并行化,有效提高针对FASTQ格式的DNA数据的效率,并使得程序的运行速度大大加快。
[0083]本发明【具体实施方式】还提供一种面向存储的DNA序列的并行快速匹配系统10,主要包括:
[0084]哈希索引构建模块11,用于基于前缀对FASTA格式的参考基因组构建哈希索引,找出指定前缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置;
[0085]文件分块模块12,用于输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理;
[0086]多线程处理模块13,用于开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组;
[0087]具体匹配模块14,用于找出待匹配的DNA序列中所有指定前缀的kmer并转化成哈希值,查询哈希表获得参考基因组中对应kmer的位置,以此为起点进行双向延展匹配。
[0088]本发明提供的一种面向存储的DNA序列的并行快速匹配系统10,使用多线程并行实现多任务处理,实现应用于压缩存储的轻量级DNA序列匹配的并行化,有效针对压缩FASTQ格式的DNA数据的效率,并使得程序的运行速度大大加快,匹配速度也相应加快,减少在时间上的消耗,并增强了该方法的可用性。
[0089]请参阅图6,所示为本发明一实施方式中面向存储的DNA序列的并行快速匹配系统10的结构示意图。
[0090]在本实施方式中,面向存储的DNA序列的并行快速匹配系统10,应用于DNA序列的压缩存储,主要包括哈希索引构建模块11、文件分块模块12、多线程处理模块13以及具体匹配模块14。
[0091]哈希索引构建模块11,用于基于前缀对FASTA格式的参考基因组构建哈希索引,找出指定前缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置。
[0092]在本实施方式中,哈希索引构建模块11用于:定义以碱基组合“AT”、“CG”为前缀的k个连续碱基称为kmer ;找出FASTA格式的参考基因组中所有“AT”或“CG”前缀的kmer并转化成哈希值;定义四种碱基“A”、“C”、“G”、“T”的二进制哈希值分别为00、01、10、11,少量存在的“N”、“W”等碱基,可以采用近似规则转换成相应的“A”、“C”、“G”、“T”等碱基;将一个kmer中的碱基分别转换成二进制哈希值,组合起来作为哈希表的一个键值,一个键值关联的哈希表项存储对应kmer在参考基因组中出现的所有位置,由此即构建了哈希索引;并根据需要调整错误匹配率参数、最小有效匹配长度参数以及匹配线程数参数,并将调整后的多个参数应用到后续匹配运算步骤中。
[0093]在本实施方式中,具体匹配模块14,用于找出待匹配的DNA序列中所有指定前缀的kmer并转化成哈希值,查询哈希表获得参考基因组中对应kmer的位置,以此为起点进行双向延展匹配。
[0094]具体的,具体匹配模块14,用于找出待匹配的DNA序列中所有“AT”或“CG”前缀的kmer并转化为二进制哈希值,若哈希表中不存在该键值即不做匹配;若存在键值,即以哈希表返回的匹配位置为起点对DNA序列和参考基因组进行双向延展匹配,并设置容错率允许部分碱基存在错配、插入、删除的情况;当匹配长度大于设定值最小有效匹配长度并且错配率小于设置的容错率时,则匹配成功;若序列只有部分匹配,则将不匹配的部分转换为回文结构再重复上述过程进行重新匹配;最后输出匹配结果包括匹配位置、匹配类型、匹配长度、错配位置,错配内容,并将多个子块各自执行匹配运算所得到的多个匹配结果作归档合并处理。
[0095]文件分块模块12,用于输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理。
[0096]在本实施方式中,FASTQ格式是一种存储生物序列的文本格式,也是DNA序列常用的存储格式之一。DNA测序技术产生成千上万条DNA序列,这些DNA序列存储于以FASTQ为格式的文件中,包含测序产生的所有信息。在广泛使用的FASTQ格式中,每条序列包含四行,每行由换行符分割。每条序列以字符开始,后面紧接着元数据作为第一行,用来唯一标识DNA序列。第二行是碱基数据,由包含常见的{‘A’,‘T’,‘C’,‘G’,‘N’}五个字符的序列构成,其中字符‘N’表示不明确的碱基,可表示为{‘A’,‘T’,‘C’,‘G’}中任意一个字符。第三行以字符‘ + ’开始,紧接着与第一行相同的DNA序列标识。最后一行为质量分数行,与碱基对应,表示每个碱基字符对应位置测序的可信度。
[0097]在本实施方式中,文件分块模块12还用于:在进行分块处理之前,预置所需分块的数量;对原有的DNA序列文件进行文件指针遍历;计算出每个子块含有的具体的序列的数量。
[0098]多线程处理模块13,用于开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组。
[0099]在本实施方式中,并行的算法思路是使用线程级并行编程,开启多个线程分别处理由线程数决定的若干个任务,再将该任务放到后台去处理,其中线程函数调用了匹配函数,多个子块同时执行线程函数,以实现匹配运算的并行执行。
[0?00] 在本实施方式中,多线程处理步骤采用Pthreads(即POSIX threads)的线程级并行编程方式来实现匹配运算的并行化,有效提高针对FASTQ格式的DNA数据的效率,具体用于:开启与子块数量相应的线程数,并执行调用了匹配运算的线程函数处理命令;根据所述线程函数处理命令调用相应的匹配函数,同步执行所有线程,直至所有线程执行完毕。
[0101]本发明在所有线程任务执行完毕之后,由于文件分块后进行并行匹配过程中会得到中间文件,产生与分块数量相应的匹配结果,理论上这些匹配结果将应用于压缩储存工作,但压缩存储过程中必须基于FASTQ格式的DNA序列文件的整体匹配结果,所以需要匹配结果合并模块将多个匹配结果作归档合并处理,以便后续工作进行,同时,输出与性能相关的关键统计信息结果,在此就不在详述。
[0102]在本实施方式中,面向存储的DNA序列的并行快速匹配系统10,还包括:
[0103]参数可调模块,用于在FASTQ格式的参考基因中找出所有前缀(如“CG”、“AT”),然后取前缀之后的k个碱基数创建哈希索引值,根据需要调整错误匹配率参数、最小有效匹配长度参数以及匹配线程数,并将调整后的多个参数应用到所述匹配运算步骤中。
[0104]在本实施方式中,一些匹配过程中运行所需要的关键参数,例如匹配前缀P(默认值为“CG”)、匹配错误容忍度e(默认值为0.05)、最小有效匹配长度L(默认值为30),取前缀之后的k个碱基数创建哈希索引值,k默认值为8,匹配错误容忍度e即错误匹配率,这些都是固定的默认参数,本发明中实现了参数的可调化,用户可以根据需要调整参数以得到性能的最大化。同时,匹配线程也进行了参数可调处理,线程数b(默认值为10)可以根据需要调整开启相应的线程数进行快速匹配。
[0105]本发明提供的一种面向存储的DNA序列的并行快速匹配系统10,对FASTQ格式中的碱基序列作基于参考基因组的轻量级并行匹配,将得出的匹配结果再使用压缩工具进行进一步处理。其中并行算法处理部分主要是基于Pthreads(P0SIX threads)的线程级并行编程,是一套创建线程的应用程序接口,使用多线程并行实现多任务处理,实现了轻量级匹配的并行化,有效提高针对FASTQ格式的DNA数据的效率,并使得程序的运行速度大大加快。
[0106]值得注意的是,上述实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
[0107]另外,本领域普通技术人员可以理解实现上述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如R0M/RAM、磁盘或光盘等。
[0108]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种面向存储的DNA序列的并行快速匹配方法,应用于DNA序列的压缩存储,其特征在于,所述方法包括: 哈希索引构建步骤:基于如缀对FASTA格式的参考基因组构建哈希索引,找出指定如缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置; 文件分块步骤:输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理;多线程处理步骤:开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组,通过存储匹配结果代替原始DNA序列达到压缩存储目的。2.如权利要求1所述的面向存储的DNA序列的并行快速匹配方法,其特征在于,所述哈希索引构建步骤具体包括: 定义以碱基组合“AT”、“CG”为前缀的k个连续碱基称为kmer; 找出FASTA格式的参考基因组中所有“AT”或“CG”前缀的kmer并转化成哈希值; 定义四种碱基“A”、“C"、“G”、“T”的二进制哈希值分别为00、01、10、11,少量存在的“N”、“W”碱基,采用近似规则转换成相应的“A”、、“G”、“T”碱基; 将一个kmer中的碱基分别转换成二进制哈希值,组合起来作为哈希表的一个键值,一个键值关联的哈希表项存储对应kmer在参考基因组中出现的所有位置,由此即构建了哈希索引; 并根据需要调整错误匹配率参数、最小有效匹配长度参数以及匹配线程数参数,并将调整后的多个参数应用到后续匹配运算步骤中。3.如权利要求1所述的面向存储的DNA序列的并行快速匹配方法,其特征在于,所述文件分块步骤还包括: 在进行分块处理之前,预置所需分块的数量; 对原有的DNA序列文件进行文件指针遍历; 计算出每个子块含有的具体的序列的数量。4.如权利要求1所述的面向存储的DNA序列的并行快速匹配方法,其特征在于,所述多线程处理步骤具体包括: 开启与子块数量相应的线程数,并执行调用了基于kmer哈希索引快速定位的匹配函数的线程函数来处理命令; 根据所述线程函数处理命令调用相应匹配函数,同步执行所有线程,直至所有线程执行完毕; 在匹配函数中,找出待匹配的DNA序列中所有“AT”或“CG”前缀的kmer并转化为二进制哈希值,若哈希表中不存在该键值即不做匹配; 若存在键值,即以哈希表返回的匹配位置为起点对DNA序列和参考基因组进行双向延展匹配,并设置容错率允许部分碱基存在错配、插入、删除的情况; 当匹配长度大于设定值最小有效匹配长度并且错配率小于设置的容错率时,则匹配成功; 若序列只有部分匹配,则将不匹配的部分转换为回文结构再重复上述过程进行重新匹配; 最后输出匹配结果包括匹配位置、匹配类型、匹配长度、错配位置,错配内容,并将多个子块各自执行匹配运算所得到的多个匹配结果作归档合并处理。5.—种面向存储的DNA序列的并行快速匹配系统,其特征在于,所述系统包括: 哈希索引构建模块,用于基于前缀对FASTA格式的参考基因组构建哈希索引,找出指定前缀的所有kmer并以其为键值建立哈希索引表,每个表项存储对应kmer出现的位置; 文件分块模块,用于输入FASTQ格式的DNA序列文件,并将所述DNA序列文件进行分块处理; 多线程处理模块,用于开启多个线程分别处理由线程数决定的若干任务,多个子块同时调用基于kmer哈希索引快速定位的匹配函数,将子块并行匹配到FASTA格式的目标参考基因组; 具体匹配模块,用于找出待匹配的DNA序列中所有指定前缀的kmer并转化成哈希值,查询哈希表获得参考基因组中对应kmer的位置,以此为起点进行双向延展匹配。6.如权利要求5所述的面向存储的DNA序列的并行快速匹配系统,其特征在于,所述文件分块模块还用于: 在进行分块处理之前,预置所需分块的数量; 对原有的DNA序列文件进行文件指针遍历; 计算出每个子块含有的具体的序列的数量。7.如权利要求6所述的面向存储的DNA序列的并行快速匹配系统,其特征在于,所述多线程处理模块具体用于: 开启与子块数量相应的线程数,并执行调用了匹配运算的线程函数来处理命令; 根据所述线程函数处理命令调用相应的匹配函数,同步执行所有线程,直至所有线程执行完毕。8.如权利要求5所述的面向存储的DNA序列的并行快速匹配系统,其特征在于,所述哈希索引构建模块具体用于: 定义以碱基组合“AT”、“CG”为前缀的k个连续碱基称为kmer; 找出FASTA格式的参考基因组中所有“AT”或“CG”前缀的kmer并转化成哈希值; 定义四种碱基“A”、“C"、“G”、“T”的二进制哈希值分别为00、01、10、11,少量存在的“N”、“W”碱基,采用近似规则转换成相应的“A”、、“G”、“T”碱基; 将一个kmer中的碱基分别转换成二进制哈希值,组合起来作为哈希表的一个键值,一个键值关联的哈希表项存储对应kmer在参考基因组中出现的所有位置,由此即构建了哈希索引; 并根据需要调整错误匹配率参数、最小有效匹配长度参数以及匹配线程数参数,并将调整后的多个参数应用到后续匹配运算步骤中。9.如权利要求5所述的面向存储的DNA序列的并行快速匹配系统,其特征在于,所述具体匹配模块具体用于: 找出待匹配的DNA序列中所有“AT”或“CG”前缀的kmer并转化为二进制哈希值,若哈希表中不存在该键值即不做匹配; 若存在键值,即以哈希表返回的匹配位置为起点对DNA序列和参考基因组进行双向延展匹配,并设置容错率允许部分碱基存在错配、插入、删除的情况; 当匹配长度大于设定值最小有效匹配长度并且错配率小于设置的容错率时,则匹配成功; 若序列只有部分匹配,则将不匹配的部分转换为回文结构再重复上述过程进行重新匹配; 最后输出匹配结果包括匹配位置、匹配类型、匹配长度、错配位置,错配内容,并将多个子块各自执行匹配运算所得到的多个匹配结果作归档合并处理。
【文档编号】G06F17/30GK106096332SQ201610485409
【公开日】2016年11月9日
【申请日】2016年6月28日
【发明人】朱泽轩, 邓清津, 储颖, 孙怡雯
【申请人】深圳大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1