scRNA-seq解析:マーカー遺伝子データベースで細胞型を自動アノテーション(scType)

scRNA-seq

📚 この記事について:「scRNA-seq解析 実践シリーズ」アノテーション編。自動アノテーションの第1回、マーカー遺伝子データベース型を、代表ツール scType の実コードで解説します。あわせて「調べると他のツールが多くて迷う」を防ぐため、自動アノテーション全体のツール早見も載せます。系統の地図は アノテーション手法の全体像 を参照。

🔙 前の記事手動アノテーション / 🔜 次の記事参照データとの相関による自動アノテーション(SingleR)

🧩 前提:クラスタリング済みの AnnData(annotated data、scanpy のデータ形式)/log 正規化済み発現/Python の基本。


この記事のゴール

マーカー遺伝子データベース型の自動アノテーションを理解し、scType を実際に動かせること。さらに、自動アノテーションには他に多くのツールがあるので、全体の中での位置づけと選び方を整理します。


マーカーDB型とは

各クラスタ(または各細胞)の発現を、細胞型ごとの既知マーカー遺伝子のセット(データベース)と照合し、最も合致する細胞型を割り当てる方法です。注釈済みの参照データセットは不要で、必要なのはマーカーDBだけです。

位置づけとしては、手動アノテーションの「既知マーカー照合」を、データベース+スコア計算で自動化したものにあたります。手動と同じく「既知マーカーに基づく」ので、判定根拠が明確なのが長所です。しかしながら、自動アノテーションの結果が正しいかUMAPなどで遺伝子発現を確認する必要はあります。

マーカーDB型の仕組み。各クラスタの発現と、マーカーDB(細胞型ごとの正マーカー・負マーカー)からスコア(クラスタ×細胞型)を計算し、各クラスタに最高スコアの細胞型を割り当てる。スコアが低いクラスタは Unknown とする。
マーカーDB型の仕組み。各クラスタの発現と、マーカーDB(細胞型ごとの正マーカー・負マーカー)からスコア(クラスタ×細胞型)を計算し、各クラスタに最高スコアの細胞型を割り当てる。スコアが低いクラスタは Unknown とする。

scType を使う

どんなツールか

scType(Ianevski et al., 2022)は、マーカーの組み合わせから、参照データ無しで超高速に細胞型を同定するツールです。各細胞型について、正マーカー(その型で発現するはずの遺伝子)負マーカー(発現しないはずの遺伝子)を使い、特異性で重みづけしたスコアを計算します。クラスタごとに最高スコアの細胞型を割り当て、スコアが低いクラスタは「Unknown」とします。

オリジナルは R ですが、Python 移植版(kris-nader/sc-type-py)があり、scanpy の AnnData にそのまま使えます。

コード(Python 移植版)

pythonimport scanpy as sc
import numpy as np
import pandas as pd

# 事前に scType の Python 実装スクリプトとマーカーDBを取得しておく:
#   ・実装スクリプト sctype_py.py     … GitHub リポジトリ kris-nader/sc-type-py
#   ・マーカーDB     ScTypeDB_full.xlsx … GitHub リポジトリ IanevskiAleksandr/sc-type
# どちらも作業フォルダに置き(中身を確認してから)、必要な関数を import する
from sctype_py import gene_sets_prepare, sctype_score, process_cluster

# 1) マーカーDBから細胞型ごとの遺伝子セットを準備(組織=Brain を選択)
#    gs_positive(正マーカー)と gs_negative(負マーカー)が作られる
gs_list = gene_sets_prepare(
    path_to_db_file="ScTypeDB_full.xlsx",
    cell_type="Brain",     # Immune system / Brain / Lung / Pancreas / Kidney ...
)

# 2) スケール済み発現でスコア計算(adata.X は log 正規化済みを想定)
adata.layers["scaled"] = sc.pp.scale(adata, copy=True).X
scaled = pd.DataFrame(adata.layers["scaled"].T,        # 行=遺伝子, 列=細胞
                      index=adata.var_names, columns=adata.obs_names)
es_max = sctype_score(scRNAseqData=scaled, scaled=True,
                      gs=gs_list["gs_positive"], gs2=gs_list["gs_negative"])

