イメージング型 空間トランスクリプトーム:空間の細胞間コミュニケーション

Spatial transcriptome
📚 この記事について
リガンド–受容体の解析に、空間の情報を加える方法を扱います。距離の制約が何を改善するのか、シグナルの種類で距離をどう変えるのか、そしてパネルという制約がここでどう効くのかを整理します。
🔙 前の記事:イメージング型 空間トランスクリプトーム:ニッチ・近傍解析
🔜 次の記事:イメージング型 空間トランスクリプトーム:空間ドメイン同定
📌 前提scRNA-seq解析:細胞間相互作用ニッチ・近傍解析

空間トランスクリプトーム解析(spatial transcriptomics)のうちイメージング型(Xenium・CosMx・MERSCOPE など顕微鏡で1分子ずつ数える方式)は、細胞の位置が分かっています。だから リガンド–受容体の解析に、距離という制約を加えられます。これは実際に効きます。ただし、期待しすぎてもいけません。届く距離にいることは、伝わった証拠ではないからです。

1. 距離の制約が、何を変えるのか


図:「同じ組織にいる」と「届く距離にいる」は違う
図:「同じ組織にいる」と「届く距離にいる」は違う

scRNA-seq のリガンド–受容体解析で言えるのは、「その組織に、リガンドを出す細胞と受容体を持つ細胞の両方が存在する」までです。組織の端と端にいても、区別できません。

イメージング型なら、実際に届く距離にいるかまで確かめられます。制約を1つ加えるだけで、候補は大きく減ります。偽陽性を減らす武器としては強力です。

⚠️ それでも、発現の共起であることは変わらない
距離の条件を満たしても、そのシグナルが実際に伝わったかどうかは分かりません。リガンドの mRNA があっても、タンパク質になっているとは限りません。受容体があっても、活性化しているとは限りません。空間データは候補を絞るのには役立ちますが、証明するものではありません。この点は scRNA-seq と同じです。

2. 使える L-R の組を、最初に数える


図:リガンドと受容体が、両方ともパネルにあるか
図:リガンドと受容体が、両方ともパネルにあるか

解析を始める前に、必ずやることがあります。リガンドと受容体の両方がパネルに入っている組が、何組あるかを数えることです。

python
import pandas as pd

# 最初にやること:使える L-R の組が何組あるかを数える
#   lr は 2列(ligand, receptor)のデータフレームとする
panel = set(adata.var_names)
usable = lr[lr["ligand"].isin(panel) & lr["receptor"].isin(panel)]

print("データベースの組:", len(lr))
print("両方がパネルにある組:", len(usable))
print("割合:", round(len(usable) / len(lr), 3))

# 見たい経路が残っているかを、名指しで確認する
for g in ["CXCL12", "CXCR4", "PDCD1", "CD274"]:
    print(g, g in panel)
💡 データベースの指定について
COMMOT は、どのリガンド–受容体データベースを使うかを引数で指定します。CellChat 由来のものを使うのが一般的です。引数名は版によって変わることがあるので、公式ドキュメントで確認してください。到達距離(dis_thr)は自分で決める値で、振って結論が保たれるかを必ず確かめます
⚠️ データベースの組の大半は、対象にならない
リガンド–受容体のデータベースには、数千の組が登録されています。しかしパネルが 300 遺伝子なら、両方が入っている組は、ごくわずかです。パネルが 5,000 なら状況は改善しますが、それでも全部ではありません。見たい経路があるなら、パネル設計の段階で確認しておくのが本筋です。解析の段階では、もう選び直せません。
💡 「検出されなかった」と「そもそも見ていない」は違う
パネルに無い遺伝子は、発現が 0 なのではなく測っていないだけです。結果を書くときは、この2つを区別してください。「この経路は働いていなかった」ではなく「この経路はパネルに含まれておらず、評価できなかった」が正確です。

3. シグナルの種類で、想定する距離が違う


図:シグナルの種類ごとに、想定する距離が違う
図:シグナルの種類ごとに、想定する距離が違う
種類 伝わり方 想定する距離 空間で絞る意味
接触依存 膜どうしが触れている必要がある 隣接する細胞のみ 大きい
傍分泌 分泌されて近くに拡散する 数十 µm の範囲 大きい
長距離・内分泌 広く拡散する、または血流に乗る 組織全体 薄い
⚠️ 1つの距離を、すべての組に当てはめない
接触依存のシグナルに 100 µm の閾値を使えば、触れていない細胞まで拾ってしまいます。逆に傍分泌のシグナルに接触だけを条件にすれば、取り逃がします。組ごとに、想定すべき距離が違います。少なくとも「接触依存かどうか」で2群に分けて、別々の閾値で解析してください。

