library(GSVA)
library(limma)
library(GSEABase)
geneset<-getGmt("hy_g.gmt")#可自定義,也可從數據庫直接下載【Fig1】https://www.gsea-msigdb.org/gsea/msigdb/index.jsp
df<-read.table("df",header=T,row.names=1,sep="\t")#讀入表達矩陣,可先進行簡單篩選,例如去除表達質量差的基因
mt<-as.matrix(df)#要轉為矩陣才能進行
gsvaOut<-gsva(mt,geneset)#開始計算,結果是每行一個通路,每列一個樣本
#anno_col<-data.frame(sampleType=factor(c(rep("E",length(E)),rep("C",length(C)))))
#row.names(anno_col)<-colnames(df)#添加不同組別注釋條
anno_col<-read.table("group",header=T,row.names=1,sep="\t")#可選,添加注釋條,包含樣本的組別,注意行名要和df的列名一致【Fig2】
#熱圖
library(pheatmap)
pheatmap(gsvaOut,annotation_col=anno_col,show_colnames=F)#【Fig3】
#箱型圖
a<-gsvaOut
a$pathway<-row.names(a)
library(reshape2)
b<-melt(a,id.vars="pathway")#變為ggplot需要的長序列,按照pathway列進行轉換
b$group<-anno_col[b[,2],]#添加組別
library(ggplot2)
library(ggsignif)
ggplot(b,aes(x=group,y=variable,fill=group))+geom_boxplot()+geom_point(position=position_jitterdodge())+geom_signif(comparisons=list(c("P","T")),test=wilcox.test,map_signif_level=TRUE)#comparisons參數可設置進行顯著性檢驗的組,list格式;最后一個參數map_signif_level設為TRUE,直接以*顯示,FALSE顯示出具體的p值【Fig4】
Fig1-geneset
Fig1-geneset
Fig2-anno_col
Fig3-pheatmap
Fig4-boxplot
Fig4-boxplot