RNA-seq解析入門④:マッピング編

この記事では、トリミング後のリードデータをゲノムに対応づける「マッピング」について解説します。HISAT2・STAR・Bowtie2・TopHat2の4ツールの特徴と使い分け、そしてSTARを使った実践コードの読み方まで、初学者にもわかりやすく説明します。

マッピングとは?なぜ必要なのか

トリミングで品質を整えたリードは、次に「このリードはゲノムのどこに由来するのか」を特定する必要があります。この作業をマッピング(アライメント)と呼びます。

💡 マッピングとは?
シーケンサーで読み取った短いDNA断片(リード)を、参照ゲノム配列の上に貼り合わせる作業です。地図(ゲノム)の上にパズルのピース(リード)を当てはめるイメージです。マッピングの結果はSAM/BAMファイルとして出力されます。

💡 SAM / BAMファイルとは?
マッピング結果を格納するファイル形式です。SAMはテキスト形式、BAMはそれを圧縮したバイナリ形式です。テキスト形式はヒトが直接読み書きできる形式で、バイナリ形式はコンピューターが効率よく処理できるよう変換された形式です。ファイルサイズが大きくなりがちなSAMに対し、BAMは容量が小さく処理も速いため、実際の解析ではBAMを使うのが一般的です。後続の発現量定量ではBAMファイルを使います。


主なツールの紹介と比較

ツール名開発言語特徴
HISAT2C++RNA-seq向けの定番・スプライシング対応
STARC++こちらもRNA-seq向け・スプライシング対応。高精度・大規模データ向け
Bowtie2C++DNA-seq向け・短いリードに強い
TopHat2Python/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です。

💡 インデックスとは?
ゲノム配列を高速に検索できるように事前に整理したデータのことです。辞書の索引のようなもので、一度作れば何度でも再利用できます。

bash
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コア数を指定します。増やすほど処理が速くなります。

ステップ② マッピングの実行(シングルエンド)

bash
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つ指定するだけです。

bash
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等)へと進みましょう。

コメント

タイトルとURLをコピーしました