CN110708074B - Sam及bam文件cigar域的压缩及解压还原方法、系统和介质 - Google Patents

Sam及bam文件cigar域的压缩及解压还原方法、系统和介质 Download PDF

Info

Publication number
CN110708074B
CN110708074B CN201910789642.7A CN201910789642A CN110708074B CN 110708074 B CN110708074 B CN 110708074B CN 201910789642 A CN201910789642 A CN 201910789642A CN 110708074 B CN110708074 B CN 110708074B
Authority
CN
China
Prior art keywords
cigar
domain
operator
data
compression
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910789642.7A
Other languages
English (en)
Other versions
CN110708074A (zh
Inventor
徐霞丽
李�根
冯博伦
黄能超
赵丽霞
马丑贤
王振国
杨耀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Genetalks Bio Tech Changsha Co ltd
Original Assignee
Genetalks Bio Tech Changsha Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Genetalks Bio Tech Changsha Co ltd filed Critical Genetalks Bio Tech Changsha Co ltd
Priority to CN201910789642.7A priority Critical patent/CN110708074B/zh
Publication of CN110708074A publication Critical patent/CN110708074A/zh
Application granted granted Critical
Publication of CN110708074B publication Critical patent/CN110708074B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种SAM及BAM文件CIGAR域的压缩及解压还原方法、系统和介质,本发明从压缩前的预处理出发,将一个操作符的CIGAR域数据编码为第一指定内容,跳转执行步骤A6);将两个操作符的CIGAR域数据编码为只包含其中一个操作符及其数字部分的第二指定内容,将三个及以上操作符的CIGAR域数据编码省略第一个操作符M及其数字部分“\d+M”、最后一个操作符的操作符M得到第三指定内容,结合CIGAR域的特性进行预处理,从而可将CIGAR域的内容按照一定规则预处理以实现CIGAR域的高倍压缩,具有预处理高效快速、压缩比高、压缩效果好的优点,本发明可适用于SAM文件、BAM文件两种格式,具有应用范围广的优点。

Description

