GO、KEGG(批量分组)分析及可视化

news2024/11/19 16:36:11

这篇帖子其实是更新、补充、解决一下问题的。我们号写过很多GO、KEGG富集分析的可视化,数不胜数,可以在公众号检索“富集”了解更多。我们演示的时候都是直接提供了富集的结果文件,一般演示为了图方便,也是利用在线工具cytoscape做的。结果一伙伴最近提问有做过GO、KEGG富集的R语言帖子么,突然发现这样的内容还没有正经写过,所以这里补充一下。

1、GO、KEGG分析

首先我们做一下单独的GO、KEGG分析,这里我们使用的是引用很高的,基本上人人都在用的余老师的R包-clusterProfiler,相信大家都很熟悉了。我们这里创新在于使用循环,对上下调基因分别进行GO、KEGG分析,并保存结果。初学者小伙伴可以好好理解下代码意思。

setwd("D:/KS科研分享与服务公众号/GO和KEGG分析")
library(clusterProfiler)
library(ggplot2)
library(org.Hs.eg.db)
#筛选显著性上下调基因
df <- read.csv('DEGs_trans.csv', header = T)
df_up <- df[which(df$log2FoldChange>2 & df$padj < 0.01),]#至于什么阈值自己定
df_down <- df[which(df$log2FoldChange< -2 & df$padj < 0.01),]
#做GO和KEGG分析需要进展gene id转化

sig_gene <- list(df_up, df_down)
names(sig_gene) <- c("df_up","df_down")

#GO和KEGG结果存储
sig_gene_GO <- list()
sig_gene_KEGG <- list()

#里面分析阈值请自己确定
for (i in 1:length(sig_gene)){
  
  entrezid_all = mapIds(x = org.Hs.eg.db,  #按照自己的物种修改
                        keys = sig_gene[[i]]$gene, 
                        keytype = "SYMBOL", 
                        column = "ENTREZID")
  entrezid_all  = na.omit(entrezid_all) 
  entrezid_all = data.frame(entrezid_all) 
  
  GO_enrich = enrichGO(gene = entrezid_all[,1],
                       OrgDb = org.Hs.eg.db, #按照自己的物种修改
                       keyType = "ENTREZID", 
                       ont = "BP", #可以选择All、或者CC、MF
                       pAdjustMethod = "BH",
                       pvalueCutoff = 0.05,
                       qvalueCutoff = 0.05,
                       readable = T) 
  GO_enrich  = GO_enrich@result
  
  sig_gene_GO[[i]] <- GO_enrich
  names(sig_gene_GO)[i] <- names(sig_gene)[i]
  
  
  KEGG_enrich = enrichKEGG(gene = entrezid_all[,1], 
                           keyType = "kegg",
                           pAdjustMethod = 'BH',  
                           organism= "hsa",  #https://www.kegg.jp/brite/br08611 #按照自己的物种修改
                           qvalueCutoff = 0.05,
                           pvalueCutoff=0.05)
  KEGG_enrich  = KEGG_enrich@result
  
  sig_gene_KEGG[[i]] <- KEGG_enrich
  names(sig_gene_KEGG)[i] <- names(sig_gene)[i]
  
}


#保存为csv文件
for (i in 1:2){
  A <- sig_gene_GO[[i]]
  write.csv(A,file =paste(names(sig_gene)[i],"_GO.csv"))
  
}

for (i in 1:2){
  A <- sig_gene_KEGG[[i]]
  write.csv(A,file =paste(names(sig_gene)[i],"_KEGG.csv"))
  
}

最后可视化我们决定不再使用之前的哪些可视化方式了,因为写过太多了,再写就没意思了。正好最近看到老俊俊的生信笔记分享的一个富集可视化R包aPEAR,我们就利用这个包顺便做一下可视化。是网络的形式,GO、KEGG结果都可以展示,还是可以。更多详细的用法请查看这个包的帮助文档!

install.packages("aPEAR")#https://github.com/ievaKer/aPEAR
library(aPEAR)
#相关阈值设定清查阅读 ?enrichmentNetwork
#enrichmentNetwork返回的是ggplot对象,所以可以用ggplot2主题修饰
enrichmentNetwork(sig_gene_KEGG[[1]], 
                  colorBy = 'pvalue', 
                  colorType = 'pval')+
  scale_color_gradientn(colours = c("#B83D3D",'white','#1A5592'),
                        name = "pvalue")

image.png

到这里我们这篇帖子还没结束,有两个原因。第一我们之前总是说一个函数,多组GO分析(例如:Clusterprofile多分组富集分析及可视化),但是没有说过KEGG,有小伙伴去做的时候出错,其实参数里面选择KEGG,设置对就可以进行这个分析。第二个问题是有小伙伴发来图让复现,是富集结果的展示,乍一看很复杂,既是网络图,又是多组的,其实很简单,clusterProfiler多组富集分析和enrichplot早就解决了这个问题。所以这两个问题我们归为一个进行解决。

