一种DNA读序数据FASTQ文件并行压缩和解压缩方法技术

技术编号:9642238 阅读:254 留言:0更新日期:2014-02-07 00:34
一种DNA读序数据FASTQ文件并行压缩和并行解压缩方法,针对DNA读序数据FASTQ文件的压缩与解压缩,利用循环双缓冲队列、循环双内存映射和内存映射并结合数据分块处理、多线程流水并行压缩解压缩处理、读写顺序二维数组等技术,实现FASTQ文件的多个进程以及进程内的多个线程之间的并行压缩和并行解压缩处理。可以基于MPI和OpenMP实现,也可以基于MPI和Pthread实现。本发明专利技术充分利用各个计算节点以及节点内多核CPU的强大计算能力,能够解决串行压缩解压缩程序所受到的处理器、内存等资源的限制。

【技术实现步骤摘要】
【专利摘要】一种DNA读序数据FASTQ文件并行压缩和并行解压缩方法,针对DNA读序数据FASTQ文件的压缩与解压缩,利用循环双缓冲队列、循环双内存映射和内存映射并结合数据分块处理、多线程流水并行压缩解压缩处理、读写顺序二维数组等技术,实现FASTQ文件的多个进程以及进程内的多个线程之间的并行压缩和并行解压缩处理。可以基于MPI和OpenMP实现,也可以基于MPI和Pthread实现。本专利技术充分利用各个计算节点以及节点内多核CPU的强大计算能力,能够解决串行压缩解压缩程序所受到的处理器、内存等资源的限制。【专利说明】—种DNA读序数据FASTQ文件并行压缩和解压缩方法
本专利技术涉及生物信息、数据压缩和高性能计算领域,特别涉及一种DNA读序数据FASTQ文件的并行压缩和并行解压缩方法。
技术介绍
生物信息学的主要任务之一是采集和分析大量的基因数据。这些数据对于基因研究来说至关重要,有助于确定防止或导致疾病产生的基因组件,并研究出具有针对性的疗法。高通量的测序方法和设备产生海量的短的读序数据。存储、管理和传输DNA读序数据的常用方法是采用FASTQ文件格式,这种格式主要包含DNA读序数据以及每个DNA碱基所对应的注释信息,例如表示测序标记过程的不确定性的Quality Scores信息。读序标记和其它诸如设备名称的描述也包含在FASTQ文件中。相比其它DNA数据的存储格式(例如FASTA),FASTQ格式能存储更多的信息,但这同时也使得文件大小和存储空间急剧增长。目前针对碱基读序数据和其注释描述信息进行有效的无损压缩和解压缩的算法研究,是一个研究热点。针对FASTQ文件数据的压缩,目前取得重要进展的是美国转译遗传研究所(TGen)所石开究的 G_SQZ算法(Tembe, W.et al.G-SQZ: compact encoding of genomic sequence andquality data.Bioinformatics2010; 26, 2192 - 2194.),以及Deorowicz Sebastian等人所石开究的 DSRC 算法(Deorowicz S, Grabowski S.Compression of DNA sequence reads inFASTQ format.Bioinformatics2011; 27:860-862.)。这两种算法均使用了索引系统允许从规律的间隔处(简称分块)进行访问,所需信息不需要从头开始解码。G_SQZ算法主要使用Huffman编码〈碱基,Quality score〉对,而DSRC算法对碱基数据行和Quality Score行单独利用Huffman编码并辅以其它精细的压缩处理(例如游程处理等)。这类方法的优点是保留数据相对顺序信息的同时能够随机解码部分数据进行访问,无损压缩效率高。这代表了一类FASTQ文件压缩方法,为方便叙述,以下简称为分块索引串行算法。目前需要进行基因组序列分析的数据已达到TB数量级。大型测序中心正计划或已安装PB级规模的存储设备。对于这些海量数据,为减少存储空间和传输时间,便于对大量基因组序列数据实时分析,必须对其进行实时数据压缩和解压缩,这需要借助高性能计算平台的强大的计算能力。随着高性能计算平台的快速发展,充分利用各个计算节点上的多核CPU的强大的计算能力,来实时压缩与解压缩海量的大的FASTQ文件,能够解决串行压缩解压缩程序所受到的处理器处理能力、内存等资源的限制。上述G-SQZ算法和DSRC算法均是串行算法,目如尚未见到与这类算法相关的基于多节点的多核CPU的并行算法的研究文章和专利。
技术实现思路
鉴于目前尚未见到与上述G-SQZ和DSRC等这一类分块索引串行算法相关的并行算法的研究与专利,本专利技术的目的在于提供一种这一类FASTQ文件分块索引串行压缩解压缩算法对应的并行压缩解压缩方法,利用多计算节点和多核CPU,可以基于MPI+OpenMP实现,也可以基于MPI+Pthread实现;能够充分利用高性能计算平台的强大的计算能力,大幅度提升对海量基因组序列实时分析处理的速度,对基因数据的更广泛应用提供重要的技术基础。本专利技术的技术方案如下所述。一种DNA读序数据的FASTQ文件的并行压缩方法,包括以下步骤:一、并行压缩进程任务分割根据FASTQ文件大小、并行压缩进程数目、FASTQ文件中每个读序片段(包含碱基信息以及对应的其它注释信息,以下为叙述方便,标记为一条记录)数据的特点确定每个进程待处理数据的起始和结束位置。每个进程均运行进程任务分割模块,将待压缩的原始数据近似均匀地分配到各个进程上,以实现数据并行。这样每个进程在处理时相互之间没有通信时间的消耗,提升了数据并行的处理效率。每个进程得到单独的压缩文件,压缩数据的顺序与进程号一致。二、并行压缩进程内多线程流水并行压缩进程处理模块中包含一个原始数据读取线程、一个压缩数据写入线程和多个压缩工作线程,工作线程的具体数目可以根据硬件CPU的核数以及进程设置来设定。每个进程所处理的数据被原始数据读取线程分成多个块,每个块包含特定的固定数目的记录数据(最末端块可能少于这个固定数目)。每个工作线程均有两个循环双缓冲队列,一个是原始数据循环双缓冲队列,一个是压缩数据循环双缓冲队列。原始数据循环双缓冲队列和压缩数据循环双缓冲队列具有类似结构,其中缓冲区的结构根据存储数据的不同稍有不同,后面在【具体实施方式】部分详细介绍各个缓冲区的结构。每个原始数据循环双缓冲队列包含两个队列:一个是空块缓冲区队列,一个是原始数据块队列。每个压缩数据循环双缓冲队列也包含两个队列:一个是空块缓冲区队列,一个是压缩数据块队列。这两个循环双缓冲队列的处理方式相同。下面以原始数据循环双缓冲队列为例,详细说明其处理方式:(I)原始数据循环双缓冲队列初始化处理:将空块缓冲区队列实例化,具有特定数目的空块缓冲区,原始数据块队列为空。(2)原始数据读取线程读取一个原始数据块。(3)在空块缓冲区队列头获取一个空块缓冲区。(4)用原始数据块填充获取的这个空块缓冲区。(5)将这个填充的原始数据块放入原始数据块队列的末端。(6)压缩工作线程在原始数据块队列头中获取一个原始数据块缓冲区中的块数据进行压缩处理。(7)将此原始数据块缓冲区清空,并放入空块缓冲区队列。在每个进程内,进行以原始数据块为单位的数据的并行压缩流水线处理,具体流水并行处理流程如下:(I)原始数据读取线程不断地根据记录数据特点解析读取原始数据块,循环依次查找每个压缩工作线程的原始数据循环双缓冲队列中的空块缓冲区,找到后将原始数据块放入,然后释放此块缓冲区到此循环双缓冲队列中的原始数据块队列的末端。(2)每个压缩工作线程不断地从本线程的原始数据循环双缓冲队列中的原始数据块队列头获取原始数据块,然后进行压缩处理。(3)每个压缩工作线程不断地将压缩后的块数据填充到获取的本线程的压缩数据循环双缓冲队列中的空块缓冲区中,并释放此缓冲区到此循环双缓冲队列的压缩数据块队列的尾部。(4)压缩数据写入线程不断地按照块号从小到大的顺序依次查找已经压缩处理完毕的块数据所在的线程号,获取此线程内的压缩数据循环双缓冲队列中的压缩数据块队列头中的此块压缩数据,写入最终本文档来自技高网
...

