KEGG通路图绘制

编程入门 行业动态 更新时间:2024-10-26 05:24:15

<a href=https://www.elefans.com/category/jswz/34/743027.html style=KEGG通路图绘制"/>

KEGG通路图绘制

「一边学习,一边总结,一边分享!」

写在前面

今天在GitHub中看到一个ggpathway的包,主要可以制作通路网络图,或是进一步优化的话,可以进行个性话制作。 操作步骤在GitHub中已经很详细。自己也照葫芦画瓢进行运行一下。

GitHub网址:

「获得本教程代码链接:」任意赞赏即可获得

绘图

1, 导入所需R包

library(tidyverse)
library(igraph)
library(ggraph)

library(readxl)

library(viridis)
library(RColorBrewer)
#BiocManager::install("rcartocolor")
library(rcartocolor)

exaple one

  1. 创建数据
### Edge table
example1_edge_table <- tribble(
  ~from, ~to,  ~label,
  "Glc6P", "6P-gluconolactone",  "Glc6PHD",
  "6P-gluconolactone", "6P-glucoconate",  "6P-gluconolactonase",
  "6P-glucoconate", "Ru5P", "6P-gluconateDH"
)
> head(example1_edge_table)
# A tibble: 3 × 3
  from              to                label              
  <chr>             <chr>             <chr>              
1 Glc6P             6P-gluconolactone Glc6PHD            
2 6P-gluconolactone 6P-glucoconate    6P-gluconolactonase
3 6P-glucoconate    Ru5P              6P-gluconateDH 
### Node table
example1_nodes_table <- tribble(
  ~name, ~x,  ~y,
  "Glc6P", 1, 0,
  "6P-gluconolactone", 2, 0,  
  "6P-glucoconate", 3, 0,
  "Ru5P", 4, 0
)

Make network object and graph

## Make network object and graph
example1_network <- graph_from_data_frame(
  d = example1_edge_table,
  vertices = example1_nodes_table,
  directed = T
)

head(example1_nodes_table)
> head(example1_nodes_table)
# A tibble: 4 × 3
  name                  x     y
  <chr>             <dbl> <dbl>
1 Glc6P                 1     0
2 6P-gluconolactone     2     0
3 6P-glucoconate        3     0
4 Ru5P                  4     0

绘图

ggraph(example1_network, layout = "manual", 
       x = x, y = y) +
  geom_node_text(aes(label = name), hjust = 0.5) +
  geom_edge_link(aes(label = example1_edge_table$label), 
                 angle_calc = 'along',
                 label_dodge = unit(2, 'lines'),
                 arrow = arrow(length = unit(0.5, 'lines')), 
                 start_cap = circle(4, 'lines'),
                 end_cap = circle(4, 'lines')) +
  theme_void()  

ggsave("../Results/Pentose_1.svg", height = 2, width = 6.5, bg = "white")
ggsave("../Results/Pentose_1.png", height = 2, width = 6.5, bg = "white")

Example 2: more complex pathway

  1. 导入所需数据
setwd("E:\\小杜的生信筆記\\2023\\20231022_ggpathway")
##'@input data 
example2_edges <- read_excel("Data/OPPP_edges.xlsx")
example2_nodes <- read_excel("Data/OPPP_nodes.xlsx")
head(example2_edges)

# A tibble: 6 × 3
  from              to                label              
  <chr>             <chr>             <chr>              
1 Glc6P             6P-gluconolactone Glc6PHD            
2 6P-gluconolactone 6P-glucoconate    6P-gluconolactonase
3 6P-glucoconate    Ru5P              6P-gluconateDH     
4 Ru5P              R5P               R5P isomerase      
5 Ru5P              Xu5P_1            R5P epimerase      
6 Xu5P_1            R5P               T
head(example2_nodes)

# A tibble: 6 × 5
  name                  x     y carbons label            
  <chr>             <dbl> <dbl>   <dbl> <chr>            
1 Glc6P               0       0       6 Glc6P            
2 6P-gluconolactone   0      -1       6 6P-gluconolactone
3 6P-glucoconate      0      -2       6 6P-glucoconate   
4 Ru5P                0      -3       5 Ru5P             
5 R5P                -0.5    -4       5 R5P              
6 Xu5P_1              0      -4       5 Xu5P             
  1. 计算 nodes
example2_nodes <- example2_nodes %>% 
  mutate(label = str_remove(name, "_\\d"))
head(example2_nodes)

# A tibble: 6 × 5
  name                  x     y carbons label            
  <chr>             <dbl> <dbl>   <dbl> <chr>            
