3. 环境配置

环境配置这件事,说实话是很多人在空间转录组分析路上翻的第一个跟头。我见过不少同学拿到数据后急着跑分析,结果因为依赖冲突折腾一整天,最后还得从头配环境。

今天我就带大家一步步搭好这个环境。你别看这一步简单,配置得好,后面几十个章节你会跑得特别顺。

3.1 为什么我们需要一个干净的虚拟环境?

Python包管理有个特点——依赖嵌套。比如Scanpy依赖anndata,anndata又依赖h5py和numpy。你在系统环境里装了一堆包,很可能某个包版本不对,导致Visium分析跑不起来。说白了就是为了保证不同项目之间互不干扰。

我个人习惯用conda来管理虚拟环境。原因很简单:conda不仅能装Python包,还能装一些非Python的依赖库,比如HDF5、zlib这些C库。你如果用pip,有时候还得手动去处理系统级的依赖,非常麻烦。

核心原则:每个项目一个独立虚拟环境,互不污染。

3.2 安装Miniconda

如果你还没有装conda,我建议装Miniconda而不是Anaconda。Miniconda更轻量,只带核心功能,后面需要什么包再装什么包。比如你在服务器上跑分析,Miniconda只有几百兆,Anaconda却有几个G,你想想看。

安装步骤很直接:

# Linux 或 macOS
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

# 安装过程中一路 yes,最后记得 source ~/.bashrc 激活

嗯,这里有个细节要注意——安装路径。我建议放在家目录下的 ~/miniconda3,这样不会跟系统Python冲突。记得之前有个学员把conda装到系统root,结果更新系统包时把conda搞崩了,惨不忍睹。

3.3 创建并激活虚拟环境

现在我们来创建一个叫 visium 的环境:

# 创建环境,指定Python版本为3.9
conda create -n visium python=3.9 -y

# 激活环境
conda activate visium

为什么选Python 3.9?我实测过,Scanpy 1.9.x和Squidpy 1.2.x在3.9上跑得最稳。3.10以上版本虽然在兼容性上没问题,但有些底层包比如leidenalg(用于聚类)在3.9上构建更成熟。你如果非要追新,那就用3.10,但出问题别怪我事先没提醒啊。

小技巧:输入 conda env list 可以查看当前已有的所有虚拟环境。当前激活的环境前面会有一个 * 标记。

3.4 安装核心包:Scanpy与Squidpy

这两个是Visium分析的主力。Scanpy负责单细胞水平的分析流程,Squidpy则专门处理空间转录组数据,比如图像处理、空间自相关分析、邻域分析等。我当时第一次接触Visium数据,就是先跑Scanpy做质量控制,然后用Squidpy看基因在组织切片上的空间分布模式。二者配合使用,效果非常棒。

安装命令如下:

# 安装Scanpy
conda install -c conda-forge scanpy -y

# 安装Squidpy
conda install -c conda-forge squidpy -y

如果网络慢,可以用清华镜像源:

# 配置清华镜像源
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main

# 然后再安装
conda install scanpy squidpy -y

为什么我推荐用conda-forge频道?因为conda-forge里的package构建完整,依赖解析也更准确。我曾经因为用pip直接装Scanpy,结果装到一半卡在h5py上,折腾了一个下午。后来换conda-forge,一分钟搞定。

3.5 安装可视化与数据处理包

matplotlib和pandas估计没人不熟悉。前者用来画图,后者管理数据框。还有几个辅助包也是必备的:

# 核心可视化
conda install matplotlib seaborn -y

# 数据处理
conda install pandas numpy scipy -y

# 其他工具
conda install jupyter ipykernel -y

我个人还习惯装上 tqdm——进度条工具,跑循环时心里有底;还有 numba——加速计算,有些空间分析函数用numba能快几十倍。

conda install tqdm numba -y

是不是装太多了?其实你想想,后面做空间可变基因筛选、邻域分析、染色质结构域识别,哪一步离得开numpy和scipy?一次性装好,省得后面缺包再去装。

