MetaPathNet: network analysis of the choline-TMA-TMAO host-microbiome axis

Introduction

MetaPathNet is an R package for pathway querying, network construction, and network analysis based on the Kyoto Encyclopedia of Genes and Genomes (KEGG) (Ogata et al. 1999), with a focus on host–microbiome interactions inferred from metagenomic and metabolomic data.

Several R and Bioconductor tools already support KEGG-based analysis. For example, KEGGgraph parses KEGG pathway files into graph-compatible objects (Zhang and Wiemann 2009), pathview maps omics data onto KEGG pathway diagrams (Luo and Brouwer 2013), and ggkegg supports pathway visualisation and customisation (Sato et al. 2023). Together, these tools extend the practical use of KEGG, yet the cross-species structure of the database remains largely unexploited for connecting microbial and host functions within a unified workflow that combines network construction, visualisation, and analysis.

MetaPathNet addresses this gap by integrating cross-species network construction, external and user-defined reaction extension, topology-driven analysis, origin annotation, pathway over-representation analysis, and R/Cytoscape visualisation within a single case-adaptable framework.

In this vignette, KEGG and complementary database resources are used through MetaPathNet to reconstruct a host–microbiome metabolic network centered on the choline–TMA–TMAO metabolic axis (Wang et al. 2011), and to perform topology and enrichment analyses to interpret this metabolic module.

Installation

Once available from Bioconductor, MetaPathNet can be installed as follows:

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("MetaPathNet")
library(MetaPathNet)
library(ggplot2)

Workflow

Overview

This vignette addresses the following related questions in the context of the choline–TMA–TMAO axis:

  1. How can metabolites, functional groups of genes (KEGG Orthology, KO), and organisms related to this metabolic module be integrated into a host–microbiome metabolic network?
  2. How can topology analysis be used to highlight connections and components related to the choline axis?
  3. Which metabolic pathways are most strongly represented in the resulting choline–TMA–TMAO subnetwork?

The workflow therefore proceeds through identifier mapping, cross-species network construction, shortest-path analysis, origin annotation, permutation testing, and pathway over-representation analysis.

Identifier mapping

The package requires KEGG identifiers as common reference IDs for metabolites, genes, enzymes, and organisms to support network construction and analysis. To facilitate the process of network construction, the MetaPathNet package includes the MPN_keggFinder() function for retrieving KEGG identifiers from metabolite names, gene symbols, and from species taxonomy IDs (i.e., NCBI).

In this choline-related case study, the selected metabolites cover the main trimethylated nutrient and methylamine axis, including choline, carnitine, betaine, gamma-butyrobetaine, trimethylamine (TMA), and trimethylamine N-oxide (TMAO). The package supports flexible metabolite mapping through synonym matching and case-insensitive search.

## Selected compound names and synonyms
compound_names <- c("choline", "carnitine", "betaine", 
                    "gamma-butyrobetaine", "trimethylamine", "tmao")

## Map compounds to KEGG compound IDs
compound_kegg <- MetaPathNet::MPN_keggFinder(
  KEGG_database = "compound",
  searchBy      = "name",
  query         = compound_names
)

## View mapped compound IDs
compound_kegg
##                 Input KEGG_ID
## 1             choline  C00114
## 2           carnitine  C00487
## 3             betaine  C00719
## 4 gamma-butyrobetaine  C01181
## 5      trimethylamine  C00565
## 6                tmao  C01104

MPN_suggestEntities() supports semi-automated candidate selection in a case study workflow. Starting from the selected metabolites, it retrieves associated genes (KOs) through linked reaction information, providing a candidate KO list to guide the selection of genes of interest.

## Define the mapped metabolite KEGG IDs
compound_tma <- compound_kegg$KEGG_ID

## Suggest candidate KOs from the selected metabolites
ko_candidates <- MPN_suggestEntities(
  query  = compound_tma,
  entity = "compound"
)

