software

SingleR 给出了细胞标签,怎样识别那些应该暂留空白的细胞?

作者:发布于 2026-11-14约 7 分钟阅读
同样高出中位数,也可能难以定名。三个教学细胞都将甲排在首位,比较甲与其余标签的差距。细胞一,甲减中位数 0.50,甲减乙 0.40,相对于一般候选和次优候选,甲都较突出。细胞二,甲减中位数 0.50,甲减乙 0.01,能定位大类,但甲与乙两个近亲难区分。细胞三,甲减中位数 0.02,甲减乙 0.01,所有候选分数都接近,优先复核。

给一批新样本做参考注释,结果表里每一行都有一个细胞类型,合作者打算直接据此计算各类型的比例。值得先看一眼另一列。SingleR 可以在原始分配标签之外给出经过修剪的标签,部分细胞在这一列会变成缺失值。保留这些缺失及其原因,能让最终的组成表更可信。这里用手算的三个细胞说明,为什么“分数最高”只解决了比较中的一半问题。

先查参考能否回答你的问题

把参考数据的物种、组织、年龄或疾病状态、测序技术和标签层级写下来。一个只收录外周免疫细胞的参考很好用,但遇到实体组织里的内皮或上皮细胞,它所能选择的类别有限。某个标签即使跑得很整齐,也可能只是每个细胞都在同一组不合适的候选里选了最接近的一个。先用组织定位和主要谱系标记检查有无明显缺席类别,再决定注释到大类还是亚类。

SingleR 从参考数据中找可分辨不同标签的特征,在这些特征上比较待注释细胞与参考表达谱,典型流程还会在相近候选中细化匹配。参考标签有多少个例子、同名标签内部是否包含不同状态、输入双方有多少可用标记,都会影响结果。开始前检查双方基因名称的交集,尤其看用于区分近亲亚型的标记是否在查询实验中确实可测。只有共有的管家基因很多,并不能说明具有区分力的基因也足够。SingleR 作者对经典模式的说明

算一遍与中位分的差,别把它读成概率

假设参考有甲、乙、丙、丁、戊五种标签,下表是为说明原理构造的分数,并假定最终分配都是甲。作者在注释诊断中定义了一种差值,用分配标签的分数减去本细胞在全部标签上的分数中位数。这个量考察被分配标签比一般候选突出了多少。与之不同,第一名减第二名回答的是前两名之间有多难区分。两种问题常在热图汇报中被混在一起。

细胞 甲、乙、丙、丁、戊的分数 甲减中位数 甲减乙
一 0.80、0.40、0.30、0.20、0.10 0.50 0.40
二 0.80、0.79、0.30、0.20、0.10 0.50 0.01
三 0.44、0.43、0.42、0.40、0.38 0.02 0.01
同样高出中位数,也可能难以定名。三个教学细胞都将甲排在首位,比较甲与其余标签的差距。细胞一,甲减中位数 0.50,甲减乙 0.40,相对于一般候选和次优候选,甲都较突出。细胞二,甲减中位数 0.50,甲减乙 0.01,能定位大类,但甲与乙两个近亲难区分。细胞三,甲减中位数 0.02,甲减乙 0.01,所有候选分数都接近,优先复核。
三个教学细胞都将甲排在首位,比较甲与其余标签的差距。

第一枚与第二枚在“甲比一般候选好多少”这个问题上得出相同答案,第二枚却在区分甲与乙时几乎打平。第三枚所有分数都十分接近,说明相对于自身基线,甲标签也没突出多少。真实结果的分数热图呈现的可以是细化匹配前的分数,最后的标签受后续细化影响。不能从颜色最深的一格倒推出一个未经核实的最终决策过程。上述分数也没有“甲类型的概率百分之八十”这样的解释。SingleR 注释诊断与标签修剪

用一张表追查修剪了谁

官方的诊断会考察同一分配标签内各个细胞的差值分布,找出相对偏低者。它有一个重要条件,这个标签下多数分配应当大体合理。如果一整群未收录的细胞被一致地误叫成甲,这批细胞彼此之间的差值可能还很相似,默认修剪不一定能把整群找出来。修剪结果适合当作需要复查的一组线索,不能取代留出参考类别、查看标记等外部检查。

