跳转至

Genozip

Genozip是一种专为基因组数据设计的高效压缩工具。它采用了一系列先进的压缩算法和技术,能够将原始的基因组数据文件(如FASTA、VCF和BAM格式)压缩成更小的文件,同时保持数据的完整性和可访问性。

以下是Genozip的一些主要特点和优势:

  • 高压缩率:Genozip能够以很高的压缩率压缩基因组数据,通常能够将数据体积减小到原始大小的10%至20%。

  • 快速压缩和解压缩速度:Genozip使用多线程处理和并行压缩算法,能够实现快速的数据压缩和解压缩过程。

  • 数据完整性:Genozip压缩的数据文件可以方便地进行随机访问和部分解压缩,而不需要解压整个文件。这使得在处理大规模基因组数据时,可以快速获取所需的子集或特定区域的数据。

  • 数据安全性:Genozip支持数据加密,可以对压缩的数据文件进行加密保护,确保数据的安全性。

  • 多种数据格式支持:Genozip适用于各种常见的基因组数据格式,包括FASTA、VCF、BAM和CRAM等。

  • 支持压缩目录。

Genozip为商业软件,为了让用户相信他们的诚意,也在github上开放了软件源码。Genozip 商业用户需要购买授权,学术用户可以申请免费使用。

官网:https://www.genozip.com/

源码:https://github.com/divonlan/genozip

相关论文

license

如果自行安装,则需要向官方申请license。

集群上使用

# 载入genozip
$ module load genozip/15.0.4

# 将license拷到自己的home目录下
# 执行一次即可,后续使用不用再执行
$ cp $LIC ~

# 或使用 --licfile 参数指定license位置
$ genozip --licfile $LIC

基本使用

压缩/解压单个fastq文件

# 压缩
# -@4, 设置使用4个线程,默认使用所有CPU核
# --reference 使用参考基因组压缩,可以获得较高的压缩率,解压时需要指定参考基因组
# 第一次使用该参考基因组时,会在参考基因组相同目录生成一个后缀为 .genozip的文件,如下面的命令会生成 IRGSP-1.0_genome.fasta.genozip
$ genozip -@4 HW84_NDSW31815_1.clean.fq.gz --reference IRGSP-1.0_genome.fasta 

# 解压,解压时需要用到参考基因组,默认使用的参考基因组路径为压缩时使用的参考基因组,若该参考基因组路径发生变化则使用 --reference 参数指定
$ genounzip -@4 HW84_NDSW31815_1.clean.fq.genozip

# 压缩,使用--REFERENCE,输出文件中会包含部分参考基因组,解压时不需要指定参考基因组
$ genozip -@4 HW84_NDSW31815_1.clean.fq.gz --REFERENCE IRGSP-1.0_genome.fasta 

# 解压,不需要使用基因组
$ genounzip -@4 HW84_NDSW31815_1.clean.fq.genozip 
genounzip HW84_NDSW31815_1.clean.fq.gz : Done (32 seconds)  
$ 
fq1和fq2合并压缩
# 将fq1和fq2压缩到一起,可以压缩到更小一点
$ genozip -@4 --reference IRGSP-1.0_genome.fasta --pair HW84_NDSW31815_1.clean.fq.gz HW84_NDSW31815_2.clean.fq.gz

# 解压
$ genounzip -@4 --reference IRGSP-1.0_genome.fasta HW84_NDSW31815_1+2.clean.fq.genozip

压缩/解压bam文件

# 压缩
$ genozip -@4 HW84_NDSW31815_sorted.bam

# 解压
$ genounzip -@4 HW84_NDSW31815_sorted.bam.genozip
fq和bam联合压缩

fq和bam以前压缩之后,bam文件的大小几乎可以不计。

# 压缩
$ genozip -@4 --deep --reference IRGSP-1.0_genome.fasta HW84_NDSW31815_sorted.bam HW84_NDSW31815_1.clean.fq.gz HW84_NDSW31815_2.clean.fq.gz

# 解压
$ genounzip HW84_NDSW31815_sorted.deep.genozip
压缩/解压vcf文件
# 压缩
$ genozip -@4 HW84_NDSW31815_sorted.vcf.gz

# 解压
$ genozip -@4 HW84_NDSW31815_sorted.vcf.gz

数据一致性说明

软件官方对数据一致性的说明 Verifying file integrity Losslessness

genozip压缩数据过程分为2步:压缩和校验,压缩完成后会自动进行数据一致性校验-将压缩完成后的文件在内存中解压并与原始文件比较,完整性检查没问题才算压缩完成,否则会报错。

压缩完成后会输出类似如下的校验信息,表示压缩的文件解压后与原始文件一致。

testing: genounzip sample.R1.fq.gz : verified as identical to the original FASTQ

需要注意的是,原始gz文件的md5值与使用genozip压缩解压后的gz文件的md5值不一致,只有两者都解压成文本文件后的md5才一致,测试命令如下:

