clusterProfiler : universal enrichment tool for functional and comparative study

一、介绍

对于clusterProfiler包中文件的学习。

Gene Ontology (GO)

从下面三个方面来介绍基因功能。

  1. MF: Molecular Function ,基因产物的分子活性;
  2. CC: Cellular Component,基因产物活跃的地方;
  3. BP: Biological Process,由基因产物组成的pathways and larger processes;

KEGG

反映的是molecular interaction and reaction networks。这些pathway涵盖了广泛的生化过程,可分为7大类:新陈代谢,遗传和环境信息处理,细胞过程,生物系统,人类疾病和药物开发。

GO和KEGG最常用于功能分析。其他基因集包括Disease Ontology (DO), Disease Gene Network (DisGeNET), wikiPathways, Molecular Signatures Database (MSigDb).

二、功能富集分析方法

Over Representation Analysis (ORA)

基因列表是否在已知生物学功能或过程中过度表达(=富集)。可以通过超几何分布来计算p值。
p=1−∑i=1k−1(Mi)(N−Mn−i)(Nn)p=1-\displaystyle\sum_{i=1}^{k-1} \frac{{M \choose i}{N-M \choose n-i}}{{N \choose n}}p=1−i=1∑k−1​(nN​)(iM​)(n−iN−M​)​
n:gene list; N:背景基因数(gene expression profile); M:感兴趣的gene set; k:gene set与gene list共有的基因

假设我们在微阵列研究中检测到17,980个基因,并且有57个基因被差异表达。 在差异表达的基因中,有28个被注释为基因集。

d <- data.frame(gene.not.interest=c(2613, 15310), gene.in.interest=c(28, 29))
row.names(d) <- c("In_category", "not_in_category")
d
##                 gene.not.interest gene.in.interest
## In_category                  2613               28
## not_in_category             15310               29

可以使用超几何分布来评估25个基因的overlap是否在基因集中过表达。对应于Fisher’s exact test的one-sided版本。

fisher.test(d, alternative = "greater")
##
##  Fisher's Exact Test for Count Data
##
## data:  d
## p-value = 1
## alternative hypothesis: true odds ratio is greater than 1
## 95 percent confidence interval:
##  0.110242      Inf
## sample estimates:
## odds ratio
##  0.1767937

Gene Set Enrichment Analysis(GSEA)

可确定先验定义的一组基因是否在两个生物学状态(例如表型)之间显示出统计学上显着的一致差异。它能帮助生物学家在两种不同的生物学状态 (biological states)中,判断某一组有特定意义的基因集合的表达模式更接近于其中哪一种。

GSEA也可以用于发现两组样本从表达或其它度量水平分别与哪些特定生物学意义的基因集有显著关联,或者发现哪些基因集的表达模式或其他模式更接近于表型A、哪些更接近于表型B。这些特定的基因集合可以从GO、KEGG、Reactome、hallmark或MSigDB等基因集中获取,其中MSigDB数据库整合了上述所有基因集。研究者也可自定义gene set (即新发现的基因集或其它感兴趣的基因的集合)。

GSEA分析似乎与GO分析类似但又有所不同。GO富集分析是先筛选差异基因,再判断差异基因在哪些注释的通路存在富集,实则是对一部分基因的分析 (忽略差异不显著的基因),而GSEA是从全体基因的表达矩阵中找出具有协同差异 (concordant differences)的基因集,故能兼顾差异较小的基因。因此二者的应用场景略有区别。另外GO富集是定性的分析,GSEA考虑到了表达或其它度量水平的值的影响。另外,对于时间序列数据或样品有定量属性时,GSEA的优势会更明显,不需要每个分组分别进行富集,直接对整体进行处理。可以类比于之前的WGCNA分析。