## View suggested KO candidates
head(ko_candidates)
##   compound_id compound_name  KO_ID
## 1  cpd:C00114       Choline K00866
## 2  cpd:C00114       Choline K14156
## 3  cpd:C00114       Choline K25657
## 4  cpd:C00114       Choline K17755
## 5  cpd:C00114       Choline K00623
## 6  cpd:C00114       Choline K00108
##                                              KO_name
## 1                       choline kinase [EC:2.7.1.32]
## 2 choline/ethanolamine kinase [EC:2.7.1.32 2.7.1.82]
## 3                       choline kinase [EC:2.7.1.32]
## 4                      choline oxidase [EC:1.1.3.17]
## 5           choline O-acetyltransferase [EC:2.3.1.6]
## 6                choline dehydrogenase [EC:1.1.99.1]

The selected genes represent key biological functions involved in the choline-TMA-TMAO axis, including trimethylamine monooxygenase (tmm / K18277), trimethylamine N-oxide reductase (torA / K07811), host choline oxidation via choline dehydrogenase (CHDH / K00108), and choline kinase (CHK / K14156).

However, choline trimethylamine-lyase (cutC / K20038) and host flavin-containing monooxygenases (FMO / K00485) were not recovered from the compound-based suggestion step, although they remain important for this case study. MPN_suggestEntities() should therefore be used as a guidance tool, while literature knowledge remains helpful for broader biological selection.

The same function can also retrieve candidate organisms from a KO list. It reports prokaryotic organisms carrying the selected functions, counts how many query KOs are represented in each organism, and ranks them as a reference list for organism selection.

## Define KO candidates of interest
gene_tma <- c("K18277", "K07811", "K00108", "K14156", "K00485", "K20038")

## Suggest candidate organisms from the selected KOs
organism_candidates <- MPN_suggestEntities(
  query  = gene_tma,
  entity = "ko"
)

## View suggested organism candidates
head(organism_candidates)
##                      organism_name organism_code overlap_count
## 1 Escherichia coli O18:K1:H7 UTI89           eci             3
## 2  Escherichia coli O6:K15:H31 536           ecp             3
## 3     Escherichia coli O7:K1 IAI39           ect             3
## 4           Escherichia coli UM146           elu             3
## 5      Escherichia coli O7:K1 CE10           eoc             3
## 6                     Homo sapiens           hsa             3
##           overlap_hits
## 1 K07811;K00108;K20038
## 2 K07811;K00108;K20038
## 3 K07811;K00108;K20038
## 4 K07811;K00108;K20038
## 5 K07811;K00108;K20038
## 6 K00108;K14156;K00485

Escherichia coli O18:K1:H7 UTI89 (KEGG organism code: eci) was selected as a representative gut-associated bacterial strain for this case study.

Network construction

An edge list representing the cross-species metabolic network was constructed from the metabolic pathway information of Homo sapiens (hsa) and Escherichia coli O18:K1:H7 UTI89 (eci), to represent a simplified host-microbiome metabolic context of the human gut in this case study.

## Construct the host-microbiome metabolic network
network_hostMicrobe <- MPN_crossSpeciesNetwork(
  organism_codes = c("hsa", "eci"),
  path_type      = "metabolic"
)
## Preview the integrated network edge list
head(network_hostMicrobe)       
##   source       target       interaction_type       
## 1 "cpd:C00084" "K00128"     "k_compound:reversible"
## 2 "cpd:C00084" "K00129"     "k_compound:reversible"
## 3 "cpd:C00084" "K00149"     "k_compound:reversible"
## 4 "cpd:C00084" "K14085"     "k_compound:reversible"
## 5 "K00128"     "cpd:C00033" "k_compound:reversible"
## 6 "K00129"     "cpd:C00033" "k_compound:reversible"

The network can be visualised in Cytoscape (version 3.9.0 or higher; ensure it is running before execution). Genes and compounds are automatically categorised and colour-coded.

