生物信息学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)$nameggkegg("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")

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据流图_DFD图_精简易上手

数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输人移动到输出的过程中所经受的变换。 首先给出一个数据流图样例 基本的四种图形 直角矩形:代表源点或终点,一般来说,是人,如例图的仓库管理员和采购员圆形(也可以画成圆角矩形):是处理,一般来说,是动作,是动词名词的形式…

PromptNER: Prompt Locating and Typing for Named Entity Recognition

原文链接&#xff1a; https://aclanthology.org/2023.acl-long.698.pdf ACL 2023 介绍 问题 目前将prompt方法应用在ner中主要有两种方法&#xff1a;对枚举的span类型进行预测&#xff0c;或者通过构建特殊的prompt来对实体进行定位。但作者认为这些方法存在以下问题&#xf…

mySQL数据库用户管理

目录 1.创建外键约束 外键的定义 主键表和外键表的理解 具体操作 2.数据库用户管理 新建用户 查看用户信息 重命名用户 删除用户 修改当前和其他用户登录密码 忘记 root密码的解决办法 3.数据库用户授权 授予权限 查看权限 撤销权限 1.创建外键约束 外键的定义…

【视觉实践】使用Mediapipe进行目标检测:杯子检测和椅子检测实践

目录 1 Mediapipe 2 Solutions 3 安装mediapipe 4 实践 1 Mediapipe Mediapipe是google的一个开源项目,可以提供开源的、跨平台的常用机器学习(machine learning,ML)方案。MediaPipe是一个用于构建机器学习管道</

计算机毕业设计 基于SpringBoot的房屋租赁管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

.Net 访问电子邮箱-LumiSoft.Net,好用

序言&#xff1a; 网上找了很多关于.Net如何访问电子邮箱的方法&#xff0c;但是大多数都达不到想要的需求&#xff0c;只有一些 收发邮件。因此 花了很大功夫去看 LumiSoft.Net.dll 的源码&#xff0c;总算做出自己想要的结果了&#xff0c;果然学习诗人进步。 介绍&#xff…

C语言中的关键字

Static 静态局部变量 结果&#xff1a; a作为静态局部变量&#xff0c;第一次进入该函数的时候&#xff0c;进行第一次变量的初始化&#xff0c;在程序整个运行期间都不释放。&#xff08;因为下一次调用还继续使用上次调用结束的数值&#xff09; 但是其作用域为局部作用域&…

大语言模型的三种主要架构 Decoder-Only、Encoder-Only、Encoder-Decoder

现代大型语言模型&#xff08;LLM&#xff09;的演变进化树&#xff0c;如下图&#xff1a; https://arxiv.org/pdf/2304.13712.pdf 基于 Transformer 模型以非灰色显示&#xff1a; decoder-only 模型在蓝色分支&#xff0c; encoder-only 模型在粉色分支&#xff0c; encod…

数据权限篇

文章目录 1. 如何实现数据权限&#xff08;内核&#xff09;1.1 原理1.2 源码实现&#xff0c;mybatis如何重写sql1.2.1 重写sql1.2.2 解析sql1.2.3 DataPermissionDatabaseInterceptor 1. 如何实现数据权限&#xff08;内核&#xff09; 1.1 原理 面对复杂多变的需求&#xf…

Spring security之授权

前言 本篇为大家带来Spring security的授权&#xff0c;首先要理解一些概念&#xff0c;有关于&#xff1a;权限、角色、安全上下文、访问控制表达式、方法级安全性、访问决策管理器 一.授权的基本介绍 Spring Security 中的授权分为两种类型&#xff1a; 基于角色的授权&…

一篇文章带你搞定CTFMice基本操作

CTF比赛是在最短时间内拿到最多的flag&#xff0c;mice必须要有人做&#xff0c;或者一支战队必须留出一块时间专门写一些mice&#xff0c;web&#xff0c;pwn最后的一两道基本都会有难度&#xff0c;这时候就看mice的解题速度了&#xff01; 说实话&#xff0c;这是很大一块&…

