首页 > 其他分享 >差异基因富集分析(R语言——GO&KEGG&GSEA)

差异基因富集分析(R语言——GO&KEGG&GSEA)

时间:2024-07-03 11:00:04浏览次数:17  
标签:GSEA 富集 差异基因 enrich KEGG edger GO entrezid

接着上次的内容,上篇内容给大家分享了基因表达量怎么做分组差异分析,从而获得差异基因集,想了解的可以去看一下,这篇主要给大家分享一下得到显著差异基因集后怎么做一下通路富集。

1.准备差异基因集

我就直接把上次分享的拿到这边了。我们一般都把差异基因分为上调基因和下调基因分别做通路富集分析。下面上代码,可能包含我的一些个人习惯,勿怪。显著差异基因的筛选条件根据个人需求设置哈。

##edger
edger_diff <- diff_gene_Group
edger_diff_up <- rownames(edger_diff[which(edger_diff$logFC > 0.584962501),])
edger_diff_down <- rownames(edger_diff[which(edger_diff$logFC < -0.584962501),])

##deseq2
deseq2_diff <- diff_gene_Group2
deseq2_diff_up <- rownames(deseq2_diff[which(deseq2_diff$log2FoldChange > 0.584962501),])
deseq2_diff_down <- rownames(deseq2_diff[which(deseq2_diff$log2FoldChange < -0.584962501),])

##将差异基因集保存为一个list
gene_diff_edger_deseq2 <- list()
gene_diff_edger_deseq2[["edger_diff_up"]] <- edger_diff_up
gene_diff_edger_deseq2[["edger_diff_down"]] <- edger_diff_down
gene_diff_edger_deseq2[["deseq2_diff_up"]] <- deseq2_diff_up
gene_diff_edger_deseq2[["deseq2_diff_down"]] <- deseq2_diff_down

2.进行通路富集分析

这里主要介绍普通的GO&KEGG&GSEA的简单富集。筛选显著富集通路的筛选条件也是根据自己的需求决定,一般是矫正后P值小于0.05。我这里是省事,写了各list循环。

for (i in 1:length(gene_diff_edger_deseq2)){
  keytypes(org.Hs.eg.db)
  
  entrezid_all = mapIds(x = org.Hs.eg.db,  
                        keys = gene_diff_edger_deseq2[[i]], 
                        keytype = "SYMBOL", #输入数据的类型
                        column = "ENTREZID")#输出数据的类型
  entrezid_all  = na.omit(entrezid_all)  #na省略entrezid_all中不是一一对应的数据情况
  entrezid_all = data.frame(entrezid_all) 
  
  ##GO富集##
  GO_enrich = enrichGO(gene = entrezid_all[,1],
                       OrgDb = org.Hs.eg.db, 
                       keyType = "ENTREZID", #输入数据的类型
                       ont = "ALL", #可以输入CC/MF/BP/ALL
                       #universe = 背景数据集我没用到它。
                       pvalueCutoff = 1,qvalueCutoff = 1, #表示筛选的阈值,阈值设置太严格可导致筛选不到基因。可指定 1 以输出全部
                       readable = T) #是否将基因ID映射到基因名称。
  
  GO_enrich_data  = data.frame(GO_enrich)
  write.csv(GO_enrich_data,paste('GO_enrich_',names(gene_diff_edger_deseq2)[i], '.csv', sep = ""))
  GO_enrich_data <- GO_enrich_data[which(GO_enrich_data$p.adjust < 0.05),]
  write.csv(GO_enrich_data,paste('GO_enrich_',names(gene_diff_edger_deseq2)[i], '_filter.csv', sep = ""))
  
  
  ###KEGG富集分析###
  KEGG_enrich = enrichKEGG(gene = entrezid_all[,1], #即待富集的基因列表
                           keyType = "kegg",
                           pAdjustMethod = 'fdr',  #指定p值校正方法
                           organism= "human",  #hsa,可根据你自己要研究的物种更改,可在https://www.kegg.jp/brite/br08611中寻找
                           qvalueCutoff = 1, #指定 p 值阈值(可指定 1 以输出全部)
                           pvalueCutoff=1) #指定 q 值阈值(可指定 1 以输出全部)
  KEGG_enrich_data  = data.frame(KEGG_enrich)
  write.csv(KEGG_enrich_data, paste('KEGG_enrich_',names(gene_diff_edger_deseq2)[i], '.csv', sep = ""))
  KEGG_enrich_data <- KEGG_enrich_data[which(KEGG_enrich_data$p.adjust < 0.05),]
  write.csv(KEGG_enrich_data, paste('KEGG_enrich_',names(gene_diff_edger_deseq2)[i], '_filter.csv', sep = ""))
}

3.通路富集情况可视化

这里只介绍一种简单的气泡图,当然还有其他的自己去了解吧。

##GO&KEGG富集BP\CC\MF\KEGG分面绘图需要分开处理一下,富集结果里的ONTOLOGYL列修改
GO_enrich_data_BP <- subset(GO_enrich_data, subset = GO_enrich_data$ONTOLOGY == "BP")
GO_enrich_data_CC <- subset(GO_enrich_data, subset = GO_enrich_data$ONTOLOGY == "CC")
GO_enrich_data_MF <- subset(GO_enrich_data, subset = GO_enrich_data$ONTOLOGY == "MF")

##提取GO富集BP\CC\MF的top5
GO_enrich_data_filter <- rbind(GO_enrich_data_BP[1:5,], GO_enrich_data_CC[1:5,], GO_enrich_data_MF[1:5,])

##重新整合进富集结果
GO_enrich@result <- GO_enrich_data_filter

