>
【samtoolsの使い方】BAM/SAMファイルの操作
【samtoolsの使い方】BAM/SAMファイルの操作
更新日: 2026/3/24
はじめに
samtools は、SAMファイル/BAMファイルを操作するためのツールです。BAMファイルのソート、インデックス作成、フィルタリング、統計情報の取得など、NGS解析において必須となる操作を行うことができます。
マッピングソフトウェア(HISAT2、STAR、BWAなど)から出力されたSAM/BAMファイルを下流の解析に利用するために、samtoolsによる後処理はほぼ必須です。
インストール
macOSの場合はHomebrewでインストールできます。
$ brew install samtools
バージョンを確認してみます。
$ samtools --version
以下のように表示されればインストール成功です。
samtools 1.23.1
Using htslib 1.23.1
Copyright (C) 2025 Genome Research Ltd.
Samtools compilation details:
Features: build=configure curses=yes
CC: clang
CPPFLAGS:
CFLAGS: -Wall -g -O2
LDFLAGS:
HTSDIR:
LIBS:
CURSES_LIB: -lncurses
HTSlib compilation details:
Features: build=configure libcurl=yes S3=yes GCS=yes libdeflate=yes lzma=yes bzip2=yes plugins=no htscodecs=1.6.6
CC: clang
CPPFLAGS:
CFLAGS: -Wall -g -O2 -fvisibility=hidden
LDFLAGS: -fvisibility=hidden
HTSlib URL scheme handlers present:
built-in: file, preload, data
Amazon S3: s3+https, s3, s3+http
Google Cloud Storage: gs+http, gs+https, gs
libcurl: gophers, smtp, ldaps, smb, rtsp, tftp, pop3, smbs, imaps, pop3s, ftps, https, http, ftp, gopher, imap, ldap, smtps, dict, mqtt, telnet
crypt4gh-needed: crypt4gh
mem: mem
BAMファイルのソート(samtools sort)
マッピング直後のBAMファイルはリードが出現順に並んでいます。多くの下流解析ツールではBAMファイルが座標順にソートされている必要があるため、samtools sort でソートします。
$ samtools sort -@ 4 output.bam > output.sorted.bam
-@ でスレッド数を指定することで処理を高速化できます。
マッピングソフトウェアの出力をパイプでつなぐことで、SAMファイルを経由せずに直接Sorted BAMを作成することもできます。
$ bwa mem -t 4 genome.fa reads1.fastq.gz reads2.fastq.gz | samtools sort -@ 4 > output.sorted.bam
インデックスの作成(samtools index)
ソート済みのBAMファイルに対してインデックスを作成します。インデックスはIGVなどのゲノムブラウザでの閲覧や、特定領域のリードへの高速アクセスに必要です。
$ samtools index output.sorted.bam
このコマンドにより output.sorted.bam.bai というインデックスファイルが作成されます。
SAMからBAMへの変換(samtools view)
マッピング結果はSAMファイルとして出力されることがありますが、ファイルサイズが大きいため、通常はバイナリ形式のBAMファイルに変換して保存します。samtools view コマンドを使用してSAMをBAMに変換します。
$ samtools view -@ 4 -b output.sam > output.bam
-b はBAM形式で出力するオプションです。
マッピングされたリードのみを抽出したい場合は -F 4 を付けます。 SAMのFLAGフィールドでは4が「マッピングされていない」を意味するビットで、-F はそのビットが立っているリードを除外するオプションです。
$ samtools view -@ 4 -b -F 4 output.bam > output.mapped.bam
マッピング品質が30以上のリードのみを抽出したい場合は -q 30 を付けます。
$ samtools view -@ 4 -b -q 30 output.bam > output.mapq30.bam
特定の染色体・領域のリードだけを取り出すこともできます。
$ samtools view -b output.sorted.bam chr1 > chr1.bam
$ samtools view -b output.sorted.bam chr1:1000000-2000000 > region.bam
アライメント統計(samtools flagstat)
samtools flagstat を使うと、BAMファイルのマッピング統計情報を素早く確認できます。マッピング後のQCとして毎回実行することが多いコマンドです。
$ samtools flagstat output.sorted.bam
以下のような出力が得られます。
3307 + 0 in total (QC-passed reads + QC-failed reads)
3307 + 0 primary
0 + 0 secondary
0 + 0 supplementary
0 + 0 duplicates
0 + 0 primary duplicates
3271 + 0 mapped (98.91% : N/A)
3271 + 0 primary mapped (98.91% : N/A)
3307 + 0 paired in sequencing
1654 + 0 read1
1653 + 0 read2
3144 + 0 properly paired (95.07% : N/A)
3144 + 0 with itself and mate mapped
127 + 0 singletons (3.84% : N/A)
0 + 0 with mate mapped to a different chr
0 + 0 with mate mapped to a different chr (mapQ>=5)
「properly paired」がペアエンドリードの両方が正常にマッピングされた割合を示しており、マッピング品質の指標として参照します。
FASTAファイルのインデックス(samtools faidx)
samtools faidx でFASTAファイルにインデックスを付加できます。GATKやbcftoolsなどのバリアント解析ツールで参照ゲノムを使用する際に必要になります。
$ samtools faidx genome.fa
genome.fa.fai というインデックスファイルが作成されます。
論文に必要な解析が簡単にできるRNA-Seqデータ解析ツール
RNA-Seqデータ解析ツールを利用すれば、外部委託や共同研究者への依頼は必要ありません。高スペックなコンピュータの準備やLinuxコマンドの操作も不要ですので、いますぐにご自身で解析できるようになります。
遺伝子発現量の定量、発現変動遺伝子抽出(DEG解析)、Volcano plot描画、MAプロット描画、ヒートマップ描画、GO解析、パスウェイ解析等 を簡単に実施できます。


合同会社BxINFO
バイオインフォマティクスを専門とする研究支援企業です。
RNA-Seq解析を中心に、ライフサイエンスの研究に役立つツール・情報を提供しています。
→ 詳しくはこちら