针对空间转录组Visium多样本整合分析中的分子邻域矩阵分析其核心优势在于能够从基因表达模式的角度量化微环境的异质性突破传统基于空间坐标的物理邻域限制。以下将详细阐述其优势并提供基于Python的Squidpy分析代码示例。一、 分子邻域矩阵分析的优势分子邻域矩阵分析在多样本整合场景中具有显著优势主要体现在以下几个方面基于表达模式的微环境量化传统的空间邻域分析通常基于物理距离如固定半径内的Spot而分子邻域分析通过计算Spot之间基因表达谱的相似性如相关性来构建邻接关系。这种方法能够识别出在空间上可能不相邻但具有相似分子特征或生物学功能的区域从而更准确地定义“功能微环境” 。多样本整合与批次效应鲁棒性在处理多个Visium样本时分子邻域矩阵可以基于共有的高变基因或特征基因构建。相比于直接整合表达矩阵基于相似性度量的邻域矩阵能够更好地捕捉样本间保守的局部表达模式有助于在不同批次或不同样本间寻找共性的分子生态位 。增强的空间模式识别通过构建分子邻域矩阵可以结合空间统计学方法如Morans I或聚类算法如Leiden聚类识别出具有显著空间自相关的分子模块。这有助于发现那些在组织结构中呈梯度分布或灶状分布的关键基因群为解析复杂的组织结构如肿瘤微环境提供更精细的视角 。二、 分子邻域矩阵与其他分子Niche分析的区别为了更清晰地理解分子邻域矩阵的特点下表对比了其与其他常见分子Niche分析方法的区别分析维度分子邻域矩阵分析细胞/Spot类型共定位分析空间变量基因分析核心原理基于基因表达谱的相似性构建邻接关系基于细胞/Spot注释类型的共现频率检测基因表达量随空间位置的变化程度侧重点分子层面的功能相似性细胞层面的组成与互作单一基因的空间分布特征输出结果邻接矩阵、分子相似性网络图细胞比例矩阵、Niche富集评分空间变量基因列表、空间表达热图应用场景识别功能相似的微环境区域、发现新的分子亚群解析细胞邻里关系、推断细胞间通讯筛选标记基因、绘制基因的空间分布图技术特点能够跨越物理距离寻找功能相似区依赖准确的细胞注释结果通常作为下游分析的起点三、 使用Squidpy进行分子邻域矩阵分析的Python示例以下代码展示如何使用Python的Squidpy和Scanpy库对Visium多样本数据进行整合并构建基于表达相似性的分子邻域矩阵进行分析。该流程包括数据加载、多样本整合、构建空间邻域图以及计算空间自相关指标。import scanpy as sc import squidpy as sq import numpy as np import pandas as pd # # 1. 数据加载与预处理 # # 假设我们有多个Visium样本的h5ad文件这里模拟加载过程 # 实际操作中请替换为: adata sc.read_h5ad(sample1.h5ad) # 为了演示我们创建一个模拟的AnnData对象包含两个样本 print(正在模拟生成Visium多样本数据...) n_spots 5000 n_genes 2000 # 样本1数据 adata_sample1 sc.AnnData(Xnp.random.negative_binomial(5, 0.3, size(n_spots//2, n_genes))) adata_sample1.obs[sample_id] Sample_1 adata_sample1.obs[array_row] np.random.randint(0, 20, n_spots//2) adata_sample1.obs[array_col] np.random.randint(0, 20, n_spots//2) # 样本2数据 (引入一定的批次效应) adata_sample2 sc.AnnData(Xnp.random.negative_binomial(5, 0.3, size(n_spots//2, n_genes))) adata_sample2.X adata_sample2.X * 1.5 # 模拟批次差异 adata_sample2.obs[sample_id] Sample_2 adata_sample2.obs[array_row] np.random.randint(0, 20, n_spots//2) adata_sample2.obs[array_col] np.random.randint(0, 20, n_spots//2) # 合并样本 adata sc.concat([adata_sample1, adata_sample2], joinouter) adata.var_names [fGene_{i} for i in range(n_genes)] print(f合并后的数据对象: {adata.shape}) # # 2. 多样本整合与标准化 # # 计算高变基因 sc.pp.highly_variable_genes(adata, flavorseurat_v3, n_top_genes2000, batch_keysample_id) # 标准化数据 (对数化) sc.pp.normalize_total(adata, target_sum1e4) sc.pp.log1p(adata) # 使用Scanpy进行批次校正 (Harmony或BBKNN也是可选方案) # 这里简单使用Combat进行演示实际推荐使用Harmony等更稳健的方法 sc.external.pp.combat(adata, keysample_id) # # 3. 构建分子邻域矩阵 # # Squidpy的核心功能之一是构建空间邻接图 # 这里我们使用基于表达相似性的方法构建邻接关系而非单纯的物理距离 # 计算空间邻域图 # spatial_key: 指定空间坐标在obs中的位置 # n_neighs: 邻居数量 # coord_type: grid 适用于Visium规则阵列 sq.gr.spatial_neighbors( adata, coord_typegrid, n_neighs6, spatial_key[array_row, array_col] ) # 计算基于表达相似性的邻域矩阵 (Niche分析的关键) # 这里利用squidpy的graph功能结合表达谱距离 # 注意标准的spatial_neighbors主要基于坐标若要纯基于分子相似性可使用sc.pp.neighbors # 但为了结合空间约束我们通常使用spatial_neighbors后利用表达信息进行聚类或计算相关性 # 这里演示计算邻域内的基因表达相关性分子Niche特征 # 这一步会计算每个Spot与其空间邻居的基因表达相关性作为该Spot的分子环境特征 # 注意实际大规模数据中计算量较大通常选取部分Marker基因 sq.gr.coexpression( adata, modetriangulate, # 基于三角剖分网络 use_rawFalse, layerNone, genesadata.var_names[:100].tolist(), # 仅使用前100个基因作为演示 n_jobs1 ) print(分子邻域共表达矩阵计算完成。) # # 4. 可视化与分析 # # 获取邻接矩阵 adj_matrix adata.obsp[spatial_connectivities] print(f邻接矩阵形状: {adj_matrix.shape}) # 计算空间自相关 (Morans I) 以评估基因的空间聚集性 # 这是验证分子Niche是否具有空间结构意义的重要指标 sq.gr.spatial_autocorr( adata, modemoran, n_perms100, genesadata.var_names[:10].tolist() # 演示前10个基因 ) # 可视化Morans I结果 sc.pl.spatial_scatter( sq.pl.spatial_autocorr(adata, modemoran, cmapviridis, figsize(10, 5)), titleGene Spatial Autocorrelation (Morans I) ) # 对分子邻域特征进行聚类识别不同的分子Niche # 使用之前计算的表达矩阵进行降维和聚类 sc.tl.pca(adata) sc.pp.neighbors(adata) sc.tl.leiden(adata, resolution0.5) # 可视化聚类结果 (分子Niche图谱) sc.pl.spatial_scatter( adata, color[leiden, sample_id], size1.5, titleMolecular Niche Clustering (Integrated Samples) )四、 代码解析与策略说明数据整合代码中使用了sc.external.pp.combat或推荐使用Harmony/BBKNN对多样本进行批次校正。这是构建分子邻域矩阵的前提确保不同样本间的基因表达具有可比性避免批次效应掩盖真实的生物学差异 。空间邻域构建sq.gr.spatial_neighbors是构建邻接矩阵的核心函数。对于Visium数据设置coord_typegrid非常重要因为它能准确处理六边形点阵的空间拓扑关系。生成的spatial_connectivities矩阵即为我们所需的邻域矩阵 。分子层面的Niche定义为了从分子角度定义Niche代码进一步使用了sq.gr.coexpression或结合PCA/Leiden聚类。这意味着我们不仅看物理邻居还看这些邻居在基因表达上是否具有协同模式。通过聚类sc.tl.leiden我们将具有相似分子邻域特征的Spot归为一类从而定义出“分子Niche” 。空间统计验证通过sq.gr.spatial_autocorr计算Morans I指数可以量化基因在空间上的聚集程度。高Morans I值的基因意味着其在特定分子邻域中富集验证了分子邻域分析的生物学意义 。通过上述流程研究者可以在多样本整合的基础上利用分子邻域矩阵分析揭示组织内部复杂的、功能特异性的微环境结构。参考来源10X空间转录组Visium HD Xenium分析全更新空间转录组多样本niche的比较分析Visium Xenium HD空间转录组 × 单细胞联合分析实操指南从数据质控到空间通讯可视化含 Squidpy/Giotto 代码模板5分钟搞定用Squidpy和AnnData处理Visium空间转录组数据的完整流程空转_单样本基于pythonsquidpy 教程 1在 AnnData 和 Squidpy 中导入空间数据