Skip to contents


In this tutorial we showcase how to use MetaProViz:
- To access metabolite prior knowledge.
- To deal with many-to-many mapping in your metabolite identifiers.
- To perform pathway enrichment analysis.


First if you have not done yet, install the required dependencies and load the libraries:

# 1. Install Rtools if you haven’t done this yet, using the appropriate version (e.g.windows or macOS). 
# 2. Install the latest development version from GitHub using devtools
#devtools::install_github("https://github.com/saezlab/MetaProViz")

library(MetaProViz)

#dependencies that need to be loaded:
library(magrittr)
library(dplyr)

#Please install the Biocmanager Dependencies:
#BiocManager::install("clusterProfiler")
#BiocManager::install("EnhancedVolcano")
#BiocManager::install("cosmosR")



1. Loading the example data


As part of the MetaProViz package you can load the example data into your global environment using the function toy_data():
1.Cell line experiment (CellLine)
Here we choose an example datasets, which is publicly available on metabolomics workbench project PR001418 including metabolic profiles of human renal epithelial cells HK2 and cell renal cell carcinoma (ccRCC) cell lines cultured in Plasmax cell culture media (Sciacovelli et al. 2022). The raw data are available via metabolomics workbench study ST002224 were intracellular metabolomics of HK2 and ccRCC cell lines 786-O, 786-M1A and 786-M2A were performed.
We have performed pre-processing and differential analysis (details can be found in the vignette vignette Standard Metabolomics) and and here we load the differential metabolite analysis results for the comparison of 786M-1A versus HK2.

#Load the Pre-processed intracellular data:
Intra_DMA_786M1A_vs_HK2<- MetaProViz::ToyData(Data="IntraCells_DMA")

2. Tissue experiment (Tissue)
Here we chose publicly available data from the paper “An Integrated Metabolic Atlas of Clear Cell Renal Cell Carcinoma”, which includes metabolomic profiling on 138 matched clear cell renal cell carcinoma (ccRCC)/normal tissue pairs.
We have performed differential analysis (details can be found in the vignette Metadata Analysis) and and here we load the differential metabolite analysis results for the comparison of Tumour versus Normal.

# Load the example data:
Tissue_TvsN <- MetaProViz::ToyData(Data="Tissue_DMA")
Tissue_TvsN_Old <- MetaProViz::ToyData(Data="Tissue_DMA_Old")
Tissue_TvsN_Young <- MetaProViz::ToyData(Data="Tissue_DMA_Young")



2. Accessing Prior Knowledge


Metabolite prior knowledge (PK) is essential for the interpretation of metabolomics data. It can be used to perform pathway enrichment analysis, compound class enrichment analysis, and by using specific PK databases, it can be used to study the connection of metabolites and receptors or transporters.Since the quality and content of the PK will dictate the success of the downstream analysis and biological interpretation, it is important to ensure the PK is used correctly.
Specifically in metabolite PK, the many different PK databases and resources pose several issues. Indeed, the metabolite identifiers (e.g. KEGG, HMDB, PubChem, etc.) are not standardized across databases, and the same metabolite can have multiple identifiers in different databases. This is known as the many-to-many mapping problem.
Moreover, metabolic pathways that are the basis of the PK databases also includes co-factors such as ions or other small molecules that are not only part of most reactions, but can also not be detected in experimentallly acquired data (e.g. H2O, CO2, etc).

KEGG pathway-metabolite sets

KEGG pathways that are loaded via KEGG API using the package KEGGREST and can be used to perform pathway analysis (Kanehisa and Goto 2000). (KEGG_Pathways)

#This will use KEGGREST to query the KEGG API to load the pathways:
MetaProViz::LoadKEGG()
#> Cached file loaded from: ~/.cache/KEGG_Metabolite.rds


