シーケンス型 空間トランスクリプトーム:手法比較(CARD・RCTD・Tangram)─ ベンチマークの結論はなぜ食い違うのか

Spatial transcriptome
📚 この記事について
主要なベンチマーク3本を読み解き、なぜ結論が一致しないのかを説明します。そのうえで CARD・RCTD・Tangram の3手法を実際に動かし、何をもって手法を選ぶべきかを整理します。
🔙 前の記事:シーケンス型 空間トランスクリプトーム:cell2location 実践
🔜 次の記事:シーケンス型 空間トランスクリプトーム:Curio Seeker と doublet モード
📌 前提scRNA-seq解析:細胞型アノテーション手法の全体像デコンボリューションの原理と手法分類

空間トランスクリプトーム解析(spatial transcriptomics)のうちシーケンス型(Visium・Stereo-seq など NGS で読み出す方式)は、デコンボリューション手法が 20 以上あります。「どれがいちばん良いのか」を知りたくなりますが、大規模なベンチマークを3本読んでも、答えは一致しません。これは誰かが間違っているからではなく、測っている能力が違うからです。この記事では、その食い違いの正体を解いたうえで、手法の選び方を示します。

1. ベンチマークの結論は、一致していない


図:3本のベンチマークの結論は、一致していない
図:3本のベンチマークの結論は、一致していない
ベンチマーク 規模 上位に来た手法
Li et al., Nature Methods, 2022 16 手法・45 実データ + 32 シミュレーション cell2location、SpatialDWLS、RCTD
Li et al., Nature Communications, 2023 18 手法・50 データセット CARD、cell2location、Tangram
Spotless(Sang-aram et al., eLife, 2023) AUPRC と JSD で評価 RCTD、cell2location

3本すべてに名前が挙がっているのは cell2location だけです。RCTD は2本、CARD と Tangram は1本ずつ。「最強の手法」を探しても、見つかりません。

2. なぜ食い違うのか ─ 指標が違えば、勝者が変わる


ベンチマークは、それぞれ違う指標で「正しさ」を測っています。

指標 何を測るか この指標で強い手法とは
PCC(相関) 推定した割合が、真値と同じパターンで動くか パターンを再現できる手法
RMSE 推定した割合が、真値からどれだけ離れているか 絶対値が正確な手法
JSD 推定した組成の分布が、真値の分布とどれだけ近いか 組成全体を正しく当てる手法
AUPRC 「その細胞型がいる/いない」を正しく判定できるか 存在の検出が得意な手法
図:「検出できる」ことと「割合を当てる」ことは、別の能力
図:「検出できる」ことと「割合を当てる」ことは、別の能力

「いる細胞型はすべて見つけるが、割合がずれる」手法と、「見つけた細胞型の割合は正確だが、稀な細胞型を見逃す」手法。この2つは、指標を変えれば順位が入れ替わります

💡 自分の問いが、どちらなのかを先に決める
「この領域に T細胞はいるのか」を問いにするなら、存在の検出(AUPRC)が高い手法を選びます。「この領域の細胞組成は何対何か」を問いにするなら、組成の正確さ(JSD、RMSE)が高い手法を選びます。順位表だけを見て選ぶと、自分の問いに合わない手法を選ぶことになります。

3. もう1つの軸 ─ ロバスト性


Li et al.(Nature Communications, 2023)は、精度だけでなく条件を変えたときの安定性も評価しました。解像度、スポット数、遺伝子数を変えても性能が保たれるか、という視点です。

  • CARD、cell2location、Tangram、SD2 が、条件を変えても最も安定していた。
  • cell2location と DestVI は、シミュレーションでも実データでも安定して良い成績だった。
  • cell2location、SpatialDecon、Tangram は、スポット数の多い大きな組織でも扱えた。
💡 「安定して2位」は、しばしば「たまに1位」より価値がある
自分のデータで、どの条件が当てはまるかは事前には分かりません。特定の条件で最高性能を出すが他では崩れる手法より、どの条件でも安定して上位にいる手法のほうが、実務では信頼できます。3本のベンチマークすべてに名前が挙がる cell2location が「まず試す手法」として妥当なのは、この理由です。

4. RCTD ─ モードをレジームで選ぶ


RCTD(Cable et al., Nature Biotechnology, 2022)の特徴は、プラットフォーム効果を明示的にモデル化することと、3つのモードを持つことです。

