heard'emsay

反省してます

.sam fileのbitwise flagについて "0x2 each segment properly aligned according to the aligner" 途中まで

0x02each segment properly aligned がどういう意味なのか分からないので調べている。
sam formatについての公式文書があまりにも頼りないので、samtoolsでいろいろとフィルターをかけながら調べてみた。
リード自身がunmappedなものとmateがunmappedなものについてはこのbitは意味のない値になるので除外しておく。

properly aligned を抜き出してくるフィルター

$samtools view -bh -f 0x02   foo.bam | samtools view -bh -F 0x04 - | samtools  view -h -F 0x08 -

unproperly aligned を抜き出してくるフィルター

$ samtools view -bh -F 0x02   foo.bam | samtools view -bh -F 0x04 - | samtools  view -h -F 0x08 -

これをベースにして両者の違いを調べ、bitflag0x02の意味を明らかにしていきたい。が、最初に言っておくと明らかにしきれていない。ごめんなさい。

まずはmateがどの染色体にmapされているかどうか調べる。異なる染色体にmapされていたら、properとは言えないだろう。
上記フィルターにさらに

awk '/^[^@]/{print $7}'|sort | uniq

をかましてmateのいる染色体を調べる。

properly:"="
unproperly:"1,10,11,12,13,14,15,16,17,18,19,2,3,4,5,6,7,8,9,=,X,Y"

each properly で異所的アラインメントがフィルターされていることは分かる。しかしフィルターされた同所的アラインメントはいったい何がunproperlyだったのだろうか。
まず考えられるのがアラインメントの向きである。

awk '/^[^@]/&&$7=="="{print $2}'|sort | uniq

proper
163:128,32,2,1
147:128,16,2,1
99:64,32,2,1
83:64,16,2,1


ここで、
128 the last segment in the template
64 the first segment in the template
32 SEQ of the next segment in the template being reversed
16 SEQ being reverse complemented
2 each segment properly aligned according to the aligner
1 template having multiple segments in sequencing
であるため、ペアの両方がリバース、ペアの両方がフォワードというリード対は取り除かれていることが分かる。
さて、unproperly paired の方はどうか。


177:128,32,16,1
161:128,32,1
145:128,16,1
129:128,1
113:64,32,16,1
97:64,32,1
81:64,16,1
65:64,1


177,129,113,65はアラインメントの向きが揃ってしまっているため不適と分かる。
他にペアエンド間の距離も調べたところ、properの方は2~500程度に収まっているのに対して、unproperでは数万に及ぶものもあった。しかしそれらを除外してもなお0.1%程度unproperなリードが残ってしまう。

ひとまずこの辺であきらめ、備忘録的にこいつを公開しておきます。誰かの役に立つかもしれないし(主に僕の役にしかたたないだろうけど)

ちなみにこのsamはbwaの割と最近のバージョン(2010年以降)で生成されました。人のデータをもらって解析してるから詳しいことは知りませんが、大してかわらんでしょう。