Preview of the DF KEGG_Pathways.
term Metabolite MetaboliteID Description
1 Glycolysis / Gluconeogenesis - Homo sapiens (human) Pyruvate C00022 Glycolysis / Gluconeogenesis - Homo sapiens (human)
2 Glycolysis / Gluconeogenesis - Homo sapiens (human) Acetyl-CoA C00024 Glycolysis / Gluconeogenesis - Homo sapiens (human)
3 Glycolysis / Gluconeogenesis - Homo sapiens (human) D-Glucose C00031 Glycolysis / Gluconeogenesis - Homo sapiens (human)
52 Pentose phosphate pathway - Homo sapiens (human) Pyruvate C00022 Pentose phosphate pathway - Homo sapiens (human)
53 Pentose phosphate pathway - Homo sapiens (human) D-Glucose C00031 Pentose phosphate pathway - Homo sapiens (human)
54 Pentose phosphate pathway - Homo sapiens (human) D-Fructose 6-phosphate C00085 Pentose phosphate pathway - Homo sapiens (human)

Create pathway-metabolite sets

The function Make_GeneMetabSet can be used to translate gene names to metabolite names by using a PK network of metabolic reactions calls CosmosR (Dugourd et al. 2021). This function is useful if you want to perform pathway enrichment analysis on available gene-sets such as the Hallmarks gene-sets from MSigDB (Castanza et al. 2022). Moreover, it enables you to perform combined pathway enrichment analysis on metabolite-gene sets, if you have other data types such as proteomics measuring the enzymes expression.
The Hallmarks gene-set is available in the package MetaProViz and can be loaded using the function LoadHallmarks().

#Load the example data:
MetaProViz::LoadHallmarks()
Preview of the DF Hallmarks_Pathways including gene-sets usable for pathway enrichment analysis.
term gene
HALLMARK_BILE_ACID_METABOLISM GSTK1
HALLMARK_BILE_ACID_METABOLISM ABCG4
HALLMARK_GLYCOLYSIS LDHC
HALLMARK_GLYCOLYSIS ARPP19
HALLMARK_GLYCOLYSIS LDHC
HALLMARK_GLYCOLYSIS ARPP19
HALLMARK_GLYCOLYSIS CENPA


Now we can use the function Make_GeneMetabSet to translate the gene names to metabolite names.

#Translate gene names to metabolite names
Hallmarks_GeneMetab <- MetaProViz::Make_GeneMetabSet(Input_GeneSet=Hallmark_Pathways,
                                                     SettingsInfo=c(Target="gene"),
                                                     PKName="Hallmarks")
Preview of the DF Hallmarks_GeneMetab including gene-sets usable for pathway enrichment analysis.
term feature
HALLMARK_GLYCOLYSIS ME2
HALLMARK_GLYCOLYSIS LDHC
HALLMARK_GLYCOLYSIS FKBP4
HALLMARK_GLYCOLYSIS HMDB0000241
HALLMARK_GLYCOLYSIS HMDB0000570
HALLMARK_GLYCOLYSIS HMDB0000122


Given that we have the gene-metabolite-sets, we can now also run enrichment analysis on combined data types, once including the metabolite Log2FC and one including gene Log2FC from e.g. transcriptomics or proteomics data. Yet, it is important to keep in mind that generally we detect less metabolites than genes and hence this may bias the results obtained from combined enrichment analysis.

MetaLinksDB Metabolite-receptor sets

The MetaLinks database is a manually curated database of metabolite-receptor and metabolite-transporter sets that can be used to study the connection of metabolites and receptors or transporters (Farr et al. 2024).

