做生物信息分析这行,我算是摸爬滚打十年了。每次看到刚入行的兄弟拿着FPKM或者TPM去搞差异表达分析,心里就咯噔一下。不是说不行,是这玩意儿真没你想的那么“绝对”。今天咱不整那些虚头巴脑的教科书定义,就聊聊我在实战里踩过的坑,顺便把geo数据的fpkm这层窗户纸给捅破。
记得刚入行那会儿,我也迷信FPKM。觉得它把测序深度和基因长度都校正了,简直是完美指标。直到有一次,我拿到一组TCGA的数据,想跟公共数据库里的某个芯片数据做对比。结果你猜怎么着?FPKM值在两个数据集里完全对不上号。后来折腾半天才发现,FPKM有个致命弱点:它只能在一个样本内部做比较,跨样本比较的时候,如果某些高表达基因突然爆发,会挤压其他基因的占比,导致整体分布偏移。这就好比分蛋糕,有人多吃了一口,其他人分到的自然就少了,但这不代表其他人吃得少了,只是分法变了。
咱们来看看具体数据。假设基因A在样本1里表达量是100,样本2里是200。如果样本2里有个超级高表达的基因B,表达量从1000涨到了10000,那么样本2的总读数就会暴增。这时候,基因A的FPKM值可能反而比样本1低,尽管它的原始读数翻倍了。这就是所谓的“相对定量”陷阱。很多同行这时候就会懵圈,明明测序深度够了,为什么FPKM反而降了?其实这就是FPKM的硬伤。
所以现在业内更推荐用TPM。TPM虽然也是相对定量,但它先对基因长度归一化,再对测序深度归一化,顺序反过来了。这样能保证所有样本的TPM总和一致,跨样本比较时更稳当。不过,即便用了TPM,如果你非要拿它去做绝对丰度的推断,那还是得打住。FPKM和TPM都解决不了不同批次效应的问题,更别提RNA-seq本身的离散特性了。
再说说geo数据的fpkm在实际应用中的尴尬。很多老文章里还留着FPKM值,你下载下来直接跑DESeq2或者edgeR,软件直接报错或者给出离谱的结果。因为这些工具底层假设的是负二项分布,而FPKM经过了对数变换和归一化,分布形态早就变了。正确的姿势是拿原始计数(Raw Counts)进去跑差异分析,算完差异倍数后,再用FPKM或TPM去画热图、做可视化。别本末倒置,把展示工具当成了分析工具。
我见过太多人因为直接用FPKM做聚类,把样本分得乱七八糟。比如样本A和样本B生物学重复,结果因为某个污染基因的FPKM波动,导致它们离得老远。这时候如果你用VST或者rlog转换后的数据,或者直接用正交化的计数数据,结果就靠谱多了。
还有个容易被忽视的点:低表达基因的处理。FPKM对低表达基因非常敏感,稍微有点背景噪音,FPKM值就能飘起来。这时候做相关性分析,相关性系数会被拉低。建议在做任何下游分析前,先过滤掉FPKM小于1或者计数小于10的基因,不然全是噪声在跳舞。
最后总结一下,FPKM是个好工具,但用错了地方就是毒药。它适合用来展示基因在单个样本内的相对丰度,比如看某个通路里哪些基因高表达。但它不适合跨样本比较,更不适合直接进差异分析流程。如果你手里有geo数据的fpkm,想重新分析,最好去原始SRA下载Fastq文件,自己重跑一遍流程,拿到Raw Counts再说话。别偷懒,别偷懒,别偷懒。
如果你还在为数据标准化头疼,或者不确定手里的FPKM能不能用,欢迎随时来聊。别自己瞎琢磨,容易走弯路。