## Visualise the integrated network in Cytoscape
MPN_viewNetworkCy(
  network_table     = network_hostMicrobe,
  category          = TRUE,
  style_interaction = TRUE,
  node_compound     = "#9DC7DD",
  node_gene         = "#9ED17B",
  network_title     = "Integrated host–microbiome network",
  collection_title  = "MetaPathNet_Examples"
)

Integrated host-microbe network

Figure 1. Integrated host–microbiome metabolic network.

Figure 1. Integrated host–microbiome metabolic network.

The integrated network is larger than the selected input list because it also includes intermediate biological entities needed to connect nodes and preserve pathway context.

Because of this larger network size, it is not always straightforward to verify the presence of the selected metabolites and genes by visual inspection alone. Their presence was therefore checked explicitly using MPN_findMappedNodes().

## Check mapped compounds in the integrated network
compound_mapped <- MetaPathNet::MPN_findMappedNodes(
  nodes         = compound_tma,
  network_table = network_hostMicrobe
)

## Check mapped KOs in the integrated network
gene_mapped <- MetaPathNet::MPN_findMappedNodes(
  nodes         = gene_tma,
  network_table = network_hostMicrobe
)

In the output, mapped_nodes indicates nodes present in the network, whereas unmapped_nodes indicates nodes not found in the network at this stage.

## View mapped and unmapped nodes
compound_mapped
## $mapped_nodes
## [1] "cpd:C00114" "cpd:C00487" "cpd:C00719" "cpd:C01181" "cpd:C00565"
## [6] "cpd:C01104"
## 
## $unmapped_nodes
## character(0)
gene_mapped
## $mapped_nodes
## [1] "K07811" "K00108" "K14156" "K00485"
## 
## $unmapped_nodes
## [1] "K18277" "K20038"

Network extension

Some selected genes were not recovered in the initial network because relevant interactions are not captured in the selected organism set or are not explicitly recorded in KEGG.

FMO3 is a human enzyme involved in the oxidation of TMA to TMAO and is represented in KEGG by the orthologous group FMO (K00485). However, this function is not explicitly linked in KEGG for this case study. To preserve this biologically relevant step, MPN_customReaction() was used to add a manually curated reaction in edge-list format.

## Define a custom FMO-associated TMA-to-TMAO reaction
fmo_reaction <- data.frame(
  reaction_id = "TMA_to_TMAO_FMO",
  substrates  = "cpd:C00565",
  products    = "cpd:C01104",
  ko          = "K00485",
  direction   = "irreversible",
  stringsAsFactors = FALSE
)

## Convert to edge-list format
fmo_extension <- MetaPathNet::MPN_customReaction(
  reaction_table = fmo_reaction,
  substrate_col  = "substrates",
  product_col    = "products",
  ko_col         = "ko",
  direction_col  = "direction"
)

MPN_mapReaction() can map external reaction identifiers from commonly used databases such as MetaCyc (Caspi et al. 2018), Rhea (Bansal et al. 2022) into MetaPathNet-style edges, using KEGG identifiers as a common reference ID where available.

MetaCyc reactions, RXN-12900 and RXN-13946, were added as complementary information for the choline-TMA-TMAO axis.

## Map MetaCyc reactions to edge-list format
tma_extension <- MPN_mapReaction(
  reaction_ids = c("RXN-12900", "RXN-13946"),
  source       = "metacyc"
)

## Preview the mapped reaction edges
head(tma_extension)
##      source       target       interaction_type       
## [1,] "cpd:C00565" "K18277"     "k_compound:reversible"
## [2,] "K18277"     "cpd:C00565" "k_compound:reversible"
## [3,] "cpd:C00005" "K18277"     "k_compound:reversible"
## [4,] "K18277"     "cpd:C00005" "k_compound:reversible"
## [5,] "cpd:C00080" "K18277"     "k_compound:reversible"
## [6,] "K18277"     "cpd:C00080" "k_compound:reversible"

The MetaCyc-derived reactions and the manually curated FMO reaction were then merged into the initial cross-species network, network_hostMicrobe. The selected metabolites and KOs were subsequently rechecked in the extended network.