下面假定 pred 来自本次 SingleR 注释,元数据行名是查询条形码,含供体列。先按条形码校准次序之后,再分标签、分供体统计是否被标为待查。若有重复条形码,应先将文库标识加入唯一键。比较不同样本时,同时报告分母。三枚细胞中被修剪两枚和三千枚中被修剪两枚,所反映的覆盖情况显然不同。

ids <- rownames(pred)
stopifnot(!anyDuplicated(ids), !anyDuplicated(rownames(meta)),
          all(ids %in% rownames(meta)))
audit <- data.frame(label = pred$labels, donor = meta[ids, "donor"],
                    flagged = is.na(pred$pruned.labels))
with(audit, table(label, flagged))
with(audit, table(donor, flagged))

拿到待查名单后,先画每个细胞的检出基因数、分子数和粗谱系标记。某一供体所有细胞都给出模糊成绩,优先查这个文库质量、参考对应的组织和基因映射,只有一个边缘小群模糊,则把它放回原始表达邻域,看它像真正的过渡态、双细胞,还是一种参考缺少的类型。如果明显属于淋巴细胞,只是分不清甲乙两个近亲亚型,可以先停在共同的大类,并保留细分未定的原因。不要因为想在图例里少一种颜色,就把缺失值自动改回原始标签。

统计被修剪的数量时再问一个分母问题。若某小群原有十枚细胞,最后六枚待定,余下四枚都叫甲,写成“百分之百为甲”会掩去六成未能确定。表里同时给出四比十和四比四,分别说明甲占全部细胞的比例及其占已定名细胞的比例。

实跑经验|参考里拿掉一个群,少了的类别会去哪里

在 Ubuntu 24.04 中安装了 SingleR 2.4.1,用 R 4.3.3 对 SeuratObject 的 PBMC 小样本做留出实验。把八十枚细胞按原聚类标签在各群交替拆成四十一枚参考和三十九枚查询,保持查询不动,先用三个参考标签跑一次,再从参考中整体拿掉二号群。三类参考都在时,查询中原属二号的九枚细胞有五枚仍被分为二号。去掉二号参考后,这九枚有三枚分到零号、六枚分到一号,默认修剪只将其中三枚标为缺失,另六枚保留了别的类别名称。

这个结果能在自己的数据上复核一个常见盲点,即便事先知道整类参考已被删除,自动修剪也没有把它们全部标出。我们使用的是同一份示例材料的原聚类编号,只是检查参考缺席怎样改变分配,不能据此报告独立供体的细胞类型准确率。做组织注释时先核实参考库覆盖,再给得分和修剪结果寻找外部标记支持。运行所用 PBMC 小数据

做一次留出类别的反向检查

有合适的已知参考时,可选其中一个相对清楚的类别,从训练参考中整体拿走,然后用这类已知细胞当查询。观察它们被分到谁、多少被修剪、与那个近似类别的标记在哪些位置冲突。这个试验直接演示你的参考体系遇到缺席类型时会怎样出错。若同一供体同时出现在训练与查询中,泛化会显得过于容易,因此尽可能按供体独立划分。在已知材料上发现的混淆对,可以优先列入新样本的人工复核表。

如果一个疾病模型的稀有群恰好落在这个混淆对之间,给它补做一组互斥标记比盲目调高全体阈值更有效。先明确高层级身份是否稳定,再检查细分类在另一份覆盖该组织的参考中能否复现,同时记录两份参考的标签定义是否真的一致。参考一的“祖细胞”和参考二的“活化细胞”可能描述不同维度,单纯用字面一致率评价谁对谁错容易误导。

最后计算细胞组成时,为每份样本单列待定细胞数,并说明分母使用全部合格细胞还是仅使用已注释细胞。保存原始标签、修剪后标签、参考版本和需要复核的条形码,能让同事重复这一判断。要在团队中维护多份参考并批量复核新样本时,可了解云生信的生物信息分析服务器。

把知识用于当前任务

下一步可以直接开始分析

按研究目标查找在线工具、课程、计算资源或完整分析服务。

按目标找方案仍有疑问,联系客服 ↗