第1章 Seurat入门:单细胞RNA-seq简介、Seurat包概述、安装Seurat及依赖

欢迎来到《Seurat数据标准化实战指南》。这一章我打算先带你把底子打牢——到底什么是单细胞RNA-seq,Seurat这个包能干什么,以及怎么把它装到你电脑上。你想想看,如果连工具都装不好,后面那些标准化、降维、聚类全白搭。所以咱们从最基础的东西开始,不跳步。

1.1 单细胞RNA-seq简介

单细胞RNA测序,说白了就是把一个个细胞拎出来看它们的基因表达。跟传统bulk RNA-seq不同,单细胞能告诉你每个细胞里哪些基因在活跃地转录。我刚开始做这行时,觉得它跟常规转录组没啥区别,直到跑了一次数据看到不同细胞亚群的表达模式,才真正体会到什么叫「分辨率爆炸」。

单细胞数据长什么样?一个标准的输出是UMI count矩阵:行是基因,列是细胞,每个格子代表某个基因在某个细胞中检测到的UMI数量。这个矩阵通常非常稀疏——大部分格子是0。举个例子:

          细胞1  细胞2  细胞3  ...
GENE_A       2      0      5
GENE_B       0      3      0
GENE_C       1      8      2
...

拿到这个矩阵后,你要做标准化、降维、聚类、注释等一系列操作。而Seurat,就是目前最主流的R包去做这些事。我个人习惯把所有预处理步骤都放在Seurat里完成,因为它的管道统一,不用来回切换工具。

核心要点:单细胞RNA-seq的原始数据是基因×细胞计数矩阵,后续所有分析都基于这个矩阵。

1.2 Seurat包概述

Seurat最初由Rahul Satija实验室开发,现在已经是单细胞分析领域的「标配」了。它提供了从数据读取、质量控制、标准化、降维、聚类到差异表达、可视化的一整套流程。我特别喜欢它的FindClusters + TSNEPlot组合,一次跑完就能看到细胞分群结构。

Seurat的核心数据结构是SeuratObject,它把原始计数矩阵、元数据、降维结果、聚类标签等全部打包到一个对象里。你不需要手动管理一堆零散矩阵。

功能模块 主要函数 说明
数据创建 CreateSeuratObject 从计数矩阵构建Seurat对象
质量控制 PercentageFeatureSet 计算线粒体/核糖体占比等QC指标
标准化 NormalizeData 默认采用LogNormalize,全局缩放因子10000
降维 RunPCA 主成分分析,默认50个PC
聚类 FindClusters 基于共享最近邻图进行Louvain/Leiden聚类
可视化 DimPlot, FeaturePlot UMAP/tSNE降维图,基因表达特征图

嗯,这里要注意——Seurat的标准化不止一种。默认的NormalizeData就是简单的LogNormalize,但后面章节我们会专门讲更先进的SCTransform和正则化负二项回归。这一章你先记住标准化的位置即可。

1.3 安装Seurat及依赖

安装Seurat其实很简单,但坑不少。我记得有一次帮同事装,他R版本太旧,装了一下午报错。所以第一步:请确认你的R版本>=4.1。最好用最新版。

标准安装方式是从CRAN安装:

install.packages("Seurat")

这行命令会自动下载并安装Seurat以及大部分依赖包。但有几个依赖比较特殊,需要单独处理。尤其是igraph和RcppArmadillo,如果编译报错,通常是缺少系统库。在Ubuntu上你可以先装:

sudo apt-get install libgmp-dev libmpfr-dev libgsl-dev libxml2-dev libssl-dev libcurl4-openssl-dev

在Windows上一般不需要额外配置,但如果你遇到Rtools相关错误,就老老实实安装对应版本的Rtools。我个人习惯直接安装RTools并把它添加到PATH。

安装完成后,验证一下:

library(Seurat)
packageVersion("Seurat")

如果不出意外,你会看到类似[1] ‘5.1.0’的输出。注意版本号,不同版本接口可能有微小差异。本课程以Seurat v5为主,但大部分代码也兼容v4。

避坑指南:我曾经在服务器上因为网络代理问题导致安装卡在igraph上。解决办法是手动下载igraph的二进制包离线安装。如果你也遇到类似情况,可以去CRAN或GitHub提前下载好.tgz文件。

1.4 实战案例:安装与验证

光说不练假把式。咱们跑一个最简单的流程,确保从安装到运行都通顺:

# 1. 安装(如果还没装)
if (!requireNamespace("Seurat", quietly = TRUE)) {
  install.packages("Seurat")
}

# 2. 加载包
library(Seurat)

# 3. 生成一个玩具数据集
pbmc_counts <- Read10X(data.dir = "path/to/filtered_feature_bc_matrix")
# 如果你没有真实数据,可以用内置数据集
pbmc_small <- pbmc_small  # Seurat自带的小型PBMC数据

# 4. 创建Seurat对象
pbmc <- CreateSeuratObject(counts = pbmc_small@assays$RNA@counts,
                           project = "pbmc_demo",
                           min.cells = 3,
                           min.features = 200)

# 5. 做一次标准化试试
pbmc <- NormalizeData(pbmc, normalization.method = "LogNormalize",
                      scale.factor = 10000)

# 6. 查看标准化后的数据
GetAssayData(pbmc, slot = "data")[1:5, 1:5]

跑完这段代码,你应该看到类似下面的矩阵:

                AAACATACAACCAC-1 AAACATTGAGCTAC-1 AAACATTGATCAGC-1
AL627309.1               0.0000            0.0000            0.0000
AP006222.2               0.0000            0.0000            0.0000
RP11-206L10.2            0.0000            0.0000            0.0000
RP11-206L10.9            0.0000            0.0000            0.0000
...

说明安装和基本流程都没问题。如果报错,多半是数据路径不对或R包版本冲突。别慌,仔细看错误信息——大部分错误都能在StackOverflow上找到答案。

提示:如果你想彻底清零重新安装,可以先用remove.packages("Seurat")卸载,然后重启R会话再装。

本章知识图谱

下面这张图帮你梳理了本章的核心逻辑:从单细胞测序数据到Seurat标准化的完整路径。中间涉及的依赖环境等也一并画出来了,方便你对照理解。

第1章 知识结构图 单细胞RNA-seq简介 UMI计数矩阵 基因×细胞稀疏矩阵 Seurat包概述 SeuratObject数据结构 全流程分析框架 安装Seurat及依赖 install.packages() Rtools/系统库 实战案例 加载数据→NormalizeData 依赖注意事项 • R版本 ≥ 4.1 • 需安装Rtools(Windows) • 系统库:libgmp/libxml2等 • 网络代理可能导致C++编译失败 本章定位 从单细胞数据认知 → Seurat工具了解 → 环境搭建 下一环节:数据标准化方法详解 打好基础后进入核心:标准化实战

这张图把本章三个主要模块串起来了:左上角是单细胞RNA-seq数据基础,中间是Seurat包的定位,右上角是安装细节。下面两个框分别是实战案例和依赖坑点。你跟着这个框架走,思路就不会乱。

好,第一站就到这儿。记住:会安装、会创建Seurat对象、会做一次简单的标准化,这就是本章的硬指标。后面咱们会一步步深入标准化背后的数学原理和高级玩法。