>
【samtoolsの使い方】BAM/SAMファイルの操作

【samtoolsの使い方】BAM/SAMファイルの操作

更新日: 2026/3/24

はじめに

samtools は、SAMファイル/BAMファイルを操作するためのツールです。BAMファイルのソート、インデックス作成、フィルタリング、統計情報の取得など、NGS解析において必須となる操作を行うことができます。

マッピングソフトウェア(HISAT2STARBWAなど)から出力された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 faidxFASTAファイルにインデックスを付加できます。GATKやbcftoolsなどのバリアント解析ツールで参照ゲノムを使用する際に必要になります。

$ samtools faidx genome.fa

genome.fa.fai というインデックスファイルが作成されます。

論文に必要な解析が簡単にできるRNA-Seqデータ解析ツール

RNA-Seqデータ解析ツールを利用すれば、外部委託や共同研究者への依頼は必要ありません。高スペックなコンピュータの準備やLinuxコマンドの操作も不要ですので、いますぐにご自身で解析できるようになります。

概要

遺伝子発現量の定量、発現変動遺伝子抽出(DEG解析)、Volcano plot描画、MAプロット描画、ヒートマップ描画、GO解析、パスウェイ解析等 を簡単に実施できます。

合同会社BxINFOロゴ

合同会社BxINFO

バイオインフォマティクスを専門とする研究支援企業です。

RNA-Seq解析を中心に、ライフサイエンスの研究に役立つツール・情報を提供しています。

→ 詳しくはこちら