你是不是也遇到了这个头疼的问题?
下载了两组GEO数据,想合并起来做分析。结果发现,一组数据表达量普遍偏高,另一组偏低。
稍微仔细一看,原始数据里的基因名字还有乱码。
或者批次效应比生物学差异还大。
这时候别慌,硬合并会导致你的PCA图乱七八糟。
这篇指南直接告诉你怎么清洗和校正。
不整那些虚的,全是干货。
第一步,先搞清楚你手里的数据到底乱在哪。
很多新手直接拿原始CEL文件或者GPL矩阵去跑ComBat。
这是大忌。
你必须先检查基因ID是否一致。
比如Affymetrix芯片,不同探针可能映射到同一个基因。
这时候要取平均值或者选方差最大的探针。
如果两组数据一个是Microarray,一个是RNA-seq。
那根本没法直接校正。
必须重新转录或者降维到通路水平。
这一步要是错了,后面全是白搭。
我见过不少人,连平台类型都没看清就急着合并。
最后做出来的差异基因全是噪音。
记住,清洗数据比校正更重要。
第二步,选择正确的校正工具。
现在最常用的是sva包里的ComBat。
或者recentry包里的Harmony。
但ComBat有个前提,你的数据必须是对数转换过的。
如果是原始计数数据,直接丢进去会报错。
或者出现负值。
我有一次就犯了这个错。
直接把TPM值拿去ComBat。
结果有些基因表达量变成了负数。
这物理意义上说不通啊。
后来我把数据先做了log2(TPM+1)转换。
再运行ComBat。
问题解决。
另外,ComBat需要指定批次变量。
这个变量不能是随机生成的。
必须是明确的实验批次。
比如不同年份测序、不同实验室、或者不同处理时间。
如果你搞错了批次信息。
可能会把真正的生物学信号当成批次效应给消除掉。
这是最惨的教训。
我见过一个案例,把不同性别的样本当成了批次。
结果校正后,性别相关的差异基因全消失了。
这就得不偿失了。
所以,在运行代码前。
一定要画个PCA图看看。
如果样本主要是按批次聚类。
说明批次效应很强。
如果样本按分组聚类。
那可能没必要过度校正。
第三步,验证校正效果。
很多人跑完校正就完事了。
觉得看着顺眼就行。
这不行。
你得量化一下。
使用kBET或者ASW指标。
看看局部差异是否减小。
同时,检查已知标记基因是否还保持差异。
如果看家基因变得不再稳定。
说明校正过度了。
我一般会用R包里的ggplot2画个图。
左边是校正前,右边是校正后。
观察样本点的分布。
理想情况是批次间混合,组间分开。
如果混合得特别好,但组间也混在一起。
那可能就是过度校正。
这时候要调整参数。
或者换用Harmony。
Harmony对单细胞数据更友好。
但它对bulk RNA-seq也有效。
关键是要看生物重复是否还聚在一起。
最后,关于GEO去除批次间效应。
这不仅仅是个技术问题。
更是个严谨性问题。
我在做课题时发现。
有些论文里的合并数据。
根本没提校正方法。
这种结果我不敢信。
你自己做的时候。
一定要把校正过程写清楚。
包括用了什么工具。
参数怎么设的。
这样审稿人才会觉得你专业。
还有一点,别迷信自动化流程。
每个数据集的情况都不一样。
有的数据缺失值多。
有的数据异常值多。
你得手动处理。
比如用median polish去除离群值。
或者用Imputation填补缺失值。
这一步挺耗时间的。
但为了结果准确。
值得折腾。
还有啊,代码别直接Ctrl C + V。
一定要看懂每一行在干嘛。
不然出了问题你都不知道从哪查。
我上次就是没看懂参数。
把Com里的covariates参数填错了。
导致结果完全错误。
查了三天才查出来。
这种坑尽量别踩。
希望这篇指南能帮你少走弯路。
毕竟,高质量的合并数据才是好文章的基础。
别为了快,牺牲了准确性。
学术没有捷径。
只有一步步来。
对了,记得备份原始数据。
一旦处理错了,还能重来。
这很重要。