空間トランスクリプトーム解析(spatial transcriptomics)のうちシーケンス型(Visium・Stereo-seq など NGS で読み出す方式)は、細胞型が割合として返ってきます。ラベルではなくベクトルなので、「この細胞型とこの細胞型が近い」という問いの立て方も変わります。そして割合データには、見落とすと結論を誤る数学的な制約があります。
1. 「近い」には2つの意味がある

| 同じフィーチャの中 | 隣のフィーチャ | |
|---|---|---|
| 距離 | ほぼ接している | フィーチャの間隔だけ離れている |
| 呼び方 | 共局在 | 隣接 |
| 使うもの | 割合ベクトルどうしの関係 | 近傍グラフ |
| 接触を問うなら | まずこちら | 補助的 |
55 µm のスポットに 1〜10 個の細胞が入っているなら、その細胞たちは互いにごく近いということです。隣のスポットは 100 µm ほど離れています。接触を問いにするなら、まずフィーチャ内の共局在を見てください。
同じフィーチャにいても、55 µm の中で離れていることはあります。また、そのフィーチャの割合は推定値であって、観測ではありません。共局在は「近くにいる傾向がある」までを示すもので、接触を証明するものではありません。
2. 共局在を計算する
python
import numpy as np
import pandas as pd
# フィーチャ内の共局在:割合ベクトルどうしの相関
P = adata.obsm["cell_type_proportions"]
corr = P.corr()
print(corr.round(2))
# 上位の組を並べる
pairs = [
(a, b, float(corr.loc[a, b]))
for i, a in enumerate(P.columns) for b in P.columns[i+1:]
]
pairs.sort(key=lambda t: -t[2])
for a, b, r in pairs[:10]:
print("%-18s %-18s r=%.2f" % (a, b, r))
cell2location には、推定した細胞数の行列を NMF で分解して一緒に現れる細胞型のまとまりを見つける機能もあります(Kleshchevnikov et al., Nature Biotechnology, 2022)。「腫瘍細胞 + 疲弊 T細胞 + マクロファージ」のような組み合わせが、1つの因子として出てきます。
3. 割合には「合計が1」という制約がある

ここが、この解析でいちばん見落とされやすい点です。
割合ベクトルは、各フィーチャで合計が 1 になります。つまりある細胞型の割合が上がれば、他の細胞型の割合は必ず下がります。この関係は、生物学とは無関係に、定義から生じます。
腫瘍細胞の割合と免疫細胞の割合に負の相関が出たとき、それは「腫瘍が免疫細胞を排除している」のかもしれませんし、単に合計が 1 だからかもしれません。この2つを、相関係数だけでは区別できません。割合のような組成データを扱うときの、古くから知られた問題です。
対処は2つあります。
- 絶対量を使う。cell2location のように細胞数そのものを推定する手法なら、合計 1 の制約から自由になります。
- 組成データ向けの変換をする。対数比変換などを行ってから相関を取ります。
python
# 割合ではなく、絶対量(推定された細胞数)で相関を取る
# 合計が1という制約から自由になる
A = adata.obsm["q05_cell_abundance_w_sf"]
corr_abs = np.log1p(A).corr()
# 割合での相関と、絶対量での相関を比べる
cmp = pd.DataFrame({
"割合": [corr.loc[a, b] for a, b, _ in pairs[:15]],
"絶対量": [corr_abs.loc[a, b] for a, b, _ in pairs[:15]],
}, index=[f"{a}|{b}" for a, b, _ in pairs[:15]])
print(cmp.round(2))
# 符号が変わる組があれば、それは合計1の制約の産物だった可能性が高い
割合での相関と絶対量での相関を並べて、符号が変わる組を探してください。そこは制約の影響が最も強く出ていた場所です。「割合では負、絶対量では正」なら、その2つは実際には一緒に増えているのに、割合にしたせいで排除し合って見えていた、ということです。
4. ニッチをつくる
2つの細胞型の関係を見るのではなく、各フィーチャの割合ベクトル全体をクラスタリングする方法があります。こうして得られるまとまりをニッチと呼びます。
python
import scanpy as sc
import squidpy as sq
# 割合ベクトルをクラスタリングすると、ニッチが出てくる
nb = sc.AnnData(P.to_numpy())
nb.obs_names = adata.obs_names
nb.var_names = P.columns
sc.pp.neighbors(nb, use_rep="X", n_neighbors=15)
sc.tl.leiden(nb, resolution=0.5, key_added="niche", flavor="igraph")
adata.obs["niche"] = nb.obs["niche"].values
# 組織の上に描いて、意味のある領域になっているかを見る
sq.pl.spatial_scatter(adata, color="niche")
# 各ニッチの細胞型組成を表にする
prof = P.copy(); prof["niche"] = adata.obs["niche"].values
print(prof.groupby("niche").mean().round(2))
この考え方は、多重免疫染色で大腸がんの浸潤先進部を解析した研究(Schürch et al., Cell, 2020)で確立されました。同研究は 9 つの保存されたニッチを同定し、ニッチの断片化やニッチ間の連絡の途絶が予後の悪さと結びつくことを示しています。
ドメインは発現そのものから、ニッチは細胞型の割合から求めます。だから、デコンボリューションが崩れていればニッチも崩れますが、ドメインは影響を受けません。両方を出して、対応するかを見るのが実務的です。対応しないなら、デコンボリューションを疑う材料になります。
5. フィーチャ間の隣接も見る
ニッチができたら、ニッチどうしの隣接を評価できます。ここからは Squidpy の近傍解析がそのまま使えます。
python
# フィーチャ間の隣接:格子の上で近傍グラフを作る
sq.gr.spatial_neighbors(adata, coord_type="grid", n_neighs=6)
# ニッチどうしの隣接を、置換検定で評価する
sq.gr.nhood_enrichment(adata, cluster_key="niche", n_perms=1000, seed=0)
sq.pl.nhood_enrichment(adata, cluster_key="niche")
# 距離を変えたときの共起も見る
sq.gr.co_occurrence(adata, cluster_key="niche")
sq.pl.co_occurrence(adata, cluster_key="niche")
置換検定の帰無仮説は「ラベルが組織全体でランダムに配置されている」です。組織には構造があるので、この仮定はほぼ必ず破れています。その結果、多くの組が有意になります。p 値で足切りするのではなく、z スコアの順位で上位を解釈してください。
6. デコンボリューションの誤差が、共局在を偽造する

