基因组数据的数据量一般来说都不小,一个细菌基因组测序clean data的压缩文件都能去到1个G,更别说其他非原核的物种了。实验室的数据是不能随便删除的,更别说公司甚至是公共数据库级别的了,但为了省空间(省钱)还是要想想办法的。下面记录一下降低数据存储压力的策略和常用的压缩算法。
0、问题
如何解决存储问题
什么样的数据适合适用压缩
怎么验证解压后的数据是无损的
1、降低存储压力的策略
整体的策略在于将数据的大小进行压缩、将数据转移到低价的存储设备。
或许小型实验室不太需要,小型实验室而言只需把数据上传到公共的数据库即可。公共的类似gnomAD、千人基因组计划1000genomes这些大数据库,需要满足第三方访问和下载需求的可以考虑云存储了。而且云存储有一个好处,存放在云存储的资料有单独的访问防止,方便在网页、博客里面展示或者引用。
-
存储设备(实验室或者公司可以用的):
- 硬盘/光碟等等(别问为什么23年还要用光碟,便宜能用就是好!)
-
云存储:什么情况下会用到云存储呢?
- 对象存储桶bucket/NAS盘
2、什么数据适合压缩?——数据压缩原理
数据压缩技术分为两种:有损压缩和无损压缩,在生信领域里面肯定是用无损压缩的。
哪什么数据适合压缩呢?
👇下面先看看各种数据压缩的原理(此处可以可视化)
-
bgzip的
:bgzip使用的压缩算法是基于游程编码(Run-Length Encoding)的。游程编码是一种简单的无损数据压缩算法,它通过消除连续重复的数据元素来压缩数据
。 -
gzip
: LZ77是一种基于字典的压缩技术,可以有效地处理重复出现
的字符串序列。 -
bzip2 (bz2)
:Burrows-Wheeler变换通过重新排列字符顺序来增重复字符
的集中度,这使得之后的压缩步骤更有效。 -
tar.gz
:
总结:由数据压缩的原理可见,如果数据中含有具有大量重复元素或者重复结构的大文件都可以考虑压缩的操作,像测序文件fastq这一类的文件里面含有大量A,T,C,G
的字母元素缺失比较适合压缩,而基因组压缩也确实是计算机算法教材中的经典案例。
3、在生信中常用的压缩算法使用命令(压缩和解压缩)
讨论完什么数据适合压缩,那就到了下一个环节了,该怎么压缩呢?
生信中常见的压缩文件格式(后缀为例):.zip
、bgzip
、.gz
、bgz
、tar.gz
、tar
常见的压缩算法:gzip
、bgz
# gzip 压缩和解压缩
gzip filename # 压缩文件
gunzip filename.gz # 解压缩文件
gzip -d filename.gz # 解压缩文件(另一种命令)
# bzip2 压缩和解压缩
bzip2 filename # 压缩文件
bunzip2 filename.bz2 # 解压缩文件
bzip2 -d filename.bz2 # 解压缩文件(另一种命令)
# xz 压缩和解压缩
xz filename # 压缩文件
unxz filename.xz # 解压缩文件
xz -d filename.xz # 解压缩文件(另一种命令)
# ZIP 压缩和解压缩
zip filename.zip files # 压缩文件或文件夹
unzip filename.zip # 解压缩文件或文件夹
# tar 结合 gzip/bzip2/xz 压缩和解压缩
tar -czvf archive.tar.gz directory/ # 使用gzip压缩文件夹
tar -xzvf archive.tar.gz # 解压缩.tar.gz文件
tar -cjvf archive.tar.bz2 directory/ # 使用bzip2压缩文件夹
tar -xjvf archive.tar.bz2 # 解压缩.tar.bz2文件
tar -cJvf archive.tar.xz directory/ # 使用xz压缩文件夹
tar -xJvf archive.tar.xz # 解压缩.tar.xz文件
# samtools (针对SAM/BAM文件)
samtools view -bS filename.sam > filename.bam # 将SAM转换为BAM
samtools view -h filename.bam > filename.sam # 将BAM转换为SAM
# bgzip 压缩和解压缩
bgzip filename # 压缩文件
bgzip -d filename.gz # 解压缩文件
# CRAM (针对基因组序列数据)
samtools view -C -T reference.fa -o filename.cram filename.bam # 将BAM转换为CRAM
samtools view -b -T reference.fa -o filename.bam filename.cram # 将CRAM转换为BAM
4、压缩效果
该怎么评估压缩的效果呢?下面给出了最直观的评估,其他不作展示
- 压缩后文件的大小:这是最直观的体现压缩效果的指标
- 压缩和解压缩的时长和资源消耗:如果压缩使用的时间太长且计算资源消耗过大,就应该考虑其他的压缩算法
- 解压缩后文件的完整性:就是传说中的有损还是无损(关于解压缩后如何验证文件是否为原来的文件请参考我的这篇日志,日志之间居然联动起来了喂!)
5、总结
在日常业务中经常会听到文件太大把盘占满的消息,特此将这个点记录一下,或许计算机的同学不需要看这个,但是生物转生信的同学可以参考一下噢。
PS:码文不易点个赞再走吧!👍
参考及推荐阅读