## Merge the reaction extension into the cross-species network
network_mixed <- MetaPathNet::MPN_mergeNetworks(
  network_hostMicrobe,   ## Initial host–microbiome network
  tma_extension,         ## MetaCyc reaction extension
  fmo_extension          ## Manually curated FMO reaction
)

## Extract mapped compounds in the combined network
compound_tma <- MetaPathNet::MPN_findMappedNodes(
  nodes         = compound_tma,
  network_table = network_mixed
)$mapped_nodes

## Extract mapped KOs in the combined network
gene_tma <- MetaPathNet::MPN_findMappedNodes(
  nodes         = gene_tma,
  network_table = network_mixed
)$mapped_nodes

Topology analysis

The extended cross-species network still contains many background edges. Network-based topology analysis was therefore used to focus on the metabolic axis of interest.

In this step, the selected KO and metabolite nodes related to the choline–TMA–TMAO axis were used as source and target nodes, respectively. These biological entities served as the starting and ending points for shortest-path extraction, allowing the construction of a more focused subnetwork centered on the choline–TMA–TMAO axis.

The choice of source and target nodes can vary depending on the biological question being addressed. In other case studies, this direction may be reversed if the aim is to investigate how metabolites act as upstream regulators of gene-associated functions.

The mode argument defines how paths are searched in the network: out follows edge direction from source to target, whereas all ignores direction and treats the network as undirected. In this case study, mode = "all" was used because the metabolites of interest can appear either as substrates or as products. This setting therefore makes it possible to recover connections on both sides of a reaction and to better illustrate the full set of possible links between metabolites and KOs.

It is also common for a given node pair to be connected by more than one shortest path. Setting betweenness = TRUE retains one shortest path among ties by ranking candidate shortest paths according to the betweenness of their intermediate nodes. In practice, this favours paths that pass through more topologically central bridging nodes.

## Compute the shortest-path distance matrix between selected KOs and compounds
distance_tma <- MetaPathNet::MPN_distances(
  network_table = network_mixed,
  source_nodes  = gene_tma,
  target_nodes  = compound_tma,
  mode          = "all",
  name          = TRUE
)

## View distances from selected genes to selected metabolites
distance_tma[1:3, , drop = FALSE]
##                                                              Choline Carnitine
## trimethylamine monooxygenase [EC:1.14.13.148]                      3         7
## trimethylamine-N-oxide reductase (cytochrome c) [EC:1.7.2.3]       3         7
## choline dehydrogenase [EC:1.1.99.1]                                1         5
##                                                              Betaine
## trimethylamine monooxygenase [EC:1.14.13.148]                      5
## trimethylamine-N-oxide reductase (cytochrome c) [EC:1.7.2.3]       5
## choline dehydrogenase [EC:1.1.99.1]                                3
##                                                              4-Trimethylammoniobutanoate
## trimethylamine monooxygenase [EC:1.14.13.148]                                          5
## trimethylamine-N-oxide reductase (cytochrome c) [EC:1.7.2.3]                           5
## choline dehydrogenase [EC:1.1.99.1]                                                    3
##                                                              Trimethylamine
## trimethylamine monooxygenase [EC:1.14.13.148]                             1
## trimethylamine-N-oxide reductase (cytochrome c) [EC:1.7.2.3]              1
## choline dehydrogenase [EC:1.1.99.1]                                       3
##                                                              Trimethylamine N-oxide
## trimethylamine monooxygenase [EC:1.14.13.148]                                     1
## trimethylamine-N-oxide reductase (cytochrome c) [EC:1.7.2.3]                      1
## choline dehydrogenase [EC:1.1.99.1]                                               5
## Extract the shortest-path subnetwork as a MetaPathNet-style edge list
network_shortestPath <- MetaPathNet::MPN_shortestPaths(
  network_table      = network_mixed,
  source_nodes       = gene_tma,
  target_nodes       = compound_tma,
  mode               = "all",
  output             = "network_matrix",
  name               = FALSE,
  distance_threshold = 12,   # exclude overly long paths
  betweenness        = TRUE
)

