简单来说,就是将分析对象由基因换成了基因集,进行基因集(通路)级别的差异分析。
原理:
与GSEA类似,可以将计算每个样本中特定基因集的富集分数,(量化通路,可以理解为通路活性打分),基于此可以计算样本间的通路表达活性的差异分析。
不同:对于不同的数据类型(只支持log表达值或原始的read counts值),假设了不同的累计密度函数(cumulative density function, CDF)
芯片数据:正太分布密度函数
RNA-seq数据:泊松分布密度函数
GSVA是为每个样本的基因计算对应的CDF值,然后根据该值对基因进行排序,这样每个样本都有一个从大到小的基因列表,
对于某一基因集合(样本)内的基因,对于一个通路来说,存在于该通路里的基因则为A加分,不存在于该通路的基因则为B加分,
具体加分规则:由密度函数和秩次等决定,CDF分越高的加分越高,然后求AB两线,两者之间的最大偏差(可以是正也可以是负),差值作为GSVA的分值。
输出:样本-通路表达矩阵(表达值为GSVA分值)
R语言实现
1.准备好表达谱,可以是单纯的matrix格式,也可以是ExpressionSet/SummarizedExperiment对象;
如果是原始count的RNA-seq表达水平,需要添加参数
kcdf="Poisson"
其余经过不同方式标准化处理的RNA-seq数据,使用默认的参数即可。
2.从GSEA下载通路数据,#上篇有讲;(.gmt文件)
c2gmt <- getGmt("路径/c2.cp.v7.5.1.symbols.gmt")
3.筛选出常用的这三个数据库中的通路
gene.set <- c2gmt[grep("^KEGG|REACTOME|BIOCARTA",names(c2gmt)),]
4.GSVA分析microarray使用高斯分布,通路至少包含10个基因
gs.exp <- gsva(dataFilt,gene.set,kcdf = "Poisson",min.sz = 10)