拿到一组基因芯片或者RNA-seq数据,别急着做聚类,先问自己三个问题:样本是从哪来的?平台是什么?原始数据在哪?这篇内容就是为了解决你在使用 GEO 表达谱数据时常见的数据混乱、注释错误和批次效应问题。很多刚入行的博士或生物信息新手,拿到一个 GSE 编号就开始跑代码,最后发现结论全是噪音,这很常见,但完全可以避免。
我有个研究生朋友,前年发文章,直接下了一个 GSE 编号的芯片数据,以为直接上传到官网就能用。结果审稿人一问:“这个平台的探针ID怎么做的注释?”他当场懵了。后来查了才发现,那个数据集是用 Afl 2.0 芯片做的,但他用的是默认的旧版注释包,导致近 40% 的探针匹配到了错误的基因上。这种低级错误,如果在数据收集阶段花半小时核对一下平台信息和样本特征,就能省掉三个月的重跑实验时间。这就是真实教训,数据不是现成的黄金,而是需要清洗的金矿石。
在处理 GEO 表达谱数据时,最大的坑在于“元数据”的缺失或错误。很多数据集的 Sample Series Matrix 文件里,分组信息写得极其模糊。比如只有“Control”和“Tumor”,但没写清楚 Tumor 是早期还是晚期,没写性别和年龄分布。如果你不手动去查原始样本的 Supplemental File,很容易引入巨大的混杂因素。我手头有个项目,分析结直肠癌数据,发现处理组里混入了几个术后化疗过的样本,直接做差异分析,结果那些化疗药物相关的通路被疯狂富集,根本不是癌症本身的生物学差异。最后不得不排除这些样本,重新跑分析。所以,别相信官网给出的分组列表,一定要去 Source 表格里一个个看。
还有一个容易被忽视的问题是技术重复和生物重复的混淆。GEO 里很多早期数据,同一个病人取三个位点测序,被当作三个独立的生物样本上传。如果你把这三个点当成三个独立样本做差异分析,自由度虚高,P 值假小,出来的显著基因根本没法重复。我在分析一个胃癌数据集时,特意去看了样本备注,发现每组其实只有两个独立的病人体内取样,其他全是技术重复。强行纳入分析后,热图看起来漂亮,但 PCA 图里样本完全按批次 clustering,而不是按病情,这就说明数据有严重偏差。这时候必须用 limma 的 removeBatchEffect 或者 ComBat 做校正,但校正的前提是你得先识别出什么是批次效应。
价格方面,现在纯分析一个 GEO 数据集,如果委托商业公司,起步价大概在 5000 到 8000 元人民币之间,取决于是否包含复杂的生存分析和通路富集。如果是自己学,除了时间成本,基本为零。但你要知道,便宜的陷阱在于“黑箱操作”。很多外包服务只给你最终的结果图表,不给代码,也不给中间处理步骤。一旦结果不对劲,你连查哪里出错都找不到。我建议尽量自己跑一遍流程,哪怕是用 R 语言简单的脚本,也要把每个步骤记录清楚。比如,用 Annotation.db 包做注释时,记录下你用的版本,因为不同版本的基因映射关系可能不同。
最后,结论很直接:GEO 表达谱数据是好东西,但它不是现成的论文。你必须像个侦探一样去审视每一个样本,去理解实验设计的初衷。不要只盯着显著性 P 值小于 0.05 的基因,去看看那些FoldChange很低但P值也大的基因,它们可能代表了真实的微弱但一致的生物学信号。真正的洞察力,往往藏在被忽略的细节里,而不是显著的顶格数字中。