发明名称 一种DNA读序数据FASTQ文件并行压缩和解压缩方法
摘要 一种DNA读序数据FASTQ文件并行压缩和并行解压缩方法,针对DNA读序数据FASTQ文件的压缩与解压缩,利用循环双缓冲队列、循环双内存映射和内存映射并结合数据分块处理、多线程流水并行压缩解压缩处理、读写顺序二维数组等技术,实现FASTQ文件的多个进程以及进程内的多个线程之间的并行压缩和并行解压缩处理。可以基于MPI和OpenMP实现,也可以基于MPI和Pthread实现。本发明充分利用各个计算节点以及节点内多核CPU的强大计算能力,能够解决串行压缩解压缩程序所受到的处理器、内存等资源的限制。
申请公布号 CN103559020A 申请公布日期 2014.02.05
申请号 CN201310551802.7 申请日期 2013.11.07
申请人 中国科学院软件研究所;广州中国科学院软件应用技术研究所 发明人 郑晶晶;王婷;张常有;詹科
分类号 G06F9/38(2006.01)I;G06F17/30(2006.01)I;H03M7/30(2006.01)I 主分类号 G06F9/38(2006.01)I
代理机构 北京科迪生专利代理有限责任公司 11251 代理人 成金玉;孟卜娟
主权项 一种DNA读序数据FASTQ文件并行压缩方法,其特征在于包括并行压缩进程任务分割部分和压缩进程处理部分,具体如下:(一)并行压缩进程任务分割部分根据FASTQ文件大小、并行压缩进程数目、FASTQ文件中每个读序片段——每个记录的数据特点,确定每个压缩进程待处理数据的起始和结束位置;每个进程将待压缩的原始数据近似均匀地分配到各个进程上,以实现数据并行,这样每个进程在处理时相互之间没有通信时间的消耗,提升了数据并行的处理效率;每个进程得到单独的压缩文件,压缩数据的顺序与进程号一致;(二)压缩进程处理部分负责进程内多线程流水并行压缩每个压缩进程处理部分包含一个原始数据读取线程、一个压缩数据写入线程和多个压缩工作线程;工作线程的具体数目可以根据硬件CPU的核数以及进程设置来设定;每个进程所处理的待压缩数据被原始数据读取线程分成多个块,每个块包含特定的固定数目的记录,最末端块少于所述固定数目;每个工作线程均有两个循环双缓冲队列,一个是原始数据循环双缓冲队列,另一个是压缩数据循环双缓冲队列;每个原始数据循环双缓冲队列包含两个队列:一个是空块缓冲区队列,一个是原始数据块队列;每个压缩数据循环双缓冲队列也包含两个队列:一个是空块缓冲区队列,另一个是压缩数据块队列;在每个进程内,进行以原始数据块为单位的数据的并行压缩流水线处理,具体流水并行处理流程如下:(1)原始数据读取线程不断地根据记录数据特点解析读取原始数据块,循环依次查找每个压缩工作线程的原始数据循环双缓冲队列中的空块缓冲区,找到后将原始数据块放入,然后释放此块缓冲区到此循环双缓冲队列中的原始数据块队列的末端;原始数据读取线程采用了内存映射结合数据分块技术;(2)每个压缩工作线程不断地从本线程的原始数据循环双缓冲队列中的原始数据块队列头获取原始数据块,然后进行压缩处理;(3)每个压缩工作线程不断地将压缩后的块数据填充到获取的本线程的压缩数据循环双缓冲队列中的空块缓冲区中,并释放此缓冲区到此循环双缓冲队列的压缩数据块队列的尾部;(4)压缩数据写入线程不断地按照块号从小到大的顺序依次查找已经压缩处理完毕的块数据所在的线程号,获取此线程内的压缩数据循环双缓冲队列中的压缩数据块队列头中的此块压缩数据,写入最终的压缩文件。
地址 100190 北京市海淀区中关村南四街4号