3.6 验证安装是否成功

环境配完,总得试一下能不能用。我在命令行里敲一个快速验证脚本:

python -c "
import scanpy as sc
import squidpy as sq
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

print('Scanpy version:', sc.__version__)
print('Squidpy version:', sq.__version__)
print('All packages loaded successfully!')
"

如果输出类似:

Scanpy version: 1.9.6
Squidpy version: 1.2.3
All packages loaded successfully!

那就说明环境配置成了。嗯,这里有个小坑——如果报错说某个模块找不到,多半是依赖冲突或版本不匹配。我处理过很多次,最常见的错误是 ImportError: libhdf5.so.200。解决方法是:

conda install hdf5 -c conda-forge -y

然后重新激活环境即可。其实这就是conda-forge的优势所在——它会把C库的依赖也一并解决。

3.7 配置Jupyter内核

大多数同学喜欢在Jupyter Notebook里交互式分析。我们需要把刚才配好的 visium 环境注册到Jupyter里:

# 安装ipykernel(如果没装的话)
conda install ipykernel -y

# 注册内核
python -m ipykernel install --user --name visium --display-name "Visium (Python 3.9)"

之后打开Jupyter,在Kernel菜单里选择 Visium (Python 3.9) 就行。

注意:如果你用的是VS Code,需要在命令面板里选 Python: Select Interpreter,然后找到 visium 环境。否则用默认的Python解释器,后面所有分析和可视化都跑不了。

3.8 升级还是降级?该用哪个版本?

我在不同项目里试过Scanpy的版本,稳定性和功能上有区别。我把常用版本整理成了表格,方便你参考:

包名 推荐版本 适用场景
Scanpy 1.9.x 通用分析,QC、降维、聚类、Marker基因
Squidpy 1.2.x 空间分析:邻域、自相关、染色质结构域
anndata 0.9.x 数据存储与读写,与Scanpy深度绑定
matplotlib 3.7+ 基础可视化,任何分析都离不开
pandas 1.5+ 数据框操作,管理元数据、表达矩阵

我的建议:直接用 conda install 从conda-forge装上来的版本就行,conda-forge会帮你做好版本兼容性检测。如果非要手动指定版本,可以这么写:

conda install scanpy==1.9.6 squidpy==1.2.3 -y

为什么我要专门说版本号?因为空间转录组分析的包更新很快,有些新版API变了,旧代码就跑不通。我记得有一次Squidpy从1.2升级到1.3,把 sq.gr.spatial_neighbors 的参数改掉了,我差点没排查出来。还是锁定版本比较保险。

3.9 总结:你的环境已准备就绪

走到这里,你的机器上已经有了一个干净、专用于Visium空间转录组分析的Python环境。整个过程就是这样:

  • 安装Miniconda作为包管理器
  • 创建名为 visium 的虚拟环境,Python 3.9
  • 从conda-forge安装Scanpy和Squidpy
  • 辅以matplotlib、pandas、numpy、seaborn等科学计算包
  • 注册为Jupyter内核,方便交互式分析

接下来,我们就要用这个环境来读取真实的Visium数据、做质量控制、降维聚类,直至获得有生物学意义的空间模式。嗯,到那时候你会感谢现在这一套干净的配置——因为后面所有坑,都只会是分析本身的坑,而不是环境的坑。

最终确认:激活环境后运行 conda list,检查每个包的版本是否在推荐范围内。万事俱备,只欠数据!
环境配置核心流程图 1. 安装Miniconda 2. 创建visium环境 3. 安装Scanpy+Squidpy 4. 安装matplotlib pandas/numpy等 5. 验证安装 6. 注册Jupyter内核 便于交互式分析 配置要点 • 使用conda-forge频道,避免依赖冲突 • Python 3.9最稳定,Scanpy 1.9.x + Squidpy 1.2.x推荐组合 • 安装后必须验证:Import + 打印版本号,确保一切正常 • 配置Jupyter内核便于后续交互式分析与可视化 • 锁定版本!避免更新后API变动导致代码报错