做生信这行十年,我见过太多新手死磕在数据合并这一步。很多人以为把TCGA和GEO的数据扔进R语言里跑个merge就完事了,结果发出来的图全是乱码,或者P值显著得离谱,审稿人一看就知道是批次效应没处理好。今天我不讲那些虚头巴脑的理论,直接上干货,聊聊怎么把这两个“冤家”真正捏合在一起。
说实话,TCGA和GEO数据集合并这事儿,真不是简单的1+1=2。TCGA的数据质量高,标准化做得好,但样本量相对固定;GEO呢,数据量大,各种平台都有,但噪音也大,就像菜市场里的菜,得挑着洗。我之前带过一个学生,急着发文章,没做标准化直接合并,结果聚类图里样本按平台分,而不是按疾病状态分,那场面简直尴尬。
第一步,必须得做平台映射和基因过滤。这是基础中的基础。GEO里有些探针对应多个基因,或者根本匹配不上,你得把这些脏数据剔除。别嫌麻烦,这一步省不得。我一般建议用biomaRt包,把GEO的探针ID转成Entrez ID或者Symbol,跟TCGA对齐。这里有个坑,就是不同平台对同一个基因的注释可能不一样,比如有的叫TP53,有的叫p53,你得统一命名。别信网上那些一键转换的代码,大多有bug,自己得一个个核对。
第二步,批次效应校正,这是最核心的。很多人用ComBat,觉得好用就完事了。但我得说,ComBat虽好,别滥用。如果你的样本量太小,或者组间差异极大,ComBat可能会把生物学信号也一起抹掉。我有个案例,是肺癌数据,合并后做PCA,发现肿瘤和正常样本混在一起了,后来发现是校正过度。这时候得看PCA图,如果组内聚集性好,组间分离明显,那才是对的。如果实在拿不准,可以用sva包里的removeBatchEffect,或者试试Harmony,最近挺火的,对高维数据效果不错。记住,校正不是目的,保留生物学差异才是王道。
第三步,验证和可视化。合并完别急着分析,先画个火山图或者箱线图,看看关键基因的表达分布是否合理。比如看几个管家基因,像GAPDH、ACTB,它们在两组里的表达应该差不多。如果管家基因都抖得厉害,那说明合并出了问题。我通常还会挑几个已知标志物,比如肺癌里的EGFR,看看在合并后的数据里是不是能跑出显著差异。这一步能帮你排除掉80%的低级错误。
最后,我想说,TCGA和GEO数据集合并不是为了凑样本量,而是为了增强统计效力。别为了合并而合并,如果两个数据集差异太大,强扭的瓜不甜。有时候,单独分析TCGA,再拿GEO做验证,反而更稳妥。但如果你非要合并,那就得沉下心来,把每一步都踩实了。
这行干久了,你会发现,工具只是辅助,思路才是关键。别总想着走捷径,那些看似简单的代码背后,都是前人踩过的坑。希望这篇能帮你少走弯路,毕竟头发掉得够多了,没必要再因为数据合并这种基础问题加班到凌晨。
本文关键词:TCGA和GEO数据集合并