单细胞 RNA-seq 质量控制:技能亮点

单细胞 RNA-seq 质量控制:技能亮点

Written By
技能练习生
技能练习生

为什么说"QC 决定了你研究的上限"

1.1 单细胞 QC 的独特挑战

挑战一:细胞质量差异极大

与传统 bulk RNA-seq 不同,单细胞数据的细胞质量呈现极端异质性

数据示例(来自真实 PBMC 数据集):

  • 高质量 T 细胞:检测到 2500 个基因,线粒体基因比例 3%
  • 低质量/垂死细胞:仅检测到 200 个基因,线粒体基因比例 35%
  • 空液滴(空 droplet):检测到 50 个基因,线粒体基因比例 80%

如果不进行 QC

  • 低质量细胞会形成独立的"垃圾簇",干扰聚类分析
  • 高线粒体比例的细胞会掩盖真实的生物学差异
  • 浪费计算资源分析无效数据

挑战二:固定阈值不适用于所有场景

常见误区:直接套用文献中的固定阈值(如 mt < 5%)

为什么这是错的?

不同组织/细胞类型的线粒体含量差异巨大:

组织类型正常线粒体比例是否需要过滤
免疫细胞(PBMC)3-8%>10% 需过滤
心肌细胞15-25%>30% 才需过滤
肝细胞8-15%>20% 需过滤
肿瘤细胞5-20%视具体类型而定

结论:必须基于数据本身的分布选择阈值,而非使用固定值。

挑战三:过度过滤与过滤不足的平衡

过度过滤的风险

  • 丢失稀有细胞群(如干细胞、特定亚群)
  • 引入选择偏差,影响下游分析
  • 低转录量细胞(如静息细胞)被误删

过滤不足的风险

  • 聚类结果混乱
  • 差异表达分析不可靠
  • 细胞类型注释错误

关键:采用保守的过滤策略(permissive filtering),宁可保留一些噪音,也不丢失真实信号。

1.2 QC 的三大核心维度

维度一:测序深度与基因检出

指标

  • n_counts:每细胞检测到的 UMI 总数(测序深度)
  • n_genes:每细胞检测到的基因数(基因检出数)

生物学意义

  • 高质量细胞:高 n_counts + 高 n_genes
  • 低质量细胞:低 n_counts + 低 n_genes(可能是破碎细胞)
  • 双细胞(doublet):异常高的 n_counts + n_genes(两个细胞被误认为一个)

典型分布

高质量 PBMC 数据:
  - n_counts: 中位数 5,000-10,000
  - n_genes: 中位数 1,500-2,500

可视化示例

期望分布(单峰,略右偏):
│        ╱╲
│       ╱  ╲
│      ╱    ╲_____╱
│_____╱          ╲___│
    低        高    异常高
             质量区   双细胞

维度二:细胞活性与状态

指标

  • pct_counts_mt:线粒体基因 UMI 占比
  • pct_counts_ribo:核糖体基因 UMI 占比
  • pct_counts_hb:血红蛋白基因 UMI 占比(针对血液样本)

生物学意义

指标高比例低比例
线粒体细胞死亡/应激/破损健康细胞
核糖体高代谢活性(增殖细胞)静息/分化细胞
血红蛋白红细胞污染(血液样本)正常(非血液样本)

