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