【技术保护点】
一种DNA读序数据FASTQ文件并行压缩方法,其特征在于包括并行压缩进程任务分割部分和压缩进程处理部分,具体如下:(一)并行压缩进程任务分割部分根据FASTQ文件大小、并行压缩进程数目、FASTQ文件中每个读序片段——每个记录的数据特点,确定每个压缩进程待处理数据的起始和结束位置;每个进程将待压缩的原始数据近似均匀地分配到各个进程上,以实现数据并行,这样每个进程在处理时相互之间没有通信时间的消耗,提升了数据并行的处理效率;每个进程得到单独的压缩文件,压缩数据的顺序与进程号一致;(二)压缩进程处理部分负责进程内多线程流水并行压缩每个压缩进程处理部分包含一个原始数据读取线程、一个压缩数据写入线程和多个压缩工作线程;工作线程的具体数目可以根据硬件CPU的核数以及进程设置来设定;每个进程所处理的待压缩数据被原始数据读取线程分成多个块,每个块包含特定的固定数目的记录,最末端块少于所述固定数目;每个工作线程均有两个循环双缓冲队列,一个是原始数据循环双缓冲队列,另一个是压缩数据循环双缓冲队列;每个原始数据循环双缓冲队列包含两个队列:一个是空块缓冲区队列,一个是原始数据块队列;每个压缩数据循环双缓冲队列也包含两个队列:一个是空块缓冲区队列,另一个是压缩数据块队列;在每个进程内,进行以原始数据块为单位的数据的并行压缩流水线处理,具体流水并行处理流程如下:(1)原始数据读取线程不断地根据记录数据特点解析读取原始数据块,循环依次查找每个压缩工作线程的原始数据循环双缓冲队列中的空块缓冲区,找到后将原始数据块放入,然后释放此块缓冲区到此循环双缓冲队列中的原始数据块队列的末端;原始数据读取线程采用了内存映射结合数据分块技术;(2)每个压缩工作线程不断地从本线程的原始数据循环双缓冲队列中的原始数据块队列头获取原始数据块,然后进行压缩处理;(3)每个压缩工作线程不断地将压缩后的块数据填充到获取的本线程的压缩数据循环双缓冲队列中的空块缓冲区中,并释放此缓冲区到此循环双缓冲队列的压缩数据块队列的尾部;(4)压缩数据写入线程不断地按照块号从小到大的顺序依次查找已经压缩处理完毕的块数据所在的线程号,获取此线程内的压缩数据循环双缓冲队列中的压缩数据块队列头中的此块压缩数据,写入最终的压缩文件。...

【技术特征摘要】

【专利技术属性】
技术研发人员:郑晶晶王婷张常有詹科
申请(专利权)人:中国科学院软件研究所广州中国科学院软件应用技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1