1. WGCNA分析入门:从零开始掌握核心概念
第一次接触WGCNA(Weighted Gene Co-expression Network Analysis)时,我也被这个高大上的名字吓到了。但实际用起来才发现,它就像给基因表达数据做"社交网络分析"——找出哪些基因喜欢扎堆活动,哪些基因是社交达人(hub基因)。这种分析方法特别适合处理高通量基因表达数据,比如RNA-seq结果。
WGCNA的核心思想很简单:通过计算基因间的相关性,把行为相似的基因归为同一个模块。这些模块就像公司里的不同部门,有的负责代谢,有的参与免疫反应。而每个模块里的"部门经理"就是hub基因,它们往往在生物学功能中起关键作用。
为什么要用WGCNA?我遇到的实际案例中,有个研究生想从3000个差异表达基因里找出关键调控网络。传统方法只能得到一堆散点,而WGCNA帮他找到了3个核心功能模块,其中一个模块的hub基因正好是他研究的信号通路关键因子。这就是WGCNA的价值——它让海量数据变得有结构、可解释。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据预处理:打好分析基础的关键步骤
2.1 数据导入与格式转换
数据预处理就像做饭前的备菜,处理不好后面全完蛋。我常用的输入数据是基因表达矩阵,行是基因,列是样本。第一次用的时候犯了个低级错误——忘记转置了,结果聚类出来全是基因而不是样本,白白浪费两小时。
r复制# 正确做法示例
expr_data <- read.csv("ExpData_WGCNA.csv", row.names = 1)
datExpr <- data.frame(t(expr_data)) # 关键转置步骤
colnames(datExpr) <- rownames(expr_data)
rownames(datExpr) <- colnames(expr_data)
有个坑得特别注意:如果你的数据里有缺失值或异常值,WGCNA会直接报错。有次我数据里混了几个NA,折腾半天才发现。建议先用summary()检查数据完整性。
2.2 样本质量过滤
样本过滤是很多人容易忽略的步骤。有次分析结果很奇怪,最后发现是有个样本在运输过程中降解了。goodSamplesGenes()函数是WGCNA自带的质检员:
r复制gsg <- goodSamplesGenes(datExpr, verbose = 3)
if (!gsg$allOK) {
datExpr <- datExpr[gsg$goodSamples, gsg$goodGenes]
}
画样本聚类图能直观看出异常样本。我习惯用hclust配合dist函数:
r复制sampleTree <- hclust(dist(datExpr), method = "average")
pdf("sample_clustering.pdf")
plot(sampleTree, main = "Sample clustering")
dev.off()
看到离群样本怎么办?我的经验是:如果样本明显远离主群(比如高度>1500),果断去掉。但要注意保留至少30个样本,太少会影响网络构建。
3. 软阈值选择:构建稳健基因网络的核心参数
3.1 理解软阈值的重要性
软阈值(soft threshold)就像社交关系的"