##处理KEGG富集结果
KEGG_enrich@result <- KEGG_enrich_data
ncol(KEGG_enrich@result)
KEGG_enrich@result$ONTOLOGY <- "KEGG"
KEGG_enrich@result <- KEGG_enrich@result[,c(10,1:9)]

##整合GO KEGG富集结果
ego_GO_KEGG <- GO_enrich
ego_GO_KEGG@result <- rbind(ego_GO_KEGG@result, KEGG_enrich@result[1:5,])
ego_GO_KEGG@result$ONTOLOGY <- factor(ego_GO_KEGG@result$ONTOLOGY, levels = c("BP", "CC", "MF","KEGG"))##规定分组顺序

##简单画图
pdf("edger_diff_up_dotplot.pdf", width = 7, height = 7)
dotplot(ego_GO_KEGG, split = "ONTOLOGY", title="UP-GO&KEGG", label_format = 60, color = "pvalue") + 
  facet_grid(ONTOLOGY~., scale = "free_y")+
  theme(plot.title = element_text(hjust = 0.5, size = 13, face = "bold"), axis.text.x = element_text(angle = 90, hjust = 1))
dev.off()

4.气泡图如图所示

做了些处理,真实图片,左侧pathway是跟后面气泡一一对应的,当然还有其他可视化方式那就需要各位自己去探索了,谢谢!

标签:GSEA,富集,差异基因,enrich,KEGG,edger,GO,entrezid
From: https://blog.csdn.net/m0_73145613/article/details/140145314

相关文章

  • 如何基于Perl实现批量蛋白名转换为基因名?以做后续GO与KEGG分析
    众所周知,在完成蛋白组学组间差异蛋白筛选后,往往要做GO与KEGG功能富集分析,这就需要我们首先将蛋白名转换为基因名,或者找出基因ID。将蛋白名转化为基因名可能涉及不同的转换工具或数据库,这里有几种常见的方法:①UniProt数据库:UniProt数据库提供了蛋白和其对应基因的关联信息。可......
  • 23-有参转录组实战9-差异基因GO富集分析
    #这里需要对非模式物种制作ORG.DB包,如果是模式物种,“https://bioconductor.org/packages/release/BiocViews.html#___OrgDb”该网站有自带的成熟的包,自行下载使用就行。#对上一个教程中得到的out.emapper.annotations文件,对表头修整下:#windows上的R运行library(dplyr)libra......
  • 22-有参转录组实战8-基因功能注释_GO_KEGG_swissprot_pfam_TFDB_iTAK
    #进行功能注释时,我们只用到蛋白文件,就是上一期提取序列的文件“Ptri.protein.fa”。#使用命令“grep-c">"Ptri.protein.fa”统计下“>”的个数,发现有52400个。#新建文件夹“swissprot”wgethttps://ftp.uniprot.org/pub/databases/uniprot/current_release/knowledgebase......
  • KEGG富集分析图-代码
    KEGG富集分析柱状图结果图展示该条形图展示的是富集在每个Term的基因数目。Term可以是GO或者通路名称等等。FDR是矫正后的pֵ值。输入数据该输入数据的每一行显示的是一个Term(GO或通路)中富集到的基因数目、比例、P值。每一行的数据用制表符“\t”分隔。input.txt代码#......
  • KEGG PATHWAY
     KEGGPATHWAYDatabaseKEGGPATHWAY数据库是一个手工画的代谢通路的集合,包含以下几方面的分子间相互作用和反应网络:1.新陈代谢2.遗传信息加工3.环境信息加工4.细胞过程5.生物体系统6.人类疾病7.药物开发PATHWAY的五种类型仅仅第一种参考通路(referencepathway)图是手动画出来的......
  • 批量获取www.kegg.jp的数据
    代码如下:importrequestsfrombs4importBeautifulSoupimportredefvisit2(url):response=requests.get(url)#检查响应是否成功ifresponse.status_code==200:#使用BeautifulSoup解析HTMLsoup=BeautifulSoup(response.text,"ht......
  • KEGG level
    在宏基因组分析中,KEGG(KyotoEncyclopediaofGenesandGenomes)是一个常用的生物信息学工具,用于对基因功能和代谢通路进行分析。KEGG数据库将基因和蛋白质与生物通路和代谢途径相关联,以帮助研究人员理解生物体内的分子机制。"KEGGlevel"是指KEGG通路的层次结构。KEGG通路分为不......
  • 为什么做GO/KEGG富集分析
     在进行差异表达分析的时候,我们会得到很多的差异表达基因,富集分析可以把这些差异基因概述成整体事件。A信号通路与症状有关,而不是A1/A2/A3等基因与症状有关。GO和KEGG就是基于不同的分类,而储存的基因相关功能的数据库。  利用GO数据库,我们就可以得到我们的目标基因在CC,MF和......
  • 安装 R package KEGG.db
    目前我的R版本是4.0以上的,已经找不到KEGG.db的package了,只能手动来~~ 首先,在bioconductor的主页搜索KEGG.db,然后找到在KEGG.db的页面,找到下载链接 https://bioconductor.org/packages/3.6/data/annotation/src/contrib/KEGG.db_3.2.3.tar.gz。在我的ubuntu终端上,wget ......
  • GSEA富集分析 - 界面操作
    GSEA定义GeneSetEnrichmentAnalysis(基因集富集分析)用来评估一个预先定义的基因集的基因在与表型相关度排序的基因表中的分布趋势,从而判断其对表型的贡献。其输入数据包含两部分,一是已知功能的基因集(可以是GO注释、MsigDB的注释或其它符合格式的基因集定义),一是表达矩阵,软件......