samtools version | head -2SAM/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