MicrobiomeProfiler is a functional enrichment toolkit
for microbiome data, built on the clusterProfiler
ecosystem. It ships both a set of programmatic enrichment functions and
an R/Shiny application with a user-friendly interface.
Annotation data is delivered in a hybrid way:
As shown in the following figure, the sidebar panel holds the input options and the main panel shows the output (the same layout is used by every analysis).
KEGG enrichment analysis
Run the application:
The application provides three entry points:
Gene enrichment analysis
KEGGCOGeggNOG, with both ORA and
GSEA modes on the same pageMicrobe disease/signature enrichment
DisbiomeBugSigDBMetabo-Pathway analysis
SMPDB.Metabolite.IDKEGG.IDHMDB.IDMicrobiomeProfiler provides the following enrichment
analyses:
enrichEggNOG())
and GSEA (gseEggNOG())enrichMDA(),
gseMDA())enrichBugSigDB())enrichSMPDB(), enrichHMDB())Where the analysis is defined over a background, the Shiny interface
offers the default background or a
customer_defined_universe supplied by the user.
eggNOG orthologous groups are used as the input
identifiers. They are not plain OG0001-style numbers: an
identifier carries the gene name, the taxonomic id and a suffix, for
example Collectrin@131567|A-1*.
library(MicrobiomeProfiler)
og <- c(
"Collectrin@131567|A-1*",
"Collectrin@7711|C-2",
"Collectrin@75365|II-17"
)
ora_res <- enrichEggNOG(og, minGSSize = 1, maxGSSize = 500)ORA is the primary quick-start example for
eggNOG. GSEA expects a named ranked numeric
vector of the same identifiers. A ranked list has to span more than one
pathway for the permutation p-values to be computable, so a handful of
identifiers taken from a single pathway is not enough to obtain a
result; in the Shiny app, the Example button of
eggNOG + GSEA builds a ready-to-run ranked
list from the published annotation artifact.
Clicking the Example button fills the input area with a
ready-to-run example for the selected analysis. Further parameters can
be set below the input area, for instance the p value cutoff. There is a
customer_defined_universe choice for users who want to
define a specific universe for the enrichment analysis (this is also
available for the other enrichment analyses). After that, click
Submit to run the analysis. The Clean button
clears the current results.
Customize the universe
Customize the universe
And then, the universe input box would be showed below.
For eggNOG in GSEA mode, provide one ranked
item per line, that is an identifier and a numeric score separated by
whitespace. The universe and the q value cutoff do not apply in this
mode.
Here we showed the case study of example: Comparative functional KEGG enrichment analysis between Lung Microbioe in IPF and Healthy Individuals. 295 significantly differential KEGG orthologs between Lung Microbioe in idiopathnic pulmonary fibrosis Patients (IPF) and healthy individuals were reported for KEGG enrichment analysis.
Case study
The default visualization results showed top 10 significant terms. In
addition, users can click the interested terms on the table, and click
the Update to get the results. Furthermore, there are some
output settings to adjust the output figure.
To show interested tetms
MicrobiomeProfiler currently uses the following
annotation resources:
Some annotation resources are distributed from the package GitHub Pages site instead of being bundled directly in the package tarball. This keeps the installed package smaller while allowing data artifacts to be refreshed independently.
Currently configured external datasets are bugsigdb,
disbiome and eggnog.
You can inspect them with:
To pre-download a dataset into the local cache:
download_dataset("bugsigdb")
download_dataset("disbiome", refresh = TRUE)
download_dataset("eggnog")To inspect or clear the local cache:
dataset_cache_info()
dataset_cache_info("bugsigdb")
clear_dataset_cache("bugsigdb")
clear_dataset_cache()At runtime, enrichBugSigDB(),
enrichEggNOG() and gseEggNOG() download their
external artifacts on demand, while enrichMDA() /
gseMDA() use remote-first Disbiome data with a fallback to
the bundled internal dataset when the remote resource is
unavailable.
If the remote resource cannot be reached, enrichEggNOG()
and gseEggNOG() report the failure instead of silently
analysing incomplete data, and the Example button of the
app reports that it could not build an example rather than inserting
placeholder identifiers.
#> R version 4.6.1 (2026-06-24)
#> Platform: x86_64-pc-linux-gnu
#> Running under: Ubuntu 26.04.1 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.32.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] prettydoc_0.4.1
#>
#> loaded via a namespace (and not attached):
#> [1] digest_0.6.39 R6_2.6.1 fastmap_1.2.0 xfun_0.61
#> [5] maketools_1.3.2 cachem_1.1.0 knitr_1.52 htmltools_0.5.9
#> [9] png_0.1-9 rmarkdown_2.32 buildtools_1.0.0 lifecycle_1.0.5
#> [13] cli_3.6.6 sass_0.4.10 jquerylib_0.1.4 compiler_4.6.1
#> [17] sys_3.4.3 tools_4.6.1 evaluate_1.0.5 bslib_0.12.0
#> [21] yaml_2.3.12 otel_0.2.0 jsonlite_2.0.0 rlang_1.3.0