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



ピックアップ記事

  1. R plot 重ねる方法3パターン サンプルでわかるRの使い方

    Rでグラフ (plot) を重ねる方法は、「単純な追加」「図に重ねて描画」「濃淡で重なり表現」の3…
  2. awk if サンプルでわかる条件文の書き方 一致・大小比較・正規表現を簡潔に書く方法

    awkのif条件文は、条件によって処理をわけたいときに使います。条件式では、0の判定・関係演算子・…
  3. tidyverse – distinct関数でデータフレームの重複行を削除 dplyrパッケージ

    tidyverseでデータフレームの重複行の削除を行う場合、dplyrパッケージのdistinct…

人気記事

  1. R データ型 - 文字列・ベクター・データフレーム・マトリックス など-, R言語, スクリプト

    R subset関数 データフレームやmatrixからの条件指定による行・列の抽出
    R の subset関数は、データフレームやマトリックスか…
  2. IGV, 解析ツール

    IGV 使い方 インストール〜便利な使い方まで | リファレンス・マッピングデータ・アノテーションを読み込んで表示しよう
    IGV(Integrative Genomics View…
  3. Excel, その他, 統計

    z-score 計算方法 エクセル(Excel) 編
    統計処理で、大きく変化しているなどの判断基準にも使われる値…

おすすめ記事

  1. awk, bash 文字列操作, シェルスクリプト

    bash 部分文字列・置換・長さ・連結・分割の文字列処理
    bashのよく使う文字列処理、部分文字列・置換・連結・長さ…
  2. R言語, グラフ

    R 使い方 軸・ラベルの調整(向き・サイズ・色など) グラフの描き方
    Rによるplot(グラフ)の描画は、手軽で大変便利です。た…
  3. bash 応用, シェルスクリプト

    シェル スクリプト ファイル存在チェック・空のファイルチェック
    bashでスクリプトを作成するときに、よく使うのがファイル…