はじめに:そもそも「前処理」とは
シングルセル RNA-seq(scRNA-seq、single-cell RNA sequencing:1細胞ずつ遺伝子の発現を測る技術)の装置から出てくるデータは、そのままでは解析できません。技術的なノイズや人工物(アーティファクト)が混ざった生データだからです。これを解析できる形に整える工程を「前処理」と呼びます。
💡 なぜ前処理が必要?
生データには、アンビエントRNA(液滴に紛れ込んだ細胞外のRNA)、ダブレット(2細胞の混在)、バッチ効果(測定のクセ)などが含まれます。これらを除かずに解析すると、存在しない細胞集団や偽の差を生み、結論を誤らせます。
入口と出口はこうです。
- 入口:細胞ごとに「どの遺伝子が何回読まれたか」を記録した巨大な表(行=細胞、列=遺伝子)。これを カウント行列 と呼びます。
- 出口:低品質な細胞を除き、サンプル間のズレをそろえ、似た細胞をグループ分けし終えた、きれいなデータ。
この出口のデータが、次の本格的な解析(細胞型の同定、条件間の比較など)の出発点になります。前処理の質が、その後すべての精度を決めます。
前処理の8ステップ(何のために、何をする?)
全体は8つのステップに分かれます。まずは「各ステップが何のためにあるか」を先に押さえましょう。ツール名は今は軽く見るだけでOKです。
① 読み込み — 装置が出力した巨大な表(カウント行列)を、解析ソフト(Python)に取り込みます。データは AnnData という形式で保持します。〔道具:read_10x_mtx/普通のPCで可〕
② 品質管理(QC) — 壊れた細胞や、検出遺伝子がほとんどない低情報の細胞など、解析に使えない細胞を取り除きます。この工程を QC(quality control=品質管理) と呼びます。〔道具:calculate_qc_metrics/普通のPCで可〕
③ ダブレット検出 — 1つの液滴に2個の細胞が入り、1細胞ぶんとして記録されてしまったデータをダブレットと呼びます。除かないと、2種類の細胞の発現が混ざった「中間的な偽の集団」が生じ、存在しない細胞型として解析を惑わせます。〔道具:scrublet または SOLO/後述の2ルート参照〕
④ 正規化 — 細胞ごとに検出された遺伝子の総量(総カウント数)が大きく異なるため、そのままでは発現量を公平に比較できません。総量をそろえてから対数変換し、細胞間で比較できる値にします。〔道具:shifted log(対数変換)/普通のPCで可〕
⑤ 特徴選択(HVG) — 数千ある遺伝子の多くは、どの細胞でもほぼ一定の発現で、細胞集団を見分ける手がかりになりません。細胞ごとに発現が大きく変動する遺伝子だけに絞ると、集団構造が見えやすくなり、計算も軽くなります。こうした遺伝子を HVG(highly variable genes=高変動遺伝子) と呼びます。〔道具:seurat_v3/普通のPCで可〕
⑥ 統合・バッチ補正 — 別々の日や装置で測ると、同じ種類の細胞でも測定のクセでズレます(これをバッチ効果といいます)。この技術的なクセだけを取り除き、サンプルをまたいで比較できるようにします。
💡 ポイント:取り除くのは「技術的なバッチ効果」だけです。本物の生物学的な違いまで消さないことが重要で、これが手法選びの分かれ目になります。
〔道具:Harmony または scVI/後述の2ルート参照〕
⑦ 次元削減 — 遺伝子は数千種類あり、そのままでは可視化できません。情報を保ったまま次元を圧縮し、2次元の図に落とし込みます。まず PCA(主成分分析)で数十次元に圧縮し、UMAP(2次元配置の可視化に特化)で2次元に展開する、2段構えが標準です。〔道具:PCA → UMAP/普通のPCで可〕
⑧ クラスタリング — 次元削減後の空間で、発現パターンが似た(近接する)細胞どうしをグループにまとめ、細胞集団(クラスタ)を見つけます。〔道具:Leiden/普通のPCで可〕
ここまで終えると、「クラスタリングまで済んだきれいなデータ」が完成します。
ざっくり一覧(早見表)
| ステップ | 何のため | 主な道具 | 必要な環境 |
|---|---|---|---|
| ① 読み込み | データを取り込む | read_10x_mtx |
普通のPC |
| ② 品質管理(QC) | 使えない細胞を除く | MAD 基準のフィルタ | 普通のPC |
| ③ ダブレット検出 | 2細胞→1つの偽物を除く | scrublet / SOLO | PC / GPU |
| ④ 正規化 | 公平に比較できるように | shifted log | 普通のPC |
| ⑤ 特徴選択(HVG) | 変動の大きい遺伝子に絞る | seurat_v3 |
普通のPC |
| ⑥ 統合・バッチ補正 | 測定のクセを除く | Harmony / scVI | PC / GPU |
| ⑦ 次元削減 | 2次元に圧縮する | PCA → UMAP | 普通のPC |
| ⑧ クラスタリング | 細胞をグループ分け | Leiden | 普通のPC |
表の「主な道具」列に並んでいるのは、いずれも Python から呼び出す関数です。実際の作業は、AnnData というデータの箱に対して、列を足したり行を絞ったりする操作の連続になります。ここで手が止まるかどうかは、scRNA-seq の知識ではなく、pandas や NumPy で表を扱えるかで決まります。読めていれば各ステップの引数を自分のデータに合わせて動かせますが、読めないと、コードを写して出てきた図を眺めるところで止まってしまいます。
Python 自体がこれからという場合は、『改訂 独習Pythonバイオ情報解析』が、この8ステップとほぼ同じ道筋をたどれる本です。環境構築から始まり、pandas で発現量の表を扱い、最後は Scanpy でシングルセル解析まで進みます。本記事を読んで「言っていることは分かるが、自分のデータでは動かせる気がしない」と感じたなら、その差を埋める一冊です。筆者もこの本を最初に読み、Dry解析を始めました。
![]()
むずかしい2ステップには「2つのルート」がある
表で「PC / GPU」となっている ③ダブレット検出 と ⑥統合 には、やり方が2通りあります。ここがこのセクションのポイントです。
- 古典的な方法(Harmony・scrublet):普通のパソコンで動く、手軽で速い方法。
- AI の方法(scVI・SOLO):GPU が必要な、深層学習を使う方法。大きなデータや難しいケースに強い。
💡 GPU って?
もともと画像処理用の高速な計算装置で、AI の計算に向いています。手元に無くても、無料の Google Colab で使えます。
どちらか一方のルートを選べばOKです。流れはこうなります。
💡 なぜ順番が違う?:scrublet は単独で動くので統合の前に、SOLO は scVI の結果が必要なので統合の後に行います。
🔰 初めてならこれ:まずは 普通のPCで完結する組み合わせ(Harmony+scrublet) で十分です。GPU が使えるようになったら、AI のルート(scVI 系)を試しましょう。「AI だから常に良い」わけではなく、データの規模・GPUの有無・目的で選ぶのが正解です。
各ツールの詳細は個別記事へ:統合は Harmony(古典) / scVI(AI)、ダブレットは scrublet(古典) / SOLO(AI)。
(任意)RNA velocity をやる予定の人へ
細胞の「これからの変化」を予測する RNA velocity という解析をやる場合は、そのための専用ファイル(loom ファイル)を、①読み込みの段階で一緒に取り込んでおくとスムーズです。loom の作り方と velocity 解析そのものは別記事で扱います。今は「最初に取り込むんだな」とだけ覚えておけば十分です。
慣れてきたら:古典 vs AI の詳しい比較
ここからは少し踏み込んだ内容です。最初は読み飛ばしてかまいません。各ツールの仕組み・インストール・落とし穴は、末尾の関連記事で詳しく解説しています。
⑥ 統合:Harmony と scVI の違い
| 観点 | Harmony(古典・PC) | scVI(AI・GPU) |
|---|---|---|
| 仕組み | PCA の空間でバッチを反復的にそろえる | 生カウントを深層学習で表現し直す |
| 速度(小規模) | 速い | 遅い |
| 大規模データ | やや不利 | 得意 |
| 強いバッチ効果 | 消しすぎることがある | 強い効果を消しつつ生物差を保つ |
| 再現性 | ほぼ毎回同じ | 乱数依存(毎回わずかに違う) |
| 発展性 | 単機能 | SOLO・アノテーション等へ発展 |
📌 目安:GPU が無い・小〜中規模 → Harmony/GPU 可・大規模・発展性が欲しい → scVI(Luecken et al., 2022)。
③ ダブレット:scrublet と SOLO の違い
| 観点 | scrublet(古典・PC) | SOLO(AI・GPU) |
|---|---|---|
| 仕組み | 人工的に作ったダブレットと比較 | scVI の表現を使い分類 |
| 前提 | 単独で動く | 学習済みの scVI が必要 |
| 実行する位置 | 統合の前 | 統合(scVI)の後 |
📌 目安:GPU が無い・手早く → scrublet/scVI を使っている → SOLO。性能はデータ次第なので、重要な解析では両方使って一致を見るのも有効です(Xi & Li, 2021)。
このセクションの記事一覧
| # | 記事 | 環境 |
|---|---|---|
| 1 | データの読み込みと品質管理(QC) | 普通のPC |
| 2 | サンプル統合:Harmony(古典) | 普通のPC |
| 3 | サンプル統合:scVI(AI) | GPU必須 |
| 4 | ダブレット検出:scrublet(古典) | 普通のPC |
| 5 | ダブレット検出:SOLO(AI) | GPU必須 |
| 6 | 正規化・特徴選択・次元削減・クラスタリング | 普通のPC |
統合・ダブレットの AI 手法(scVI・SOLO)の仕組みや、どのモデルをいつ使うかは scvi-tools の全体像 でまとめて解説しています。
関連記事
- 📖 scRNA-seq解析の土台:AnnDataのデータ構造 … 全ステップで扱うデータ形式の基礎
- 📖 scvi-tools の全体像 ― どのモデルをいつ使うか … scVI・SOLO などAI手法の地図
- 📖 scRNA-seq解析:下流解析の全体像 … 前処理の次の段階(細胞型同定・条件間比較など)
参考文献
- Heumos, L., Schaar, A. C., Lance, C., et al. (2023). Best practices for single-cell analysis across modalities. Nature Reviews Genetics, 24, 550–572. doi:10.1038/s41576-023-00586-w
- Luecken, M. D., Büttner, M., Chaichoompu, K., et al. (2022). Benchmarking atlas-level data integration in single-cell genomics. Nature Methods, 19, 41–50. doi:10.1038/s41592-021-01336-8
- Xi, N. M., & Li, J. J. (2021). Benchmarking Computational Doublet-Detection Methods for Single-Cell RNA Sequencing Data. Cell Systems, 12(2), 176–194. doi:10.1016/j.cels.2020.11.008
- Traag, V. A., Waltman, L., & van Eck, N. J. (2019). From Louvain to Leiden: guaranteeing well-connected communities. Scientific Reports, 9, 5233. doi:10.1038/s41598-019-41695-z


コメント