基于最优传输的通讯分析工具COMMOT学习
COMMOT(基于最优传输的通讯分析,COMMunication analysis by Optimal Transport),用于推断空间转录组中的细胞间通讯。该工具充分考虑了不同配体与受体物种之间的竞争关系,以及细胞间的空间距离。COMMOT采用创新的集体最优传输算法,有效解决了空间转录组分析中复杂的分子相互作用与空间约束难题,不仅能精准处理配体-受体间的竞争关系,还集成了一套基于机器学习的下游分析工具,用于推断空间信号的传导方向及受其调控的靶基因。
分析流程
1.导入
import osimport gcimport otimport pickleimport anndataimport scanpy as scimport pandas as pdimport numpy as npfrom scipy import sparsefrom scipy.stats import spearmanr, pearsonrfrom scipy.spatial import distance_matriximport matplotlib.pyplot as pltimport commot as ct
2.示例数据读取
adata = sc.datasets.visium_sge(sample_id='V1_Mouse_Brain_Sagittal_Posterior')
3.数据预处理
在此分析中,需要使用能够合理反映分子丰度的非负值。仅对数据进行了最基本的预处理,包括总计数归一化和 log1p转换,但研究者也可以根据需求执行更详尽的预处理步骤,例如通过回归分析剔除细胞周期基因的影响。
adata.var_names_make_unique()adata.raw = adatasc.pp.normalize_total(adata, inplace=True)sc.pp.log1p(adata)adata_dis500 = adata.copy()
细胞降维聚类分群
sc.pp.highly_variable_genes(adata, min_mean=0.0125, max_mean=3, min_disp=0.5)adata = adata[:, adata.var.highly_variable]sc.tl.pca(adata, svd_solver='arpack')sc.pp.neighbors(adata, n_neighbors=10, n_pcs=40)sc.tl.umap(adata)sc.tl.leiden(adata, resolution=0.4)sc.pl.spatial(adata, color='leiden')

4.空间通讯推断
使用CellChatDB配体-受体数据库,且仅使用其中的分泌型信号配体-受体对。
df_cellchat = ct.pp.ligand_receptor_database(species='mouse', signaling_type='Secreted Signaling', database='CellChat')print(df_cellchat.shape)
随后对配体-受体对进行筛选,仅保留那些配体和受体在至少5%的spots中均有表达的配对。
df_cellchat_filtered = ct.pp.filter_lr_database(df_cellchat, adata_dis500, min_cell_pct=0.05)print(df_cellchat_filtered.shape)# (250, 4)
print(df_cellchat_filtered.head())# 0 1 2 3#0 Tgfb1 Tgfbr1_Tgfbr2 TGFb Secreted Signaling#1 Tgfb2 Tgfbr1_Tgfbr2 TGFb Secreted Signaling#2 Tgfb3 Tgfbr1_Tgfbr2 TGFb Secreted Signaling#3 Tgfb1 Acvr1b_Tgfbr2 TGFb Secreted Signaling#4 Tgfb1 Acvr1c_Tgfbr2 TGFb Secreted Signaling
对这250个配体-受体对进行空间通讯推断,设定空间距离上限为500。CellChat数据库考虑了异源多聚体结构单元。推断得到的信号传导结果以spot-to-spot矩阵的形式存储在 nnData 对象的obsp插槽中。例如,通过配体-受体对 Wnt4–Fzd4_Lrp6,从 spot i 向 spot j 发送信号的得分可从 adata_dis500.obsp[‘commot-cellchat-Wnt4-Fzd4_Lrp6’][i, j] 中获取。
ct.tl.spatial_communication(adata_dis500, database_name='cellchat', df_ligrec=df_cellchat_filtered, dis_thr=500, heteromeric=True, pathway_sum=True)
确定某条信号通路(例如PSAP通路)的空间方向。其中,各spots发出信号的方向经过插值后存储在adata_dis500.obsm[‘commot_sender_vf-cellchat-PSAP’] 中,而各空间点接收信号的来源方向则存储在 adata_dis500.obsm[‘commot_receiver_vf-cellchat-PSAP’] 中。
ct.tl.communication_direction(adata_dis500, database_name='cellchat', pathway_name='PSAP', k=5)ct.pl.plot_cell_communication(adata_dis500, database_name='cellchat', pathway_name='PSAP', plot_method='grid', background_legend=True, scale=0.00003, ndsize=8, grid_density=0.4, summary='sender', background='image', clustering='leiden', cmap='Alphabet', normalize_v = True, normalize_v_quantile=0.995)
箭头代表了信号传导的方向与强度:
-
方向(Direction): 箭头指向的方向表示信号(如配体)从发送细胞(Sender)向接收细胞(Receiver)物理扩散/传导的趋势。 -
长度/粗细(Magnitude): 箭头的长短或粗细通常代表通讯强度的相对大小。箭头越明显,说明该区域的信号传导越活跃或方向越一致。 -
物理意义: 在你的 PSAP 通路例子中,如果这是 sender_vf(发送端向量场),箭头就指向配体分子扩散的目标区域;如果是 receiver_vf(接收端向量场),则表示该点接收到的信号主要来自哪个方位。
或者也可以将信号传导结果汇总到生成的Leiden聚类上。对PSAP信号通路也进行了此项汇总,结果存储在adata_dis500.uns[‘commot_cluster-leiden-cellchat-PSAP’] 中。
adata_dis500.obs['leiden'] = adata.obs['leiden']ct.tl.cluster_communication(adata_dis500, database_name='cellchat', pathway_name='PSAP', clustering='leiden', n_permutations=100)
可视化
ct.pl.plot_cluster_communication_network(adata_dis500, uns_names=['commot_cluster-leiden-cellchat-PSAP'], nx_node_pos=None, nx_bg_pos=False, p_value_cutoff = 5e-2, filename='PSAP_cluster.pdf', nx_node_cmap='Light24')

ct.tl.cluster_position(adata_dis500, clustering='leiden')ct.pl.plot_cluster_communication_network(adata_dis500, uns_names=['commot_cluster-leiden-cellchat-PSAP'], clustering='leiden', nx_node_pos='cluster', nx_pos_idx=np.array([0, 1]), nx_bg_pos=True, nx_bg_ndsize=0.25, p_value_cutoff=5e-2, filename='PSAP_cluster_spatial.pdf', nx_node_cmap='Light24')
左边是教程中的图,右边是跑出来的图,存在很大区别。
5.下游分析
下游分析中虽可识别与信号传导相关的差异表达基因,但该功能还依赖低版本R环境。若要使用,需降级R。
参考资料:
-
Trajectory-based differential expression analysis for single-cell sequencing data. Nat Commun. 2020 Mar 5;11(1):1201. -
COMMET github: https://github.com/zcang/COMMOT
夜雨聆风