GSEA富集分析

基本概念

Gene Set Enrichment Analysis (GSEA)是一种的计算方法,用于评估在一个预设订的基因集中,两个生物学数据集间,是否存在统计学上显著且一致的差异。

Gene Set Enrichment Analysis (GSEA) is a computational method that determines whether an a priori defined set of genes shows statistically
significant, concordant differences between two biological states.

GSEA富集分析和传统富集分析的比较

传统富集分析特点:

传统的富集分析的主要分析过程包括:采取固定阈值的筛选差异基因(p值,差异倍数),然后对其进行功能/通路富集分析(GO/KEGG),简单来说就是一种归类的方法。这种方法存在一个问题,一个通路的各个基因的表达量差异很大,生物调控也是递进关系,上游基因的微小变化可能就会导致下游基因的明显变化,如果直接一刀切用定阈值筛选,会损失很多基因信息,导致后续的富集不显著(基因数量太少做这种富集分析没有生物学意义)。

GSEA富集分析的特点

GSEA的分析流程主要包括:计算指标、排序、标注基因集、计算基因集得分、置换检验。从流程就可以看出,GSEA富集分析不需要用固定阈值去过滤基因,是基于所有基因分析的一种方法,规避了传统富集分析方法的短板。

因此,简单来说GSEA分析适用于,传统分析方法筛选后样本过少的数据集。

工具

GSEA软件下载:https://www.gsea-msigdb.org/gsea/index.jsp 直接选择你操作系统对应的版本,下载安装即可。

数据准备

基因表达量表(.gct)

基因表达量表

横坐标为样本,纵坐标为基因,陈列基因表达量信息;第一行#1.2为信息注释,不需要改动;第二行两个数字分别为:基因数量和样本数量(如实填写);.gct文件,直接把表格用excel保存为制表符分隔文件(.txt),然后直接改后缀为gct即可。

样本分类关系表(.cls)

样本分类关系表

第一行三个数字分别为:样品总数,分组数,恒定数字1;第二行为样品分组名称;第三行为样品分组信息。需要注意:第二行和第三行需严格和.gct文件对应。

基因集合(.gmt)

基因集文件

第一列为基因集编号,第二列为基因集名称,第三列以后为集合中所包含的所有基因名称,注意基因名称需要与.gct文件中的名称一致。

基因集文件的准备相对比较复杂,我用到的是KEGG的通路基因集,也可以用GO的的基因集,甚至可以自己创造一个,只需要满足上图所示的文件格式。下面介绍一下如何从KEGG网站上下载某物种(小鼠)的基因集信息。

首先,在KEGG数据库中下载小鼠的KEGG通路数据库文件

找到小鼠的KEGG库

找到小鼠的KEGG库2.0

找到小鼠的KEGG库3.0

下载.keg文件

.keg文件

大家可以看到,这个.keg文件和我们需要的.gmt文件还有不小的差异,那么,我们需要按如下方法,先在Linux下解析keg文件,然后用R制作.gmt文件:

#解析信息
perl -alne '{if(/^C/){/PATH:mmu(\d+)/;$kegg=$1}else{print "$kegg\t$F[1]" if /^D/ and $kegg;}}' mmu00001.keg > mmu00001_kegg2gene.txt
grep '^C' mmu00001.keg | grep "mmu" | sed 's/^C    //g' | sed 's/\([0-9]*\)\s/\1\t/' > mmu00001_kegg2description.txt
#转换ID同时制作.gmt文件
#安装转换ID需要用到的各个R包
#安装data.table
install.packages("data.table")
#安装org.Xx.eg.db系列包中小鼠资源包
BiocManager::install("org.Mm.eg.db")
#安装clusterProfiler包,安装时需要“科学上网”
BiocManager::install("clusterProfiler")

#调用各个R包
library(data.table)
library(org.Mm.eg.db)
library(clusterProfiler)

#读入数据
path2gene_file<-"mmu00001_kegg2gene.txt"
tmp=read.table(path2gene_file,sep="\t",colClasses=c('character'))
dt <- tmp
dt$geneid <- rownames(dt)

