前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R优雅的进行代谢组KEGG富集分析

R优雅的进行代谢组KEGG富集分析

作者头像
R语言数据分析指南
发布2022-09-21 14:57:07
5K3
发布2022-09-21 14:57:07
举报
文章被收录于专栏:R语言数据分析指南

安装R包

代码语言:javascript
复制
library(tidyverse)
library(magrittr)
library(clusterProfiler)

导入KEGG数据库注释文件

代码语言:javascript
复制
keggannotation <- read_tsv("pathway",col_names = F) %>% 
  left_join(.,read_tsv('map.txt',col_names = F),by="X1") %>% 
  select(-1) %>% set_colnames(c("pathway","ID")) %>% 
  mutate(across("ID",str_replace,"cpd:","")) %>% select(2,1) %>% 
  arrange(ID)

全部代谢物编号

代码语言:javascript
复制
allkeggid <- read_tsv("meta_intensity_neg.anno.xls") %>% select(KEGG) %>% 
  bind_rows(.,read_tsv("meta_intensity_pos.anno.xls") %>% select(KEGG)) %>% 
  arrange() %>% filter(KEGG !="_") %>% set_colnames(c("ID")) 

差异代谢物

代码语言:javascript
复制
diffkeggID <- read_tsv("diff.xls") %>% select(KEGG) %>% 
  arrange() %>% filter(KEGG !="_") %>% set_colnames(c("ID"))

数据整合

代码语言:javascript
复制
total <- right_join(keggannotation,allkeggid,by="ID") %>% select(2,1)

富集分析

代码语言:javascript
复制
x <- clusterProfiler::enricher(gene = diffkeggID$ID,TERM2GENE = total,minGSSize = 1,pvalueCutoff = 1,qvalueCutoff = 1)

结果导出

代码语言:javascript
复制
write.csv(as.data.frame(x@result) %>% select(-1,-2),file="KEGG_enrichment_result.csv")

数据清洗

代码语言:javascript
复制
df <- read_csv("KEGG_enrichment_result.csv") %>%
  dplyr::rename("Description"="...1") %>% 
  arrange(desc(Count)) %>%
  select(1,2,3,4,8) %>% 
  separate(`GeneRatio`,into=c("A","B"),sep="/") %>%
  mutate(A=as.numeric(A),B=as.numeric(B)) %>%
  mutate(count=A/B) %>% head(30) %>% arrange(Count)

定义因子

代码语言:javascript
复制
df$Description <- factor(df$Description,levels = c(df$Description %>% as.data.frame() %>% pull()))

数据可视化

代码语言:javascript
复制
df %>% ggplot(aes(count,Description))+
  geom_point(aes(size=Count,color=pvalue,fill=pvalue),pch=21)+
  scale_color_gradientn(colours = (rev(RColorBrewer::brewer.pal(11,"RdBu"))))+
  scale_fill_gradientn(colours =(rev(RColorBrewer::brewer.pal(11,"RdBu"))))+
  guides(size=guide_legend(title="Count"))+
  labs(x=NULL,y=NULL)+
  theme(axis.title = element_blank(),
        axis.text.x=element_text(color="black",angle =0,hjust=0.5,vjust=0.5, margin = margin(b =5)),
        axis.text.y=element_text(color="black",angle =0,hjust=1,vjust=0.5),
        panel.background = element_rect(fill = NA,color = NA),
        panel.grid.minor= element_line(size=0.2,color="#e5e5e5"),
        panel.grid.major = element_line(size=0.2,color="#e5e5e5"),
        panel.border = element_rect(fill=NA,color="black",size=1,linetype="solid"),
        legend.key=element_blank(),
        legend.title = element_text(color="black",size=9),
        legend.text = element_text(color="black",size=8),
        legend.spacing.x=unit(0.1,'cm'),
        legend.key.width=unit(0.5,'cm'),
        legend.key.height=unit(0.5,'cm'),
        legend.background=element_blank(),
        legend.box="horizontal",
        legend.box.background = element_rect(color="black"),
        legend.position = c(1,0),legend.justification = c(1,0))+
  scale_y_discrete(labels = function(y) str_wrap(y,width=30))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导入KEGG数据库注释文件
  • 全部代谢物编号
  • 差异代谢物
  • 数据整合
  • 富集分析
  • 结果导出
  • 数据清洗
  • 定义因子
  • 数据可视化
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档