通过GSVA与相关性分析寻找目的基因的相关通路

最近帮师弟做一个GSVA分析,发现已经忘的差不多了,顺便整理一下吧。


基因集变异分析(Gene Set Variation Analysis, GSVA)可以将一个基因表达矩阵转换成基因集表达矩阵,并对基因集进行差异分析;并且进一步对使用表达矩阵中目的基因的表达数据与基因集表达举证做相关性分析,初步探究目的基因的可能相关通路。


1.曾老师标准操作-,-!

rm(list = ls())  
options(stringsAsFactors = F)

2.加载需要用到的包

library(devtools)
library(AnnoProbe)
library(ggplot2)
library(clusterProfiler)
library(org.Hs.eg.db)
library(GSVA) 
library(GSEABase)

3.数据预处理

load(file = 'countdata_grouplist.Rdata') ##加载数据,包括表达矩阵与样本分组信息
exprSet<-countdata
dim(exprSet)
exprSet=exprSet[apply(exprSet,1, function(x) sum(x>1) > 5),]
dat=log2(edgeR::cpm(exprSet)+1)

4.通路基因集的获取
首先需要下载基因集Gmt格式文件,我的基因集是通过msigdb官网下载的,这里使用了C2目录下的基因集,共2871个基因集。

geneSets<-getGmt("c2.cp.v7.2.symbols.gmt")#下载好的gmt文件放在R语言当前工作路径下即可通过getGmt函数直接加载

5.GSVA分析

Result=gsva(dat, 
            geneSets, 
            min.sz=10, 
            max.sz=500, 
            verbose=TRUE,
            mx.diff=F,
            parallel.sz=1)
dim(Result)
###函数中的参数都代表什么意义可以通过help函数自行查看
###环境变量中得到的Result即为基因集表达矩阵

6.对基因集表达矩阵进行差异分析,这里使用limma包完成

library(limma)
design<-model.matrix(~0+factor(group_list))
colnames(design)<-levels(factor(group_list))
rownames(design)<-colnames(Result)
contrast.matrix<-makeContrasts(paste0(unique(group_list),collapse = "-"),levels = design)
contrast.matrix<-makeContrasts("Normal-OA",levels = design)
fit<-lmFit(Result,design)
fit2<-contrasts.fit(fit,contrast.matrix)
fit2<-eBayes(fit2)
tempOutput<-topTable(fit2,coef = 1,n=Inf)
nrDEG<-na.omit(tempOutput)##nrDEG即为基因集差异表达结果
View(nrDEG)

7.对差异表达结果完成火山图绘制

#数据处理
df<-nrDEG
df$v<- -log10(df$P.Value)
df$g<-ifelse(df$P.Value>0.01,'stable',ifelse(df$logFC>0.3,'up',ifelse(df$logFC<(-0.3),'down','stable')))##对上调、下调及无变化基因集进行标注
table(df$g)
#画图
library(ggplot2)
g = ggplot(data=df, 
           aes(x=logFC, y=-log10(P.Value), 
               color=g)) +
  geom_point(alpha=0.4, size=1.75) +
  theme_set(theme_set(theme_bw(base_size=20)))+
  xlab("log2 fold change") + ylab("-log10 p-value") +
  theme(plot.title = element_text(size=15,hjust = 0.5))+
  scale_colour_manual(values = c('blue','black','red')) 
print(g)

8.目的基因与通路的相关性分析

#这里使用表达矩阵中的基因TNFSF15进行演示,看看TNFSF15的表达与那些通路存在相关性。
KDM3A<-as.data.frame(dat["TNFSF15",])
KDM3A<-t(TNFSF15)
rownames(TNFSF15)<-"TNFSF15"
cordat<-rbind(Result,TNFSF15)#将TNFSF15的表达数据与基因集的整合在一起
##包装batch_cor函数
batch_cor <- function(gene){
  y <- as.numeric(cordat[gene,])
  rownames <- rownames(cordat)
  do.call(rbind,future_lapply(rownames, function(x){
    dd  <- cor.test(as.numeric(cordat[x,]),y,type="spearman")
    data.frame(gene=gene,mRNAs=x,cor=dd$estimate,p.value=dd$p.value )
  }))
}
#开线程,完成相关性分析
library(future.apply)
plan(multiprocess)
system.time(dd <- batch_cor("TNFSF15"))
##保存结果dd,用于画图分析
save(dd,file="TNFSF15_cordata.Rdata")

9.使用棒棒图展示相关性分析结果

dd$abscor<-abs(dd$cor)
dd = dd[order(dd[,3]),]##按相关性数值排序
##提取作图数据,正相关前十与负相关前十
tmp_1<-dd[1:10,]
tmp_2<-dd[2313:2323,]
tmp<-rbind(tmp_1,tmp_2)
##画图
library(ggpubr)
p<-ggdotchart(tmp, x = "mRNAs", y = "cor",
              color = "p.value",                               
              sorting = "descending",                      
              add = "segments",                            
              add.params = list(color = "lightgray", size = 1.5),
              rotate = TRUE,                                
              #group = "cyl",                                
              dot.size = "abscor",                                 
              ggtheme = theme_pubr(),                        
              xlab=""
              
)
print(p)
p<-p + gradient_color(c("blue","red")) + grids(linetype = "dashed")
p + grids(linetype = "dashed")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容