生物信息数据科学

23.《Bioinformatics-Data-Skills》之

2021-06-17  本文已影响0人  DataScience

《Bioinformatics-Data-Skills》之文件压缩

人类全基因组碱基就多达2.91Gbp个,生物信息学数据分析经常需要对付大数据。在处理过程中对文件进行压缩,可以有效地节约存储与传输成本。很多生物信息学的软件也设计为可以直接读取与处理压缩文件。

GZIP的使用

Linux上最常用的压缩命令包括gzipbzip2。前者速度更快而后者文件压缩率更高(可以用于文件归档)。两者的使用方式比较类似,这里只介绍在生物信息学中更常使用的gzip

1. gzip可以直接压缩程序的标准输出。

假设一个程序trimmer用于过滤文件中低质量的read,可以直接读取压缩文件并生成标准化输出结果,我们可以通过如下命令保存结果:

trimmer input.fastq.gz | gzip > output.fastq.gz

2. gzip可以直接压缩文件。

例如:

gzip gene-1.bed
ls
# README.md  gene-1.bed.gz  gene-2.bed

被压缩的文件会被替换掉并且加上后缀".gz"。

可以采用gunzip命令对文件进行解压缩:

gunzip gene-1.bed.gz
ls
# README.md  gene-1.bed.gz  gene-2.bed

3. gzip/gunzip可以通过-c参数输出到标准输出,这样可以保留原文件情况下进行文件的压缩与解压缩:

gzip -c gene-1.bed > gene-1.bed.gz
ls
# README.md  gene-1.bed  gene-1.bed.gz  gene-2.bed

gunzip -c gene-1.bed.gz > gene-1.duplicate.gz
ls
# README.md  gene-1.bed  gene-1.bed.gz  gene-1.duplicate.gz  gene-2.bed

4. gzip算法的一个特点是可以将不同的压缩内容组合在一起。利用这种特性我们可以将新内容压缩,追加到于已存在的压缩文件中:

gzip -c gene-2.bed >> results.bed.gz

这与先组合多个文件的内容再进行压缩的方式一致,后者可以提高一些压缩率:

cat gene-1.bed gene-2.bed | gzip > results.bed.gz

注意:以上操只作用于单一文件,压缩多个文件的话可以使用tar命令对多个文件进行打包,这里不多介绍(使用man tar查看使用方式)。

处理压缩文件

由于文件压缩的巨大优势,很多Unix和生物信息学软件可以直接处理压缩包。

很多Unix的基本操作都有压缩包版本,例如:grep的压缩包版本为zgrepcatzcatdiffzdifflesszless

如果一个程序生成的结果是已经压缩过的,那么可以使用zcat进行直接查看。

假如我们想要查找压缩包文件内容,可以通过zgrep命令:

zgrep --color -i -n "6206270" results.gz
# 1:1     6206197 6206270 GENE00000025907
# 8:1     6206227 6206270 GENE00000025907
# 23:1    6206197 6206270 GENE00000025907
# 30:1    6206227 6206270 GENE00000025907

压缩包版本的命令会牺牲一部分的性能(因为CPU需要先对文件进行解压缩处理),不过相对其方便性这往往是可以接受的。

上一篇下一篇

猜你喜欢

热点阅读