空間トランスクリプトーム解析(spatial transcriptomics)のうちシーケンス型(Visium・Stereo-seq など NGS で読み出す方式)は、コピー数の変化を、scRNA-seq と同じ考え方で推定できます。染色体上で並べた遺伝子の発現を移動平均し、正常の基準と比べる、という手順です。ただし1フィーチャが混合であることが、推定の感度を直接下げます。
1. 混合が、コピー数の信号を薄める

腫瘍細胞だけのフィーチャなら、増幅や欠失ははっきり見えます。しかし腫瘍が 3 割、正常が 7 割のフィーチャでは、同じ変化が 3 割に薄まります。
💡 デコンボリューションの結果が、そのまま前処理になる
腫瘍細胞の割合が高いフィーチャに絞ってから推定すれば、感度が上がります。cell2location 実践やデコンボリューションの原理で得た割合が、ここでそのまま使えます。割合を共変量として明示的にモデルに入れる方法もあります。閾値は、残るフィーチャ数を見てから決めてください。厳しくすれば感度は上がりますが、解析対象が狭くなります。
腫瘍細胞の割合が高いフィーチャに絞ってから推定すれば、感度が上がります。cell2location 実践やデコンボリューションの原理で得た割合が、ここでそのまま使えます。割合を共変量として明示的にモデルに入れる方法もあります。閾値は、残るフィーチャ数を見てから決めてください。厳しくすれば感度は上がりますが、解析対象が狭くなります。
python
import numpy as np
# 腫瘍細胞の割合が高いフィーチャに絞る
P = adata.obsm["cell_type_proportions"]
adata.obs["tumor_frac"] = P["腫瘍細胞"].values
# 割合ごとに、どれだけ残るかを確かめてから閾値を決める
for thr in [0.3, 0.5, 0.7]:
n = int((adata.obs["tumor_frac"] >= thr).sum())
print(thr, "->", n, "フィーチャ")
# 高い割合のフィーチャだけを、コピー数の推定に使う
tumor = adata[adata.obs["tumor_frac"] >= 0.5].copy()
# 正常の基準は、免疫細胞の割合が高いフィーチャから選ぶ
adata.obs["immune_frac"] = P[["T細胞", "B細胞", "マクロファージ"]].sum(axis=1).values
ref = adata[adata.obs["immune_frac"] >= 0.6].copy()
print("腫瘍側:", tumor.n_obs, "/ 参照側:", ref.n_obs)
2. 何を「正常」の基準にするか

| 基準の取り方 | 利点 | 注意点 |
|---|---|---|
| 同じ切片の正常領域 | 同じ実験条件。最も素直 | 腫瘍の混入がありうる |
| 別の正常検体 | 混入の心配がない | 実験条件の差が入る |
| 参照を使わない(全体の平均) | 手軽 | 腫瘍が多数派だと基準が歪む |
⚠️ 基準の取り方が、推定そのものを決める
基準に腫瘍細胞が混ざっていれば、その腫瘍が持つコピー数の変化は見えなくなります。全フィーチャの平均を基準にする方法は手軽ですが、腫瘍が組織の多数を占める検体では、基準そのものが腫瘍寄りになります。免疫細胞の割合が高いフィーチャを参照に選ぶのが、実務的です。デコンボリューションの結果から、そのまま選べます。
基準に腫瘍細胞が混ざっていれば、その腫瘍が持つコピー数の変化は見えなくなります。全フィーチャの平均を基準にする方法は手軽ですが、腫瘍が組織の多数を占める検体では、基準そのものが腫瘍寄りになります。免疫細胞の割合が高いフィーチャを参照に選ぶのが、実務的です。デコンボリューションの結果から、そのまま選べます。
3. クローンの空間分布を読む
推定したコピー数のプロファイルでクラスタリングすると、クローンが分かれます。そして空間データなら、そのクローンがどこにいるかまで分かります。
python
import scanpy as sc
import squidpy as sq
# コピー数のプロファイルでクラスタリングすると、クローンが分かれる
# cnv_mat は「フィーチャ × 染色体区間」の推定コピー数とする
cl = sc.AnnData(cnv_mat)
cl.obs_names = tumor.obs_names
sc.pp.pca(cl, n_comps=20)
sc.pp.neighbors(cl)
sc.tl.leiden(cl, resolution=0.5, key_added="clone", flavor="igraph")
# クローンを組織の上に描く。空間的にまとまっているかを見る
adata.obs["clone"] = cl.obs["clone"].reindex(adata.obs_names)
sq.pl.spatial_scatter(adata, color="clone")
# まとまっているなら、その場で増えた可能性がある
# 散らばっているなら、推定のノイズを疑う
💡 空間的にまとまっているかが、検証になる
クローンが組織の中でまとまった領域を作っているなら、それはその場で増えた集団である可能性が高い。逆に組織全体に散らばっているなら、推定のノイズがクラスタを作っただけかもしれません。空間的なまとまりは、コピー数推定が意味のある信号を捉えている証拠になります。これは scRNA-seq ではできない検証です。
クローンが組織の中でまとまった領域を作っているなら、それはその場で増えた集団である可能性が高い。逆に組織全体に散らばっているなら、推定のノイズがクラスタを作っただけかもしれません。空間的なまとまりは、コピー数推定が意味のある信号を捉えている証拠になります。これは scRNA-seq ではできない検証です。
4. 腫瘍と免疫細胞の位置関係

