2. 环境搭建:安装R、Seurat、Snakemake、conda
环境搭建这事儿,看着简单,其实最容易卡住人。我见过不少同行在第一步就装错了R版本,导致后面所有包都没法跑。所以我们先把地基打牢。
说白了,咱们这套管道依赖三个核心:R + Seurat(分析引擎)、Snakemake(流程引擎)、conda(环境管理器)。你想想看,要是混着装,半年后没人知道哪个包属于哪个项目。所以第一步就是装好conda,用它隔离一切。
2.1 安装 Miniconda
推荐用Miniconda,不要装Anaconda全套。轻量,够用,少很多包冲突问题。
# Linux / macOS
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p ~/miniconda3
~/miniconda3/bin/conda init
# 完成后重启终端,或者 source ~/.bashrc
我曾经在一台内存只有8GB的服务器上装了Anaconda,结果光base环境就占了好几个G,跑管道时swap直接撑爆。换成Miniconda后,内存压力小了很多。
-b -p 指定路径,静默安装不啰嗦。之后记得跑一次 conda config --set auto_activate_base false,避免每次进终端都激活base,影响其他项目。
2.2 创建独立环境
我们为这个课程创建一个专属环境,一次配好,到处重用。
conda create -n seurat_pipe python=3.9
conda activate seurat_pipe
2.3 安装 R 与 Seurat
conda可以直接装R,而且会自动处理系统依赖(比如gcc、glibc)。这是最省心的方式。
conda install -c conda-forge r-base=4.2.3
conda install -c conda-forge r-seurat=4.3.0
conda install -c conda-forge r-ggplot2 r-dplyr r-matrix
注意版本对应:Seurat 4.3.x 要求R ≥ 4.1,你装4.2.3比较稳。装完后验证一下:
R -e "library(Seurat); packageVersion('Seurat')"
如果看到版本号,说明R和Seurat都就绪。否则检查一下conda channel的源。
install.packages() 在R内装Seurat,结果编译时缺少系统工具 gfortran,折腾了一下午。用conda安装,它把所有系统依赖都打包好了,省心。
2.4 安装 Snakemake
Snakemake 用 conda 安装非常方便,它会自动处理好snakemake-minimal和所有依赖。
conda install -c bioconda -c conda-forge snakemake=7.32.4
装完后验证:
snakemake --version
输出 7.32.4 就对了。
我推荐你同时装个 snakemake-executor-plugin-cluster-generic,以后扩展到HPC集群时会用上:
conda install -c bioconda snakemake-executor-plugin-cluster-generic
2.5 环境整体结构一览
整个搭建流程可以归纳为下图,你可以照着走,不会迷路。
2.6 版本对照表
不同项目可能依赖不同版本。下表是当前经过验证的稳定组合,如果后续课程跑不通,先回来对照这个表。
| 组件 | 推荐版本 | 备注 |
|---|---|---|
| Python | 3.9 | 兼容性最好,3.10+ 某些R包编译有坑 |
| R | 4.2.3 | conda-forge channel |
| Seurat | 4.3.0 | 如果要用4.4.x,需要R ≥ 4.3 |
| Snakemake | 7.32.4 | 7.x 系列稳定,8.x API有破坏性变更 |
| cmoore / hdf5 | 系统默认 | conda自动关联,无需手动指定 |
snakemake=7.32.4。
2.7 验证完整环境
最后,跑一个快速脚本确认所有工具都可用。
# 在 seurat_pipe 环境中执行
python -c "import sys; print(sys.version)"
R --version | head -1
snakemake --version
R -e "library(Seurat); message('Seurat loaded successfully')"
如果出现任何 not found 或 package 'Seurat’ not available,就回到前面检查哪一步没装对。
check_env.sh 脚本,每次在新机器上搭建时直接运行,过一遍就看到所有缺失项。