SAM及BAM文件CIGAR域的压缩及解压还原方法、系统和介质
技术领域
本发明涉及生物信息领域的SAM及BAM数据的压缩与还原技术,具体涉及一种SAM及BAM文件CIGAR域的压缩及解压还原方法、系统和介质。
背景技术
在生物信息学中尤其是高通量测序数据分析中,大部分的操作都是在实现短片段序列与参考序列的比对(mapping),比如bwa、bowtie等,所以需要使用一个统一的格式来表示这种mapping结果的问题。SAM(Sequence Alignment Map)文件格式就是来解决这个问题的,它是用来存储测序reads与参考序列比对结果信息的一种文件格式,以TAB为分割符,支持不同平台的短读段及长读段(最长为128Mbp)。不过由于SAM文件大小通常较大,所以实际使用时会转换为BAM文件(Binary sequence Alignment Map),BAM文件是SAM文件的二进制版,在SAM的基础上运用二进制编码,又极大的压缩了SAM文件的体积。BAM相对SAM节约很大的存储空间,且保留了与SAM完全相同内容信息。目前在BAM文件格式的基础上,继续衍生了CRAM文件格式,相对BAM而言文件大小进一步缩小一半以上,但文件依然较大,让SAM变得更小仍然是生物信息领域需要持续探讨和优化的问题。
SAM及BAM文件格式分为header section(头部分,注释信息,以@开头,可有可无)和alignment section(比对结果)两个部分,alignment section 必须由11个字段组成 ,以tab分开,分别为QNAME、FLAG、RNAME、 POS、MAPQ、CIGAR、 MRNM、MPOS、ISIZE、SEQ、QUAL。如果其内容没有获得,可以用*或者0代替。在对SAM及BAM文件进行压缩时,为了获取尽量高的压缩比,通常会根据每个字段的意义和特性进行压缩。如SEQ字段表示read的内容,在压缩SEQ字段内容时,因为RNAME和POS分别记录了该read匹配到基因参考序列具体哪条染色体,以及对应的位置,这样可以只需保存该read与匹配到的基因参考序列的差异信息即可,这样可以将SEQ直接去掉,从而可以将SAM文件压缩比较小。SAM及BAM文件格式的第六个字段CIGAR为一个数字与字母交替构成的字符串,标记了这段reads不同位置的match情况。然而对于第六个字段CIGAR域的压缩,目前仍然往往没有被重视,或者采用普通的压缩方法,导致CIGAR域的压缩仍然存在较大的优化空间。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种SAM及BAM文件CIGAR域的压缩及解压还原方法、系统和介质,本发明从压缩前的预处理出发,结合CIGAR域的特性进行预处理,从而可将CIGAR域的内容按照一定规则预处理以实现CIGAR域的高倍压缩,具有预处理高效快速、压缩比高、压缩效果好的优点,本发明可适用于SAM文件、BAM文件两种格式,具有应用范围广的优点。
为了解决上述技术问题,本发明采用的技术方案为:
一种SAM及BAM文件CIGAR域的压缩及解压还原方法,其特征在于,针对只有一个操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码为第一指定内容,然后送入压缩器进行压缩;针对只有一个操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据为第一指定内容,则将解压出的QUAL域内容的长度作为指定的默认操作符或者第一指定内容携带的操作符的数字部分,并将其和指定的默认操作符或者第一指定内容携带的操作符组合还原出原始CIGAR域的数据。
可选地,针对只有两个操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码为只包含其中一个操作符及其数字部分的第二指定内容,然后送入压缩器进行压缩;针对只有一个操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据为包含一个操作符及其数字部分的第二指定内容,则将解压出的QUAL域内容的长度减去所述一个操作符的数字部分作为另一个操作符的数字部分,然后将一个操作符及其数字部分、另一个操作符及其数字部分按照指定的顺序组合还原出原始CIGAR域的数据。
可选地,所述只有两个操作符的CIGAR域数据包括正则表达式满足“\d+M\d+S”的CIGAR域数据,且其压缩步骤为将“\d+M\d+S”省略“\d+M”部分编码为“\d+S”,然后送入压缩器进行压缩;且其解压还原步骤为在解压还原时,如果解压出CIGAR域的数据只有一个操作符S及其数字部分且满足正则表达式“\d+S”,则将解压出的QUAL域内容的长度减去解压出来的操作符S的数字部分作为原始CIGAR域中操作符M的数字部分,然后将操作符M及其数字部分、操作符S及其数字部分组合还原出正则表达式满足“\d+M\d+S”的原始CIGAR域的数据。
可选地,所述只有两个操作符的CIGAR域数据包括正则表达式满足“\d+S\d+M”的CIGAR域数据,且其压缩步骤为将“\d+S\d+M”省略“\d+M”部分并编码为“S\d+”,然后送入压缩器进行压缩;且其解压还原步骤为在解压还原时,如果解压出CIGAR域的数据只有一个操作符S及其数字部分且满足正则表达式“S\d+”,则将解压出的QUAL域内容的长度减去解压出来的操作符S的数字部分作为原始CIGAR域中操作符M的数字部分,然后将操作符M及其数字部分、操作符S及其数字部分组合还原出正则表达式满足“\d+S\d+M”的原始CIGAR域的数据。
可选地,针对正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码省略第一个操作符M及其数字部分“\d+M”、最后一个操作符的操作符M得到第三指定内容,然后送入压缩器进行压缩;针对正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据匹配第三指定内容的正则表达式,则将解压出的QUAL域内容的长度减去解压出CIGAR域的数据中各个操作符的数字部分的总和得到第一个操作符M的数字部分,然后将第一个操作符M及其数字部分、解压出CIGAR域的数据、操作符M三者组合还原出原始CIGAR域的数据。
此外,本发明还提供一种SAM及BAM文件CIGAR域的压缩方法,实施步骤包括:
A1)判断目标CIGAR域数据的类型,如果目标CIGAR域数据为只有一个操作符的CIGAR域数据,则跳转执行步骤A2);如果目标CIGAR域数据为只有两个操作符的CIGAR域数据,则跳转执行步骤A3);如果目标CIGAR域数据为正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据,则跳转执行步骤A4);否则跳转执行步骤A5);
A2)将CIGAR域数据编码为第一指定内容,跳转执行步骤A6);
A3)将CIGAR域数据编码为只包含其中一个操作符及其数字部分的第二指定内容,跳转执行步骤A6);
A4)将CIGAR域数据编码省略第一个操作符M及其数字部分“\d+M”、最后一个操作符的操作符M得到第三指定内容,跳转执行步骤A6);
A5)针对目标CIGAR域数据按照指定方式进行编码,跳转执行步骤A6);
A6)将编码后的内容送入压缩器进行压缩,结束并退出。
此外,本发明还提供一种前述SAM及BAM文件CIGAR域的压缩方法的解压还原方法,实施步骤包括:
B1)获取解压出CIGAR域以及QUAL域的数据;
B2)判断解压出CIGAR域的数据类型, 如果解压出CIGAR域的数据为第一指定内容,则跳转执行步骤B3);如果解压出CIGAR域的数据为第一指定内容,则跳转执行步骤B4);如果解压出CIGAR域的数据匹配第三指定内容的正则表达式,则跳转执行步骤B5);否则跳转执行步骤B6);
B3)将解压出的QUAL域内容的长度作为指定的默认操作符或者第一指定内容携带的操作符的数字部分,并将其和指定的默认操作符或者第一指定内容携带的操作符组合还原出原始CIGAR域的数据,结束并退出;
B4)将解压出的QUAL域内容的长度减去所述一个操作符的数字部分作为另一个操作符的数字部分,然后将一个操作符及其数字部分、另一个操作符及其数字部分按照指定的顺序组合还原出原始CIGAR域的数据,结束并退出;
B5)将解压出的QUAL域内容的长度减去解压出CIGAR域的数据中各个操作符的数字部分的总和得到第一个操作符M的数字部分,然后将第一个操作符M及其数字部分、解压出CIGAR域的数据、操作符M三者组合还原出原始CIGAR域的数据,结束并退出;
B6)针对解压出CIGAR域的数据按照指定方式进行解码,结束并退出。
此外,本发明还提供一种SAM及BAM文件CIGAR域的压缩及解压还原系统,包括计算机设备,该计算机设备被编程或配置以执行所述SAM及BAM文件CIGAR域的压缩及解压还原方法的步骤,或者该计算机设备被编程或配置以执行所述SAM及BAM文件CIGAR域的压缩方法的步骤,或者该计算机设备被编程或配置以执行所述解压还原方法的步骤。
此外,本发明还提供一种SAM及BAM文件CIGAR域的压缩及解压还原系统,包括计算机设备,该计算机设备的存储介质上存储有被编程或配置以执行所述SAM及BAM文件CIGAR域的压缩及解压还原方法的计算机程序,或者该计算机设备的存储介质上存储有被编程或配置以执行所述SAM及BAM文件CIGAR域的压缩方法的计算机程序,或者该计算机设备的存储介质上存储有被编程或配置以执行所述解压还原方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述SAM及BAM文件CIGAR域的压缩及解压还原方法的计算机程序,或者该计算机可读存储介质上存储有被编程或配置以执行所述SAM及BAM文件CIGAR域的压缩方法的计算机程序,或者该计算机可读存储介质上存储有被编程或配置以执行所述解压还原方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、本发明从压缩前的预处理出发,结合CIGAR域的特性进行预处理,从而可将CIGAR域的内容按照一定规则预处理以实现CIGAR域的高倍压缩,具有预处理高效快速、压缩比高、压缩效果好的优点。
2、本发明可适用于SAM文件、BAM文件两种格式,具有应用范围广的优点。
附图说明
图1为CIGAR域内容"93M1I6M"描述的对比信息示意图。
图2为CIGAR域的操作符定义表。
图3为本发明实施例压缩方法的流程示意图。
具体实施方式
众所周知,SAM及BAM文件存储的是分析软件将短片段序列与参考序列比对之后的结果,为了描述比对结果,SAM及BAM文件定义了CIGAR域。该域为SAM及BAM的第六个字段,它记录了短片段序列与参考序列完整的比对信息,采用数字组合操作符的规则。譬如"100M",100表示操作符M的长度,而操作符M代表对齐匹配,如果CIGAR域内容为"100M",那么说明该短片段序列从位置1开始直到长度100,与参考序列从位置POS开始直到长度100对齐匹配,这里参考序列的位置POS值记录在BAM的第四个字段,而具体对应哪条参考序列(或者称呼为染色体),是通过参考序列名称索引的,该参考序列的名称对应BAM的第三个字段RNAME(一个参考序列文件,或者称呼为fasta文件,一般是由多条不同的参考序列组成,每条参考序列有自己对应的RNAME,所以BAM记录对比结果时,需要另外用RANME,POS字段记录更详细的信息)。为了更形象地描述CIGAR字段,我们看一组有多个操作符的CIGAR域,如"93M1I6M",它描述的对比结果是:从短片段序列起始位置开始的93个碱基与参考序列对齐匹配,紧接着需要在参考序列对应位置插入一个碱基(操作符I表示插入参考序列)才能对齐,最后短片段序列剩余的6个碱基与参考序列匹配对齐,见图1所示。除了M和I操作外,CIGAR域还有另外7种操作符,其具体含义见图2所示。
以BAM文件为例,在整个BAM文件的所有CIGAR域中,CIGAR域的内容按形式分类后,各分类占比大致如下:1、CIGAR符合正则表达式"\d+M"的情形占比通常在80%以上(因为物种的变异通常是非常小的,所以短片段序列与参考序列通常匹配度会很高),譬如100M;2、CIGAR包含两个2个操作符,即符合正则表达式"\d+M\d+S"或者"\d+S\d+M"的占比会占到整个CIGAR域内容10%以上的比例,譬如98M2S、6S94M;3、CIGAR包含3个及3个以上操作符的占比大致为10%,譬如80M3I17M;4、CIGAR域也会存在内容是"*"的情形,表示短片段序列完全没有匹配上参考序列,但这种情形极少。要实现CIGAR域的高倍压缩,必须结合CIGAR域的特性,先将内容按照一定规则预处理,然后再送入压缩器压缩。因此,本发明SAM及BAM文件CIGAR域的压缩及解压还原方法、系统及介质的关键发明点在于从压缩前的预处理出发,结合CIGAR域的特性进行预处理,从而可将CIGAR域的内容按照一定规则预处理以实现CIGAR域的高倍压缩。
下文将以正则表达式的方式,对CIGAR域进行归类:
一、一个操作符
正则表达式“\d+ M”表示操作符M前面有多位连续数字。本实施例SAM及BAM文件CIGAR域的压缩及解压还原方法中,针对只有一个操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码为第一指定内容,然后送入压缩器进行压缩;针对只有一个操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据为第一指定内容,则将解压出的QUAL域内容的长度作为指定的默认操作符或者第一指定内容携带的操作符的数字部分,并将其和指定的默认操作符或者第一指定内容携带的操作符组合还原出原始CIGAR域的数据。
本实施例中上述针对只有一个操作符的CIGAR域数据的压缩及解压还原方式涵盖了CIGAR字段只有一个操作符的情形为"\d+(M|=|X)",而实际情况中基本只使用"\d+M","\d+="和"\d+X"通常不使用。只有一个操作符的CIGAR域数据包括正则表达式满足“\d+M\”的CIGAR域数据,且其压缩步骤为将“\d+M”编码为0,然后送入压缩器进行压缩;其解压还原步骤为在解压还原时,如果解压出CIGAR域的数据为0,则将解压出的QUAL域内容的长度作为操作符M的数字部分,从而组合还原出正则表达式满足“\d+M\”的原始CIGAR域的数据。
当遇到CIGAR域内容符合正则表达式形式"\d+M"的情形时,本实施例中直接将该CIGAR内容编码为0,然后将内容0送入压缩器进行压缩。在解压还原时如果解压出来该CIGAR字段的内容为0,我们先解压出第十一个字段QUAL的内容,然后计算出QUAL内容的长度,该长度即为CIGAR域的"\d+"对应的数字,因为首先,QUAL与第十个字段SEQ的内容长度是一致的,其次当CIGAR内容为0时,我们知道该CIGAR肯定只有一个操作符,且是M,那么操作符对应的数字肯定为SEQ的总长度。这样处理的实际效果是,CIGAR域80%以上的内容变成了0,然后再送入压缩器压缩,压缩率会非常理想。譬如解压出来QUAL的长度的为100,那么这种情形还原出来原始CIGAR字段内容为"100M"。毫无疑问,"\d+="和"\d+X"也可以根据采用其他的第一指定内容进行指定操作符,例如编码为1、编码为2或者其他指定编码的方式,只要能够和其他类型进行区分即可。
二、两个操作符
本实施例中,针对只有两个操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码为只包含其中一个操作符及其数字部分的第二指定内容,然后送入压缩器进行压缩;针对只有一个操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据为包含一个操作符及其数字部分的第二指定内容,则将解压出的QUAL域内容的长度减去所述一个操作符的数字部分作为另一个操作符的数字部分,然后将一个操作符及其数字部分、另一个操作符及其数字部分按照指定的顺序组合还原出原始CIGAR域的数据。
当CIGAR字段有两个操作符时,只可能是"\d+M\d+S"或者"\d+S\d+M"。因为有两个操作符时,一定会有M操作符,没有M那么CIGAR域内容肯定只有一个字符"*","*"表示没有匹配上。我们假定M在前,如"96M4(I|D|N|S)",那么后面的操作符不可能是I,因为I后面必须有其他操作符,要不I没有意义,同理,也不可能是D或者N,这几个操作符后面都必须接其他操作符,否则没有意义;假定M在后,如"4(I|D|N|S)96M",4I或4D或4N都是没有意义的,因为对于这种情况,可以直接用"4S96M"表示。
本实施例中,只有两个操作符的CIGAR域数据包括正则表达式满足“\d+M\d+S”的CIGAR域数据,且其压缩步骤为将“\d+M\d+S”省略“\d+M”部分编码为“\d+S”,然后送入压缩器进行压缩;且其解压还原步骤为在解压还原时,如果解压出CIGAR域的数据只有一个操作符S及其数字部分且满足正则表达式“\d+S”,则将解压出的QUAL域内容的长度减去解压出来的操作符S的数字部分作为原始CIGAR域中操作符M的数字部分,然后将操作符M及其数字部分、操作符S及其数字部分组合还原出正则表达式满足“\d+M\d+S”的原始CIGAR域的数据。本实施例中对于CIGAR域有两个操作符时,假定内容匹配"\d+M\d+S",那么直接编码为"\d+S",然后再送入压缩器压缩。当解压还原时,如果解压出来CIGAR的内容只有一个操作符,且为"\d+S",那么我们知道原始的CIGAR肯定是两个操作符,且前面是省略了"\d+M",M操作符对应的数字,可以通过QUAL的长度减去解压出来的S操作符对应数字计算出来。譬如解压出CIGAR字段内容5S,QUAL的长度的为100,那么还原出来原始CIGAR字段内容为"95M5S"。
本实施例中,只有两个操作符的CIGAR域数据包括正则表达式满足“\d+S\d+M”的CIGAR域数据,且其压缩步骤为将“\d+S\d+M”省略“\d+M”部分并编码为“S\d+”,然后送入压缩器进行压缩;且其解压还原步骤为在解压还原时,如果解压出CIGAR域的数据只有一个操作符S及其数字部分且满足正则表达式“S\d+”,则将解压出的QUAL域内容的长度减去解压出来的操作符S的数字部分作为原始CIGAR域中操作符M的数字部分,然后将操作符M及其数字部分、操作符S及其数字部分组合还原出正则表达式满足“\d+S\d+M”的原始CIGAR域的数据。和满足“\d+M\d+S”的CIGAR域数据类似,满足“\d+S\d+M”的CIGAR域数据不过M操作符在S操作符之后,归类二"\d+M\d+S"预处理为"\d+S",那么"\d+S\d+M"可以预处理为"S\d+",这个"\d+"可以是M操作符对应的数字,也可以是S操作符对应的数字,通过该"\d+"可以知道另外一个"\d+"的内容,因为QUAL的内容长度是可知的;同时,通过操作符S的位置可以知道M操作符的位置。譬如"95M5S"可以预处理为"5S",那么可以将"5S95M"预处理为"S5"。在解压还原时,同样如果解压出的内容只有1个操作符,证明原始的数据内容肯定是2个操作符,再判断操作符是在数字的前面还是后面,如果是前面,那么证明省去了后面的操作符及其数据内容;否则省去了前面的操作符及其数据内容。
三、三个及以上操作符
本实施例中,针对正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码省略第一个操作符M及其数字部分“\d+M”、最后一个操作符的操作符M得到第三指定内容,然后送入压缩器进行压缩;针对正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据匹配第三指定内容的正则表达式,则将解压出的QUAL域内容的长度减去解压出CIGAR域的数据中各个操作符的数字部分的总和得到第一个操作符M的数字部分,然后将第一个操作符M及其数字部分、解压出CIGAR域的数据、操作符M三者组合还原出原始CIGAR域的数据。例如当CIGAR内容匹配正则表达式"\d+M\d+(I|D|N|S)\d+M"时,可以预处理为"\d+(I|D|N|S)\d+",即省去第一个M操作符及其数据,省去最后一个操作符M,在解压还原时如果遇到这种数字加操作符再加数字组合的CIGAR字段,那么该CIGAR肯定被我们预处理过,且原始内容形式为"\d+M\d+(I|D|N|S)\d+M",与前面归类方式一致,同样可以根据QUAL长度还原出原始的CIGAR内容。
以上归类基本处理了实际情形中CIGAR字段绝大部分情形,经过归类预处理之后再压缩,CIGAR字段可以获取很好的压缩效果。这里针对其他没有处理的极少数情形,譬如"28M9D49M23S",也可以继续采用类似方法预处理,但是因为绝大部分情形数据已经处理,这种极少情形的CIGAR字段不预处理其实对压缩率影响极小。需要说明的是,本实施例根据CIGAR域的特性采用归类的方式预处理了数据内容,其中第一指定内容、第二指定内容、第三指定内容均具有两方面的功能:1为区分不同正则表达式类型;2、为携带必要的操作符和数字部分,基于上述功能,可以根据需要选择器具体采用的编码方式。此外,还可以将CIGAR字段全部预处理为数字,然后送入压缩再编码器,也可以取得一定的压缩效果。
此外,如图3所示,本实施例还提供一种综合以上归类的SAM及BAM文件CIGAR域的压缩方法,实施步骤包括:
A1)判断目标CIGAR域数据的类型,如果目标CIGAR域数据为只有一个操作符的CIGAR域数据,则跳转执行步骤A2);如果目标CIGAR域数据为只有两个操作符的CIGAR域数据,则跳转执行步骤A3);如果目标CIGAR域数据为正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据,则跳转执行步骤A4);否则跳转执行步骤A5);
A2)将CIGAR域数据编码为第一指定内容,跳转执行步骤A6);
A3)将CIGAR域数据编码为只包含其中一个操作符及其数字部分的第二指定内容,跳转执行步骤A6);
A4)将CIGAR域数据编码省略第一个操作符M及其数字部分“\d+M”、最后一个操作符的操作符M得到第三指定内容,跳转执行步骤A6);
A5)针对目标CIGAR域数据按照指定方式进行编码,跳转执行步骤A6);
A6)将编码后的内容送入压缩器进行压缩,结束并退出。
此外,本实施例还提供一种前述SAM及BAM文件CIGAR域的压缩方法的解压还原方法,实施步骤包括:
B1)获取解压出CIGAR域以及QUAL域的数据;
B2)判断解压出CIGAR域的数据类型, 如果解压出CIGAR域的数据为第一指定内容,则跳转执行步骤B3);如果解压出CIGAR域的数据为第一指定内容,则跳转执行步骤B4);如果解压出CIGAR域的数据匹配第三指定内容的正则表达式,则跳转执行步骤B5);否则跳转执行步骤B6);
B3)将解压出的QUAL域内容的长度作为指定的默认操作符或者第一指定内容携带的操作符的数字部分,并将其和指定的默认操作符或者第一指定内容携带的操作符组合还原出原始CIGAR域的数据,结束并退出;
B4)将解压出的QUAL域内容的长度减去所述一个操作符的数字部分作为另一个操作符的数字部分,然后将一个操作符及其数字部分、另一个操作符及其数字部分按照指定的顺序组合还原出原始CIGAR域的数据,结束并退出;
B5)将解压出的QUAL域内容的长度减去解压出CIGAR域的数据中各个操作符的数字部分的总和得到第一个操作符M的数字部分,然后将第一个操作符M及其数字部分、解压出CIGAR域的数据、操作符M三者组合还原出原始CIGAR域的数据,结束并退出;
B6)针对解压出CIGAR域的数据按照指定方式进行解码(该解码方式和步骤A5)的编码方式相对应),结束并退出。
此外,本发明还提供一种SAM及BAM文件CIGAR域的压缩及解压还原系统,包括计算机设备,该计算机设备被编程或配置以执行本实施例前述SAM及BAM文件CIGAR域的压缩及解压还原方法的步骤,或者该计算机设备被编程或配置以执行本实施例前述SAM及BAM文件CIGAR域的压缩方法的步骤,或者该计算机设备被编程或配置以执行本实施例前述解压还原方法的步骤。
此外,本发明还提供一种SAM及BAM文件CIGAR域的压缩及解压还原系统,包括计算机设备,该计算机设备的存储介质上存储有被编程或配置以执行本实施例前述SAM及BAM文件CIGAR域的压缩及解压还原方法的计算机程序,或者该计算机设备的存储介质上存储有被编程或配置以执行本实施例前述SAM及BAM文件CIGAR域的压缩方法的计算机程序,或者该计算机设备的存储介质上存储有被编程或配置以执行本实施例前述解压还原方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行本实施例前述SAM及BAM文件CIGAR域的压缩及解压还原方法的计算机程序,或者该计算机可读存储介质上存储有被编程或配置以执行本实施例前述SAM及BAM文件CIGAR域的压缩方法的计算机程序,或者该计算机可读存储介质上存储有被编程或配置以执行本实施例前述解压还原方法的计算机程序。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