Gene Set Enrichment Analysis (基因集富集分析)用来评估一个预先定义的基因集的基因在与表型相关度排序的基因表中的分布趋势,从而判断其对表型的贡献。其输入数据包含两部分,一是已知功能的基因集 (可以是GO注释、MsigDB的注释或其它符合格式的基因集定义),一是表达矩阵 (也可以是排序好的列表),软件会对基因根据其与表型的关联度(可以理解为表达值的变化)从大到小排序,然后判断基因集内每条注释下的基因是否富集于表型相关度排序后基因表的上部或下部,从而判断此基因集内基因的协同变化对表型变化的影响。

基因根据其表型排名。 给定先验定义的一组基因S,GSEA的目标是确定S的成员是随机分布在整个排名基因列表(L)中还是主要在顶部或底部找到 。

GSEA方法包含三个关键要素:
1.enrichment score (ES)的计算:富集得分(ES)表示集合S在排名列表L的顶部或底部过度表达的程度。

得分通过从上到下遍历列表计算。当遇到S中的基因时,会增加running-sum statistic,当没有遇到时,会减小。变化的幅度取决于gene statistics,比如基因与表型的相关性。

ES为random walk中maximum deviation from zero,对应于a weighted Kolmogorov-Smirnov-like statistic。

2.ES显着性水平的估计:使用置换检验计算ES的p值。 具体来说,我们置换了基因列表L的基因标签,并针对置换后的数据重新计算了该基因集的ES,从而为ES生成了null distribution。 然后相对于该null distribution计算观察到的ES的p值。

3.多重假设检验的校正:当评估整个基因集时,DOSE调整估计的显着性水平以考虑多重假设检验,并且还为FDR control计算q值。

Leading edge analysis and core enriched genes

Leading edge analysis报告:
1.Tags:指示有助于富集得分的基因的百分比
2.List:指示在列表中获得富集得分的位置
3.Signal:指示富集信号强度

DOSE 支持leading edge analysis,并且可以报告core enriched genes in GSEA analysis.

三、Gene Ontology Analysis

Entrez ID实际上是指的Entrez gene ID,是对应于染色体上一个gene location的。每一个发现的基因都会被编制一个统一的编号,而Entrez ID是指的来自于NCBI旗下的Entrez gene数据库所使用的编号。每个基因的编号具有唯一性,包括不同种属生物间的同源基因编号也不相同。

有多个entrez ID对应一个symbol的现象出现,但是没有一个symbol对应多个entrez ID的现象。而且entrez ID也会过期!

Ensembl ID,其所代表的是在Ensembl数据库中对基因的命名:
1.ENS是固定字符,表示这是一个Ensembl ID。默认物种是人,如果是小鼠的话则以ENSMUS开头
2.G表示该id指的是一个基因,E for exon,** FM** for protein family, G for gene,** GT** for gene tree, P for protein, R for regulatory feature and T for transcript.
3. .4为版本号,表示其在Ensembl数据中进行了4次变更

## Gene Ontology Analysislibrary(clusterProfiler)
library(org.Hs.eg.db)
data(geneList, package="DOSE") #12495
head(geneList)
# 4312     8318    10874    55143    55388      991
# 4.572613 4.514594 4.418218 4.144075 3.876258 3.677857 ##########################################
## Biological Id TRanslator
gene <- names(geneList)[abs(geneList) > 2]
gene.df <- bitr(gene, fromType = "ENTREZID",toType = c("ENSEMBL", "SYMBOL"),OrgDb = org.Hs.eg.db)
head(gene.df)
#   ENTREZID      NSEMBL    SYMBOL
# 1     4312 ENSG00000196611   MMP1##########################################
## Functional Profile of a gene set at specific GO level
ggo <- groupGO(gene     = gene,OrgDb    = org.Hs.eg.db,ont      = "CC",level    = 3,readable = TRUE)
# [1] "ID"          "Description" "Count"       "GeneRatio"   "geneID"##########################################
## GO over-representation test ####
ego <- enrichGO(gene          = gene,universe      = names(geneList),OrgDb         = org.Hs.eg.db,ont           = "CC",pAdjustMethod = "BH",pvalueCutoff  = 0.01,qvalueCutoff  = 0.05,readable      = TRUE)
# [1] "ID"          "Description" "GeneRatio"   "BgRatio"     "pvalue"
# [6] "p.adjust"    "qvalue"      "geneID"      "Count"# OrgDb支持的任何基因ID类型都可以直接用于GO分析中
ego2 <- enrichGO(gene         = gene.df$ENSEMBL,OrgDb         = org.Hs.eg.db,keyType       = 'ENSEMBL',ont           = "CC",pAdjustMethod = "BH",pvalueCutoff  = 0.01,qvalueCutoff  = 0.05)# 通过使用参数read = TRUE或setReadable函数,可以将基因ID映射到基因Symbol
ego2 <- setReadable(ego2, OrgDb = org.Hs.eg.db)##########################################
## drop specific GO terms or level
dropGO(x, level = NULL, term = NULL)##########################################
## test GO at sepcific level
gofilter(x, level = 4)##########################################
## reduce redundancy of enriched GO terms
# calculate semantic语义 similarity among GO terms and remove those highly similar terms by keeping one representative term
simplify(x,cutoff = 0.7,by = "p.adjust",select_fun = min,measure = "Wang",semData = NULL
)##########################################
## GO Gene Set Enrichment Analysis
# 可以检测预定义集中所有基因以较小但协调的方式发生变化的情况。 由于很可能许多相关的表型差异由一组基因中的微小但一致的变化所体现
ego3 <- gseGO(geneList     = geneList,OrgDb        = org.Hs.eg.db,ont          = "CC",nPerm        = 1000,minGSSize    = 100,maxGSSize    = 500,pvalueCutoff = 0.05,verbose      = FALSE)
## KEGG analysis# 注释包KEGG.db自2012年以来未更新,函数中支持下载最新的在线KEGG数据以进行富集分析library(clusterProfiler)
library(org.Hs.eg.db)
data(geneList, package="DOSE")
gene <- names(geneList)[abs(geneList) > 2]###################################
### search kegg organism
ecoli <- search_kegg_organism('Escherichia coli', by='scientific_name')
## 'kegg.code', 'scientific_name' 'common_name'
dim(ecoli)
## [1] 65  3###################################
### KEGG over-representation test
kk <- enrichKEGG(gene         = gene,organism     = 'hsa',pvalueCutoff = 0.05)
# keyType   :one of "kegg", 'ncbi-geneid', 'ncbi-proteinid' and 'uniprot'# kegg ID是真核生物的entrezgene ID,而原核生物的是Locus ID。
# UniProt是 Universal Protein 的英文缩写,是信息最丰富、资源最广的蛋白质数据库。###################################
### convert biological ID using KEGG API
eg2np <- bitr_kegg(gene, fromType='ncbi-geneid', toType="kegg",organism='hsa')# ncbi-geneid   kegg   uniprot  ncbi-proteinid
#     10112    10112   O95235    NP_005724###################################
### KEGG Gene Set Enrichment Analysis
kk2 <- gseKEGG(geneList     = geneList,organism     = 'hsa',nPerm        = 1000,minGSSize    = 120,pvalueCutoff = 0.05,verbose      = FALSE)###################################
### KEGG Module over-representation test
# KEGG模块是手动定义的功能单元的集合。 在某些情况下,KEGG模块具有更直接的解释。
mkk <- enrichMKEGG(gene = gene,organism = 'hsa')###################################
### KEGG Module Gene Set Enrichment Analysis
mkk2 <- gseMKEGG(geneList = geneList,organism = 'hsa')

reference

https://cloud.tencent.com/developer/article/1426130
https://www.jianshu.com/p/13c0a04fd507
https://yulab-smu.github.io/clusterProfiler-book/index.html

