Zstandard 可逆圧縮アルゴリズムを使ってみる

スポンサーリンク

バイオインフォマティクスの解析では、とても大きなファイルを取り扱うことがあります。解析後もデータを安全に長期間保存しておく必要があって、データ保存に対する悩みは尽きません。

より速く、より高い圧縮率でファイルを小さく圧縮できれば、それだけで取り扱いが楽になります。Zstandardは未だ広く活用されていませんが、このような方法も知っておけば役に立つかもしれません。

Zstandard

Zstandard とは

Zstandard (Zstd) は2015年からFacebookに所属しているYann Colletによって開発された可逆圧縮アルゴリズムである。

引用:Wikipedia Zstandard

Zstandardはより高速に、現在主流となっているDeflate (ZIP, gzip) アルゴリズムによるものと遜色ない圧縮を行うように設計されている。

引用:Wikipedia Zstandard 特徴

Zstandard 参考サイト

Zstandard 使い方

Zstandard インストール

最新版をダウンロードして、make。その後、適当なパスを通します
LATESTのダウンロード

$ cd
$ wget https://github.com/facebook/zstd/releases/download/v1.3.8/zstd-1.3.8.tar.gz
$ tar xzvf zstd-1.3.8.tar.gz 
$ cd zstd-1.3.8
$ make

$  export PATH=$PATH:~/zstd-1.3.8/

Zstandard よく使うコマンド

ファイルを圧縮

ファイルを指定して、zstdをコールするだけ。この場合の圧縮率は、gzipによる圧縮と大して変わりません。拡張子は、「.zst」になります。

$ zstd test.fastq 
test.fastq           : 15.56%   (1022475400 => 159094936 bytes, test.fastq.zst) 

出力ファイル名を指定することも可能です。-oオプションを使います。

$ zstd test.fastq -o aaa.fastq.zst
test.fastq           : 15.56%   (1022475400 => 159094936 bytes, aaa.fastq.zst) 
使用例

ファイルを圧縮 時間はかかるが高圧縮

ファイルを指定して、ultraオプションでコールします。かなり時間はかかりますが、圧縮率は更に高くなります。最大レベル22。

$ zstd --ultra -22 test.fastq -o test.fastq.ultra.zst
test.fastq           : 10.84%   (1022475400 => 110793605 bytes, test.fastq.ultra.zst) 
使用例

圧縮ファイルを展開

圧縮ファイルの展開は高速です。-dオプションを指定します。

$ zstd -d test.fastq.ultra.zst 
test.fastq.ultra.zst: 1022475400 bytes

ディレクトリを再帰的に圧縮

zstandardにはアーカイブ機能がないので、フォルダ全体を圧縮したい場合はtarコマンドと併用すると良いです。ちなみに、再帰的な圧縮オプションrは、指定したフォルダ内のファイルを1つずつzstandardで圧縮します。

$ tar cvf test_dir.tar test_dir/
$ zstd test_dir.tar
test_dir.tar         : 10.17%   (542720 =>  55214 bytes, test_dir.tar.zst)

オプションを確認

$ zstd -help
タイトルとURLをコピーしました