腫瘍の縁からの距離を軸にすると、免疫細胞の分布を連続的な変化として読めます。
python
import scipy.spatial as sps
# 腫瘍の縁からの距離を計算する
is_tumor = adata.obs["tumor_frac"] >= 0.5
xy = adata.obsm["spatial"]
tree = sps.cKDTree(xy[is_tumor])
d, _ = tree.query(xy)
adata.obs["dist_tumor"] = np.where(is_tumor, 0, d)
# 距離ごとに、免疫細胞の割合を並べる
bins = np.digitize(adata.obs["dist_tumor"], [0, 100, 250, 500, 1000])
print(adata.obs.groupby(bins)["immune_frac"].mean().round(3))
# 腫瘍の中で高いなら浸潤、外にだけ多いなら排除されている
# クローンごとに、まわりの免疫細胞を比べる
near = adata.obs["dist_tumor"] < 200
print(adata.obs[near].groupby("clone")["immune_frac"].mean().round(3))
| 観察 | 解釈 |
|---|---|
| 腫瘍の中でも免疫細胞の割合が高い | 浸潤している |
| 腫瘍の外にだけ多く、中では低い | 排除されている |
| 縁に集まり、中には入らない | 境界で止められている |
| クローンごとに周囲の免疫細胞が違う | クローンによって免疫の反応が違う |
💡 クローンごとに、まわりを比べる
コピー数でクローンを分けたあと、クローンごとに、まわりの免疫細胞の割合を比べてください。同じ腫瘍の中でも、クローンによって免疫の反応が違うことがあります。これは「どの遺伝的変化が、免疫の排除と結びついているか」という問いにつながります。空間情報とコピー数を組み合わせて初めて立てられる問いです。
コピー数でクローンを分けたあと、クローンごとに、まわりの免疫細胞の割合を比べてください。同じ腫瘍の中でも、クローンによって免疫の反応が違うことがあります。これは「どの遺伝的変化が、免疫の排除と結びついているか」という問いにつながります。空間情報とコピー数を組み合わせて初めて立てられる問いです。
⚠️ 割合の制約を、ここでも忘れない
免疫細胞の割合が腫瘍領域で低いのは、腫瘍細胞の割合が高いからかもしれません。割合は合計が 1 になるので、この関係は定義から生じます。「排除されている」と結論する前に、絶対量(推定された細胞数)でも同じ傾向が出るかを確かめてください。ニッチ・近傍解析で扱った、組成データの注意点がそのまま当てはまります。
免疫細胞の割合が腫瘍領域で低いのは、腫瘍細胞の割合が高いからかもしれません。割合は合計が 1 になるので、この関係は定義から生じます。「排除されている」と結論する前に、絶対量(推定された細胞数)でも同じ傾向が出るかを確かめてください。ニッチ・近傍解析で扱った、組成データの注意点がそのまま当てはまります。
5. チェックリスト
- 腫瘍細胞の割合でフィーチャを絞ったか
- 閾値ごとに、残るフィーチャ数を確かめてから決めたか
- 正常の基準を、免疫細胞の割合が高いフィーチャから選んだか
- 基準に腫瘍が混ざっていないかを確認したか
- クローンが空間的にまとまっているかを見たか
- 腫瘍の縁からの距離を軸に、免疫細胞の分布を読んだか
- 絶対量でも同じ傾向が出るかを確かめたか
- クローンごとに、まわりの免疫細胞を比べたか
まとめ
- 混合が、コピー数の信号を直接薄める。腫瘍の割合に比例して弱まる。
- デコンボリューションの結果が、そのまま前処理になる。腫瘍細胞の割合が高いフィーチャに絞る。
- 基準の取り方が、推定そのものを決める。基準に腫瘍が混ざれば、その変化は見えなくなる。
- 免疫細胞の割合が高いフィーチャを参照に選ぶのが実務的。
- クローンが空間的にまとまっているかが、推定の検証になる。これは scRNA-seq ではできない。
- 腫瘍の縁からの距離を軸にすると、浸潤か排除かを連続的な変化として読める。
- クローンごとにまわりを比べると、遺伝的変化と免疫の反応の結びつきを問える。
- 割合の合計 1 の制約を忘れない。絶対量でも確かめる。
関連記事
- シーケンス型 空間トランスクリプトーム:パスウェイ・転写因子活性
- シーケンス型 空間トランスクリプトーム:ニッチ・近傍解析
- シーケンス型 空間トランスクリプトーム:cell2location 実践
- シーケンス型 空間トランスクリプトーム:空間ドメイン同定
- scRNA-seq解析:コピー数異常(CNV)の推定
- scRNA-seq解析:下流解析の全体像
- scRNA-seq解析:細胞型アノテーション手法の全体像
- scRNA-seq解析:機能エンリッチメント・パスウェイ解析
- 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
- 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
- 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


コメント