clusterProfiler R package相关推荐

  1. Horseshoe prior的R package介绍:HS.normal.mean函数

    Horseshoe prior的R package介绍:HS.normal.mean函数 最近做的一些事情需要和Horseshoe prior对比,所以一直在看Horseshoe的一些资料.上周做了一 ...

  2. Making fast, good decisions with the FFTrees R package

    "-[W]e are suspicious of rapid cognition. We live in a world that assumes that the quality of a ...

  3. r spgm 语言_Spatial Simultaneous Equations空间联立方程 的R package和经典文献

    这个spse包我debug了一下,感觉是有点问题.用spsepgm函数的时候,该函数调用splm包中的spgm函数后,再调用用spgm函数返回值results$rhs,而spgm返回值中并不包含rhs ...

  4. cf relevent R package

    http://www.jstatsoft.org/v40/i13/

  5. R package XML安装

    install.packages("XML", type = "binary") 参考

  6. Reporter Score 微生物功能富集分析

    Introduction 功能富集分析是一种用于分析基因集合或基因组数据中功能模式富集程度的计算方法.它可以帮助揭示在特定生物学背景下,哪些功能模块.代谢通路.基因家族等在统计上富集或显著过表示. 功 ...

  7. R语言package安装显示(as ‘lib’ is unspecified)并出现未知路径

    想问一个新问题: 安装本地包"dataMAM"package的时候出现这个 > install.packages("G:/Study software/R pack ...

  8. RStuido Server 选择不同的 R 版本(conda 中的不同 R 版本)

    自从上一次服务器重装系统之后,总感觉缺少了一些东西,安装R包很多依赖库报错,也可以解决,但总是存在,烦. 一天,一个同事问我说ggpubr包安装不成功,我就自己试了一下,真的是--安装不成功. 当你到 ...

  9. Microbiome:animalcules-交互式微生物组分析和可视化的R包

    animalcules-交互式微生物组分析和可视化的R包 animalcules: interactive microbiome analytics and visualization in R Mi ...

最新文章

  1. UE卡通风格游戏场景制作视频教程
  2. 将Apache添加为Linux的服务 实现自启动
  3. el-drawer点击的时候为什么有边框_剪映教学之视频拍摄加剪辑【一】:出视频上下黑色边框模糊效果,视频广告配音...
  4. SQL Server添加索引
  5. php curl 无法获取网页内容,php curl获取网页内容(IPV6下超时)的解决办法
  6. 【SAS NOTES】在一个data中生成多个数据集
  7. ServerVersion 引发了“System.InvalidOperationException”类型的异常
  8. 一张图学会python-一张图让你学会Python
  9. R速成指南-时间序列重采样
  10. 欧姆龙cp1h指令讲解_欧姆龙plc指令讲解.ppt
  11. 酷派删除android系统软件,Coolpad酷派8720L哪些系统软件可以删除(精简列表)
  12. codeblock图形界面编程
  13. 王佩丰数据透视表(六到十一讲)
  14. 这个百度网盘批量转存工具真香
  15. LiveZilla 详细 配置 设置 (三) 配置 LiveZilla 服务
  16. Gartner 魔力四象限
  17. 电脑常用快捷键及组合键
  18. 开心一刻:今天下班后,我尾随一女同事,为她充当护花使者
  19. 300辆无人车200万公里路测零事故,首次揭秘背后整套安全保障方案
  20. tab标签页-选项卡后边+后端所返数据的数量

热门文章

  1. Python地学分析 — 地理空间参考系介绍
  2. 在线html批量生成工具,在线网址链接批量生成器
  3. V-REP 传送带教程
  4. MacbookPro 2019 安装tensorflow GPU加速版
  5. PC时代结束 Web取而代之
  6. Python 文本终端 GUI 框架,太酷了
  7. PANGU 生态乐园 NFT 系列上线 The Sandbox 市场平台
  8. 数据分析_常见的业务分析指标及模型介绍
  9. SDJZU_新生_递推动规_HDU 2569 彼岸
  10. 彻底搞懂Python切片操作_xing2516_新浪博客