バイオインフォマティクスでゲノムワイド関連解析(GWAS)

バイオインフォマティクスを頑張っている方が、本ブログの内容を真似することで、自分のデータで解析ができる情報を提供することが目標です! 今はGATKの解説をメインテーマにしています。

MENU

GATK MarkDuplicatesの使い方 -GATK解説シリーズ-part 4

GATK MarkDuplicate

使用難易度★★☆☆☆
本記事は、GATK解説シリーズのPart 4です。

eupatho-bioinfomatics.hatenablog.com

今回は何をする?

  • 前回の記事で得たBAM形式ファイルを使って、GATK MarkDuplicates/MarkDuplicateSparkにより重複したリードにタグを付けます。


Twitterで記事の更新をお知らせしているので、興味を持たれた方は是非フォローをお願いします。

1. GATK MarkDupicatesの概要

このツールでは、DNAライブラリ中の単一DNA断片に由来する重複リードを検出してタグを付けることができます

BAMファイルまたはSAMファイル内の重複リードを検出してタグ付けします。重複リードとは、単一のDNA断片に由来するリードと定義され、PCRを使用したライブラリ構築などのサンプル調製時に発生する可能性があります。また、PCRの重複とは別に光学的重複も検出します。光学的重複とは、1つの増幅クラスターがシーケンシング装置の光学センサーによって複数のクラスターとして誤検出されることによって生じる重複です。

PCRによる重複の検出は、EstimateLibraryComplexityに記載の方法に従って行われ、BAM形式ファイル内のペアリードの配列から重複を判定します。各リードのN塩基から5塩基(デフォルト)を使ってソートされ、ペア同士が互いにギャップなく一致し、全体のミスマッチ率がMAX_DIFF_RATE(デフォルトでは0.03)以下であれば重複しているとみなされます。重複リードを収集した後、base-quality scores でリードをランク付けするアルゴリズムを使用して、プライマルリードと重複リードを区別します。このツールの出力は、各リードの重複が識別された新しいBAMファイルです(重複リードを破棄するわけではない)。

以前は、重複かどうかがだけ判別されましたが、重複の種類を特定するものではありませんでした。このため、最近BAMファイルのオプション出力として、DT(duplicate type)という新しいタグが追加されました。TAGGING_POLICYオプションを使用すると、すべての重複をマークする(All)、光学的重複のみをマークする(OpticalOnly)、または重複をマークしない(DontTag)ようにプログラムに指示することができます。BAMファイルの出力は、ライブラリPCRで生成された重複(LB)、またはシーケンシングプラットフォームのアーティファクトの重複(SQ)のいずれかのDT値を持ちます。必要に応じてREMOVE_DUPLICATEまたはREMOVE_SEQUENCING_DUPLICATESを使うことで、重複リードを削除することができます。

2. MarkDuplicatesSparkとMarkDuplicatesの違い

細かな違いはいくつかあるようですが、簡単にいうと複数コアで実行可能になったものがSparkだと認識しています(間違っているかも?)。16GB以上のメモリを持つPCでの使用が推奨されているようです。時間があったら速度を比較してみて、ここに追記したいと思います。

公式HPのリンク

MarkDuplicates
https://gatk.broadinstitute.org/hc/en-us/articles/360057439771-MarkDuplicates-Picard-

MarkDuplicatesSpark
https://gatk.broadinstitute.org/hc/en-us/articles/360057438771-MarkDuplicatesSpark

3. 前提となるファイルについての説明。

前回得たBAM形式ファイルを使う。 また、解説シリーズ1の方法でGATK4を導入していることを前提とする。

2019年のScienceの論文で、アフリカのマラリア原虫の集団構造を2263株のWGSデータを使用して解析した大規模な研究のデータを一部拝借した。 science.sciencemag.org

GWASフォルダの中に、bamフォルダを置き、以下のbamファイルを格納した状態で開始する。

#workingdir=path/to/GWAS
ls ${workingdir}/bam

ERR015377.bam        ERR484676.bam
ERR015425.bam        ERR562868.bam
ERR1035536.bam       ERR580552.bam
ERR1045266.bam       ERR636426.bam
ERR1106528.bam       ERR636430.bam
ERR1106529.bam       ERR701750.bam
ERR2000569.bam     ERR701756.bam
ERR211448.bam        ERS032647.bam
ERR343116.bam       ERS032649.bam
ERR405240.bam      ERS347567.bam
ERR405245.bam      ERS347575.bam
ERR450058.bam      SRS399547.bam
ERR450079.bam   

4. MarkDuplicatesを実行する。

cd ${workingdir}/bam
for fpath in `ls *.bam`
do
 gatk MarkDuplicates \
            --INPUT ${fpath%.bam}.bam \
            --OUTPUT ${fpath%.bam}.markdup.bam \
            -M ${fpath%.bam}.markdup.metrics.txt            
done

オプションの説明
--INPUT / -I : インプットファイル名(マッピングされていなくても可)
--OUTPUT / -O: 出力ファイル名
--metrics-file / -M :メトリクスファイルを出力する際のファイル名

補足 MarkDuplicatesSparkを実行する。

cd ${workingdir}/bam
for fpath in `ls *.bam`
do
 gatk MarkDuplicatesSpark \
            --INPUT ${fpath%.bam}.bam \
            --OUTPUT ${fpath%.bam}.markdup.bam \
            -M ${fpath%.bam}.markdup.metrics.txt \
            --conf 'spark.executor.cores=16'
done

オプションの説明
--conf 'spark.executor.cores=16': コア数


解析が終了するとbamフォルダにファイルが生成される。

XXXX.markdup.bam
XXXX.markdup.bam.bai
XXXX.markdup.bam.sbi
XXXX.metrics.txt


お疲れ様でした。今回はこれで終わりです。
よければ他の記事のも見ていってください。

なお、本記事の執筆にあたりBWA および GATK4 を利用した SNPs/indels の検出方法を参考させていただきました。 とても参考になるサイトなので気になったらご自分で確認してみてください。

バイオインフォマティクス関連の書籍紹介は↓こちら eupatho-bioinfomatics.hatenablog.com