压缩算法丨为什么600GB的vcf文件压缩后只剩16GB?数据压缩的原理和方法详解

简介: 压缩算法丨为什么600GB的vcf文件压缩后只剩16GB?数据压缩的原理和方法详解

压缩算法的本质

最近碰到一个神奇的现象,一份大小为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

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

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

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


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


原理概述

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

重复模式:

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

字典压缩:

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

基因组数据特点:

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

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

VCF文件补充介绍

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

基本格式和信息

文件头(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支持多个文件的压缩和归档。

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

tar:

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

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

rar:

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

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

总结

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

END

© 素材来源于网络,侵权请联系后台删除

笔记合集,点击直达

相关文章
|
28天前
|
算法 Android开发
Android签名算法的原理
Android签名算法的原理
20 0
|
28天前
|
算法 前端开发 JavaScript
React的diff算法原理
React的diff算法原理
53 0
|
2月前
|
机器学习/深度学习 存储 算法
神经网络分类算法原理详解
神经网络分类算法原理详解
53 0
|
19天前
|
机器学习/深度学习 自然语言处理 算法
|
1天前
|
机器学习/深度学习 算法 数据挖掘
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)
|
1天前
|
机器学习/深度学习 算法 搜索推荐
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(上)
【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例
|
4天前
|
编解码 算法 数据可视化
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
【视频】时间序列分类方法:动态时间规整算法DTW和R语言实现
|
4天前
|
机器学习/深度学习 人工智能 算法
详解AI作画算法原理
AI作画算法运用深度学习和生成对抗网络(GAN),通过学习大量艺术作品,模拟艺术家风格。卷积神经网络(CNN)提取图像特征,GAN中的生成器和判别器通过对抗训练生成艺术图像。循环神经网络和注意力机制可提升作品质量。这种技术开创了艺术创作新途径。
|
5天前
|
算法 数据可视化
【视频】Copula算法原理和R语言股市收益率相依性可视化分析
【视频】Copula算法原理和R语言股市收益率相依性可视化分析
10 0
|
5天前
|
机器学习/深度学习 自然语言处理 算法
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享(下)
【视频】K近邻KNN算法原理与R语言结合新冠疫情对股票价格预测|数据分享
10 0