差异基因富集分析(R语言——GO&KEGG&GSEA)
创作时间:
作者:
@小白创作中心
差异基因富集分析(R语言——GO&KEGG&GSEA)
引用
CSDN
1.
https://m.blog.csdn.net/m0_74823892/article/details/145804059
本文主要介绍了使用R语言进行差异基因富集分析的具体步骤,包括GO、KEGG和GSEA三种富集分析方法。文章内容详细,包含了具体的R代码示例,适合有一定生物信息学背景的读者参考学习。
1. 准备差异基因集
在进行通路富集分析之前,我们需要准备差异基因集。通常我们会将差异基因分为上调基因和下调基因分别进行分析。下面是一些示例代码:
##载入所需R包
library(readxl)
library(DOSE)
library(org.Hs.eg.db)
library(topGO)
library(pathview)
library(ggplot2)
library(GSEABase)
library(limma)
library(clusterProfiler)
library(enrichplot)
##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。
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富集BPCCMFKEGG分面绘图需要分开处理一下,富集结果里的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富集BPCCMF的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是跟后面气泡一一对应的,当然还有其他可视化方式那就需要各位自己去探索了,谢谢!
5. GSEA富集分析
这里也是做一下简单的GSEA
##GSEA官方网站下载背景gmt文件并读入
geneset <- list()
geneset[["c2_cp"]] <- read.gmt("c2.cp.v2023.2.Hs.symbols.gmt")
geneset[["c2_cp_kegg_legacy"]] <- read.gmt("c2.cp.kegg_legacy.v2023.2.Hs.symbols.gmt")

geneset[["c2_cp_kegg_medicus"]] <- read.gmt("c2.cp.kegg_medicus.v2023.2.Hs.symbols.gmt")
geneset[["c2_cp_reactome"]] <- read.gmt("c2.cp.reactome.v2023.2.Hs.symbols.gmt")
geneset[["c3_tft"]] <- read.gmt("c3.tft.v2023.2.Hs.symbols.gmt")
geneset[["c4_cm"]] <- read.gmt("c4.cm.v2023.2.Hs.symbols.gmt")
geneset[["c5_go_bp"]] <- read.gmt("c5.go.bp.v2023.2.Hs.symbols.gmt")
geneset[["c5_go_cc"]] <- read.gmt("c5.go.cc.v2023.2.Hs.symbols.gmt")
geneset[["c5_go_mf"]] <- read.gmt("c5.go.mf.v2023.2.Hs.symbols.gmt")
geneset[["c6"]] <- read.gmt("c6.all.v2023.2.Hs.symbols.gmt")
geneset[["c7"]] <- read.gmt("c7.all.v2023.2.Hs.symbols.gmt")
##进行GSEA富集分析,这里也是写了个循环
gsea_results <- list()
for (i in names(gene_diff)){
geneList <- gene_diff[[i]]$logFC
names(geneList) <- toupper(rownames(gene_diff[[i]]))
geneList <- sort(geneList,decreasing = T)
for (j in names(geneset)){
listnames <- paste(i,j,sep = "_")
gsea_results[[listnames]] <- GSEA(geneList = geneList,
TERM2GENE = geneset[[j]],
verbose = F,
pvalueCutoff = 0.1,
pAdjustMethod = "none",
eps=0)
}
}
##批量绘图,注意这里如果有空富集通路,会报错!
for (j in 1:nrow(gsea_results[[i]]@result)) {
p <- gseaplot2(x=gsea_results[[i]],geneSetID=gsea_results[[i]]@result$ID[j], title =
gsea_results[[i]]@result$ID[j])
pdf(paste(paste(names(gsea_results)[i], gsea_results[[i]]@result$ID[j], sep =
"_"),".pdf",sep = ""))
print(p)
dev.off()
}
6. GSEA富集最简单图形如下
分享到此结束了,希望对大家有所帮助。
热门推荐
数列与级数:当下很重要,但趋势更重要
辣味经济:为什么00后都为“痛并快乐”买单?
国内避暑胜地深度游体验分享
中国坚果消费报告:人均年消费将达1公斤,夏威夷果进口三年翻倍
洗衣机如何强制解锁?洗衣机门锁故障?这些技巧帮你轻松解决
线面垂直:判断方法解析与应用场景
乒乓球扣杀技术图文详解:从张继科七连扣到实战技巧
深度学习模型量化方法
纯电电动汽车NDEC续航标准解读:概念及计算方式
东阳当代家具入选法国国家公共收藏 法新社评价“上汐是中国当代设计运动中的先锋”
让当地人悄悄告诉你!京都府的独家私房景点
Win11软件权限设置怎么调整?如何管理权限更安全?
汇金概念的定义是什么?这种概念如何影响金融市场?
陕西省中医药研究院陕西省中医医院:带状疱疹的治疗与预防
核磁共振技术在复杂药物杂质鉴定中的应用
北京航空航天大学:传承弘扬以“空天报国”为内核的“北航精神”
既让中国粉丝满意也在国际市场有所作为,《三体》电影该走向何方?
光的轨道角动量:调控光电流的新途径
女士甲状腺疾病的自我判断
生活中如何保护心脏
《人类简史》:一部颠覆认知的人类文明发展史
白银价格上涨 未来走势如何?
员工申请社保断缴再补缴?HR必知的5大风险点与合规操作指南
《道德经》第四十二章:道生万物与对立统一的智慧
陈式太极拳新架与老架在传承过程中是如何演变分化的?
突厥人横扫欧亚,把基因输出全球!为何中国就很少有突厥后裔?
一毕业就有编有岗,他们为啥不想要?
三种家常大虾做法:从粤菜到川菜,总有一款适合你
农作物真菌病害全部解析完全版
火影忍者手游平民玩家必看:首个S忍如何选择?