GATK4をsplit intervalを使って高速化する
TL;DR
GATK4は実行に時間がかかるツールですが、マシンパワーさえあればsplit intervalを使って高速化できます。split intervalについては日本語文献が見つからなかったのでまとめておきます。Sparkを使った実装も進められているようでうが、まだ全てに対応しているわけではないようです(2020/09/28現在)。
split intervalディレクトリの作成
まずpicard ScatterIntervalsByNsを使ってinterval listを作成します。リファレンスゲノムのからインターバルリスト形式のファイルに変換します。ポジションとATGC、Nの数で構成されたファイルです。
次にsplit intervalを作成します。インターバルリストの分割です。最終的にすべての分割されたインターバルは同一の塩基数を持ちます。gatk4 SplitIntervalsを使います。この例では12個に分割しています。
split intervalつきのGATK4の実行例
BQSR -> ApplyBQSR -> HaplotypeCallerくらいの実行例を載せておきます。基本的には、-Lオプションでインターバルリストを指定する、forで分割されたものについて回す、という感じです。あとwaitでちゃんと処理終了を待つ必要があります。
最終的に分割されたvcfをpicard GatherVcfsで集めています。