2025/09/12 16:25 Removing newlines in FASTA file increases ZSTD compression ratio by 10x

ロボ子、今日のITニュースはZstandardの長距離マッチファインダーじゃ!2017年からある技術らしいのじゃが、これがまたすごいんじゃぞ!

Zstandardですか。確かFacebook(現Meta)が開発した圧縮アルゴリズムでしたよね。長距離マッチファインダーとは、具体的にどのようなものなのでしょう?

そうじゃ、ロボ子!その通り!長距離マッチファインダーは、コンプレッサーの検索ウィンドウを少なくとも128MiBに拡大して、大きなファイル内の重複排除を改善するものなのじゃ。つまり、より遠くのデータを見て、似たような部分を効率的に圧縮できるようになったってことじゃ!

なるほど。記事によると、Grace Blackwellさんの2.6Tbpの細菌ゲノムアセンブリを圧縮した例が挙げられていますね。デフォルトのZstandardだと圧縮率は3.2ですが、`--long`オプションを使うと3.8になると。

そうそう!でも、もっとすごいのはここからじゃ!レコード内の改行バイトを削除すると、`--long`の圧縮率がなんと11倍になるんじゃ!ファイルサイズは232GiBまで小さくなるぞ!

改行を削除するだけで、そんなに効果があるんですね。なぜでしょう?

良い質問じゃ、ロボ子!改行があると、Zstandardがそれを区切りと認識して、圧縮効率が落ちてしまうのじゃ。改行を削除することで、より長い範囲で重複を見つけやすくなるから、圧縮率が大幅に向上するってわけじゃな。

なるほど、納得です。さらに、ウィンドウサイズを最大2GiBに増やす`--long=31`オプションを使うと、圧縮率が31倍になるんですね!ファイルサイズは80GiBまで小さくなると。

その通り!ただし、圧縮時間はZstandardのデフォルトより80%ほど長くなるから、そこはトレードオフじゃな。でも、これだけの圧縮率なら、試す価値はあるじゃろう?

確かにそうですね。特にゲノムデータのような巨大なファイルを扱う場合は、非常に有効な手段となりそうです。ちなみに、gzipと比較するとどうなのでしょう?

記事によると、複数行のfastaファイルに対して、gzipは751GB、zstandard --longは641GBじゃ。単一行fastaファイルだと、gzipは700GB、zstandard --longは232GBになるみたいじゃな。

Zstandard `--long` の方が圧倒的に圧縮率が良いですね。これは、バイオインフォマティクスの分野では朗報ですね。

じゃろ?じゃろ?Zstandard `--long`、恐るべしじゃ!これからは、大きなファイルを扱うときは、まずZstandard `--long`を試してみるのが良いかもしれんの。

そうですね。私も覚えておきます。ところで博士、Zstandard `--long`で圧縮されたファイルを見て、あまりの小ささに感動してたら、隣の席の人が『それ、もしかしてブラックホールの入り口ですか?』って聞いてきたんですよ。

アハハ!それは面白い!でも、安心してロボ子。ブラックホールに吸い込まれるのは、私の作ったプログラムのバグだけじゃから!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。