查看: 1743|回复: 32

[R语言] 如何进行基因共表达网络分析?

  [复制链接]

迅猛龙

Rank: 8Rank: 8

主题
257
注册时间
2020.6.16
在线时间
166 小时

发表于 2021.5.19 09:17:52 | 显示全部楼层 |阅读模式
本帖最后由 基迪奥-Jt桃 于 2021.5.19 09:17 编辑

相关性网络越来越多地应用于生物信息学中。例如,加权基因共表达网络分析(WGCNA, Weighted correlation network analysis)是一种描述样本之间基因相关模式(correlation patterns)的系统生物学方法。WGCNA可用于发现表达趋势高度相关的基因cluster(模块),也可将模块与样本表型进行关联,鉴定潜在的生物标志物或治疗靶点。  

WGCNA包是专门用于执行WGCNA的综合性R包。功能包括共表达网络构建、模块检测、基因筛选、网络拓扑属性计算和分析结果可视化等,其中,核心步骤是网络构建与模块的划分、模块与性状的关联分析以及目标模块内部分析,如下图。本文的主要内容是以具体的案例演示如何使用WGCNA包处理数据。


学习WGCNA分析之前需要一定的R语言基础,这里推荐大家参加基迪奥的转录组线上培训班。

课程表


培训时间:2021年5月24日-5月28日
授课形式:腾讯会议线上授课

报名费:1800元/人
团购报名:1500元(≥2人)

参加培训班即赠送OmicShare季会员,生信绘图工具免费使用,更可免费观看海量视频课程!

报名方式


方式1:
扫描下方二维码,填写信息报名


方式2:
发送姓名、学校、电话到邮箱contact@genedenovo.com,主题注明“转录组培训班”

客服:020-39341079或18054271626 邓小姐

●数据的导入与处理●

1.安装WGCNA包

WGCNA包是存放在CRAN的,可直接安装;但部分依赖的包放在Bioconductor,需单独安装。

  1. #安装方法;
  2. install.packages("WGCNA")
  3. #Warning:
  4. #dependencies ‘impute’, ‘preprocessCore’, ‘GO.db’ are not available
  5. #我的电脑这里需要安装这3个包;
  6. BiocManager::install("GO.db")
  7. BiocManager::install("impute")
  8. BiocManager::install("preprocessCore")
复制代码

注意大家可能之前已经安装过某些依赖的R包,具体需要安装哪些包,大家可以根据安装时的警告信息逐一安装,原则是“缺什么,装什么”!

2.读入范例数据

无论是RNA-seq还是芯片数据,官方推荐样本数尽量不小于15个。那么,什么类型的表达量数据更适合WGCNA呢?

其实,不管是DESeq2包的VST标准化(variance stabilizing transformation)数据,还是RPKM/FPKM都适合,只需所有样本使用同一种标准化方式即可,无需纠结那种标准化方式更准确。例如,如果要比较gene A和gene B的表达量,那么标准化方式的选择很重要,而WGCNA计算的是gene A和gene B表达相关性,对基因进行标准化缩放并不影响结果。当然如果对部分样本进行表达量缩放还是有影响的,因此需要批次效应校正。

为了方便大家参考官方教程,本文的范例数据来源于官方教程,为雌鼠肝脏的基因表达量数据和相应的生理定量特征(physiological quantitative traits)数据。

  1. # 载入 WGCNA package;
  2. library(WGCNA);
  3. # 导入数据方式设置;
  4. options(stringsAsFactors = FALSE)
  5. #读取表达量数据;
  6. femData<-read.csv("LiverFemale3600.csv",row.names = 1)
  7. #简单查看下数据结构;
  8. dim(femData)
  9. names(femData)
复制代码

3.数据过滤与整理

WGCNA需要使用所有的基因吗?不需要,一般只需“高变”基因即可。我们可以通过基因表达量的均值(mean)、方差(variance)、中值(median)、中值绝对偏差(median absolute deviation,MAD)等进行过滤。低表达或表达量变化不大的基因一般为“看家基因”,常被视作底噪。不推荐直接使用差异基因,因为差异分析的结果本身就是得到一个或几个高度相关的基因集,且并不符合无尺度网络假设。

  1. #对基因取中值绝对偏差值;
  2. exp.mad <- apply(femData,1,mad)
  3. #降序排列,获取前5000个序号索引;
  4. selectgenes <- order(exp.mad, decreasing = T)[1:5000]
  5. #过滤基因;
  6. femData.filtered <- femData[selectgenes,]
  7. dim(femData.filtered)

  8. #Tips:mad的计算公式:
  9. mad <- 1.4826*median(abs(x-median(x)))
  10. madt <- 1.4826*median(abs(cars$dist-median(cars$dist)))
  11. madt
  12. #[1] 23.7216
  13. mad(cars$dist)
  14. #[1] 23.7216

  15. #由于原范例数据已过滤,可跳过上面的步骤,直接转置;
  16. datExpr0<-as.data.frame(t(femData))
  17. #判断样本和基因的缺失值是否过多;
  18. gsg<-goodSamplesGenes(datExpr0, verbose = 3)
  19. gsg$allOK
  20. #如果gsg$allOK为FALSE,执行以下过滤流程;
  21. if (!gsg$allOK)
  22. {
  23. # 只保留符合要求的基因和样本;
  24. datExpr0<-datExpr0[gsg$goodSamples, gsg$goodGenes]
  25. }

  26. #对样本进行聚类,目的是查看是否存在离群样本;
  27. sampleTree<-hclust(dist(datExpr0), method = "average")
  28. #绘制聚类树;
  29. plot(sampleTree, main = "Sample clustering to detect outliers",
  30. sub="", xlab="",cex = 0.6, cex.lab = 1,
  31. cex.axis = 1, cex.main = 1.2)