MetaLinksDB_Res <- MetaProViz::LoadMetalinks()
#> Metalinks database downloaded and saved to: ~/.cache/metalinks.db
Preview of the DF MetaLinksDB including metabolite-receptor sets.
hmdb metabolite pubchem metabolite_subclass uniprot gene_symbol protein_type source db_score experiment_score combined_score mor type transport_direction mode_of_regulation
HMDB0002111 Water 962 NA A0A087X1C5 CYP2D7 NA rhea NA NA NA 1 Production-Degradation NA Activating
HMDB0001377 Oxygen 977 Other non-metal oxides A0A087X1C5 CYP2D7 NA rhea NA NA NA -1 Production-Degradation NA Inhibiting
HMDB0001377 Oxygen 977 Other non-metal oxides A0A1W2PPD8 KDM4F NA rhea NA NA NA -1 Production-Degradation NA Inhibiting
HMDB0001967 Carbon dioxide 280 Other non-metal oxides A0A1W2PPD8 KDM4F NA rhea NA NA NA 1 Production-Degradation NA Activating
HMDB0002111 Water 962 NA A0A1W2PQ27 SSU72L1 NA rhea NA NA NA -1 Production-Degradation NA Inhibiting
HMDB0002111 Water 962 NA A0A1W2PQ64 SSU72L5 NA rhea NA NA NA -1 Production-Degradation NA Inhibiting
HMDB0002111 Water 962 NA A0A1W2PQC6 SSU72L4 NA rhea NA NA NA -1 Production-Degradation NA Inhibiting
HMDB0002111 Water 962 NA A0A1W2PQD8 SSU72L2 NA rhea NA NA NA -1 Production-Degradation NA Inhibiting
Preview of the DF MetaLinksDB_Type including metabolite-receptor and metabolite-transporter sets.
hmdb metabolite pubchem term_specific term
HMDB0000660 D-Fructose 439709 transporter_Production-Degradation transporter
HMDB0002212 Arachidic acid 10467 other_protein_Production-Degradation other_protein
HMDB0037790 Polyethylene glycol 174 catalytic_receptor_Ligand-Receptor catalytic_receptor
HMDB0034442 L-trans-alpha-Amino-2-carboxycyclopropaneacetic acid 1271 gpcr_Ligand-Receptor gpcr



3. Translate IDs


Warning: Translating IDs between formats e.g. KEGG to HMDB is a non-trivial task, and it is possible for one original ID to link to many translated IDs, and vice versa. We discuss this below and in the InspectID subsection (which the TranslateID function will run by default). We currently leave it to user discretion to select the most appropriate ID based on their research question and data.


As visible from the prior knowledge tables above, it becomes clear that we require a specific metabolite ID depending on the prior knowledge resource. Indeed, the KEGG pathways include KEGG IDs, whilst the Hallmarks metabolite sets include HMDB IDs.


If we want to convert or ‘translate’ those IDs to another commonly used form of ID, for instance because our measured data uses another type of ID, we can make use of the MetaProViz::TranslateID() function. This is based on OmniPathR and RaMP DB (Braisted et al. 2023) on the backend of our function and currently supports ID translation of metabolites to and from the following formats:

  • KEGG

  • HMDB

  • ChEBI

  • PubChem

In the simplest case, we can use the function like so:

translated_ids_example <- TranslateID(KEGG_Pathways[39,])$Translated_DataFrame
#> [1] "Using method  GetAll"
#> [1] "Converting from  kegg  to  pubchem"
#> [1] "Converting from  kegg  to  chebi"
#> [1] "Converting from  kegg  to  hmdb"
Example of 1-to-one translation of KEGG_Pathways (besides HMDB)
MetaboliteID term Metabolite Description pubchem_collapsed chebi_collapsed hmdb_collapsed
C00091 Citrate cycle (TCA cycle) - Homo sapiens (human) Succinyl-CoA Citrate cycle (TCA cycle) - Homo sapiens (human) 92133 15380 HMDB0001022, HMDB01022


Using the default translation settings for a single ID, we can see that we receive back a single PubChem ID and ChEBI ID. However the HMDB column has two HMDBs associated with it (HMDB0001022, HMDB01022). In this case this difference is trivial and due to HMDB formatting conventions: the longer version appears to be from the original HMDB ID format versus the shorter more concise version. To avoid this we could change the settings to remove HMDB completely, like so:

translated_ids_example <- TranslateID(KEGG_Pathways[39,], 
            SettingsInfo = list(IdColumn="MetaboliteID", 
                                FromFormat=c("kegg"), 
                                ToFormat=c("pubchem","chebi"), 
                                Method="GetAll", 
                                GroupingVariable="term"))$Translated_DataFrame
