Bioinformatics

刘小泽学习GSEA

2020-01-23  本文已影响0人  刘小泽

刘小泽写于2020.1.22-23
自从上次写过豆豆在UM的第一天 就开始了适应过程,到现在也适应差不多了,一切步入正轨,赶在过年之前发一波
我们经常听说:Gene Set Enrichment Analysis、GSEA、基因集富集分析,这三种实际上都是描述的一种方法,就是寻找基因的功能大概是什么样子的。
这一次,就来认识一下GSEA吧

以往的认知

我们经常做转录组分析,于是最熟悉的是:差异分析 + 功能注释。经常设定一个logFC阈值,然后找变化倍数大于或者小于这个值的基因,作为上调或者下调。而这个阈值的设定,经常没有一个标准,主观性很大,但有时也会添加一点统计知识进去,比如利用mean + 2sd来计算这个阈值。

最后会利用这些差异基因,来进行GO或者KEGG的注释,找到它们主要在哪些通路富集,从而提供一些思路。

那么以上👆的思路就属于:过表征分析(ORA, Over-Representation Analysis),属于初步探索。

当然其中也会有一些问题,例如:

之前也介绍过相关的内容,见:富集分析Enrich Me!富集分析Enrich me again!

GSEA就是属于第二代方法:FCS(Functional Class Scoring)的范畴

基本上能看到类似的这种图就说明是用GSEA做的:

那么怎么认识这个GSEA呢?

毕竟之前和它大的交道少,于是需要大体了解一下(但不是说去钻研算法)

从原理开始

其实排好序之后,我们可以手动去基因列表L的两侧去查,看看有没有我们想要的基因,但往往一个基因列表动辄上万,因此这个方法虽然可以做,但软件和统计知识并不允许我们去这么干。

于是,事先将已知的通路(包含相关的基因信息)存储起来,用的时候直接去验证它们就好了,而这个就是基因集富集分析的基因集。比如要看某个GO term在我们排序好的基因列表中富集在头部还是尾部,就能反证我们的基因集中treat组上调或者下调基因是否属于这个通路

GSEA方法的原假设是:某个通路的全部基因在我们排序后的基因列表中随机分布,如果我们看到它们”意外“出现在基因列表的某一端(从图上看是在某一侧形成一个峰),那么就可以计算显著性来看看富集程度如何。如果富集结果显著,那么就拒绝原假设,认为这个通路的基因在我们的基因列表中富集,并且看到富集分数

名词解释

参考资料

GSEA怎么分析

方法一:R语言

首先也是做一个差异分析,可以用limma、edgeR或者DESeq2
然后需要一个基因列表,按照log2FC从大到小排序
# 得到差异分析结果:DEG_mtx
geneList <- DEG_mtx$log2FoldChange
# 如果是Ensemble ID,并且如果还带着版本号,需要去除版本号,再进行基因ID转换,得到Entrez ID
names(geneList) <-  str_split(rownames(DEG_mtx) ,
                              pattern = '\\.',simplify = T)[,1]
geneList_tr <- bitr(names(geneList), 
                        fromType = "ENSEMBL",
                        toType = c("ENTREZID","SYMBOL"),
                        OrgDb = org.Hs.eg.db) 

new_list <- data.frame(ENSEMBL=names(geneList), 
                           logFC = as.numeric(geneList)) 
new_list <- merge(new_list, geneList_tr, by  = "ENSEMBL")
geneList <- new_list$logFC 
names(geneList) <- geneList_tr$ENTREZID 
# 最后从大到小排序,得到一个字符串
geneList <- sort(geneList,decreasing = T) 
再利用clusterProfiler进行GSEA分析

方法二:GSEA软件

搞定输入

软件需要三个输入文件,分别是:

调整参数

参考:http://software.broadinstitute.org/gsea/doc/GSEAUserGuideTEXT.htm#_Run_GSEA_Page

查看结果

程序一般会在主目录下新建一个目录:gsea_home,然后 output 里面按照日期进行排序

里面的文件会非常多,但有一个总览index.html

就会看到:

并且它们都可以直接点开看结果,或者将excel读取到R语言中进行处理

如果要把结果读取到R中

结果文件也是存放在了index.html同级目录中,就是一个excel表格

GSEA_result_up <- readr::read_delim("gsea_report_for_trt_9111157956735.xls",delim = "\t")
GSEA_result_up <- GSEA_result_up %>%
    select(NAME,NES,SIZE,`FDR q-val`)

欢迎关注我们的公众号~_~  
我们是两个农转生信的小硕,打造生信星球,想让它成为一个不拽术语、通俗易懂的生信知识平台。需要帮助或提出意见请后台留言或发送邮件到jieandze1314@gmail.com

Welcome to our bioinfoplanet!
上一篇 下一篇

猜你喜欢

热点阅读