MATLAB画球和圆柱

1. 画球 修改了一下MATLAB的得到球的坐标的函数&#xff1a; GetSpherePoint function [xx,yy,zz] GetSpherePoint(xCenter,yCenter,zCenter,r,N) % 在[xCenter,yCenter,zCenter]为球心画一个半径为r的球,N表示球有N*N个面&#xff0c;N越大球的面越密集 if nargin < 4 …

【NR技术】 Inter-gNB-DU 条件切换或条件Pcell变更

1 引言 本文介绍Inter-gNB-DU 条件切换或条件Pcell更改过程。 2 Inter-gNB-DU 条件切换或条件pcell更改 此过程用于在NR操作期间&#xff0c;UE从一个gNB-DU移动到同一gNB-CU内的另一个gNB-DU&#xff0c;以进行有条件的切换或有条件的Pcell更改。图1显示了内部NR的gNB-DU间…

Android studio Android SDK下载安装

我们访问地址 https://developer.android.google.cn/studio?hlzh-cn 拉下来直接点击下载 然后来下来 勾选 然后点击下载 下载好之后 我们双击打开 点击下一步 确认上面的勾选 然后下一步 这里 我们选择一下安装目录 然后点击下一步 安装 安装完之后点击进行下一步 Fin…

ImageBind-LLM: Multi-modality Instruction Tuning 论文阅读笔记

ImageBind-LLM: Multi-modality Instruction Tuning 论文阅读笔记 Method 方法Bind NetworkRMSNorm的原理及与Layer Norm的对比 Related Word / Prior WorkLLaMA-Adapter 联系我们 本文主要基于LLaMA和ImageBind工作&#xff0c;结合多模态信息和文本指令来实现一系列任务。训练…

yarn : 无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。‘yarn‘ 不是内部或外部命令,也不是可运行的程序.解决方案

文章目录 报错截图介绍方法一方法二评论截图 报错截图 介绍 我的npm已经安装好了, 是可以运行npm -v 来查看版本的 这个时候报 yarn 不是内部或外部命令 相信你的npm也已经安装好了 我下面两个方法都进行了, 具体起作用的我也不知道是哪个, 都试试吧, 我成功了 注意尝试后关…

论文阅读——BLIP-2

BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models 1 模型 在预训练视觉模型和预训练大语言模型中间架起了一座桥梁。两阶段训练&#xff0c;视觉文本表示和视觉到语言生成学习。 Q-Former由两个转换器子模块组成&am…

Mybatis-TypeHandler类型转换器

文章目录 TypeHandler 接口TypeHandler 注册TypeHandler 查询别名管理总结 TypeHandler 接口 TypeHandler 这个接口 就是Mybatis的类型转换器 /*** author Clinton Begin*/ public interface TypeHandler<T> {// 在通过PreparedStatement为SQL语句绑定参数时&#xff0…

stm32项目(14)——基于stm32f103zet6的循迹避障小车

1.功能设计 stm32循迹避障小车&#xff0c;使用超声波测距&#xff0c;使用红外循迹模块追踪黑线&#xff0c;实现循迹功能。此外&#xff0c;还可以检测烟雾、火焰、人体、温湿度。温湿度显示在LCD屏幕上。检测到有人、有火焰、有烟雾时&#xff0c;蜂鸣器报警&#xff01; 功…

强化学习(五)-Deterministic Policy Gradient (DPG) 算法及公式推导

针对连续动作空间&#xff0c;策略函数没法预测出每个动作选择的概率。因此使用确定性策略梯度方法。 0 概览 1 actor输出确定动作2 模型目标&#xff1a; actor目标&#xff1a;使critic值最大 critic目标&#xff1a; 使TD error最大3 改进&#xff1a; 使用两个target 网络…