Powered by GTXLab of Genetalks.git
技术预览版本下载地址: https://github.com/Genetalks/gtz/archive/0.2.2h_tech_preview.tar.gzgithub
GTX Compressor是Genetalks公司GTX Lab实验室开发的面向大型数据(数GB甚至数TB数据,尤为是生物信息数据)上云,而量身定制的复杂通用数据压缩打包系统,能够对任意基因测序数据以及数据目录进行高压缩率的快速打包,造成单个压缩数据文件,以方便存储档与远程传输、校验。区别于以往的压缩工具,GT Compressor系统着力于 高压缩率,高速率,方便的数据抽取 。ubuntu
GTX Compressor能够在AWS C4.8xlarge机器(或同配置服务器),以超过114MB/s的速度,将接近200GB大小的33个质量数的FASTQ文件(NA12878_1.fastq),在13分钟内压缩到原大小的19%,而对于X10等只有 7个质量数的FASTQ数据,其压缩率更能够达到5.5% 。centos
GTX Compressor提供“直压上云”功能。考虑商业使用时,用户不只须要将测序产生的海量数据存储于本地,更迫切地寻求将数据快速稳定传输至云端的能力。 GTX Compressor的数据压缩引擎容许用户直接将fastq文件压缩存储到亚马逊AWS平台,阿里云OSS平台或者腾讯云COS平台,并保持与本地压缩相同的压缩速度与压缩效率。普通100Mbits Intenet线路,能够在短短30分钟内稳定地将200GB Fastq文件的直压上云。服务器
该数据打包压缩系统的特色:并发
高压缩比 采用Context Model压缩技术,配合多种优化的预测模型,平衡系统并发度与内存资源消耗后,能达到极高的压缩率。对FASTQ文件,压缩率最高可达5.58%。app
高性能: GTX compressor充分发挥了CPU的并发性以及新型Haswell CPU体系结构与AVX二、BMI2等指令集的计算能力,使得在普通服务器上的压缩速度,最高可以以接近114MB/s的输入流量输入数据并压缩完毕。工具
高速直压上云: GTX compressor支持直压上云和从云端直接解压下载功能。普通的20核服务器,经过百兆Intenet线路,能够在短短30分钟内稳定地将200GB Fastq文件的直压上云。 性能
64位 Linux 系统(CentOS 6.5以上或Ubuntu 12.04以上,推荐Ububtu 14.04及以上64位操做系统)
4核以上,最小8GB内存的主机系统(若要达到最大并发性,推荐32核 64GB内存,或与AWS C4.8xlarge机器相同配置)
本系统采用开包即用的打包原则,不依赖当前系统其余任何库。
下载包内包含ubuntu版本和centos版本的两个tar.gz的包。选择对应tar.gz的包,解压后,gtz命令就在当前解压的gtz_0.2.2b_ubuntu_tech_preview目录或gtz_0.2.2b_centos_tech_preview目录中,直接使用便可。
执行 ./gtz -h,输出命令行帮助说明。
USAGE: ./gtz [--list] [-e <string>] [-f] [--endpoint <string>] [--appid <string>] [--timeout <string>] [--secret-access-key <string>] [--access-key-id <string>] [-b <string>] [-s <string>] [-c] [-n <string>] [-l <string>] [-i] [-d] [--delete] [-a] [-g <number>] [-o <string>] [--] [--version] [-h] <file names> ...
通用选项说明:
压缩选项说明:
解压选项说明:
配置环境变量:
export access_key_id=xxxxxx
export secret_access_key=xxxxxx
export endpoint=xxxxxx (该环境变量只有上传至OSS或者COS时才需设置)
export appid=xxxxxx (该环境变量只有上传至COS时才需设置)
直压阿里OSS:
./gtz -o oss://gtz/out.gtz source.fastq (or source.fastq.gz, gtz支持对fastq.gz的从新压缩) 或者 # zcat 经过管道将fastq的数据送入gtz加压,zcat解压出来的fastq数据流在 out.gtz 中将以stdin这个文件名存在 zcat source.fastq.gz | ./gtz -o oss://gt-compress/out.gtz
直压腾讯COS:
./gtz -o cos://gtz/out.gtz source.fastq (or source.fastq.gz, gtz支持对fastq.gz的从新压缩) 或者 # zcat 经过管道将fastq的数据送入gtz加压,zcat解压出来的fastq数据流在 out.gtz 中将以stdin这个文件名存在 zcat source.fastq.gz | ./gtz -o cos://gt-compress/out.gtz
直压AWS S3:
./gtz -o s3://gtz/out.gtz source.fastq (or source.fastq.gz, gtz支持对fastq.gz的从新压缩) 或者: # zcat 经过管道将fastq的数据送入gtz加压,zcat解压出来的fastq数据流在 out.gtz 中将以stdin这个文件名存在 zcat source.fastq.gz | ./gtz -o s3://gt-compress/out.gtz
压缩到本地:
./gtz -o gtz/out.gtz source.fastq (or source.fastq.gz, gtz支持对fastq.gz的从新压缩) 或者 # zcat 经过管道将fastq的数据送入gtz加压,zcat解压出来的fastq数据流在 out.gtz 中将以stdin这个文件名存在 zcat source.fastq.gz | ./gtz -o gtz/out.gtz
为了大量小型文件(500MB如下)快速压缩或传输上云,支持使用管道方式与 tar 配合进行打包压缩, 对于海量小型数据,压缩和传输速度将很是好。(注意,这种方式下,GTZ使用的针对普通二进制数据的压缩算法,不会对tar包里面的fastq进行特殊处理)。 tar -cf - ./you_dir_or_file | gtz -o /dest.gtz 或者直接打包上云: tar -cf - ./you_dir_or_file | gtz -o s3://bucket/dest.gtz tar -cf - ./you_dir_or_file | gtz -o oss://bucket/dest.gtz tar -cf - ./you_dir_or_file | gtz -o cos://bucket/dest.gtz 直接传输回来解包: gtz -c -d s3://bucket/dest.gtz | tar -xf - 固然,大型文件(500MB以上)或大型文件所在的目录,尤为是 fastq或fastq.gz文件或其所在的目录,仍是建议直接使用 GTZ 进行打包压缩直传,速度更快。
./gtz -a -o oss://gtz/out.gtz /A/source2.fastq # -a 指当前是追加模式 ./gtz -a -o cos://gtz/out.gtz /A/source2.fastq # -a 指当前是追加模式 ./gtz -a -o s3://gtz/out.gtz /A/source2.fastq # -a 指当前是追加模式 ./gtz -a -o gtz/out.gtz /A/source2.fastq # -a 指当前是追加模式
./gtz_0.2.0_ubuntu_release/gtz --list -d oss://gtz/out.gtz ./gtz_0.2.0_ubuntu_release/gtz --list -d cos://gtz/out.gtz ./gtz_0.2.0_ubuntu_release/gtz --list -d s3://gtz/out.gtz ./gtz_0.2.0_ubuntu_release/gtz --list -d gtz/out.gtz
从阿里 OSS 解压:
./gtz -d oss://gtz/out.gtz 或者 单独抽取几个文件: # -e 表明抽取文件,后面要抽取的文件名称间,用 ":" 隔开 ./gtz -e source.fastq:/A/source2.fastq -d oss://gtz/out.gtz 或者某个文件到管道: # -c 表明输出到console, -e 表明抽取其中的某个文件 ./gtz -c -e source.fastq -d oss://gtz/out.gtz > myfile.txt 或者 ./gtz -c -e source.fastq -d oss://gtz/out.gtz | gzip -c > source.gz
从腾讯 COS 解压:
./gtz -d cos://gtz/out.gtz 或者 单独抽取几个文件: # -e 表明抽取文件,后面要抽取的文件名称间,用 ":" 隔开 ./gtz -e source.fastq:/A/source2.fastq -d cos://gtz/out.gtz 或者某个文件到管道: # -c 表明输出到console, -e 表明抽取其中的某个文件 ./gtz -c -e source.fastq -d cos://gtz/out.gtz > myfile.txt 或者 ./gtz -c -e source.fastq -d cos://gtz/out.gtz | gzip -c > source.gz
从AWS S3 解压:
./gtz -d s3://gtz/out.gtz 或者 单独抽取几个文件: # -e 表明抽取文件,后面要抽取的文件名称间,用 ":" 隔开 ./gtz -e source.fastq:/A/source2.fastq -d s3://gtz/out.gtz 或者某个文件到管道: # -c 表明输出到console, -e 表明抽取其中的某个文件 ./gtz -c -e source.fastq -d s3://gtz/out.gtz > myfile.txt 或者 ./gtz -c -e source.fastq -d s3://gtz/out.gtz | gzip -c > source.gz
从本地文件:
./gtz -d ./gtz/out.gtz 或者 单独抽取几个文件: # -e 表明抽取文件,后面要抽取的文件名称间,用 ":" 隔开 ./gtz -e source.fastq:/A/source2.fastq -d gtz/out.gtz 或者某个文件到管道: # -c 表明输出到console, -e 表明抽取其中的某个文件 ./gtz -c -e source.fastq -d gtz/out.gtz > myfile.txt 或者 ./gtz -c -e source.fastq -d gtz/out.gtz | gzip -c > myfastq.gz