032 Gsva分析——基因集变异分析(gsva)是一种特殊类型的基因集富集方法

一、生信分析的目的

基因集变异分析(GSVA)是一种特殊类型的基因集富集方法,通过对分析的功能单元进行概念上简单但功能强大的改变——从基因到基因集,从而实现对分子数据的路径中心分析。 简单来说,就是将分析对象由基因换成了基因集,进行基因集(通路)级别的差异分析

二、具体的代码

这里要进行GSVA富集分析的话,表达矩阵最好是经过标准化的矩阵(这里使用limma包进行标准化)

remove(list = ls()) ##清空当前环境
setwd("D:/生信代码复现/24.GSVA富集分析/24.GSVA富集分析") ##💚💚💚设置路径

inputFile="A.txt"   #💛💛💛GSVA的基因集大家可以去GSEA官网进行下,但是GSEA官网下载数据需要登陆教育邮箱,这里我给同学们准备了KEGG和GO的基因集文件,大家可以直接使用。
gmtFile="c2.cp.kegg.v7.4.symbols.gmt"   #💛💛💛信号通路

library(GSVA)
library(limma)
library(GSEABase)

rt=read.table(inputFile,sep="\t",header=T,check.names=F)
rt=as.matrix(rt)
rownames(rt)=rt[,1]
exp=rt[,2:ncol(rt)]
dimnames=list(rownames(exp),colnames(exp))
mat=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)
mat=avereps(mat)
#limma包的矫正函数进行校正
mat=normalizeBetweenArrays(mat)

c3gsc2=getGmt( gmtFile, 
               collectionType=BroadCollection(category="c3"), 
               geneIdType=SymbolIdentifier())
output=gsva(mat, 
             c3gsc2, 
             min.sz=1, 
             max.sz=500, 
             verbose=TRUE,
             parallel.sz=1)
output=rbind(id=colnames(output),output)
##输出文件
write.table(output,file="output.txt",sep="\t",quote=F,col.names=F)    #💜💜💜最后得到一个表达矩阵

最后得到一个表达矩阵,看到这同学们应该知道为什么说GSVA富集分析是开始而GSEA是结束了吧!
既然得到的是一个矩阵,那么我们就可以进行差异分析、生存分析、ROC分析、免疫分析等等等。有了矩阵,只要合理,都能分析

三、最终的效果

①R语言中的效果:
image.png

②文件效果:
image.png

四、遇到的问题

警告:
Warning messages:
1: Calling gsva(expr=., gset.idx.list=., method=., ...) is deprecated; use a method-specific parameter object (see '?gsva').
2: In .gsva(expr, mapped.gset.idx.list, method, kcdf, rnaseq, abs.ranking, :
Some gene sets have size one. Consider setting 'min.sz > 1'.

五、参考

具体代码参考——公众号《叉叉滴同学的生信笔记》