# transform id  
map_dt <- bitr(dt$V2, fromType = "ENTREZID",toType = c( "SYMBOL"),OrgDb = org.Mm.eg.db)
dt_merge <- merge(map_dt,dt, by.y = "V2", by.x = "ENTREZID")

# 可以把转换ID后的表输出
#write.table(dt_merge, file = "example42.txt", sep = "\t", col.names = T, row.names = T, quote = F)

# first column is kegg ID, second column is entrez ID
GeneID2kegg_list<- tapply(tmp[,1],as.factor(tmp[,2]),function(x) x)
kegg2symbol_list<- tapply(dt_merge$SYMBOL,as.factor(dt_merge$V1),function(x) x)

#输出数据,但描述列为NA
write.gmt <- function(geneSet=kegg2symbol_list,gmt_file='kegg2symbol.gmt'){
  sink( gmt_file )
  for (i in 1:length(geneSet)){
    cat(names(geneSet)[i])
    cat('\tNA\t')
    cat(paste(geneSet[[i]],collapse = '\t'))
    cat('\n')
  }
  sink()
}

write.gmt()

GSEA分析

导入数据

打开GSEA软件,点击左侧菜单栏的Load data选项,将数据按如下图所示方法导入。


导入数据

设置参数

按照下图标记的批注设置合适的参数。


Required fields

Basic fields

Advanced fields

运行GSEA

设置好参数后点击Run运行即可。


点击RUN运行

GSEA结果展示

GSEA的所有结果都保存在结果文件夹中,完整报告为index.html文件,双击打开即可查看。

index.html文件总览信息

172/230表示在这一分组中,一共有230个功能基因集,其中172个上升
97个基因集的FDE小于25%
76个基因的名义P值小于1%
87个基因的名义P值小于5%
点击snapshot可以看富集结果
点击enrichment result in html 可以查看所有的富集分析结果,进去之后可以查看每个Enrichment plot的参数
点击enrichment result in excel就可以直接下载附带结果的excel

我们重点关注enrichment result in html中的内容,点开后会出现如下图所示的表格:


Enrichment result in html

图中:
SIZE:表示基因集里的基因数量
ES(enrichment score):富集分数(重点)
NES(normalized enrichment score):表示校正后的富集分数(重点)
NOM p-val (nominal p value ): 名义P值(重点)
FDR q-val(false discovery rate):错误发现率(重点)
FWER p-val:用bonferonni校正后的P值
RANK AT AMX:ES值对应的通路基因排名
Leading-edge subset:对富集贡献最大的基因成员,即领头亚集,用于定义Leading-edge subset的参数有:Tags,List,Signal。

点击每个通路的Details即可看到如下图所示的典型GSEA数据展示图:


GSEA数据展示图

绿色曲线就是gene set里面对应的每个基因的enrichment score值(ES),开始时为零,从左到右每遇到一个基因就计算出一个ES值,连成一条绿线。当ES值大于0时,表示某一功能基因富集在排序序列的前端,若为小于0时,则某一功能基因富集在排序序列的后端,ES值越高说明这些基因在通路中有富集,非散在分布。
中间条形码似的黑线是gene set里面的基因在背景基因里的位置,每条竖线代表该通路下的基因。
蝴蝶图:按相关系数对所有基因排序,大于0正相关,小于0位负相关,越靠近两级相关性越弱。

对于结果的分析,通常认为|NES|>1,NOM p-val<0.05,FDR q-val<0.25的通路下的基因集合是有意义的;NES的绝对值越大,FDR值就越小,说明分析的结果可信度越高。NOM p-val是针对某一功能基因集得到的ES值的统计显著性,P值越小,说明基因的富集性越好,但P值很小时,FDR值也可能很大,这说明和其他功能基因子相比较,它的富集并不是很显著,原因可能是数据样本量较少、杂交信号微弱或者是选择的功能基因子集并未很好得反映样本的物理学意义。

参考:
如何实现GSEA-基因富集分析?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,783评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,360评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,942评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,507评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,324评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,299评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,685评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,358评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,652评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,704评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,465评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,318评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,711评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,991评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,265评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,661评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,864评论 2 335