LoginSignup
6

More than 3 years have passed since last update.

SAM形式とBAM形式

Last updated at Posted at 2020-12-01

はじめに

SAM/BAM ファイル形式についてごく簡単にまとめます。

SAM/BAM形式とは

bwa, STAR, hisat2 などのalignerで、FASTQファイルをリファレンスゲノムにマッピングした際に生成されるファイルです。Sam(Sequence Alignment/Map)はテキスト形式で、Bam(Binary Alignment/Map)はバイナリ形式です。

公式の仕様書

SAM/BAMは BWASamtools の開発者の Heng Li さんが策定したファイル形式です。

公式によるサンプル

アラインメントが以下のようだった場合

Coor     12345678901234  5678901234567890123456789012345
ref      AGCATGTTAGATAA**GATAGCTGTGCTAGTAGGCAGTCAGCGCCAT
+r001/1        TTAGATAAAGGATA*CTG
+r002         aaaAGATAA*GGATA
+r003       gcctaAGCTAA
+r004                     ATAGCT..............TCAGC
-r003                            ttagctTAGGC
-r001/2                                        CAGCGGCAT

対応するSamファイルは以下のようになる

@HD VN:1.6 SO:coordinate
@SQ SN:ref LN:45
r001   99 ref  7 30 8M2I4M1D3M = 37  39 TTAGATAAAGGATACTG *
r002    0 ref  9 30 3S6M1P1I4M *  0   0 AAAAGATAAGGATA    *
r003    0 ref  9 30 5S6M       *  0   0 GCCTAAGCTAA       * SA:Z:ref,29,-,6H5M,17,0;
r004    0 ref 16 30 6M14N5M    *  0   0 ATAGCTTCAGC       *
r003 2064 ref 29 17 6H5M       *  0   0 TAGGC             * SA:Z:ref,9,+,5S6M,30,1;
r001  147 ref 37 30 9M         =  7 -39 CAGCGGCAT         * NM:i:

SAM/BAM形式

SAMはテキスト形式、BAMはバイナリ形式である。

各カラムの意味

1〜11は必須カラムで、項目がない場合は * または 0 を記入する。

カラム番号 カラム名 タイプ 意味
1 QNAME String リードの名前
2 FLAG Int アライメントの結果(後述)
3 RNAME String リファレンスゲノムの名前 染色体番号など
4 POS Int リードがマップされた開始位置
5 MAPQ Int マッピングクオリティスコア
6 CIGAR String マッピング状況(後述)
7 RNEXT String ペアエンドの場合、相手方のリード名
8 PNEXT Int ペアエンドの場合、相手方のマップされた開始位置
9 TLEN Int ペアエンドの場合、インサートの長さ
10 SEQ String 塩基配列データ
11 QUAL String Sequence Quality
12 マッピングソフトによる追加情報

参考:Dr. Bonoの生命科学データ解析

ヘッダー部分

「@」で始まるタグのあとに、アラインメントに関する情報が記載されている。

@HD ヘッダー
VN SAMフォーマットのバージョン
SO アライメントのソート順。unknown, unsorted, queryname または coordinate のいずれか記載される
GO グループ。none, query(QNAMEによって), reference(RNAME/POSによって)
SS Sub-sorting order
@SQ リファレンス
SN リファレンス配列の名前
LN リファレンス配列の長さ
AH Indicates that this sequence is an alternate locus.
AN Alternative reference sequence names.
AS ゲノムアセンブリーID
DS 説明(Description)
M5 MD5 checksum
SP 生物種
TP 分子トポロジー linear circular
UR 配列のURI http ftp
@RG リードグループ
ID リードグループID
BC バーコード配列
CN sequencing center
DS 説明(Description)
DT 日付
FO Flow order
KS
LB Library
PG 使用したプログラム
PI Predicted median insert size
PL プラットフォーム CAPILLARY LS454 ILLUMINA SOLID HELICOS IONTORRENT ONT PACBIO
PM プラットフォーム(自由記述)
PU Platform unit
SM サンプル
@PG プログラム
PN プログラムの名前
CL 使用したコマンド
DS 説明(Description)
VN プログラムのバージョン

Flag

ビットフィールド

Integer Binary Description
1 000000000001 ペアリードがある
2 000000000010 両方マップされている
4 000000000100 read1 はマップされていない
8 000000001000 read2(相方) はマップされていない
16 000000010000 read1 は逆相補鎖にマップされている
32 000000100000 read2(相方) は逆相補鎖にマップされてる
64 000001000000 read1 である
128 000010000000 read2 である
256 000100000000 複数個所にマップされている
512 001000000000 マッピングQVが低い
1024 010000000000 PCR or optical duplicate
2048 100000000000 supplementary alignment (e.g. aligner specific, could be a portion of a split read or a tied region)

フラグの意味が知りたい場合下記の samtools のコマンドが使用できる。

samtools flags 2064
# 0x810 2064    REVERSE,SUPPLEMENTARY

CIGAR

CIGARはinsertion, deletion, softclipなどの位置を表す。

M 参照配列に張り付いたリード。ただし、個々の塩基が参照配列と同じかどうかは感知しない。
I 挿入。
D 欠失。
N 間が飛んでいる。mRNAではイントロンがメイン。
S ソフトクリップ。張り付いていない端っこのリード。何が張り付いていないのかは明記されている。
H ハードクリップ。張り付いていない端っこのリード。何が張り付いていないのかは不明。
P padding。張り付いたリードの側で何かの欠失が起こっている。de novoがメイン?
= 参照配列に張り付いたリードのうち、参照配列と同じ塩基。
X 参照配列に張り付いたリードのうち、参照配列とは違う塩基。

基本操作

samtools-@ 4 などと書くとマルチコアで動いてくれることが多い。

SAM → BAM

samtools view -bS file.sam > file.bam

BAM → SAM

samtools view sample.bam > sample.sam

BAMファイルをソート

samtools sort sample.bam > sample.sort.bam

BAM indexを作成

samtools index sample.sort.bam

SAM/BAM 関連ツール

日本語情報では上坂さんのサイトの情報が圧倒的

この記事は以上です。
(この記事は17日のアドベントカレンダーのための下準備です)

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6