功能富集分析
在得到了差异基因的基础之上,进一步进行功能富集分析,这里我们使用clusterprofiler包
本文将对差异基因进行 GO, KEGG注释并完成可视化,GSEA分析
Sys.setlocale('LC_ALL','C')
library(tidyverse)
library(ggplot2)
library(dplyr)
library(clusterProfiler)
library(org.Hs.eg.db)
load(file = "DEG_all.Rdata")
head(DEG)
##定义 筛选logFC>=1, P<=0.05的差异基因
DEG_2% rownames_to_column("genename") #%>% as_tibble() %>%
filter(abs(logFC)>=0.58,P.Value<=0.05)
genelist
## ID转换
genelist% bitr(fromType = "SYMBOL",
toType = c("ENSEMBL", "ENTREZID"),
OrgDb = org.Hs.eg.db)
head(genelist)
dim(genelist)
GO富集分析
注意clusterprofiler中使用的富集ID是ENTREZID,如果不是需要进行转换,也很简单
我们这里其实可以用我们自带的probe中的ID
使用了semi_join这个筛选连接
注意这里我故意使用的是筛选连接,其实inner_join, 等等都可以,我就是要用这些不熟悉的
但是这里的probe其实基因名是有重复的,我们还要进行去重的操作
如果自己有probe信息
if(F){
load("probe.Rdata")
names(probe)[2]
DEG_2
probe
##设定差异阈值筛选
DEG_2% arrange(abs(logFC)) %>%
filter(abs(logFC)>=0.58,P.Value<=0.05)
dim(DEG_2)
gene%as_tibble() %>% dplyr::semi_join(DEG_2,by="genename") %>% .$ENTREZ_GENE_ID
head(gene)
length(gene)##相当于是取了交集,用DEG_2中的基因来做筛选,得到了12549个基因
}
我们假设没有probe注释信息
ego
OrgDb = org.Hs.eg.db,
keyType = 'ENSEMBL',##指定gene id的类型
ont = "all",##GO分类
pAdjustMethod = "BH",
pvalueCutoff = 0.01,##设置阈值
qvalueCutoff = 0.05,
readable=TRUE)
write.csv(ego,file = "ego.csv")
ego[1:5,1:5]
##
ONTOLOGY ID
GO:0019882 BP GO:0019882</