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/

相关文章
|
7月前
|
C语言 索引
一堆数组程序
一堆数组程序
32 0
|
设计模式 消息中间件 JavaScript
干掉 “重复代码”,这三种方式绝了!
干掉 “重复代码”,这三种方式绝了!
36973 2
干掉 “重复代码”,这三种方式绝了!
|
存储 开发工具 git
使用“要整合的更改”解决冲突是什么意思?底层原理是什么?
使用“要整合的更改”解决冲突是什么意思?底层原理是什么?
418 0
|
设计模式 算法 Java
干掉 “重复代码” 的技巧有哪些
软件工程师和码农最大的区别就是平时写代码时习惯问题,码农很喜欢写重复代码而软件工程师会利用各种技巧去干掉重复的冗余代码。
138 0
干掉 “重复代码” 的技巧有哪些
|
Unix Apache C++
给代码写注释时有哪些讲究?
给代码写注释时有哪些讲究?
171 0
给代码写注释时有哪些讲究?
千万别再一直无脑使用ES6的箭头函数了,它虽然很有用但并不是万能的
相信很多小伙伴自从知道了ES6的箭头函数以后,都疯狂得使用,渐渐的淡忘了普通函数的使用。不过确实,箭头函数看起来比较简洁,用起来也舒服,不过它的出现是为了解决某一部分问题的,并不是用来替代普通函数的,所以我们不能在每一个地方都使用箭头函数
155 0
千万别再一直无脑使用ES6的箭头函数了,它虽然很有用但并不是万能的
|
存储
上拉电阻和下拉电阻的用处和区别
上拉电阻和下拉电阻二者共同的作用是:避免电压的“悬浮”,造成电路的不稳定。 一、上拉电阻如图所示:   1、概念:将一个不确定的信号,通过一个电阻与电源VCC相连,固定在高电平;  2、上拉是对器件注入电流,灌电流;  3、当一个接有上拉电阻的IO端口设置为输入状态时,它的常态为高电平。
6906 1