# 3) クラスタごとに最高スコアの細胞型を割り当てる
clusters = adata.obs["leiden"].unique()
cL = pd.concat([process_cluster(cl, adata, es_max, "leiden") for cl in clusters])
sctype_scores = (cL.groupby("cluster")
                   .apply(lambda x: x.nlargest(1, "scores"))
                   .reset_index(drop=True))

# 4) スコアが低いクラスタ(細胞数/4 未満)は "Unknown" にする
low = sctype_scores["scores"] < sctype_scores["ncells"] / 4
sctype_scores.loc[low, "type"] = "Unknown"

# 5) adata に書き戻して UMAP 表示
mapping = dict(zip(sctype_scores["cluster"].astype(str), sctype_scores["type"]))
adata.obs["sctype"] = adata.obs["leiden"].astype(str).map(mapping).astype("category")
sc.pl.umap(adata, color="sctype", legend_loc="on data", frameon=False)

🔧 環境メモgene_sets_prepare / sctype_score / process_cluster は、ダウンロードした sctype_py.py 内の関数です(from sctype_py import ...)。リモートのスクリプトを直接実行せず、中身を確認してから import する方が安全です。データの整形(スケール済み行列=遺伝子×細胞)は移植版のチュートリアルに従ってください(バージョンで細部が変わることがあります)。

自分のマーカーDBを使う(重要)

内蔵 DB(ScTypeDB)はヒト・マウスの主要組織に対応しますが、発生段階や特殊な細胞型は手薄です。その場合は、自分のマーカーを同じ形式の XLSX にして渡せます。

python# ScTypeDB と同じ4列の XLSX を用意して渡す:
#   tissueType(組織), cellName(細胞型名),
#   geneSymbolmore1(正マーカー, カンマ区切り), geneSymbolmore2(負マーカー)
gs_list = gene_sets_prepare(path_to_db_file="my_markers.xlsx", cell_type="Brain_E14")

⚠️ 落とし穴
遺伝子名(シンボル)の一致:DB とデータで表記が違うと当たりません。マウスは Title case(Pax6)、ヒトは大文字(PAX6)が基本。
マウス・発生期はそのまま効きにくい:内蔵 DB の「Brain」は主に成体・主要型向け。発生期の前駆細胞などは自前マーカーDBを推奨(→ 手動アノテーションで使った既知マーカーを流用)。
クラスタ単位の割当:scType はクラスタ単位で最高スコアの型を付けます。1クラスタに2型が混ざると粗くなるので、resolution を調整します。


マーカーDB型の主なツール

scType 以外にも同系統のツールが複数あります。Python で完結できるのは scType(移植版)・decoupler・SCSA です。

