WGCNA分析,为什么可以“无视”基因长度?

生信学长
2025年09月20日
生信基础知识
WGCNA分析,为什么可以“无视”基因长度?

大家下午好,今天跟大家聊一个WGCNA的问题,是在昨天一个学生来问的,大概就是对WGCNA的输入数据有疑问,问我用Count还是TPM?其实用这两种数据都可以处理用来做WGCNA,但是需要做合适处理,但我觉得更本质的问题是:“ 做每一个分析时,具体要用哪种形式的数据? ”。比如,TPM数据可以用来做跨样本分析,因为TPM已经去除测序深度、基因长度和批次的影响,只需要就行log2(TPM+1)转换后就可以用来做WGCNA;但是Count是原始数据,没有处理测序深度、基因长度等影响,能用来做WGCNA分析吗?先说结论,可以,而且只需要处理 测序深度即可。

下面我们一起来看为什么Count数据可以做 WGCNA。

WGCNA分析的目标,是在成千上万的基因里,找到那些表达模式总是同步变化的“基因搭档”。它核心关注的,不是哪个基因的绝对表达量更高,而是它们的表达节奏是否合拍。

这种对“节奏”相似性的判断,主要靠的是一种叫 相关性 分析 的数学方法。

问题来了:基因长度带来的“先天优势”

在基因测序(RNA-seq)的世界里,基因的长度会带来一个很“不公平”的现象。一个更长的基因,即使其真实表达水平与一个短基因完全相同,也更容易获得更高的测序计数值。

所以,当我们用 vst rlog 这些方法处理完数据后,虽然校正了每个样本的“整体测序环境”(测序深度),但每个基因因自身长度不同而带来的“先天优势”还在。

这看起来似乎很不公平,对吧?

补充一下:那原始的Count数据呢?为什么不能直接用?

在讨论基因长度之前,我们必须先明确一个更基础的问题: 为什么我们不直接用最原始的 Count 数据来做相关性分析?

直接使用原始 Count 矩阵是 绝对错误 的,因为它存在几个致命的问题,会彻底摧毁相关性分析的可靠性:

  1. 测序深度差异 :这是最大的问题。样本A可能测了2000万条reads,样本B只测了1000万条。这会导致样本A中所有基因的Count值都系统性地比样本B高出一倍左右。这种巨大的技术性差异会掩盖所有真实的生物学模式,导致你找到的“搭档”基因,仅仅是因为它们在测序深度高的样本中数值都偏高而已。
  2. 方差与均值强相关 :在Count数据中,表达量越高的基因,其数值波动范围(方差)也越大。这违反了相关性分析的基本假设。如果不加处理,那些高表达的“明星基因”会不成比例地主导整个网络的构建,而大量低表达但可能有重要协同功能的基因则会被忽略。
  3. 数据非连续且高度偏斜 :原始计数值是离散的整数,且分布极不均匀。相关性分析在处理近似连续、对称分布的数据时效果最好。

因此,我们必须先通过 vst rlog 等函数对原始 Count 数据进行转换 。这些转换的目的,正是为了解决上述三个核心问题:校正测序深度、稳定方差、使数据更接近连续分布。

为什么经过转换后,我们就可以“不在乎”基因长度了?

现在,我们有了一个经过 vst rlog 处理好的、干净的数据。我们知道,基因长度这个“先天优势”还在里面,但为什么此时我们可以“无视”它了呢?

因为 相关性分析,天生就对这种固定不变的“先天优势”不敏感。

我们来看两个生活中的例子:

例子一:医院科室的黄金搭档

想象在一个医院科室里,有两位医生:

  • 王主任(基因A) :经验丰富,他的月度绩效奖金基数是 20000元
  • 李医生(基因B) :刚入职的住院医师,月度绩效奖金基数是 5000元

王主任的奖金基数( 基因长度 )是李医生的4倍。但是,我们发现:

  • 科室效益好的月份,王主任拿了24000元奖金,李医生拿了6000元。(都超额完成了20%)
  • 科室效益差的月份,王主任只拿了16000元,李医生只拿了4000元。(都只完成了80%)

虽然他们奖金的 绝对数额 相差巨大,但他们的 变化模式(节奏) 是完全同步的!如果你去计算他们奖金变化的相关性,结果会非常高。王主任那个“4倍基数”的先天优势,完全没有影响我们判断他们是不是“黄金搭档”。

例子二:不同温标下的天气同步

我们要比较过去一年里, 北京(基因A) 纽约(基因B) 的每日气温变化模式是否同步。

  • 北京用的是我们熟悉的 摄氏度(°C)
  • 纽约用的是 华氏度(°F)

我们知道,华氏度 ≈ 摄氏度 × 1.8 + 32。这里的 × 1.8 ,就完美地模拟了“基因长度”这个固定不变的“先天优势”。

尽管北京和纽约的气温 绝对值 完全不同(比如北京25°C时,纽约是77°F),但只要它们都是夏天热、冬天冷,这两条温度曲线的 变化模式(节奏) 就是高度同步的!如果你去计算它们变化的相关性,结果会非常高。

那个 × 1.8 的“先天优势”,完全没有影响我们判断它们的节奏是不是合拍。

结论:我们到底该处理什么?

既然WGCNA不在乎基因长度这个“固定优势”,那我们在准备数据时,就应该专注于解决那些它真正在意的问题:

  1. 测序深度 :这是一个在不同样本间变化的因素,会影响所有基因,所以必须校正。 vst rlog 等方法完美地解决了这个问题。
  2. 数据的剧烈波动 :有些基因的表达量波动范围特别大,会掩盖其他基因的变化模式。 vst rlog 的核心作用就是“稳定”所有基因的波动,让大家都在一个更公平的尺度上比较节奏。

总结一下就是,WGCNA分析之所以可以使用未经基因长度校正的数据,是因为它的核心算法——相关性分析,只关心变化的“模式”是否同步,而能够聪明地“忽略”掉基因长度这种固定不变的“先天优势”。我们进行 vst rlog 转换,正是为了消除原始 Count 数据中那些真正会干扰“模式”判断的因素。


最后补充一句,我们要学会举一反三,比如下次做一种新的分析,需要了解我们手头上的数据类型和这种分析类型的特点,比如有些分析完全不需要处理基因长度的影响,因为在所有样本中都相互抵消了基因长度的影响。

所以学习分析类型的背后的原理也是很重要的,不然直接拿网上的代码,改成自己的数据来跑,图是能跑出来,但是一知半解。

欢迎各位老师同学交流🌹 ⬇️

感谢点赞 👍、转发 📤、关注 ⭐ 三连哦!