RNA-seq学习:No.5富集分析--ORF过表达

1、基础知识

(1)基本概念

富集分析(enrichment analysis)简单来说就是将成百上千个基因、蛋白或者其他分子分到不同的类中,以减少分析的复杂度。比如之前差异分析得到几百个显著差异基因,如果一个一个单独研究未免太复杂,若按照一定的准则将差异基因归类即可较为快速,方便的了解某一类基因的变化情况。

(2)分类标准

分类的标准即人们根据目前研究建立的基因注释库,目前常用的有两个:GO与KEGG;

  • GO简单来说GO term共有三种类型 ①细胞组成(cellular component,CC);②生物过程(biological process,BP);③分子功能(Molecular Function,MF)。每个go term都由相应的GO annotation来说明该term的详细信息,例如人的go注释文件为org.Hs.eg.db(该类型文件均为.db结尾)。通过GO富集分析可以了解差异基因富集在哪些生物学功能、途径或细胞定位。
  • KEGG,Kyoto Encyclopedia of Genes and Genomes,京都基因和基因组百科全书,是系统分析基因功能,联系基因组信息和功能信息的知识库,其中包含有大量的通路(PATHWAY)图。人的KEGG注释文件为“hsa”。KEGG分析的最终结果就是把判断某些基因是都富集到某一通路上。

(3)过表达分析 over-representation analysis

举一例:首先获得一组感兴趣的基因(一般是差异表达基因,前景基因),假设有10个;其中有4个都归类到某一GO term中或者落在某一通路中(pathway);而在整个基因组中(假设为100个,背景基因)有30个都对应该GO term中或者落在该通路中(pathway)中。基于此来研究4/10与30/100间是否有统计学差异,即观察的计数值是否显著高于随机,即待测功能集在基因列表中是否显著富集。

(4)分析平台

目前有蛮多不错的网站在线富集分析软件,当然也可以通过R语言的R包实现。这里以众多人推荐的clusterProfiler包为例进行学习

if (!requireNamespace("BiocManager", quietly = TRUE))
 install.packages("BiocManager")
BiocManager::install("clusterProfiler")
library(clusterProfiler)

差异基因数据使用前期基于airway包分析得到的结果(筛选条件为padj<0.1 & abs(log2FoldChange)>2)

mydata=read.table("results.csv",header=TRUE,
                 sep=",",stringsAsFactors=FALSE)
genelist=mydata$X
genelist  #共有316个差异基因
genelist

注意此时的基因名为ENSEMBL格式,特征是以ENSG00000字段开头的;其它常见的格式还有ENTREZID,为纯数字序列;SYMBOL为字母为主的字符串。

2、go分析

BiocManager::install("org.Hs.eg.db")
library("org.Hs.eg.db")
# 安装加载人类go注释包
go.all <- enrichGO(genelist, OrgDb = org.Hs.eg.db, ont='ALL',pAdjustMethod = 'BH',pvalueCutoff = 0.05, 
               qvalueCutoff = 0.2,keyType = 'ENSEMBL')
# 需要稍等一会
  • enrichGO函数可以支持多种基因名格式,使用keyType =指定下即可。
dim(go.all)
head(go.all)
go.all.df=as.data.frame(go.all)

由返回结果可以看出共归类到97个 go term中,其中BP类较多;关于表格中的部分变量意义--

  • Description:Gene Ontology功能的描述信息;
  • GeneRatio:差异基因中与该Term相关的基因数与整个差异基因总数的比值;
  • BgRation:所有背景基因中与该Term相关的基因数与所有基因的比值;
  • 三个value值:一般情况下, pvalue < 0.05 该功能为富集项;p.adjust 矫正后的pvalue;qvalue为对p值进行统计学检验的q值;
  • Count:差异基因中与该Term相关的基因数。
    go.all.df

genelist里的差异基因明明有316个,表格中显示好像只有221个??奇怪

基于上述分析,将结果可视化

(1)柱形图

barplot(go.all,showCategory=20,drop=T)
  • 筛选20个p.adjust值最小的GO term;
  • 统计量为Count值;颜色程度根据p.adjust;纵轴标签为Description


    barplot

(2)点图

dotplot(go.aal,showCategory=20)
  • 筛选20个分类到某一term中基因数最多的GO term
  • 注意下GeneRatio是与Count值成正比的,可查看之前的定义


    dotplot

(3)有向无环图DAG
由于这里的数据只能是富集一个GO通路(BP、CC或MF)的数据,因此重新针对某一类go,再分析一下。

go.BP <- enrichGO(genelist, 
                OrgDb = org.Hs.eg.db, 
                ont='BP',
                pAdjustMethod = 'BH',
                pvalueCutoff = 0.05, 
                qvalueCutoff = 0.2,
                keyType = 'ENSEMBL')
plotGOgraph(go.BP)
# 之前失败,提示说一下两个相关包未找到
# BiocManager::install("topGO")
# BiocManager::install("Rgraphviz")
  • 得到的结果图比较大,建议保存成pdf文件查看


    plotGOgraph(go.BP)
#觉得默认文字有点小,调大一下~
opar <- par(no.readonly=TRUE)
par.axis(cex=4)         
plotGOgraph(go.BP)
par(opar) 
局部放大图

如上图DAG图结果--

  • 颜色越深,代表该GO term越显著(p值越小),函数默认将最显著的10个term设置成方形;
  • 图形内标注信息分别是GOterm号、Description、P.adjust以及差异基因注释到该term数与背景基因注释到该term数的比值;
  • 超接近根结点的GO term的概括性越强,越往下,分支的GO term表示的结果更细。

3、kegg分析

由于enrichKEGG()需要输入的基因名格式为ENTREZID,所以需要转换一下,这里使用clusterProfiler包的bitr()函数

gene=bitr(genelist,fromType="ENSEMBL", toType="ENTREZID", OrgDb="org.Hs.eg.db")
gene=gene$ENTREZID

基因数有316变成了267,没匹配到?


bitr()
kegg <- enrichKEGG(gene, 
                   organism = 'hsa', 
                   keyType = 'kegg', 
                   pvalueCutoff = 0.05,
                   pAdjustMethod = 'BH', 
                   minGSSize = 10,
                   maxGSSize = 500,
                   qvalueCutoff = 0.2
)
head(kegg)
dim(kegg)
kegg.df=as.data.frame(kegg)
  • 结果好像只有富集到两条通路上,由于第一次做,不知道对于我的数据来说结果是否正常。


    kegg.df

列的意义可参考go分析得到的表格

结果可视化

(1)柱状图、点图

# 画法同前
barplot(kegg)
dotplot(kegg)
barplot

dotplot

(2)通路图--针对每一个富集到的通路图画的

browseKEGG(kegg,'hsa04213')
  • 红色边框的为上调的,绿色边框的为下调的。


    部分截图

  • 以上就是基于ORP方法,利用两种注释库(go、kegg)进行的分析。其实过表达分析有不少缺点的,比如
    (1)仅使用了基因数目信息,而没有利用基因表达水平或表达差异值;而基因筛选条件基于人为选定差异水平(比如log2FoldChange);
    (2)忽略差异不显著,但比较关键的基因;
    (3)将基因同等对待,ORA法假设每个基因都是独立的,忽视了基因在通路内部生物学意义的不同(如调控和被调控基因的不同)及基因间复杂的相互作用;
    (4)ORA假设通路与通路间是独立的,但这个前提假设是错误的。

  • 由于上述的不足,GSEA方法也常为人们的选择,将会在下一次中继续总结。


参考文章
1、功能富集分析概述
2、GO分析学习笔记(推荐!)

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

推荐阅读更多精彩内容