压缩算法的原理丨基因型vcf文件为什么压缩后发生了什么?

压缩算法的本质

最近碰到一个神奇的现象,一份大小为16GBxx.vcf.gz文件,解压之后体积变为600GBvcf文件,为什么一份文件经过压缩后体积缩小了这么多?

(work) [bio @ notes  21:29:40 ~/work/20230726/data]
$ ls -lh
总用量 620GB
-rw-rw-r--. bio  16G 7月  26 21:23 xx.vcf.gz
-rw-r--r--. bio 604G 7月  19 14:16 xx.vcf
alt

压缩这个词联想到压缩机,就是把空气进行物理加压,减小占用的体积,这种方法利用的是单个分子之间的可变间隙,像挤海绵一样把一个大东西压缩成小东西。很显然,计算机中的数据肯定不是这种方式。

alt

另外一种方式,通过字典来压缩,比较抽象了,笔者举一个例子:有一本新华字典,理论上每个字都能找到唯一对应的页数+行数+列数,将这个数字用来替代实际的汉字。

接下来,我想压缩一本三国演义全篇小说,只需要用数字替换汉字,就能降低篇幅大小,这样誊抄(类似于复制传输)时就方便很多。这也算是变相的对文字信息进行了压缩,计算机主要是通过这种方式进行压缩。


问题: 为什么vcf文件经过gzip压缩为vcf.gz后文件体积能极大程度的缩小?


原理概述

因为gzip是一种有效的压缩算法,它可以利用重复出现的模式和冗余信息,将数据进行编码和压缩,从而减少数据的存储空间。

alt
重复模式:

在VCF文件中,可能存在大量的重复信息,比如在多个位点上的质量分数或者过滤标记可能会重复出现,gzip能够识别这些重复模式,并使用更短的编码方式来表示它们,从而减少存储空间。

字典压缩:

gzip使用了Lempel-Ziv编码来构建一个字典,用于存储出现过的字符序列。每当发现与字典中的序列匹配时,gzip只需记录一个指向字典中的索引,而不是实际存储相同的字符序列,这进一步减小了数据的体积。

基因组数据特点:

基因组数据中通常包含大量的连续性和相关性,这使得gzip等压缩算法能够更好地发挥压缩效果。基因组的染色体序列以及突变位点等数据具有较高的相似性,使得gzip能够更好地识别并压缩这些信息。

综上所述,gzip能够高效地将VCF文件中的数据进行压缩,从而将文件的体积显著缩小。这对于基因组学研究和大规模数据存储非常有用,节省了存储空间,减少了数据传输时间,并且使数据的备份和传输更加高效。

VCF文件补充介绍

本文中提到的vcf文件是存储基因型变异数据的常用格式,VCF(Variant Call Format)通常用于存储个体或群体的基因组数据,其中包含了多个基因突变位点的信息。VCF文件常见于基因组学研究和生物信息学分析中,特别是在单核苷酸多态性(SNP)、插入/缺失(InDel)等变异的分析中。

alt

基本格式和信息

文件头(Header):

VCF文件以文件头开始,以"#"开头的行为注释行,包含了关于VCF文件本身和数据来源的信息。文件头通常包括样本信息、参考基因组版本、标记信息等。

元数据信息(Metadata):

文件头中可能包含多个元数据信息,用于描述VCF文件的属性、来源和其他相关信息。一些常见的元数据标记包括"fileformat"(指定VCF文件的版本)、"INFO"(用于描述位点的信息)、"FORMAT"(用于描述样本的信息格式)等。

数据区域(Data):

VCF文件的数据区域包含了每个基因突变位点的具体信息,每行对应一个位点。数据区域中的每个字段以制表符(Tab)分隔,字段的顺序和含义由文件头中的元数据定义。

- CHROM:染色体名称或编号。
- POS:位点在染色体上的位置。
- ID:位点的唯一标识符,可以是rs号(对应dbSNP数据库的标识符)或其他独立标识符。
- REF:参考基因组上的碱基。
- ALT:变异的碱基或碱基序列。如果存在多个变异(如多态性位点),则用逗号分隔。
- QUAL:质量分数,表示位点的可靠性或置信度。
- FILTER:过滤标记,表示该位点是否通过了质量控制过滤。
- INFO:包含更多关于位点的附加信息,通常以键值对的形式表示。例如,可能包含关于突变类型、突变功能、频率等信息。
- FORMAT:描述样本数据的格式,通常由一系列字段组成。
- Sample1, Sample2, ...:每个样本的基因型数据,根据FORMAT字段指定的格式进行描述。

以下为一个vcf文件示例:

##fileformat=VCFv4.3
##INFO=<ID=DP,Number=1,Type=Integer,Description="Total Depth">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  Sample1  Sample2
chr1    1001    rs123   A       G       50.0    PASS    DP=30   GT      0/1      1/1
chr1    2034    .       T       C,G     60.0    PASS    DP=40   GT      1/2      2/2

在上述示例中,第一个位点在染色体1的位置1001处,具有rs号为rs123,参考碱基为A,变异碱基为G,质量分数为50.0,通过了质量控制过滤。

INFO字段包含了一个键值对"DP=30",表示总深度为30。FORMAT字段指定了样本数据的格式,这里是"GT"(基因型)。接下来的两列分别是两个样本的基因型数据。

常见压缩方法补充介绍

当我们需要传输或存储大量的文件或数据时,压缩算法可以帮助我们将文件体积缩小,从而节省存储空间和传输时间。以下是zip、tar和rar这几种常见压缩算法的通俗介绍以及它们之间的区别:

zip:

原理:zip是一种常见的归档和压缩算法。它将多个文件和目录打包成一个压缩包,并对其中的每个文件进行独立压缩。zip使用Deflate算法,这是一种结合了LZ77和Huffman编码的压缩算法,类似于gzip,但zip支持多个文件的压缩和归档。

alt

特点:zip是跨平台的,几乎在所有操作系统上都可以使用。它是Windows系统上常用的压缩格式。

tar:

原理:tar是一种归档工具,它可以将多个文件和目录打包成一个单一的文件,但并不压缩数据。tar采用顺序地将所有文件和目录串联在一起的方式创建归档文件。

alt

特点:tar通常与其他压缩算法(如gzip或bzip2)结合使用,先用tar打包成一个大的归档文件,然后再使用其他算法对该归档文件进行压缩。

rar:

原理:rar是一种专有的压缩算法,由WinRAR软件开发。它使用了类似于zip的算法,但采用了更加复杂的压缩策略,可以在某些情况下实现更高的压缩率。

alt

特点:rar格式在某些情况下可能比zip格式具有更好的压缩效果,特别是对于大型压缩文件。然而,由于它是专有格式,可能在某些平台或系统上不支持或需要额外的软件。

总结

  • gzip:单个文件压缩,常用于Unix/Linux系统。
  • zip:多个文件压缩和归档,跨平台支持,常用于Windows系统。
  • tar:打包多个文件,但不压缩数据,通常结合其他压缩算法使用。
  • rar:类似于zip,但使用了专有算法,有时可以获得更好的压缩效果。

本文由 mdnice 多平台发布

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

生信分析笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值