4. 実際に走らせる ─ 2段構え


実務的には、空間を使わない解析空間の制約を加えた解析を両方走らせ、差を見るのが分かりやすい進め方です。

python
import squidpy as sq

# まず、空間を使わない解析(比較の基準になる)
sq.gr.ligrec(
    adata, cluster_key="celltype",
    interactions=usable, n_perms=1000,
    copy=False, use_raw=False,
)
res = adata.uns["celltype_ligrec"]
print(res["pvalues"].shape)

Squidpy(Palla et al., Nature Methods, 2022)の ligrec は、細胞型のラベルを入れ替える置換検定で、L-R の組ごとに有意性を評価します。ここまでは空間を使っていません。

python
import numpy as np

# 空間の制約を加える:実際に隣り合っている組だけを残す
sq.gr.spatial_neighbors(adata, coord_type="generic",
                        delaunay=True, key_added="dl")
W = adata.obsp["dl_connectivities"]

# 細胞型どうしが、実際に何本の辺でつながっているか
oh = pd.get_dummies(adata.obs["celltype"]).to_numpy(dtype=float)
adj = oh.T @ (W @ oh)   # 細胞型 × 細胞型 の辺の数
cts = adata.obs["celltype"].cat.categories
adj = pd.DataFrame(adj, index=cts, columns=cts)

# 辺がほとんど無い組は、L-R の結果が有意でも採用しない
print((adj < 20).sum().sum(), "組が接触不足")
💡 接触の本数で足切りする
L-R の検定が有意でも、その2つの細胞型が実際にはほとんど隣り合っていないことがあります。ニッチ・近傍解析で作った近傍グラフから、細胞型どうしの辺の本数を数えて、少なすぎる組は結論から外してください。検定の有意性と、物理的な接触の量は、別の情報です。

5. 距離を明示的にモデル化する ─ COMMOT


近傍グラフで足切りするのは、距離を後から使う方法です。距離をモデルの中に組み込む手法もあります。

COMMOT(Cang et al., Nature Methods, 2023)は、最適輸送の枠組みで細胞間コミュニケーションを推定します。特徴は2つあります。

  • 細胞間の空間距離を、モデルに直接入れる。遠い細胞へのシグナルは、コストが高いものとして扱われる。
  • リガンドと受容体の種類どうしの競合を考える。1つのリガンドが複数の受容体に取り合われる状況を、同時に扱う。
python
import commot as ct

# 距離を明示的にモデル化する。dis_thr は想定する到達距離(µm)
ct.tl.spatial_communication(
    adata,df_ligrec=usable,
    dis_thr=50, heteromeric=True,
)

