OMICSDESK生信分析交付

伪批量还是逐细胞?这个选择决定你的文章能不能过审

为什么逐细胞差异表达会制造大量假阳性、什么时候必须用伪批量、以及具体怎么做——附在真实 8 供者公开数据上的实测对比。

你有六只小鼠的单细胞数据,每组三只,想找某个细胞类型里两组之间的差异基因。Seurat 和 scanpy 的默认做法会拿几千个细胞对几千个细胞做检验,然后给你三千个「显著」基因。其中大部分不是真的。

错在哪

同一只动物里的细胞不是独立观测。它们共享这只动物的遗传背景、批次、解离应激和测序批。逐细胞检验假设独立,于是把 2,000 个细胞当成 2,000 份证据,而它们更接近于一份。结果就是:测的细胞越多,你那个错误结论的 p 值越漂亮

2021 年以来多项基准测试反复得到同一结论:多受试者设计下,逐细胞检验(如默认的 Wilcoxon)产生大量假阳性,而伪批量方法能把错误率控制在名义水平附近。

正确做法,五步

  1. 先取出一个细胞类型。
  2. 把该类型在每个样本里的原始 counts 相加(不是归一化后的值),得到一列一个样本的伪批量矩阵——列数才是你真正的样本量。
  3. 细胞数太少的样本剔除,常用阈值是少于 10–20 个细胞。剔了几个要写出来。
  4. 用 bulk 方法检验:DESeq2、edgeR 或 limma-voom,协变量(性别、批次、年龄)照常放进模型。
  5. 每个细胞类型各做一遍,并在类型内部对基因做多重检验校正。

什么时候逐细胞检验仍然是对的

当比较发生在一个样本内部、而且细胞确实是关注单位时:比如找区分第 3 群和第 5 群的 marker。判据很简单:如果你的生物学问题带着样本层面的设计(处理 vs 对照),就用伪批量;如果是样本内的描述性问题(这一群的特征是什么),逐细胞可以,但要当作描述而不是推断。

实测:两种做法差多少

我们用一份真实公开数据(8 位供者,每人各有对照与干扰素-β 刺激)把两种做法都跑了一遍,结果公开在 这一页:两份显著基因列表 68.3% 不重合——而且方向和教科书上的警告不完全一样。 10 个已知的干扰素诱导基因在伪批量结果里全部命中,这是判断流程有没有跑对的自检。

不太舒服的那部分

把差异表达改成正确做法后,基因列表常常从几千缩到几十。很多人体感上是「结果没了」。不是——是你终于看清结果本来是什么。一份短而站得住的列表,好过一份在审稿时溶解掉的长列表;而且这个领域的审稿人现在会点名问这件事。

需要人替你做,而不是看怎么做?

我们只做分析,不卖测序:把表达矩阵、h5ad/Seurat 对象或公开数据编号发过来, 拿回可直接投稿的图、结果表、方法学段落,以及产出这些结果的完整脚本。开工前先给固定书面报价。

→ 拿一份固定报价 · 看七份公开数据上真跑出来的样品

其他中文内容