.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年以降)で生成されました。人のデータをもらって解析してるから詳しいことは知りませんが、大してかわらんでしょう。