1.一种SAM及BAM文件CIGAR域的压缩及解压还原方法,其特征在于,针对只有一个操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码为第一指定内容,然后送入压缩器进行压缩;针对只有一个操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据为第一指定内容,则将解压出的QUAL域内容的长度作为指定的默认操作符或者第一指定内容携带的操作符的数字部分,并将其和指定的默认操作符或者第一指定内容携带的操作符组合还原出原始CIGAR域的数据。
2.根据权利要求1所述的SAM及BAM文件CIGAR域的压缩及解压还原方法,其特征在于,针对只有两个操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码为只包含其中一个操作符及其数字部分的第二指定内容,然后送入压缩器进行压缩;针对只有一个操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据为包含一个操作符及其数字部分的第二指定内容,则将解压出的QUAL域内容的长度减去所述一个操作符的数字部分作为另一个操作符的数字部分,然后将一个操作符及其数字部分、另一个操作符及其数字部分按照指定的顺序组合还原出原始CIGAR域的数据。
3.根据权利要求2所述的SAM及BAM文件CIGAR域的压缩及解压还原方法,其特征在于,所述只有两个操作符的CIGAR域数据包括正则表达式满足“\d+M\d+S”的CIGAR域数据,且其压缩步骤为将“\d+M\d+S”省略“\d+M”部分编码为“\d+S”,然后送入压缩器进行压缩;且其解压还原步骤为在解压还原时,如果解压出CIGAR域的数据只有一个操作符S及其数字部分且满足正则表达式“\d+S”,则将解压出的QUAL域内容的长度减去解压出来的操作符S的数字部分作为原始CIGAR域中操作符M的数字部分,然后将操作符M及其数字部分、操作符S及其数字部分组合还原出正则表达式满足“\d+M\d+S”的原始CIGAR域的数据。
4.根据权利要求2所述的SAM及BAM文件CIGAR域的压缩及解压还原方法,其特征在于,所述只有两个操作符的CIGAR域数据包括正则表达式满足“\d+S\d+M”的CIGAR域数据,且其压缩步骤为将“\d+S\d+M”省略“\d+M”部分并编码为“S\d+”,然后送入压缩器进行压缩;且其解压还原步骤为在解压还原时,如果解压出CIGAR域的数据只有一个操作符S及其数字部分且满足正则表达式“S\d+”,则将解压出的QUAL域内容的长度减去解压出来的操作符S的数字部分作为原始CIGAR域中操作符M的数字部分,然后将操作符M及其数字部分、操作符S及其数字部分组合还原出正则表达式满足“\d+S\d+M”的原始CIGAR域的数据。
5.根据权利要求1或2所述的SAM及BAM文件CIGAR域的压缩及解压还原方法,其特征在于,针对正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据的压缩步骤包括:将CIGAR域数据编码省略第一个操作符M及其数字部分“\d+M”、最后一个操作符的操作符M得到第三指定内容,然后送入压缩器进行压缩;针对正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据的解压还原步骤包括:在解压还原时,如果解压出CIGAR域的数据匹配第三指定内容的正则表达式,则将解压出的QUAL域内容的长度减去解压出CIGAR域的数据中各个操作符的数字部分的总和得到第一个操作符M的数字部分,然后将第一个操作符M及其数字部分、解压出CIGAR域的数据、操作符M三者组合还原出原始CIGAR域的数据。
6.一种SAM及BAM文件CIGAR域的压缩方法,其特征在于,实施步骤包括:
A1)判断目标CIGAR域数据的类型,如果目标CIGAR域数据为只有一个操作符的CIGAR域数据,则跳转执行步骤A2);如果目标CIGAR域数据为只有两个操作符的CIGAR域数据,则跳转执行步骤A3);如果目标CIGAR域数据为正则表达式中第一个及最后一个操作符均为“\d+M”且包含三个及以上操作符的CIGAR域数据,则跳转执行步骤A4);否则跳转执行步骤A5);
A2)将CIGAR域数据编码为第一指定内容,跳转执行步骤A6);
A3)将CIGAR域数据编码为只包含其中一个操作符及其数字部分的第二指定内容,跳转执行步骤A6);
A4)将CIGAR域数据编码省略第一个操作符M及其数字部分“\d+M”、最后一个操作符的操作符M得到第三指定内容,跳转执行步骤A6);
A5)针对目标CIGAR域数据按照指定方式进行编码,跳转执行步骤A6);
A6)将编码后的内容送入压缩器进行压缩,结束并退出。
7.一种权利要求6所述SAM及BAM文件CIGAR域的压缩方法的解压还原方法,其特征在于实施步骤包括:
B1)获取解压出CIGAR域以及QUAL域的数据;
B2)判断解压出CIGAR域的数据类型, 如果解压出CIGAR域的数据为第一指定内容,则跳转执行步骤B3);如果解压出CIGAR域的数据为第一指定内容,则跳转执行步骤B4);如果解压出CIGAR域的数据匹配第三指定内容的正则表达式,则跳转执行步骤B5);否则跳转执行步骤B6);
B3)将解压出的QUAL域内容的长度作为指定的默认操作符或者第一指定内容携带的操作符的数字部分,并将其和指定的默认操作符或者第一指定内容携带的操作符组合还原出原始CIGAR域的数据,结束并退出;
B4)将解压出的QUAL域内容的长度减去所述一个操作符的数字部分作为另一个操作符的数字部分,然后将一个操作符及其数字部分、另一个操作符及其数字部分按照指定的顺序组合还原出原始CIGAR域的数据,结束并退出;
B5)将解压出的QUAL域内容的长度减去解压出CIGAR域的数据中各个操作符的数字部分的总和得到第一个操作符M的数字部分,然后将第一个操作符M及其数字部分、解压出CIGAR域的数据、操作符M三者组合还原出原始CIGAR域的数据,结束并退出;
B6)针对解压出CIGAR域的数据按照指定方式进行解码,结束并退出。
8.一种SAM及BAM文件CIGAR域的压缩及解压还原系统,包括计算机设备,其特征在于,该计算机设备被编程或配置以执行权利要求1~5中任意一项所述SAM及BAM文件CIGAR域的压缩及解压还原方法的步骤,或者该计算机设备被编程或配置以执行权利要求6所述SAM及BAM文件CIGAR域的压缩方法的步骤,或者该计算机设备被编程或配置以执行权利要求7所述解压还原方法的步骤。
9.一种SAM及BAM文件CIGAR域的压缩及解压还原系统,包括计算机设备,其特征在于,该计算机设备的存储介质上存储有被编程或配置以执行权利要求1~5中任意一项所述SAM及BAM文件CIGAR域的压缩及解压还原方法的计算机程序,或者该计算机设备的存储介质上存储有被编程或配置以执行权利要求6所述SAM及BAM文件CIGAR域的压缩方法的计算机程序,或者该计算机设备的存储介质上存储有被编程或配置以执行权利要求7所述解压还原方法的计算机程序。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程或配置以执行权利要求1~5中任意一项所述SAM及BAM文件CIGAR域的压缩及解压还原方法的计算机程序,或者该计算机可读存储介质上存储有被编程或配置以执行权利要求6所述SAM及BAM文件CIGAR域的压缩方法的计算机程序,或者该计算机可读存储介质上存储有被编程或配置以执行权利要求7所述解压还原方法的计算机程序。
CN201910789642.7A 2019-08-26 2019-08-26 Sam及bam文件cigar域的压缩及解压还原方法、系统和介质 Active CN110708074B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910789642.7A CN110708074B (zh) 2019-08-26 2019-08-26 Sam及bam文件cigar域的压缩及解压还原方法、系统和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910789642.7A CN110708074B (zh) 2019-08-26 2019-08-26 Sam及bam文件cigar域的压缩及解压还原方法、系统和介质

