搞懂GEO的FPKM文件,别被那些乱七八糟的数据坑了,老手教你避坑
做生信分析的朋友,谁没被GEO数据库里的FPKM文件折磨过?这篇东西直接告诉你怎么从GEO下载FPKM数据,怎么清洗,以及为什么现在很多人其实更推荐用TPM。读完这篇,你就不用再对着那些乱码一样的表达量矩阵发愁了。
咱们干这行十二年,见过太多新手死磕FPKM。记得08年那会儿,FPKM确实是主流,毕竟它能消除测序深度和基因长度的影响。但时代变了,兄弟们。现在GEO上那些老数据,很多还是FPKM格式,你得会处理。
先说下载。去GEO官网搜GSE号,别光看Series Matrix File。有时候你得点进Sample,看Supplementary file。很多大牛上传的数据,原始计数矩阵(Count)可能藏在里面,这才是王道。但如果只有FPKM,你也得接招。
我有个学员,去年接了个单,客户给了一堆GEO的FPKM文件,让他做差异表达。他直接用DESeq2跑,结果报错报得亲妈都不认识。为啥?DESeq2要的是原始计数,不是FPKM。FPKM是归一化后的值,方差结构不对。这就像你拿已经调好味的菜,非要再撒一遍盐,味道能对吗?
这时候,如果你手里只有FPKM,咋办?两个路子。第一,去碰运气找原始数据。第二,用limma-voom或者edgeR的某些方法,强行把FPKM当计数用,但这有风险,统计效能会下降。我一般建议,如果必须用FPKM,就转成TPM再分析,或者直接用非参数检验,虽然power低点,但至少不瞎搞。
说到TPM,这玩意儿比FPKM更靠谱。FPKM有个坑,就是它假设所有样本的总表达量是一样的,但这在实际中根本不成立。TPM先对基因长度归一化,再对测序深度归一化,顺序反了,结果就不一样。我在处理一批癌症数据时,发现用FPKM算出来的差异基因,换TPM后,有一半对不上。这差距,可不是小数点后几位的事儿,是生物学意义的根本差异。
再聊聊数据清洗。GEO上的FPKM文件,经常混着一些奇怪的字符,比如“NA”、“NaN”,甚至有的基因名带空格。你得用R语言好好洗一遍。我常用的代码片段,先读入,然后去掉含NA的行,再标准化。别嫌麻烦,这一步省了,后面分析全废。
还有,注意批次效应。GEO的数据,很多是不同实验室、不同时间做的。FPKM值在不同批次间可能有系统性偏差。你得用ComBat或者SVA来校正。我见过一个案例,两个组别看起来差异巨大,结果一校正,P值直接飘到0.5以上。这教训,血淋淋的。
最后,给个结论。GEO的FPKM文件虽然还在,但别把它当宝贝供着。能找原始计数最好,找不到再考虑FPKM/TPM。如果是做探索性分析,FPKM凑合用;如果是发文章,最好用更严谨的方法。别为了省事,拿错误的数据得出错误的结论,那才是最大的坑。
记住,数据是死的,人是活的。多看看文献,多问问同行,别闷头瞎算。这行干久了,你会发现,最难的从来不是代码,而是对数据的敬畏之心。
本文关键词:GEO的FPKM文件