第 11 章数据分析
标志基因与细胞注释
聚类给出的只是编号。要把“簇 3”变成“B 细胞”,需要两样东西:数据里每个簇特有的高表达基因,即标志基因;以及关于这些基因在哪些细胞里表达的先验知识。这一章在 pbmc3k 上把两者连起来,最后请你自己注释一次。
找标志基因
Seurat 的 FindAllMarkers 逐个簇地把“这个簇”和“其余所有细胞”比较,默认用 Wilcoxon 秩和检验。结果表里最重要的几列:
| 列 | 含义 |
|---|---|
| avg_log2FC | 本簇与其余细胞平均表达之比的 log2;1 表示约高 2 倍 |
| pct.1 / pct.2 | 本簇 / 其余细胞中检测到该基因的细胞比例 |
| p_val_adj | Bonferroni 校正后的 p 值(按全部基因数校正) |
好的标志基因三者兼备:倍数变化大、pct.1 高、pct.2 低。只看 p 值排序不够:一个在 95% 细胞里都有表达、只是本簇稍高的基因,p 值同样可以极小。
markers <- FindAllMarkers(obj, only.pos = TRUE)
在组件里选一个簇,看它的标志基因表;再点一个基因,看它在 UMAP 上的分布和各簇的小提琴图。试试 MS4A1、LYZ、NKG7、PPBP。
从标志基因到细胞身份
注释就是把标志基因和已知的细胞类型对应起来。下面的组件给出 pbmc3k 每个簇的几个标志基因,请你先自己判断,再揭晓 Seurat 教程的标准注释。
做完测验后再展开:Seurat 教程使用的标志基因
| 标志基因 | 细胞类型 |
|---|---|
| IL7R, CCR7 | 初始 CD4⁺ T 细胞 |
| IL7R, S100A4 | 记忆 CD4⁺ T 细胞 |
| CD8A | CD8⁺ T 细胞 |
| GNLY, NKG7 | NK 细胞 |
| MS4A1 | B 细胞 |
| CD14, LYZ | CD14⁺ 单核细胞 |
| FCGR3A, MS4A7 | FCGR3A⁺ 单核细胞 |
| FCER1A, CST3 | 树突状细胞 |
| PPBP | 血小板 |
除了手工注释,还可以用参考图谱自动注释(SingleR、Azimuth、CellTypist 等)。它们快,但参考数据必须与你的组织和状态匹配,结果仍要用标志基因核对。
常见误区
- 只凭一个基因下结论。 用多个标志基因,也看“不该表达”的基因是否确实不表达。
- 强行给每个簇命名。 “低质量”“双细胞”“未知”都是合理的标签。
- 把细胞层面的 p 值当成条件间差异的证据。 条件比较用 pseudobulk,统计单位是样本。
- 照搬参考图谱的结果。 参考数据里没有的细胞类型,会被硬塞进最相近的类别。