#> [1] "Using method  GetAll"
#> [1] "Converting from  kegg  to  pubchem"
#> [1] "Converting from  kegg  to  chebi"
Example of 1-to-one translation of KEGG_Pathways (excluding HMDB)
MetaboliteID term Metabolite Description pubchem_collapsed chebi_collapsed
C00091 Citrate cycle (TCA cycle) - Homo sapiens (human) Succinyl-CoA Citrate cycle (TCA cycle) - Homo sapiens (human) 92133 15380


Or we could keep just the first item of every translation by changing the `Method=‘GetFirst’` parameter like so:

translated_ids_example <- TranslateID(KEGG_Pathways[39,], 
            SettingsInfo = list(IdColumn="MetaboliteID", 
                                FromFormat=c("kegg"), 
                                ToFormat=c("pubchem","chebi", "hmdb"), 
                                Method="GetFirst", 
                                GroupingVariable="term"))$Translated_DataFrame
#> [1] "Using method  GetFirst"
#> [1] "Converting from  kegg  to  pubchem"
#> WARNING: Only the first translated ID from <pubchem> will be returned for each unique ID from <kegg>.
#> [1] "Converting from  kegg  to  chebi"
#> WARNING: Only the first translated ID from <chebi> will be returned for each unique ID from <kegg>.
#> [1] "Converting from  kegg  to  hmdb"
#> WARNING: Only the first translated ID from <hmdb> will be returned for each unique ID from <kegg>.
Example of 1-to-one translation of KEGG_Pathways (using GetFirst method)
MetaboliteID term Metabolite Description pubchem_first chebi_first hmdb_first
C00091 Citrate cycle (TCA cycle) - Homo sapiens (human) Succinyl-CoA Citrate cycle (TCA cycle) - Homo sapiens (human) 92133 15380 HMDB0001022


Ideally we would want a smarter and more consistent way to filter these out. However, it is important to note that this translation process is rarely as straightforward as the one-to-one translation above (at least for PubChem and ChEBI IDs in the example).

Very commonly, an ID from one format will have a genuine one-to-many relationship with the other format (e.g. one KEGG ID maps to multiple HMDB IDs). Occasionally, it could also be a many-to-many relationship, where some of the IDs from the new format link back to multiple IDs in the original format (e.g. two different KEGG IDs map to multiple HMDS IDs, some of which are shared between them). We can inspect instances of where this is the case in our data:

translated_ids_example <- KEGG_Pathways %>% filter(MetaboliteID == 'C00009') %>% 
  first() %>%
  TranslateID()
#> [1] "Using method  GetAll"
#> [1] "Converting from  kegg  to  pubchem"
#> [1] "Converting from  kegg  to  chebi"
#> [1] "Converting from  kegg  to  hmdb"
translated_ids_example_df <- translated_ids_example$Translated_DataFrame
Example of 1-to-many translation of KEGG_Pathways (besides HMDB)
MetaboliteID term Metabolite Description pubchem_collapsed chebi_collapsed hmdb_collapsed
C00009 Oxidative phosphorylation - Homo sapiens (human) Orthophosphate Oxidative phosphorylation - Homo sapiens (human) 1004, 1061, 3681305, 1003 26078, 18367, 43474, 39745 HMDB0001429, HMDB0000973, HMDB0002105, HMDB0002142, HMDB0005947, HMDB00973, HMDB01429, HMDB02105, HMDB02142, HMDB05947


The above example of the Orthophosphate metabolite (KEGG ID C00009) shows the complexity of this one-to-many multi-mapping issue: for the single KEGG ID, it returns:

  • 4 different PubChem IDs

  • 4 different ChEBI IDs

  • 10 different HMDB IDs

For pathway analysis we would want to keep only one metabolite for each pathway. But we would probably want to keep our metabolite choice across pathways, avoid ambiguous mapping as much as possible (many-to-many mapping), and have this metabolite ID selection guided by any IDs we might have available to us in our input data.

