说实话,刚开始搞生物信息的时候,我看那些密密麻麻的数值,头都是大的。经常有人问:geo数据都经过log2嘛?这个问题乍一听挺小白,但真要是没搞明白,后面做的东西可能全歪了。
记得我那时候带学生,有个小伙子拿个表达矩阵来找我。
我一看,好家伙,有的基因表达量那是几千几万,有的连个位数都没有。
这数据分布歪得像个滑梯,直接用聚类,估计得乱成一锅粥。
我就问他:你拿什么做的分析?
他眨巴着大眼睛说:老师,这不是标准化后的数据吗?
我当时血压就高了。
标准化?那只是去除了批量效应,根本没解决偏态分布的问题啊。
这时候,log2变换的重要性就体现出来了。
为啥非要是log2?
因为生物数据,尤其是微阵列和早期的RNA-seq,往往服从对数正态分布。
你想啊,基因表达量差个几倍是好事,差个几万倍那就是天壤之别。
线性空间里,那个几万倍的数会把那些细微但重要的变化全淹没掉。
就像在一群巨人里面,你很难发现那个矮子有什么特别,除非你把巨人变小,或者把矮子放大。
取对数,就是把这种指数级的差异压缩成线性级的差异。
当然,现在大家更多接触的是RNA-seq的数据。
很多人有个误区,觉得RNA-seq用的是FPKM或者TPM,不用log2。
错!大错特错!
除非你是做差异表达分析里的那些专业软件,比如DESeq2内部会处理,但在你看图、做PCA、跑聚类之前,请务必加上log2。
不加log2的RNA-seq数据,方差和均值强相关,这玩意儿在统计检验里简直是噩梦。
我见过太多坑了。
有个博主,发文章里热图做得花里胡哨,颜色渐变极其漂亮。
结果我私下看了他的原始数据,好家伙,全是未变换的计数数据。
那热图看着跟乱码似的,完全看不出cluster的趋势。
这就好比你去买房,销售给你看的房价是“绝对值”,你根本感觉不出涨幅;如果改成“涨跌幅百分比”,那你瞬间就能感觉到市场的冷暖。
这里要提醒一句,log2变换的时候,最好加个小常数,比如log2(x+1)。
为啥?因为表达量为0的时候,log是负无穷,这在计算机里是没法处理的。
加个1,虽然有点粗糙,但对于大部分分析来说,足以救你一命。
那geo数据都经过log2嘛?
这得看原始数据是啥。
如果是Affymetrix芯片,通常厂家提供的Cel文件处理后的Probe-level data已经是log2了。
你可以直接去GEO下载GProcessed或者GPL注释过的文件,那时候基本已经是log2倍数了。
但如果是Raw data,或者是一些没处理好直接扔上去的Count数据,那不好意思,你得自己动手丰衣足食。
别信那些模板,看一眼数据的直方图。
要是直方图像个向右拖长尾巴的胖子,那大概率你得变换一下。
要是它乖乖地像个钟形曲线,那可能人家已经处理过了,或者本来就是连续型小数据。
总之,别懒,别省这一步。
数据可视化是骗不了人的,数据分布更是实打实的。
你要是拿个歪歪扭扭的数据去做欧氏距离计算,那结果就像是让一个胖子和一个瘦子比身高,纯属胡扯。
说到这儿,心里有点堵。
现在网上教程太多了,很多都是复制粘贴,根本没人验证。
大家为了发文章,为了赶进度,往往是知其然不知其所以然。
等到审稿人让你解释为什么选那个参数时,你只能干瞪眼。
我希望大家在提交数据之前,真的花点时间,盯着直方图看个五分钟。
五分钟能省你一个月返工的时间。
还有,关于那geo数据都经过log2嘛这个问题,一定要搞清楚你的数据源头。
是从GEO直接下载的?还是自己测完的?
如果是自己测的,Count数据必须log2(Count+1);如果是芯片,看GPL文件说明。
别想当然。
生物信息不是玄学,是严谨的逻辑链条。
少一环,满盘皆输。
最后给点实在建议。
如果你实在搞不定数据处理的那些细节,或者不确定自己的变换是否正确。
别自己在那瞎猜,猜错了就是废数据。
去找专业的机构,或者找个懂行的前辈帮你看一眼原始分布。
哪怕花点钱,买个心安,也比后面推倒重来强。
毕竟,科研的尽头是真诚,不是糊弄自己。
遇到数据分布奇怪、结果跑不通的情况,记得随时聊聊。
我是真心想帮大家避开这些隐形的坑。
毕竟,看着好数据被毁掉,比我自己写不出来还难受。
咱们下期见,记得多看看图,别光看数字。