昨晚凌晨三点,显示器幽蓝的光晃得我眼睛生疼。屏幕上跳动着那一行行枯燥的比对码,我揉了揉酸涩的太阳穴,心里咯噔一下。又是一个死胡同。咱们搞生信的都知道,从GEO上下下来的原始数据,就像是一堆没拆封的快递,你以为里面是宝贝,拆出来可能全是填充泡沫。
最近好几个做课题的学生问我,老师,GEO里的FPKM到底该不该信?我一般不回。这种问题太直接,像是在问“这饭熟没熟”,其实得看火、看锅、看米。你想想,当年FPKM出来那会儿,确实是件大事儿,它试图解决基因长度偏差和测序深度归一化的问题。公式嘛,简单说就是Read Count除以Gene Length再除以Million mapped Reads。听着挺科学对吧?但实际操作中,坑多着呢。
我就遇见过这么一桩事。有个小伙,用某平台一键生成的FPKM值去跑差异表达,结果做出来一堆所谓的“明星基因”。我一看表达量分布图,好家伙,那个分布扁平得像被熨斗熨过一样。为什么?因为FPKM在低丰度转录本上简直就是一辆破自行车,稍微有点起伏它就崩了。这就好比你想用一把刻度只有厘米的尺子去量一根头发的直径,看着有读数,其实全是噪音。
咱们来看个实在的数据对比。以前咱们看TCGA或者大型项目,样本量动辄几百个,这时候用TPM(Transcripts Per Million)会稳妥得多,因为它考虑了所有转录本的总和,比例感更强。而在GEO这种零散数据里,很多公共数据库里的处理流程不统一。有的用RPKM,有的用FPKM,还有的直接拿Raw Count没做任何处理就上传。这要是混在一起分析,就像是把不同年份生产的零件装进同一台机器,转起来能不咔咔响吗?
记得去年有个团队复盘GEO上的肝癌数据,他们发现同一个疾病队列里,两组不同实验室提供的FPKM数据,相关性系数R平方居然只有0.4不到。这就很离谱了。你想啊,样本1和样本2虽然都是癌组织,但一个是冰冻切片,一个是FFPE,提取的RNA质量天差地别。这时候你拿着FPKM去聚类,聚类出来的结果能靠谱吗?就像是用两张不同曝光度的照片去拼全景,边缘处肯定全是黑边和白边。
还有个事儿得提一嘴。很多人喜欢拿着FPKM直接画火山图或者热图,觉得这样好看、直观。但实际上,对于后续的差异分析,Log2FC的计算如果基于FPKM,很容易受到高表达基因的挤压。这就好比你用一碗水和一桶水做对比,那个小碗里的勺子搅动一下,你觉得变化很大;但在桶里,同样的搅动几乎看不见涟漪。所以,现在的趋势是尽可能用原始Count去做DESeq2或者edgeR分析,这两个包内部有复杂的归一化逻辑,比外部的FPKM要硬气得多。
当然,也不是说FPKM一无是处。在可视化展示的时候,它依然有其独特的优势。毕竟人类对小数点后的几位数字敏感度不高,但对相对比例有概念。当你向非生物背景的合作者解释某个基因上调了多少倍时,FPKM确实比Log2 fold change更容易让人听懂。但是,切记,千万别把它当作统计推断的唯一依据。
我有时候跟学生说,数据分析就像做饭。FPKM是那个摆盘的酱汁,好看,能提色,但如果你底料没炒好,酱汁再浓郁也救不回来。现在GEO上那些新上传的数据,越来越多的作者开始在补充材料里提供TPM或者甚至原始计数。这是个进步。咱们得有点洁癖,别啥数据都往下拉。遇到那种只给FPKM还没提供元数据的库,直接劝退。别在那死磕,浪费时间不说,出来的结论还被人挑刺。
说到底,工具是死的,人是活的。懂FPKM的原理,就知道它的局限在哪个角落。别把它当成万能钥匙。下次再看到GEO里那冷冰冰的数字,多留个心眼,多问问为什么。毕竟,生物学里的真相,往往就藏在那些被忽略的异常值里,而不是那些被精心修饰过的均值中。
这事儿吧,还得慢慢磨。急不得。