モード 1フィーチャあたりの細胞型 使う場面
doublet 最大2つ Visium HD、Curio Seeker(フィーチャが細胞に近い)
full 制限なし Visium の 55 µm スポット(多数の細胞が混ざる)
multi 有限個(3〜4) その中間
⚠️ モードを間違えると、結果が壊れる
55 µm スポットには 1〜10 個の細胞が入ります。ここで doublet モード(最大2細胞型)を使うと、実際にいる細胞型を強制的に2つに押し込むことになります。逆に、10 µm ビーズに full モードを使うと、1〜2 細胞しかいない場所に多数の細胞型を割り当ててしまい、過適合します。モードは、解析単位から自動的に決まります。解析単位の決め方で決めた単位を、そのまま使ってください。
r
# RCTD は R が本家(Bioconductor の spacexr)
library(SpatialExperiment)
library(spacexr)

# 空間データと参照 scRNA-seq を、どちらも生カウントで渡す
rctd_data <- createRctd(spatial_spe, reference_se, cell_type_col = "cell_type")

# モードは、フィーチャに何個の細胞が入るかで決める
#   doublet : 1フィーチャに最大2細胞型(Visium HD、Curio Seeker など)
#   full    : 制限なし(Visium の 55 µm スポット)
#   multi   : 有限個(3〜4)に制限する
res <- runRctd(rctd_data, rctd_mode = "full", max_cores = 4)

# 割合は assay に入る(行が細胞型、列がフィーチャ)
w <- assay(res, "weights")
print(dim(w))

RCTD は R が本家です。Python 中心で解析している場合は、GPU 対応の移植版があります。

bash
# Python から使いたい場合は、GPU 対応の移植版がある
pip install rctd-py

# R の spacexr と検証されており、優勢な細胞型の判定は 99% 台で一致する
# ただし本家は R 実装。結果が疑わしいときは R で確認する

5. CARD ─ 空間相関を使う


CARD(Ma & Zhou, Nature Biotechnology, 2022)の特徴は、「空間的に近い場所は、細胞型の組成も似ている」という仮定をモデルに組み込むことです。

この効果は2つあります。1つは、参照 scRNA-seq がミスマッチでも精度が保たれること。隣の場所から組成の情報を借りられるので、参照が多少ずれていても踏ん張れます。

もう1つは、測っていない位置の組成を補間できること。スポットとスポットの隙間を埋めて、元のデータより高い解像度の地図を作れます。

r
library(CARD)

# 空間相関を使うので、空間座標が必須
card_obj <- createCARDObject(
  sc_count = sc_count, sc_meta = sc_meta,
  spatial_count = spatial_count, spatial_location = spatial_location,
  ct.varname = "cell_type", ct.select = ct_list,
  sample.varname = "sample",
  minCountGene = 0, minCountSpot = 0,
)

card_obj <- CARD_deconvolution(CARD_object = card_obj)
prop <- card_obj@Proportion_CARD

# 空間相関を使えるので、測っていない位置の組成を補間できる
card_obj <- CARD.imputation(card_obj, NumGrids = 2000, ineibor = 10)
⚠️ 既定のフィルタが、遺伝子とスポットを勝手に落とす
createCARDObject の minCountGeneminCountSpot は、既定値のままだと遺伝子とスポットをフィルタします。自分でフィルタを済ませてある場合、ここで二重に落ちて、気づかないうちにデータが減っていることがあります。前処理を自分で管理しているなら、どちらも 0 にしておくのが安全です。
⚠️ 空間平滑化は、鋭い境界を鈍らせる
「近い場所は似ている」という仮定は、多くの組織で正しい。しかし、その仮定が破れる場所こそ、見たい場所であることがあります。腫瘍と間質の境界では、組成が急激に変わります。境界そのものを問いにするなら、空間平滑化を使わない手法(RCTD、cell2location)の結果と必ず比べてください。

6. Tangram ─ これはデコンボリューションではない


Tangram(Biancalani et al., Nature Methods, 2021)は、他の2つとはやっていることが根本的に違います

図:デコンボリューションと写像は、やっていることが違う
図:デコンボリューションと写像は、やっていることが違う

デコンボリューションは、観測を再現するように重みを解く問題でした。観測との誤差が、そのまま制約になります。勝手な答えは返せません。

