RNA-seq(RNA sequencing)のカウント(定量)は、各遺伝子に何本のリードが対応するかを数える工程です。ここでは2つの方式の違いと、HTSeq-count の実践的な使い方を押さえます。
1. カウントのゴール
マッピングでリードをゲノム上に貼り合わせたら、次は各遺伝子に何本のリードが重なっているかを数えます。この数値が大きいほど、その遺伝子がよく発現していたことを意味します。
結果はカウントマトリクス(行=遺伝子、列=サンプル)として出力され、次の発現変動解析の入力になります。
2. 2つの方式
カウントの方法は大きく2つに分かれます。
BAM ベースは、マッピング済みの BAM を入力にします(featureCounts・HTSeq-count)。中間ファイルを確認できるのが利点です。
アラインメントフリーは、マッピングを行わず FASTQ から直接定量します(Salmon・kallisto)。処理が非常に速い一方、BAM が残らないため中間の確認はできません。
本シリーズは BAM ベース(STAR → HTSeq-count)の流れで解説します。
3. 4つのツールと使い分け
| ツール | 方式 | 特徴 |
|---|---|---|
| featureCounts | BAM ベース | C 実装で高速。複数サンプルを一括処理できる |
| HTSeq-count | BAM ベース | Python 製。コマンドがシンプルだが処理は遅い |
| Salmon | アラインメントフリー | 超高速。バイアス補正が充実 |
| kallisto | アラインメントフリー | 超高速・省メモリ |
featureCounts は Subread パッケージのツールで、C 実装のため非常に高速です(Liao et al., Bioinformatics, 2014)。数十サンプルの一括処理に向いています。
HTSeq-count は Python 製で、コマンドがシンプルなため挙動を追いやすいツールです(Putri et al., Bioinformatics, 2022)。処理は featureCounts より遅いため、大規模データには不向きです。
Salmon は FASTQ から直接トランスクリプトの発現量を推定し、バイアス補正も充実しています(Patro et al., Nature Methods, 2017)。tximport 経由で DESeq2 に渡す流れが標準化しつつあります。
kallisto は擬似アライメント(pseudo-alignment)により、軽量・高速に定量します(Bray et al., Nature Biotechnology, 2016)。メモリが限られた環境に向いています。
| 状況 | 選択 |
|---|---|
| はじめてカウントをする | HTSeq-count |
| 大量サンプルを BAM から速く処理したい | featureCounts |
| マッピングを省いて高速に定量したい | Salmon |
| メモリが少ない環境で高速に定量したい | kallisto |
4. HTSeq-count の使い方
インストール
bash
# pip でインストール
pip install HTSeq
# conda でも可
conda install -c bioconda htseq
# バージョン確認
htseq-count --version
基本コマンド
bash
htseq-count \
-f bam \
-r pos \
-s no \
-t exon \
-i gene_id \
output/sample_Aligned.sortedByCoord.out.bam \
annotation.gtf \
> counts.txt
| オプション | 意味 |
|---|---|
-f bam |
入力形式。BAM を使うので bam を指定します |
-r pos |
BAM のソート方法。STAR の出力は座標ソート済みなので pos です |
-s no |
ストランド特異性。ライブラリに合わせて no / yes / reverse を選びます |
-t exon |
GTF のどの feature を対象にするか。通常はエクソン |
-i gene_id |
集計の単位。gene_id で遺伝子単位に集計されます |
annotation.gtf |
アノテーション。マッピング時と同じものを使います |
> counts.txt |
結果をファイルに保存します(リダイレクト) |
指定する値はライブラリ調製キットによって変わります。誤るとカウントが大幅に減ります。不明な場合は RSeQC の
infer_experiment.py で判定できます。一般的な TruSeq Stranded キットでは reverse を指定します。出力の形式
text
# 遺伝子ID カウント数
ENSG00000000003 1523
ENSG00000000005 4
ENSG00000000419 892
...
__no_feature 4821 # どの遺伝子にも対応しなかった
__ambiguous 1204 # 複数遺伝子に重なった
__too_low_aQual 302 # マッピング品質が低すぎた
アンダースコアで始まる行(
__no_feature など)は、どの遺伝子にも割り当てられなかったリードの統計です。発現変動解析の入力にする前に、これらの行を除外します(除外のコードは⑥発現変動解析編に示します)。慣れてきたら次のオプションも使えます。
-m union:複数の遺伝子に重なるリードの扱い(既定 union)。intersection-strict なども選べます。-a 10:マッピング品質スコアのしきい値(既定 10)。--additional-attr gene_name:出力に遺伝子名の列を追加します。-n 4:使用する CPU コア数(HTSeq 2.0 以降)。
5. 注意点
- GTF はマッピング時と同じものを使う:版が違うと遺伝子 ID が対応せず、カウントが欠落します。
-sの誤設定はカウントを大きく減らす:カウント総数が極端に少ないときは、まずここを疑います。- 特殊行を残したまま解析しない:
__で始まる行は必ず除外します。
カウント表をこの先どう扱うか
HTSeq-count が返すのは、遺伝子 ID とカウント値が並んだテキストです。ここから先に続くのは、末尾の特殊行を落とし、サンプルごとのファイルを1枚の表にまとめ、遺伝子 ID に名前を対応させる、といった表の操作です。この工程はコマンドのオプションを覚える話ではなく、pandas の DataFrame を書く作業になります。ツールは動かせるのに解析が進まない、という状態はここで起きがちです。
『改訂 独習Pythonバイオ情報解析』には、この工程を正面から扱う「RNA-Seq カウントデータの処理」の章があります。pandas の基本を押さえたうえで、カウント表の読み込み、アノテーションの付与、正規化、クラスタリングまでを順に進める構成です。__ で始まる行を除く、複数サンプルを結合する、といった操作を自分で書けるようになります。
![]()
まとめ
- カウントは遺伝子ごとのリード数を集計し、カウントマトリクスを作る工程。
- BAM ベース(featureCounts・HTSeq-count)とアラインメントフリー(Salmon・kallisto)の2方式がある。
- 初学者にはコマンドがシンプルな HTSeq-count。大量サンプルなら featureCounts。
-s(ストランド特異性)はキットに合わせて必ず確認し、__行は解析前に除外する。
関連記事
- RNA-seq解析入門④:マッピング編
- RNA-seq解析入門⑥:発現変動解析編
- RNA-seq解析入門①:解析の全体フローとツール選びの考え方
- scRNA-seq解析の土台:AnnData のデータ構造を理解する
参考文献
- Putri, G. H., Anders, S., Pyl, P. T., Pimanda, J. E., & Zanini, F. (2022). Analysing high-throughput sequencing data in Python with HTSeq 2.0. Bioinformatics, 38(10), 2943–2945. doi:10.1093/bioinformatics/btac166
- Anders, S., Pyl, P. T., & Huber, W. (2015). HTSeq—a Python framework to work with high-throughput sequencing data. Bioinformatics, 31(2), 166–169. doi:10.1093/bioinformatics/btu638
- Liao, Y., Smyth, G. K., & Shi, W. (2014). featureCounts: an efficient general purpose program for assigning sequence reads to genomic features. Bioinformatics, 30(7), 923–930. doi:10.1093/bioinformatics/btt656
- Patro, R., Duggal, G., Love, M. I., Irizarry, R. A., & Kingsford, C. (2017). Salmon provides fast and bias-aware quantification of transcript expression. Nature Methods, 14(4), 417–419. doi:10.1038/nmeth.4197
- Bray, N. L., Pimentel, H., Melsted, P., & Pachter, L. (2016). Near-optimal probabilistic RNA-seq quantification. Nature Biotechnology, 34(5), 525–527. doi:10.1038/nbt.3519


コメント