####gsva--分样本进行--可
library(Seurat)
library(ggplot2)
library(dplyr)
library(pheatmap)
library(patchwork)
library(msigdbr)
library(GSVA)
setwd("/data/wanglei_lab/zhangyu/2.zy_fdy/2.TBILJN_vs_MC/tbi-20221017/4.recluster/1.Mac/Mac_GSVA/Mac_gsva_group")
Mac <- readRDS("/data/wanglei_lab/zhangyu/2.zy_fdy/2.TBILJN_vs_MC/tbi-20221017/4.recluster/1.Mac/newid_Mac/newid_Mac.rds")
head(Mac)
## 表达矩阵
expr=as.matrix(Mac@assays$RNA@data)
###预定基因集,后续gsva要求是list,所以将他转化为list
mdb_c2 <- msigdbr(species = "Mus musculus", category = "C2") #选取物种小鼠.GO在C5,KEGG在C2
mdb_c2 = mdb_c2 [grep("^KEGG",mdb_c2 $gs_name),] ##R语言中的grep函数可以在给定的字符串向量中搜索某个子字符串
mdb_c2$gs_name <- gsub('KEGG_','',mdb_c2$gs_name) #去除前缀KEGG_
mdb_c2$gs_name <- tolower(mdb_c2$gs_name) #将大写换为小写
mdb_c2$gs_name <- gsub('_',' ',mdb_c2$gs_name) #将_转化为空格
msigdbr_list = split(x = mdb_c2$gene_symbol, f = mdb_c2$gs_name) ##后续gsva要求是list,所以将他转化为list
head(msigdbr_list)
kegg <- gsva(expr, gset.idx.list = msigdbr_list, kcdf="Gaussian",method = "zscore",parallel.sz=1)
write.table(kegg, 'Mac_gsva_kegg.xls', row.names=T, col.names=NA, sep="\t") ##通路和细胞的表达矩阵
library(limma)
## limma gsva通路活性评估
de_gsva <- function(exprSet,meta,compare = NULL){
allDiff = list()
design <- model.matrix(~0+factor(meta))
colnames(design)=levels(factor(meta))
rownames(design)=colnames(exprSet)
fit <- lmFit(exprSet,design)
if(length(unique(meta))==2){
if(is.null(compare)){
stop("there are 2 Groups,Please set compare value")
}
contrast.matrix<-makeContrasts(contrasts = compare,levels = design)
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
tempOutput = topTable(fit2,adjust='fdr', coef=1, number=Inf)
allDiff[[compare]] = na.omit(tempOutput)
}else if(length(unique(meta))>2){
for(g in colnames(design)){
fm = ""
for(gother in colnames(design)[which(!colnames(design) %in% g)]){
fm = paste0(fm,"+",gother)
}
fm = paste0(g,"VsOthers = ",g,"-(",substring(fm,2),")/",ncol(design)-1)
contrast.matrix <- makeContrasts(contrasts = fm,levels=design)
fit2 <- contrasts.fit(fit, contrast.matrix)
fit2 <- eBayes(fit2)
allDiff[[g]]=topTable(fit2,adjust='fdr',coef=1,number=Inf)
}
}else{
stop("error only have one group")
}
return(allDiff)
}
meta <- Mac@meta.data[,c("group")]
Diff =de_gsva(exprSet = kegg,meta = meta,compare = "TBI-MC") ##"exp/ctrl"
idiff <-Diff[["TBI-MC"]]
df <- data.frame(ID = rownames(idiff), score = idiff$t )
Padj_threshold=0.01
df$label =sapply(1:nrow(idiff),function(x){
if(idiff[x,"logFC"]>0 & idiff[x,"adj.P.Val"]<Padj_threshold){return("up")}
else if(idiff[x,"logFC"]<0 & idiff[x,"adj.P.Val"]<Padj_threshold){return("down")}
else{return("noSig")}
})
# 按照score排序
df$hjust = ifelse(df$score>0,1,0)
df$nudge_y = ifelse(df$score>0,-0.1,0.1)
sortdf <- df[order(df$score),]
sortdf$ID <- factor(sortdf$ID, levels = sortdf$ID)
limt = max(abs(df$score))
write.csv(df,"gsva_df.csv",row.names = F)
write.csv(sortdf,"gsva_score.csv",row.names = F) ##给老师发这个
###筛选之后再读入
df<-read.csv('gsva_df1.csv',header = T)
sortdf<-read.csv('gsva_score1.csv',header = T)
##再排序一下作图才能有顺序
df$hjust = ifelse(df$score>0,1,0)
df$nudge_y = ifelse(df$score>0,-0.1,0.1)
sortdf <- df[order(df$score),]
sortdf$ID <- factor(sortdf$ID, levels = sortdf$ID)
pdf("down_up_GSVA.pdf",width = 30, height = 30)
ggplot(sortdf, aes(ID, score,fill=label)) +
geom_bar(stat = 'identity',alpha = 0.7) +
scale_fill_manual(breaks=c("down","noSig","up"),
values = c("#008020","grey","#08519C"))+
geom_text(data = df, aes(label = ID, y = nudge_y),
nudge_x =0,nudge_y =0,hjust =df$hjust,
size = 10)+
labs(x = (""),
y="t value of GSVA score\n")+
scale_y_continuous(limits=c(-limt,limt))+
coord_flip() +
theme_bw() + #去除背景色
theme(panel.grid =element_blank())+
theme(panel.border = element_rect(size = 0.6)
#panel.border = element_blank()
)+
theme(plot.title = element_text(hjust = 0.5,size = 18),
axis.text.y = element_blank(),
axis.title = element_text(hjust = 0.5,size = 18),
axis.line = element_blank(),
axis.ticks.y = element_blank(),
legend.position = limt
)
dev.off()
2022-11-08gsva-group
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...