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
重要:不要直接在base里装R和Seurat。我曾经图省事在base里搭完环境,半年后另一个项目需要Python 3.8,一升级就把R包全搞崩了。独立环境是底线。

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 环境整体结构一览

整个搭建流程可以归纳为下图,你可以照着走,不会迷路。

Seurat自动管道环境搭建流程图 环境搭建流程 安装 Miniconda conda create -n seurat_pipe conda install r-base=4.2.3 r-seurat=4.3.0 conda install snakemake=7.32.4 验证:snakemake --version 每个步骤若出错 检查conda channel

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自动关联,无需手动指定
我的踩坑记录:有次我从bioconda装Snakemake,没指定版本,结果装到了8.2.0。新版本改了部分rule语法,我原来写的Snakefile全部报错。所以请务必锁定 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 脚本,每次在新机器上搭建时直接运行,过一遍就看到所有缺失项。