单细胞分析:质控指标深度解析(五)

张开发
2026/4/3 20:20:48 15 分钟阅读
单细胞分析:质控指标深度解析(五)
1. 单细胞质控核心指标解析单细胞测序数据的质量控制是分析流程中的关键第一步。做过单细胞分析的朋友都知道原始数据里总会混入一些坏家伙——可能是破损细胞、空微滴或者双细胞。这些低质量数据如果不处理干净后续的细胞分群、差异分析全都会跑偏。今天我们就来深扒几个最核心的质控指标手把手教你用Seurat搞定它们。先说说线粒体基因比例这个指标。细胞状态不好时细胞质RNA会降解泄露但线粒体RNA由于有双层膜保护反而更稳定。所以当看到某个细胞的线粒体基因占比异常高比如20%大概率是个垂死细胞。计算这个指标时要注意不同物种的线粒体基因前缀不一样人类用MT-小鼠用mt-千万别搞混。# 人类样本线粒体比例计算 merged_seurat$mitoRatio - PercentageFeatureSet( object merged_seurat, pattern ^MT- ) / 100第二个硬核指标是UMI复杂度Novelty Score。我习惯叫它转录本多样性指数算法很简单log10(基因数)/log10(UMI数)。健康细胞这个值通常在0.8以上。如果某个细胞UMI总数很高但基因数很少比如红细胞或者反复测到相同转录本可能是破裂细胞释放的RNA片段得分就会偏低。2. 数据质量可视化实战光看数字不够直观我习惯用组合图来全面诊断数据质量。下面这段代码会生成4个关键指标的联合分布图帮你一眼识别异常细胞群体library(patchwork) p1 - VlnPlot(merged_seurat, features nCount_RNA) geom_hline(yintercept 500, linetype dashed) p2 - VlnPlot(merged_seurat, features nFeature_RNA) geom_hline(yintercept 250, linetype dashed) p3 - VlnPlot(merged_seurat, features log10GenesPerUMI) geom_hline(yintercept 0.8, linetype dashed) p4 - VlnPlot(merged_seurat, features mitoRatio) geom_hline(yintercept 0.2, linetype dashed) (p1 p2) / (p3 p4)特别推荐看看基因-UMI散点图这是我发现双细胞的最佳武器。正常细胞这两个指标呈线性相关如果出现离群点比如UMI超高但基因数中等很可能是两个细胞被当成一个捕获了。用ggplot2画这个图时建议加上线粒体比例着色能同时观察三类异常细胞低质量细胞左下角、双细胞右上角和高线粒体细胞深色点。3. 过滤阈值的艺术设定过滤阈值是个技术活太严会误伤真实细胞太松又放过低质量数据。根据我处理上百个数据集的经验建议采用动态阈值策略基础阈值nUMI500nGene250线粒体比例0.2灵活调整对于高测序深度数据如10X Genomics HDnUMI阈值可提高到1000样本特异性神经元细胞nGene普遍偏低免疫细胞线粒体比例偏高需要适当放宽标准# 动态过滤示例 filtered_seurat - subset( x merged_seurat, subset nCount_RNA 500 nFeature_RNA 250 log10GenesPerUMI 0.8 mitoRatio 0.2 )有个容易踩的坑是基因水平过滤。很多教程只教细胞过滤其实表达矩阵里大量零值基因也会影响分析。我通常保留在至少10个细胞中表达的基因counts - GetAssayData(object filtered_seurat, slot counts) nonzero_genes - rowSums(counts 0) filtered_seurat - filtered_seurat[nonzero_genes 10, ]4. 质控后的验证技巧过滤完一定要做前后对比验证我习惯用三个必查项目细胞数量变化正常应该去除5-20%的细胞如果过滤掉50%以上可能要检查实验环节指标分布改善用VlnPlot对比过滤前后各指标的分布变化PCA初步观察快速跑个PCA看看是否消除了明显的异常细胞群这里分享一个实用函数可以一键生成质控报告generate_qc_report - function(seurat_obj, title) { meta - seurat_objmeta.data plot_list - list() plot_list[[1]] - ggplot(meta, aes(x nCount_RNA)) geom_histogram(bins 50) ggtitle(UMI distribution) plot_list[[2]] - ggplot(meta, aes(x nFeature_RNA)) geom_histogram(bins 50) ggtitle(Gene distribution) plot_list[[3]] - ggplot(meta, aes(x log10GenesPerUMI)) geom_histogram(bins 50) ggtitle(Novelty score) plot_list[[4]] - ggplot(meta, aes(x mitoRatio)) geom_histogram(bins 50) ggtitle(MT ratio) grid.arrange(grobs plot_list, top title) }最后提醒大家单细胞质控没有放之四海皆准的标准。我在分析肿瘤样本时会特意保留一些高线粒体比例的细胞因为它们可能是处于特殊代谢状态的恶性细胞。关键是要理解每个指标背后的生物学意义结合具体实验设计灵活调整。

更多文章