Sparse Project VCF : 遺伝子型行列の効率的なエンコーディング

VCFという形式は色々と問題を抱えており、その代替案はこれまでも幾度となく考案されてきました。

その1つであり注目を浴びているspVCF(Sparse Project VCF)というフォーマットに関する論文に関しての論文を読んだ際のメモを投下します。

www.biorxiv.org

Purpose

  • VCFの圧縮形式を探る
  • アプリケーションへの利用を検討

Author

Regeneron Genetics Centerの方々

Motivation

  • 2011年の登場以来、VCFは性染色体の遺伝子型を格納する表現として広く利用されているが、N数の増加と希少変異の発見数の増加に対してスケーリングが難しい。
  • WESまたはWGSにおけるvcf.gz形式のファイルサイズは$N^{1.5}$のスケールで増加していく。N = 1,000,000のWGSはペタバイト級のサイズとなることが推測される。

Superiority

  • VCFフォーマットの問題点について警笛を鳴らしている。
  • 最小限の情報ロスで∼10Xのサイズ削減に成功。

Discussion

  • 下流解析のためのspVCFからpVCFへの変換は、実行時間のスケーリングを意味している。原則、多くの下流解析はspVCFを使って直接行うことができる。
  • pVCFを生成することなく、spVCFを直接生成することで GLnexusのスケーラビリティを向上させることを考えている。
  • 多くの研究者が、linked-read やlong-readに影響を受けてハプロタイプを中心としたパラダイムを開発中。これはVCFを置き換えることになるかもしれない。

Reference

spVCF

github.com

コマンドラインでspVCF ⇔ VCF変換を行うためのツール

Memo

VCF → spVCFにおける3つの加工

1. QC指標の絞り込み(Squeezing)

リファレンスと同じ、あるいはno callの遺伝子型とQC指標については、その変異をサポートするリードが1つも検出されなかったことを示している。 遺伝子型と2のべき乗に切り捨て(0, 1, 2, 4, 8, ...設定可能)を行ったDP以外はすべてのフィールドを削除した。 このQC指標のSqueezingはリードクオリティのスコアにインスパイアされたもの。

変異の遺伝子型がコールされていなかったセルについては、リファレンスデプスに関する離散的な下限値を保証することになる。これによりほぼ全ての有益な情報は保持できる。

2. 簡潔で情報のロスを起こさないエンコーディング

リファレンスと同じ、あるいはno callのセルについて、上のセルと同値の場合「"」で置き換えた。 さらに各行のクオーテーション(")についてランレングス圧縮を行った(例:<tab>"を42回記載する代わりに、 "42と表現)。

3. Checkpointing

エンコーディングの原理的に全ての変異の遺伝子型はspVCFの行からアクセスすることが可能だが、完全にデコードすることは予測不能な数の上の行が必要となる。
ランダムなアクセスを高速化するために、spVCFのエンコーダはランレングス圧縮を定期的にスキップし、squeezed pVCFと同じ行を出力します。

spvcf

spvcfというコマンドラインツールを提供。

  1. pVCF → spVCF (squeeze × run-encode)
  2. pVCF → spVCF (run-encode)
  3. pVCF → spVCF (squeeze)
  4. spVCF → pVCF

が可能。Tabixによるslicingもサポートしている。

使用例

# VCFをspVCF形式にエンコード、gz圧縮
$ ./spvcf encode my.vcf | bgzip -c > my.spvcf.gz

# tabix indexを作成
$ tabix -p vcf my.spvcf.gz

# chr21:5143000-5219900部分を抽出、VCF形式にdecode
$ ./spvcf tabix my.spvcf.gz chr21:5143000-5219900 | ./spvcf decode > slice.vcf