macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

SAMファイルのFLAG値と属性の関係を確認するHP

2021 8/24 誤字修正

 

SAMファイルのFLAGフィールドは、10進数で0から65535 (2^16-1) の間の値を取る。bitwise FLAG になっていて、2の累乗(2^n)でアラインメントの状態(プロパティ、属性)が定義できる。複数の属性を定義できるようになっている。各桁のビットが立つことでその属性がセットされる(参考ページ)。

 

SAM formatの2021年ドキュメント(http://samtools.github.io/hts-specs/SAMv1.pdf)で、FLAGについて説明したページ。

f:id:kazumaxneo:20210823232812p:plain

 

SAMファイルのFLAG値を利用すれば色々なアラインメント状態のリードを取り出せる。例えば、ペアエンドの片方しかマッピングされていないリードを取り出したり、異なる染色体間にマップされたペアエンド、異常なアラインメントなどを取り出せる。FLAGを利用したショートリードからの構造多型検出のツールも様々報告されている。

実際にFLAG値を指定してsam/bamからリードを抽出するにはsamtools viewコマンドを使う。アンマップのリードだけ厳密に取り出すならFLAG値が4(0000000000000100)だけになるので、samtools view -f 4とする。とにかくマップされたリードを全て取り出すなら、”-f”の代わりに”-F”を使ってsamtools view -F 4とする。

#アンマップのリードだけbamとして返す。
samtools view -@ 4 -bh -f 4 input.bam > unmappe.bam

#マッピングされたリードだけbamとして返す。
samtools view -@ 4 -bh -F 4 input.bam > mapped.bam
  • -f <INT> only include reads with all of the FLAGs in INT present [0]
  • -F <INT> only include reads with none of the FLAGS in INT present [0]
  • -G <INT> only EXCLUDE reads with all of the FLAGs in INT present [0]
  • -b output BAM
  • -C output CRAM (requires -T)
  • -h include header in SAM output

samtools flagstatコマンドは、このFLAGの属性を見ている。 

samtools flagstat出力例

3153604 + 0 in total (QC-passed reads + QC-failed reads)
0 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
18472 + 0 mapped (0.59% : N/A)
3153604 + 0 paired in sequencing
1576802 + 0 read1
1576802 + 0 read2
5708 + 0 properly paired (0.18% : N/A)
16576 + 0 with itself and mate mapped
1896 + 0 singletons (0.06% : N/A)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)

 

 

Picard Toolsのマニュアルの中には、この属性をFLAG値から確認できるページ;”Explain Base Qualities”が用意されている。

 

Picard Tools

https://broadinstitute.github.io/picard/explain-flags.html

f:id:kazumaxneo:20210823224919p:plain

 

10進数でFLAG値を入力すれば、どのプロパティのビットが立っているか素早く確認できる。

0と打った。

f:id:kazumaxneo:20210823234734p:plain

シングルエンドのリードで、リファレンス配列にユニークにセンス方向にアラインされている時のFLAG値は0。全ての属性のビットが立っていない事になる。

 

16と打った。

f:id:kazumaxneo:20210823235405p:plain

シングルエンドのリードで、リファレンス配列にユニークにリバース方向にアラインされている時のFLAG値は16。

 

99

f:id:kazumaxneo:20210823235418p:plain

99(0000000001100011)は、ペアエンド、 適切なペアエンドの配置と向き、相方もマップされている、ペアの最初のリード、を意味する。

 

147

f:id:kazumaxneo:20210823235835p:plain

147(0000000010010011)は、ペアエンド、 適切なペアエンドの配置と向き、リバースにマップされている、ペアの2つ目(相方)のリード、を意味する。

 

逆にチェックボックスにチェックをつけて、チェックの組み合わせからFLAG値を確認するともできます。

 

同様のHPは他にもいくつか公開されています。

SAM flag translator

http://www.cbs.dtu.dk/~dhany/flag_converter.html

SAM Format

https://www.samformat.info/sam-format-flag

 

引用

The Sequence Alignment/Map format and SAMtools
Heng Li, Bob Handsaker, Alec Wysoker, Tim Fennell, Jue Ruan, Nils Homer, Gabor Marth, Goncalo Abecasis, Richard Durbin
Bioinformatics, Volume 25, Issue 16, 15 August 2009, Pages 2078–2079

 

関連