美文网首页生物信息数据科学
23.《Bioinformatics-Data-Skills》之

23.《Bioinformatics-Data-Skills》之

作者: DataScience | 来源:发表于2021-06-17 20:21 被阅读0次

    《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需要先对文件进行解压缩处理),不过相对其方便性这往往是可以接受的。

    相关文章

      网友评论

        本文标题:23.《Bioinformatics-Data-Skills》之

        本文链接:https://www.haomeiwen.com/subject/cgizeltx.html