# 单细胞转录组数据分析入门 - 1 - 数据与分析平台
# 关于单细胞转录组数据
# 细胞与基因表达矩阵
单细胞转录组数据的核心是一个细胞与基因的表达矩阵,通常以行代表基因,列代表细胞。矩阵中的每个数值表示某个基因在某个细胞中的表达水平。这个矩阵有如下特点:
- 稀疏性: 多数基因的表达值为零或接近零,因为在特定细胞中只有部分基因会被活跃表达。
- 高维度: 单细胞实验通常包含数千个基因和数千至数百万个细胞。
# 数据来源:
- 测序原始数据: FASTQ 文件通过预处理(如 Cell Ranger)生成表达矩阵。
- 表达值单位: 包括原始 UMI 计数、归一化值(TPM、FPKM)或对数转换值。
# 不同的表达值单位
根据数据生成方法和归一化方式,不同矩阵具有不同的特点和用途。以下是主要矩阵类型的详细介绍:
# UMI(Unique Molecular Identifier)矩阵
- UMI 是单细胞测序中特有的一种技术,使用分子标签标记每个转录本以消除 PCR 扩增带来的冗余计数。
- 矩阵中的值表示某基因在某细胞中的独立 UMI 数量,即真实的转录本数量。
# 特点:
- 计量单位: 原始 UMI 计数(整数值)。
- 优势:
- 消除了 PCR 扩增偏差,表达水平更加真实。
- 数据稀疏性高,通常需要归一化后使用。
- 用途:
- 用于直接量化基因表达,适合单细胞数据的统计分析和降维。
# FPKM(Fragments Per Kilobase of transcript per Million mapped reads)矩阵
- FPKM 是一种传统转录组测序数据的归一化方法,考虑了测序深度和转录本长度的影响。
- 矩阵中的值表示每千碱基转录本每百万读段的映射片段数。
# 计算公式:
# 特点:
- 计量单位: 浮点数,通常较小(如 0.1 至数百)。
- 优势:
- 能跨基因比较表达水平(考虑了基因长度)。
- 劣势:
- 对单细胞数据噪声敏感,适合大规模样本群体数据分析。
- 用途:
- 大量基因的定量分析,但逐渐被 TPM 替代。
# TPM(Transcripts Per Million)矩阵
- TPM 是改进后的归一化方法,与 FPKM 类似,但通过将每个基因的表达值占总表达值的比例进行归一化,更便于跨样本比较。
# 计算公式:
-
对每个基因计算标准化值:
-
将标准化值归一化为百万:
# 特点:
- 计量单位: 浮点数,通常在 0.1 至数千范围内。
- 优势:
- 易于跨样本比较(总和为 1,000,000)。
- 在单细胞和群体数据中都适用。
- 用途:
- 用于样本间基因表达水平的直观比较。
# Counts 矩阵
- Counts 矩阵表示转录本测序中,直接映射到基因上的原始计数值,是最基础的表达矩阵。
# 特点:
- 计量单位: 整数值(原始读段数)。
- 优势:
- 无信息丢失,保留最原始的数据。
- 适合后续归一化处理(如 UMI 或 TPM)。
- 劣势:
- 未归一化数据受测序深度和其他技术因素影响,难以直接用于比较。
- 用途:
- 作为数据分析的起点,后续需通过归一化方法(如 TPM 或 FPKM)处理。
# 矩阵类型对比
矩阵类型 | 单位 | 是否归一化 | 是否考虑基因长度 | 是否考虑测序深度 | 适用场景 |
---|---|---|---|---|---|
UMI | 整数值 | 否 | 否 | 否 | 单细胞分析,噪声低 |
FPKM | 浮点数 | 是 | 是 | 是 | 传统转录组分析,噪声敏感 |
TPM | 浮点数 | 是 | 是 | 是 | 跨样本比较 |
Counts | 整数值 | 否 | 否 | 否 | 数据原始输入,需归一化 |
# 实际应用建议
- UMI 矩阵: 用于单细胞 RNA-seq 分析时的默认选择。
- FPKM 和 TPM 矩阵: 更多应用于传统转录组分析,TPM 在跨样本比较中表现更优。
- Counts 矩阵: 是所有分析的起点,但需归一化处理后方可使用。
当然,在大多数的情况下,除了自己测序,我们获取的数据通常只有一种类型的矩阵,直接使用即可。
# 分析平台
当前的两大主流分析平台是 R 语言(Seurat)和 Python(Scanpy),此系列教程将主要基于 Seurat V5 来讲解。但尽管如此,此处仍然介绍一下两者的区别。
# R 语言分析平台:Seurat
-
Seurat 是由 Satija Lab 开发的单细胞转录组分析工具包,最早发布于 2015 年,目前是单细胞数据分析领域中最受欢迎的工具之一。
-
支持与其他工具的结合,如 CellChat(细胞通讯分析)、Harmony(批次效应校正)。
-
支持多组学数据整合(如 scRNA-seq 与 scATAC-seq)。
# 缺点
- 由于 R 语言的固有缺陷,在面对大规模数据时(如数百万细胞)可能性能不足。
# Python 分析平台:Scanpy
- Scanpy 是一个基于 Python 的开源单细胞数据分析工具,由 Theis Lab 开发。
- 专注于大规模单细胞数据集的快速、高效分析,支持大规模数据处理和分析。
- 其在面对大规模单细胞数据(百万级别)时表现优异。
# 缺点
- 可视化能力稍逊: 默认图形输出质量不如 Seurat,但可以通过其他 Python 库(如 Matplotlib、Seaborn)弥补。
- 学习曲线较陡: 对编程和 Python 生态系统的掌握有一定要求。
# Seurat 与 Scanpy 的对比
特性 | Seurat (R) | Scanpy (Python) |
---|---|---|
性能 | 数据规模适中时表现优异,处理大数据较慢 | 面对大规模数据时表现更高效 |
可视化能力 | 强大、直观,生成高质量出版级图形 | 默认可视化能力较弱 |
分析流程 | 标准化、自动化流程方便 | 更灵活,但需要更多编程能力 |
社区支持 | 文档详尽,社区活跃 | 用户群体逐渐增长,文档丰富 |
适用场景 | 数据集规模中等、偏向高质量图表的需求 | 大规模数据、高效计算和灵活分析需求 |
# 本教程的分析平台选择
本教程将主要基于 Seurat V5 进行讲解,主要是由于 R 语言的学习成本相对较低,在处理一般规模的单细胞数据时,Seurat 的性能也足够,更重要的一点是,R 语言绘图质量相对而言比较高,使人心旷神怡。
不过,在大规模数据分析场景中,Scanpy 或许是更优的选择。对于对 Python 生态有兴趣的朋友,可以将 Seurat 和 Scanpy 的知识结合,灵活使用两种工具以适应多样化的研究需求。