####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)
## 表達(dá)矩陣
expr=as.matrix(Mac@assays$RNA@data)
###預(yù)定基因集,后續(xù)gsva要求是list,所以將他轉(zhuǎn)化為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函數(shù)可以在給定的字符串向量中搜索某個子字符串
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) #將_轉(zhuǎn)化為空格
msigdbr_list = split(x = mdb_c2$gene_symbol, f = mdb_c2$gs_name) ##后續(xù)gsva要求是list蹦狂,所以將他轉(zhuǎn)化為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") ##通路和細(xì)胞的表達(dá)矩陣
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) ##給老師發(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
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門住闯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澳淑,你說我怎么就攤上這事比原。” “怎么了杠巡?”我有些...
- 文/不壞的土叔 我叫張陵量窘,是天一觀的道長。 經(jīng)常有香客問我氢拥,道長蚌铜,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任兄一,我火速辦了婚禮,結(jié)果婚禮上识腿,老公的妹妹穿的比我還像新娘出革。我一直安慰自己,他們只是感情好渡讼,可當(dāng)我...
- 文/花漫 我一把揭開白布骂束。 她就那樣靜靜地躺著耳璧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪展箱。 梳的紋絲不亂的頭發(fā)上旨枯,一...
- 文/蒼蘭香墨 我猛地睜開眼婴栽,長吁一口氣:“原來是場噩夢啊……” “哼满粗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起愚争,我...
- 正文 年R本政府宣布,位于F島的核電站韧衣,受9級特大地震影響盅藻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜畅铭,卻給世界環(huán)境...
- 文/蒙蒙 一氏淑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硕噩,春花似錦假残、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽阳惹。三九已至,卻和暖如春眶俩,著一層夾襖步出監(jiān)牢的瞬間莹汤,已是汗流浹背。 一陣腳步聲響...