2022-11-08gsva-group

####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()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末煌抒,一起剝皮案震驚了整個濱河市弟翘,隨后出現(xiàn)的幾起案子烘跺,更是在濱河造成了極大的恐慌闹击,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凹联,死亡現(xiàn)場離奇詭異沐兰,居然都是意外死亡,警方通過查閱死者的電腦和手機蔽挠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門住闯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人澳淑,你說我怎么就攤上這事比原。” “怎么了杠巡?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵量窘,是天一觀的道長。 經(jīng)常有香客問我氢拥,道長蚌铜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任兄一,我火速辦了婚禮,結(jié)果婚禮上识腿,老公的妹妹穿的比我還像新娘出革。我一直安慰自己,他們只是感情好渡讼,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布骂束。 她就那樣靜靜地躺著耳璧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪展箱。 梳的紋絲不亂的頭發(fā)上旨枯,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音混驰,去河邊找鬼攀隔。 笑死,一個胖子當(dāng)著我的面吹牛栖榨,可吹牛的內(nèi)容都是我干的昆汹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼婴栽,長吁一口氣:“原來是場噩夢啊……” “哼满粗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起愚争,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤映皆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后轰枝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捅彻,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年狸膏,在試婚紗的時候發(fā)現(xiàn)自己被綠了沟饥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡湾戳,死狀恐怖贤旷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砾脑,我是刑警寧澤幼驶,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站韧衣,受9級特大地震影響盅藻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜畅铭,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一氏淑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧硕噩,春花似錦假残、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽阳惹。三九已至,卻和暖如春眶俩,著一層夾襖步出監(jiān)牢的瞬間莹汤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工颠印, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纲岭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓嗽仪,卻偏偏與公主長得像荒勇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子闻坚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355