samtools version | head -2
SAM/BAMファイルのヘッダ行
SAM/BAMファイルにはリードデータの前にヘッダセクションが含まれており、このヘッダはデータの解釈や解析に必要なメタデータを提供する。
SAMファイルのヘッダ行は例えば以下のようになっている。 ヘッダセクションは、@
で始まる行で構成され、各行は2文字のタグで識別される。
@HD VN:1.6 SO:coordinate
@SQ SN:1 LN:30427671
@SQ SN:2 LN:19698289
@SQ SN:3 LN:23459830
@SQ SN:4 LN:18585056
@SQ SN:5 LN:26975502
@SQ SN:M LN:366924
@SQ SN:C LN:154478
@PG ID:samtools PN:samtools VN:1.21 CL:samtools view -h temp.bam
以下にヘッダで使われる5種類のレコードタイプと、よく使われる気がするタグについてリストアップした。 太字のタグはそのレコードを使う場合に必須のタグである。
@HD
ファイル全体のメタデータ。もし存在するなら一行だけ、かつ最初の行に書く。VN
フォーマットのバージョン。書式は^[0-9]+\.[0-9]+$
SO
リードのソート順。
@SQ
マッピングした場合の参照配列。記載した配列の順番が位置ソートにも適用される。SN
配列名LN
配列長
@RG
リードグループID
リードグループのIDPN
プログラム名VN
プログラムバージョンCL
実行時のコマンドライン
@PG
プログラムレコードID
プログラムレコードのID
@CO
コメント
BAMファイルのヘッダーを確認する方法
ここではsamtools
を使用してBAMファイルのヘッダー行を表示する方法をいくつか紹介する。 使用しているsamtools
のバージョン
samtools 1.21
Using htslib 1.21
確認に使用するBAMファイル。 SAMファイルの仕様書にある例をそのまま使った。
samtools view -h temp.bam
@HD VN:1.6 SO:coordinate
@SQ SN:ref LN:45
@PG ID:samtools PN:samtools VN:1.21 CL:samtools view -Sb temp.sam
@PG ID:samtools.1 PN:samtools PP:samtools VN:1.21 CL:samtools view -h temp.bam
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:1
samtools view -H
まずはsamtools view
コマンドに-H
オプションを指定することで、 渡したBAMファイルのヘッダのみ表示することができる。
samtools view -H temp.bam
@HD VN:1.6 SO:coordinate
@SQ SN:ref LN:45
@PG ID:samtools PN:samtools VN:1.21 CL:samtools view -Sb temp.sam
@PG ID:samtools.1 PN:samtools PP:samtools VN:1.21 CL:samtools view -H temp.bam
そのまま使用するとヘッダコマンドを指定するためのコマンド(samtools view -H
)の履歴が残る。 これを残さないようにするには、--no-PG
フラグをつけて実行する。
samtools view -H --no-PG temp.bam
@HD VN:1.6 SO:coordinate
@SQ SN:ref LN:45
@PG ID:samtools PN:samtools VN:1.21 CL:samtools view -Sb temp.sam
samtools head
samtools head
コマンドにBAMファイルを渡すことでヘッダを表示することができる。 こちらのコマンドを使うと、samtools view -H
と異なりコマンド履歴がヘッダに残らない。
samtools head temp.bam
@HD VN:1.6 SO:coordinate
@SQ SN:ref LN:45
@PG ID:samtools PN:samtools VN:1.21 CL:samtools view -Sb temp.sam
samtools view -h
すでに使用しているが、samtools view -h
だとヘッダセクションに加えてリード行も全て出力する。 普通はリード行は非常に多いはずなので、less
やhead
コマンドと組み合わせて使うことが多いだろう。
samtools view -h temp.bam
@HD VN:1.6 SO:coordinate
@SQ SN:ref LN:45
@PG ID:samtools PN:samtools VN:1.21 CL:samtools view -Sb temp.sam
@PG ID:samtools.1 PN:samtools PP:samtools VN:1.21 CL:samtools view -h temp.bam
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:1