gsea分析这方面教程我在《生信技能树》公众号写了不少了,不管是芯片还是测序的表达矩阵,都是一样的,把全部基因排序即可:
msigdb数据库网页里面有着丰富的基因集,MSigDB(Molecular Signatures Database)数据库中定义了已知的基因集合:http://software.broadinstitute.org/gsea/msigdb 包括H和C1-C7八个系列(Collection),每个系列分别是:
如下所示的一个经典的gsea图:

文献:Decoding Human Megakaryocyte Development
它就很好的说明了这个 innate immune response基因集,是在排序好的2万多个基因里面是左偏的,也就是说这个通路是激活的。
但是这个gsea分析对绝大部分初学者来说理解起来很困难,而且代码实现难度也不小。最近看教程,发现其实limma包就有一个barcodeplot函数,其示例代码很容易让人理解:
library(limma)
stat <- rnorm(100)
fivenum(stat)
sel <- 1:10
sel2 <- 11:20
stat[sel] <- stat[sel]+1
stat[sel2] <- stat[sel2]-1
stat
plot(stat)
首先呢,上面的代码创造了一个向量,是100个数值,它们最开始时是乱序,但是我们人为的把前面的10个数值加上了1,这样前面的10个数值就会名列前茅。然后呢,我们人为的把第11到20个数值减去1,这样的它们数值会偏小,但是并不会垫底。
下面的barcodeplot可视化你的基因排序 ,很容易看出来:
# One directional
barcodeplot(stat, index = sel)
# Two directional
barcodeplot(stat, index = sel, index2 = sel2)
可以看到,第一个基因集合, 就是前面的10个数值其实是遥遥领先,而第二个基因集合,就是第11到20个数值会比较小,但不会是绝对的垫底。

亲爱的读者,发挥你聪明的小脑瓜,思考一下,假如你在前面把 人为的把第11到20个数值减去10,这样的话,第二个基因集合,是不是就可以看到很明显的垫底情况了?
上面的代码大量涉及到R基础知识:
需要把R的知识点路线图搞定,如下: