1、Squidpy简介与安装:Squidpy库概述、应用场景、安装配置
聊到空间转录组数据分析,Squidpy 是个绕不开的工具。我第一次接触它是在处理一个脑组织切片的数据,说实话,当时被数据规模搞得有点懵。后来发现 Squidpy 把很多底层逻辑都封装好了,你想想看,原本需要手撸几十行 scipy 代码才能算出来的空间自相关,现在几行配置就能搞定,确实省心不少。
这一章,我们先搭个底,聊聊 Squidpy 是什么、能用在哪些地方、以及怎么把环境配起来。我个人习惯是把基础夯实了再往上走,这样后面调参的时候心里才有底。
1.1 Squidpy库概述
Squidpy 是一个基于 Python 的框架,专门用来解析空间转录组数据。说白了,它不仅告诉你细胞里基因表达量有多高,还能告诉你这些细胞在物理空间上是怎么"社交"的。
Squidpy 的核心优势在于它将传统的扫描图像处理与单细胞转录组分析无缝衔接了起来。
它主要由两个模块构成:
- sq.gi (图像模块):负责处理组织切片图像,比如细胞分割、形态学特征提取。我在项目中发现,图像质量的把控往往是分析成败的第一步。
- sq.gr (邻域模块):负责构建空间邻域图、计算空间自相关基因、分析细胞-细胞相互作用。这也是我们这个课程要深挖的核心。
你可能会问,有了 Scanpy 为什么还要用 Squidpy?其实 Squidpy 是建立在 Scanpy 的 AnnData 对象之上的,相当于给标准单细胞流程加上了空间维度。你以前用的 umap、聚类、差异分析这些操作,在 Squidpy 里依然管用,完全不需要从头学起。
1.2 核心应用场景
在实际的生物医学研究中,Squidpy 主要解决这几类问题:
| 场景 | 描述 | 我的经验 |
|---|---|---|
| 组织微环境解析 | 识别肿瘤边界免疫抑制区 | 我经手的数据里,Squidpy 找出的三级淋巴结构边缘富集特征,后续都通过染色验证了 |
| 配体-受体互作 | 推断细胞间通信 | 单纯看配体表达会漏掉很多信息,加上距离约束会更可靠 |
| 空间可变基因 | 筛选具有空间模式的基因 | Squidpy 的 moran 检验是我团队做预筛选的首选项 |
空间分析很容易产生假阳性。我曾经因为没做置换检验,差点把一个随机分布基团当作空间热点去验证,幸亏后来补做了显著性检验才避免踩坑。
1.3 安装与配置
我们开始动手吧。我个人最推荐用 conda 创建独立环境来安装,这样可以避免依赖冲突。
conda create -n squidpy_env python=3.9
conda activate squidpy_env
然后通过 pip 安装 Squidpy:
pip install squidpy
如果你是在 M1/M2(ARM 架构)的设备上跑,安装 napari 等可视化组件时可能会踩坑。我建议这样安装:
CONDA_SUBDIR=osx-arm64 conda create -n squidpy_env python=3.9
conda activate squidpy_env
conda install -c conda-forge napari
pip install squidpy[interactive]
装完之后,记得验证一下。我习惯跑一个简单的导入测试,确保所有核心模块都能正常加载。
import squidpy as sq
print(sq.__version__)
# 检查关键模块
print(sq.gr)
print(sq.gi)
如果能正常打印出版本号和模块路径,那环境就算是配好了。你想想看,这一步虽然基础,但架不住很多人在配环境上花掉半天时间,提前用 conda list 核对一下依赖会稳妥很多。