做生信分析最头疼的,就是拿到原始数据后,发现根本没法直接用。很多人一上来就盯着FPKM或者TPM看,结果发现不同样本间根本没法比,甚至怀疑人生。这篇文章不整虚的,直接告诉你GEO里的RNA值到底是个啥玩意儿,以及怎么算出来的,让你以后踩坑能少掉几根头发。
咱们先说个大实话,GEO数据库里那些所谓的“表达量”,其实分好几层。你下载下来的文件,有的直接就是处理好的矩阵,有的却是CEL文件或者raw counts。这差别可大了去了。要是你拿到的是已经处理好的表达矩阵,比如GPL平台自带的注释,那这值通常是经过背景校正、归一化后的结果。但这里有个坑,很多平台默认用的算法并不统一,有的用RMA,有的用MAS5,甚至有的还在用老掉牙的Log转换。你如果不看平台说明文档,直接拿来跑差异分析,那结果简直就是瞎子摸象,完全没意义。
那具体怎么算的呢?以最常见的Affymetrix芯片为例,核心算法通常是RMA。这玩意儿分三步走:第一步叫背景校正,把那些非特异性的噪音给剔除掉;第二步是核苷酸级别的归一化,让不同芯片之间的分布尽量一致;最后一步是探针集水平的摘要统计,把一组探针的值合并成一个最终值。这个过程里,取的是中位数,而不是平均值,为啥?因为中位数更稳健,不怕几个极端值捣乱。你要是用平均值,稍微有个探针杂交效果不好,整个样本的均值就偏了,那还做个屁的分析。
再说说RNA-Seq的数据。现在做GEO下载,很多人冲着测序数据去。这时候你看到的FPKM、TPM或者Raw Counts,计算逻辑完全不一样。Raw Counts是最原始的读数,没经过任何归一化,直接受测序深度影响。你样本A测了1000万条,样本B测了2000万条,那B里的基因表达量看起来肯定比A高,但这不代表基因真的上调了,纯粹是因为你测得深。所以,这时候必须看TPM或者FPKM。TPM(Transcripts Per Million)是目前比较推荐的,因为它先考虑了基因长度,再考虑测序深度,最后归一化到百万分之一。这样不同样本间才有可比性。
但是!这里有个巨大的陷阱。很多文章里提到的GEO数据,作者可能只给了FPKM,甚至只给了Log2转换后的值。你要是直接拿Log2(FPKM+1)去做聚类或者差异分析,那简直是灾难。因为Log转换会改变数据的分布性质,而且不同样本间的Log值不能直接相减代表倍数变化。你得先反解回去,或者用专门的工具重新归一化。我见过太多新手,直接拿Log2值做热图,看着挺漂亮,其实逻辑全错。
还有啊,别迷信官方给的注释。GEO平台上的GPL文件,有时候更新滞后,或者注释错误。你最好自己下载对应的基因组版本,重新比对,或者用最新的Annotation包。不然你算出来的“表达量”,可能对应的是个假基因,或者干脆就是注释错了位置。这种低级错误,审稿人一眼就能看出来,到时候被拒稿,哭都来不及。
最后总结一下,GEO数据库RNA值是怎么计算的,并没有一个标准答案,全看数据来源和预处理流程。你拿到数据,第一件事不是急着跑代码,而是去查Metadata,看它用了什么算法,什么平台,什么版本。如果是芯片数据,重点关注RMA还是MAS5;如果是测序数据,分清Raw Counts、FPKM和TPM的区别。别偷懒,别省事,每一步都搞清楚,你的分析结果才站得住脚。生信这行,细节决定成败,马虎不得。
本文关键词:GEO数据库RNA值是怎么计算的