The network can also be visualised directly in the R environment and is best suited to relatively small networks. Node colours can be customised in both R and Cytoscape. For larger networks, Cytoscape is generally recommended, as it provides better interactivity and more extensive visual customisation.

network_tma_R <- MetaPathNet::MPN_viewNetworkR(
  network_table = network_shortestPath,
  category      = TRUE,   ## Automatically categorise and colour-code genes and compounds
  name          = FALSE,
  node_size     = 4,      ## Custom node size
  node_compound = "#9DC7DD",
  node_gene     = "#9ED17B",
  network_title = "TMA/TMAO shortest-path subnetwork"
)
print(network_tma_R)
Figure 2. R-based visualization of the choline–TMA–TMAO shortest-path subnetwork.

Figure 2. R-based visualization of the choline–TMA–TMAO shortest-path subnetwork.

Origin annotation

The shortest-path subnetwork is more directly centered on the choline-TMA-TMAO axis. Using MPN_annotateOrigin(), KO nodes were annotated by inferred origin as human-associated, microbial-associated, or shared, allowing direct interpretation of the biological components involved in this module. Cytoscape also provides more flexible customisation of node colours and edge types.

## Visualise the origin-annotated shortest-path network in Cytoscape
MetaPathNet::MPN_annotateOrigin(
  network_table     = network_shortestPath,
  name              = TRUE,
  export_cytoscape  = TRUE,
  network_title     = "Origin-annotated shortest-path network",
  collection_title  = "MetaPathNet_Examples"
)

Origin-annotated shortest-path network

Figure 3. Origin-annotated visualization of the choline–TMA–TMAO shortest-path subnetwork.

Figure 3. Origin-annotated visualization of the choline–TMA–TMAO shortest-path subnetwork.

The same subnetwork can also be represented as a node-level annotation table, including node name, type, and inferred origin.

## Annotate node origin in the shortest-path subnetwork
origin_shortestPath <- MetaPathNet::MPN_annotateOrigin(
  network_table    = network_shortestPath,
  bacteria_codes   = "eci",
  name             = TRUE,
  export_cytoscape = FALSE
)

## View the node-level origin table
head(origin_shortestPath)
##           id     type             name       origin
## 1     K00108       KO             betA hsa&bacteria
## 2 cpd:C00576 Compound Betaine aldehyde     compound
## 3     K14085       KO          ALDH7A1          hsa
## 4 cpd:C00114 Compound          Choline     compound
## 5     K20038       KO             cutC     bacteria
## 6 cpd:C00565 Compound   Trimethylamine     compound

Permutation test

Permutation testing was used to compare the observed mean shortest-path length with the mean shortest-path length obtained from random node sets of the same size under the null distribution, testing whether the observed gene-metabolite connections are closer in the network than expected by chance.

In this case study, KO nodes were defined as source nodes and the selected metabolites as target nodes, so that the permutation framework could be applied to the extended cross-species network in a consistent source-to-target setting. In this analysis, mode = "out" was used to preserve the recorded edge direction and maintain this directional interpretation of the network.

## Permutation test: KO set -> TMA-axis-related metabolites
perm_host_tma <- MetaPathNet::MPN_permutePaths(
  network_table = network_mixed,
  source_nodes  = gene_tma,
  target_nodes  = compound_tma,
  n_perm        = 1000,
  mode          = "out",
  plot          = TRUE,
  return_perm   = TRUE
)
Figure 4. Null-model permutation test of gene–metabolite proximity in the reconstructed network.

Figure 4. Null-model permutation test of gene–metabolite proximity in the reconstructed network.

The p-value indicates whether the selected genes and metabolites tend to lie closer to each other in the network than would be expected for unrelated molecules.

Pathway enrichment analysis

