アメリエフの技術ブログ

Amelieff Staff Blog

bwa memの-Mオプション

bwaバージョン0.7が去年の2月にリリースされて、
ほぼ1年が経とうとしています。
もう0.7に切り替えた方も多いのではないでしょうか。

bwa 0.7では、memというコマンドが使えるようになりました。

memは従来のbwaswの後継で、ロングリード(〜1Mbp)に使える
コマンドですが、bwaswよりも速度・精度とも向上しているとのことです。

また、ショートリード(70-100bp)に対する精度もよいそうです。
ショートリードはこれまで「fastqごとにaln」→「samse/sampe」で
実行するのが主流で、中間ファイルができたりして面倒くさかったので、
mem一発でやれると便利ですね。

このように素晴らしいmemですが、1点注意があります。
memには-Mというオプションがありますが、bwaの結果を
PicardやGATKで処理する場合は、この-Mオプションを必ずつけて
実行してください。

$ bwa mem -M GENOME.fa 1.FASTQ 2.FASTQ > BAM

何故かと言うと、memはローカルアライメントを行い、
キメラリードを検出することができるようになりました。
キメラリードは、BAMのflagに0x800(supplementary alignment)が
立ちます。
ですが、PicardのMarkDuplicateはこの仕様に対応していないため、
このBAMを入力するとエラーになってしまうのです。

-Mをつけて実行したBAMでは、flagに0x800の代わりに従来の0x100
(secondary alignment)が立つため、Picardで動かすことができます。

試しに、同じデータを-Mありと-Mなしで実行した結果のBAMファイルを
比較したところ、本当にflagだけが1792(0x800=2048、0x100=256、2048-256=1792)違っていました。

キメラリードを検出できるのは良いので、早くPicardが0x800に
対応してくれるといいなあと思っています。