一种dna测序质量分数无损压缩方法

文档序号:9633557阅读:729来源:国知局
一种dna测序质量分数无损压缩方法
【技术领域】
[0001]本发明涉及生物领域,特别是一种DNA测序质量分数无损压缩方法。
【背景技术】
[0002]基因数据比较庞大,需要耗费的存储资源高,因此对基因数据进行压缩能够显著降低存储成本。
[0003]FastQ格式文件是用来记录一组测序序列的状态,一般,每条序列对应文件里面的4行,分别为序列描述,DNA序列,重复的序列描述(也可以用一个+号代替),DNA序列对应的质量分数行。它的特点是每种类型的数据有各自的特点,例如序列描述之间有很大的冗余性,而序列描述和DNA序列之间没有什么冗余性。
[0004]质量分数是一种评价DNA测序中每个碱基的测序质量的一种方法,它与碱基配对出现,每个碱基都对应着一个质量分数。质量分数的值域为一个连续的整数区间。质量分数是一种偏随机的序列,它在fastq文件中的占比与基因序列相同,基因序列可以通过参考物种的基因序列进行压缩,而质量分数没有参考序列,所以质量值的压缩比要远大于基因序列的压缩比。对质量分数压缩算法的研究是优化fastq文件压缩算法的最重要组成部分。
[0005]因此,亟需一种有效的、针对FastQ格式文件的压缩方法,特别是针对质量分数的无损压缩方法。

【发明内容】

[0006]针对上述部分问题,本发明提供了一种DNA测序质量分数无损压缩方法,包括如下:
[0007]步骤S100:提取fastq格式的文件中的质量分数行;
[0008]步骤S200:以run-length编码方法为参考,采用类run-length编码方法将提取出来的质量分数进行转换:
[0009]对于某质量分数A连续出现2次以上相同字符的质量分数串,其出现次数记为n,将该质量分数A的连续出现次数η的相反数-η作为该质量分数串的长度值,以便将该质量分数串转换为A (_η),并存储到压缩文件中,从而压缩此类质量分数。
[0010]优选的,所述方法还进一步包括:
[0011]步骤S300:对于质量分数的各个前缀,统计各个前缀的质量分数分布,并存储各个前缀后紧跟的不同质量分数的种类值和数量值;
[0012]步骤S400:根据所述不同质量分数的种类值和数量值,构建Huffman树;
[0013]步骤S500:对于具有不同的前缀的质量分数,选择对应的Huffman树,并将Huffman树中保存的该质量分数对应的比特流存储到压缩文件中,从而来压缩此类质量分数。
[0014]更优选的,
[0015]步骤S200中,对于不包含连续相同质量分数的质量分数串进行转换,转换后的质量分数串依然为原始质量分数串,且转换后的质量分数串无长度值。
[0016]本发明具有如下特点:提出了一种特别面向质量分数的无损压缩方法,降低了单独出现的质量分数的编码量,打破了经典的run-length的数据结构,及质量分数-长度对,适应性的公开了一种新机制来对长度进行变换,使得它与质量分数的值域不相交,且压缩方面具备高效性能。
【附图说明】
[0017]图1为本发明的一个实施例中的示意图;
[0018]图2为本发明的另一个实施例中的示意图。
【具体实施方式】
[0019]以下结合附图1-2对本发明的各个实施例进行详细的说明。
[0020]在一个实施例中,其揭示了一种DNA测序质量分数无损压缩方法,包括如下:
[0021]步骤S100:提取fastq格式的文件中的质量分数行;
[0022]步骤S200:以run-length编码方法为参考,采用类run-length编码方法将提取出来的质量分数进行转换:
[0023]对于某质量分数A连续出现2次以上相同字符的质量分数串,其出现次数记为n,将该质量分数A的连续出现次数η的相反数-η作为该质量分数串的长度值,以便将该质量分数串转换为A (_η),并存储到压缩文件中,从而压缩此类质量分数。
[0024]对于该实施例而言,FastQ的文件结构中每条序列的最后一行为质量分数行,提取可以有多种方式,例如将质量分数行读出来,得到一个提取后的新文件。这样得到的新文件可以包括若干质量分数行。提取这一预处理使得将FastQ文件中其他的数据剔除掉,为接下来的数据处理带来便利。
[0025]至于取相反数作为该质量分数串的长度值,首先为了降低单独出现的质量分数的编码量,需要省略其长度,但这样就打破了经典的run-length的数据结构,及质量分数-长度对,因此本实施例提出了一种新机制来对长度进行变换,使得它与质量分数的值域不相交:以run-length编码方法为参考,采用类run-length编码方法将提取出来的质量分数进行转换。其次,从数据处理的实现上而言,本实施例开创性的在质量分数的压缩领域,采用了相反数这一种CPU(即处理器)能够高效做的变换,从而在本领域压缩中提供了高效解决方案。也就是说,本实施例可以对具有相同字符串的质量分数进行高效的压缩,而且此压缩由于不修改原数据,所以属于无损压缩。除该实施例外,其余实施例也不修改原数据,依然采用无损压缩方案。
[0026]可选的,所述步骤S200还进一步包括步骤S2002:改变run-length中length的值域,并根据值域所限定的length的最大值,来拆分超过该最大值的质量分数串为多个串,并对拆分后的该多个串分别压缩。
[0027]对于该实施例,这意味着,以run-length编码方法为参考,采用类run-length编码方法,还可以包括:例如改变run-length中length的值域,如果限定length最大32,那么需要将A (100)拆分成A (32) A (32) A (32) A (4),因为整个文件的字符域变小,所以更容易压缩。
[0028]在另一个实施例中,所述方法还进一步包括:
[0029]步骤S300:对于质量分数的各个前缀,统计各个前缀的质量分数分布,并存储各个前缀后紧跟的不同质量分数的种类值和数量值;
[0030]步骤S400:根据所述不同质量分数的种类值和数量值,构建Huffman树;
[0031 ] 步骤S500:对于具有不同的前缀的质量分数,选择对应的Huffman树,并将Huffman树中保存的该质量分数对应的比特流存储到压缩文件中,从而来压缩此类质量分数。
[0032]对于该实施例而言,由于二代测序的过程是一个化学过程,通过监测荧光来判断核酸种类和质量,发现相邻的质量分数比较接近。本发明正是开创性的利用了某个核酸的质量分数和它的前缀有较强的相关性这一发现,在生物计算方面,这意味着:对于特定的前缀AAB,它后面跟B、A的可能性都很大。因此,本实施例统计了各前缀后面的质量分数的分布,并针对每个分布构建一棵Huffman树:例如统计前缀ABC的质
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1