This brings us to more formally discuss some of the important caveats with the standard TranslateID function, which we will discuss now in the InspectID subsection.

Inspect IDs

Some of the complexities of Translating IDs which we have discussed in the examples so far, can be demonstrated here (Fig.2). The InspectID function (which is included by default when running TranslateID) provides users with a summary of the relationships between the Original and Translated IDs.

Fig. 2: Mapping problems in prior knowledge metabolite-sets when translating metabolite IDs.
Fig. 2: Mapping problems in prior knowledge metabolite-sets when translating metabolite IDs.


As indicated by Figure 2, relationships between Original IDs (e.g. KEGG) and Translated IDs (e.g. HMDB), can be quite complex, resulting in One-to-None/One/Many mappings. Furthermore, the relationships between the Translated IDs (e.g. HMDB) and Original IDs (e.g. KEGG) must also be considered, because the Translated IDs could also ambiguously map back to multiple different Original IDs.

Because of these complexities we leave it to the user to decide which IDs exactly they wish to keep, which could also be influenced by which identifiers they have in their experimental results. However we automatically provide summary information to the user, with the following two tables per Translated ID type:

  1. Mapping_Orig2Trans_XXX_to_YYY (e.g. Mapping_Orig2Trans_kegg_to_pubchem)

  2. Mapping_Trans2Orig_YYY_to_XXX (e.g. Mapping_Trans2Orig_pubchem_to_kegg)

Each table provides the summary of either the Original ID to Translated IDs or vice versa, with counts of the number of Pathways the ID was present in, and most importantly the number of Original/Translated IDs that were mapped to the left-hand-side ID. This is then summarised in the Relationship column, which is specified as either:

  1. One-to-None : no matches were found for the ID.

  2. One-to-One : a direct one-to-one relationship was established between either Original ID to Translated ID, or Translated ID to Original ID. Note however that this does not imply that the reverse relationship is true. See Figure 2.

  3. One-to-Many : multiple matches were found for the ID. i.e. it is ambiguously mapped.


These tables are automatically returned as a DataFrame List when running TranslateID, and can be accessed accordingly. Note that for the full translation between all 4 ID types, it should take about 1 minute to execute.

translated_ids_example_full <- KEGG_Pathways %>% TranslateID()
#> [1] "Using method  GetAll"
#> [1] "Converting from  kegg  to  pubchem"
#> [1] "Converting from  kegg  to  chebi"
#> [1] "Converting from  kegg  to  hmdb"
print(names(translated_ids_example_full))
#> [1] "Translated_DataFrame"               "Mapping_Orig2Trans_kegg_to_pubchem"
#> [3] "Mapping_Trans2Orig_pubchem_to_kegg" "Mapping_Orig2Trans_kegg_to_chebi"  
#> [5] "Mapping_Trans2Orig_chebi_to_kegg"   "Mapping_Orig2Trans_kegg_to_hmdb"   
#> [7] "Mapping_Trans2Orig_hmdb_to_kegg"    "TranslationSummary"


Finally, this information is summarised in the TranslationSummary table.

translated_ids_example_full$TranslationSummary
#> # A tibble: 6 × 4
#>   Table                              `One-to-None` `One-to-One` `One-to-Many`
#>   <chr>                                      <int>        <int>         <int>
#> 1 Mapping_Orig2Trans_kegg_to_pubchem          1684         1300           557
#> 2 Mapping_Trans2Orig_pubchem_to_kegg             0         2929           153
#> 3 Mapping_Orig2Trans_kegg_to_chebi            1672          948           921
#> 4 Mapping_Trans2Orig_chebi_to_kegg               0         3046           112
#> 5 Mapping_Orig2Trans_kegg_to_hmdb             1691           97          1753
#> 6 Mapping_Trans2Orig_hmdb_to_kegg                0         5692           308
TranslationSummary table from KEGG_Pathways
Table One-to-None One-to-One One-to-Many
Mapping_Orig2Trans_kegg_to_pubchem 1684 1300 557
Mapping_Trans2Orig_pubchem_to_kegg 0 2929 153
Mapping_Orig2Trans_kegg_to_chebi 1672 948 921
Mapping_Trans2Orig_chebi_to_kegg 0 3046 112
Mapping_Orig2Trans_kegg_to_hmdb 1691 97 1753
Mapping_Trans2Orig_hmdb_to_kegg 0 5692 308