image.png

reference:A single-cell transcriptomic atlas of exercise-induced antiinflammatory and geroprotective effects across the body

2、分组GO、KEGG分析

我们还是利用之前的分组基因的文件,进行多组KEGG分析(这里就不再展示GO),之后进行可视化。首先是分析,很简单:

setwd("D:/KS科研分享与服务公众号/多组富集分析")
library(Seurat)
library(SeuratData)
library(clusterProfiler)
library(enrichplot)
df_sig <- read.csv("df.csv", header = T)
#数据如此格式即可,其他的数据整理成此格式即可
group <- data.frame(gene=df_sig$gene,group=df_sig$cluster)#分组情况

#gene转化为ID
Gene_ID <- bitr(df_sig$gene, fromType="SYMBOL", 
                toType="ENTREZID", 
                OrgDb="org.Hs.eg.db")

#构建文件并分析
data  <- merge(Gene_ID,group,by.x='SYMBOL',by.y='gene')
data_KEGG <- compareCluster(ENTREZID~group,
                            data=data,
                            fun = "enrichKEGG",#函数选择什么定义什么分析
                            pAdjustMethod = "BH",
                            pvalueCutoff = 0.05,
                            qvalueCutoff = 0.05,
                            organism= "hsa")#物种

可视化,其他的可视化调整可自行学习函数相关参数:

#结果可视化
data_KEGG <- pairwise_termsim(data_KEGG)#要做分组图,需要先运行这个函数
emapplot(data_KEGG, showCategory=8,legend_n=2)+
  scale_fill_manual(values = dittoColors())#修改填充颜色

image.png

关于富集分析的内容就补充到这里了,觉得分享有用的点个赞再走呗!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/699570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络工程师的副业,能有多野?

大家好&#xff0c;我是许公子。 在网工这行做了这么久&#xff0c;经常会有同事或者朋友来问我&#xff0c;有没有什么搞副业的路子。 别说&#xff0c;选择还真挺多。 前两天的文章里&#xff0c;这位朋友就秀了一波&#xff0c;这工作速度、便捷程度、收款金额&#xff0c…

Java并发编程-线程基础

哈喽,大家好,这篇文章主要讲解Java并发编程,线程基础的知识点,讲解知识点的同时也会穿插面试题的讲解. 主要讲解以下内容 进程,线程基础常见的一些区别比较如何使用和查看线程理解线程如何运行以及线程上下文切换的知识线程方法线程状态 希望能给大家带来帮助.加油~~~ 目录 进…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第十九章 口令破解与防御技术下)【建议收藏】

文章目录 一、自学网络安全学习的误区和陷阱二、学习网络安全的一些前期准备三、自学网络安全学习路线一、口令攻击的综合应用1、Windows NT, 2000口令攻击2、Windows XP, 2003口令攻击3、Unix系统口令攻击4、远程口令攻击 二、口令攻击的防御1、口令攻击防御概述2、保持口令的…

RS485转Profinet通讯

RS485转Profinet通讯 概述系统组成流量积算仪网关 软件总结 概述 一个支持RS485的流量积算仪的数据要被Profinet的PLC读取。制作一个网关&#xff0c;实现RS485到Profinet的转换。 系统组成 流量积算仪 支持RS485通讯&#xff0c;通讯协议是modbus RTU。采用功能码3可以读取…

非GUI模式下如何传参

非GUI模式下如何传参 Jmeter 有两种模式&#xff0c;GUI模式和非GUI模式&#xff0c;通常使用GUI模式编辑脚本&#xff0c;使用非GUI模式运行压测&#xff0c;官网上有强调&#xff0c;尽量使用非GUI模式&#xff0c;因为GUI模式下&#xff0c;jmeter UI组件本身在压测过程中会…

论文浅尝 | SimKGC:基于预训练语言模型的简单对比知识图谱补全

笔记整理&#xff1a;李雅新&#xff0c;天津大学硕士&#xff0c;研究方向为知识图谱补全 链接&#xff1a;https://dl.acm.org/doi/10.1145/3539597.3570483 动机 知识图谱补全 (KGC) 旨在对已知事实进行推理并推断缺失的链接。基于文本的方法从自然语言描述中学习实体表示&a…

Spring Boot 中的 @EnableConfigurationProperties 注解

Spring Boot 中的 EnableConfigurationProperties 注解 在 Spring Boot 中&#xff0c;EnableConfigurationProperties 注解是一个非常有用的注解&#xff0c;它可以用于启用对特定配置类的支持。在本文中&#xff0c;我们将深入探讨 EnableConfigurationProperties 注解&…

ST CubeMX 实现6对PWM同步输出/互补输出/三相PWM输出

