第三章 环境搭建:安装 Python 包
搞空间转录组分析的人都知道,环境配不好,后面全白搭。Slide-seq 的数据量大,用的工具链也杂——单细胞分析的、空间专用的、甚至还有图神经网络和贝叶斯模型。我见过不少同学在安装环节卡两三天,最后发现是 PyTorch 版本不对。所以这一章,咱们一步到位,把所有的 Python 包装好、测通。
3.1 准备工作:Python 与虚拟环境
我个人的习惯是:每个项目配一个干净的虚拟环境。别偷懒直接把包装到 base 里,包冲突的滋味我可尝过。建议用 conda,因为它对非 Python 依赖(比如 HDF5、GEOS)处理得比 pip 好。
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 才能装它。
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 改名的坑。
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 scanpy | anndata, umap |
| Squidpy | 空间邻域与图像分析 | pip install squidpy | napari, scikit-image |
| SpaGCN | 图神经网络空间聚类 | pip install SpaGCN | PyTorch, torch_geometric (可选) |
| Giotto | 空间统计与可视化 | pip install giotto | rpy2, matplotlib |
| SpatialDE | 空间可变基因检测 | pip install spatialde | PyStan, 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。