友汇网 做公司网站,厦门建设局地址,wordpress 缩略图清理,wordpress oilost v1.0ggkegg介绍
ggkegg 是一个用于生物信息学研究的工具#xff0c;可以用于分析和解释基因组学数据#xff0c;并将其与已知的KEGG数据库进行比较。ggkegg 是从 KEGG 获取信息并使用 ggplot2 和 ggraph 进行解析、分析和可视化的工具包#xff0c;结合其他使用 KEGG 进行生物功…ggkegg介绍
ggkegg 是一个用于生物信息学研究的工具可以用于分析和解释基因组学数据并将其与已知的KEGG数据库进行比较。ggkegg 是从 KEGG 获取信息并使用 ggplot2 和 ggraph 进行解析、分析和可视化的工具包结合其他使用 KEGG 进行生物功能研究的软件包。该工具旨在利用图形语法来可视化 KEGG 的复杂组件。对于 Python请使用 pykegg结合 plotnine它提供了几乎与 ggkegg 相同的功能可以与诸如 gseapy、PyDESeq2 以及单细胞转录组分析库 scanpy 等软件包一起使用进行类似的功能。
ggkegg 的基本使用方法 安装和加载 ggkegg 包首先您需要确保已在 R 环境中安装了 ggkegg 包。可以使用 install.packages(ggkegg) 命令安装该包。然后使用 library(ggkegg) 命令加载该包。 # devtools::install_github(noriakis/ggkegg)
library(ggkegg) 导入数据将您的基因组学数据导入 R 环境。ggkegg 支持各种不同的基因组学数据格式例如基因表达数据、基因注释文件等。 使用 ggkegg 函数 使用 ggkegg() 函数来创建 ggplot2 图表该函数需要传入两个参数 data: 导入的数据集例如基因表达矩阵或注释文件。 Sample1 Sample2 Sample3
Gene1 10 8 12
Gene2 5 7 9
Gene3 3 2 4 id: KEGG ID用于指定您要分析的特定通路或代谢网络。 可视化结果使用 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 文件。如果文件已经存在于当前工作目录中则不会重新下载。该函数还提取包含在通路中的反应作为边。如果存在由 typeline 表示的节点该函数将根据其坐标将这些节点转换为边。此转换是通过 process_line 函数执行的。
需要使用到的R软件包
library(ggkegg)
library(ggfx)
library(ggraph)
library(igraph)
library(clusterProfiler)
library(dplyr)
library(tidygraph)
igraph可视化样例1
g - ggkegg(pideco00270,convert_org c(pathway,eco),delete_zero_degree TRUE,return_igraph TRUE)
gg - ggraph(g, layoutstress)
gg$data$type | unique()
# [1] map compound gene
gg geom_edge_diagonal(aes(colorsubtype_name,filtertype!maplink))geom_node_point(aes(filter !type%in%c(map,compound)),fillgg$data[!gg$data$type%in%c(map,compound),]$bgcolor,colorblack,shape21, size4)geom_node_point(aes(filter !type%in%c(map,gene)),fillgg$data[!gg$data$type%in%c(map,gene),]$bgcolor,colorblack,shape21, size6)geom_node_text(aes(labelconverted_name,filtertypegene),repelTRUE,bg.colourwhite)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(compoundconvert_id(compound))g | ggraph(xx, yy) geom_node_point(size1, aes(colorI(fgcolor),filterfgcolor!none type!line))geom_edge_link(width0.1, aes(colorI(fgcolor),filtertypeline fgcolor!none))with_outer_glow(geom_edge_link(width1,aes(colorI(fgcolor),filterfgcolor!none M00021)),colourred, expand3)with_outer_glow(geom_node_point(size2,aes(colorI(fgcolor),filterfgcolor!none M00021)),colourred, expand3)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(xx, yy) geom_node_point(size1, aes(colorI(fgcolor),filterfgcolor!none type!line)) geom_edge_link0(width0.1, aes(colorI(fgcolor),filtertypeline fgcolor!none)) with_outer_glow(geom_edge_link0(width1,aes(colorI(fgcolor),filter(M00021 | M00338))),colourred, expand5) with_outer_glow(geom_node_point(size1.5,aes(colorI(fgcolor),filter(M00021 | M00338))),colourred, expand5) geom_node_text(size2,aes(xx, yy,labelgraphics_name,filternamepath:ko00270),repelTRUE, familysans, bg.colourwhite) theme_void()
基于ggraph样例 代码
g - pathway(hsa04110)
pseudo_lfc - sample(seq(0,3,0.1), length(V(g)), replaceTRUE)
names(pseudo_lfc) - V(g)$nameggkegg(hsa04110,convert_org c(pathway,hsa,ko),numeric_attribute pseudo_lfc)geom_edge_parallel2(aes(colorsubtype_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),filltransparent, colorred) geom_node_rect(aes(fillnumeric_attribute,filter.data$type gene)) geom_node_text(aes(labelconverted_name,filter.data$type gene),size2.5,colorblack) with_outer_glow(geom_node_text(aes(labelconverted_name,filterconverted_namePCNA),size2.5, colorred),colourwhite, expand4) scale_edge_color_manual(valuesviridis::plasma(11)) scale_fill_viridis(nameLFC) 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(value1node_numeric(test),value2node_numeric(test),value3node_numeric(test),value4node_numeric(test))
res - ggraph(g) geom_node_rect(aes(value1value1)) geom_node_rect(aes(value2value2, xminxminwidth/4))geom_node_rect(aes(value3value3, xminxmin2*width/4))geom_node_rect(aes(value4value4, xminxmin3*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(reactionlapply(.orig_data,function(x) paste0(unique(x[[reaction]]),collapse,))) |ggraph()geom_node_point()geom_edge_parallel(aes(labelreaction), 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(labelname), repelTRUE,bg.colourwhite, size4)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, byname) | 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, byname), 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(alpha0.2, aes(group.data[[i]],fill.data[[i]], xx, yy, filter!is.na(.data[[i]])))
}
net scale_fill_manual(valuesviridis::plasma(4), nameID)