首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >空间邻域分析 Neighborhood analysis:Squidpy(IF=32.09)

空间邻域分析 Neighborhood analysis:Squidpy(IF=32.09)

作者头像
生信菜鸟团
发布2025-08-04 09:59:57
发布2025-08-04 09:59:57
23000
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

前面我们分享过空间邻域的概念,见:空间转录组细胞邻域(Cellular Neighborhood)分析。今天来看看实战,使用Squidpy工具进行分析,该软件于2022年1月31号发表在 Nature Methods 杂志上,文献标题为《Squidpy: a scalable framework for spatial omics analysis》。学习的参考教程如下:

https://www.sc-best-practices.org/spatial/neighborhood.html

在对数据集中的细胞类型或细胞状态进行注释后,我们可以量化这些注释是否在空间上富集,并分析组织中的细胞邻域。

细胞邻域分析是各种下游任务的良好起点,因为它有助于理解组织的细胞组成,并识别出可用于更深入分析的候选区域。例如,它可以根据空间邻近性帮助找到细胞间通信的候选区域,或者识别出空间区域和聚类,以便鉴定空间可变基因。

邻域分析通常通过空间统计学进行 [Gelfand et al., 2010],这些是定量评分,可用于识别组织中的空间邻域。在这里,我们将查看在 Squidpy [Palla et al., 2022] 中实现的各种空间统计方法。

环境配置

https://squidpy.readthedocs.io/en/stable/

代码语言:javascript
代码运行次数:0
运行
复制
conda activate sc
pip install squidpy -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple

加载模块:

代码语言:javascript
代码运行次数:0
运行
复制
import scanpy as sc
import squidpy as sq

sc.settings.verbosity = 3
sc.settings.set_figure_params(dpi=80, facecolor="white")

数据读取

示例数据来自:https://support.10xgenomics.com/spatial-gene-expression/datasets/1.1.0/V1_Adult_Mouse_Brain

包内置下载:

代码语言:javascript
代码运行次数:0
运行
复制
adata = sq.datasets.visium_hne_adata()
adata

或者下载后,数据结构如下:

读取:

代码语言:javascript
代码运行次数:0
运行
复制
adata = sc.read_visium(path="../data/V1_Adult_Mouse_Brain/", count_file="V1_Adult_Mouse_Brain_filtered_feature_bc_matrix.h5")
adata

当然这里的信息没有上面的多,还是使用上面那个就好了。

看一下聚类的结果

代码语言:javascript
代码运行次数:0
运行
复制
# 可视化看一眼
import matplotlib.pyplot as plt
# 设置全局绘图大小
plt.rcParams['figure.figsize'] = (10, 10)  # 宽度和高度(单位:英寸)
sc.pl.spatial(adata, img_key = "hires", color="leiden", size=1.2)
# 显示绘图
plt.show()

注释后的信息:

代码语言:javascript
代码运行次数:0
运行
复制
# 可视化看一眼
sc.pl.spatial(adata, img_key = "hires", color="cluster", size=1.2)

识别空间群落之间的相互作用

neighborhood enrichment

在对细胞类型或状态进行注释后,可以通过计算邻域富集度来识别在组织中相邻的簇。富集评分机制

  • 高分:如果一个簇的细胞或点经常靠近另一个簇的细胞或点,则它们的空间邻近性富集评分高,表示富集。
  • 低分:如果细胞或点相距较远,很少相邻,则评分低,表示耗尽。

通过 n_perms 参数设置随机扰动数量(默认值为 1000)。为了进行这种分析,需要计算空间连通性矩阵(a spatial connectivity matrix,空间图),这可以通过 squidpy.gr.spatial_neighbors() 函数完成:

代码语言:javascript
代码运行次数:0
运行
复制
sq.gr.spatial_neighbors(adata)

得到的结果在:

代码语言:javascript
代码运行次数:0
运行
复制
Creating graph using `grid` coordinates and `None` transform and `1` libraries.
Adding `adata.obsp['spatial_connectivities']`
       `adata.obsp['spatial_distances']`
       `adata.uns['spatial_neighbors']`
Finish (0:00:01)

现在可以通过提供 adata.obs 中的注释cluster来运行邻域富集测试,结果为 AnnData 对象中的adata.uns['cluster_nhood_enrichment']

代码语言:javascript
代码运行次数:0
运行
复制
sq.gr.nhood_enrichment(adata, cluster_key="cluster")
adata.uns["cluster_nhood_enrichment"]

添加的对象包含两个数组。第一个存储在 zscore 下,包含每个细胞间相互作用的富集 Z 分数。第二个存储在 count 下,表示富集计数。可以直接使用 squidpy.pl.nhood_enrichment() 来可视化结果:

代码语言:javascript
代码运行次数:0
运行
复制
sq.pl.nhood_enrichment(adata, cluster_key="cluster", method="average", figsize=(5, 5))

上面的图中 Pyramidal_layer 和 Dentate_gyrus 簇在空间上存在富集现象,即这些簇的细胞经常彼此靠近,形成“邻居”关系。通过查看上面的空间散点图,我们可以确认这些簇确实是“邻居”,因为它们的成员通常彼此靠近。

interaction_matrix

类似的方法是计算相互作用矩阵interaction matrix,即组织中簇之间所有连接观测值的总和。这种方法与邻域富集分析有关,但它不是一个检验,而是空间图的一个简单总结统计量。看看这个数据集的相互作用矩阵是什么样子的:

代码语言:javascript
代码运行次数:0
运行
复制
sq.gr.interaction_matrix(adata, cluster_key="cluster")
# Adding `adata.uns['cluster_interactions']`
adata.uns["cluster_interactions"]

# 可视化互作用矩阵
sq.pl.interaction_matrix(adata, cluster_key="cluster", method="average", figsize=(5, 5))

对于这个数据集,大致重现了邻域富集测试,但似乎没有观察到 Pyramidal_layer 和 Dentate_gyrus 簇之间存在特别强烈的相互作用。这种结果可能是:这些簇的观测数量较少,因此相互作用的数量也较低。

Co-occurrence across spatial dimensions

另一种可以在空间坐标中的细胞类型注释上计算的空间统计量是共出现分数co-occurrence score [Palla et al., 2022, Tosti et al., 2021]。共出现分数co-occurrence score为我们提供了一个指示,即簇在组织中随着距离的增加是否共同出现。共现分数的定义是:

其中,P(AB) 是在簇 B 存在的条件下观察到簇 A 的条件概率,而 P(A) 是在感兴趣的半径范围内观察到簇 A 的概率。该分数是在组织中每个观测点(即这里的点)周围逐渐增加的半径范围内计算的。

代码语言:javascript
代码运行次数:0
运行
复制
sq.gr.co_occurrence(adata, cluster_key="cluster")
sq.pl.co_occurrence(adata, cluster_key="cluster", clusters="Cortex_1", figsize=(8, 5))

这里,我们选择可视化 Cortex_1 簇,以展示在近距离下,该簇与其他 Cortex 簇的共同出现情况。

今天分享到这~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境配置
  • 数据读取
  • 看一下聚类的结果
  • 识别空间群落之间的相互作用
    • neighborhood enrichment
    • interaction_matrix
  • Co-occurrence across spatial dimensions
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档