# FASTQ: 
$ zcat file.fastq.gz | md5sum

# BAM:    
$ zcat file.bam | md5sum
实际数据测试
# genozip 压缩
$ genozip --md5 -@4 sample.R1.fq.gz --reference ref.fa

$ ll -h
-rw-r----- 1 user group 1.4G Apr 16 10:35 shoot_MH63_LTSD_rep1_trim_2.fq.genozip
-rw-rw-r-- 1 user group 3.2G Apr 16 10:46 shoot_MH63_LTSD_rep1_trim_2.fq.gz
drwxrwxr-x 2 user group 4.0K Apr 16 10:45 tmp

# 将原始 gz 文件放到 tmp 目录下
mv sample.R1.fq.gz tmp

# genozip 解压
$ genounzip -@4 sample.R1.fq.genozip

# 原始 fq 文件 md5
$ zcat tmp/sample.R1.fq.gz |md5sum 
e1ab55ea344b7b7440949f8bf19b172c  -

# 解压后 fq 文件 md5,可以看到两者md5一致
$ zcat sample.R1.fq.gz |md5sum 
e1ab55ea344b7b7440949f8bf19b172c  -

各物种数据压缩情况

fastq

物种 文件 原始大小 genozip
棉花 BYU21001_1.fastq.gz 15G 3.2G
棉花 BYU21001_2.fastq.gz 15G 3.4G
水稻 HW84_NDSW31815_1.clean.fq.gz 4.6G 1.1G
水稻 HW84_NDSW31815_2.clean.fq.gz 4.8G 1.2G
玉米 Q114_1.trimed.fq.gz 9.4G 3.0G
玉米 Q114_2.trimed.fq.gz 11G 3.7G
小麦 LAN91_L01_49_1.fq.gz 14G 6.7G
小麦 LAN91_L01_49_2.fq.gz 15G 7.6G
油菜 ZS11_1.fq.gz 15G 4.6G
油菜 ZS11_2.fq.gz 17G 6.1G
大豆 15-2_L2_I114.R1_clean.fq.gz 6.3G 2.6G
大豆 15-2_L2_I114.R2_clean.fq.gz 6.5G 2.8G
ERR194146_1.fastq.gz 52G 30G
ERR194146_2.fastq.gz 53G 30G

bam

物种 文件 原始大小 genozip
棉花 L1_sorted.bam 52G 16G
水稻 HW84_NDSW31815_sorted.bam 7.0G 2.3G
玉米 Q114_sorted.bam 20G 7.1G
油菜 ZS11_sorted.bam 28G 11G
大豆 15-2_L2_I114_sorted.bam 12G 5.3G
小麦 LAN91_L01_49_sorted.bam 35G 16G
ERR194146.bam 113G 52G

fq+bam

物种 原始大小(R1.fq.gz+R2.fq.gz+bam) genozip
棉花 35G + 37G + 52G 18G
水稻 4.6G + 4.8G + 7.0G 2.5G
玉米 9.4G + 11G + 20G 7.4G
油菜 4.6G + 6.0G + 28G 12G
大豆 6.3G + 6.5G + 12G 5.5G
小麦 14G + 15G + 35G 15G

vcf

物种 文件 原始大小 genozip
棉花 L1.vcf.gz 165M 67M
水稻 HW84_NDSW31815.vcf.gz 18M 7.5M
玉米 Q114.vcf.gz 493M 186M
油菜 ZS11.vcf.gz 13M 5.8M
大豆 15-2_L2_I114.vcf.gz 12M 4.9M
ERR194146.vcf.gz 167M 67M

注意事项

  • CST Error in buf_low_level_malloc:726 15.0.24: Out of memory in sam_deep_merge:208: malloc failed (size=37526397330 bytes). Try limiting the number of concurrent threads with --threads (affects speed) or reducing the amount of data processed by each thread with --vblock (affects compression ratio)

    减少genozip使用的线程数

  • genozip: Warning: buf_alloc called from hash_alloc_global:248 for "zctx->global_ents" requested 9.2 GB. This is suspiciously high and might indicate a bug - please report to support@genozip.com. vb->vblock_i=0 buf="contexts->global_ents" ctx=Q2NAME memory=(nil) data=(nil) param=0(0x0000000000000000) len=0 size=0 type=UNALLOCATED shared=false promiscuous=true spinlock=0x564ea57cc6f0 locked=0 link_count=1 allocated in (no func):0 by vb=0 line_i=0 26-Oct-2023 07:08:54 CST Error in buf_low_level_malloc:719: Out of memory in sam_deep_merge:211: malloc failed (size=57459513106 bytes). Try limiting the number of concurrent threads with --threads (affects speed) or reducing the amount of data processed by each thread with --vblock (affects compression ratio) If this is unexpected, please contact support@genozip.com.

    在使用 genozip --deep 压缩人的fq+bam数据时,出现上面的报错,整个压缩时间非常长,暂时无法解决。

本文阅读量  次
本站总访问量  次