ツール 言語 手法 既定DB ひとこと
scType R / Python移植 正負マーカーの特異性重み付きスコア ScTypeDB(内蔵) 超高速・参照不要・カスタムDB可(本記事
decoupler Python 機能エンリッチメント(ORA / AUCell) PanglaoDB ほか scanpy ネイティブでクリーン
SCSA Python DEG×DB信頼度のスコアモデル CellMarker v2 rank_genes_groups 出力を入力にできる
CellAssign Python(TF) 確率モデルで割当 ユーザー定義マーカー バッチを考慮した確率的割当
SCINA R 半教師あり(EM) マーカーリスト シンプル・マーカー必須
AUCell R gene-set の AUC(細胞単位) カスタム SCENIC の一部
Garnett R マーカーで分類器を学習 マーカーファイル 階層・学習型
scCATCH R evidence-based スコア CellMatch 組織特異の証拠重み

💡 Python派へのおすすめ:scType を使うなら移植版、よりクリーンに済ませたいなら decoupler(PanglaoDB のマーカーで ORA)、DEG をすでに出しているなら SCSA が手早いです。


マーカーデータベース

マーカーDB型の精度は、使うDBの質で大きく変わります。代表的なDBは次のとおりです。

データベース 対応種 特徴
CellMarker 2.0(Hu et al., 2022) ヒト/マウス 手動キュレーション・大規模(SCSA が利用)
PanglaoDB(Franzén et al., 2019) ヒト/マウス 広く使われる(decoupler が利用)
ScTypeDB ヒト/マウス scType 内蔵
CellMatch ヒト/マウス scCATCH 用

迷わないための地図:自動アノテーション主要ツール早見

「自動アノテーション」を調べると多数のツールが出てきます。どれも5系統のどこかに属します。下表で位置づけを確認し、各系統の詳細は個別記事へ進んでください(本記事は①)。

系統 代表ツール 言語 参照/DB 性格・詳細記事
① マーカーDB scType, decoupler, SCSA, CellAssign, SCINA R/Py マーカーDB 参照不要・根拠が明確(本記事
② 参照相関 SingleR, scmap, CHETAH, Clustifyr R 注釈済み参照 相関で割当(→ 記事②
③ 教師あり/マッピング CellTypist, Azimuth, scPred, scANVI, scArches Py/R 参照/事前学習 ラベル転写(→ 記事③
④ 深層学習/基盤モデル scGPT, Geneformer, UCE, scimilarity Py 事前学習 巨大アトラス活用(→ 記事④
⑤ LLM GPTCelltype, CASSIA, scExtract Py/API 不要 マーカーから推定(→ 記事⑤

💡 迷ったときの一言参照データが無いなら①(本記事)か⑤。良い参照があるなら②か③。大規模・GPUがあるなら④。詳しい選び方は アノテーション手法の全体像のフローを参照。


どれを使えばよいか(この系統の選び方)

  • 参照データが手元に無い/まず素早く当たりを付けたい → マーカーDB型(本記事)。
  • Python で完結させたい → scType 移植版・decoupler・SCSA。
  • マウス・発生期など特殊な系 → 内蔵DBに頼らず、自前のマーカーDB手動記事で使った既知マーカー)を渡す。
  • いずれの場合も、結果は手動アノテーションで検証します。

落とし穴(全系統共通)

⚠️ 自動アノテーションは「下書き」。必ず手動で検証
– マーカーDB型はDBに無い細胞型・状態は当てられません。
マウスや発生期はヒト成体中心のDBが効きにくいので、自前マーカーDBを優先します。
– 付いたラベルは、既知マーカーの発現で確認してから採用します(具体的な手順は次節)。


付いたラベルは 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ダブレットの検出の記事)のが安全です。


まとめ

  • マーカーDB型は、各クラスタの発現をマーカーDBと照合して細胞型を割り当てる。参照不要・根拠が明確
  • 代表は scType(正負マーカーのスコア、Python 移植版あり)。自前マーカーDBを渡せるのが強み。Python では decoupler / SCSA も実用的。
  • 自動アノテーションの多数のツールは5系統のどこかに属する。本記事は①。参照の有無・言語・規模で選ぶ。
  • どの自動結果も手動で検証してから採用する。

次の記事:参照データとの相関による自動アノテーション(SingleR) — 注釈済み参照データとの相関で割り当てる方法に進みます。


関連記事


参考文献

  • Ianevski, A., Giri, A. K., & Aittokallio, T. (2022). Fully-automated and ultra-fast cell-type identification using specific marker combinations from single-cell transcriptomic data. Nature Communications, 13, 1246. doi:10.1038/s41467-022-28803-w
  • Hu, C., Li, T., Xu, Y., et al. (2023). CellMarker 2.0: an updated database of manually curated cell markers in human/mouse and web tools based on scRNA-seq data. Nucleic Acids Research, 51(D1), D870–D876. doi:10.1093/nar/gkac947
  • Franzén, O., Gan, L.-M., & Björkegren, J. L. M. (2019). PanglaoDB: a web server for exploration of mouse and human single-cell RNA sequencing data. Database, 2019, baz046. doi:10.1093/database/baz046
  • Cao, Y., Wang, X., & Peng, G. (2020). SCSA: A Cell Type Annotation Tool for Single-Cell RNA-seq Data. Frontiers in Genetics, 11, 490. doi:10.3389/fgene.2020.00490
  • Badia-i-Mompel, P., Vélez Santiago, J., Braunger, J., et al. (2022). decoupleR: ensemble of computational methods to infer biological activities from omics data. Bioinformatics Advances, 2(1), vbac016. doi:10.1093/bioadv/vbac016
  • Zhang, A. W., O’Flanagan, C., Chavez, E. A., et al. (2019). Probabilistic cell-type assignment of single-cell RNA-seq for tumor microenvironment profiling. Nature Methods, 16, 1007–1015. doi:10.1038/s41592-019-0529-1
  • 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

コメント

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