Over-representation analysis (ORA) is a common pathway analysis (PA) approach based on existing biochemical knowledge. MPN_enrichPathway() implements this method and tests whether selected nodes (test set) are over-represented in KEGG pathways compared with all nodes in the network (background set). The entity argument specifies whether the analysis is performed at the KO level ("ko"), the compound level ("compound"), or using both KO and compound information ("integrated").

In this case study, species-specific pathways were first retrieved with MPN_getPathIDs(), and the metabolic pathways shared by host and microbe were then used as the pathway set for enrichment analysis.

## Retrieve KEGG pathways for human and E. coli
paths <- MPN_getPathIDs(c("hsa", "eci"))

## Keep shared metabolic pathway IDs only
pathway_hostMicrobe <- names(
  which(table(sub("^[a-zA-Z]+", "map", paths$Path_id[paths$Path_type == "metabolic"])) == 2)
)

## View shared metabolic pathway IDs
head(pathway_hostMicrobe)
## [1] "map00010" "map00020" "map00030" "map00040" "map00051" "map00052"

The choline-TMA-TMAO-focused shortest-path subnetwork (network_shortestPath) was used as the test set, and the full cross-species network (network_mixed) as the background set. This analysis was used to identify the pathways most strongly represented in the extracted TMA/TMAO-related module.

## Integrated pathway enrichment on the shortest-path subnetwork
enrich_tma <- MPN_enrichPathway(
  test_set       = network_shortestPath,  # accepts a MetaPathNet-style edge list or a node vector
  background_set = network_mixed,
  pathway_set    = pathway_hostMicrobe,
  entity         = "integrated",
  pvalueCutoff   = 0.05,
  add_hits       = TRUE
)

A dot plot was used to display the ten metabolic pathways with the most significant adjusted p-values.

## Prepare enrichment results for plotting
plot_df <- enrich_tma[, c("Description", "p_adj", "significance")]
plot_df$p_adj <- as.numeric(plot_df$p_adj)
plot_df$p_adj_safe <- pmax(plot_df$p_adj, .Machine$double.xmin, na.rm = FALSE)

## Keep the top 10 pathways ranked by adjusted p value
plot_df <- plot_df[order(plot_df$p_adj_safe), ]
plot_df <- head(plot_df, 10)
plot_df$Description <- factor(plot_df$Description, levels = rev(plot_df$Description))

## Plot pathway enrichment
ggplot(plot_df, aes(x = -log10(p_adj_safe), y = Description, color = significance)) +
  geom_point(size = 4, alpha = 0.9, na.rm = TRUE) +
  scale_color_manual(values = c("significant" = "#C45745", "NS" = "#D1C2C2")) +
  labs(
    x = expression(-log[10]~adjusted~p~value),
    y = NULL,
    title = "Integrated Pathway Enrichment"
  ) +
  theme_minimal(base_size = 14) +
  theme(
    axis.text.y  = element_text(size = 14),
    axis.text.x  = element_text(size = 14),
    plot.title   = element_text(face = "bold", size = 15, hjust = 0.02),
    legend.title = element_text(face = "bold")
  )
Figure 5. Integrated pathway enrichment of the choline–TMA–TMAO shortest-path subnetwork, showing the top 10 pathways ranked by adjusted p-value.

Figure 5. Integrated pathway enrichment of the choline–TMA–TMAO shortest-path subnetwork, showing the top 10 pathways ranked by adjusted p-value.

A significant p-value indicates that the pathway is more strongly represented in the extracted choline-TMA-TMAO module than expected by chance, suggesting that it is biologically closely related to this metabolic axis.

Conclusion

MetaPathNet can be used to integrate multi-omics data into a network-based framework for the study of host–microbiome metabolism. By combining network construction with topology analysis, it helps reveal connections between host and microbial functions and supports the interpretation of metabolic interaction in a systems biology context.