Note that ordinarily, we should expect that the Trans2Orig tables do not have any One-to-None relationships, because those IDs that have been already translated naturally have an Original ID that was their source.



4. Run enrichment analysis


There are two options:
1. Over Representation Analysis (ORA) that determines if a set of features (=metabolic pathways) are over-represented in the selection of features (=metabolites) from the data in comparison to all measured features (metabolites) using the Fishers exact test MetaProViz::ClusterORA. This can be applied to clusters of metabolites as for example the results from MetaProViz::MCA_2Cond() or MetaProViz::CoRe() function. If you want to have more details on these clustering methods please visit the vignette Standard Metabolomics or CoRe Metabolomics.


2. Enrichment analysis on standard differential analysis results. We offer ORA MetaProViz::StandardORA, but there are many other statistical tests that can be used for enrichment analysis. The full scope of different methods is beyond the scope of MetaProViz, but are available in decoupleR (Badia-I-Mompel et al. 2022) packages from our group.



Session information

#> ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.4.2 (2024-10-31)
#>  os       Ubuntu 22.04.5 LTS
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language en
#>  collate  C.UTF-8
#>  ctype    C.UTF-8
#>  tz       UTC
#>  date     2024-11-04
#>  pandoc   3.1.11 @ /opt/hostedtoolcache/pandoc/3.1.11/x64/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────
#>  package     * version   date (UTC) lib source
#>  abind         1.4-8     2024-09-12 [1] RSPM
#>  backports     1.5.0     2024-05-23 [1] RSPM
#>  beeswarm      0.4.0     2021-06-01 [1] RSPM
#>  bit           4.5.0     2024-09-20 [1] RSPM
#>  bit64         4.5.2     2024-09-22 [1] RSPM
#>  blob          1.2.4     2023-03-17 [1] RSPM
#>  broom         1.0.7     2024-09-26 [1] RSPM
#>  bslib         0.8.0     2024-07-29 [1] RSPM
#>  cachem        1.1.0     2024-05-16 [1] RSPM
#>  car           3.1-3     2024-09-27 [1] RSPM
#>  carData       3.0-5     2022-01-06 [1] RSPM
#>  cellranger    1.1.0     2016-07-27 [1] RSPM
#>  checkmate     2.3.2     2024-07-29 [1] RSPM
#>  cli           3.6.3     2024-06-21 [1] RSPM
#>  colorspace    2.1-1     2024-07-26 [1] RSPM
#>  crayon        1.5.3     2024-06-20 [1] RSPM
#>  curl          5.2.3     2024-09-20 [1] RSPM
#>  DBI           1.2.3     2024-06-02 [1] RSPM
#>  desc          1.4.3     2023-12-10 [1] RSPM
#>  digest        0.6.37    2024-08-19 [1] RSPM
#>  dplyr       * 1.1.4     2023-11-17 [1] RSPM
#>  evaluate      1.0.1     2024-10-10 [1] RSPM
#>  fansi         1.0.6     2023-12-08 [1] RSPM
#>  fastmap       1.2.0     2024-05-15 [1] RSPM
#>  forcats     * 1.0.0     2023-01-29 [1] RSPM
#>  Formula       1.2-5     2023-02-24 [1] RSPM
#>  fs            1.6.5     2024-10-30 [1] RSPM
#>  generics      0.1.3     2022-07-05 [1] RSPM
#>  ggbeeswarm    0.7.2     2023-04-29 [1] RSPM
#>  ggplot2     * 3.5.1     2024-04-23 [1] RSPM
#>  ggpubr        0.6.0     2023-02-10 [1] RSPM
#>  ggsignif      0.6.4     2022-10-13 [1] RSPM
#>  glue          1.8.0     2024-09-30 [1] RSPM
#>  gtable        0.3.6     2024-10-25 [1] RSPM
#>  highr         0.11      2024-05-26 [1] RSPM
#>  hms           1.1.3     2023-03-21 [1] RSPM
#>  htmltools     0.5.8.1   2024-04-04 [1] RSPM
#>  htmlwidgets   1.6.4     2023-12-06 [1] RSPM
#>  httr          1.4.7     2023-08-15 [1] RSPM
#>  igraph        2.1.1     2024-10-19 [1] RSPM
#>  jquerylib     0.1.4     2021-04-26 [1] RSPM
#>  jsonlite      1.8.9     2024-09-20 [1] RSPM
#>  kableExtra    1.4.0     2024-01-24 [1] RSPM
#>  knitr         1.48      2024-07-07 [1] RSPM
#>  later         1.3.2     2023-12-06 [1] RSPM
#>  lifecycle     1.0.4     2023-11-07 [1] RSPM
#>  logger        0.4.0     2024-10-22 [1] RSPM
#>  lubridate   * 1.9.3     2023-09-27 [1] RSPM
#>  magrittr    * 2.0.3     2022-03-30 [1] RSPM
#>  memoise       2.0.1     2021-11-26 [1] RSPM
#>  MetaProViz  * 2.1.2     2024-11-04 [1] local
#>  munsell       0.5.1     2024-04-01 [1] RSPM
#>  OmnipathR     3.13.28   2024-11-04 [1] Github (saezlab/OmnipathR@4007299)
#>  pillar        1.9.0     2023-03-22 [1] RSPM
#>  pkgconfig     2.0.3     2019-09-22 [1] RSPM
#>  pkgdown       2.1.1     2024-09-17 [1] RSPM
#>  prettyunits   1.2.0     2023-09-24 [1] RSPM
#>  progress      1.2.3     2023-12-06 [1] RSPM
#>  purrr       * 1.0.2     2023-08-10 [1] RSPM
#>  R.methodsS3   1.8.2     2022-06-13 [1] RSPM
#>  R.oo          1.27.0    2024-11-01 [1] RSPM
#>  R.utils       2.12.3    2023-11-18 [1] RSPM
#>  R6            2.5.1     2021-08-19 [1] RSPM
#>  ragg          1.3.3     2024-09-11 [1] RSPM
#>  rappdirs      0.3.3     2021-01-31 [1] RSPM
#>  Rcpp          1.0.13-1  2024-11-02 [1] RSPM
#>  readr       * 2.1.5     2024-01-10 [1] RSPM
#>  readxl        1.4.3     2023-07-06 [1] RSPM
#>  rlang         1.1.4     2024-06-04 [1] RSPM
#>  rmarkdown     2.28      2024-08-17 [1] RSPM
#>  RSQLite       2.3.7     2024-05-27 [1] RSPM
#>  rstatix       0.7.2     2023-02-01 [1] RSPM
#>  rstudioapi    0.17.1    2024-10-22 [1] RSPM
#>  rvest         1.0.4     2024-02-12 [1] RSPM
#>  sass          0.4.9     2024-03-15 [1] RSPM
#>  scales        1.3.0     2023-11-28 [1] RSPM
#>  selectr       0.4-2     2019-11-20 [1] RSPM
#>  sessioninfo   1.2.2     2021-12-06 [1] any (@1.2.2)
#>  stringi       1.8.4     2024-05-06 [1] RSPM
#>  stringr     * 1.5.1     2023-11-14 [1] RSPM
#>  svglite       2.1.3     2023-12-08 [1] RSPM
#>  systemfonts   1.1.0     2024-05-15 [1] RSPM
#>  textshaping   0.4.0     2024-05-24 [1] RSPM
#>  tibble      * 3.2.1     2023-03-20 [1] RSPM
#>  tidyr       * 1.3.1     2024-01-24 [1] RSPM
#>  tidyselect    1.2.1     2024-03-11 [1] RSPM
#>  tidyverse   * 2.0.0     2023-02-22 [1] RSPM (R 4.4.0)
#>  timechange    0.3.0     2024-01-18 [1] RSPM
#>  tzdb          0.4.0     2023-05-12 [1] RSPM
#>  utf8          1.2.4     2023-10-22 [1] RSPM
#>  vctrs         0.6.5     2023-12-01 [1] RSPM
#>  vipor         0.4.7     2023-12-18 [1] RSPM
#>  viridisLite   0.4.2     2023-05-02 [1] RSPM
#>  vroom         1.6.5     2023-12-05 [1] RSPM
#>  withr         3.0.2     2024-10-28 [1] RSPM
#>  xfun          0.49      2024-10-31 [1] RSPM
#>  XML           3.99-0.17 2024-06-25 [1] RSPM
#>  xml2          1.3.6     2023-12-04 [1] RSPM
#>  yaml          2.3.10    2024-07-26 [1] RSPM
#>  zip           2.3.1     2024-01-27 [1] RSPM
#> 
#>  [1] /home/runner/work/_temp/Library
#>  [2] /opt/R/4.4.2/lib/R/site-library
#>  [3] /opt/R/4.4.2/lib/R/library
#> 
#> ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Bibliography

