拿到GEO单细胞测序原始数据一脸懵?不知道怎么质控、聚类,更别提找差异基因了?这篇文章不整虚的,直接拿我最近帮客户跑的一个真实项目举例,告诉你怎么从一堆乱码里扒出有价值的生物标志物,全程干货,建议收藏慢慢看。
先说个真事儿。上个月有个搞肿瘤免疫的学生找我,手里有个GSE123456(化名)的数据,说是老板让他赶紧出结果,不然延毕。他之前自己用Seurat跑了一遍,结果UMAP图散得像烟花,聚类根本分不开,最后哭着来找我。我一看他的代码,好家伙,连基本的线粒体基因比例都没过滤,直接拿原始计数矩阵做PCA,这不出bug才怪。单细胞数据这东西,噪音大得离谱,你稍微手松一点,后面全是垃圾。
咱们做分析,第一步绝对不是急着聚类,而是质控。这一步做不好,后面全是白搭。我一般建议,线粒体基因占比超过20%的细胞,直接扔。为什么?因为那些细胞要么死了,要么破损了,测出来的数据全是背景噪音。还有,每个细胞检测到的基因数太少的,也删掉。我那个学生案例里,他保留了大量低质量细胞,导致后续聚类的时候,那些死细胞混在活细胞里,硬生生把几个亚群给搅浑了。这就是典型的“垃圾进,垃圾出”。
接下来就是标准化和降维。这里有个坑,很多新手喜欢用LogNormalize,但对于某些高表达基因特别突出的样本,这个方法可能会掩盖真实的生物学差异。我通常会建议先看看数据的分布,如果偏态严重,试试SCTransform,这个算法能更好地处理技术噪音。我上次处理的一个白血病数据集,用了SCTransform后,T细胞和B细胞的界限瞬间清晰了,而用LogNormalize的话,这两个群混在一起,根本分不清。
聚类之后,就是找标记基因。这里要注意,不要只看p值,要看LogFC。有时候p值很小,但LogFC只有0.1,这种差异在生物学上意义不大。我习惯结合几个marker基因一起看,比如T细胞看CD3D、CD3E,B细胞看CD19、MS4A1。如果聚类出来的群,marker基因表达很乱,那说明聚类质量不行,得回去调整分辨率参数。我一般从0.4开始试,慢慢调,直到每个群都有明确的marker支持。
最后一步,功能富集分析。很多人跑完GSEA就完事了,其实这一步很容易出错。比如你选了GO分析,结果出来一堆“细胞代谢过程”,这种太宽泛的词,对解释机制没啥帮助。我建议多看看KEGG通路,或者用clusterProfiler里的dotplot来可视化。我上次帮一个客户分析GEO单细胞数据时,发现某个亚群在“细胞因子受体信号通路”上显著富集,结合文献,推测这个亚群可能在免疫逃逸中起作用,这个点后来成了他文章的核心亮点。
说几个常见的坑。第一,不要盲目相信自动化的流程。现在的单细胞分析工具很多,但每个工具的参数设置都不一样,你得根据自己的数据特点去调。第二,样本量太小别硬做。如果每个组只有3个样本,统计效力不够,差异分析的结果不可靠。第三,别忘了批次效应。如果数据来自不同批次,一定要用Harmony或BBKNN这些工具校正,不然你看到的差异可能只是技术偏差。
总之,分析GEO单细胞数据这事儿,技术是基础,但生物学思考才是核心。别光盯着代码跑得快不快,要多想想数据背后的生物学意义。我见过太多人为了发文章,硬凑数据,结果做出来的图虽然漂亮,但经不起推敲。咱们做科研,得对得起自己的良心,也得对得起读者的时间。希望这些经验能帮你在分析GEO单细胞数据时少走弯路,早点发文章。