geo数据是fpkm吗
前两天有个同行跟我吐槽说最近在看NCBI GEO上下的RNA-seq数据,下载了一堆GSE文件,打开一看全是TPM或者RPKM的值,心里就犯了嘀咕:这到底算不算标准?我直接问了他一句,geo数据是fpkm吗?他支支吾吾半天,最后承认自己也没彻底搞明白。
其实这种困惑太普遍了。很多研究生在做文献调研或者课题启动时,第一件要做的事就是去GEO数据库里扒数据。很多人以为GEO里存的全是标准化好的数值,直接拿来就能做差异分析。这是个巨大的误区。GEO本身只是一个仓库,它存储的是原始文件(Raw Data)或者是部分处理后文件(Processed Data)。所谓的geo数据是fpkm吗,这个问题没有统一的答案,因为GEO里存的是“文件包”,而不是“单一指标”。
举个我自己的惨痛经历。去年我为了分析一个肺癌样本组,从GEO上下载了一个数据集,编号是GSE116176(具体数字可能记岔了,大概是这么个量级)。当时我没看Readme文件就直接跑流程,结果跑出来p值全是0.000,怎么调都下不去。后来才发现,那个文件是BAM格式,根本还没转成矩阵,而且原始数据没去PCR重复。我硬着头皮自己跑Star比对,HISAT2对齐,用featureCounts计数,再自己算FPKM。这过程磨了我整整一周,头发都掉了一把。
这时候就要说重点了。FPKM(Fragments Per Kilobase of transcript per Million mapped reads)是基于总测序深度和基因长度进行标准化的。它解决了基因长短不同带来的偏差,但是有一个致命缺陷:它受测序深度影响大,且在不同样本间(比如不同批次、不同测序平台)可比性较差。而TPM(Transcripts Per Million)则是先把每个样本内部的总表达量归一化为1百万,再进行基因长度校正。简单来说,TPM更适合样本间的比较,因为它的总和是固定的。
很多人问,能不能直接拿GEO里下载的RPKM/FPKM数据做差异分析?我的建议是:谨慎。如果是同一批次、同一测序深度的样本,也许问题不大。但如果是公开数据库里拼凑来的,不同实验室做的,FPKM值往往不可比。这时候,最稳妥的办法是找到原始fastq或bam文件,重新做统一流程的处理。当然,如果你实在找不到原始数据,只能使用公开矩阵时,建议尝试反归一化(de-norm)后再重新标准化,或者直接使用log2(TPM+1)来做下游分析,这样效果往往比直接堆FPKM要好得多。
我接触过不少临床医生,他们特别怕生搬硬套生信流程。他们关心的核心其实是:这个指标能不能反映真实的生物学差异?我的回答是,能,但前提是你要知道这个数值是怎么来的。不要迷信软件输出的那个Excel表头。你要去读原始论文的Methods部分,看他们是用的EdgeR,DESeq2还是Limma-voom。如果原文用的是Count矩阵跑的DESeq2,那你拿FPKM去跑Limma,结果肯定对不上。
还有一个细节容易被忽略,那就是批次效应。GEO里的数据来自世界各地实验室,技术噪音很大。如果你不检查,直接把两组FPKM扔进火山图,画出来的点可能一团糟。我之前用FastQC和MultiQC跑过质量检查,发现有的样本3'端偏好性特别严重,这种数据哪怕归一化做得再漂亮,也是垃圾进垃圾出。所以,在问geo数据是fpkm吗之前,先确认数据质量关没过关。
最后给点实在的建议。如果你只是想看趋势,做个相关性分析,直接用GEO提供的normalized数据凑合一下也行,但别发文章。如果要发高分论文,必须回溯到raw data,自己跑流程,保留所有中间日志。如果实在没有时间重跑,至少要用ComBat或者sva去除批次效应。
很多人卡在“选择困难症”上,其实生信分析没有绝对的对错,只有适合与否。与其纠结于术语的定义,不如动手跑一遍小样本,看看数据分布是不是长尾的,是不是偏态的。工具只是工具,理解数据背后的逻辑才是核心。如果你手头的GEO数据集比较杂,不知道选哪种归一化方法,或者在反归一化这一步卡住了,建议直接咨询专业的生信团队。有时候问对一句话,能省你几个通宵的调试时间。毕竟,人的时间和精力也是成本。