小白学习RNA-seq之旅

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

2020-03-16  本文已影响0人  小贝学生信

1、基础知识

(1)基本概念

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

(2)分类标准

分类的标准即人们根据目前研究建立的基因注释库,目前常用的有两个:GO与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')
# 需要稍等一会
dim(go.all)
head(go.all)
go.all.df=as.data.frame(go.all)

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

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

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

(1)柱形图

barplot(go.all,showCategory=20,drop=T)

(2)点图

dotplot(go.aal,showCategory=20)

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

如上图DAG图结果--

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)

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

结果可视化

(1)柱状图、点图

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

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

browseKEGG(kegg,'hsa04213')


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

上一篇 下一篇

猜你喜欢

热点阅读