很多刚接触生物信息学的同学,经常问我一个问题,geo数据库是生信研究绕不开的一环吗?答案肯定是肯定的。GEO(Gene Expression Omnibus)就像是你做生信分析前的粮仓没有它你连米都煮不熟。
刚入行那年我犯过一个低级错误为了省事直接从某个博客下载的压缩包里的数据开始跑差异分析结果跑出来的结果和文献对不上。后来导师点醒我说你那些数据可能没做过原始质控甚至批次效应都没去。这给我提了个醒,数据源的选择和清洗,是成败的一半。
那怎么正确使用GEO里的数据呢?给大家梳理了几个实操步骤,照着做能避开80%的坑。
第一步,去NCBI官网搜索。别急着下载文件。先在浏览器里打开GEO页面输入你感兴趣的GSE编号。重点看Summary页里的Description。这里写的数据处理状态很关键。如果显示"Processed data available",说明有人做过标准化你可以直接下载normalized counts。如果只有原始文件你得自己处理。
第二步,下载数据并检查。建议下载RAW数据作为备份。然后下载Processed数据。我用R语言的read.table读入时建议把col.names=TRUE和sep=','设好,不然容易报错。
第三步,质控检查。这是最容易被忽略的。你可以用PCA图先看一眼样本有没有聚集。如果治疗组和对照组混在一起大概率是实验问题或者批次效应。另外,记得看每个探针的平均表达值有没有低于阈值的样本,如果有,考虑剔除或单独处理。
第四步,差异表达分析。常用Limma包。这里有个细节很多人不知道,Limma默认使用voom处理计数数据,但如果你用的是已经normalized的微阵列数据(比如MA),直接用lmfit就行,别多此一举。
第五步,富集分析。DEGs出来之后,用DAVID或ClusterProfiler做GO/KEGG分析。别只盯着p值,要看调节后的p值(p.adjust < 0.05)。
很多人觉得geo数据库是生信分析的起点,其实它是终点也是起点。因为好的故事需要真实的数据支撑。我之前帮一个朋友审稿,他们用的GEO数据里混进了两个来自健康志愿者的样本,导致结论完全站不住脚。所以,务必看清metadata里样本的具体属性。
还有一点,关于数据的版本。GEO数据库更新很快同一个GSE编号的数据可能会更新。一定要记录你下载数据的日期和版本。这也是为什么我在写论文时,会在Methods部分详细写明软件版本和参数设置。
生信不是魔法,它是一门手艺。geo数据库是生信人手中的锤子,你用得好,能打出漂亮的钉子;用不好,可能把手指头砸出血。保持敬畏心,仔细核对每一个数据源,你的分析才会站得住脚。
最后说一句掏心窝的话,别迷信那些一键生信的网站。自己动手跑一遍流程,哪怕跑不出来,排错的过程也是最好的学习。当你真正理解了每一步背后的逻辑,你才配得上发文章那一刻的成就感。