Badia-I-Mompel, Pau, Jesús Vélez Santiago, Jana Braunger, Celina Geiss, Daniel Dimitrov, Sophia Müller-Dott, Petr Taus, et al. 2022. “decoupleR: Ensemble of Computational Methods to Infer Biological Activities from Omics Data.” Bioinformatics Advances 2 (1): vbac016. https://doi.org/10.1093/bioadv/vbac016.
Braisted, John, Andrew Patt, Cole Tindall, Timothy Sheils, Jorge Neyra, Kyle Spencer, Tara Eicher, and Ewy A Mathé. 2023. “RaMP-DB 2.0: A Renovated Knowledgebase for Deriving Biological and Chemical Insight from Metabolites, Proteins, and Genes.” Bioinformatics, no. 1 (January). https://doi.org/10.1093/bioinformatics/btac726.
Castanza, Anthony Scott, Jill Marie Recla, David Eby, Helga Thorvaldsdottir, Carol J. Bult, and Jill P Mesirov. 2022. “The Molecular Signatures Database Revisited: Extending Support for Mouse Data.” BioRxiv, October. https://doi.org/10.1101/2022.10.24.513539.
Dugourd, Aurelien, Christoph Kuppe, Marco Sciacovelli, Enio Gjerga, Attila Gabor, Kristina B Emdal, Vitor Vieira, et al. 2021. “Causal Integration of Multi-Omics Data with Prior Knowledge to Generate Mechanistic Hypotheses.” Molecular Systems Biology, no. 1 (January): e9730. https://doi.org/10.15252/msb.20209730.
Farr, Elias, Daniel Dimitrov, Christina Schmidt, Denes Turei, Sebastian Lobentanzer, Aurelien Dugourd, and Julio Saez-Rodriguez. 2024. “MetalinksDB: A Flexible and Contextualizable Resource of Metabolite-Protein Interactions.” Briefings in Bioinformatics, no. 4 (May). https://doi.org/10.1093/bib/bbae347.
Kanehisa, M, and S Goto. 2000. “KEGG: Kyoto Encyclopedia of Genes and Genomes.” Nucleic Acids Research 28 (1): 27–30. https://doi.org/10.1093/nar/28.1.27.
Sciacovelli, Marco, Aurelien Dugourd, Lorea Valcarcel Jimenez, Ming Yang, Efterpi Nikitopoulou, Ana S H Costa, Laura Tronci, et al. 2022. “Dynamic Partitioning of Branched-Chain Amino Acids-Derived Nitrogen Supports Renal Cancer Progression.” Nature Communications 13 (1): 7830. https://doi.org/10.1038/s41467-022-35036-4.