做生信分析这12年,我见过太多新手被FPKM和TPM搞晕,最后发文章被审稿人怼得体无完肤。这篇文不整虚的,直接告诉你为什么现在几乎没人再用FPKM做组间比较,以及你该换什么指标。如果你还在用FPKM算差异表达,赶紧停下来,别浪费服务器算力了。
先说个大实话,FPKM这玩意儿在2012年左右确实火过一阵子。那时候Illumina测序刚普及,大家为了消除基因长度和测序深度的影响,搞出了这个标准。
听起来很完美对吧?消除长度偏差,消除测序量偏差。
但问题是,它有个致命的逻辑漏洞。
你看啊,FPKM是算出每个样本内部的比例。
这意味着,如果你样本A里有个基因表达量爆表,它占的比例大了,其他所有基因的FPKM值都会被“稀释”变小。
这就是所谓的“相对丰度”陷阱。
当你拿样本A和样本B做对比时,如果两个样本的基因表达谱差异巨大,FPKM就会失真。
简单说,它只能看样本内部谁多谁少,不能跨样本比绝对高低。
我有个学生,去年发文章前用FPKM跑差异,结果被Reviewer指着鼻子骂。
人家问:“你怎么证明你的基因上调不是因为其他基因下调导致的相对增加?”
他哑口无言。
这就是FPKM的硬伤。
现在主流的做法是什么?是TPM,或者更直接的,用DESeq2和edgeR里的原始Count值。
TPM虽然也是比例,但它先算了长度校正,再算比例,逻辑上比FPKM稍微严谨那么一丢丢。
但说实话,对于差异分析,TPM也不是最优解。
最硬核的做法,是直接用原始Count值。
DESeq2和edgeR这些主流工具,底层模型就是基于负二项分布的,它们专门处理Count数据的离散度。
你给它们喂FPKM,它们根本没法准确估计方差。
这就好比你让一个数学家去算一堆已经揉皱了的纸团,不如直接给他一张白纸。
很多老派分析师还抱着FPKM不放,觉得可视化好看。
确实,FPKM的数值范围比较固定,画热图、画火山图看着舒服。
但科学严谨性不能靠“看着舒服”来维持。
如果你只是做聚类分析,或者看表达趋势,TPM勉强能用。
但一旦涉及统计检验,涉及P值,涉及FDR校正,必须用Count。
别偷懒,别为了省事去转换数据。
我在知乎上看过一个高赞回答,说FPKM是“过时的标准”。
这话虽然难听,但理是这个理。
现在的新文章,如果你还在用FPKM做差异分析,编辑大概率会直接拒稿,或者要求重做。
这不仅仅是技术细节问题,这是对你工作严谨性的质疑。
所以,听我一句劝,赶紧把那些陈旧的脚本扔了。
去学学DESeq2的标准化流程,或者edgeR的TMM标准化。
虽然学习曲线有点陡,但为了你的文章能顺利接收,这点功夫值得花。
另外,提醒一下,不同版本的R包或者Python库,对Count的处理可能微调。
一定要看最新的文档,别用三年前的代码跑现在的数据。
技术迭代太快,昨天的真理可能是今天的谬误。
最后总结一句:FPKM已死,Count永生。
别在错误的道路上狂奔,回头是岸,数据才会对你诚实。
希望这篇文能帮你省下几个通宵debug的时间。
如果有不懂的,评论区见,我尽量回。
毕竟,谁还没踩过坑呢?