🤩 WGCNA | 值得你深入学习的生信分析方法!~(网状分析-
写在前面
上期我们完成了WGCNA
输入数据的清洗,然后进行了样本的聚类与异常值的剔除,总体来说是非常简单的。 😘
这期我们继续完成WGCNA
分析的第二步,网络构建和模块识别。🤒
用到的包
rm(list = ls())
library(WGCNA)
library(tidyverse)
示例数据
load("FemaleLiver-01-dataInput.RData")
软阈值
4.1 topology analysis
首先我们要进行soft thresholding power β
的计算。🤒
powers <- c(c(1:10), seq(from = 12, to=20, by=2))
sft <- pickSoftThreshold(datExpr, powerVector = powers, verbose = 5)
4.2 可视化
这个时候我们可以看到最佳的soft thresholding power β
为6
,后面我们会用到。😚
sizeGrWindow(9, 5)
par(mfrow = c(1,2))
cex1 = 0.9;
plot(sft$fitIndices[,1], -sign(sft$fitIndices[,3])*sft$fitIndices[,2],
xlab="Soft Threshold (power)",
ylab="Scale Free Topology Model Fit,signed R^2",
type="n",
main = paste("Scale independence"))
text(sft$fitIndices[,1], -sign(sft$fitIndices[,3])*sft$fitIndices[,2],
labels=powers,cex=cex1,col="red")
abline(h=0.90,col="red")
plot(sft$fitIndices[,1], sft$fitIndices[,5],
xlab="Soft Threshold (power)",
ylab="Mean Connectivity",
type="n",
main = paste("Mean connectivity"))
text(sft$fitIndices[,1], sft$fitIndices[,5], labels=powers, cex=cex1,col="red")
构建网络与模块识别(一步法)
这里我们只需要一个函数就可以完成网络构建和模块识别,即blockwiseModules
,不过参数比较多,大家需要去好好理解,这里不做太多介绍了,大家看帮助文档吧。🧐
5.1 构建网络
这里会有一个maxBlockSize
的参数,大家可以根据自己的电脑配置进行选择,16 GB
内存最大值为20000
,32 GB
内存最大值为30000
。🤨
net <- blockwiseModules(datExpr, power = 6,
TOMType = "unsigned",
minModuleSize = 30,
reassignThreshold = 0, mergeCutHeight = 0.25,
numericLabels = T, pamRespectsDendro = F,
saveTOMs = T,
saveTOMFileBase = "femaleMouseTOM",
verbose = 3)
5.2 查看模块数
table(net$colors)
5.3 可视化
sizeGrWindow(12,9)
mergedColors <- labels2colors(net$colors)
plotDendroAndColors(net$dendrograms[[1]], mergedColors[net$blockGenes[[1]]],
"Module colors", dendroLabels = F, hang = 0.03, addGuide = T,
guideHang = 0.05)
5.4 save一下data
moduleLabels <- net$colors
moduleColors <- labels2colors(net$colors)
MEs <- net$MEs
geneTree <- net$dendrograms[[1]]
save(MEs, moduleLabels, moduleColors, geneTree,
file = "FemaleLiver-02-networkConstruction-auto.RData")
构建网络与模块识别(分步法)
6.1 共表达相似性与邻接距离计算
这里我们把之前算好的power
应用一下。😚
softPower <- 6
adjacency <- adjacency(datExpr, power = softPower)
6.2 计算TOM
这里我们需要把邻接矩阵
转换为Topological Overlap Matrix
(TOM矩阵
),最大限度地减少噪音和假相关性。🧐
TOM <- TOMsimilarity(adjacency);
dissTOM <- 1-TOM
6.3 基因聚类并可视化
geneTree <- hclust(as.dist(dissTOM), method = "average")
plot(geneTree,
xlab="", sub="",
main = "Gene clustering on TOM-based dissimilarity",
labels = F, hang = 0.04)
6.4 识别模块
我们一般喜欢基因多一点的模块,这里将最小的模块设置为30
。😏
补充一下 !这里0
模块是指未能归类到任意模块的基因。😷
minModuleSize <- 30
dynamicMods <- cutreeDynamic(dendro = geneTree, distM = dissTOM,
deepSplit = 2, pamRespectsDendro = F,
minClusterSize = minModuleSize)
table(dynamicMods)
6.5 数字转为颜色并可视化
上面的模块为数字,我们需要把它转成颜色进行可视化。🤨
dynamicColors <- labels2colors(dynamicMods)
table(dynamicColors)
sizeGrWindow(8,6)
plotDendroAndColors(geneTree, dynamicColors,
"Dynamic Tree Cut",
dendroLabels = F, hang = 0.03,
addGuide = T, guideHang = 0.05,
main = "Gene dendrogram and module colors")
6.6 合并表达相似的模块
MEList <- moduleEigengenes (datExpr, colors = dynamicColors)
MEs <- MEList$eigengenes
MEDiss = 1-cor(MEs);
METree <- hclust(as.dist(MEDiss), method = "average")
6.7 合并模块的可视化
这里我们将相关性在0.75
以上的模块合并在一起,当然你也可以按照你的要求来调整。🫶
sizeGrWindow(7,6)
plot(METree, main = "Clustering of module eigengenes",xlab = "", sub = "")
MEDissThres = 0.25
abline(h=MEDissThres, col = "red")
merge <- mergeCloseModules(datExpr, dynamicColors, cutHeight = MEDissThres, verbose = 3)
mergedColors <- merge$colors
mergedMEs <- merge$newMEs
sizeGrWindow(12,9)
plotDendroAndColors(geneTree, cbind(dynamicColors, mergedColors), c("Dynamic Tree Cut", "Merged dynamic"), dendroLabels = F, hang = 0.03, addGuide = T, guideHang = 0.05)
moduleColors <- mergedColors
colorOrder <- c("grey", standardColors(50))
moduleLabels <- match(moduleColors, colorOrder)-1
MEs <- mergedMEs
save一下
我们save
一下这个data
吧,后面会再用到。😉
save(MEs, moduleLabels, moduleColors, geneTree,
file = "FemaleLiver-02-networkConstruction-stepByStep.RData")
如何引用
📍
Langfelder, P., Horvath, S. WGCNA: an R package for weighted correlation network analysis. BMC Bioinformatics 9, 559 (2008). https://doi.org/10.1186/1471-2105-9-559
<center>最后祝大家早日不卷!~</center>
点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰
<center> <b>📍 往期精彩 <b> </center>
📍 <font size=1>🤩 ComplexHeatmap | 颜狗写的高颜值热图代码!</font>
📍 <font size=1>🤥 ComplexHeatmap | 你的热图注释还挤在一起看不清吗!?</font>
📍 <font size=1>🤨 Google | 谷歌翻译崩了我们怎么办!?(附完美解决方案)</font>
📍 <font size=1>🤩 scRNA-seq | 吐血整理的单细胞入门教程</font>
📍 <font size=1>🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~</font>
📍 <font size=1>🤩 RColorBrewer | 再多的配色也能轻松搞定!~</font>
📍 <font size=1>🧐 rms | 批量完成你的线性回归</font>
📍 <font size=1>🤩 CMplot | 完美复刻Nature上的曼哈顿图</font>
📍 <font size=1>🤠 Network | 高颜值动态网络可视化工具</font>
📍 <font size=1>🤗 boxjitter | 完美复刻Nature上的高颜值统计图</font>
📍 <font size=1>🤫 linkET | 完美解决ggcor安装失败方案(附教程)</font>
📍 <font size=1>......</font>
本文由mdnice多平台发布