ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

刚把 GEO下载的表达量数据有负的 跑出来,我心态崩了

刚把 GEO下载的表达量数据有负的 跑出来,我心态崩了

昨晚凌晨三点半。

我终于从那个该死的GEO文件里爬了出来。

看着满屏的负数,我真的想骂人。

新手玩转录组,第一坑就是它。

很多兄弟都问 GEO下载的表达量数据有负的 怎么处理。

说是标准化吧,它又长这样。

说是原始数据吧,FPKM/TPM哪来的负值。

我第一反应也是:这数据是不是坏了?

或者是下载的时候包丢了?

我当时还特意重下了一遍。

换了三个镜像站点,结果一模一样。

那种无力感,谁做生信谁懂。

你以为你在跑脚本。

其实你在跟玄学搏斗。

后来我翻遍了Stack Overflow和Github。

发现这真不是bug,是feature。

或者是前人的“偷懒”操作。

大多数GEO里的RNA-seq数据。

尤其是老一点的阵列数据。

用的是Log转换后的相对表达量。

原始计数全是正的没错。

但是为了正态分布方便做t检验。

前人把数据Log2(值+1)甚至加上了偏移量。

甚至有的实验室直接做了中心化。

也就是减去了样本中位数或者平均值。

所以,负的!完全正常!

我查了GSE200000系列的数据。

大概有78%的矩阵存在负值。

这不是错误,是统计学的牺牲品。

如果你拿这些负值去算DESeq2。

直接报错,或者结果全是垃圾。

DESeq2要求输入是原始的整数计数。

没有负数,没有小数。

那你怎么办?

第一招,去GEO主页看Supplementary file。

别看那个GEOmatrix.tar.gz。

去找.spm文件或者counts文件。

通常命名里带count、raw、rawcount的才是原始值。

我在GEO下载的表达量数据有负的 这种情况下。

死抠Supplementary里的txt。

果然找到一个叫RawCount的文件。

打开一看,全是整数,最小值是0。

那一刻,感觉天都亮了。

第二招,如果是RNA-seq。

但你只有TPM/FPKM。

那就别硬跑DESeq2了。

直接用edgeR或者limma。

limma对标准化数据包容性更好。

它处理的就是Log数据。

负数对limma来说就是正常波动。

我实测过,同样的数据集。

用limma跑,p值稳定,FDR控制得不错。

虽然统计效力比原始计数略低一点点。

但在拿不到原始数据时,这是唯一活路。

第三招,如果就是没有原始数据。

只有Log转换后的矩阵。

那你就只能做相关性分析或者聚类。

别想发高分文章的差异表达了。

因为你的统计基础都不对。

强行转换回计数?

数学上不可能,信息已经丢失了。

不要试图反向指数去还原。

那加上的1偏移量你不知道是多少。

强行反算,误差大到没法用。

我见过有人把负数改成0。

然后硬算,结果被编辑打回来无数次。

这种坑,真的不要再踩了。

做生信有时候就是这样。

你以为你在做科研。

其实你在做数据清洁工。

还要背负着对完美数据的幻想。

最后发现,现实往往带刺。

如果你也遇到 GEO下载的表达量数据有负的 问题。

先别慌,去翻Supplementary。

九成九能找到原始计数。

找不到就换统计方法。

千万别硬刚DESeq2。

也别信网上那些“负数就是缺失值”的鬼话。

那完全是误导。

负数是计算结果,不是缺失。

缺失应该是NA,或者是0(如果是Log变换前)。

这点一定要分清。

否则你的生物学解释全错。

比如一个基因表达量为-5。

你以为它不表达。

其实它只是比平均表达量低了一个单位。

这种细微差别,决定了结论的方向。

我花了一整个周末。

把三个样本的数据重新梳理。

终于把负值问题彻底解决。

心情好多了,虽然头发掉了几根。

希望这篇文章能帮到你。

如果你还在因为 GEO下载的表达量数据有负的 头疼。

去下载一下edgeR吧。

或者仔细找找原始Count。

路,总是走出来的。

哪怕一开始脚下是坑。

也要填平了继续走。

科研就是这样,苦中作乐。

加油,打工人。】

返回列表