Seurat 简介与安装

单细胞 RNA 测序(scRNA-seq)数据分析这些年火得不行,各种工具层出不穷。但要说生态最成熟、社区最活跃的,Seurat 绝对排第一。我刚开始接触单细胞时,第一反应也是“装个 Seurat 开干”。嗯,这里头有不少门道,如果一开始装错了版本或者漏了依赖,后面会掉进各种坑里。这节课我们先聊清楚 Seurat 是什么、怎么装、版本怎么选,把第一步走稳。

Seurat 的功能定位

Seurat 不是某个单一算法,而是一整套分析框架。从读数据、质控、标准化、降维、聚类到差异表达、可视化,甚至整合多个样本批次效应校正,它全都包了。说白了,你拿到一个标准的 10x 数据之后,90% 的常规分析可以用 Seurat 一条龙搞定。

我个人习惯把 Seurat 视为单细胞分析的“瑞士军刀”。它提供了几个核心模块:

  • 数据读写与预处理:支持 10x Genomics、smart-seq、Drop-seq 等多种平台输出格式。
  • 质控与过滤:基于基因数、UMI 数、线粒体比例等指标快速筛选细胞。
  • 标准化与变量基因选择:内置 LogNormalize、SCTransform 等方法。
  • 降维与聚类:PCA、t-SNE、UMAP 高度集成。
  • 整合与批次校正:经典的 i 锚定法(FindIntegrationAnchors + IntegrateData)。
  • 差异表达与功能注释:FindMarkers、AddModuleScore 等。
模块 主要函数/方法 典型用途
数据输入 Read10X, CreateSeuratObject 读取 10x 输出文件
标准化 NormalizeData, SCTransform 消除测序深度差异
降维 RunPCA, RunUMAP 降低数据维度
聚类 FindNeighbors, FindClusters 识别细胞亚群
整合 FindIntegrationAnchors, IntegrateData 多样本批次效应校正

如果你经常做整合分析,我建议优先使用 SCTransform 做标准化,它能保留更多生物学变异。我曾遇到过标准归一化后整合效果不佳,换成 SCT 后结果明显改善。

安装方式与依赖关系

Seurat 目前通过 CRAN 和 Bioconductor 分发,最稳定的方式是直接从 CRAN 安装。不过它依赖的底层包很多,像 dplyr、ggplot2、Matrix、Rcpp 这些。如果 R 版本较旧,可能会报依赖不满足的错误。

我个人的标准安装命令是:

install.packages("Seurat")

但这行命令背后会拉下来一大串依赖。我通常还会单独安装一个常用附加包:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("multtest")
BiocManager::install("presto")

如果你需要最新的开发版(比如修复了某个 bug),可以用 GitHub 版本:

install.packages("devtools")
devtools::install_github("satijalab/seurat", ref = "develop")

注意:开发版可能不稳定。有一次我为了一个新功能装了 develop 版,结果某个旧脚本里的整合函数参数变了,折腾了一天才改回来。生产环境建议用 CRAN 版。

依赖关系速览

Seurat 强依赖的包超过 50 个,核心的包括:

  • Matrix:稀疏矩阵存储,数据量一大就靠它。
  • Rcpp / RcppArmadillo:C++ 底层加速,计算距离和聚类时效率高。
  • dplyr / tidyr:数据框操作,后续处理元数据常用。
  • ggplot2:可视化基础。
  • future.apply:并行计算支持。
  • fitdistrplus:SCTransform 中做负二项分布拟合时用到。

下面这张表列出了几个常见场景下的依赖需求:

功能 所需额外包 安装建议
标准分析 Seurat 自带 install.packages("Seurat")
SCTransform glmGamPoi (可选) BiocManager::install("glmGamPoi")
整合分析 Seurat 自带 同上
并行计算 future Seurat 自动加载
富集分析 clusterProfiler, enrichR 单独安装

版本选择与 R 版本兼容性

Seurat 版本迭代很快,从 v3 到 v4 再到现在的 v5,每次大版本更新都会改一部分 API 和底层数据结构。我建议选 LTS(长期支持)版本,比如当前 CRAN 上的 5.1.x 系列。如果你用的是 R 4.2 以下,可能需要降级到 Seurat v4。

常见的版本对应关系:

  • Seurat v5:支持 R >= 4.2,推荐 4.3 或 4.4。
  • Seurat v4:R >= 4.0,兼容 4.1/4.2。
  • Seurat v3:R >= 3.6,现在基本不维护了。

💡 我的建议:用 R 4.3.x + Seurat v5.x,这是目前最稳的组合。我曾经因为图省事用旧 R 配新 Seurat,结果编译 Rcpp 包时一直报错,白白浪费一下午。

如果你团队里有人用旧版代码,可以先检查一下 Seurat 版本:

packageVersion("Seurat")
# 返回像 ‘5.1.0’ 这样的版本号

升级前务必先看看 Seurat 官方 NEWS(不开链接,此处仅为描述),里面会把每个版本的变动列清楚,特别是有没有改默认参数。

Seurat 在单细胞分析流程中的位置

下面这张图帮你看清 Seurat 在整个 scRNA-seq 分析流程里扮演的角色:从原始数据进门,到最终输出可发表的结果,它占据了中间 80% 的活儿——但也还是要配合其他工具做初步质控和后期注释。

Seurat 在单细胞分析流程中的位置 原始数据 质控过滤 Seurat 核心分析 标准化 · 降维 · 聚类 结果输出 Seurat 覆盖范围 归一化 · 变量基因选择 · PCA · t-SNE/UMAP · 聚类 差异表达 · 整合 · 模块评分 外部工具补充:CellRanger(定量)、DoubletFinder(双细胞检测)、Scrublet(同上) 输入数据格式 10x H5 / MEX CSV / 稀疏矩阵 可选增强包 SeuratDisk · SeuratWrappers Signac(scATAC-seq) (可选)外部质控

看完这张图你应该明白:Seurat 不负责最原始的定量(比如 CellRanger 那一步),也不需要你手写合并表格的代码——它把中间最繁琐的分析流程封装成了可复用的漂亮流水线。

避坑指南:安装常见问题

  • Rcpp 编译失败:常见于 Windows 系统缺少 Rtools。解决方案:安装匹配 R 版本的 Rtools 并添加到 PATH。我曾因为换了新电脑忘了装 Rtools,直接 install.packages("Seurat") 报了一堆红字。
  • 依赖包版本冲突:尤其是 dplyr 和 Matrix。建议先升级 R 到最新版,然后用 install.packages("Seurat") 一次性安装所有依赖。
  • 网络下载超时:中国用户常见。可以设置镜像:options(repos = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")。
  • 安装后加载报错:比如 Error: package or namespace load failed。检查是否需要重启 R 会话,或重新安装特定冲突包:remove.packages("Seurat") 再重装。

注意:绝对不要在 .libPaths() 中有同名包的不同版本,比如 /usr/lib 和 ~/R 目录各有一个旧版 Seurat。我以前吃过这个亏,每次 modifyLSI 函数都找不到参数,排查了半天才发现有两个 Seurat。