Tangram がやるのは写像です。参照 scRNA-seq の細胞を、空間の上のどこに置けばよいかを学習します。だから単一細胞の解像度が得られますし、細胞を置いてしまえば、その細胞が持つ全遺伝子を空間に持ち込める。測っていない遺伝子の予測が得意なのは、この構造のためです。

実際、Li et al.(Nature Methods, 2022)でも、測っていない遺伝子の空間分布を予測する課題で Tangram は上位に来ました。

python
import tangram as tg
import scanpy as sc

# 学習に使う遺伝子(マーカー)を選ぶ。ここの質が結果を左右する
sc.tl.rank_genes_groups(adata_sc, groupby="cell_type", method="wilcoxon")
markers = sc.get.rank_genes_groups_df(adata_sc, group=None)
markers = markers[markers["pvals_adj"] < 0.01].groupby("group").head(100)
genes = markers["names"].unique().tolist()

# 共通遺伝子をそろえ、密度事前分布を計算する
tg.pp_adatas(adata_sc, adata_sp, genes=genes)

# mode='clusters' は、細胞型ごとに平均してから写像する(軽い)
ad_map = tg.map_cells_to_space(
    adata_sc, adata_sp,
    mode="clusters", cluster_label="cell_type",
    density_prior="rna_count_based", device="cuda:0",
)

# 細胞型の割合を空間データへ書き戻す
tg.project_cell_annotations(ad_map, adata_sp, annotation="cell_type")
print(adata_sp.obsm["tangram_ct_pred"].head())

# 測っていない遺伝子を、空間に持ち込む(Tangram の本領)
ad_ge = tg.project_genes(ad_map, adata_sc, cluster_label="cell_type")
⚠️ 写像には、観測を再現する強い制約がない
デコンボリューションは「観測と合うこと」が制約でした。写像は「参照の細胞を、それらしい場所に置く」ことが目的なので、観測されたカウントを厳密に再現する制約は比較的ゆるいのです。その分、人工的なバイアスが入りうる。Tangram の結果を「観測から導かれた事実」として扱うのは危険です。参照に無い細胞状態は、そもそも置きようがないことも忘れないでください。
💡 mode の使い分け
cells は個々の細胞を写像します。メモリを食いますが、最も細かい。clusters は細胞型ごとに平均してから写像します。参照と空間が別の検体から来ている場合は、こちらが素直です。constrained は、組織像から数えた細胞数を制約として渡します。「この場所には 8 個の細胞がいる」という情報を使えるので、cell2location の N_cells_per_location と同じ発想です。核を数える手間は、ここでも報われます。
⚠️ スパース性の違いが、写像を壊す
Tangram の公式チュートリアルは、次の現象を明記しています。scRNA-seq では非常にスパースなのに、空間データではそうでもない遺伝子がある。Visium のような技術は技術的ドロップアウトが起きやすいため、両者の分布が食い違うのです。こうした遺伝子では、Tangram は良い写像を見つけられません。これは プラットフォーム効果の、もう1つの現れ方です。学習に使う遺伝子(マーカー)の選び方が、結果を大きく左右します。

7. 3手法の使い分け


RCTD CARD Tangram
やること デコンボリューション デコンボリューション 写像
返るもの 割合 割合 対応づけ(+遺伝子予測)
空間情報 使わない 使う(空間相関) 使わない
言語 R(Python 移植版あり) R Python
得意なこと プラットフォーム差への頑健さ、鋭い境界 参照ミスマッチへの頑健さ、高解像度への補間 測っていない遺伝子の予測、単一細胞解像度
注意点 モードを解析単位に合わせる 既定フィルタ、境界の平滑化 観測への制約がゆるい、遺伝子選択が効く

8. 実務 ─ 複数走らせて、一致を見る


ベンチマークが割れる以上、1つの手法だけを信じるのは合理的ではありません。現実的なやり方は、性格の違う複数の手法を走らせて、結果を比べることです。

python
import numpy as np
import pandas as pd

# 複数手法の結果を、同じ形にそろえて比べる
methods = {"cell2location": prop_c2l, "RCTD": prop_rctd, "Tangram": prop_tg}

# 細胞型ごとに、手法間の相関を見る
for ct in prop_c2l.columns:
    vals = pd.DataFrame({m: d[ct] for m, d in methods.items()})
    print(ct, vals.corr().round(2).to_dict())

