做生信分析的兄弟,谁没被GEO数据折磨过?
特别是手里攥着3个GEO数据集,想做个WGCNA看看共表达模块。
心里是不是直打鼓?
怕批次效应搞死你,怕结果出不来,更怕发文章被审稿人喷。
我干了11年这行,踩过无数坑。
今天不整那些虚头巴脑的理论,直接上干货。
怎么把3个GEO数据整合做wgcna,还能跑出漂亮的结果?
先说个真事儿。
上个月有个粉丝找我,说他的3个GEO数据整合做wgcna,跑出来相关性全是0.5以下。
我一看代码,好家伙,直接拿原始count值去算相关系数。
这能行吗?
当然不行。
第一步,数据清洗要狠。
别觉得原始数据是上帝给的就不能动。
每个GEO平台的探针映射表都不一样。
你得先统一映射到Gene Symbol。
映射的时候,如果一个基因对应多个探针,别急着删。
取平均表达量,或者取方差最大的那个探针。
这一步做不好,后面全是垃圾。
第二步,批次效应校正,这是核心。
很多人问,3个GEO数据整合做wgcna,要不要用ComBat?
我的建议是:要看情况。
如果3个数据集样本量差不多,且生物学差异不大,可以用ComBat。
但如果样本量悬殊,或者批次效应特别强,ComBat可能会抹杀掉真实的生物学信号。
这时候,试试sva包里的removeBatchEffect。
或者,更激进点,直接用limma的voom转换后,再校正。
我一般喜欢用Harmony,虽然它是单细胞用的,但批量数据也能凑合用,效果出乎意料的好。
记住,校正完一定要画PCA图看看。
如果3个数据集的点混在一起了,那才叫成功。
要是还分得清清楚楚,赶紧重来。
第三步,构建网络前的筛选。
别拿几千个基因进去跑WGCNA,电脑会卡死,结果也不准。
先做方差过滤。
保留方差前20%-25%的基因。
这一步能去掉大量低表达的噪音基因。
然后,检查软阈值幂次。
不要盲目选6或者12。
要画scale-free topology fit index图。
选那个R平方大于0.85,且平均连接数还比较合理的幂次。
我见过太多人为了追求高幂次,强行选18,结果网络根本不符合无标度特性。
这时候做出来的模块,全是假阳性。
最后,整合后的WGCNA分析。
这里有个小技巧。
你可以分别对3个数据集做WGCNA,找到保守模块。
也可以把校正后的数据合并,做一个大的WGCNA。
我个人倾向于后者,因为样本量大,统计效力高。
但前提是,批次效应必须处理干净。
处理完后,找模块与性状的关联。
这时候,你会看到一些模块和临床特征高度相关。
把这些模块里的基因拿出来,做GO和KEGG富集。
这时候,你会发现,很多通路是3个数据集共有的。
这才是真正的生物意义。
别指望一次成功。
我当年做第一个3个GEO数据整合做wgcna的项目,改了整整8版代码。
头发都掉了一把。
但看到那个漂亮的聚类热图时,觉得值了。
所以,别怕麻烦。
每一步都要仔细检查。
数据清洗要细,批次校正要狠,网络构建要稳。
这样跑出来的结果,才经得起推敲。
希望这篇经验能帮到你。
如果你还在为3个GEO数据整合做wgcna头疼,不妨试试这几步。
哪怕只改了一个参数,可能结果就天差地别。
加油,生信人!