この記事のゴール
参照データ相関型の自動アノテーションを理解し、SingleR を Python で動かせること。マーカーDB型(前記事)が「マーカーのリスト」を使うのに対し、本手法は注釈済みの発現データそのものを参照にします。
参照データ相関型とは
すでに細胞型が分かっている参照データ(リファレンス)を用意し、自分のデータの各細胞と、参照の各細胞型プロファイルとの発現の相関を計算して、最も相関が高い細胞型を割り当てる方法です。細胞ごと(cell-level)に判定でき、マーカーを手で選ぶ必要はありません。
位置づけは、「注釈済みデータの知識を、相関を通じて自分のデータに移す」方法です。マーカーDB型より多くの遺伝子を使うぶん、参照とデータが合っていれば精度が高い一方、良質な参照が必須になります。
SingleR を使う
どんなツールか
SingleR(Aran et al., 2019)は、参照データとの相関で細胞型を細胞ごとに割り当てる代表的なツールです。各細胞について、参照の細胞型ごとのプロファイルとのスピアマン相関をマーカー遺伝子上で計算し、最も似た型を選びます。さらに、上位候補だけを使って相関を計算し直すファインチューニングで、近い細胞型どうしを見分けます。
オリジナルは R ですが、Python 実装 singler(BiocPy)があり、参照データは celldex パッケージから取得できます。Python だけで完結します。
参照データを選ぶ(celldex)
python# まず利用できる参照データの一覧を確認する
import celldex
refs = celldex.list_references()
print(refs[["name", "version"]])
# 例:immgen(マウス免疫), mouse_rnaseq(マウス各組織),
# blueprint_encode(ヒト), dice(ヒト免疫) など
コード(singler + celldex)
pythonimport scanpy as sc
import singler
import celldex
# 1) 参照データを取得(マウスなら mouse_rnaseq や immgen)
ref = celldex.fetch_reference("mouse_rnaseq", "2024-02-26", realize_assays=True)
# 2) 各細胞を参照と照合して細胞型を割り当てる
# test_data は「遺伝子 × 細胞」の発現行列(scanpy は 細胞×遺伝子 なので転置)
results = singler.annotate_single(
test_data = adata.X.T,
test_features = list(adata.var_names),
ref_data = ref,
ref_labels = ref.get_column_data().column("label.main"), # 粗い分類。細かくは label.fine
)
# 3) 細胞ごとの予測ラベル(best)を AnnData に書き戻す
adata.obs["singler"] = list(results.get_column("best"))
adata.obs["singler"] = adata.obs["singler"].astype("category")
sc.pl.umap(adata, color="singler", legend_loc="on data", frameon=False)
結果(results)には、細胞ごとの best(予測ラベル)、各細胞型への scores、トップとの差を表す delta が入っています。delta が小さい細胞は自信が低いので、注意して扱います。
🔧 環境メモ:pip install singler celldex。test_data は遺伝子×細胞の行列を想定するため、scanpy の AnnData(細胞×遺伝子)は adata.X.T のように転置して渡します(データ形式の細部は singler/celldex のドキュメントを参照。クラスタ単位で割り当てたい場合は、クラスタごとに最頻ラベルを取る方法もあります)。
自分の注釈済みデータを参照にする
celldex の既製参照が合わない場合(発生段階・特殊組織など)は、自分や論文の注釈済みデータを参照にできます。参照データの発現行列と、その細胞型ラベルを渡せば、同じように相関で割り当てられます。
⚠️ 落とし穴
– 良質な参照が必須:参照が無ければ使えません。参照の質がそのまま結果の質になります。
– 参照に無い型は当てられない:参照に存在しない細胞型は、無理に既存ラベルへ寄せられます。
– 種・遺伝子名の一致:マウスのデータにはマウス参照を。遺伝子シンボルの表記(Pax6 vs PAX6)を揃えます。
– bulk 参照は粒度が粗い:mouse_rnaseq のような bulk 参照は大分類向き。細かい亜型には sc 参照が向きます。
– 発生期はヒト/成体参照が効きにくい:既製参照に頼らず、自前の発生期参照を検討します。
参照相関型の主なツール
SingleR 以外にも、相関や類似度で割り当てるツールがあります。Python で完結できるのは singler(SingleR の Python 実装)です。
| ツール | 言語 | 手法 | ひとこと |
|---|---|---|---|
SingleR(singler) |
R / Python | スピアマン相関+ファインチューニング | 細胞単位・参照の知識を移す(本記事) |
| scmap | R | 最近傍/相関(cell・cluster) | クラスタ単位の割当も可 |
| CHETAH | R | 階層的に相関で分類 | 自信が低い細胞は中間ノードで保留 |
| Clustifyr | R | 相関ベース | クラスタ平均と参照の相関 |
| sciBet | R | 多項回帰ベース | 高速・高精度との報告 |
迷わないための地図:自動アノテーションの系統
「自動アノテーション」には多数のツールがありますが、すべて次の5系統のどれかです。本記事は②参照相関型。詳細は各記事へ(全体像は アノテーション手法の全体像)。
| 系統 | 代表ツール | 参照/DB | 詳細 |
|---|---|---|---|
| ① マーカーDB | scType, decoupler, SCSA | マーカーDB | マーカーDBによる自動アノテーション |
| ② 参照相関 | SingleR, scmap, CHETAH | 注釈済み参照 | 本記事 |
| ③ 教師あり/マッピング | CellTypist, Azimuth, scANVI | 参照/事前学習 | 学習済みモデルによる自動アノテーション |
| ④ 深層学習/基盤モデル | scGPT, Geneformer | 事前学習 | 基盤モデルによる自動アノテーション |
| ⑤ LLM | GPTCelltype, CASSIA | 不要 | LLMによる自動アノテーション |
付いたラベルは UMAP で検証する
自動で付いた細胞型ラベルは、そのまま信じず、代表的なマーカーの発現を UMAP に投影して、本当にそのクラスタに特異的かを目で確かめます。ドットプロットは平均値に要約されるため、UMAP に重ねて細胞ごとの発現を見るのが確実です。
python# 代表マーカーの発現を UMAP に投影して、付いたラベルを検証する
sc.pl.umap(
adata,
color=["Pax6", "Eomes", "Neurod6", "Gad2", "Cx3cr1", "Cldn5"],
ncols=3, cmap="viridis", frameon=False,
)
UMAP に重ねると、次の点が確認できます。
- 他のクラスタにも発現がないか:そのマーカーが目的以外のクラスタでも光っていないか。
- クラスタ内での広がり:そのクラスタの全細胞で出ているのか、一部だけか、発現が低いだけか。
- 複数クラスタにまたがらないか:生物学的に複数の細胞型で発現するマーカーもあります(組み合わせで判断)。
⚠️ 本来発現しないはずのクラスタに発現がある → データ品質を疑う
あるマーカーが、組織学的に発現するはずのないクラスタに出ている場合、QC の不備やダブレット(2細胞が1液滴に入ったもの)の混入を疑います。たとえばニューロンのマーカーと血管内皮のマーカーが同じ細胞群で同時に光るなら、ダブレットの可能性があります。このときは QC の閾値やダブレット除去を見直す(→ QC・ダブレットの検出の記事)のが安全です。
どれを使えばよいか
- 良質な注釈済み参照がある → 参照相関型(本記事)や教師あり・マッピング型。
- Python で完結させたい → SingleR の Python 実装
singler。 - マウス・発生期など特殊な系 → 既製参照に頼らず、自前の注釈済みデータを参照にする。
- いずれの場合も、結果は手動アノテーションで検証します(上節)。
落とし穴(全系統共通)
⚠️ 自動アノテーションは「下書き」。必ず手動で検証
– 参照相関型は参照に無い細胞型は当てられません。
– マウスや発生期はヒト/成体参照が効きにくいので、自前参照を優先します。
– 付いたラベルは、UMAP へのマーカー投影(上節)で確認してから採用します。
まとめ
- 参照相関型は、注釈済み参照との発現の相関で細胞型を細胞ごとに割り当てる。良質な参照が必須。
- 代表は SingleR(スピアマン相関+ファインチューニング)。Python 実装
singler+celldexで完結できる。 - 参照に無い型は当てられず、マウス・発生期は自前参照が現実的。
- 付いたラベルは UMAP にマーカーを投影して検証し、想定外の発現があれば QC・ダブレットを再点検する。
次の記事:学習済みモデルによる自動アノテーション(CellTypist/Azimuth) — 参照で学習した分類器でラベルを転写する方法に進みます。
関連記事
- 📖 細胞型アノテーション手法の全体像 … 手動・自動の地図
- 📖 マーカーDB型(scType)(前の記事)/ 📖 教師あり・マッピング型(CellTypist/Azimuth)(次の記事)
- 📖 手動アノテーション … 自動結果の検証に使う基準
- 📖 正規化・特徴選択・次元削減・クラスタリング … 前段(クラスタを得る)
- 📖 品質管理(QC) / 📖 ダブレット検出(scrublet・SOLO)… 想定外の発現を見たら見直す
- 📖 AnnDataのデータ構造 … 入力データの形式
参考文献
- Aran, D., Looney, A. P., Liu, L., et al. (2019). Reference-based analysis of lung single-cell sequencing reveals a transitional profibrotic macrophage. Nature Immunology, 20, 163–172. doi:10.1038/s41590-018-0276-y
- Kiselev, V. Y., Yiu, A., & Hemberg, M. (2018). scmap: projection of single-cell RNA-seq data across data sets. Nature Methods, 15, 359–362. doi:10.1038/nmeth.4644
- de Kanter, J. K., Lijnzaad, P., Candelli, T., et al. (2019). CHETAH: a selective, hierarchical cell type identification method for single-cell RNA sequencing. Nucleic Acids Research, 47(16), e95. doi:10.1093/nar/gkz543
- Pasquini, G., Rojo Arias, J. E., Schäfer, P., & Busskamp, V. (2021). Automated methods for cell type annotation on scRNA-seq data. Computational and Structural Biotechnology Journal, 19, 961–969. doi:10.1016/j.csbj.2021.01.015
- 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


コメント