Publications (2)

Publication Number Publication Date
CN110708074A CN110708074A (zh) 2020-01-17
CN110708074B true CN110708074B (zh) 2022-12-02

Family

ID=69193727

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910789642.7A Active CN110708074B (zh) 2019-08-26 2019-08-26 Sam及bam文件cigar域的压缩及解压还原方法、系统和介质

Country Status (1)

Country Link
CN (1) CN110708074B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103546160A (zh) * 2013-09-22 2014-01-29 上海交通大学 基于多参考序列的基因序列分级压缩方法
CN110021369A (zh) * 2017-10-24 2019-07-16 人和未来生物科技(长沙)有限公司 基因测序数据压缩解压方法、系统及计算机可读介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120150877A1 (en) * 2010-12-09 2012-06-14 Microsoft Corporation Efficient database compression
US10394763B2 (en) * 2015-05-19 2019-08-27 Samsung Electronics Co., Ltd. Method and device for generating pileup file from compressed genomic data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103546160A (zh) * 2013-09-22 2014-01-29 上海交通大学 基于多参考序列的基因序列分级压缩方法
CN110021369A (zh) * 2017-10-24 2019-07-16 人和未来生物科技(长沙)有限公司 基因测序数据压缩解压方法、系统及计算机可读介质

Also Published As

