bioinfoer

找回密码
立即注册
搜索
热搜: 活动 交友 discuz
发新帖

0

收听

12

听众

360

主题
发表于 2025-3-25 17:55:03 | 查看: 55| 回复: 1

背景

用R代码画出WGCNA module的heatmap

文章PMID: 29779944

使用场景

WGCNA找出了gene module,展示各module的基因在各组样本中的表达谱变化。

输入数据的预处理

之前我们介绍wcgna输出各个gene module内的基因表达量,每个module保存在一个csv文件中。

WGCNA已经按照共表达特征给基因分成了多个module,因此,这里不需要再做聚类,直接按照module内基因的数量给基因排序,再用热图的方式可视化。

如果你的数据已经保存成像 easy_input.csv的格式,就可以跳过这步,直接进入“开始画图”。

fnames<-Sys.glob("*.csv")
fnames #12个

读取这些module,合并。

fdataset<-lapply(fnames,read.csv)
names(fdataset) <- fnames

library(plyr)
result <- ldply(fdataset, data.frame)
head(result)

df<-result[,2:22]
df$module<-unlist(strsplit(result$.id,split = ".csv"))
head(df)

df前几行如下:

按照module内基因数量从多到少,给基因排序。

#先按module内基因的数量为module排序
module.num<-table(df$module)
module.num.sort<-module.num[order(module.num,decreasing =TRUE)]
module.num.sort
keys<-names(module.num.sort)
keysDF<-data.frame(module=keys,order=1:length(keys))
keysDF

#再按这个module的顺序为基因排序
df.merged<-merge(df,keysDF,by.x = 'module',by.y = 'module',all.x = T, all.y = F)
df.sort <- df.merged[order(df.merged$order),]
write.table(df.sort[1:22],"easy_input.txt",row.names = F, quote = F)

keysDF如下:

开始画图

#读取带有module信息的基因表达量文件
df.exp<-read.table("easy_input.txt",header = T, as.is = T)
row.names(df.exp)<-df.exp$X
head(df.exp)
dim(df.exp)# 2625 22

library(pheatmap)
#设置sample的分组
annotation_col = data.frame(
  type = factor(rep(c("BALB","C57","NOD","PWK","SPRET"),c(4,4,4,4,4))),
  treatment = factor(rep(c("notx","notx","KLA","KLA"),5))
)
rownames(annotation_col) = colnames(df.exp[,3:22])

#设置基因的分组,也就是module
annotation_row = data.frame(df.exp$module)
rownames(annotation_row) = df.exp$X
colnames(annotation_row)<-"WGCNA.module"

#为sample和基因的分组设置颜色
#module的名字作为module的颜色
module.name<-names(table(df.exp$module))
names(module.name)<-module.name

ann_colors = list(
  treatment = c(notx = "black", KLA = "white"),#给两种处理设置颜色
  type = c(BALB = "orange", C57 = "#007C46", NOD = "#00D0D1", PWK = "#333D7E", SPRET = "#A25BAA"),
  WGCNA.module = module.name
)

#画heatmap
pheatmap(df.exp[,3:22],cellwidth = 12, cellheight = 0.2, fontsize = 8,
         scale="row", #为基因做scale
         cluster_rows=F,cluster_cols=F,#不聚类
         color = colorRampPalette(c("#00A9E0", "white", "firebrick3"))(50),
         show_colnames=F,show_rownames =F,
         annotation_col = annotation_col,
         annotation_row = annotation_row,
         annotation_colors = ann_colors,
         border_color = "NA",
         filename = "heatmap.pdf")

收藏回复 显示全部楼层 道具 举报

发表于 2025-3-25 17:56:39

文中所用数据可以关注公众号“生信喵实验柴”
1.png
发送关键词“20250329”获取

回复 显示全部楼层 道具 举报

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

QQ|Archiver|手机版|小黑屋|bioinfoer ( 萌ICP备20244422号 )

GMT+8, 2025-4-4 05:02 , Processed in 0.073826 second(s), 34 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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