enrichit is part of the clusterProfiler family, serving as the underlying algorithm implementation layer. It focuses on fast core computation, standardized result objects, and reusable data-preparation layers for downstream visualization packages such as enrichplot.
The package now covers not only classical enrichment workflows such as ORA and GSEA, but also weighted enrichment, network propagation-based enrichment, multi-omics early/late fusion, multi-layer topology fusion, and explanation-ready data extraction.
You can install the development version of enrichit from GitHub using devtools:
# install.packages("devtools")
devtools::install_github("YuLab-SMU/enrichit")enrichit is designed around four layers:
- Core enrichment engines: ORA, GSEA, weighted ORA/GSEA, and GSON-aware variants.
- Network-aware enrichment: single-layer
nsea()and multi-layermnsea()workflows based on Random Walk with Restart. - Multi-omics integration: early fusion at the feature level and late fusion at the pathway level.
- Explanation-ready outputs: contribution tables and topology-aware extraction helpers prepared for visualization in
enrichplot.
- High performance core: key algorithms are implemented in
C++viaRcpp, with sparse network propagation powered byRcppEigen. - ORA: standard hypergeometric ORA with optional weighted ORA through Wallenius' noncentral hypergeometric distribution.
- GSEA: multilevel, permutation, and adaptive strategies for ranked enrichment analysis.
- GSON support: native
ora_gson()andgsea_gson()interfaces for structured gene set collections. - NSEA:
nsea()andnsea_gson()for network-ranked enrichment on a single graph, includingmode = "signed"for bidirectional propagation. - Multi-layer topology fusion:
mnsea()andmnsea_gson()for multiplex or heterogeneous network propagation across multiple layers. - Multi-omics early fusion:
aggregate_omics(),harmonize_ids(), andselect_features_for_ora()for feature-level integration before enrichment. - Multi-omics late fusion:
aggregate_enrichment()for pathway-level aggregation of multiple enrichment results. - Contribution tracing:
get_omics_contribution(),classify_omics_pattern(), andget_mnsea_contribution()for explanation-oriented summaries. - Topology-aware extraction:
extract_mnsea_subnetwork()for pathway-specific node/edge tables that can be passed to downstream visualization packages. - Bayesian compression:
bayes_enrich()andbayes_summary()for posterior-based term prioritization.
ora(),ora_gson()gsea(),gsea_gson()gseaScores()
ora(..., weight = )ora_gson(..., weight = )gsea(..., weight = )gsea_gson(..., weight = )
prepare_network()nsea(),nsea_gson()prepare_multilayer_network()propagate_multilayer()collapse_multilayer_scores()mnsea(),mnsea_gson()
aggregate_omics()harmonize_ids()select_features_for_ora()aggregate_enrichment()
get_omics_contribution()classify_omics_pattern()get_mnsea_contribution()extract_mnsea_subnetwork()
The package provides the standard enrichment result object model used by the clusterProfiler family:
enrichResultfor ORA-like workflowsgseaResultfor ranked enrichment workflowsnseaResultfor single-network propagation plus enrichmentmnseaResultfor multi-layer propagation, collapsed scores, and cached explanation tables
These objects are intended to support a clean separation of concerns across the clusterProfiler family:
enrichithandles core computation, algorithm implementation, and explanation-ready data preparationclusterProfilerprovides high-level biological interpretation workflows and general enrichment analysis interfacesenrichplothandles visualizationgsonprovides a structured gene set resource layer for managing and exchanging gene set collections across the family- knowledge-base-oriented downstream packages such as
DOSE,ReactomePA,meshes, andMicrobiomeProfilerprovide domain-specific annotation and interpretation layers
- Computation first: this package prioritizes fast and robust numerical routines over plot helpers.
- Decoupled architecture: integration layers, propagation layers, and enrichment layers are exposed separately where useful.
- Stable downstream interface: explanation helpers return standard tables so that plotting logic can evolve independently in downstream packages.