01
基因富集分析基本概念
今天我们来讲一讲什么是基因富集分析
首先我们要抓住一个核心,那就是:
“将我们挑出来的基因归归类,聚类分析,看看这些基因的功能和我们的研究是否具有共性”。
知道了这一点,对富集分析的原理就更好理解:所谓富集分析,本质上就是对分布的检验,如果分布集中在某一个区域,则认为富集。比如正态分布就是一种富集在均值附近的分布。它是一种挖掘在数据库中,与我们要研究的生物学问题具有显著相关性,基因功能类别的分析方法。
简单来说,当我们获得了一批生物数据时,例如转录组的数据,蛋白质组的数据,在基因差异表达分析之后,你得到了差异基因,可能几个到上百个不等,局限于单纯的某个基因的分析是很困难的,但是想要从庞大的关系网络中挑选出有效信息,比如直接将某几个基因和某个研究的生物学现象结合起来也很耗时。
因此为了降低研究的复杂度,有人就将不同生物学现象与基因的对应关系做成了多个数据库。当我们手上有成百个差异基因时,做什么分析就用什么数据库去比对,这个过程就叫做富集分析。
采用富集分析后,就发现在生物学过程中起关键作用的生物通路,并且帮助理解生物学过程的分子机制。
02
富集分析工具
对于富集分析,有两种常见方法,一是GO分析,一种是KEGG。
对此我们列出了两种常见的分析方法,理论成立,实践开始。
一.GO富集分析(Gene Ontology):
这是一个基因本体联合会组织(Gene Ontology Consortium)建立的数据库,规范统一了对于不同物种的基因和蛋白描述。
首先,想要对一个芯片做富集分析,我们要先完成差异分析,得到我们想要进行富集分析的差异基因,将差异基因导入再经过转换id即可
1,导入数据
#转换idrm(list = ls()) #魔幻操作,一键清空~
library(tidyverse)
library(data.table)
library(org.Hs.eg.db)
library(clusterProfiler)
library(biomaRt)
library(enrichplot)
gene <-read.table(“ex_deg.txt”) #导入数据
s.EntrezID<bitr(gene$symbol,fromType='SYMBOL',toType= 'ENTREZID',OrgDb = "org.Hs.eg.db") #转换成ENTREZID进行后续操作。
2,GO分析
go <- enrichGO(gene = s.EntrezID$ENTREZID,
OrgDb= org.Hs.eg.db,
ont = "ALL",
pAdjustMethod = "BH",
pvalueCutoff = 0.05,
qvalueCutoff = 0.05,
keyType = 'ENTREZID')
3,生成条图
#条图
Ontology<factor(go2$Description,labels=go2$ONTOLOGY)
go3<ggplot(go2,aes(x=Description,y=Count,fill=Ontology))+
geom_bar(stat = "identity",width = 0.5)+
coord_flip()
go3
二.KEGG (Kyoto Encyclopedia of Genes and Genomes)
1,同样导入数据
#转换idrm(list = ls()) #魔幻操作,一键清空~
library(tidyverse)
library(data.table)
library(org.Hs.eg.db)
library(clusterProfiler)
library(biomaRt)
library(enrichplot)
gene<-read.table(“ex_deg.txt”) #导入数据
s.EntrezID<bitr(gene$symbol,fromType='SYMBOL',toType='ENTREZID',OrgDb="org.Hs.eg.db") #转换成ENTREZID进行后续操作。
2,KEGG分析
KEGG<enrichKEGG(gene=s.EntrezID$ENTREZID,
organism = 'hsa',
pvalueCutoff = 0.05)
kegg <- data.frame(KEGG@result)
kegg <- kegg[kegg$pvalue<0.05,]
kegg <- arrange(kegg,desc(Count))
kegg1 <- kegg[1:10,]gr<- data.frame(strsplit(kegg1$GeneRatio,'/'))
gr1 <- as.numeric(gr[1,])/as.numeric(gr[2,])
kegg1$GeneRatio <- gr1
3,生成气泡图
#气泡图
kegg2<ggplot(kegg1,aes(x=GeneRatio,y=Description))+
geom_point(aes(size=Count,color=-1*log10(pvalue)))+
scale_colour_gradient(low="blue",high="red")+
labs( color=expression(-log[10](P.value)),
size="Gene number", x="GeneRatio",
y="Pathway name",
title="Pathway enrichment")+
theme_bw()+
theme(axis.text.y = element_text(size = rel(1.3)),
axis.title.x = element_text(size=rel(1.3)),
axis.title.y = element_blank())
参考资料:
[1] clusterProfiler(version 4.0.5)
[2] org.Hs.eg.db(version 3.5.0)
-END-
文 | 小吴在学生信
网友评论