复制代码


  1. # 添加切掉离群分支的阈值线;
  2. abline(h = 15, col = "red")
复制代码


  1. #对聚类树进行“修剪”;
  2. clust<-cutreeStatic(sampleTree, cutHeight = 15, minSize = 10)
  3. table(clust)
  4. #这里去掉离群样本F2_221;
  5. keepSamples<-(clust==1)
  6. #继续过滤数据;
  7. datExpr<-datExpr0[keepSamples, ]
  8. nGenes <-ncol(datExpr)
  9. nSamples<-nrow(datExpr)

  10. #读入表型数据;
  11. traitData<-read.csv("ClinicalTraits.csv")
  12. dim(traitData)
  13. names(traitData)
  14. #去掉不需要的列(性状信息);
  15. allTraits<-traitData[, -c(31, 16)]
  16. allTraits<-allTraits[, c(2, 11:36) ]
  17. dim(allTraits)
  18. names(allTraits)

  19. #提取表达量表格的样本名;
  20. femaleSamples<-rownames(datExpr)
  21. #提取与表达量数据样本匹配的行名;
  22. traitRows<-match(femaleSamples, allTraits$Mice)
  23. #对表型数据进行过滤,只保留与表达量表对应的样本(去掉第1列);
  24. datTraits<-allTraits[traitRows, -1]
  25. #生成datTraits相应的行名;
  26. rownames(datTraits)<-allTraits[traitRows, 1]
  27. #清理垃圾,释放内存;
  28. collectGarbage()


  29. # 对样本进行重新聚类;
  30. sampleTree2<-hclust(dist(datExpr), method = "average")
  31. # 使用热图展示性状数值: 白色表示低,红色表示高,灰色表示缺失值;
  32. traitColors<-numbers2colors(datTraits, signed = FALSE);
  33. # 绘制样本聚类树与形状热图组合图;
  34. plotDendroAndColors(sampleTree2, traitColors,
  35. groupLabels = names(datTraits),
  36. main = "Sample dendrogram and trait heatmap")
复制代码


  1. #保存临时数据用于后续分析;
  2. save(datExpr, datTraits, file = "WGCNA_01_data.RData")
复制代码

更多WGCNA相关的教程可以观看OmicShare的专题视频课程《转录组入门理论及实操》,当然还可以参加基迪奥的转录组培训班~

课程链接:
https://www.omicshare.com/class/home/index/series?id=56


范例数据脚本下载

https://www.omicshare.com/forum/thread-6999-1-1.html

▼参考资料▼
Horvath S. Integrated weighted correlation network analysisof mouse liver gene expression data[M]//Weighted Network Analysis. Springer,New York, NY, 2011: 321-351.

本文作者:基迪奥-莫北   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
新的一天加油!
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.11.23
在线时间
9 小时

发表于 2021.5.19 10:37:56 | 显示全部楼层
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2021.4.4
在线时间
2 小时

发表于 2021.5.19 10:56:40 | 显示全部楼层
新手小白加油呀
学习数据分析加油
回复 支持 反对

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
0
注册时间
2020.11.21
在线时间
42 小时

发表于 2021.5.19 11:07:31 | 显示全部楼层
坚持就是胜利!
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2018.10.19
在线时间
34 小时

发表于 2021.5.19 11:26:02 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2020.2.12
在线时间
51 小时

发表于 2021.5.19 13:24:40 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

帝王蝶

Rank: 4

主题
0
注册时间
2018.11.22
在线时间
13 小时

发表于 2021.5.19 20:11:38 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

草履虫

Rank: 2

主题
0
注册时间
2021.5.19
在线时间
0 小时

发表于 2021.5.19 20:40:59 | 显示全部楼层
好用
新的一天加油!
回复

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
3
注册时间
2017.9.8
在线时间
40 小时

发表于 2021.5.20 08:34:38 | 显示全部楼层
加油,加油!
回复

使用道具 举报

帝王蝶

Rank: 4

主题
0
注册时间
2018.11.22
在线时间
13 小时

发表于 2021.5.20 13:06:18 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
2
注册时间
2019.11.27
在线时间
6 小时

发表于 2021.5.20 14:55:28 | 显示全部楼层
回复

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
0
注册时间
2020.11.21
在线时间
42 小时

发表于 2021.5.20 15:08:28 | 显示全部楼层
坚持就是胜利!
回复

使用道具 举报

帝王蝶

Rank: 4

主题
0
注册时间
2018.11.22
在线时间
13 小时

发表于 2021.5.21 07:58:47 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2021.4.4
在线时间
2 小时

发表于 2021.5.23 11:29:29 | 显示全部楼层
学习数据分析加油
学习数据分析加油
回复 支持 反对

使用道具 举报

帝王蝶

Rank: 4

主题
0
注册时间
2018.11.22
在线时间
13 小时

发表于 2021.5.23 16:42:31 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
1
注册时间
2016.8.25
在线时间
65 小时

发表于 2021.5.24 11:10:41 | 显示全部楼层
忘记签到了
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.11.23
在线时间
9 小时

发表于 2021.5.24 11:14:56 | 显示全部楼层
回复

使用道具 举报

帝王蝶

Rank: 4

主题
0
注册时间
2018.11.22
在线时间
13 小时

发表于 2021.5.24 21:25:14 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
3
注册时间
2017.9.8
在线时间
40 小时

发表于 2021.5.25 08:16:10 | 显示全部楼层
加油,加油!
回复

使用道具 举报

帝王蝶

Rank: 4

主题
0
注册时间
2021.1.28
在线时间
7 小时

发表于 2021.5.25 13:07:21 | 显示全部楼层
顶!!!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表