WGCNA 加权基因共表达网络分析教程
WGCNA 加权基因共表达网络分析教程
2024-07-01·Cy257·约 5 分钟读完
什么是 WGCNA?
WGCNA(Weighted Gene Co-Expression Network Analysis),即加权基因共表达网络分析,用于寻找高度相关的基因构成的基因模块(module),利用模块特征基因 eigengene(模块内第一主成分)或模块内的关键基因 Hub gene 来总结这些模块,最终将基因模块与样本表型进行关联。
简单来说,WGCNA 其实相当于是对多个复杂分组进行的差异分析,用于找寻不同分组/表型的特征基因模块。其最核心之处就在于能将基因模块与样本表型进行关联,从而发现与特定性状相关的基因集合。
适用场景
WGCNA 并非所有情况都适用,选择合适的场景很重要:
- 适合:多分组、时间序列、不同浓度梯度等复杂实验设计。样品数量多(≥15),不同基因之间可以计算合理的相关性,根据基因之间的相似性进行分组
- 不适合:只有两个分组(如正常 vs 对照)的情况,简单的差异分析即可,没必要上 WGCNA。而且两分组样品数通常 <15,官方也不推荐
如果一个表达量矩阵中样品是时间序列这样的多分组,比如处理前后以及处理过程的不同时间梯度或者不同浓度,那么就需要每个分组都去跟对照组进行差异分析,上下调的组合非常多,结果也很难精炼出生物学结论,这个时候就可以选择 WGCNA 或者 mfuzz 这样的时间序列分析。
分析流程总览
WGCNA 的标准分析流程分为以下几步:
| 步骤 | 内容 |
|---|---|
| 0 | 输入数据准备 |
| 1 | 判断数据质量,绘制样品的系统聚类树 |
| 2 | 挑选最佳软阈值 power |
| 3 | 构建加权共表达网络,识别基因模块 |
| 4 | 关联基因模块与表型 |
| 5 | 模块相关性热图 |
| 6 | 对感兴趣模块进行 GO 富集分析 |
| 7 | 感兴趣模块绘制热图 |
| 8 | 提取 Hub gene,导出至 VisANT 或 Cytoscape |
注意事项
- 样本数 ≥ 15,否则网络不稳定
- 基因过滤:采用均值、方差、中位数、绝对中位差(MAD)等方法,过滤低表达或样本间变化小的基因。不建议用差异分析的结果来过滤
- 输入数据:如果有批次效应需要先去除;RNA-seq 数据建议使用 DESeq2 的
varianceStabilizingTransformation方法,或将标准化数据(FPKM、CPM 等)进行log2(x+1)转化 - 经验软阈值 power:当无向网络在 power < 15(或有向网络 power < 30)内无法达到要求时(即没有一个 power 值可以使无标度网络结构 R² 达到 0.8 且平均连接度降到 100 以下),可采用经验 power 值
R 代码实现
1. 数据前处理
| |
2. 样本聚类与异常检测
| |
3. 选择软阈值(Soft Thresholding)
WGCNA 的核心思想是将基因间的相关系数取 β 次幂(即 soft threshold power),使网络接近无标度分布(scale-free topology)。
| |
4. 构建共表达网络与模块识别
| |
5. 模块与表型关联
| |
6. 分类性状处理
不同类型的表型变量需要不同的处理方式:
| |
注意:如果一个变量只有两个类别(比如 normal 和 tumor),把它变成两列的做法是错误的!虽然很多文章中这样用,但这不符合统计原理。
7. 提取 Hub Gene
| |
8. 导出至 Cytoscape
| |
小结
WGCNA 的核心价值在于将基因表达模式与表型数据直接关联,找到与特定性状相关的基因模块,而不需要预先指定差异基因列表。分析完成后,可以对感兴趣模块内的基因进行 GO/KEGG 富集分析、PPI 网络分析等下游操作。
| 步骤 | 关键函数 | 输出 |
|---|---|---|
| 数据准备 | goodSamplesGenes() | 过滤后的表达矩阵 |
| 软阈值选择 | pickSoftThreshold() | 最佳 power 值 |
| 模块识别 | blockwiseModules() | 基因-模块对应关系 |
| 表型关联 | cor() + 热图 | 模块-表型相关性 |
| Hub gene | Module Membership | 核心基因列表 |
| 网络可视化 | exportNetworkToCytoscape() | Cytoscape 输入文件 |
最后更新于