参照で発現プロファイルがよく似た2つの細胞型は、重みが入れ替わっても観測との誤差がほとんど変わりません。この識別可能性の問題は、デコンボリューションの原理で見たとおりです。
その結果どうなるか。どちらにも中間的な値が振られます。つまり、2つの細胞型が同じ場所に一緒に現れることになります。これは偽の共局在です。
python
# 共局在が強い組は、参照でのプロファイルの近さを確認する
S = np.log1p(sig.loc[common].to_numpy()) # 参照のシグネチャ
cm = pd.DataFrame(np.corrcoef(S.T), index=sig.columns,
columns=sig.columns)
for a, b, r in pairs[:10]:
print("%-16s %-16s 共局在 r=%.2f 参照での類似 r=%.2f"
% (a, b, r, float(cm.loc[a, b])))
# 参照でも似ている組なら、共局在は推定の産物かもしれない
# 識別可能性の問題が、ここに現れている
参照のシグネチャで相関が高い組なら、その共局在は推定の産物かもしれません。デコンボリューションを走らせる前に確認したのと、同じ計算です。生物学的に意味のある共局在なら、プロファイルが似ていない組で出るはずです。
性格の違うデコンボリューション手法(絶対量を返すものと割合を返すもの)で共局在の順位を比べてください。上位が入れ替わるなら、その結論は手法に依存しています。保たれるなら、それは論文に書ける根拠になります。
7. チェックリスト
- 「近い」をフィーチャ内の共局在と隣接のどちらで問うかを決めたか
- 割合で相関を取るとき、合計 1 の制約を意識したか
- 絶対量でも相関を取って、符号が変わる組を探したか
- ニッチを組織の上に描いて、意味のある領域か確かめたか
- ニッチとドメインの対応を確認したか
- 共局在が強い組について、参照でのプロファイルの近さを確認したか
- デコンボリューション手法を変えて、順位が保たれるかを見たか
- 置換検定の結果を、z スコアの順位で解釈しているか
まとめ
- 「近い」にはフィーチャ内の共局在とフィーチャ間の隣接の2つがある。マルチセルなら、前者が最も強い近さ。
- 割合には合計 1 という制約がある。だから割合どうしには必然的に負の相関が生じる。
- 「排除し合っている」という結論が、制約の産物であることがある。絶対量でも相関を取り、符号が変わる組を探す。
- ニッチは割合ベクトルのクラスタリングで作る(Schürch et al., 2020 の発想)。
- ニッチは割合から、ドメインは発現から求める。両方を出して対応を見れば、デコンボリューションの検証になる。
- 参照で似た細胞型は、偽の共局在を作る。識別可能性の問題が、ここに現れる。共局在が強い組は、参照での類似度を確認する。
- 置換検定の帰無仮説は組織構造によりほぼ必ず破れる。z スコアの順位で解釈する。
関連記事
- シーケンス型 空間トランスクリプトーム:空間ドメイン同定
- シーケンス型 空間トランスクリプトーム:空間可変遺伝子(SVG)
- シーケンス型 空間トランスクリプトーム:cell2location 実践
- シーケンス型 空間トランスクリプトーム:デコンボリューションの原理と手法分類
- scRNA-seq解析:細胞間相互作用(cell-cell communication)
- scRNA-seq解析:下流解析の全体像
- scRNA-seq解析:細胞型アノテーション手法の全体像
- scRNA-seq解析:データの読み込みと品質管理(QC)
- scRNA-seq解析の土台:AnnData のデータ構造をリレーショナルDBの発想で理解する
参考文献
- 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
- 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
- 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
- Schürch, C. M., Bhate, S. S., Barlow, G. L., et al. (2020). Coordinated cellular neighborhoods orchestrate antitumoral immunity at the colorectal cancer invasive front. Cell, 182(5), 1341–1359.e19. doi:10.1016/j.cell.2020.07.005
- Singhal, V., Chou, N., Lee, J., et al. (2024). BANKSY unifies cell typing and tissue domain segmentation for scalable spatial omics data analysis. Nature Genetics, 56(3), 431–441. doi:10.1038/s41588-024-01664-3
- Bhuva, D. D., Tan, C. W., Salim, A., et al. (2024). Library size confounds biology in spatial transcriptomics data. Genome Biology, 25, 99. doi:10.1186/s13059-024-03241-7
- Chen, A., Liao, S., Cheng, M., et al. (2022). Spatiotemporal transcriptomic atlas of mouse organogenesis using DNA nanoball-patterned arrays. Cell, 185(10), 1777–1792. doi:10.1016/j.cell.2022.04.003
- Marconato, L., Palla, G., Yamauchi, K. A., et al. (2025). SpatialData: an open and universal data framework for spatial omics. Nature Methods, 22(1), 58–62. doi:10.1038/s41592-024-02212-x
- 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
- 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


コメント