线粒体基因的判断标准

  • 人类:基因名以 MT- 开头(如 MT-CO1
  • 小鼠:基因名以 mt- 开头(如 mt-Co1
  • 其他物种:需查阅对应的前缀规则

特殊案例

  • 心肌细胞:正常线粒体比例 15-25%(能量需求高)
  • 增殖细胞:核糖体比例高(蛋白质合成活跃)

维度三:技术伪影识别

常见技术问题

  1. 空液滴(Empty Droplets)

    • 特征:极低的 n_counts 和 n_genes
    • 原因:无细胞的液滴被错误捕获
    • 处理:使用 EmptyDrops 算法或简单阈值过滤
  2. 双细胞(Doublets)

    • 特征:异常高的 n_counts 和 n_genes
    • 原因:两个细胞被封装在同一个液滴
    • 处理:使用 ScrubletDoubletFinder 检测
  3. 环境 RNA(Ambient RNA)

    • 特征:低质量细胞中高表达管家基因
    • 原因:细胞破裂释放 RNA 被其他细胞捕获
    • 处理:使用 SoupXCellBender 纠正
  4. 细胞周期干扰

    • 特征:聚类主要由细胞周期驱动
    • 原因:细胞周期基因高度表达掩盖其他差异
    • 处理:回归或使用 scVI 等方法校正

1.3 MAD 方法的优势

什么是 MAD?

MAD(Median Absolute Deviation,中位数绝对偏差) 是一种鲁棒的统计量,用于衡量数据的离散程度:

MAD = median(|xi - median(x)|)

计算示例

数据:[1, 2, 2, 3, 3, 4, 100]  # 100 是异常值
中位数:3
MAD = median([2, 1, 1, 0, 0, 1, 97]) = 1

# 与标准差对比:
标准差 = 37.5  # 被异常值拉大
MAD = 1        # 不受异常值影响

MAD 过滤策略

核心思想:将偏离中位数超过 n 个 MAD 的细胞视为异常值

# 计算阈值
median = np.median(data)
mad = np.median(np.abs(data - median))
lower_threshold = median - n_mads * mad
upper_threshold = median + n_mads * mad

# 过滤
valid_cells = (data > lower_threshold) & (data < upper_threshold)

推荐参数

  • n_mads = 3:宽松过滤,保留更多细胞(本教程推荐)
  • n_mads = 5:极宽松过滤,适用于数据量少或稀有细胞群
  • n_mads = 2:严格过滤,适用于高置信度数据

优势对比

方法自适应性鲁棒性过滤强度推荐场景
固定阈值(mt < 5%)未知❌ 不推荐
Z-score 方法❌(受异常值影响)适中⚠️ 可用
MAD 方法保守(permissive)强烈推荐
百分位数(5%-95%)⚠️过严⚠️ 小数据集

实际案例

数据集 A(高质量 PBMC,10K 细胞):
  - 固定阈值(mt < 5%):保留 8,500 细胞(丢失 15%)
  - MAD(n_mads=3):保留 9,200 细胞(丢失 8%)

数据集 B(低质量肿瘤,5K 细胞):
  - 固定阈值(mt < 5%):保留 1,200 细胞(丢失 76%!)
  - MAD(n_mads=3):保留 3,800 细胞(丢失 24%)

结论:MAD 方法在各种数据集上表现稳定,是首选策略。

1.4 QC 流程全景图

输入数据(.h5ad / .h5)

┌───────────────────────┐
│ 1. 计算 QC 指标        │
│  - n_counts, n_genes   │
│  - mt%, ribo%, hb%     │
└───────────────────────┘

┌───────────────────────┐
│ 2. 可视化数据分布      │
│  - 小提琴图            │
│  - 散点图              │
│  - 直方图              │
└───────────────────────┘

┌───────────────────────┐
│ 3. 识别异常值(MAD)   │
│  - 自动计算阈值        │
│  - 生成过滤 mask       │
└───────────────────────┘

┌───────────────────────┐
│ 4. 应用过滤            │
│  - 过滤细胞            │
│  - 过滤低表达基因      │
└───────────────────────┘

┌───────────────────────┐
│ 5. 验证结果            │
│  - 检查过滤后分布      │
│  - 确保合理保留率      │
└───────────────────────┘

输出高质量数据(ready for downstream analysis)

1.5 常见误区与最佳实践

❌ 误区 1:过滤越严格越好

错误观念:认为应该尽可能多地过滤"可疑"细胞

问题

  • 稀有细胞群(频率 < 5%)可能被误删
  • 静息细胞(低转录活性)被误认为低质量
  • 数据量损失过多,影响统计功效

正确做法

  • 使用保守的阈值(n_mads = 3 或 5)
  • 保留率建议 > 70%
  • 检查是否丢失已知细胞类型

❌ 误区 2:套用文献中的固定阈值

错误观念:直接使用论文中报告的 QC 阈值

问题

  • 不同组织/物种的基线不同
  • 不同平台(10X v2 vs v3)的分布不同
  • 实验条件影响数据质量

正确做法

  • 基于数据分布选择阈值
  • 使用 MAD 等自适应方法
  • 参考文献但不盲从

❌ 误区 3:忽略基因层面的过滤

错误观念:只过滤细胞,不过滤基因

问题

  • 低表达基因增加噪音和计算负担
  • 影响 HVG 选择和降维

正确做法

  • 过滤在 < 10-20 个细胞中表达的基因
  • 或使用更宽松阈值(< 3 个细胞)保留稀有转录本

✅ 最佳实践清单

  1. 数据驱动:基于数据分布选择阈值,而非固定值
  2. 保守过滤:宁可保留一些噪音,不丢失真实信号
  3. 可视化检查:每次过滤后检查 QC 指标分布
  4. 迭代优化:首次过滤后,根据结果调整参数
  5. 记录决策:记录使用的阈值和理由,便于重现
  6. 领域知识:结合特定组织/细胞类型的生物学特性

1.6 QC 的时间投入

典型时间投入(10K 细胞数据集):

步骤手动分析自动化脚本
数据加载1 分钟< 1 秒
计算 QC 指标2 分钟< 1 秒
可视化检查5 分钟自动生成
确定阈值10-15 分钟自动(MAD)
应用过滤1 分钟< 1 秒
总计20-25 分钟< 2 分钟

投资回报率

  • 前期投入:学习和编写 QC 脚本(2-3 小时)
  • 长期收益:每次分析节省 15-20 分钟,避免重复劳动
  • 质量提升:减少下游分析问题的 80%+

下一章

现在你已经理解了单细胞 QC 的核心价值和方法论,是否迫不及待想要实践?

在第二章中,我们将通过一个完整的实战案例,带你亲身体验从数据加载到质控过滤的全流程。即使你没有任何编程基础,也能在 20 分钟内完成第一次单细胞 QC。

→ 继续阅读:第二章 - 快速入门