细腻小白上一节我分享了学习 WGCNA的第一部分,主要介绍了WGCNA以及第一部分的数据预处理。今天我将继续学习学WGCNA的第二部分,即数据的处理,并介绍解读代码。
首先,读取数据。(回顾一下,这是另一个数据的“长相”)
allTraits = read.csv("D:/practice/test/clin_data.csv")
datTraits = allTraits[match(rownames(datExpr),allTraits$flavor_name),]
rownames(datTraits) = datTraits[,1]
datTraits = datTraits[,-1]
1. 读取数据;
2. 将这个数据和上一个数据表,按照flavor_name匹配在一起,方便后面的处理;
3. 第一列作为行名;
4. 把多出的重复的第一列去掉。
已经删去不需要的部分,再次聚类检查数据。
sampleTree2 = hclust(dist(datExpr), method = "average")
traitColors = numbers2colors(datTraits, signed = FALSE)
#pdf(file = 'D:/practice/test/re_clust.pdf',width = 12,height = 8)
plotDendroAndColors(sampleTree2,traitColors,groupLabels = names(datTraits),main='Sample dendrogram and trait heatmap')
#dev.off()
1. 使用平均的算法对样本聚类;
2. 定义出将要绘制热图中的颜色分组;
3. 绘制出聚类热图,检查样本的分组信息;
4. #根据自己需要,使用pdf的函数。
绘制出样本聚类图以及临床特征热图
图如下,上半部分就是样本的聚类图,标注为样本名;下半部分为临床数据特征热图。
对数据完成了基本的处理,我们就准备开始仔细分析。
在分析前,我还是想要简单讲一下WGCNA的weighted部分!!加权,给了这个网络一个权重,这个权重是什么?原理是什么?
(不会太难的,都是用白话和自己的理解,希望看完你们也有自己的理解,欢迎讨论)
加权是指对相关性值(也就是网络的边)进行幂运算,幂次的值就是软阈值 (这里是指,这个边界值/阈值是可以根据计算的结果来调整的,不是硬要求)。
无向网络的边属性计算方式为 abs(cor(geneX, geneY)) ^ power。
这种处理方式强化了强相关,弱化了弱相关或负相关,使得相关性数值更符合无标度网络特征,更具有生物意义。如果没有合适的阈值power,一般是由于部分样品与其它样品因为某种原因差别太大导致的,可根据具体问题移除部分样品或查看后面的经验值。这也是我们前面为何搞了那么多步的数据检查。
所以,看了上面这一段,也就明白了加权从何而来,以及我们接下来要进行的步骤。
把软阈值/幂的值确定下来
powers=c(c(1:10),seq(from = 12, to = 20, by = 2))
sft = pickSoftThreshold(datExpr, powerVector = powers, verbose = 5)
设置阈值向量,并且使用网络拓扑分析函数
sizeGrWindow(9, 5)
par(mfrow = c(1,2))
cex1 = 0.9
#pdf(file = 'D:/practice/test/power.pdf',width = 12,height = 8)
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")
#dev.off()
软阈值β与平局连通性的关系
(连通性就是网络的边,探讨的就是软阈值对网络边的影响)
绘制出的结果如下图
从左图中可以看到,6开始出现一个明显地变平缓的趋势,所以暂定软阈值为6;再观察右边的图,可以发现在6、7左右出现一个显然的斜率(看绝对值)变小的趋势。因此评估出来,6是一个拐点处,即选择作为软阈值/幂次的值。
到此为止,我们的所有前期工作就完成了。
下一期,我们将彻底结束剩余的分析部分。
每周进步一点点,如果你有任何的建议和疑问,都欢迎你积极地提出,我们会尽全力改进和回答的~~~
(完)
联系我们
官方网页 :https://www.yiqishiyan.com/index
咨询客服 :Yqsyw12345 (微信号)
网友评论