この記事では、トリミング後のリードデータをゲノムに対応づける「マッピング」について解説します。HISAT2・STAR・Bowtie2・TopHat2の4ツールの特徴と使い分け、そしてSTARを使った実践コードの読み方まで、初学者にもわかりやすく説明します。
マッピングとは?なぜ必要なのか
トリミングで品質を整えたリードは、次に「このリードはゲノムのどこに由来するのか」を特定する必要があります。この作業をマッピング(アライメント)と呼びます。
💡 マッピングとは?
シーケンサーで読み取った短いDNA断片(リード)を、参照ゲノム配列の上に貼り合わせる作業です。地図(ゲノム)の上にパズルのピース(リード)を当てはめるイメージです。マッピングの結果はSAM/BAMファイルとして出力されます。
💡 SAM / BAMファイルとは?
マッピング結果を格納するファイル形式です。SAMはテキスト形式、BAMはそれを圧縮したバイナリ形式です。テキスト形式はヒトが直接読み書きできる形式で、バイナリ形式はコンピューターが効率よく処理できるよう変換された形式です。ファイルサイズが大きくなりがちなSAMに対し、BAMは容量が小さく処理も速いため、実際の解析ではBAMを使うのが一般的です。後続の発現量定量ではBAMファイルを使います。
主なツールの紹介と比較
| ツール名 | 開発言語 | 特徴 |
|---|---|---|
| HISAT2 | C++ | RNA-seq向けの定番・スプライシング対応 |
| STAR | C++ | こちらもRNA-seq向け・スプライシング対応。高精度・大規模データ向け |
| Bowtie2 | C++ | DNA-seq向け・短いリードに強い |
| TopHat2 | Python/C++ | ※現在は非推奨(歴史的ツール) |
HISAT2
RNA-seq解析向けに設計されたマッピングツールです。イントロンをまたぐスプライシングに対応しており、遺伝子発現解析のパイプラインで広く使われています。TopHat2の後継として開発されました。
メリット
- RNA-seqに特化したスプライシング対応
- メモリ使用量が少ない
- 処理速度が速い
デメリット
- STARと比べると検出精度がやや劣る場面がある
- 非モデル生物では注意が必要
このツールを選ぶ理由:メモリが限られた環境でRNA-seqを行う場合や、標準的なパイプラインに沿って解析したい場合に最適です。
STAR
高速かつ高精度なRNA-seqマッピングツールです。大規模データや長いリードにも対応しており、近年の解析パイプラインで採用されることが増えています。
メリット
- マッピング精度が高い
- 長いリードや大規模データに強い
- chimeric readの検出も可能
デメリット
- メモリを大量に消費する(30GB以上推奨)
- インデックス構築に時間がかかる
このツールを選ぶ理由:精度を重視した解析や、大規模サンプルのパイプラインに向いています。十分なメモリが確保できる環境であれば、現在の標準的な選択肢です。
Bowtie2
DNA-seqのマッピングで広く使われているツールです。ChIP-seqやATAC-seqなどのゲノム解析に向いていますが、スプライシングに対応していないためRNA-seqには不向きです。
メリット
- DNA-seqのマッピングで非常に高速
- メモリ効率が良い
- ChIP-seq・ATAC-seqで実績が豊富
デメリット
- スプライシングに非対応
- RNA-seqには使用できない
このツールを選ぶ理由:RNA-seqではなく、ChIP-seqやATAC-seqなどDNA-seq系の解析を行う場合に選択します。
TopHat2
⚠ 現在は非推奨
かつてRNA-seqマッピングの標準ツールとして広く使われていましたが、現在は開発がほぼ停止しており、公式からもHISAT2への移行が推奨されています。古い論文を読む際に名前が登場するため、存在として知っておくと役立ちます。
ツール選びのまとめ
| 状況 | おすすめの選択 |
|---|---|
| RNA-seqで標準的なマッピング | HISAT2 |
| 精度重視・大規模データ | STAR |
| ChIP-seq・ATAC-seq(DNA-seq系) | Bowtie2 |
| 古い論文のパイプラインを再現 | TopHat2(非推奨) |
STARの基本的な使い方
インストール
# Condaでインストール(推奨) conda install -c bioconda star # バージョン確認 STAR –version
ステップ① ゲノムインデックスの構築
STARでマッピングを行う前に、参照ゲノムの「インデックス(索引)」を作成する必要があります。これは一度だけ行えばOKです。
💡 インデックスとは?
ゲノム配列を高速に検索できるように事前に整理したデータのことです。辞書の索引のようなもので、一度作れば何度でも再利用できます。
STAR \ --runMode genomeGenerate \ --genomeDir genome_index/ \ --genomeFastaFiles genome.fa \ --sjdbGTFfile annotation.gtf \ --runThreadN 4
| –runMode genomeGenerate | インデックス構築モードで実行することを指定します。 |
| –genomeDir | インデックスの保存先フォルダを指定します。事前に作成しておく必要があります。 |
| –genomeFastaFiles | 参照ゲノムのFASTAファイルを指定します(例:hg38.fa)。 |
| –sjdbGTFfile | スプライシング情報を含むアノテーションファイル(GTF形式)を指定します。マッピング精度が向上します。 |
| –runThreadN 4 | 使用するCPUコア数を指定します。増やすほど処理が速くなります。 |
ステップ② マッピングの実行(シングルエンド)
STAR \ --runMode alignReads \ --genomeDir genome_index/ \ --readFilesIn trimmed.fastq.gz \ --readFilesCommand zcat \ --outSAMtype BAM SortedByCoordinate \ --outFileNamePrefix output/sample_ \ --runThreadN 4
| –runMode alignReads | マッピングモードで実行することを指定します(デフォルト値)。 |
| –genomeDir | ステップ①で作成したインデックスのフォルダを指定します。 |
| –readFilesIn | 入力FASTQファイルを指定します。トリミング後のファイルを使います。 |
| –readFilesCommand zcat | .gz形式の圧縮ファイルを読み込む際に必要なオプションです。 |
| –outSAMtype BAM SortedByCoordinate | 出力をゲノム座標でソート済みのBAMファイルとして保存します。後続の定量解析に必要な形式です。 |
| –outFileNamePrefix | 出力ファイルのプレフィックス(前置き)を指定します。フォルダ名も含めて指定できます。 |
ペアエンドへの応用
R1・R2の2ファイルがある場合は、--readFilesIn にスペース区切りで2つ指定するだけです。
STAR \ --runMode alignReads \ --genomeDir genome_index/ \ --readFilesIn trimmed_R1.fastq.gz trimmed_R2.fastq.gz \ # R1 R2 の順に並べる --readFilesCommand zcat \ --outSAMtype BAM SortedByCoordinate \ --outFileNamePrefix output/sample_ \ --runThreadN 4
発展的なオプション(参考)
- –outSAMattributes NH HI AS NMBAMファイルに付加する属性情報を指定。定量ツールによっては必須になる場合がある。
- –quantMode GeneCountsマッピングと同時に遺伝子ごとのリードカウントも出力する。featureCounts不要になる場面も。
- –twopassMode Basic2パスマッピングを行い、スプライスジャンクションの検出精度を向上させる。
- –alignIntronMax 1000000イントロンの最大長を指定。生物種によって調整が必要な場合がある。
- –outFilterMultimapNmax 10複数箇所にマップされるリードの最大許容数を指定(デフォルト10)。
まとめ
- マッピングはリードをゲノム上に対応づける作業で、結果はBAMファイルに出力される
- RNA-seqにはスプライシング対応のHISAT2またはSTARを使う(Bowtie2はDNA-seq向け)
- TopHat2は歴史的なツールであり、新規解析ではHISAT2またはSTARを選ぶ
- STARはインデックス構築(1回のみ)→ マッピング実行の2ステップで行う
- ペアエンドは
--readFilesInにR1・R2を並べるだけ
次のステップ:マッピング後はBAMファイルを使って発現量の定量(featureCounts・HTSeq等)へと進みましょう。

コメント