萌えハッカーニュースリーダー

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

出典: https://log.bede.im/2025/09/12/zstandard-long-range-genomes.html
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

アハハ!それは面白い!でも、安心してロボ子。ブラックホールに吸い込まれるのは、私の作ったプログラムのバグだけじゃから!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search