做生信分析,最怕什么?不是代码跑不通,而是拿到数据发现全是坑。
最近帮几个研究生朋友看项目,发现一个普遍现象:大家拿到geo单细胞数据,第一反应是赶紧跑流程,Seurat、Scanpy一顿操作猛如虎,结果最后画图好看,结论却经不起推敲。
为什么?因为很多人根本不懂怎么清洗数据,怎么区分批次效应和生物学差异。
我见过一个真实案例。某团队从GEO下载了一个乳腺癌的单细胞数据集,样本量不大,但看着挺美。他们直接合并所有样本,聚类后发现几个明显的亚群。兴奋地发文章,结果审稿人一眼看出:那几个“独特亚群”,其实是不同患者样本在测序深度上的差异造成的批次效应,根本不是新的细胞类型。
这亏吃得冤不冤?太冤了。
所以,今天我不讲那些高大上的算法原理,就讲讲怎么从geo单细胞数据里挖出真金子,避开那些假繁荣。
第一步,别急着下载,先看清元数据。
很多人下载数据就像开盲盒,拿到就分析。大错特错。你得去GEO官网,仔细看Sample和Series的备注。看看有没有标注是新鲜组织还是冻存组织?有没有标注是PBMC还是组织解离?
比如,有些数据是10x Genomics做的,有些是Drop-seq。这两种技术捕获效率不同,直接混在一起分析,结果肯定歪。我之前处理过一个数据集,没注意看,把两种平台的数据硬凑一起,结果发现线粒体基因占比高的细胞,全是Drop-seq的数据,这明显是技术偏差,不是生物学现象。
第二步,质控要狠,别心软。
拿到Fastq或Count矩阵,第一件事就是质控。别听信什么“保留更多细胞更准确”的鬼话。
看线粒体基因比例。如果某个样本线粒体基因占比超过20%,大概率是死细胞或者破损细胞,直接扔掉。看UMI数量。太少的可能是空液滴,太多的可能是双细胞。
我有个学生,之前舍不得删数据,保留了大量低质量细胞,最后聚类结果一团糟,根本分不开群。后来狠心删掉30%的低质量细胞,结果细胞亚群清晰得像切豆腐。记住,垃圾进,垃圾出。
第三步,批次校正要谨慎,别过度。
这是最容易翻车的地方。很多工具像Harmony、BBKNN、Seurat的CCA,都能做批次校正。但校正过度,会把真实的生物学差异抹平。
怎么判断?看PCA图。校正前,如果不同样本的细胞混在一起,说明批次效应不明显,或者生物学差异主导。如果校正后,原本分开的亚群强行挤在一起,那可能就把真实差异抹掉了。
建议先用简单的PCA看看,再决定用不用校正。如果样本来自同一批实验,只是不同患者,其实不用强校正,直接整合分析可能更稳妥。
第四步,注释要参考权威,别靠猜。
聚类出来一堆群,怎么知道是T细胞还是B细胞?别只看Marker基因名字,要去查文献,或者用SingleR这样的工具自动注释。
我见过有人把NK细胞注释成T细胞,因为Marker基因有点像。结果结论全错。一定要结合已知Marker,比如CD3E是T细胞,CD19是B细胞,CD14是单核细胞。如果有疑问,去CellMarker数据库查一下。
最后,总结一下。
做geo单细胞数据,核心不是跑代码,而是思考。思考数据的来源,思考质控的标准,思考校正的边界。
别被漂亮的UMAP图迷了眼,那可能是技术噪音。
如果你还在为数据清洗头疼,或者聚类结果总是不理想,不妨停下来,重新审视一下你的质控步骤。有时候,退一步,反而能看清真相。
如果你遇到搞不定的数据,或者分析结果总是被质疑,欢迎来聊聊。别怕问题复杂,咱们一起拆解,总能找到出路。