R语言基因功能富集分析气泡图

2023-10-17 20:30

本文主要是介绍R语言基因功能富集分析气泡图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、基因本体论介绍
  • 二、数据获得
  • 三、气泡图绘制
  • 四、参考


前言

大家好✨,这里是bio🦖。有一位粉丝询问我如何绘制基因功能富集分析图,简单了解过后发现这是gene ontology(基因本体论)有关的知识,之前从未了解过。于是想写篇博客记录一下新知识以及第一次教粉丝绘图。
看完本篇博客,你将学习到:
1. 什么是基因本体论
2. 如何绘制基因功能富集分析图


一、基因本体论介绍

基因本体论 (Gene Ontology, GO)是生物信息学主要的项目,旨在是统一所有物种的基因和基因产物属性的代表。具体而言,这个项目的目的是(1)维持和发展在控制下基因及基因产物属性的词汇;(2)注释基因及基因产物属性,同化或传播注释数据;(3)提供工具,方便访问项目提供的数据的各个方面,并使用GO实现实验数据的功能解释[1]

GO包含生物学的三个方面[1]
细胞组分(cellular component):细胞的组成部分或细胞外环境
分子功能(molecular function):基因产物在分子水平的活性,如结合或催化活性
生物过程(biological process):有明确开始和结束的操作或一组分子事件,与整合的生命单位的功能有关。

哔哩哔哩有个讲解视频,个人觉得很不错,感兴趣的读者可以去看看哔哩哔哩讲解视频

二、数据获得

数据是粉丝提供的,感兴趣的读者可以下载:
百度网盘下载链接
提取码:svwx

在这里插入图片描述

图一,数据图

Category:种类
CategoryID:种类id
GO:GO编码
Description:描述
PARENT_GO:上一级的GO(这个可能没理解对)
LogP:P值的负对数
Enrichment:富集
Z-score:
GeneInHitList:基因在自己列表中的数量
GeneInGOAndHitList:基因在自己列表中且在GO中的数量

Z-score 的意思没有查到,如果有读者知道,可以告知一下,谢谢!

三、气泡图绘制

因为它的数据只需要简单的处理就可以使用了,所以话不多说直接上代码:

library(openxlsx)
library(ggplot2)setwd('YOUR_WORKWAY')# import data
data <- read.xlsx('1021_csdn.xlsx', sheet = 2)# data processing## calculate gene ratio
data$GeneRatio <- data$`#GeneInGOAndHitList` / data$`#GeneInHitList`## transfer negative PV to positive
data$positive_Pvalue <- -(data$LogP)draw_data <- data.frame(Description = data$Description, LogP = data$positive_Pvalue,GeneRatio = data$GeneRatio,Enrichment = data$Enrichment)# visualize data
ggplot(draw_data, aes(x=GeneRatio, y=Description))+geom_point(aes(size=Enrichment, color=LogP))+scale_colour_continuous(name="LogP", low='orange', high='red')

在这里插入图片描述

图二,气泡图

绘制出的散点图有部分点偏移了,可以对数据进行缩放(不等缩放,类似于y=ax+b

library(openxlsx)
library(ggplot2)setwd('YOUR_WORKWAY')# import data
data <- read.xlsx('1021_csdn.xlsx', sheet = 2)# data processing## calculate gene ratio
data$GeneRatio <- data$`#GeneInGOAndHitList` / data$`#GeneInHitList`## transfer negative PV to positive
data$positive_Pvalue <- -(data$LogP)## scale the gene ratio
data$percentage <- ceiling(rep(1,15) / data$GeneRatio)
data$GeneRatio <- data$percentage * data$GeneRatiodraw_data <- data.frame(Description = data$Description, LogP = data$positive_Pvalue,GeneRatio = data$GeneRatio,percentage = data$percentage * 10)# visualize data
ggplot(draw_data, aes(x=GeneRatio, y=Description))+geom_point(aes(size=percentage, color=LogP))+scale_colour_continuous(name="LogP", low='pink', high='red')+labs(size="10*percentage")

在这里插入图片描述

图三,数据处理气泡图

四、参考

[1]. wikipedia Gene Ontology
[2]. 哔哩哔哩视频讲解


这篇关于R语言基因功能富集分析气泡图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/227770

相关文章

Spring Boot Interceptor的原理、配置、顺序控制及与Filter的关键区别对比分析

《SpringBootInterceptor的原理、配置、顺序控制及与Filter的关键区别对比分析》本文主要介绍了SpringBoot中的拦截器(Interceptor)及其与过滤器(Filt... 目录前言一、核心功能二、拦截器的实现2.1 定义自定义拦截器2.2 注册拦截器三、多拦截器的执行顺序四、过

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u

Nginx内置变量应用场景分析

《Nginx内置变量应用场景分析》Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一... 目录1. Nginx 内置变量速查表2. 核心变量详解与应用场景3. 实际应用举例4. 注意事项Ng

Java多种文件复制方式以及效率对比分析

《Java多种文件复制方式以及效率对比分析》本文总结了Java复制文件的多种方式,包括传统的字节流、字符流、NIO系列、第三方包中的FileUtils等,并提供了不同方式的效率比较,同时,还介绍了遍历... 目录1 背景2 概述3 遍历3.1listFiles()3.2list()3.3org.codeha

GO语言zap日志库理解和使用方法示例

《GO语言zap日志库理解和使用方法示例》Zap是一个高性能、结构化日志库,专为Go语言设计,它由Uber开源,并且在Go社区中非常受欢迎,:本文主要介绍GO语言zap日志库理解和使用方法的相关资... 目录1. zap日志库介绍2.安装zap库3.配置日志记录器3.1 Logger3.2 Sugared

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql

GO语言中gox交叉编译的实现

《GO语言中gox交叉编译的实现》本文主要介绍了GO语言中gox交叉编译的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录一、安装二、使用三、遇到的问题1、开启CGO2、修改环境变量最近在工作中使用GO语言进行编码开发,因