SAM ファイルの取り扱い方

SAMフォーマット

Bowtie などのマッピングプログラムでリードをリファレンス上にマッピンスすると、その結果は BAM あるいは SAM と呼ばれるフォーマットのファイルに保存される。BAM は SAM のバイナリーバージョンであり、SAM よりサイズが小さく、プログラム処理に便利である。一方、SAM はサイズが大きいものの 人が読めるような形式で記述されている。SAM と BAM に記載される情報は同等であり、samtools を利用すれば交互変換が可能である。

SAM ファイルは、ファイルの最初の部分にメタ情報が記載されている。メタ情報の下にアラインメント、すなわちリードがどこにマッピングされたか、ミスマッチは何個あったかが記載されている。

SAM ファイルの一例。

@HD	VN:1.0	SO:unsorted
@SQ	SN:1	LN:248956422
@SQ	SN:10	LN:133797422
@SQ	SN:11	LN:135086622
@SQ	SN:12	LN:133275309

## 中略

ERR030890.64313195	0	9	35766194	39	65M	*	0		CTCATTGTGGTTTTAATTTGCATTTTCCTAATGTTTAATGACATTGAGCATCTTTTTATGTGCTT	FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<<<<FFF=F	AS:i:0	XS:i:-38	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:65	YT:Z:UU
ERR030890.64313017	0	6	75917822	42	65M	*	0		AGACATTTTCATTCACAGGTCATTACTATGGTTCTCAGCGATCCAAATATGTAGATCATTGGTTT	FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF<FFF<FFFFFFFF<F	AS:i:0	XN:i:0	XM:i:0	XO:i:0	XG:i:0	NM:i:0	MD:Z:65	YT:Z:UU
ERR030890.64313110	0	9	93109713	39	65M	*	0		GCCTGCCTCAGCCTCCCAAAGTGCTGGGATTATAGGCATGAGCCATTGTGCCTGGCTTCAACTTA	FFFFFFFFFFFFFFFFFF=F==:??FFFFFFFFFF=FFFF;?====;=DD8?;8;77::5FFFFF

タグ

SAM ファイルの上部にある「@」で始まるタグのあとに、アラインメントに関する情報が記載されている。例えば、以下にあげたようなタグが存在する。その他にも多くのタグが定義されている。(SAM ファイルの定義

タグ定義
@HD ファイルヘッダー
VNSAMフォーマットのバージョン
SOアライメントのソート情報。「unknown」、「unsorted」、「queryname」または「coordinate」のいずれか記載される
@SQ リファレンス配列の情報
SNリファレンス配列の名前
LNリファレンス配列の長さ
ASゲノムアセンブリーID
M5MD5 checksum
SP生物種
UR配列のURI
@PG プログラム
IDマッピングを行ったプログラム
VNプログラムのバージョン
CLマッピングを行うときに実際に入力したコマンドが記載される

アラインメント

SAM ファイル中のアラインメントの部分はタブ区切りで、全部で 11 カラム以上からなる。それぞれのカラムは以下のようになっている。SAM ファイルの定義では最低限、以下で定義される 11 カラムを含むことになる。

QNAME FLAG RNAME POS MAPQ CIGAR RNEXT PNEXT TLEN SEQ QUAL

Bowtie などのプログラムを利用してマッピングを行った際に、12 カラム目以降にミスマッチやユニークマップなどの情報が記載される。

QNAME リードの名前
FLAG アラインメント結果を整数値で記載される。例えば、「ペアエンドでもう片方がマップされていない」、「相補鎖にマッピングされている」などのような情報を知ることができる。
RNAME リファレンスの名前。ほとんどの場合、マッピングプログラム用のインデックスを作るときに使用した FASTA ファイルのヘッダー名である。例えば Ensembl ゲノムを利用したのならば、染色体番号となる。
POS リファレンス上における、リードがマップされた開始位置。
MAPQ マッピングクオリティ。ミスマッチの一数を N 個とすると、クオリティは -10log10Pr(N) と計算される。マッピングクオリティが無効な場合は 255 となる。
RNEXT ペアエンドの場合、相手方のリード名(QNAME)。
PNEXT ペアエンドの場合、相手方のマップされた開始位置。
TLEN
SEQ FASTQ の塩基配列データ
QUAL FASTQ のクオリティデータ。

12 カラム目以降に記載される情報は「TAG:TYPE:VALUE」の規則に従い記述される。TYPE は A、i、f、Z、H、B のいずれかを用いる。例えば A を用いると VALUE は文字列でなければならない、また i を用いると VALUE は整数値でなければならない。

12 カラム目以降の TAG は SAM フォーマットで定義されているものもあれば、Bwotie などのマッピングプログラムが独自に定義されているものもある。後者の場合、その取り扱い方は、プログラムのマニュアルを読むと詳しく書かれている。

フォーマット変換

SAM ファイルと BAM ファイルに記載されている内容は同等であり、samtools を用いれば交互変換することができる。

SAM → BAM

samtools view -Sb SRR115657.sam > SRR115657.bam

BAM → SAM

samtools view -h SRR115657.bam > SRR115657.sam