GSEA会用了,来了解下DGSEA?

简介: 差异基因集富集分析(DGSEA)是对Broad Institute / MIT的原始的Gene Set Enrichment Aanlysis(GSEA)分析算法的改进。它是一种用来确定输入基因集在两种生物通路之间是否显示出统计学上差异计算方法。

a9dabc0072a15ef2b6a0c8aa1a8cc22.png

Github地址:https://github.com/JamesJoly/DGSEA

简单来讲,就是假如观察一组基因集在两个通路中的富集情况时,除了得出在各自通路中富集结果信息外,彼此两个通路之间也会做出差异检验从而来判断富集的两个通路之间的相关性,我是这么理解的,对原理感兴趣详见paper

3b002341ae1222a48d68235a1c29a9e.png

安装

if (!require(devtools)) {
  install.packages('devtools')
}    
devtools::install_github('JamesJoly/DGSEA')
#install.packages('GSA')
library(GSA)  ##读取gmt格式文件用到

数据准备

其实和R中我们运行GSEA函数提供的文件一致,只需要准备genelist和gmt文件即可,这里作者也提供了示例文件供练习:

genelist:https://raw.githubusercontent.com/JamesJoly/DGSEA/master/MCF10A_MCF12A_Log2Ratio.csv

gmt file:https://raw.githubusercontent.com/JamesJoly/DGSEA/master/KEGG_metabolic_pathways.gmt

  1. 基因集列表(一列为基因ID,一列为log2foldchange)

b2e897a1acf5d49288e26469474d169.png

  1. KEGG通路的gmt文件

c18b822d2a1d9c9fa559aeb373866bb.png

# 输入数据
data_in <- read.csv('./MCF10A_MCF12A_Log2Ratio.csv')
colnames(data_in)[1] <- "Gene"
# 提取数据
MCF10A <- data_in[,1:2]
# 导入gmt格式文件
#install.packages('GSA')
library(GSA)
kegg.pathways <- GSA.read.gmt("./KEGG_metabolic_pathways.gmt")

DGSEA分析

基因集富集分为非靶向和靶向分析

非靶向

也就是当我们没有目的通路信息时候,程序会默认两两比较。

library(DGSEA)
set.names <- kegg.pathways$geneset.names
> head(set.names)
[1] "Core_Glycolysis"                              
[2] "KEGG_OXIDATIVE_PHOSPHORYLATION"               
[3] "KEGG_GLYCOLYSIS_GLUCONEOGENESIS"              
[4] "KEGG_CITRATE_CYCLE_TCA_CYCLE"                 
[5] "KEGG_PENTOSE_PHOSPHATE_PATHWAY"               
[6] "KEGG_PENTOSE_AND_GLUCURONATE_INTERCONVERSIONS"
## 非靶向(无目标通路)
untargeted.MCF10A <- dgsea_untargeted(MCF10A, kegg.pathways)
 targeted.MCF10A1$DGSEA.Results

结果有16列信息,如果我们没有指定要做差异的两个通路的话,函数会自动将gmt文件中的通路两两组合分别计算给出结果。

如这里A组、B组还有AB之间各自展示了常见的指标ES(富集分数)、NES(标准化后的富集分数)、P值和FDR值,我们根据这些指标可以进一步筛选~

e055fbf75c860103d5ca1fcc0818061.png

靶向

当我们有目的通路信息时候,比如拿gmt文件中前两个通路Core Glycolysis 与OxPhos为例

## 靶向(有目标通路)
targeted.MCF10A <- dgsea_targeted(MCF10A, kegg.pathways,
                                  set.names[1], set.names[2])
targeted.MCF10A$DGSEA.Results

提取结果,只显示出我们比对的这两个通路的相关信息

aea1d881af5c52cac78a0165aea90ac.png

接着绘制富集分析图

# Generate Mountain Plots
MCF10A.mtn.plot <- make_mountain_plots(targeted.MCF10A, set.names[2], set.names[4],color = F)
MCF10A.mtn.plot
?make_mountain_plots

218222106698225dadc57a3c764e092.png

其实这里和我们常用的gseaplot2函数绘制的多通路合并一图的效果类似,只不多作者在此基础上又在通路之间进行了统计学分析,这样便更有利于我们根据得到的指标来判断通路之间相关作用程度~

1def519df9f09d0c1f965574ec81855.png

总之,作者在利用真实癌症数据使用该方法后,发现DGSEA比GSEA更能预测癌细胞的代谢状态,数据表明DGSEA是一种新型检测基因集在转录组数据中的相对富集的工具

参考链接

Differential Gene Set Enrichment Analysis (DGSEA): https://jamesjoly.github.io/DGSEA/

相关文章
|
3月前
|
自然语言处理 关系型数据库 MySQL
一文明白MySQL索引的用法及好处
一文明白MySQL索引的用法及好处
56 0
|
3月前
|
Go
Go语言导入包:探究点操作符、下划线和别名的妙用
Go语言导入包:探究点操作符、下划线和别名的妙用
70 0
|
11月前
|
数据采集 PHP 开发者
|
NoSQL Java 数据库
解释afterPropertiesSet方法的用处
解释afterPropertiesSet方法的用处
|
存储 开发工具 git
使用“要整合的更改”解决冲突是什么意思?底层原理是什么?
使用“要整合的更改”解决冲突是什么意思?底层原理是什么?
353 0
|
数据库
【高效编码】查询日志的命令老是记不住?没关系,这篇文章帮你记
您好,我是码农飞哥,一直想飞暂时在跑个那个老哥。
243 0
【高效编码】查询日志的命令老是记不住?没关系,这篇文章帮你记
|
Unix Apache C++
给代码写注释时有哪些讲究?
给代码写注释时有哪些讲究?
144 0
给代码写注释时有哪些讲究?
|
Web App开发 JavaScript 前端开发
B乎问题:通俗的解释下Vite能用来干嘛?是怎么回事?
最近在B乎看到了这么一个问题,能不能通俗地讲 Vite 到底是用来干嘛的,一开始觉得这个问题没什么意思,因为 Vite 这个话题有太多的人讲了。
B乎问题:通俗的解释下Vite能用来干嘛?是怎么回事?
千万别再一直无脑使用ES6的箭头函数了,它虽然很有用但并不是万能的
相信很多小伙伴自从知道了ES6的箭头函数以后,都疯狂得使用,渐渐的淡忘了普通函数的使用。不过确实,箭头函数看起来比较简洁,用起来也舒服,不过它的出现是为了解决某一部分问题的,并不是用来替代普通函数的,所以我们不能在每一个地方都使用箭头函数
133 0
千万别再一直无脑使用ES6的箭头函数了,它虽然很有用但并不是万能的