Genozip
Genozip是一种专为基因组数据设计的高效压缩工具。它采用了一系列先进的压缩算法和技术,能够将原始的基因组数据文件(如FASTA、VCF和BAM格式)压缩成更小的文件,同时保持数据的完整性和可访问性。
以下是Genozip的一些主要特点和优势:
高压缩率:Genozip能够以很高的压缩率压缩基因组数据,通常能够将数据体积减小到原始大小的10%至20%。
快速压缩和解压缩速度:Genozip使用多线程处理和并行压缩算法,能够实现快速的数据压缩和解压缩过程。
数据完整性:Genozip压缩的数据文件可以方便地进行随机访问和部分解压缩,而不需要解压整个文件。这使得在处理大规模基因组数据时,可以快速获取所需的子集或特定区域的数据。
数据安全性:Genozip支持数据加密,可以对压缩的数据文件进行加密保护,确保数据的安全性。
多种数据格式支持:Genozip适用于各种常见的基因组数据格式,包括FASTA、VCF、BAM和CRAM等。
支持压缩目录。
Genozip为商业软件,为了让用户相信他们的诚意,也在github上开放了软件源码。Genozip 商业用户需要购买授权,学术用户可以申请免费使用。
源码: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压缩到一起,可以压缩到更小一点
$ 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以前压缩之后,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
# 压缩
$ 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数据时,出现上面的报错,整个压缩时间非常长,暂时无法解决。
本站总访问量 次