压缩算法丨为什么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

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

笔记合集,点击直达

相关文章
|
2月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
129 0
|
2月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
89 2
|
2月前
|
机器学习/深度学习 算法 物联网
基于遗传方法的动态多目标优化算法
基于遗传方法的动态多目标优化算法
|
3月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
132 6
|
3月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
337 0
机器学习/深度学习 算法 自动驾驶
509 0
|
3月前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
468 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
4月前
|
机器学习/深度学习 算法 文件存储
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
神经架构搜索(NAS)正被广泛应用于大模型及语言/视觉模型设计,如LangVision-LoRA-NAS、Jet-Nemotron等。本文回顾NAS核心技术,解析其自动化设计原理,探讨强化学习、进化算法与梯度方法的应用与差异,揭示NAS在大模型时代的潜力与挑战。
892 6
神经架构搜索NAS详解:三种核心算法原理与Python实战代码
|
4月前
|
传感器 算法 定位技术
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
KF,EKF,IEKF 算法的基本原理并构建推导出四轮前驱自主移动机器人的运动学模型和观测模型(Matlab代码实现)
137 2
|
4月前
|
机器学习/深度学习 数据采集 传感器
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
316 0

热门文章

最新文章