# シグナルの向きを推定する
ct.tl.communication_direction(adata, 
ct.pl.plot_cell_communication(adata, 

# 到達距離を変えて、結論が保たれるかを見る
#   接触依存なら短く、傍分泌なら長く設定する
💡 向きが出るのが、大きな利点
COMMOT は、シグナルがどちらからどちらへ流れているかを推定できます。「腫瘍から免疫細胞へ」なのか「免疫細胞から腫瘍へ」なのかは、生物学的な解釈をまったく変えます。さらに、シグナルによって制御されている下流遺伝子を推定する機能もあり、パスウェイ解析につなげられます。
⚠️ 到達距離のパラメータが、結論を左右する
COMMOT でも、想定する到達距離は自分で決めます。この値を変えて、結論が保たれるかを必ず確かめてください。距離を伸ばせば伸ばすほど、多くの組が有意になります。「距離を 30・50・100 µm で試し、いずれでも同じ組が上位に来た」と書けるかどうかが、結果の強さを決めます。

6. 切り方の誤りが、偽の接触を作る


これは ニッチ・近傍解析と同じ問題ですが、L-R 解析ではより深刻になります。

切り方の誤り L-R 解析への影響
隣の分子を拾った その細胞が両方のマーカーを持つように見える
2細胞を1つにまとめた リガンドと受容体が同じ細胞に同居する
1細胞を2つに割った 同じ細胞由来の2つが、隣接する別細胞として数えられる
⚠️ リガンドと受容体が同じ細胞にある、という結果
自己分泌のこともありますが、2つの細胞をまとめてしまった結果であることもあります。見分けるには、その細胞の面積排他的マーカーの共発現を確認してください。面積が大きく、同居しないはずのマーカーも持っているなら、それは融合した細胞です。
python
# 切り方を変えて、同じ L-R 解析を回す
#   偽の接触が結論を作っていないかを確かめる
out = {}
for name, ad in [("装置の既定", ad_vendor),
                  ("分子ベース", ad_baysor)]:
    sq.gr.ligrec(ad, cluster_key="celltype",
                 interactions=usable, n_perms=1000, use_raw=False)
    out[name] = ad.uns["celltype_ligrec"]["pvalues"]

# 両方で有意になった組だけを、結論として採用する
a = out["装置の既定"] < 0.01
b = out["分子ベース"] < 0.01
print("両方で有意:", int((a & b).to_numpy().sum()),
      "片方だけ:", int((a ^ b).to_numpy().sum()))

最も強い検証は、ここでも切り方を変えて同じ解析を回すことです。両方の切り方で有意になった組だけを結論として採用すれば、計算の産物を報告する危険を大きく減らせます。

7. ニッチと組み合わせる


細胞型どうしの L-R を全組織でまとめて見るのではなく、ニッチごとに分けて見ると、解釈が深くなります。

同じ「腫瘍細胞と T細胞」の組でも、腫瘍の中心にいるときと、浸潤先進部にいるときでは、働いている経路が違うかもしれません。大腸がんの研究(Schürch et al., Cell, 2020)でも、ニッチの構成と患者の予後が結びついていました。

⚠️ 分けるほど、細胞数が減る
ニッチごとに分けると、各群の細胞数は当然減ります。置換検定は細胞数が少ないと不安定になるので、各ニッチに十分な細胞がいるかを先に確認してください。数十細胞しかないニッチでの L-R 検定は、解釈に耐えません。

8. チェックリスト


  • 両方がパネルにある L-R の組が何組あるかを数えたか
  • 見たい経路が、パネルに含まれているかを名指しで確認したか
  • 「検出されなかった」と「測っていない」を書き分けているか
  • 接触依存と傍分泌で、距離を分けた
  • 細胞型どうしの実際の接触の本数を確認したか
  • 到達距離のパラメータを振って、結論が保たれるかを見たか
  • リガンドと受容体が同居する細胞について、面積と純度を確認したか
  • 切り方を変えて、同じ組が有意になるかを確かめたか
  • ニッチごとに分けるなら、各群の細胞数は足りているか

まとめ


  • 距離という制約を加えると、候補が大きく減る。偽陽性を減らす武器になる。
  • ただし届く距離にいることは、伝わった証拠ではない。発現の共起である点は scRNA-seq と変わらない。
  • 両方がパネルにある L-R の組を、最初に数える。データベースの組の大半は対象にならない。
  • 「検出されなかった」と「そもそも測っていない」を、はっきり書き分ける。
  • 接触依存と傍分泌では、想定する距離が違う。1つの閾値をすべてに当てない。
  • 検定の有意性と、物理的な接触の本数は別の情報。両方見る。
  • COMMOT は距離と競合をモデルに入れ、シグナルの向きまで推定する。ただし到達距離のパラメータは自分で決める。
  • 切り方の誤りが偽の接触を作る。リガンドと受容体の同居は、融合した細胞かもしれない。切り方を変えて結論が保たれるかを確かめる。

関連記事


参考文献


  • Cang, Z., Zhao, Y., Almet, A. A., et al. (2023). Screening cell–cell communication in spatial transcriptomics via collective optimal transport. Nature Methods, 20(2), 218–228. doi:10.1038/s41592-022-01728-4
  • 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
  • Petukhov, V., Xu, R. J., Soldatov, R. A., et al. (2022). Cell segmentation in imaging-based spatial transcriptomics. Nature Biotechnology, 40(3), 345–354. doi:10.1038/s41587-021-01044-w
  • Cervilla, S., Grases, D., Perez, E., et al. (2026). A technical comparison of spatial transcriptomics platforms across six cancer types. Genome Biology, 27, 22. doi:10.1186/s13059-026-03937-y
  • Janesick, A., Shelansky, R., Gottscho, A. D., et al. (2023). High resolution mapping of the tumor microenvironment using integrated single-cell, spatial and in situ analysis. Nature Communications, 14(1), 8353. doi:10.1038/s41467-023-43458-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

コメント

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