バイオインフォマティクスの解析では、とても大きなファイルを取り扱うことがあります。解析後もデータを安全に長期間保存しておく必要があって、データ保存に対する悩みは尽きません。
より速く、より高い圧縮率でファイルを小さく圧縮できれば、それだけで取り扱いが楽になります。Zstandardは未だ広く活用されていませんが、このような方法も知っておけば役に立つかもしれません。
Zstandard
Zstandard とは
Zstandard (Zstd) は2015年からFacebookに所属しているYann Colletによって開発された可逆圧縮アルゴリズムである。
Zstandardはより高速に、現在主流となっているDeflate (ZIP, gzip) アルゴリズムによるものと遜色ない圧縮を行うように設計されている。
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