频率为1KHz的6对PWM波形 原理:定时器1为主模式,定时器8为从模式,TIM1的定时器使能操作作为触发输出[TRGO]触发TIM8并使能TIM8的计数器,同时输出两路频率、占空比以及脉冲数量(小于256个,高级定时器重复计数功能为8位)可调PWM波形。 Tim1 参数配置 Tim8参数配置 未同步输出…

CC2530 GPIO口输出配置说明

第一章 原理图分析 CC2530核心板上带有两颗晶振:第一颗频率为32MHZ,第二颗频率为32.768KHZ CC250正常运行的时候,需要一个高频的时钟信号和一个低频的时钟信号。 高频时钟信号,主要供给CPU,保证程序的运行。 低频时钟信号,主要供给看门狗、睡眠定时器等片上外设。 按…

【强化学习】常用算法之一 “TRPO”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

StorageGRID——开放式的 S3 对象存储,可大规模管理非结构化数据

StorageGRID——开放式的 S3 对象存储&#xff0c;可大规模管理您的非结构化数据 专为混合多云体验打造的对象存储 StorageGRID 通过简化的平台为对象数据提供更强大的数据管理智能。由于 StorageGRID 利用 S3&#xff0c;因此可以轻松地连接混合云工作流&#xff0c;提供流畅…

C++ - 20230628

一. 思维导图 二. 练习 1) 总结类和结构体的区别 本身的访问级别不同struct是值类型&#xff0c;class是引用类型struct在栈&#xff0c;适合处理小型数据。class在堆区&#xff0c;适合处理大型逻辑和数据。 2) 定义一个矩形类&#xff08;Rectangle&#xff09;&#xff…

基于Java+SpringBoot+vue的高校学生党员发展管理系统设计与实现

博主介绍&#xff1a;✌擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案…

我是怎么把win11一步一步变成Mac的

目录 【三指拖动】 【空格预览】 【切换Ctrl和Alt】 【使用Linux命令】 【其它】 之前很长一段时间在MacBook上面开发习惯了&#xff0c;然后因为一些原因现在换到了windows上面&#xff0c;不管是使用上还是系统上都很不习惯&#xff0c;因此做了一些改造&#xff0c;…

LTD232次升级 | 社区新增PC版首页 • 名片新增卡片样式、可展示传真 • 导航数据可官微中心管理 • 个人中心可定制

1、社区支持PC版首页 2、名片小程序新增一种全局卡片样式、支持显示传真 3、官微中心新增导航管理 4、手机版商城个人中心支持版块配置 5、新增一组新闻轮播模块 01 用户社区应用 1) 新增PC版社区首页 在本次升级中&#xff0c;我们为用户社区应用新增了PC版的首页。 开…

【探索 Kubernetes|作业管理篇 系列 15】DaemonSet 的”过人之处“

前言 大家好&#xff0c;我是秋意零。 在上一篇中&#xff0c;我们讲解了 StatefulSet 的存储状态&#xff1b;我们发现&#xff0c;它的存储状态&#xff0c;就是利用了 PV 与 PVC 的设计。StatefulSet 自动为我们创建 PVC 并且以 <pvc-name>-<pod-name>-<编…

selenium模拟!看这篇就够了

介绍 Selenium是一个用于自动化Web浏览器测试的开源工具&#xff0c;它支持多种Web浏览器&#xff08;如Google Chrome、Firefox、Safari等&#xff09;和操作系统&#xff08;如Windows、Mac和Linux&#xff09;。Selenium可以模拟用户在Web浏览器中的行为&#xff0c;例如点…

ssm汉语言学习应用系统APP -计算机毕设 附源码80400

ssm汉语言学习应用系统APP 摘 要 在信息飞速发展的今天&#xff0c;网络已成为人们重要的信息交流平台。每天都有大量的农产品需要通过网络发布&#xff0c;为此&#xff0c;本人开发了一个基于Android模式的汉语言学习应用系统。 对于本汉语言学习应用系统的设计来说&#x…

十、云尚办公系统-员工端审批

云尚办公系统&#xff1a;员工端审批 B站直达【为尚硅谷点赞】: https://www.bilibili.com/video/BV1Ya411S7aT 本博文以课程相关为主发布&#xff0c;并且融入了自己的一些看法以及对学习过程中遇见的问题给出相关的解决方法。一起学习一起进步&#xff01;&#xff01;&…

回收站删除的文件怎么恢复?4招快速搞定!

求救求救&#xff01;我刚刚一个不小心就把回收站清空了&#xff01;但是我回收站里还有需要恢复的文件&#xff0c;这次一不小心清空了回收站&#xff0c;我的重要文件还有机会找回来吗&#xff1f;希望大家帮帮我! 对于部分朋友来说&#xff0c;回收站可能不仅仅是一个垃圾文…