提供一站式科研服务解决方案

技术服务电话
027-65528997

R语言|GO富集分析

发表时间:2022-04-19 17:52

GO富集分析


小编今天给大家分享的是R语言做GO富集分析相关方法,觉得有用的客官阔以看看。




01 示例数据



百度网盘下载链接:

https://pan.baidu.com/s/1PPUW5YyJHjwxvkjmMi0Vtw?pwd=c9s8

提取码: c9s8



02 安装包介绍



clusterProfiler包:功能也比较强大,主要是做GO和KEGG的功能富集及其可视化。

org.Hs.eg.db包:转换NCBI、ensemble等数据库中基因ID,symbol等之间的转换。

enrichplot包:实现多种可视化方法来解释富集结果。

4GOplot:功能富集绘图。



03 绘图



1、安装加载包;

#安装包if (!requireNamespace("BiocManager", quietly = TRUE))   install.packages("BiocManager")BiocManager::install("org.Hs.eg.db")BiocManager::install("DOSE")BiocManager::install("clusterProfiler")BiocManager::install("enrichplot")install.packages("colorspace")install.packages("stringi")install.packages("ggplot2")install.packages("digest")install.packages("GOplot")#加载包library(clusterProfiler)library(org.Hs.eg.db)library(enrichplot)library(ggplot2)library(stringi)   # 处理表格数据的包library(GOplot)


2、设置工作路径;

setwd("D:\\demo\\GOcircos")


3、数据整理;

inputFile="input.txt"# 读取文件      rt=read.table(inputFile,sep="\t",header=T,check.names=F)

genes=as.vector(rt[,1])   # 选取rt第一列gene保存到genesentrezIDs=mget(genes, org.Hs.egSYMBOL2EG, ifnotfound=NA)   # 找出基因对应的IDentrezIDs=as.character(entrezIDs)   # 获取数据rt=cbind(rt,entrezID=entrezIDs)    # 添加一列entrezIDrt=rt[is.na(rt[,"entrezID"])==F,]   # 删除没有基因的IDgene=rt$entrezID

GO富集分析

GO=enrichGO(gene = gene,            OrgDb = org.Hs.eg.db, # 参考基因组            pvalueCutoff =1,   # P值阈值            qvalueCutoff = 1,   # qvalue是P值的校正值            ont="all",   # 主要的分为三种,三个层面来阐述基因功能,生物学过程(BP),细胞组分(CC),分子功能(MF)            readable =T)   # 是否将基因ID转换为基因名# 强制转换为数据框GO=as.data.frame(GO)

# 筛选显著富集的数据GO<-GO[(GO$pvalue<0.05 & GO$p.adjust<0.05),]# 保存数据write.table(GO,file="GO1.txt",sep="\t",quote=F,row.names = F)# 构建数据框矩阵go=data.frame(Category = GO$ONTOLOGY,ID = GO$ID,Term = GO$Description, Genes = gsub("/", ", ", GO$geneID), adj_pval = GO$p.adjust)# 构建数据框矩阵genelist=data.frame(ID = rt$gene, logFC = rt$logFC)row.names(genelist)=genelist[,1]circ <- circle_dat(go, genelist)termNum = 5   #限定GO数目termNum=ifelse(nrow(go)<termNum,nrow(go),termNum)geneNum = nrow(genelist)   #限定基因数目


4、绘图、保存图片.

# 差异圈图chord <- chord_dat(circ, genelist[1:geneNum,], go$Term[1:termNum])pdf(file="GOcircos.pdf",width = 10,height = 10.2)GOChord(chord,         space = 0.001,           # 基因之间的间距        gene.order = 'logFC',    # 排序基因        gene.space = 0.25,       # 基因离圆圈距离        gene.size = 3,           # 基因字体大小        border.size = 0.1,     # 线的大小        process.label = 7)       # GO名称大小dev.off()

#聚类圈图pdf(file="GOcluster.pdf",width = 12,height = 9)GOCluster(circ, as.character(go[1:termNum,3]))dev.off()


END



图图云平台-永久免费绘图工具

    https://www.cloudtutu.com/


关注公众号--获取更多精彩


作图帮
作图帮
免费分享科研作图软件及其使用方法,为科研助力!
公众号

图图交流群3



首页          产品专区          服务支持          品牌介绍          新闻活动
联系QQ:905381807
联系电话:027-65528997
联系邮箱:marketing@wefindbio.com