Publication number Publication date
CN110708074A (zh) 2020-01-17

Similar Documents

Publication Publication Date Title
US10090857B2 (en) Method and apparatus for compressing genetic data
US7616138B2 (en) Data compression using a stream selector with edit-in-place capability for compressed data
KR20190117652A (ko) 압축된 게놈 서열 리드로부터 게놈 참조 서열의 복원 방법 및 시스템
US7511639B2 (en) Data compression for communication between two or more components in a system
KR101969848B1 (ko) 유전자 데이터를 압축하는 방법 및 장치
US7728740B2 (en) Data compression for communication between two or more components in a system
US20050025332A1 (en) Watermark embedding and extraction method and apparatus in compressed streams
US7650040B2 (en) Method, apparatus and system for data block rearrangement for LZ data compression
Bhola et al. No-reference compression of genomic data stored in fastq format
CN112527736A (zh) 基于dna的数据存储方法、数据恢复方法及终端设备
WO2019080670A1 (zh) 基因测序数据压缩解压方法、系统及计算机可读介质
US9236881B2 (en) Compression of bitmaps and values
EP3583249B1 (en) Method and systems for the reconstruction of genomic reference sequences from compressed genomic sequence reads
JP4888566B2 (ja) データ圧縮方法
CN110708074B (zh) Sam及bam文件cigar域的压缩及解压还原方法、系统和介质
CN110021368B (zh) 比对型基因测序数据压缩方法、系统及计算机可读介质
CN111061722A (zh) 一种数据压缩、数据解压缩方法、装置及设备
CN110674094B (zh) Sam及bam文件的无参考序列压缩及解压还原方法、系统和介质
CN111279422A (zh) 编码/解码方法、编码/解码器和存储方法、装置
JP4093193B2 (ja) データ圧縮方法及びプログラムならびにデータ復元方法及び装置
US20240194296A1 (en) Method for the Compression of Genome Sequence Data
CN112863600B (zh) 一种基于外显子区域插入的数据压缩方法
EP0871295A2 (en) Method and apparatus for compression and decompression of data
CN109698704B (zh) 比对型基因测序数据解压方法、系统及计算机可读介质
CN115952133A (zh) 一种富文本数据处理方法、系统及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information

Address after: 410000 No. 1101, C2 Building, Yuyuan, Lugu, 27 Wenxuan Road, Changsha High-tech Development Zone, Changsha City, Hunan Province

Applicant after: GENETALKS BIO-TECH (CHANGSHA) Co.,Ltd.

Address before: 410000 Building 1101, C2 Yuyuan, Lugu, No. 27 Wenxuan Road, Changsha High-tech Development Zone, Kaifu District, Changsha City, Hunan Province

Applicant before: GENETALKS BIO-TECH (CHANGSHA) Co.,Ltd.

CB02 Change of applicant information
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant