生物信息学R分析工具包ggkegg的详细使用方法

ggkegg介绍

ggkegg 是一个用于生物信息学研究的工具,可以用于分析和解释基因组学数据,并将其与已知的KEGG数据库进行比较。ggkegg 是从 KEGG 获取信息并使用 ggplot2 和 ggraph 进行解析、分析和可视化的工具包,结合其他使用 KEGG 进行生物功能研究的软件包。该工具旨在利用图形语法来可视化 KEGG 的复杂组件。对于 Python,请使用 pykegg,结合 plotnine,它提供了几乎与 ggkegg 相同的功能,可以与诸如 gseapy、PyDESeq2 以及单细胞转录组分析库 scanpy 等软件包一起使用,进行类似的功能。

ggkegg 的基本使用方法:

  1. 安装和加载 ggkegg 包:首先,您需要确保已在 R 环境中安装了 ggkegg 包。可以使用 install.packages("ggkegg") 命令安装该包。然后,使用 library(ggkegg) 命令加载该包。

    # devtools::install_github("noriakis/ggkegg")
    library(ggkegg)
  2. 导入数据:将您的基因组学数据导入 R 环境。ggkegg 支持各种不同的基因组学数据格式,例如基因表达数据、基因注释文件等。

  3. 使用 ggkegg 函数: 使用 ggkegg() 函数来创建 ggplot2 图表,该函数需要传入两个参数:

    • data: 导入的数据集,例如基因表达矩阵或注释文件。
                Sample1  Sample2  Sample3
      Gene1     10       8        12
      Gene2     5        7        9
      Gene3     3        2        4
       
      
    • id: KEGG ID,用于指定您要分析的特定通路或代谢网络。
  4. 可视化结果:使用 ggplot2 函数对结果进行可视化。 ggkegg 返回一个具有不同图层的 ggplot2 图表,可以使用 ggplot2 提供的其他函数对其进行定制和修改。例如,您可以添加标题、修改颜色、添加标签等。

下面是一个简单示例,展示如何使用 ggkegg 创建一个基因表达通路图:

library(ggkegg)
library(ggplot2)

# 导入基因表达数据
data <- read.table("gene_expression.txt", header = TRUE)

# 使用 ggkegg 函数
kegg_plot <- ggkegg(data, id = "path:hsa05202")

# 可视化结果
kegg_plot + 
  labs(title = "Pathway Analysis", x = "Genes", y = "Expression") +
  scale_fill_manual(values = c("blue", "green", "red")) +
  theme_bw()

在这个示例中,我们首先加载 ggkegg 和 ggplot2 包。然后,我们导入一个基因表达矩阵,并使用 ggkegg() 函数创建一个基因表达通路图。最后,我们使用 ggplot2 函数进行进一步的定制和修改,例如添加标题、修改颜色和背景等。

 原网站介绍和使用:

Chapter 1 About | ggkegg (noriakis.github.io)

Pathway分析

提供 ggkegg 一个通路ID,它将获取信息,解析数据并生成 ggraph 对象。在其中,使用 parse_kgml 或 pathway 函数来返回 igraph 或 tbl_graph 对象。它可以用于 KEGG PATHWAY 数据库中列出的所有生物体中的通路。pathway 函数是一个核心函数,它下载并解析 KGML 文件。如果文件已经存在于当前工作目录中,则不会重新下载。该函数还提取包含在通路中的反应作为边。如果存在由 type=line 表示的节点,该函数将根据其坐标将这些节点转换为边。此转换是通过 process_line 函数执行的。

需要使用到的R软件包

library(ggkegg)
library(ggfx)
library(ggraph)
library(igraph)
library(clusterProfiler)
library(dplyr)
library(tidygraph)

igraph可视化样例1:

g <- ggkegg(pid="eco00270",
            convert_org = c("pathway","eco"),
            delete_zero_degree = TRUE,
            return_igraph = TRUE)
gg <- ggraph(g, layout="stress") 
gg$data$type |> unique()
#> [1] "map"      "compound" "gene"
gg + geom_edge_diagonal(
  aes(color=subtype_name,
      filter=type!="maplink"))+
  geom_node_point(
  aes(filter= !type%in%c("map","compound")),
    fill=gg$data[!gg$data$type%in%c("map","compound"),]$bgcolor,
    color="black",
    shape=21, size=4
  )+
  geom_node_point(
    aes(filter= !type%in%c("map","gene")),
    fill=gg$data[!gg$data$type%in%c("map","gene"),]$bgcolor,
    color="black",
    shape=21, size=6
  )+
  geom_node_text(
    aes(label=converted_name,
        filter=type=="gene"),
    repel=TRUE,
    bg.colour="white")+
  theme_void()

这个例子首先获取 eco00270 的信息并解析它,将通路和 eco 标识符转换,删除零度节点,并返回 igraph 对象。

KGML 中描述的 x 坐标、y 坐标、宽度和高度分别列为 x、y、width 和 height。基于这些信息,计算并将 xmin、xmax、ymin 和 ymax 存储在节点表中。

突出显示样例1

以突出显示代谢通路(ko01100)的示例,使用 M00021 的定义。highlight_module 函数接受 kegg_module 类对象,并返回哪些边涉及模块内的反应,以及哪些节点是参与反应的化合物的布尔值。请注意,这不会产生与 KEGG mapper 完全相同的输出。这会向 tbl_graph 添加新列,对于满足相应条件的节点和边,将其标记为 TRUE。

g <- pathway("ko01100") |> 
  process_line() |>
  highlight_module(module("M00021")) |>
  mutate(compound=convert_id("compound"))

g |> ggraph(x=x, y=y) +
  geom_node_point(size=1, aes(color=I(fgcolor),
    filter=fgcolor!="none" & type!="line"))+
  geom_edge_link(width=0.1, aes(color=I(fgcolor),
                                filter=type=="line"& fgcolor!="none"))+
  with_outer_glow(
    geom_edge_link(width=1,
                   aes(color=I(fgcolor),
                       filter=fgcolor!="none" & M00021)),
    colour="red", expand=3
  )+
  with_outer_glow(
    geom_node_point(size=2,
                   aes(color=I(fgcolor),
                       filter=fgcolor!="none" & M00021)),
    colour="red", expand=3
  )+
  theme_void()

可视化突出显示样例2

 代码:

library(ggkegg)
library(ggfx)
library(igraph)
library(tidygraph)
library(dplyr)

pathway("ko01100") |>
    process_line() |>
    highlight_module(module("M00021")) |>
    highlight_module(module("M00338")) |>
    ggraph(x=x, y=y) +
        geom_node_point(size=1, aes(color=I(fgcolor),
            filter=fgcolor!="none" & type!="line")) +
        geom_edge_link0(width=0.1, aes(color=I(fgcolor),
            filter=type=="line"& fgcolor!="none")) +
        with_outer_glow(
            geom_edge_link0(width=1,
                aes(color=I(fgcolor),
                    filter=(M00021 | M00338))),
            colour="red", expand=5
        ) +
        with_outer_glow(
            geom_node_point(size=1.5,
                aes(color=I(fgcolor),
                    filter=(M00021 | M00338))),
            colour="red", expand=5
        ) +
        geom_node_text(size=2,
            aes(x=x, y=y,
                label=graphics_name,
                filter=name=="path:ko00270"),
            repel=TRUE, family="sans", bg.colour="white") +
        theme_void()

基于ggraph样例:

代码:

g <- pathway("hsa04110")
pseudo_lfc <- sample(seq(0,3,0.1), length(V(g)), replace=TRUE)
names(pseudo_lfc) <- V(g)$name

ggkegg("hsa04110",
    convert_org = c("pathway","hsa","ko"),
    numeric_attribute = pseudo_lfc)+
    geom_edge_parallel2(
        aes(color=subtype_name),
        arrow = arrow(length = unit(1, 'mm')), 
        start_cap = square(1, 'cm'),
        end_cap = square(1.5, 'cm')) + 
    geom_node_rect(aes(filter=.data$type == "group"),
        fill="transparent", color="red") +
    geom_node_rect(aes(fill=numeric_attribute,
        filter=.data$type == "gene")) +
    geom_node_text(aes(label=converted_name,
        filter=.data$type == "gene"),
        size=2.5,
        color="black") +
    with_outer_glow(
        geom_node_text(aes(label=converted_name,
            filter=converted_name=="PCNA"),
            size=2.5, color="red"),
        colour="white", expand=4
    ) +
    scale_edge_color_manual(values=viridis::plasma(11)) +
    scale_fill_viridis(name="LFC") +
    theme_void()

在突出显示通路中多个数值时使用多个尺度样例:

使用 ggh4x,你可以使用 scale_fill_multi() 将多个值绘制在各自的比例尺上。在 stana 包的 plotKEGGPathway 中使用此功能进行物种内多样性分析。有关函数用法,请参考 ggh4x 网站和相关代码。

library(ggh4x)
test <- geneList[1:100]
names(test) <- paste0("hsa:",names(test))
g <- pathway("hsa04110") |> 
  mutate(value1=node_numeric(test),
         value2=node_numeric(test),
         value3=node_numeric(test),
         value4=node_numeric(test))
res <- ggraph(g) + 
  geom_node_rect(aes(value1=value1)) + 
  geom_node_rect(aes(value2=value2, xmin=xmin+width/4))+
  geom_node_rect(aes(value3=value3, xmin=xmin+2*width/4))+
  geom_node_rect(aes(value4=value4, xmin=xmin+3*width/4))+
  overlay_raw_map() + theme_void() +
  scale_fill_multi(aesthetics = c("value1", "value2",
                                  "value3", "value4"),
                   name = list("Condition1",
                               "Condition2",
                               "Condition3",
                               "Condition4"),
                   colours = list(
                     scales::brewer_pal(palette = "YlGnBu")(6),
                     scales::brewer_pal(palette = "RdPu")(6),
                     scales::brewer_pal(palette = "PuOr")(6),
                     scales::brewer_pal(palette = "RdBu")(6)
                   ),
                   guide = guide_colorbar(barheight = unit(50, "pt")))
res

出图:

Module

模块信息可以获取并解析。支持对 DEFINITION 和 REACTION 的解析。对于定义,首先函数将定义分解为块,并使用 ggraph 和 tbl_graph 或使用 geom_text 和 geom_rect 进行文本本身的图形表示。通过调用 module 函数,创建 kegg_module 类对象。

使用到的包

library(ggkegg)
library(tidygraph)
library(dplyr)
mod <- module("M00004")
mod
#> M00004
#> Pentose phosphate pathway (Pentose phosphate cycle)

module函数创建一个 kegg_module 类的对象,该对象在其内部槽中存储了反应和定义的解析信息。通过将这个 kegg_module 对象提供给各种函数,可以执行与模块相关的各种操作。

可视化模块中的反应。请报告无法以正确方式解析的任何反应。

library(igraph)
mod <- module("M00004")
## Obtain reaction graph
reacg <- attr(mod, "reaction_graph") # or, get_module_attribute()
## Some edges are duplicate and have different reactions,
## so simplify
reacg |>
    convert(to_simple) |>
    activate(edges) |> 
    mutate(reaction=lapply(.orig_data,
        function(x) 
            paste0(unique(x[["reaction"]]),
                collapse=","))) |>
    ggraph()+
        geom_node_point()+
        geom_edge_parallel(
            aes(label=reaction), angle_calc = "along",
            label_dodge = unit(5,"mm"),
            label_colour = "tomato",
            arrow = arrow(length = unit(1, 'mm')),
            end_cap = circle(5, 'mm'),
            start_cap = circle(5, "mm"))+
        geom_node_text(aes(label=name), repel=TRUE,
            bg.colour="white", size=4)+
        theme_void()

出图

Network

解析 KEGG NETWORK 并以相同的方式绘制成网络。在这种情况下,使用 network 函数。

library(ggkegg)
library(tidygraph)
library(dplyr)
kne <- network("N00002")
kne
#> N00002
#> BCR-ABL fusion kinase to RAS-ERK signaling pathway

Combining multiple networks
合并多个网络

以下是获取多个网络、使用 graph_join 合并它们,并使用 plot_kegg_network 包装函数绘制它们的示例。network_graph 函数是一个根据字符串生成图形的函数。可以指定 definition 或 expanded 作为类型来生成图形。

kne <- network("N00385")  ## HCMV
kne2 <- network("N00366") ## HPV
one <- kne |> network_graph()
two <- kne2 |> network_graph()
two
#> # A tbl_graph: 6 nodes and 5 edges
#> #
#> # A rooted tree
#> #
#> # A tibble: 6 × 3
#>   name     network_name                          network_ID
#>   <chr>    <chr>                                 <chr>     
#> 1 E5       HPV E5 to EGFR-PI3K signaling pathway N00366    
#> 2 V-ATPase HPV E5 to EGFR-PI3K signaling pathway N00366    
#> 3 EGFR     HPV E5 to EGFR-PI3K signaling pathway N00366    
#> 4 PI3K     HPV E5 to EGFR-PI3K signaling pathway N00366    
#> 5 PIP3     HPV E5 to EGFR-PI3K signaling pathway N00366    
#> 6 AKT      HPV E5 to EGFR-PI3K signaling pathway N00366    
#> #
#> # A tibble: 5 × 4
#>    from    to type  subtype  
#>   <int> <int> <chr> <chr>    
#> 1     1     2 -|    reference
#> 2     2     3 -|    reference
#> 3     3     4 ->    reference
#> # ℹ 2 more rows
graph_join(one, two, by="name") |> plot_kegg_network()

通过使用 ggforce,可以绘制多个图表,显示哪些基因属于哪个网络。

kne3 <- network("N00485") ## EBV
kne4 <- network("N00030") ## EGF-EGFR-RAS-PI3K
three <- kne3 |> network_graph()
four <- kne4 |> network_graph()

gg <- Reduce(function(x,y) graph_join(x,y, by="name"), list(one, two, three, four))
coln <- gg |> activate(nodes) |> data.frame() |> colnames() 
nids <- coln[grepl("network_ID",coln)]

net <- plot_kegg_network(gg)
for (i in nids) {
  net <- net + ggforce::geom_mark_hull(alpha=0.2, aes(group=.data[[i]],
    fill=.data[[i]], x=x, y=y, filter=!is.na(.data[[i]])))
}
net + scale_fill_manual(values=viridis::plasma(4), name="ID")

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HAproxy做七层代理+keepalived高可用,实现动静分离,由nginx处理静态页面,tomcat处理动态页面

目录 一、三种软负载均衡器的区别 关于三种负载均衡器的性能对比&#xff1a; 关于三种负载均衡器的代理类型对比&#xff1a; 关于三种负载均衡器的健康检查对比&#xff1a; 二、haproxy的8中负载均衡调度算法 haproxy的会话保持的方式 haproxy的配置文件学习 三、实操…

Python中导入Excel数据:全面解析与实践

目录 一、引言 二、选择合适的库 三、读取Excel文件 四、处理数据 五、错误处理和异常处理 1、使用try-except语句捕获和处理异常&#xff1a; 2、使用try-except语句捕获和处理特定异常类型&#xff1a; 六、性能优化 七、数据验证 1、检查缺失值&#xff1a; 2、检…

如何解决idea创建版本时只有Java21和Java17选项

idea如果版本高了就会出现在创建Springboot项目时只有Java21和Java17选项 选择jdk1.8的时候很可能出现下图报错&#xff0c;这是因为版本jdk1.8与Java17不兼容 解决办法一般有三种&#xff0c;这里列举两种 1、替换下载数据源 可以将https://start.spring.io/ 替换成 https:…

科普-电子合同签署,这三步不能忽视

关于电子合同&#xff0c;许多人认为我自己直接内部发送邮件/传真等发送电子版合同或者我自己创建一个电子合同平台&#xff0c;这种怎么不属于电子合同呢&#xff1f; 在这里给大家科普一个知识点&#xff1a;签电子合同&#xff0c;需要经过这“三个步骤”。 根据《电子签名…

31. 深度学习进阶 - 全连接层及网络结构

Hi&#xff0c;你好。我是茶桁。 之前的课程咱们学习了卷积以及池化&#xff0c;那到底卷积是如何构成卷积神经网络的呢&#xff1f;我们这节课来好好讲一下。 全连接层 整个卷积的运算就是经过卷积&#xff0c;再经过pooling&#xff0c;再经过卷积。会把这个图形变的很小。…

案例系列:营销模型_客户细分_无监督聚类

案例系列&#xff1a;营销模型_客户细分_无监督聚类 import numpy as np # 线性代数库 import pandas as pd # 数据处理库&#xff0c;CSV文件的输入输出&#xff08;例如pd.read_csv&#xff09;/kaggle/input/customer-personality-analysis/marketing_campaign.csv在这个项…

新型智慧视频监控系统:基于TSINGSEE青犀边缘计算AI视频识别技术的应用

边缘计算AI智能识别技术在视频监控领域的应用有很多。这项技术结合了边缘计算和人工智能技术&#xff0c;通过在摄像头或网关设备上运行AI算法&#xff0c;可以在现场实时处理和分析视频数据&#xff0c;从而实现智能识别和分析。目前来说&#xff0c;边缘计算AI视频智能技术可…

Rocky Linux 9.3 安装 Jenkins 2.426.2 (超级详细版本)

安装步骤 官网的安装文档 导入秘钥 sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.jenkins.io/redhat-stable/jenkins.repo sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key 更新yum源 sudo yum upgrade 安装JDK&#xff08;已…

回顾 2023 这一年的进展,哪些 AI 公司让你觉得未来可期?

文章目录 前言行业趋势1、Open AI 成立于 2015 年2、Tome 成立于 2020 年3、Synthesia 成立于 2017 年4、Uizard 成立于 2018 年5、Soundful 成立于 2019 年6、GoodVision 成立于 2017 年7、Writesonic 成立于 2021 年8、Atomic AI 成立于 2020 年9、Eightfold 成立于 2016 年1…

java SSM健身跑步爱好者社区系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM健身跑步爱好者社区系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整 的源代码和数据库&#xff0c;系统…

Redis-学习笔记

Remote Dictionary Server(Redis) 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库&#xff0c;并提供多种语言的 API&#xff0c;是跨平台的非关系型数据库。 Redis 通常被称为数据结构服务器&…

小程序时代,如何从零开始打造家居展示咨询平台

随着移动互联网的快速发展&#xff0c;小程序成为了各行各业推广和展示产品的新利器。对于家居展示咨询平台来说&#xff0c;打造一款精美实用的小程序不仅可以提升用户体验&#xff0c;还能够有效提高品牌形象和市场竞争力。下面就来介绍一下从零开始打造家居展示咨询平台的步…

字节跳动 Spark Shuffle 大规模云原生化演进实践

Spark 是字节跳动内部使用广泛的计算引擎&#xff0c;已广泛应用于各种大规模数据处理、机器学习和大数据场景。目前中国区域内每天的任务数已经超过 150 万&#xff0c;每天的 Shuffle 读写数据量超过 500 PB。同时某些单个任务的 Shuffle 数据能够达到数百 TB 级别。 与此同…

认识YAML和Propertis

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 循序渐进学SpringBoot ✨特色专栏&…

AcWing算法提高课-4.1.1格子游戏

算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 Alice 和 Bob 玩了一个古老的游戏&#xff1a;首先画一个 n n n \times n nn 的点阵&#xff08;下图 n 3 n 3 n3 &#xff09;。 接着&#xff0c;他们两个轮流在相邻的点之间画上红边和蓝…

HTML输出特殊字符详细方法

以下是部分特殊字符代码表&#xff0c;它们的完整应用代码格式为&#xff1a;&#;用下面的四位数字替换&#xff0c;将得到对应的符号。&#xff08;注意&#xff1a;应用这些代码&#xff0c;编辑器应该切换到HTML模式&#xff09; ☏260f ☎260e ☺263a ☻263b ☼263c ☽…

css图片属性,图片自适应

CSS 图片属性指南&#xff1a;background-size 和 object-fit 在前端开发中&#xff0c;使用图片是非常常见的。为了让图片在网页中显示得更好&#xff0c;CSS 提供了多种属性来调整和控制图片的大小和布局。其中&#xff0c;background-size 和 object-fit 是两个常用的属性&a…

常见损失函数(Loss Function)

在线性回归中&#xff0c;损失函数&#xff08;Loss Function&#xff09;用于衡量模型的预测值与实际值之间的差异&#xff0c;是优化算法的目标。常见的线性回归损失函数包括&#xff1a; 均方误差&#xff08;Mean Squared Error&#xff0c;MSE&#xff09; 其中&#xff…

Apache+PHP环境配置 手动配置

准备工作&#xff0c;在G盘新建一个WAMP目录 1.获取Apache 打开下载地址Apache VS17 binaries and modules download&#xff0c;下载 httpd-2.4.58-win64-VS17.zip 将下载好的httpd-2.4.58-win64-VS17.zip拷贝到G:\WAMP目录下并解压到当前目录&#xff0c;得到Apache24目录 …

如何使用支付宝的沙箱环境在本地配置模拟支付并发布至公网测试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候&#xff0c;往往沙箱环境部署在本地&#xff0c;局限性大&#xff0c;在沙箱环境…