第三章 环境搭建:安装 Python 包

搞空间转录组分析的人都知道,环境配不好,后面全白搭。Slide-seq 的数据量大,用的工具链也杂——单细胞分析的、空间专用的、甚至还有图神经网络和贝叶斯模型。我见过不少同学在安装环节卡两三天,最后发现是 PyTorch 版本不对。所以这一章,咱们一步到位,把所有的 Python 包装好、测通。

3.1 准备工作:Python 与虚拟环境

我个人的习惯是:每个项目配一个干净的虚拟环境。别偷懒直接把包装到 base 里,包冲突的滋味我可尝过。建议用 conda,因为它对非 Python 依赖(比如 HDF5、GEOS)处理得比 pip 好。

我推荐的环境配置:Python 3.9,conda 23.x 以上。Python 3.10 某些包的二进制支持还不全,别给自己找麻烦。
conda create -n slide_seq python=3.9
conda activate slide_seq

执行完这两行,你的环境名字就叫 slide_seq。后面所有安装都在这个环境里做。

3.2 核心工具:Scanpy 和 Squidpy

你想想看,Slide-seq 本质上还是单细胞数据,只是多了空间坐标。所以 Scanpy 是必须的,它处理 AnnData 对象、归一化、聚类这些基本功都靠它。Squidpy 是 Scanpy 的嫡系空间扩展,专门处理邻域分析、组织学图像。

pip install scanpy squidpy

这两行能干完大部分依赖。如果你网络慢,可以用清华镜像:

pip install scanpy squidpy -i https://pypi.tuna.tsinghua.edu.cn/simple

我在项目中遇到过:Scanpy 的版本更新很快,1.9 和 1.10 的某些 API 有细微变化。建议锁定版本:pip install scanpy==1.9.8。我踩过坑,1.10 之后 sc.tl.leiden 的默认参数变了,下游代码得改。

装完可以检验一下:

python -c "import scanpy as sc; import squidpy as sq; print(sc.__version__, sq.__version__)"

3.3 空间专有工具:SpaGCN、Giotto、SpatialDE

SpaGCN

这个包用图卷积网络做空间域识别,效果不错。但它依赖 PyTorch,你得先装好 PyTorch 才能装它。

注意:PyTorch 要按你的 CUDA 版本选装。如果你没有 GPU,装 CPU 版就行:pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu。我曾经装成 GPU 版但没驱动,训练时一直报错,查了半天才发现。
# 首先确保 PyTorch 装好(以CUDA 11.8为例)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 然后安装 SpaGCN
pip install SpaGCN

装好后可以用 python -c "import SpaGCN; print('OK')" 测试。

Giotto

Giotto 是空间转录组的老牌工具,有 R 版和 Python 版。课程里我们用 Python 版本,它封装了空间可视化和统计检验。安装很简单:

pip install giotto

不过要注意,Giotto 的 Python 版还在快速迭代,建议用 pip install giotto==0.6.0 这类固定版本。我遇到过新版把某个 API 改名的坑。

避坑指南:如果你之后跑 Giotto 的 createGiottoObject 时报错 No module named 'rpy2',别慌,那是它内部调用了 R 接口。装个 pip install rpy2 就解决了。

SpatialDE

SpatialDE 用贝叶斯方法找空间可变基因。它依赖 PyStan,而 PyStan 又需要系统层面有 C++ 编译器。Windows 用户容易在这卡住。

pip install spatialde

如果一个包一个包装,可以用这个组合命令:

pip install scanpy squidpy SpaGCN giotto spatialde

但实际上我建议分开装,因为 SpaGCN 的依赖(PyTorch)可能和别的不兼容,分开容易定位问题。

包名用途安装命令重点依赖
Scanpy单细胞数据基础处理pip install scanpyanndata, umap
Squidpy空间邻域与图像分析pip install squidpynapari, scikit-image
SpaGCN图神经网络空间聚类pip install SpaGCNPyTorch, torch_geometric (可选)
Giotto空间统计与可视化pip install giottorpy2, matplotlib
SpatialDE空间可变基因检测pip install spatialdePyStan, numpy

3.4 一次性验证脚本

装完所有包之后,我习惯跑一个完整性验证脚本,确保每个包都能正常导入。

import scanpy as sc
import squidpy as sq
import SpaGCN
import giotto
import spatialde

print("Scanpy    :", sc.__version__)
print("Squidpy   :", sq.__version__)
print("SpaGCN    :", SpaGCN.__version__)
print("Giotto    :", giotto.__version__)
print("SpatialDE : OK (no __version__)")
print("All packages installed successfully!")

如果全都打印了版本号,说明环境搭好了。如果某一步报错,看报错信息定位:PyTorch 问题先重装;rpy2 问题装系统 R 环境;PyStan 问题装 GCC 或 MSVC。

环境搭建流程 创建虚拟环境 安装基础包 安装空间包 conda create -n slide_seq python=3.9 pip install scanpy pip install squidpy pip install SpaGCN pip install giotto pip install spatialde 验证:import 全部包
我曾经遇到过一个典型案例:一位同学装 SpaGCN 时没先装 PyTorch,pip 自动装了 CPU 版 torch,但是版本太旧(1.8),导致后面跑模型时一直报 RuntimeError。所以我建议:先手动装 PyTorch 指定版本,再装 SpaGCN。顺序别搞反。