首先,导入准备好的样本表达数据datExpr
、临床信息datTraits
以及构建的网络和模块networkConstruction-auto.RData
:
# 设定工作目录
setwd("/home/cxt/data/R/")
# 导入包
library(WGCNA)
# 设置将strings不要转成factors
options(stringsAsFactors=F)
# 允许使用最大线程
allowWGCNAThreads()
# 或者直接指定线程数
# enableWGCNAThreads(nThreads=16)
# 导入表达与临床数据
lnames = load(file = "dataInput.RData");
lnames
# 导入共表达网络及模块
lnames = load(file = "networkConstruction-auto.RData");
lnames
nGenes = ncol(datExpr)
nSamples = nrow(datExpr)
可视化加权网络的一种方法是绘制其热图。如下面的图1所示,热图的每行和每列对应一个基因,热图可以描绘邻接或拓扑重叠,浅色表示低邻接(重叠),深色表示较高邻接(重叠)。 此外,基因聚类树和模块可以沿热图的顶部和左侧绘制。 目前WGCNA提供了创建此类网络图的便捷功能。
我们可以通过下面的代码创建图1,但是注意,下面的代码适用于通过自动法和逐步法创建的网络和识别的模块,如果你用的分块法,就需要分别在每个块中执行可视化。
# 重新计算拓扑重叠:通过保存TOM可以更有效地实现这一点
# 重复模块检过程
dissTOM = 1-TOMsimilarityFromExpr(datExpr, power = sft$powerEstimate);
# 使用powe转换dissTOM,使中等强度的连接在heatmap中更加可见
plotTOM = dissTOM^sft$powerEstimate;
# 将对角线设为NA,这样画的更好
diag(plotTOM) = NA;
# 调用绘图函数
sizeGrWindow(9,9)
TOMplot(plotTOM, geneTree, moduleColors, main = "Network heatmap plot, all genes")
注意,生成热图图可能需要大量的时间。可以通过限制基因数量来加速作图;然而,一个基因子集的基因树谱往往与所有基因的基因树谱不同。在下面的例子中,我们将绘制的基因数量限制为400:
nSelect = 400
# 为了重现性,我们设置随机种子
set.seed(10);
select = sample(nGenes, size = nSelect);
selectTOM = dissTOM[select, select];
# 没有一种简单的方法可以将聚类树限制为基因的子集,因此我们必须重新聚类。
selectTree = hclust(as.dist(selectTOM), method = "average")
selectColors = moduleColors[select];
# 打开绘图窗口
sizeGrWindow(9,9)
# 将dissimilarity转化为power,比如10,通过有效地改变,可以让情节更加丰富
# 调色板;将对角线设置为NA也可以提高剧情的清晰度
plotDiss = selectTOM^sft$powerEstimate;
diag(plotDiss) = NA;
TOMplot(plotDiss, selectTree, selectColors, main = "Network heatmap plot, selected genes")
研究发现的模块之间的关系通常很有趣。可以用特征基因作为代表谱,通过特征基因相关来量化模块相似性。目前WGCNA提供了一个方便的函数ploteigengenetworks
,它生成一个特征基因网络的摘要图。将一个临床特征(或多个特征)添加到特征基因中,看看这些特征如何与特征基因网络相适应:
# 重新计算module eigengenes
MEs = moduleEigengenes(datExpr, moduleColors)$eigengenes
# 从临床特征中分离出体重
weight = as.data.frame(datTraits$weight_g);
names(weight) = "weight"
# 将体重添加到现有的module eigengenes
MET = orderMEs(cbind(MEs, weight))
# 绘制特征基因与临床特征(体重)之间的关系
sizeGrWindow(5,7.5);
par(cex = 0.9)
plotEigengeneNetworks(MET, "", marDendro = c(0,4,1,2), marHeatmap = c(3,4,1,2), cex.lab = 0.8, xLabelsAngle
= 90)
该函数生成特征基因和临床特征的树状图,以及它们之间关系的热图。获得聚类树和热图的一部分,可以使用以下代码:
# 绘制聚类提
sizeGrWindow(6,6);
par(cex = 1.0)
plotEigengeneNetworks(MET, "Eigengene dendrogram", marDendro = c(0,4,2,0),
plotHeatmaps = FALSE)
# 绘制热图矩阵(注意:此图将覆盖聚类树)
par(cex = 1.0)
plotEigengeneNetworks(MET, "Eigengene adjacency heatmap", marHeatmap = c(3,4,2,2),
plotDendrograms = FALSE, xLabelsAngle = 90)
图2显示了上述代码的输出。特征基因的树状图和热图识别相关的特征基因组称为元模块。例如,树状图表明,红、棕、蓝三种模块高度相关;它们之间的相互关系比它们与体重的关系更强。另一方面,与体重显著相关的salmon模块与红色、棕色和蓝色模块不属于同一元模块的一部分,至少如果将meta模块定义为模块的紧密库(例如,特征基因相关性至少为0.5的模块)
对目前获得的数据的可视化展示,上述展示只是一部分,大家可以结合自己的专业,进一步进行个性化的展示。
本文由 石九流 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://blog.computsystmed.com/archives/translation-wgcna-network-visualization-using-wgcna-functions
最后更新:2019-05-26 21:43:05
Update your browser to view this website correctly. Update my browser now