一、空間 CCC 跟 scRNA CCC 的根本不同
細胞通訊的核心是「ligand 表達在 A,receptor 表達在 B,且 A 和 B 真的接觸到」。在 scRNA,因為失去座標,第三個條件被忽略:CellPhoneDB 與 CellChat 假設「同 cluster 內所有細胞都可能跟另一 cluster 全部細胞互動」。
在 ST 我們可以把「實體距離」加進去——只接受「物理上相鄰」的 LR 互動。這對於 paracrine/juxtacrine 訊號(如 Notch、ECM 接觸)特別關鍵。
Core CCC requires "ligand in A, receptor in B, and A & B actually touch". scRNA, lacking coordinates, drops the third requirement: CellPhoneDB and CellChat assume any cell in cluster A may interact with any cell in cluster B.
In ST we can add physical distance — only credit LR interactions whose cells are spatially adjacent. This is especially crucial for paracrine / juxtacrine signaling (Notch, ECM contact).
二、空間感知 CCC 工具
💬 CellChat v2 spatial
2024 升級版內建 spatial mode:可同時用 cluster-level + spatial neighborhood,自動只算「物理鄰近 cluster pair」。LR database 較豐富、和 scRNA CellChat 完全相容、社群最大。
The 2024 upgrade ships a built-in spatial mode: combines cluster-level + spatial neighborhood, restricting LR inference to physically adjacent cluster pairs. Rich LR database, fully compatible with scRNA CellChat, largest community.
🚛 COMMOT
用 collective optimal transport 一次性決定多 ligand vs 多 receptor 的「運輸方案」,同時納入空間距離與表達濃度。對 ligand/receptor 競爭情境特別好。
Uses collective optimal transport to jointly solve a "transport plan" for many ligands vs many receptors, integrating spatial distance and expression. Particularly strong under ligand/receptor competition.
🌱 NicheNet downstream
把 ligand → receptor → downstream signaling → target gene 的調控網路都拉進來。不直接用空間,但常跟 spatial CCC 配對:先用 CellChat/COMMOT 找 LR pair,再用 NicheNet 看下游。
Brings the full ligand → receptor → signaling → target gene regulatory network. Not spatial itself but commonly paired with spatial CCC: identify LR pairs with CellChat/COMMOT, then trace downstream with NicheNet.
🧠 SpaTalk / DeepLinc
較新的 GNN-based 方法,用 graph attention 找潛在的 LR pair,準確度高但需要 GPU 與較大資料。
Newer GNN-based methods using graph attention to discover candidate LR pairs; accurate but require GPU and larger datasets.
互動:距離閾值如何改變 LR 推論
下圖:紅點 = 表達 ligand 的細胞(A 細胞群);藍點 = 表達 receptor 的細胞(B 細胞群)。線條 = 推論的互動。當距離閾值 = ∞ 時,所有 A-B 對都連起來(像 scRNA);縮小閾值 → 只剩物理上鄰近的對。
Red dots = ligand-expressing cells (A); blue dots = receptor-expressing cells (B); lines = inferred interactions. With distance cutoff = ∞, every A-B pair is linked (scRNA-like); shrinking the cutoff keeps only physically nearby pairs.
三、選工具決策
實作
# CellChat v2 spatial library(CellChat) cellchat <- createCellChat(object = vis, group.by = "celltype", datatype = "spatial", coordinates = vis@meta.data[, c("x","y")]) cellchat <- setIdent(cellchat, ident.use = "celltype") cellchat@DB <- CellChatDB.human cellchat <- subsetData(cellchat) |> identifyOverExpressedGenes() |> identifyOverExpressedInteractions() cellchat <- computeCommunProb(cellchat, type = "truncatedMean", distance.use = TRUE, scale.distance = 0.01) netVisual_circle(cellchat@net$count); netVisual_aggregate(cellchat, signaling = "VEGF")
import commot as ct # 準備 LR DB df_ligrec = ct.pp.ligand_receptor_database(species="human", signaling_type="Secreted Signaling") ct.tl.spatial_communication(adata, database_name="cellchat", df_ligrec=df_ligrec, dis_thr=500, heteromeric=True) ct.pl.plot_cell_communication(adata, summary="sender", lr_pair=("VEGFA","KDR"))
📝 自我檢測
1. CellChat v2 spatial 與 v1 的核心差別?
1. Key difference between CellChat v2 spatial and v1?
2. 想要研究「一個 ligand 同時被多個受體競爭」的情境,最適合?
2. Best choice for "one ligand competed for by multiple receptors"?
3. NicheNet 在 spatial 流程裡的典型角色?
3. Typical role of NicheNet in a spatial pipeline?