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

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

MyBatis Plus大数据量查询慢原因分析及解决

《MyBatisPlus大数据量查询慢原因分析及解决》大数据量查询慢常因全表扫描、分页不当、索引缺失、内存占用高及ORM开销,优化措施包括分页查询、流式读取、SQL优化、批处理、多数据源、结果集二次... 目录大数据量查询慢的常见原因优化方案高级方案配置调优监控与诊断总结大数据量查询慢的常见原因MyBAT

分析 Java Stream 的 peek使用实践与副作用处理方案

《分析JavaStream的peek使用实践与副作用处理方案》StreamAPI的peek操作是中间操作,用于观察元素但不终止流,其副作用风险包括线程安全、顺序混乱及性能问题,合理使用场景有限... 目录一、peek 操作的本质:有状态的中间操作二、副作用的定义与风险场景1. 并行流下的线程安全问题2. 顺

MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决

《MyBatis/MyBatis-Plus同事务循环调用存储过程获取主键重复问题分析及解决》MyBatis默认开启一级缓存,同一事务中循环调用查询方法时会重复使用缓存数据,导致获取的序列主键值均为1,... 目录问题原因解决办法如果是存储过程总结问题myBATis有如下代码获取序列作为主键IdMappe

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求: