1、Seurat 简介与安装
1.1 Seurat 是什么?
Seurat 是单细胞 RNA 测序数据分析的「瑞士军刀」。说白了,它就是一套集成在 R 语言里的工具包,帮你从原始计数矩阵一路处理到漂亮的热图、UMAP 和差异表达基因列表。我个人习惯把 Seurat 拆成三个模块来看:
- 数据预处理:过滤、标准化、找高变基因
- 降维与聚类:PCA、UMAP、t-SNE、Louvain 聚类
- 差异表达与可视化作图:FindMarkers、热图、小提琴图
我最早接触单细胞时用的是 scanpy(Python 那套),但后来发现 Seurat 在社区生态、文档完善度和可视化定制的灵活性上更胜一筹。尤其是它内置的 DoHeatmap 函数,改起来比 matplotlib 舒服多了。
1.2 安装 Seurat,三步走
安装其实不复杂,但有几个坑我踩过,等下会专门说。先看标准流程:
- 安装 R(≥ 4.0)和 RStudio(推荐,用命令行也行)
- 安装 BiocManager(用来从 Bioconductor 拿依赖包)
- 安装 Seurat 本体
打开 R 或 RStudio 的 console,敲下面这些:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
# 安装 Seurat 主体
install.packages("Seurat")
等一下,这里有个细节:上面的命令只装 Seurat 核心包。但如果你想用 FindMarkers 的热图功能、或者做空间转录组分析,还需要额外拉一些依赖。我一般直接装完整套件:
# 一次性拉齐所有常用依赖(包括 harmony、slingshot 等)
install.packages("Seurat")
BiocManager::install(c("multtest", "MAST", "DESeq2", "scran", "batchelor"))
为什么装这么多?因为 Seurat 的差异表达测试可选多种方法:wilcox(默认)、MAST、DESeq2、SCDE 等。如果你只装默认,换成 MAST 方法时就会报错。嗯,我最初就吃了这个亏。
1.3 依赖包配置——一张表说清楚
我个人习惯在项目根目录建一个 setup.R 文件,把所有包引用集中写。下面这张表记录了 Seurat 常用的依赖及其用途:
| 包名 | 作用 | 来源 |
|---|---|---|
| Seurat | 主包:QC、归一化、降维、聚类、差异表达 | CRAN |
| SeuratObject | 数据容器与内存管理(Seurat v5 独立出来) | CRAN |
| ggplot2 / ggridges | 可视化扩展(小提琴图、山脊图) | CRAN |
| MAST | 基于混合模型的差异表达方法 | Bioconductor |
| DESeq2 | 基于负二项模型的差异表达(适用于 bulk 扩展) | Bioconductor |
| multtest | 多重检验校正 | Bioconductor |
| scran / batchelor | 替代的归一化与批次校正(Seurat 可选) | Bioconductor |
| hdf5r / rhdf5 | 读取 10X HDF5 格式原始数据 | CRAN / Bioconductor |
如果你只想跑最基础的 Seurat 流程,装 Seurat + MAST + multtest 就够了。但我会建议把 hdf5r 也装上——因为 10X 最新版数据很多是 .h5 格式,没它读不了。
packageVersion("Seurat") 检查版本。v5 版的 FindMarkers 参数名略有变化,比如 logfc.threshold 改成了 log2FC?不,v5 其实保留了旧参数,但新增了 layer 参数。建议用 v5 的最新版,向下兼容性做得不错。
1.4 避坑指南——我踩过的三个坑
安装过程其实很少卡住,但如果你碰到下面几种情况,别慌:
- “package ‘Seurat’ is not available for this version of R” —— 八成是 R 版本太旧。升级到 R 4.2+ 就行。
- 安装 MAST 时编译报错 —— Windows 用户需要先装 Rtools,macOS 用户可能要装 Xcode Command Line Tools。我曾在 macOS 上卡了半小时,后来发现是
gfortran没装。 - SeuratObject 和 Seurat 版本不匹配 —— 如果你手动装了旧版 SeuratObject,新版 Seurat 会报错。解决办法:
remove.packages("SeuratObject"),然后重新装 Seurat,它会自动拉正确版本。
我曾经遇到过一个更隐蔽的问题:服务器上 R 用户权限不足,装不了系统库。最后用 install.packages("Seurat", lib = "~/R_libs") 指定个人目录解决。如果你也碰到权限问题,记得设置 .libPaths()。
install.packages 直接装 Bioconductor 的包,必须走 BiocManager::install,否则可能依赖冲突。
1.5 Seurat 核心生态——一张图看懂
下面这张 SVG 图把 Seurat 在整个单细胞分析流程中的位置和主要模块关系画了出来。你想想看,数据从 10X 下机开始,经过 Seurat 处理,最后产出热图、UMAP 和差异基因列表——其实就是这个流程。
1.6 安装后快速验证
装完了别急着退出,跑个最小测试:
library(Seurat)
# 查看版本
packageVersion("Seurat")
# 加载内置示例数据
pbmc_small <- SeuratData::LoadData("pbmc_small")
# 如果上面报错,说明 SeuratData 没装,也可以用下面这个:
data("pbmc_small", package = "SeuratObject")
# 查一下数据结构
pbmc_small
如果没有报错,恭喜你,环境配置完毕。如果 SeuratData 装不上,就改用 data("pbmc_small", package = "SeuratObject")——v5 版本把示例数据挪到了 SeuratObject 包里。我在一个同事的电脑上就遇到过这个问题,他死活找不到 pbmc_small,最后发现是包名敲错了。