# 一致しないフィーチャに印を付けて、空間の上で見る
stack = np.stack([d.values for d in methods.values()])
spread = stack.std(axis=0).max(axis=1)
adata.obs["disagreement"] = spread
sq.pl.spatial_scatter(adata, color="disagreement")
# 手法が割れる場所は、境界か、参照が合っていない場所であることが多い

見るべきは、手法が一致する場所ではなく、一致しない場所です。手法が割れるフィーチャには、たいてい理由があります。

手法が一致しない場所 疑うこと
組織の境界 組成が急変している。空間平滑化する手法だけがずれていないか
特定の領域だけ その領域の細胞型が参照に無い可能性
カウントが低い場所 そもそも推定できるだけの情報がない
稀な細胞型で割れる 識別可能性の問題。参照でその型が他と区別できているか
⚠️ 「一致したから正しい」ではない
複数の手法が同じ答えを返しても、それは「同じ参照から同じように間違えた」可能性があります。参照に細胞型が欠けていれば、どの手法も同じように、いちばん近い別の型に押し込みます。コンセンサスは不一致を見つけるための道具であって、正しさの保証ではありません。最後は、マーカーを組織の上に投影して確認してください。

まとめ


  • ベンチマーク3本の結論は一致しない。3本すべてに名前が挙がるのは cell2location だけ。
  • 食い違うのは、測っている能力が違うから。「存在を検出できる(AUPRC)」ことと「割合を当てる(JSD・RMSE)」ことは別。
  • 自分の問いがどちらかを先に決める。順位表だけを見て選ばない。
  • RCTD はモードを解析単位に合わせる。55 µm スポットなら full、細胞に近いフィーチャなら doublet。
  • CARD は空間相関を使う。参照ミスマッチに強いが、鋭い境界を鈍らせる。既定のフィルタにも注意。
  • Tangram はデコンボリューションではなく写像。測っていない遺伝子を予測できるが、観測を再現する制約はゆるい。
  • 複数手法を走らせ、一致しない場所を見る。ただし一致は正しさの保証ではない。最後はマーカーで確認する。

関連記事


参考文献


  • Li, B., Zhang, W., Guo, C., et al. (2022). Benchmarking spatial and single-cell transcriptomics integration methods for transcript distribution prediction and cell type deconvolution. Nature Methods, 19(6), 662–670. doi:10.1038/s41592-022-01480-9
  • Li, H., Zhou, J., Li, Z., et al. (2023). A comprehensive benchmarking with practical guidelines for cellular deconvolution of spatial transcriptomics. Nature Communications, 14(1), 1548. doi:10.1038/s41467-023-37168-7
  • Sang-aram, C., Browaeys, R., Seurinck, R., & Saeys, Y. (2023). Spotless, a reproducible pipeline for benchmarking cell type deconvolution in spatial transcriptomics. eLife, 12, RP88431. doi:10.7554/eLife.88431
  • Cable, D. M., Murray, E., Zou, L. S., et al. (2022). Robust decomposition of cell type mixtures in spatial transcriptomics. Nature Biotechnology, 40(4), 517–526. doi:10.1038/s41587-021-00830-w
  • Ma, Y., & Zhou, X. (2022). Spatially informed cell-type deconvolution for spatial transcriptomics. Nature Biotechnology, 40(9), 1349–1359. doi:10.1038/s41587-022-01273-7
  • Biancalani, T., Scalia, G., Buffoni, L., et al. (2021). Deep learning and alignment of spatially resolved single-cell transcriptomes with Tangram. Nature Methods, 18(11), 1352–1362. doi:10.1038/s41592-021-01264-7
  • Kleshchevnikov, V., Shmatko, A., Dann, E., et al. (2022). Cell2location maps fine-grained cell types in spatial transcriptomics. Nature Biotechnology, 40(5), 661–671. doi:10.1038/s41587-021-01139-4
  • Lopez, R., Li, B., Keren-Shaul, H., et al. (2022). DestVI identifies continuums of cell types in spatial transcriptomics data. Nature Biotechnology, 40(9), 1360–1369. doi:10.1038/s41587-022-01272-8
  • Palla, G., Spitzer, H., Klein, M., et al. (2022). Squidpy: a scalable framework for spatial omics analysis. Nature Methods, 19(2), 171–178. doi:10.1038/s41592-021-01358-2
  • Wolf, F. A., Angerer, P., & Theis, F. J. (2018). SCANPY: large-scale single-cell gene expression data analysis. Genome Biology, 19, 15. doi:10.1186/s13059-017-1382-0

コメント

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