The pathway coverage of the reconstructed network depends on the selected organism panel. In this vignette, the workflow focuses on the human and one representative gut bacterial strain, whereas the inclusion of additional gut microbial species could provide a more complete representation of gut metabolic capacity. Network extension with information from other databases or with custom reactions can further adapt the analysis to the biological question of interest.

References

sessionInfo()
## R version 4.6.0 (2026-04-24)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.4 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
## LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: Etc/UTC
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] ggplot2_4.0.3      MetaPathNet_0.99.1 BiocStyle_2.41.0  
## 
## loaded via a namespace (and not attached):
##   [1] RColorBrewer_1.1-3          sys_3.4.3                  
##   [3] rstudioapi_0.18.0           jsonlite_2.0.0             
##   [5] magrittr_2.0.5              GenomicFeatures_1.65.0     
##   [7] farver_2.1.2                rmarkdown_2.31             
##   [9] fs_2.1.0                    BiocIO_1.23.3              
##  [11] vctrs_0.7.3                 memoise_2.0.1              
##  [13] Rsamtools_2.29.0            RCurl_1.98-1.19            
##  [15] base64enc_0.1-6             progress_1.2.3             
##  [17] htmltools_0.5.9             S4Arrays_1.13.0            
##  [19] BiocBaseUtils_1.15.1        curl_7.1.0                 
##  [21] SparseArray_1.13.2          Formula_1.2-5              
##  [23] sass_0.4.10                 KernSmooth_2.23-26         
##  [25] bslib_0.11.0                htmlwidgets_1.6.4          
##  [27] plyr_1.8.9                  gsubfn_0.7                 
##  [29] httr2_1.2.2                 cachem_1.1.0               
##  [31] uuid_1.2-2                  buildtools_1.0.0           
##  [33] GenomicAlignments_1.49.0    igraph_2.3.2               
##  [35] lifecycle_1.0.5             pkgconfig_2.0.3            
##  [37] Matrix_1.7-5                R6_2.6.1                   
##  [39] fastmap_1.2.0               MatrixGenerics_1.25.0      
##  [41] digest_0.6.39               colorspace_2.1-2           
##  [43] AnnotationDbi_1.75.0        S4Vectors_0.51.3           
##  [45] chron_2.3-62                Hmisc_5.2-5                
##  [47] GenomicRanges_1.65.0        RSQLite_3.53.1             
##  [49] base64url_1.4               labeling_0.4.3             
##  [51] filelock_1.0.3              RJSONIO_2.0.5              
##  [53] httr_1.4.8                  polyclip_1.10-7            
##  [55] abind_1.4-8                 compiler_4.6.0             
##  [57] bit64_4.8.2                 withr_3.0.2                
##  [59] htmlTable_2.5.0             S7_0.2.2                   
##  [61] backports_1.5.1             BiocParallel_1.47.0        
##  [63] viridis_0.6.5               RCy3_2.33.0                
##  [65] DBI_1.3.0                   ggforce_0.5.0              
##  [67] gplots_3.3.0                biomaRt_2.69.0             
##  [69] MASS_7.3-65                 rappdirs_0.3.4             
##  [71] DelayedArray_0.39.3         rjson_0.2.23               
##  [73] gtools_3.9.5                caTools_1.18.3             
##  [75] tools_4.6.0                 foreign_0.8-91             
##  [77] otel_0.2.0                  mygene_1.49.0              
##  [79] nnet_7.3-20                 webchem_1.3.1              
##  [81] glue_1.8.1                  restfulr_0.0.16            
##  [83] grid_4.6.0                  pbdZMQ_0.3-14              
##  [85] checkmate_2.3.4             cluster_2.1.8.2            
##  [87] generics_0.1.4              gtable_0.3.6               
##  [89] tidyr_1.3.2                 hms_1.1.4                  
##  [91] data.table_1.18.4           xml2_1.5.2                 
##  [93] tidygraph_1.3.1             XVector_0.53.0             
##  [95] BiocGenerics_0.59.7         ggrepel_0.9.8              
##  [97] pillar_1.11.1               stringr_1.6.0              
##  [99] IRdisplay_1.1               dplyr_1.2.1                
## [101] tweenr_2.0.3                BiocFileCache_3.3.0        
## [103] lattice_0.22-9              rtracklayer_1.73.0         
## [105] bit_4.6.0                   tidyselect_1.2.1           
## [107] maketools_1.3.2             Biostrings_2.81.3          
## [109] knitr_1.51                  gridExtra_2.3              
## [111] IRanges_2.47.2              Seqinfo_1.3.0              
## [113] sqldf_0.4-12                SummarizedExperiment_1.43.0
## [115] stats4_4.6.0                xfun_0.58                  
## [117] graphlayouts_1.2.3          Biobase_2.73.1             
## [119] matrixStats_1.5.0           proto_1.0.0                
## [121] UCSC.utils_1.9.0            stringi_1.8.7              
## [123] yaml_2.3.12                 cigarillo_1.3.0            
## [125] evaluate_1.0.5              codetools_0.2-20           
## [127] data.tree_1.2.0             ggraph_2.2.2               
## [129] tibble_3.3.1                BiocManager_1.30.27        
## [131] graph_1.91.0                cli_3.6.6                  
## [133] IRkernel_1.3.2              rpart_4.1.27               
## [135] repr_1.1.7                  jquerylib_0.1.4            
## [137] GenomeInfoDb_1.49.1         Rcpp_1.1.1-1.1             
## [139] dbplyr_2.5.2                png_0.1-9                  
## [141] XML_3.99-0.23               parallel_4.6.0             
## [143] blob_1.3.0                  prettyunits_1.2.0          
## [145] bitops_1.0-9                txdbmaker_1.9.0            
## [147] viridisLite_0.4.3           scales_1.4.0               
## [149] purrr_1.2.2                 crayon_1.5.3               
## [151] rlang_1.2.0                 rvest_1.0.5                
## [153] KEGGREST_1.53.0
Bansal, Parit, Anne Morgat, Kristian B Axelsen, et al. 2022. “Rhea, the Reaction Knowledgebase in 2022.” Nucleic Acids Res 50 (D1): D693–700. https://doi.org/10.1093/nar/gkab1016.
Caspi, Ron, Richard Billington, Carol A Fulcher, et al. 2018. “The MetaCyc Database of Metabolic Pathways and Enzymes.” Nucleic Acids Research 46 (D1): D633–39. https://doi.org/10.1093/nar/gkx935.
Luo, Weijun, and Cory Brouwer. 2013. Pathview: An R/Bioconductor Package for Pathway-Based Data Integration and Visualization.” Bioinformatics 29 (14): 1830–31. https://doi.org/10.1093/bioinformatics/btt285.
Ogata, Hiroyuki, Susumu Goto, Kazushige Sato, Wataru Fujibuchi, Hidemasa Bono, and Minoru Kanehisa. 1999. KEGG: Kyoto Encyclopedia of Genes and Genomes.” Nucleic Acids Research 27 (1): 29–34. https://doi.org/10.1093/nar/27.1.29.
Sato, Noriaki, Miho Uematsu, Kosuke Fujimoto, Satoshi Uematsu, and Seiya Imoto. 2023. ggkegg: Analysis and Visualization of KEGG Data Utilizing the Grammar of Graphics.” Bioinformatics 39 (10): btad622. https://doi.org/10.1093/bioinformatics/btad622.
Wang, Zeneng, Elizabeth Klipfell, Brian J. Bennett, et al. 2011. “Gut Flora Metabolism of Phosphatidylcholine Promotes Cardiovascular Disease.” Nature 472 (7341): 57–63. https://doi.org/10.1038/nature09922.
Zhang, Jitao David, and Stefan Wiemann. 2009. KEGGgraph: A Graph Approach to KEGG PATHWAY in R and Bioconductor.” Bioinformatics 25 (11): 1470–71. https://doi.org/10.1093/bioinformatics/btp167.