3. Seurat包简介、安装与加载
聊到单细胞分析,Seurat 是绕不开的工具。我个人习惯把它叫做「单细胞分析的瑞士军刀」。它由纽约基因组中心开发,是目前使用最广的 R 包之一。
但你真的会用这个包吗?我见过不少同学,直接 install.packages 一把梭,然后被依赖环境折磨得想放弃。嗯,这章我们来捋清楚。
什么是 Seurat?
Seurat 是一个基于 R 语言的单细胞数据分析工具包。它涵盖了从原始数据 QC、标准化、降维、聚类到差异表达分析的全部流程。
说白了,你的单细胞测序数据是一堆混乱的基因表达矩阵。Seurat 就是帮你把这些信息提取出来,告诉你「这个细胞属于什么类型」。我在项目中遇到过很多次,用 Seurat 分析出的细胞类型,和病理切片的结果高度吻合——这感觉确实不错。
为什么选择 Seurat?
- 数据格式统一:所有分析都基于
SeuratObject,结构清晰 - 分析流水线完整:从读数据到出图,一站式搞定
- 社区活跃:教程、Q&A 特别多,遇到坑很容易找到解法
- 兼容性好:能对接其他工具(如 Monocle、CellChat)
安装前准备
安装 Seurat 之前,有三样东西你要先备好。我曾经在 Rtools 上踩过坑,所以特别提一下。
| 依赖项 | 说明 | 检查方式 |
|---|---|---|
| R 版本 | 建议 ≥ 4.0,推荐 4.2 及以上 | R.version.string |
| Rtools | Windows 用户必须装,负责编译 C/C++ 代码 | find_rtools() |
| BiocManager | 用于安装 Bioconductor 的依赖包 | install.packages("BiocManager") |
安装 Seurat
Seurat 的安装主要分两种方式。我个人更推荐第二种——开发版通常包含了最新的功能修复。
从 CRAN 安装
这是最简单的方法,适合快速上手。
install.packages("Seurat")
从 GitHub 安装开发版
如果你想要最新功能,或者遇到了 bug 想看看是否已修复,可以直接装开发版。
# 先安装 devtools
install.packages("devtools")
# 再安装 Seurat 开发版
devtools::install_github("satijalab/seurat", ref = "develop")
options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
加载与验证
安装完成后,加载 Seurat 并验证版本。这一步看着简单,但能帮你避开很多「咦,我明明装了为什么找不到?」的尴尬。
library(Seurat)
packageVersion("Seurat")
如果输出类似 [1] '5.0.1' 这样,说明安装成功了。
但你还要确认一点:Seurat 对象的数据结构是否正确加载?可以试一下:
# 创建一个空 Seurat 对象看看
pbmc_small <- pbmc_small
class(pbmc_small)
应当输出 [1] "Seurat"。嗯,到这步基本就稳了。
依赖环境配置
Seurat 的依赖包比较多,尤其是涉及到降维和可视化的部分。我把常用的几个核心依赖整理了一下:
| 包名 | 用途 | 来源 |
|---|---|---|
| Matrix | 稀疏矩阵运算 | CRAN |
| ggplot2 | 数据可视化 | CRAN |
| patchwork | 拼图组合 | CRAN |
| Rcpp | 底层计算加速 | CRAN |
| future | 并行计算 | CRAN |
| SingleCellExperiment | 与其他工具桥接 | Bioconductor |
Error: package or namespace load failed,多半是某个依赖包没装或版本冲突。你可以用 remove.packages() 干掉冲突包,再重新安装。我踩过这个坑,折腾了一个下午才搞定。常用配置:并行与内存
单细胞数据量通常很大。你想想看,一个 10x 样本可能就是 2-3 万基因 × 5000 细胞。跑起来很慢怎么办?我个人建议开启多线程。
# 开启并行计算
library(future)
plan("multisession", workers = 4) # 4 核心并行
# 设定最大内存(以 GB 为单位)
options(future.globals.maxSize = 8 * 1024^3) # 8GB
这样设置后,Seurat 的很多计算步骤会自动利用多核加速。我之前用 4 核跑 5000 个细胞,速度提升了 3 倍多。
本章知识体系
下面这张图帮你快速理清本章内容结构:
常见问题与避坑
- 版本冲突:如果你已经装了旧版 Seurat,建议先卸载再装新版。
remove.packages("Seurat") remove.packages("SeuratObject") install.packages("Seurat") - 编译失败:通常跟 Rtools 有关。Windows 用户一定要确认 Rtools 路径加进了系统环境变量。
- 内存不足:单细胞数据很占内存。如果你的数据量大(比如超过 10000 个细胞),建议用
future配合plan("multicore")或者直接上服务器。
Read10X() 函数读取数据。后面章节我会详细讲这一步怎么玩。