做富集分析geo别瞎搞,这3个坑我踩了15年终于通了

做富集分析geo别瞎搞,这3个坑我踩了15年终于通了

本文关键词:富集分析geo

说实话,干这行15年了,我见过太多刚入行的硕士博士,拿到一堆差异基因就急着跑富集分析geo。结果呢?图做得花里胡哨,导师一看直摇头,因为根本解释不通生物学意义。今天我不讲那些高大上的算法公式,就聊聊怎么把富集分析geo这步走对,少走弯路。

先说个真事。去年有个学生找我,说他跑出来的GO富集分析结果,前20个条目全是“细胞组分”,而且全是线粒体、核糖体这种万金油词汇。我问他数据哪来的?他说直接拿差异基因列表丢进DAVID。我一看,好家伙,P值没校正,FDR没看,连背景基因集都没设对。这种结果发文章?审稿人第一句就是“方法学错误”。

富集分析geo的核心不是跑代码,而是理解“为什么富集”。很多新手以为只要P值小于0.05就是显著,大错特错。你要看的是调整后的P值(FDR或Bonferroni),还有基因数。比如一个通路里只有3个基因,就算P值再小,也可能只是偶然。反之,如果有50个基因富集在一个通路,哪怕P值是0.06,也值得深入挖掘。

我一般建议分三步走,别跳步。

第一步,数据清洗。别拿原始计数直接跑。先用DESeq2或edgeR做差异分析,设定logFC>1且FDR<0.05。记住,基因列表要干净,去掉那些表达量极低、几乎不表达的基因。这些噪音会严重干扰富集结果。我见过有人把非编码RNA混进去,结果KEGG通路分析全是“未注释”,浪费时间。

第二步,选对工具。R语言里的clusterProfiler是首选,功能全,可视化强。如果你不会编程,可以用Metascape或DAVID,但要注意它们的默认设置。比如Metascape会自动合并相似条目,这很好,但有时会把关键通路合并掉。我习惯用clusterProfiler,因为可以自定义背景基因集。比如你研究的是肝脏疾病,背景就应该用肝脏特异性表达的基因,而不是全基因组。这点很多人忽略,导致结果偏差。

第三步,结果解读。别只看条形图。要看气泡图、网络图。特别要注意“冗余”问题。比如“细胞凋亡”和“程序性细胞死亡”可能同时出现,其实是一个意思。这时候要用REVIGO或者clusterProfiler的reduce函数去冗余。否则你写论文时,会被审稿人问“这两个条目有什么区别?”你答不上来就尴尬了。

再说说KEGG通路分析。很多同行只关注通路名称,不看通路图。其实,看通路图才能知道哪些基因是关键节点。比如一个通路里,上游激酶没变,下游转录因子变了,那调控逻辑就完全不同。我常建议学生把显著富集的通路截图,标出差异基因,这样在讨论部分才有说服力。

最后,给个真实建议。富集分析geo只是起点,不是终点。它告诉你“可能发生了什么”,但不能证明“确实发生了”。一定要结合实验验证,比如qPCR或WB。别指望靠富集分析就得出完美结论。还有,记得检查物种注释。小鼠和人基因名不一样,别搞混了。我见过有人把小鼠基因名直接当人用,结果富集出“人类特有”的通路,闹大笑话。

总之,富集分析geo不难,难在细节。多查文献,多对比,别怕麻烦。如果你还在为结果不显著发愁,或者不知道怎么看图,欢迎随时交流。别自己瞎琢磨,容易走偏。