{"id":34906370,"url":"https://github.com/jmw86069/multienrichjam","last_synced_at":"2025-12-26T10:03:09.190Z","repository":{"id":42674744,"uuid":"139867348","full_name":"jmw86069/multienrichjam","owner":"jmw86069","description":"Multi-Enrichment Analysis of Gene Set Enrichment Analysis Results","archived":false,"fork":false,"pushed_at":"2025-12-16T22:41:24.000Z","size":235872,"stargazers_count":25,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-12-20T09:28:08.092Z","etag":null,"topics":["clusterprofiler","enrichment-analysis","geneset-enrichment","geneset-enrichment-analysis","multi-enrichment-analysis","multi-omics","multienrichment","pathway-enrichment","pathway-enrichment-analysis"],"latest_commit_sha":null,"homepage":"https://jmw86069.github.io/multienrichjam","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jmw86069.png","metadata":{"files":{"readme":"README.Rmd","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-07-05T15:19:14.000Z","updated_at":"2025-12-16T20:38:55.000Z","dependencies_parsed_at":"2024-06-22T13:02:27.976Z","dependency_job_id":"124477ca-1568-4b70-823e-a5119d7cf679","html_url":"https://github.com/jmw86069/multienrichjam","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/jmw86069/multienrichjam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmw86069%2Fmultienrichjam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmw86069%2Fmultienrichjam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmw86069%2Fmultienrichjam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmw86069%2Fmultienrichjam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jmw86069","download_url":"https://codeload.github.com/jmw86069/multienrichjam/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jmw86069%2Fmultienrichjam/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28052416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-26T02:00:06.189Z","response_time":55,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clusterprofiler","enrichment-analysis","geneset-enrichment","geneset-enrichment-analysis","multi-enrichment-analysis","multi-omics","multienrichment","pathway-enrichment","pathway-enrichment-analysis"],"created_at":"2025-12-26T10:02:35.534Z","updated_at":"2025-12-26T10:03:09.182Z","avatar_url":"https://github.com/jmw86069.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\noutput:\n  github_document:\n    fig_width: 10\n    fig_height: 10\n    df_print: kable\n    dev: ragg_png\n---\n\n\u003c!-- README.md is generated from README.Rmd. Please edit that file --\u003e\n\n```{r knitr_init, echo=FALSE}\nknitr::opts_chunk$set(\n  collapse=TRUE,\n  warning=FALSE,\n  message=FALSE,\n  comment=\"#\u003e\",\n  fig.path=\"man/figures/README-\"\n);\noptions(knitr.table.format='markdown')\n```\n# multienrichjam\n\nThe goal of multienrichjam is to enable Multi-Enrichment Analysis\nof multiple gene set pathway enrichment datasets together.\n\nThis work was inspired by complementary tools based originally upon\n\"Enrichment Map\", a Cytoscape plugin developed by the lab of Dr. Gary Bader.\n\n   * Bader lab [EnrichmentMap](https://www.baderlab.org/Software/EnrichmentMap)\n   from [Merico,et al, PLoS One, 2010](https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0013984)\n\nSimilar methods were implemented in R by the group of Dr. Guangchuang Yu,\nnotably within the suite of `clusterProfiler` tools which include\n`enrichplot::emapplot()` and `ggtangle::cnetplot()` among numerous other\npowerful tools.\n\n   * [Biomedical Knowledge Mining using clusterProfiler (e-book)](https://yulab-smu.top/biomedical-knowledge-mining-book/index.html)\n   * [clusterProfiler](https://bioconductor.org/packages/release/bioc/html/clusterProfiler.html)\n   * [enrichplot](https://bioconductor.org/packages/release/bioc/html/enrichplot.html)\n\nMulti-enrichment analysis is designed to complement existing tools,\nwhile focusing on the details of comparing multiple enrichment results\ntogether.\n\n\n## How to install\n\nInstall using the `remotes` package:\n\n```\n# if necessary, install 'remotes'\n# install.package(\"remotes\")\nremotes::install_github(\"jmw86069/multienrichjam\",\n   upgrade=\"always\",\n   build_vignettes=TRUE,\n   dependencies=TRUE);\n```\n\nAlternatively, use the `pak` package:\n\n```\n# if necessary, install 'pak'\n# install.package(\"pak\")\npak::pkg_install(\"jmw86069/multienrichjam\",\n   upgrade=TRUE,\n   dependencies=TRUE);\n```\n\nThe argument `dependencies=TRUE` includes suggested packages, most notably\nthe 'openxlsx' package which is used to import\nIngenuity Pathway Analysis (IPA) results stored in Excel 'xlsx' format.\n\n\n## Package Reference\n\nDocumentation is created using 'pkgdown' with all functions, articles,\nand changelog.\n\n[Full multienrichjam documentation](https://jmw86069.github.io/multienrichjam)\n\n\n# Quick walkthrough\n\nStart with one or more enrichment results.\nEach enrichment result is either a `data.frame` or `enrichResult`\nfrom clusterProfiler, and must have the following columns:\n\n* **Pathway name**: some identifier, name, or label\n* **Enrichment P-value**: Typically adjusted P-value, or FDR\n* **genes**: one field with genes involved in enrichment of each pathway\n\nAny `enrichResult` will have this data already.\n\n## `multiEnrichMap()` to create `Mem` output\n\n```{r import-ipa, echo=FALSE}\nlibrary(multienrichjam)\n\nipafiles \u003c- system.file(\"extdata\",\n   c(\"Newborns-IPA.txt\",\n      \"OlderChildren-IPA.txt\"),\n   package=\"multienrichjam\");\nnames(ipafiles) \u003c- c(\"Newborns\", \"OlderChildren\")\nipa_l \u003c- lapply(ipafiles, importIPAenrichment);\nerlist \u003c- lapply(ipa_l, function(i){\n   i[[\"Canonical Pathways\"]];\n});\ner_Newborns \u003c- erlist$Newborns;\ner_OlderChildren \u003c- erlist$OlderChildren;\n\n## Turn off ComplexHeatmap warnings\nComplexHeatmap::ht_opt(\"message\"=FALSE)\n```\n\n```{r mem}\nMem \u003c- multiEnrichMap(list(\n   Newborns=er_Newborns,\n   OlderChildren=er_OlderChildren))\n```\n\nThe output can be summarized by printing the object.\n\n```{r print-mem}\nMem\n```\n\n\n## `prepare_folio()` to create `MemPlotFolio` output\n\nThis step determines pathway clusters, and defines other custom\nfeatures used to produce a \"Mem Plot Folio\" - which is a collection\nof data visualization plots to navigate the results.\n\n```{r prepare-folio}\nMpf \u003c- prepare_folio(Mem)\n```\n\n\n## `GenePathHeatmap()`\n\nThis step displays the underlying gene-versus-pathway data,\nand forms the basis for most of the **multienrichjam** analysis.\n\n```{r gp-heatmap, fig.alt=\"Heatmap with gene-versus-pathway incidence matrix.\"}\nGenePathHeatmap(Mpf)\n```\n\nPathways are clustered according to gene content.\nThis step is intended to reduce redundancy, and to organize\nenrichment results based upon shared subsets of genes.\n\nGenes are also clustered according to shared pathways,\nwhich can provide insights into the core genes involved\nacross multiple pathways.\n\n\n## `EnrichmentHeatmap()`\n\nThis step displays the enrichment P-values in -log10 scale,\nusing the same pathway clusters as defined in the gene-pathway heatmap.\n\n```{r enrichment-heatmap, fig.alt=\"Heatmap with enrichment P-values.\"}\nEnrichmentHeatmap(Mpf)\n```\n\n\n## `CnetCollapsed()`\n\nThe \"Cnet collapsed\" network represents the Concept Network (Cnet) plot\nusing collapsed pathway clusters.\nThe first step `prepare_folio()` is critical to define or customize the\npathway cluster assignment.\n\n```{r cnet-collapsed-show, eval=FALSE}\nCnetCollapsed(Mpf)\n```\n\n```{r cnet-collapsed, echo=FALSE, fig.alt=\"Concept network (Cnet) with pathways collapsed by cluster.\"}\nigraph::V(Mpf@cnet_collapsed[[1]])[29:32]$label.dist \u003c- 0\nCnetCollapsed(Mpf,\n   vertex.label.font=2, use_shadowText=TRUE)\n```\n\nBy default, the cluster titles (\"A\", \"B\", \"C\", \"D\") are displayed,\nhowever the pathways can be used to form a label.\n\n```{r cnet-collapsed-set-show, eval=FALSE}\nCnetCollapsed(Mpf, type=\"set\")\n```\n\n```{r cnet-collapsed-set, echo=FALSE, fig.alt=\"Concept network (Cnet) showing pathways collapsed by set, using pathway names for each cluster label.\"}\nCnetCollapsed(Mpf, type=\"set\",\n   label_factor_l=list(nodeType=c(Gene=1, Set=0.7)),\n   use_shadowText=TRUE, vertex.label.font=2)\n```\n\n## `CnetExemplar()`\n\nA \"Cnet exemplar\" plot uses one exemplar pathway per cluster,\nproviding an alternative network summary view.\n\n```{r cnet-exemplar-show, eval=FALSE}\nCnetExemplar(Mpf)\n```\n\n```{r cnet-exemplar, echo=FALSE, fig.alt=\"Concept network (Cnet) showing one exemplar pathway to represent each pathway cluster.\"}\nCnetExemplar(Mpf,\n   vertex.label.font=2, use_shadowText=TRUE)\n```\n\nA Cnet exemplar plot can also be created using user-defined\npathways of interest.\n\n### Custom Cnet Exemplar\n\n```{r cnet-exemplar-custom-show, eval=FALSE}\ncustom_sets \u003c- c(\n   \"RAR Activation\",\n   \"mTOR Signaling\",\n   \"Growth Hormone Signaling\",\n   \"Tight Junction Signaling\")\ncnet \u003c- mem2cnet(Mem[, custom_sets, ], spread_labels=TRUE)\n\njam_igraph(cnet)\n```\n\n```{r cnet-exemplar-custom, echo=FALSE, fig.alt=\"Concept network (Cnet) showing a custom subset of exemplar pathways chosen by the scientist.\"}\ncustom_sets \u003c- c(\n   \"RAR Activation\",\n   \"mTOR Signaling\",\n   \"Growth Hormone Signaling\",\n   \"Tight Junction Signaling\")\ncnet \u003c- mem2cnet(Mem[, custom_sets, ])\n\njam_igraph(spread_igraph_labels(cnet),\n   label_factor_l=list(nodeType=c(Gene=1, Set=1)),\n   use_shadowText=TRUE, vertex.label.font=2)\n```\n\nNote that this process is two-steps:\n\n1. Create the `cnet` network data.\n2. Plot using `jam_igraph()`.\n\n## `CnetCluster()`\n\nA \"Cnet cluster\" network displays the pathways only in one pathway\ncluster. It is not used very often, and typically is helpful when\nthere might be different sub-networks within one cluster.\n\n```{r cnet-cluster-show, eval=FALSE}\nCnetCluster(Mpf, cluster=\"C\")\n```\n\n```{r cnet-cluster, echo=FALSE, fig.alt=\"Concept network (Cnet) showing all pathways from the pathway cluster 'C'.\"}\nCnetCluster(Mpf, cluster=\"C\",\n   vertex.label.font=2, use_shadowText=TRUE)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmw86069%2Fmultienrichjam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjmw86069%2Fmultienrichjam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjmw86069%2Fmultienrichjam/lists"}