1 Glc6P               0       0       6 Glc6P            
2 6P-gluconolactone   0      -1       6 6P-gluconolactone
3 6P-glucoconate      0      -2       6 6P-glucoconate   
4 Ru5P                0      -3       5 Ru5P             
5 R5P                -0.5    -4       5 R5P              
6 Xu5P_1              0      -4       5 Xu5P       
  example2_network <- graph_from_data_frame(
  d = example2_edges,
  vertices = example2_nodes,
  directed = T
)
  1. 绘图
ggraph(example2_network, layout = "kk") +
  geom_node_point(size = 3, aes(fill = as.factor(carbons)), 
                  alpha = 0.8, shape = 21, color = "grey20") +
  geom_node_text(aes(label = label), hjust = 0.5, repel = T) +
  geom_edge_link(#aes(label = example2_edges$label), 
    #angle_calc = 'along',
    label_dodge = unit(2, 'lines'),
    arrow = arrow(length = unit(0.4, 'lines')), 
    start_cap = circle(1, 'lines'),
    end_cap = circle(2, 'lines')) +
  scale_fill_manual(values = carto_pal(7, "Vivid")) +
  labs(fill = "Carbons") +
  theme_void()  

ggsave("Results/Pentose_2.svg", height = 5, width = 4, bg = "white")
ggsave("Results/Pentose_2.png", height = 5, width = 4, bg = "white")

Example 3: circular pathway

  1. 导入数据和数据转换
example3_edges <- read_excel("Data/TCA_cycle_edges.xlsx")
example3_nodes <- read_excel("Data/TCA_cycle_nodes.xlsx")

head(example3_edges)
head(example3_nodes)

example3_nodes <- example3_nodes %>% 
  mutate(label = str_remove(name, "_\\d"))


head(example3_nodes)

example3_network <- graph_from_data_frame(
  d = example3_edges,
  vertices = example3_nodes,
  directed = T
)

  1. 绘图
ggraph(example3_network, layout = "manual",
       x = x, y = y) +
  geom_node_point(size = 3, aes(fill = as.factor(carbons)), 
                  alpha = 0.8, shape = 21, color = "grey20") +
  geom_edge_link(arrow = arrow(length = unit(0.4, 'lines')), 
                 start_cap = circle(0.5, 'lines'),
                 end_cap = circle(0.5, 'lines'), 
                 width = 1.1, alpha = 0.5) +
  geom_node_text(aes(label = label), hjust = 0.5, repel = T) +
  annotate(geom = "text", label = "TCA Cycle", 
           x = 0, y = 0, size = 5, fontface = "bold") +
  scale_fill_manual(values = carto_pal(7, "Vivid")) +
  labs(fill = "Carbons") +
  theme_void() +
  coord_fixed()

Subsetting pathway

  1. 数据和计算转换
example3_nodes_trim <- example3_nodes %>% 
  filter(carbons != "cofactor")

example3_edges_trim <- example3_edges %>% 
  filter(from %in% example3_nodes_trim$name &
           to %in% example3_nodes_trim$name)

example3_network_trim <- graph_from_data_frame(
  d = example3_edges_trim,
  vertices = example3_nodes_trim,
  directed = T
)

绘图

ggraph(example3_network_trim, layout = "manual",
       x = x, y = y) +
  geom_node_point(size = 3, aes(fill = as.factor(carbons)), 
                  alpha = 0.8, shape = 21, color = "grey20") +
  geom_edge_link(arrow = arrow(length = unit(0.4, 'lines')), 
                 start_cap = circle(0.5, 'lines'),
                 end_cap = circle(1, 'lines'), 
                 width = 1.1, alpha = 0.5) +
  geom_node_text(aes(label = label), hjust = 0.5, repel = T) +
  annotate(geom = "text", label = "TCA Cycle", 
           x = 0, y = 0, size = 5, fontface = "bold") +
  scale_fill_manual(values = carto_pal(7, "Vivid")) +
  labs(fill = "Carbons") +
  theme_void() +
  coord_fixed()

ggsave("Results/TCA_2.svg", height = 4, width = 5, bg = "white")
ggsave("Results/TCA_2.png", height = 4, width = 5, bg = "white")

「往期文章:」

「1. 复现SCI文章系列专栏」

「2. 《生信知识库订阅须知》,同步更新,易于搜索与管理。」

「3. 最全WGCNA教程(替换数据即可出全部结果与图形)」

  • WGCNA分析 | 全流程分析代码 | 代码一

  • WGCNA分析 | 全流程分析代码 | 代码二

  • WGCNA分析 | 全流程代码分享 | 代码三

  • WGCNA分析 | 全流程分析代码 | 代码四


「4. 精美图形绘制教程」

  • 精美图形绘制教程

「5. 转录组分析教程」

「转录组上游分析教程[零基础]」

「小杜的生信筆記」 ,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

本文由 mdnice 多平台发布

更多推荐

KEGG通路图绘制

本文发布于:2023-12-05 02:53:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1662843.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:KEGG

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!