├── .Rbuildignore ├── .Rinstignore ├── .bumpversion.toml ├── .github ├── CODE_OF_CONDUCT.md ├── ISSUE_TEMPLATE │ ├── oncoenrichr-bug-report.md │ └── oncoenrichr-feature-request.md └── workflows │ └── pkgdown.yaml ├── DESCRIPTION ├── LICENSE ├── NAMESPACE ├── R ├── cell_tissue.R ├── data.R ├── disease_drug.R ├── enrich.R ├── gene_fitness.R ├── ligand_receptor.R ├── onco_enrichr.R ├── ppi.R ├── prognostic.R ├── protein_complex.R ├── subcell.R ├── synthetic_lethality.R ├── sysdata.rda ├── tcga.R ├── tf_targets.R ├── unknown_function.R └── utils.R ├── README.md ├── data ├── cp_output_cols.rda └── tissue_colors.rda ├── data_processing_code ├── README.md ├── RELEASE_NOTES.txt ├── data_raw.R └── data_utility_functions.R ├── docker ├── Dockerfile ├── buildDocker.sh ├── oncoenrichr_wrapper.xml └── renv.lock ├── inst ├── CITATION ├── bibliography.bib ├── extdata │ ├── logo.png │ └── myc_data.csv ├── favicon-16x16.png └── templates │ ├── favicon-16x16.png │ ├── index_quarto.qmd │ ├── quarto │ ├── _aberration.qmd │ ├── _cancer_association.qmd │ ├── _cancer_hallmark_association.qmd │ ├── _cell_tissue.qmd │ ├── _coexpression.qmd │ ├── _documentation_workflow.qmd │ ├── _drug_target_association.qmd │ ├── _fitness_lof.qmd │ ├── _functional_enrichment.qmd │ ├── _functional_enrichment_invalid.qmd │ ├── _ligand_receptor.qmd │ ├── _ppi.qmd │ ├── _prognosis_survival.qmd │ ├── _project_background.qmd │ ├── _protein_complex.qmd │ ├── _protein_domain.qmd │ ├── _query_verification.qmd │ ├── _regulatory_interactions.qmd │ ├── _subcell_comp.qmd │ ├── _synthetic_lethality.qmd │ └── _unknown_function.qmd │ └── rmarkdown │ ├── _aberration.Rmd │ ├── _cancer_association.Rmd │ ├── _cancer_hallmark_association.Rmd │ ├── _cell_tissue.Rmd │ ├── _coexpression.Rmd │ ├── _disclaimer.md │ ├── _documentation_workflow.Rmd │ ├── _drug_target_association.Rmd │ ├── _fitness_lof.Rmd │ ├── _functional_enrichment.Rmd │ ├── _functional_enrichment_invalid.Rmd │ ├── _header.html │ ├── _ligand_receptor.Rmd │ ├── _ppi.Rmd │ ├── _prognosis_survival.Rmd │ ├── _project_background.Rmd │ ├── _protein_complex.Rmd │ ├── _protein_domain.Rmd │ ├── _query_verification.Rmd │ ├── _regulatory_interactions.Rmd │ ├── _site.yml │ ├── _subcell_comp.Rmd │ ├── _synthetic_lethality.Rmd │ ├── _unknown_function.Rmd │ └── index.Rmd ├── man ├── cancer_association_rank.Rd ├── cp_output_cols.Rd ├── figures │ ├── can-cell.png │ ├── elixir_norway.png │ ├── logo.png │ ├── oncoenrichr_overview.png │ └── oncoenrichr_slideshow.gif ├── init_report.Rd ├── load_db.Rd ├── onco_enrich.Rd ├── tidyeval.Rd ├── tissue_colors.Rd ├── validate_db.Rd ├── validate_db_df.Rd └── write.Rd ├── oncoEnrichR.Rproj ├── pkgdown ├── .DS_Store ├── _pkgdown.yml ├── assets │ ├── .DS_Store │ └── img │ │ ├── can-cell.png │ │ ├── elixir_norway.png │ │ ├── oncoenrichr_overview.png │ │ ├── oncoenrichr_overview2.png │ │ └── oncoenrichr_slideshow2.gif ├── favicon │ ├── apple-touch-icon-120x120.png │ ├── apple-touch-icon-152x152.png │ ├── apple-touch-icon-180x180.png │ ├── apple-touch-icon-60x60.png │ ├── apple-touch-icon-76x76.png │ ├── apple-touch-icon.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ └── favicon.ico └── index.md ├── renv.lock ├── tests ├── testthat.R └── testthat │ ├── test_complex.R │ ├── test_disease_drug.R │ ├── test_enrich.R │ ├── test_fitness.R │ ├── test_ligandreceptor.R │ ├── test_oncoenrichr.R │ ├── test_ppi.R │ ├── test_prognostic_assocs.R │ ├── test_subcell.R │ ├── test_tcga.R │ ├── test_tf_target.R │ └── test_utils.R └── vignettes ├── CHANGELOG.Rmd ├── annotation_resources.Rmd ├── cancer_gene_rank.Rmd ├── input.Rmd ├── installation.Rmd ├── module_screenshots ├── .DS_Store ├── aberration_I.jpg ├── aberration_II.jpg ├── aberration_III.jpg ├── aberration_IV.jpg ├── cancer_association_I.jpg ├── cancer_association_II.jpg ├── cancer_hallmarks.jpg ├── cell_tissue_I.jpg ├── cell_tissue_II.jpg ├── drug_I.jpg ├── drug_II.jpg ├── enrichment_I.jpg ├── enrichment_II.jpg ├── excel.jpg ├── fitness_I.jpg ├── fitness_II.jpg ├── oncoEnrichR_SuppFigure1.png ├── ppi_I.jpg ├── ppi_II.jpg ├── prognostic_I.jpg ├── prognostic_II.jpg ├── protein_complex.jpg ├── protein_domains.jpg ├── query_verification.jpg ├── regulatory_I.jpg ├── regulatory_II.jpg ├── subcell_I.jpg ├── subcell_II.jpg ├── synthetic_lethality.jpg ├── tumor_coexpression.jpg └── unknown_function.jpg ├── output.Rmd └── running.Rmd /.Rbuildignore: -------------------------------------------------------------------------------- 1 | ^renv$ 2 | ^renv\.lock$ 3 | ^.*\.Rproj$ 4 | ^\.Rproj\.user$ 5 | ^data-raw$ 6 | ^docs$ 7 | ^docker$ 8 | ^\.github$ 9 | ^_pkgdown.yml$ 10 | ^omnipathr-log$ 11 | ^db$ 12 | ^_pkgdown\.yml$ 13 | ^pkgdown$ 14 | .bumpversion.cfg 15 | data_processing_code 16 | #inst/internal_db 17 | -------------------------------------------------------------------------------- /.Rinstignore: -------------------------------------------------------------------------------- 1 | #internal_db/oeDB.rda 2 | ^db 3 | ^docker 4 | ^maf 5 | -------------------------------------------------------------------------------- /.bumpversion.toml: -------------------------------------------------------------------------------- 1 | [tool.bumpversion] 2 | current_version = "1.5.3" 3 | search = "{current_version}" 4 | replace = "{new_version}" 5 | message = "Bump version: {current_version} → {new_version}" 6 | regex = false 7 | ignore_missing_version = false 8 | ignore_missing_files = false 9 | commit = true 10 | parse = """(?x) 11 | (?P0|[1-9]\\d*)\\. 12 | (?P0|[1-9]\\d*)\\. 13 | (?P0|[1-9]\\d*) 14 | (?:\\.(?P\\d+))? 15 | """ 16 | 17 | serialize = [ 18 | "{major}.{minor}.{patch}.{dev}", 19 | "{major}.{minor}.{patch}", 20 | ] 21 | 22 | [[tool.bumpversion.files]] 23 | filename = "DESCRIPTION" 24 | search = "Version: {current_version}" 25 | replace = "Version: {new_version}" 26 | 27 | [[tool.bumpversion.files]] 28 | filename = "README.md" 29 | search = "2F{current_version}" 30 | replace = "2F{new_version}" 31 | 32 | [[tool.bumpversion.files]] 33 | filename = "pkgdown/index.md" 34 | search = "2F{current_version}" 35 | replace = "2F{new_version}" 36 | 37 | [[tool.bumpversion.files]] 38 | filename = "vignettes/installation.Rmd" 39 | search = "{current_version}" 40 | replace = "{new_version}" 41 | 42 | [[tool.bumpversion.files]] 43 | filename = ".github/workflows/pkgdown.yaml" 44 | search = "VERSION: '{current_version}'" 45 | replace = "VERSION: '{new_version}'" 46 | 47 | -------------------------------------------------------------------------------- /.github/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Code of Conduct 2 | 3 | As contributors and maintainers of this project, we pledge to respect all people who 4 | contribute through reporting issues, posting feature requests, updating documentation, 5 | submitting pull requests or patches, and other activities. 6 | 7 | We are committed to making participation in this project a harassment-free experience for 8 | everyone, regardless of level of experience, gender, gender identity and expression, 9 | sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion. 10 | 11 | Examples of unacceptable behavior by participants include the use of sexual language or 12 | imagery, derogatory comments or personal attacks, trolling, public or private harassment, 13 | insults, or other unprofessional conduct. 14 | 15 | Project maintainers have the right and responsibility to remove, edit, or reject comments, 16 | commits, code, wiki edits, issues, and other contributions that are not aligned to this 17 | Code of Conduct. Project maintainers who do not follow the Code of Conduct may be removed 18 | from the project team. 19 | 20 | Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by 21 | opening an issue or contacting one or more of the project maintainers. 22 | 23 | This Code of Conduct is adapted from the Contributor Covenant 24 | (http://contributor-covenant.org), version 1.0.0, available at 25 | http://contributor-covenant.org/version/1/0/0/ 26 | 27 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/oncoenrichr-bug-report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: oncoEnrichR bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | *Please also provide* 14 | 15 | 1. The version of *oncoEnrichR* used 16 | 2. The queryset used (gene identifiers) 17 | 3. The complete set options (explicitly) set when running *oncoEnrichR* 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/oncoenrichr-feature-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: oncoEnrichR feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /.github/workflows/pkgdown.yaml: -------------------------------------------------------------------------------- 1 | # Workflow derived from https://github.com/r-lib/actions/blob/v2-branch/examples/pkgdown.yaml 2 | # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help 3 | on: 4 | push: 5 | branches: [main, master, dev] 6 | release: 7 | types: [published] 8 | workflow_dispatch: 9 | 10 | env: 11 | VERSION: '1.5.3' #versioned by bump2version 12 | 13 | name: pkgdown 14 | 15 | jobs: 16 | pkgdown: 17 | runs-on: ubuntu-latest 18 | if: "startsWith(github.event.head_commit.message, 'Bump version:')" 19 | env: 20 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 21 | steps: 22 | - uses: actions/checkout@v3 23 | 24 | - uses: r-lib/actions/setup-pandoc@v2 25 | 26 | - uses: r-lib/actions/setup-r@v2 27 | with: 28 | use-public-rspm: true 29 | 30 | - uses: r-lib/actions/setup-r-dependencies@v2 31 | with: 32 | extra-packages: any::pkgdown, local::. 33 | needs: website 34 | 35 | - name: Deploy package 36 | run: | 37 | git config --local user.name "$GITHUB_ACTOR" 38 | git config --local user.email "$GITHUB_ACTOR@users.noreply.github.com" 39 | Rscript -e 'pkgdown::deploy_to_branch(new_process = FALSE, install = FALSE)' 40 | -------------------------------------------------------------------------------- /DESCRIPTION: -------------------------------------------------------------------------------- 1 | Package: oncoEnrichR 2 | Type: Package 3 | Title: Cancer-dedicated gene set interpretation 4 | Version: 1.5.3 5 | Authors@R: person(given = "Sigve", family = "Nakken", role = c("aut", "cre"), 6 | email = "sigven@ifi.uio.no", 7 | comment = c(ORCID = "0000-0001-8468-2050")) 8 | Maintainer: Sigve Nakken 9 | URL: https://sigven.github.io/oncoEnrichR 10 | BugReports: https://github.com/sigven/oncoEnrichR/issues 11 | Description: oncoEnrichR performs annotation and prioritization of genesets 12 | discovered from high-throughput experiments within cancer biology. The tool 13 | queries a number of high-quality resources, including DepMap/Project Score 14 | (cellular fitness in genome-scale drop-out screens), Open Targets Platform 15 | (comprehensive target-drug associations, cancer hallmark evidence and 16 | target-tumor type associations), TCGA (genetic aberrations and gene co-expression 17 | patterns in human tumor samples), STRING/BioGRID (protein-protein interaction networks), 18 | curated protein complexes (CORUM/Compleat/ComplexPortal/hu.MAP2), 19 | COMPARTMENTS (subcellular compartments), 20 | Human Protein Atlas (prognostic gene expression associations), CellChatDB (ligand-receptor interactions), 21 | DoRothEA (regulatory interactions), synthetic lethality predictions, 22 | and Gene Ontology/MSigDB/REACTOME/KEGG/NetPath 23 | (functional enrichment/over-representation analysis with respect to gene 24 | function and cellular pathways). The package outputs both an interactive HTML 25 | report and an Excel workbook in which the user can interrogate the various 26 | types of annotations and analyses performed with the query geneset. 27 | Depends: 28 | R (>= 4.1) 29 | biocViews: 30 | Imports: dplyr, 31 | assertthat, 32 | assertable, 33 | clusterProfiler (>= 4.13), 34 | DT, 35 | gganatogram, 36 | ggpubr, 37 | openxlsx, 38 | stringr, 39 | tidyr, 40 | readr, 41 | googledrive, 42 | visNetwork, 43 | quarto, 44 | plotly, 45 | jsonlite, 46 | forcats, 47 | org.Hs.eg.db, 48 | igraph (>= 2.0), 49 | lgr, 50 | maftools, 51 | rlang, 52 | textclean (>= 0.9.3) 53 | Suggests: 54 | testthat (>= 3.1.0), 55 | knitr, 56 | rmarkdown 57 | VignetteBuilder: knitr 58 | License: MIT + file LICENSE 59 | Encoding: UTF-8 60 | Remotes: jespermaag/gganatogram 61 | RoxygenNote: 7.3.2 62 | Roxygen: list(markdown = TRUE) 63 | Config/testthat/edition: 3 64 | LazyData: true 65 | SystemRequirements: Quarto command line tool 66 | (). 67 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Sigve Nakken 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /NAMESPACE: -------------------------------------------------------------------------------- 1 | # Generated by roxygen2: do not edit by hand 2 | 3 | export(cancer_association_rank) 4 | export(load_db) 5 | export(onco_enrich) 6 | export(write) 7 | importFrom(rlang,":=") 8 | importFrom(rlang,.data) 9 | -------------------------------------------------------------------------------- /R/data.R: -------------------------------------------------------------------------------- 1 | #' Colors for tissue types in the gene fitness plot section in oncoEnrichR 2 | #' 3 | #' 4 | #' @format A character vector of 24 color codes 5 | #' 6 | "tissue_colors" 7 | 8 | #' Format (columns) for clusterProfiler enrichment output 9 | #' 10 | #' 11 | #' @format A character vector of 23 variables 12 | #' 13 | "cp_output_cols" 14 | -------------------------------------------------------------------------------- /R/gene_fitness.R: -------------------------------------------------------------------------------- 1 | get_fitness_lof_scores <- function(qgenes, 2 | qsource = "symbol", 3 | depmapdb = NULL, 4 | max_fitness_score = -2) { 5 | 6 | lgr::lgr$appenders$console$set_layout( 7 | lgr::LayoutFormat$new(timestamp_fmt = "%Y-%m-%d %T")) 8 | 9 | lgr::lgr$info( paste0("DepMap/Project Score: retrieval of genes ", 10 | "associated with loss-of-fitness in cancer cell lines")) 11 | stopifnot(!is.null(qgenes)) 12 | stopifnot(is.character(qgenes)) 13 | stopifnot(!is.null(depmapdb)) 14 | stopifnot(!is.null(depmapdb[['fitness_scores']])) 15 | validate_db_df(depmapdb[['fitness_scores']], 16 | dbtype = "fitness_scores") 17 | 18 | target_genes <- data.frame("symbol" = qgenes, stringsAsFactors = F) 19 | 20 | fitness_lof_results <- list() 21 | fitness_lof_results[["targets"]] <- data.frame() 22 | fitness_lof_results[["n_targets"]] <- 0 23 | 24 | fitness_lof_hits <- as.data.frame( 25 | target_genes |> 26 | dplyr::inner_join( 27 | depmapdb[['fitness_scores']], 28 | by = c("symbol"), relationship = "many-to-many") |> 29 | dplyr::arrange(.data$scaled_BF) 30 | ) 31 | if (nrow(fitness_lof_hits) > 0) { 32 | 33 | fitness_lof_results[["targets"]] <- as.data.frame( 34 | fitness_lof_hits |> 35 | dplyr::mutate( 36 | model_link_ps = paste0( 37 | "", 39 | stringr::str_replace_all( 40 | .data$model_name,"\\.","-"),"")) |> 41 | dplyr::mutate( 42 | symbol_link_ps = paste0( 43 | "", 45 | .data$symbol,"")) |> 46 | dplyr::select(c("symbol", 47 | "symbol_link_ps", 48 | "model_name", 49 | "tissue", 50 | "model_link_ps", 51 | "cancer_type", 52 | "sample_site", 53 | "tissue_status", 54 | "scaled_BF")) |> 55 | dplyr::filter(.data$scaled_BF <= max_fitness_score) 56 | ) 57 | 58 | gene_pr_tissue_stats <- as.data.frame( 59 | fitness_lof_results[["targets"]] |> 60 | dplyr::group_by(.data$symbol, .data$tissue) |> 61 | dplyr::summarise(n_gene_tissue = dplyr::n(), 62 | .groups = "drop") 63 | ) 64 | 65 | gene_stats <- as.data.frame( 66 | gene_pr_tissue_stats |> 67 | dplyr::group_by(.data$symbol) |> 68 | dplyr::summarise(n_gene = sum(.data$n_gene_tissue), 69 | .groups = "drop") 70 | ) 71 | 72 | fitness_lof_results[['targets']] <- fitness_lof_results[['targets']] |> 73 | dplyr::left_join(gene_pr_tissue_stats, 74 | by = c("symbol","tissue"), relationship = "many-to-many") |> 75 | dplyr::left_join(gene_stats, by = "symbol", relationship = "many-to-many") |> 76 | dplyr::select(c("symbol", 77 | "symbol_link_ps", 78 | "model_name", 79 | "scaled_BF", 80 | "tissue", 81 | "model_link_ps", 82 | "cancer_type", 83 | "sample_site", 84 | "tissue_status", 85 | "n_gene_tissue", 86 | "n_gene")) 87 | 88 | fitness_lof_results[["n_targets"]] <- nrow(gene_stats) 89 | } 90 | 91 | return(fitness_lof_results) 92 | } 93 | 94 | get_target_priority_scores <- 95 | function(qgenes, 96 | qsource = "symbol", 97 | depmapdb = NULL) { 98 | 99 | lgr::lgr$appenders$console$set_layout( 100 | lgr::LayoutFormat$new(timestamp_fmt = "%Y-%m-%d %T")) 101 | 102 | lgr::lgr$info( paste0("DepMap/Project Score: retrieval of ", 103 | "prioritized targets from loss-of-fitness screens ", 104 | "in cancer cell lines")) 105 | stopifnot(!is.null(qgenes)) 106 | stopifnot(is.character(qgenes)) 107 | stopifnot(!is.null(depmapdb)) 108 | stopifnot(!is.null(depmapdb[['target_priority_scores']])) 109 | validate_db_df(depmapdb[['target_priority_scores']], 110 | dbtype = "target_priority_scores") 111 | 112 | target_genes <- data.frame("symbol" = qgenes, stringsAsFactors = F) 113 | 114 | prioritized_targets <- list() 115 | prioritized_targets[["targets"]] <- data.frame() 116 | prioritized_targets[["n_pri_targets"]] <- 0 117 | 118 | targets_crispr_priority <- as.data.frame( 119 | depmapdb[['target_priority_scores']] |> 120 | dplyr::inner_join(target_genes, by = c("symbol"), relationship = "many-to-many") 121 | ) 122 | 123 | prioritized_targets[["n_pri_targets"]] <- 124 | length(unique(targets_crispr_priority$symbol)) 125 | 126 | if (nrow(targets_crispr_priority) > 0) { 127 | 128 | prioritized_targets[["targets"]] <- as.data.frame( 129 | targets_crispr_priority |> 130 | dplyr::mutate(symbol = factor(.data$symbol, levels = 131 | levels(depmapdb[['target_priority_scores']]$symbol))) |> 132 | dplyr::arrange(dplyr::desc(.data$priority_score)) |> 133 | dplyr::select(c("symbol", 134 | "tumor_type", 135 | "priority_score")) 136 | 137 | ) 138 | } 139 | 140 | return(prioritized_targets) 141 | 142 | } 143 | 144 | -------------------------------------------------------------------------------- /R/ligand_receptor.R: -------------------------------------------------------------------------------- 1 | 2 | annotate_ligand_receptor_interactions <- function(qgenes, 3 | genedb = NULL, 4 | ligand_receptor_db = NULL, 5 | ligand_receptor_xref = NULL) { 6 | 7 | lgr::lgr$appenders$console$set_layout( 8 | lgr::LayoutFormat$new(timestamp_fmt = "%Y-%m-%d %T")) 9 | 10 | lgr::lgr$info( "CellChatDB: retrieval of ligand-receptor interactions") 11 | stopifnot(is.character(qgenes)) 12 | stopifnot(!is.null(genedb)) 13 | stopifnot(!is.null(ligand_receptor_db)) 14 | stopifnot(!is.null(ligand_receptor_xref)) 15 | validate_db_df(genedb, dbtype = "genedb") 16 | validate_db_df(ligand_receptor_db, dbtype = "ligand_receptor_db") 17 | validate_db_df(ligand_receptor_xref, dbtype = "ligand_receptor_xref") 18 | 19 | 20 | query_df <- data.frame("symbol" = qgenes, stringsAsFactors = F) 21 | 22 | all_query_ligand_receptors <- as.data.frame( 23 | ligand_receptor_xref |> 24 | dplyr::left_join( 25 | dplyr::filter( 26 | dplyr::select(genedb, 27 | c("entrezgene", 28 | "symbol")), 29 | !is.na(.data$symbol)), 30 | by = c("symbol"), relationship = "many-to-many") |> 31 | dplyr::filter(!is.na(.data$entrezgene)) |> 32 | dplyr::inner_join(query_df, by = "symbol", relationship = "many-to-many") 33 | ) 34 | 35 | query_hits <- list() 36 | query_hits[['ligand']] <- all_query_ligand_receptors |> 37 | dplyr::filter(class == "ligand") |> 38 | dplyr::select(c("interaction_id")) 39 | query_hits[['receptor']] <- all_query_ligand_receptors |> 40 | dplyr::filter(class == "receptor") |> 41 | dplyr::select(c("interaction_id")) 42 | 43 | valid_query_hits <- 44 | query_hits[['ligand']] |> 45 | dplyr::inner_join(query_hits[['receptor']], 46 | by = "interaction_id", relationship = "many-to-many") 47 | 48 | ligand_receptor_results <- list() 49 | ligand_receptor_results[['cell_cell_contact']] <- 50 | data.frame() 51 | ligand_receptor_results[['secreted_signaling']] <- 52 | data.frame() 53 | ligand_receptor_results[['ecm_receptor']] <- 54 | data.frame() 55 | 56 | if (NROW(valid_query_hits) > 0) { 57 | ligand_receptor_results[['cell_cell_contact']] <- 58 | as.data.frame( 59 | ligand_receptor_db |> 60 | dplyr::filter(.data$annotation == "Cell-Cell Contact") |> 61 | dplyr::inner_join(valid_query_hits, 62 | by = "interaction_id", relationship = "many-to-many") 63 | ) |> 64 | dplyr::select(-c("interaction_id", 65 | "annotation", 66 | "interaction_members")) |> 67 | dplyr::distinct() 68 | 69 | ligand_receptor_results[['secreted_signaling']] <- 70 | as.data.frame( 71 | ligand_receptor_db |> 72 | dplyr::filter(.data$annotation == "Secreted Signaling") |> 73 | dplyr::inner_join(valid_query_hits, 74 | by = "interaction_id", relationship = "many-to-many") 75 | ) |> 76 | dplyr::select(-c("interaction_id", 77 | "annotation", 78 | "interaction_members")) |> 79 | dplyr::distinct() 80 | 81 | 82 | ligand_receptor_results[['ecm_receptor']] <- 83 | as.data.frame( 84 | ligand_receptor_db |> 85 | dplyr::filter(.data$annotation == "ECM-Receptor") |> 86 | dplyr::inner_join(valid_query_hits, 87 | by = "interaction_id", relationship = "many-to-many") 88 | ) |> 89 | dplyr::select(-c("interaction_id", 90 | "annotation", 91 | "interaction_members")) |> 92 | dplyr::distinct() 93 | 94 | } 95 | 96 | return(ligand_receptor_results) 97 | 98 | } 99 | -------------------------------------------------------------------------------- /R/subcell.R: -------------------------------------------------------------------------------- 1 | 2 | annotate_subcellular_compartments <- 3 | function(query_entrez, 4 | compartments_min_confidence = 3, 5 | compartments_min_channels = 1, 6 | show_cytosol = F, 7 | genedb = NULL, 8 | compartments = NULL, 9 | go_gganatogram_map = NULL) { 10 | 11 | stopifnot(!is.null(query_entrez)) 12 | stopifnot(is.integer(query_entrez)) 13 | stopifnot(!is.null(genedb)) 14 | stopifnot(!is.null(compartments)) 15 | stopifnot(!is.null(go_gganatogram_map)) 16 | stopifnot(is.numeric(compartments_min_confidence)) 17 | stopifnot(is.numeric(compartments_min_channels)) 18 | 19 | validate_db_df(genedb, dbtype = "genedb") 20 | validate_db_df(compartments, dbtype = "compartments") 21 | 22 | validate_db_df(go_gganatogram_map, dbtype = "go_gganatogram") 23 | 24 | lgr::lgr$info( "COMPARTMENTS: retrieval of subcellular compartments for target set") 25 | 26 | target_genes <- data.frame( 27 | 'entrezgene' = query_entrez, stringsAsFactors = F) |> 28 | dplyr::left_join( 29 | dplyr::select(genedb, 30 | c("symbol", 31 | "entrezgene", 32 | "genename")), 33 | by = c("entrezgene"), relationship = "many-to-many") 34 | 35 | target_compartments <- list() 36 | target_compartments[["all"]] <- data.frame() 37 | target_compartments[["grouped"]] <- data.frame() 38 | 39 | target_compartments_all <- as.data.frame( 40 | dplyr::inner_join( 41 | compartments, target_genes, by = c("entrezgene"), relationship = "many-to-many") |> 42 | dplyr::filter(!is.na(.data$symbol)) |> 43 | dplyr::filter(.data$confidence >= compartments_min_confidence) |> 44 | dplyr::mutate( 45 | channel_confidence = paste( 46 | .data$annotation_channel, 47 | .data$confidence, sep =":" 48 | ) 49 | ) |> 50 | dplyr::group_by( 51 | .data$entrezgene, 52 | .data$symbol, 53 | .data$genename, 54 | .data$go_id, 55 | .data$go_term 56 | ) |> 57 | dplyr::summarise( 58 | minimum_confidence = min(.data$confidence), 59 | supporting_channels = paste( 60 | sort(unique(.data$annotation_channel)), 61 | collapse ="|"), 62 | supporting_channels_confidence = paste( 63 | sort(unique(.data$channel_confidence)), 64 | collapse =", "), 65 | supporting_sources = paste( 66 | sort(unique(.data$annotation_source)), 67 | collapse = ", " 68 | ), 69 | .groups = "drop" 70 | ) |> 71 | dplyr::mutate( 72 | n_supporting_channels = stringr::str_count( 73 | .data$supporting_channels, "\\|") + 1 74 | ) |> 75 | dplyr::filter( 76 | .data$n_supporting_channels >= compartments_min_channels 77 | ) |> 78 | dplyr::arrange( 79 | .data$symbol, 80 | dplyr::desc(.data$minimum_confidence), 81 | dplyr::desc(.data$n_supporting_channels) 82 | ) 83 | ) 84 | 85 | if (nrow(target_compartments_all) > 0) { 86 | target_compartments_all <- as.data.frame( 87 | target_compartments_all |> 88 | dplyr::arrange( 89 | dplyr::desc(.data$minimum_confidence), 90 | .data$symbol) |> 91 | dplyr::left_join( 92 | go_gganatogram_map, 93 | by = "go_id", relationship = "many-to-many") |> 94 | dplyr::mutate( 95 | genelink = 96 | paste0("", .data$symbol, "")) |> 98 | dplyr::mutate( 99 | compartment = 100 | paste0("", .data$go_term, "")) |> 102 | utils::head(2500) 103 | ) 104 | 105 | target_compartments[["grouped"]] <- as.data.frame( 106 | target_compartments_all |> 107 | dplyr::group_by(.data$go_id, .data$go_term, .data$compartment) |> 108 | dplyr::summarise( 109 | targets = paste(unique(.data$symbol), 110 | collapse = ", "), 111 | targetlinks = paste(unique(.data$genelink), 112 | collapse = ", "), 113 | n = dplyr::n()) |> 114 | dplyr::arrange(dplyr::desc(.data$n)) |> 115 | dplyr::ungroup() |> 116 | dplyr::select(-c("go_id", "go_term")) 117 | ) 118 | 119 | target_compartments[["all"]] <- target_compartments_all |> 120 | dplyr::select(-c("entrezgene", "go_id", 121 | "go_term", "genelink")) |> 122 | dplyr::select(c("symbol", 123 | "genename", 124 | "compartment"), 125 | dplyr::everything()) 126 | 127 | n_genes <- length(unique(target_compartments_all$symbol)) 128 | target_compartments[["anatogram"]] <- 129 | gganatogram::cell_key$cell |> 130 | dplyr::select(-c("value")) 131 | 132 | anatogram_values <- as.data.frame( 133 | target_compartments_all |> 134 | dplyr::select(c("symbol", "ggcompartment")) |> 135 | dplyr::filter(!is.na(.data$ggcompartment)) |> 136 | dplyr::distinct() |> 137 | dplyr::group_by(.data$ggcompartment) |> 138 | dplyr::summarise(n_comp = dplyr::n()) |> 139 | dplyr::ungroup() |> 140 | dplyr::mutate(value = round((.data$n_comp / n_genes) * 100, digits = 4)) |> 141 | dplyr::rename(organ = "ggcompartment") |> 142 | dplyr::select(c("organ","value")) 143 | ) 144 | 145 | target_compartments[["anatogram"]] <- 146 | target_compartments[["anatogram"]] |> 147 | dplyr::left_join(anatogram_values, by = "organ", relationship = "many-to-many") |> 148 | dplyr::mutate(value = dplyr::if_else( 149 | is.na(.data$value), 0 , as.numeric(.data$value))) 150 | 151 | 152 | } 153 | return(target_compartments) 154 | 155 | 156 | } 157 | -------------------------------------------------------------------------------- /R/synthetic_lethality.R: -------------------------------------------------------------------------------- 1 | annotate_synleth_paralog_pairs <- function( 2 | qgenes, 3 | genedb = NULL, 4 | slparalogdb = NULL) { 5 | 6 | lgr::lgr$appenders$console$set_layout( 7 | lgr::LayoutFormat$new(timestamp_fmt = "%Y-%m-%d %T")) 8 | 9 | stopifnot(is.character(qgenes)) 10 | stopifnot(!is.null(genedb)) 11 | stopifnot(is.data.frame(slparalogdb)) 12 | validate_db_df(slparalogdb, dbtype = "slparalog") 13 | validate_db_df(genedb, dbtype = "genedb") 14 | 15 | lgr::lgr$info( 16 | paste0("Annotation of membership in predicted synthetic lethal interactions - De Kegel et al., Cell Systems, 2021")) 17 | 18 | 19 | paralog_synleth_interactions <- list() 20 | paralog_synleth_interactions[['both_in_pair']] <- data.frame() 21 | paralog_synleth_interactions[['single_pair_member']] <- data.frame() 22 | 23 | targetA_interactions <- as.data.frame( 24 | data.frame("target" = qgenes, stringsAsFactors = F) |> 25 | dplyr::inner_join(slparalogdb, 26 | by = c("target" = "symbol_A1"), relationship = "many-to-many") |> 27 | dplyr::rename(gene_A = "target") |> 28 | dplyr::left_join( 29 | dplyr::select(genedb, c("entrezgene", "genename")), 30 | by = c("entrezgene_A1" = "entrezgene"), relationship = "many-to-many" 31 | ) |> 32 | dplyr::rename(genename_A = "genename") |> 33 | dplyr::left_join( 34 | dplyr::select(genedb, c("entrezgene", "genename")), 35 | by = c("entrezgene_A2" = "entrezgene"), relationship = "many-to-many" 36 | ) |> 37 | dplyr::rename(genename_B = "genename", 38 | gene_B = "symbol_A2") |> 39 | dplyr::select(-c("entrezgene_A1", "entrezgene_A2")) |> 40 | dplyr::select(c("gene_A", 41 | "genename_A", 42 | "gene_B", 43 | "genename_B"), 44 | dplyr::everything()) |> 45 | dplyr::arrange(dplyr::desc(.data$prediction_score)) 46 | ) 47 | 48 | targetB_interactions <- as.data.frame( 49 | data.frame("target" = qgenes, stringsAsFactors = F) |> 50 | dplyr::inner_join(slparalogdb, 51 | by = c("target" = "symbol_A2"), relationship = "many-to-many") |> 52 | dplyr::rename(gene_B = "target") |> 53 | dplyr::left_join( 54 | dplyr::select(genedb, c("entrezgene", "genename")), 55 | by = c("entrezgene_A2" = "entrezgene"), relationship = "many-to-many" 56 | ) |> 57 | dplyr::rename(genename_B = "genename") |> 58 | dplyr::left_join( 59 | dplyr::select(genedb, c("entrezgene", "genename")), 60 | by = c("entrezgene_A1" = "entrezgene"), relationship = "many-to-many" 61 | ) |> 62 | dplyr::rename(genename_A = "genename", 63 | gene_A = "symbol_A1") |> 64 | dplyr::select(-c("entrezgene_A1", "entrezgene_A2")) |> 65 | dplyr::select(c("gene_A", 66 | "genename_A", 67 | "gene_B", 68 | "genename_B"), 69 | dplyr::everything()) |> 70 | dplyr::arrange(dplyr::desc(.data$prediction_score)) 71 | ) 72 | 73 | if (NROW(targetB_interactions) > 0 & 74 | NROW(targetA_interactions) > 0) { 75 | paralog_synleth_interactions[['both_in_pair']] <- as.data.frame( 76 | dplyr::select(targetA_interactions, 77 | c("gene_A", 78 | "gene_B")) |> 79 | dplyr::inner_join(targetB_interactions, 80 | by = c("gene_A","gene_B"), relationship = "many-to-many") 81 | ) 82 | 83 | if (NROW(paralog_synleth_interactions[['both_in_pair']]) > 0) { 84 | 85 | targetA_interactions <- targetA_interactions |> 86 | dplyr::anti_join(paralog_synleth_interactions[['both_in_pair']], 87 | by = c("gene_A", "gene_B")) 88 | 89 | targetB_interactions <- targetB_interactions |> 90 | dplyr::anti_join(paralog_synleth_interactions[['both_in_pair']], 91 | by = c("gene_A", "gene_B")) |> 92 | dplyr::rename(tmp_symbol = "gene_A", 93 | tmp_genename = "genename_A") |> 94 | dplyr::mutate(gene_A = .data$gene_B, 95 | genename_A = .data$genename_B, 96 | gene_B = .data$tmp_symbol, 97 | genename_B = .data$tmp_genename) |> 98 | dplyr::select(-c("tmp_symbol", "tmp_genename")) |> 99 | dplyr::select(c("gene_A", 100 | "genename_A", 101 | "gene_B", 102 | "genename_B"), 103 | dplyr::everything()) 104 | 105 | paralog_synleth_interactions[['single_pair_member']] <- 106 | targetA_interactions |> 107 | dplyr::bind_rows(targetB_interactions) |> 108 | dplyr::arrange(dplyr::desc(.data$prediction_score)) 109 | 110 | } 111 | } else { 112 | 113 | if (NROW(targetB_interactions) > 0) { 114 | paralog_synleth_interactions[['single_pair_member']] <- 115 | targetB_interactions |> 116 | dplyr::rename(tmp_symbol = "gene_A", 117 | tmp_genename = "genename_A") |> 118 | dplyr::mutate(gene_A = .data$gene_B, 119 | genename_A = .data$genename_B, 120 | gene_B = .data$tmp_symbol, 121 | genename_B = .data$tmp_genename) |> 122 | dplyr::select(-c("tmp_symbol", "tmp_genename")) |> 123 | dplyr::select(c("gene_A", 124 | "genename_A", 125 | "gene_B", 126 | "genename_B"), 127 | dplyr::everything()) |> 128 | dplyr::arrange(dplyr::desc(.data$prediction_score)) 129 | } 130 | if (NROW(targetA_interactions) > 0) { 131 | paralog_synleth_interactions[['single_pair_member']] <- 132 | targetA_interactions |> 133 | dplyr::arrange(dplyr::desc(.data$prediction_score)) 134 | } 135 | 136 | } 137 | 138 | rm(targetA_interactions) 139 | rm(targetB_interactions) 140 | 141 | lgr::lgr$info( 142 | paste0("Found n = ", NROW(paralog_synleth_interactions[['both_in_pair']]), 143 | " predicted interactions of synthetic lethality for which both members are present in the query set")) 144 | lgr::lgr$info( 145 | paste0("Found n = ", NROW(paralog_synleth_interactions[['single_pair_member']]), 146 | " predicted interactions of synthetic lethality for whih a single member is present in the query set")) 147 | 148 | return(paralog_synleth_interactions) 149 | 150 | } 151 | -------------------------------------------------------------------------------- /R/sysdata.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/R/sysdata.rda -------------------------------------------------------------------------------- /R/unknown_function.R: -------------------------------------------------------------------------------- 1 | 2 | get_genes_unknown_function <- function(qgenes = NULL, 3 | genedb = NULL) { 4 | 5 | lgr::lgr$appenders$console$set_layout( 6 | lgr::LayoutFormat$new(timestamp_fmt = "%Y-%m-%d %T")) 7 | 8 | lgr::lgr$info( "GO/NCBI/UniProt: Retrieval of genes with unknown/poorly defined function in target set") 9 | stopifnot(is.character(qgenes)) 10 | stopifnot(!is.null(genedb)) 11 | validate_db_df(genedb, dbtype = "genedb") 12 | 13 | target_genes <- data.frame("symbol" = qgenes, stringsAsFactors = F) 14 | poorly_defined_genes <- genedb |> 15 | dplyr::filter(!is.na(.data$unknown_function_rank)) |> 16 | dplyr::select(c("symbol", 17 | "genename", 18 | "num_go_terms", 19 | "go_term_link", 20 | "gene_summary", 21 | "unknown_function_rank", 22 | "has_gene_summary")) 23 | 24 | 25 | results <- data.frame() 26 | pct <- 0 27 | if (nrow(target_genes) > 0) { 28 | results <- poorly_defined_genes |> 29 | dplyr::inner_join( 30 | target_genes, by = "symbol", relationship = "many-to-many") |> 31 | dplyr::arrange(.data$unknown_function_rank) |> 32 | dplyr::filter(.data$unknown_function_rank <= 6) 33 | 34 | pct <- round(as.numeric(NROW(results) / NROW(target_genes)) * 100, digits = 2) 35 | } 36 | 37 | lgr::lgr$info( paste0("Detected n = ", nrow(results), 38 | " (", pct,"%) target genes with unknown/poorly defined function")) 39 | return(results) 40 | 41 | } 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # oncoEnrichR 2 | 3 | **oncoEnrichR** is an R package for functional interrogation of human gene lists in the context of cancer. The package leverages an extensive amount of prior molecular knowledge that allows for biological interpretation along multiple dimensions, both at the systems level and at the level of individual genes. 4 | 5 | Web-based access to **oncoEnrichR** is available at [**https://oncotools.elixir.no**](https://oncotools.elixir.no/tool_runner?tool_id=toolshed.g2.bx.psu.edu%2Frepos%2Fsigven%2Foncoenrichr%2Foncoenrichr_wrapper%2F1.5.3) 6 | 7 | **oncoEnrichR** is primarily intended for exploratory analysis and prioritization of a gene list (referred to here as **query set**) from high-throughput cancer biology experiments, e.g. CRISPR screens, protein proximity labeling, or gene expression profiling. The tool queries a number of high-quality data resources in order to assemble cancer-relevant annotations and analyses in an interactive report. 8 | 9 |
10 | 11 | 12 | 13 | ## Getting started 14 | 15 | - [What types of questions can be answered by oncoEnrichR?](https://sigven.github.io/oncoEnrichR/index.html#questions-addressed-by-oncoenrichr) 16 | - [Output views from oncoEnrichR](https://sigven.github.io/oncoEnrichR/articles/output.html) 17 | - [Installation instructions](https://sigven.github.io/oncoEnrichR/articles/installation.html) 18 | - [Running instructions](https://sigven.github.io/oncoEnrichR/articles/running.html) 19 | - [Annotation resources available in oncoEnrichR](https://sigven.github.io/oncoEnrichR/articles/annotation_resources.html) 20 | 21 | ## News 22 | 23 | - February 27th 2025: [**1.5.3 release**](https://sigven.github.io/oncoEnrichR/articles/CHANGELOG.html#version-1-5-3) 24 | - September 9th 2024: [**1.5.2 release**](https://sigven.github.io/oncoEnrichR/articles/CHANGELOG.html#version-1-5-2) 25 | - August 3rd 2024: [**1.5.1 release**](https://sigven.github.io/oncoEnrichR/articles/CHANGELOG.html#version-1-5-1) 26 | - August 16th 2023: [**1.4.2 release**](https://sigven.github.io/oncoEnrichR/articles/CHANGELOG.html#version-1-4-2) 27 | 28 | ## Example report 29 | 30 | DOI 31 | 32 | ## Citation 33 | 34 | If you use oncoEnrichR, please cite the following publication: 35 | 36 | Sigve Nakken, Sveinung Gundersen, Fabian L. M. Bernal, Dimitris Polychronopoulos, Eivind Hovig, and Jørgen Wesche. **Comprehensive interrogation of gene lists from genome-scale cancer screens with oncoEnrichR** (2023). Int J Cancer. [doi:10.1002/ijc.34666](https://doi.org/10.1002/ijc.34666) 37 | 38 | ### Contact 39 | 40 | sigven AT ifi.uio.no 41 | 42 | ### Funding and Collaboration 43 | 44 | oncoEnrichR is supported by the [Centre for Cancer Cell Reprogramming](https://www.med.uio.no/cancell/english/) at the [University of Oslo](https://www.uio.no)/[Oslo University Hospital](https://radium.no), and [Elixir Norway (Oslo node)](https://elixir.no/organization/organisation/elixir-uio). 45 | 46 |

47 | 48 |

49 | 50 | 51 | 52 |         53 | 54 | 55 | 56 |

57 | -------------------------------------------------------------------------------- /data/cp_output_cols.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/data/cp_output_cols.rda -------------------------------------------------------------------------------- /data/tissue_colors.rda: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/data/tissue_colors.rda -------------------------------------------------------------------------------- /data_processing_code/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## OncoEnrichR data backend 3 | 4 | * Main script to produce the data backend of oncoEnrichR is found in `data_raw.R` 5 | * All supporting functions to parse and pre-process data are found in `data_utility_functions.R` 6 | * The collection of raw datasets are deposited on [Zenodo](https://doi.org/10.5281/zenodo.6631377) 7 | -------------------------------------------------------------------------------- /data_processing_code/RELEASE_NOTES.txt: -------------------------------------------------------------------------------- 1 | ##ONCOENRICHR_DB_VERSION = 20250227 2 | name url description version key resource_type license 3 | oncoEnrichR https://github.com/sigven/oncoEnrichR R package for functional interrogation of genesets in the context of cancer v1.5.3 oncoEnrichR software MIT 4 | clusterProfiler https://guangchuangyu.github.io/software/clusterProfiler/ A universal enrichment tool for interpreting omics data (R package) v4.14.4 clusterProfiler software Artistic-2.0 5 | OmnipathR https://omnipathdb.org/ Access to datasets on prior molecular knowledge: gene regulatory interactions, enzyme-PTM relationships, protein complexes, protein annotations etc. v3.14.0 omnipathr software MIT 6 | hu.MAP http://humap2.proteincomplexes.org/ Human Protein Complex Map v2.0 humap2 db CC0 1.0 7 | CORUM http://mips.helmholtz-muenchen.de/corum/ Largest and most comprehensive publicly available dataset of manually curated mammalian protein complexes v5.0 corum db CC-BY 4.0 8 | Compleat https://fgr.hms.harvard.edu/compleat Protein complex resource v1.0 compleat db Open Access 9 | ComplexPortal https://www.ebi.ac.uk/complexportal/home Manually curated, encyclopaedic resource of macromolecular complexes v1.0.2 complexportal db CC0 1.0 10 | dorothea https://saezlab.github.io/dorothea/ Gene set resource containing signed transcription factor (TF) - target interactions v1.14.1 dorothea db GPL v3.0 11 | phenOncoX https://github.com/sigven/phenOncoX Crossmapped phenotype ontologies for the oncology domain v0.8.4 phenOncoX software MIT 12 | STRING https://string-db.org Protein-protein interaction database v12.0 string db CC-BY 4.0 13 | BIOGRID https://thebiogrid.org/ Database of Protein, Genetic and Chemical Interactions v4.4.241 biogrid db MIT 14 | GENCODE https://www.gencodegenes.org/ High quality reference gene annotation and experimental validation v47 gencode db Open Access 15 | The Cancer Genome Atlas (TCGA) https://cancergenome.nih.gov Tumor gene expression and somatic DNA aberrations across a large cohort of tumor samples v41.0 (August 28th 2024) tcga db Open Access 16 | UniProt http://www.uniprot.org Comprehensive resource of protein sequence and functional information v2025_01 uniprot db CC-BY 4.0 17 | NetPath http://www.netpath.org Manually curated resource of signal transduction pathways in humans v1 (2010) netpath db Open Access 18 | EFO https://github.com/EBISPOT/efo Experimental Factor Ontology v3.75.0 efo db Apache 2.0 19 | DiseaseOntology https://github.com/DiseaseOntology Human Disease Ontology v2025-02-03 do db CC0 1.0 20 | COMPARTMENTS https://compartments.jensenlab.org/Search Subcellular localization database January 2025 compartments db CC-BY 4.0 21 | DepMap/ProjectScore https://depmap.org Integrated cancer dependency dataset from Wellcome Sanger Institute and Broad Institute, Pacini et al., Nat Commun., 2021 Sanger_V1/Broad_20Q2 depmap db CC-BY 4.0 22 | WikiPathways https://www.wikipathways.org A database of biological pathways maintained by and for the scientific community 20250210 wikipathway db CC0 1.0 23 | MSigDB http://software.broadinstitute.org/gsea/msigdb/index.jsp Molecular Signatures Database - collection of annotated gene sets August 2024 (MSigDB v2024.1.Hs) msigdb db CC-BY 4.0 24 | REACTOME https://reactome.org Manually curated and peer-reviewed pathway database v89 (MSigDB v2024.1.Hs) reactome db CC-BY 4.0 25 | CellChatDB http://www.cellchat.org/cellchatdb/ Multimeric ligand-receptor complexes v1 (2021) cellchatdb db GPL v3.0 26 | CellTalkDB http://tcm.zju.edu.cn/celltalkdb/ A manually curated database of literature-supported ligand-receptor interactions in human and mouse Nov 2020 celltalkdb db GPL v3.0 27 | GeneOntology https://geneontology.org Knowledgebase that contains the largest structural source of information on the functions of genes August 2024 (MSigDB v2024.1.Hs) go db CC-BY 4.0 28 | KEGG https://www.genome.jp/kegg/pathway.html Collection of manually drawn pathway maps representing our knowledge on the molecular interaction, reaction and relation networks 20250115 kegg db . 29 | IntOGen https://www.intogen.org/search A compendium of mutational cancer driver genes 2024-09-20 intogen db CC0 1.0 30 | CancerMine http://bionlp.bcgsc.ca/cancermine/ Literature-mined database of tumor suppressor genes/proto-oncogenes v50 - 20230301 cancermine db CC0 1.0 31 | Network of cancer genes (NCG) http://ncg.kcl.ac.uk/index.php A web resource to analyze duplicability, orthology and network properties of cancer genes v7.1 ncg db Open Access 32 | Cancer Gene Census (CGC) https://cancer.sanger.ac.uk/census Curated high-confidence list of genes with substantial published evidence in oncology v101 cgc db . 33 | InterPro/PFAM https://www.ebi.ac.uk/interpro/ Collection of protein families/domains v96 (v36.0) pfam db CC0 1.0 34 | tcga-survival.com https://tcga-survival.com Genetic determinants of cancer patient outcome (Smith et al., Cell Reports, 2022) v2 tcga_survival db Open Access 35 | Human Protein Atlas https://proteinatlas.org Knowledge resource on human proteins in relation to tissue/cell type specificity and cancer prognosis v23.0 - 2023.06.19 hpa db CC-BY-SA 3.0 36 | Open Targets Platform https://www.targetvalidation.org Comprehensive and robust data integration for target-disease associations 2024.09 opentargets db CC0 1.0 37 | -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:18.04 2 | 3 | RUN apt-get update && apt-get -y install apache2 apt-utils build-essential curl git unzip vim wget sudo libudunits2-dev libgeos-dev libgdal-dev 4 | RUN apt-get update && apt-get install apt-transport-https 5 | 6 | #RUN sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9 7 | #RUN sudo apt-get update \ 8 | # && sudo apt-get -y install software-properties-common 9 | 10 | ENV TZ=Europe/Minsk 11 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 12 | 13 | RUN sudo apt update -qq 14 | # install two helper packages we need 15 | RUN sudo apt-get update && sudo apt-get -y install --no-install-recommends software-properties-common dirmngr 16 | # add the signing key (by Michael Rutter) for these repos 17 | # To verify key, run gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc 18 | # Fingerprint: E298A3A825C0D65DFD57CBB651716619E084DAB9 19 | RUN wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc 20 | # add the R 4.0 repo from CRAN -- adjust 'focal' to 'groovy' or 'bionic' as needed 21 | 22 | RUN sudo add-apt-repository 'deb [arch=amd64,i386] https://cloud.r-project.org/bin/linux/ubuntu bionic-cran40/' 23 | RUN apt-get update && apt-get -y install --no-install-recommends r-base-core r-recommended r-base 24 | 25 | USER root 26 | WORKDIR / 27 | 28 | ENV PACKAGE_BIO="libhts2" 29 | ENV PACKAGE_DEV="gfortran gcc-multilib autoconf libcurl4-openssl-dev libmariadb-client-lgpl-dev liblzma-dev libncurses5-dev libblas-dev liblapack-dev libssh2-1-dev libxml2-dev vim libssl-dev libcairo2-dev libbz2-dev" 30 | RUN apt-get update \ 31 | && apt-get install -y --no-install-recommends \ 32 | nano ed locales vim-tiny fonts-texgyre \ 33 | $PACKAGE_DEV $PACKAGE_BIO \ 34 | && rm -rf /var/lib/apt/lists/* 35 | 36 | RUN apt-get autoremove 37 | RUN apt-get update && apt-get install -y --no-install-recommends iputils-ping gcc libgit2-dev libharfbuzz-dev librdf0-dev libsodium-dev libfribidi-dev libxt-dev 38 | 39 | 40 | RUN wget https://github.com/Kitware/CMake/releases/download/v3.20.0/cmake-3.20.0.tar.gz 41 | RUN tar -zxvf cmake-3.20.0.tar.gz 42 | RUN cd cmake-3.20.0 && ./bootstrap && make && make install 43 | 44 | ## oncoEnrichR dependencies: restore all R package versions and dependencies with renv package 45 | ## PINNED versions of all packages can be found in /renv.lock (JSON format) 46 | RUN R -e "install.packages(repos = NULL, 'https://cloud.r-project.org/src/contrib/renv_1.0.7.tar.gz', lib = '/usr/lib/R/library/')" 47 | COPY renv.lock / 48 | COPY oncoEnrichR_1.5.2.tar.gz / 49 | 50 | #RUN R -e "library(renv)" 51 | 52 | RUN R -e "library(renv); renv::restore(prompt = F, library = '/usr/lib/R/library/')" 53 | WORKDIR / 54 | 55 | ## PINNED version - oncoEnrichR 56 | RUN R -e "install.packages(repos = NULL, 'oncoEnrichR_1.5.2.tar.gz', lib = '/usr/lib/R/library/')" 57 | 58 | ## PINNED VERSION: pandoc (for HTML report generation) 59 | RUN wget https://github.com/jgm/pandoc/releases/download/2.13/pandoc-2.13-1-amd64.deb && \ 60 | dpkg -i pandoc* && \ 61 | rm pandoc* && \ 62 | apt-get clean 63 | 64 | 65 | RUN set -e -x && \ 66 | apt-get update && apt-get install -y --no-install-recommends \ 67 | gdebi-core \ 68 | librsvg2-bin && apt-get clean 69 | 70 | RUN curl -LO https://quarto.org/download/latest/quarto-linux-amd64.deb 71 | RUN gdebi --non-interactive quarto-linux-amd64.deb 72 | RUN rm -f quarto-linux-amd64.deb 73 | 74 | RUN rm -rf /root/.cache 75 | RUN rm -rf /oncoEnrichR_1.5.2.tar.gz 76 | RUN rm -rf /cmake-3.20.0* 77 | -------------------------------------------------------------------------------- /docker/buildDocker.sh: -------------------------------------------------------------------------------- 1 | echo "Build the Docker Image" 2 | TAG=`date "+%Y%m%d"` 3 | docker build -t sigven/oncoenrichr:$TAG --rm=true . 4 | 5 | -------------------------------------------------------------------------------- /inst/CITATION: -------------------------------------------------------------------------------- 1 | citHeader("To cite oncoEnrichR in publications use:") 2 | 3 | citEntry( 4 | entry = "Article", 5 | title = "Comprehensive interrogation of gene lists from genome-scale cancer screens with oncoEnrichR", 6 | author = personList( 7 | as.person("Sigve Nakken"), 8 | as.person("Sveinung Gundersen"), 9 | as.person("Fabian L. M. Bernal"), 10 | as.person("Dimitris Polychronopoulos"), 11 | as.person("Eivind Hovig"), 12 | as.person("Jørgen Wesche") 13 | ), 14 | year = "2023", 15 | doi = "10.1002/ijc.34666", 16 | url = "https://doi.org/10.1002/ijc.34666", 17 | journal = "Int. J. Cancer", 18 | textVersion = paste0( 19 | "Sigve Nakken, Sveinung Gundersen, Fabian L. M. Bernal, ", 20 | "Dimitris Polychronopoulos, Eivind Hovig, and Jørgen Wesche. ", 21 | "Comprehensive interrogation of gene lists from genome-scale cancer screens with oncoEnrichR (2023). Int J Cancer. ", 22 | "https://doi.org/10.1002/ijc.34666" 23 | ) 24 | ) 25 | -------------------------------------------------------------------------------- /inst/extdata/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/inst/extdata/logo.png -------------------------------------------------------------------------------- /inst/extdata/myc_data.csv: -------------------------------------------------------------------------------- 1 | symbol 2 | EP400 3 | HCFC1 4 | ZBTB33 5 | TRRAP 6 | TAF6L 7 | ACTL6A 8 | CCAR2 9 | BRD4 10 | TAF9B 11 | SUPT20H 12 | EPC1 13 | DMAP1 14 | SF3B2 15 | TAF5L 16 | MAX 17 | EPC2 18 | TADA1 19 | VPS72 20 | KAT5 21 | MYC 22 | DIDO1 23 | ARID1A 24 | NSUN2 25 | PPP1R10 26 | SUPT7L 27 | CCDC101 28 | ING3 29 | SUPT3H 30 | TAF10 31 | MED1 32 | TAF12 33 | SMEK1 34 | YEATS4 35 | RPA1 36 | KDM3B 37 | ADNP 38 | CHD8 39 | RBM27 40 | NELFE 41 | TRIM24 42 | SIN3B 43 | MBTD1 44 | YEATS2 45 | SPEN 46 | SMARCA4 47 | TADA2B 48 | PES1 49 | TADA3 50 | FIP1L1 51 | CDC5L 52 | SNW1 53 | MGA 54 | SF1 55 | LRWD1 56 | PFDN5 57 | OGT 58 | ARID3B 59 | TRIM33 60 | TAF9 61 | RPA2 62 | BAG2 63 | SETD1A 64 | BAP1 65 | ZMYM2 66 | ATXN7L2 67 | WDR36 68 | VBP1 69 | SUGP1 70 | SMARCE1 71 | ARID1B 72 | MRTO4 73 | THAP11 74 | TCF20 75 | GTF2F1 76 | ZMYND8 77 | RPRD2 78 | PFDN6 79 | NELFA 80 | UTP14A 81 | GTF2F2 82 | U2SURP 83 | USP7 84 | MBD3 85 | NOC3L 86 | HDAC2 87 | XAB2 88 | KANSL3 89 | MGEA5 90 | KMT2B 91 | HMGXB4 92 | KMT2A 93 | SPDL1 94 | ZC3H14 95 | SIN3A 96 | WAC 97 | MEAF6 98 | WDR5 99 | KDM1A 100 | JMJD1C 101 | TCERG1 102 | GTF2I 103 | CDC73 104 | CCNK 105 | CFDP1 106 | IRF2BP2 107 | TPX2 108 | LIN54 109 | LUC7L3 110 | USP22 111 | NFRKB 112 | PPIL1 113 | DPY30 114 | NUP50 115 | PFDN2 116 | RBM10 117 | ELAC2 118 | FUS 119 | NFIA 120 | WIZ 121 | ZC3H11A 122 | WRNIP1 123 | DGCR14 124 | HEXIM1 125 | WDR3 126 | NCAPH 127 | MED23 128 | TBPL1 129 | MLH1 130 | XRN2 131 | NAT10 132 | RPRD1B 133 | CPSF7 134 | PRPF3 135 | TLE3 136 | -------------------------------------------------------------------------------- /inst/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/inst/favicon-16x16.png -------------------------------------------------------------------------------- /inst/templates/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/inst/templates/favicon-16x16.png -------------------------------------------------------------------------------- /inst/templates/index_quarto.qmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "" 3 | subtitle: " - _prioritization and interrogation of cancer gene relevance by oncoEnrichR_" 4 | date: '`r strftime(Sys.time(), format = "%B %d, %Y")`' 5 | bibliography: '`r system.file("bibliography.bib", package = "oncoEnrichR")`' 6 | title-block-banner: "#014587" 7 | title-block-banner-color: "white" 8 | linkcolor: "#014587" 9 | include-in-header: 10 | - text: | 11 | 12 | 17 | nocite: | 18 | @Kanehisa2000-nm, @Joshi-Tope2005-bw, @Kelder2012-vj, @Ashburner2000-sy, 19 | @Von_Mering2005-jy, @Petryszak2016-jp, @Giurgiu2019-yu, @Koscielny2017-ay, 20 | @Yu2012-yk, @Clauset2004-ov, @Kleinberg1999-oo, @Hart2016-ic, @Iorio2018-ph, 21 | @Subramanian2005-ci, @Uhlen2015-sh, @Uhlen2017-mg, @Jain2019-eh, 22 | @Lever2019-xn, @Binder2014-py, 23 | @Mermel2011-bp, @Kandasamy2010-te, @Behan2019-tf, @Hanahan2011-da, 24 | @Turei2016-wq, @Drew2021-kd, @Garcia-Alonso2019-mr, @Jin2021-tf, 25 | @De_Kegel2021-xo, @Smith2022-mk, @Martinez-Jimenez2020-qx, 26 | @Pacini2021-xm, @Nakken2023-bp 27 | format: 28 | html: 29 | link-external-newwindow: true 30 | smooth-scroll: true 31 | embed-resources: true 32 | page-layout: full 33 | fontsize: 0.93em 34 | toc: true 35 | toc-title: Contents 36 | toc-depth: 3 37 | toc-expand: 4 38 | grid: 39 | body-width: 920px 40 | lightbox: true 41 | callout-appearance: default 42 | --- 43 | 44 | ```{r global_options} 45 | #| include: false 46 | #| echo: false 47 | 48 | knitr::opts_chunk$set(echo = F,warning=FALSE, dpi=72, error=F, eval=T) 49 | 50 | options(scipen = 999) 51 | 52 | onc_enrich_report <- readRDS(file="") 53 | tcga_maf_datasets <- readRDS(file="") 54 | 55 | logo_fname_path <- system.file("extdata", "logo.png", package = "oncoEnrichR") 56 | 57 | ``` 58 | 59 | 60 | 61 | 62 |

63 | 64 | ```{r project_background} 65 | #| child: 'quarto/_project_background.qmd' 66 | #| eval: true 67 | ``` 68 | 69 | ```{r target_verification} 70 | #| child: 'quarto/_query_verification.qmd' 71 | #| eval: true 72 | ``` 73 | 74 | ```{r target_disease} 75 | #| child: 'quarto/_cancer_association.qmd' 76 | #| eval: !expr onc_enrich_report[['config']][['show']][['disease']] 77 | ``` 78 | 79 | ```{r target_hallmark} 80 | #| child: 'quarto/_cancer_hallmark_association.qmd' 81 | #| eval: !expr onc_enrich_report[['config']][['show']][['cancer_hallmark']] 82 | ``` 83 | 84 | ```{r target_unknown} 85 | #| child: 'quarto/_unknown_function.qmd' 86 | #| eval: !expr onc_enrich_report[['config']][['show']][['unknown_function']] 87 | ``` 88 | 89 | ```{r target_drug} 90 | #| child: 'quarto/_drug_target_association.qmd' 91 | #| eval: !expr onc_enrich_report[['config']][['show']][['drug']] 92 | ``` 93 | 94 | 95 | ```{r target_synthetic_lethality} 96 | #| child: 'quarto/_synthetic_lethality.qmd' 97 | #| eval: !expr onc_enrich_report[['config']][['show']][['synleth']] 98 | ``` 99 | 100 | ```{r target_fitness} 101 | #| child: 'quarto/_fitness_lof.qmd' 102 | #| eval: !expr onc_enrich_report[['config']][['show']][['fitness']] 103 | ``` 104 | 105 |
106 | 107 | ```{r target_complex} 108 | #| child: 'quarto/_protein_complex.qmd' 109 | #| eval: !expr onc_enrich_report[['config']][['show']][['protein_complex']] 110 | ``` 111 | 112 | ```{r target_domain} 113 | #| child: 'quarto/_protein_domain.qmd' 114 | #| eval: !expr onc_enrich_report[['config']][['show']][['protein_domain']] 115 | ``` 116 | 117 | 118 | ```{r target_ppi} 119 | #| child: 'quarto/_ppi.qmd' 120 | #| eval: !expr onc_enrich_report[['config']][['show']][['ppi']] 121 | ``` 122 | 123 | ```{r target_ligand_receptor} 124 | #| child: 'quarto/_ligand_receptor.qmd' 125 | #| eval: !expr onc_enrich_report[['config']][['show']][['ligand_receptor']] 126 | ``` 127 | 128 | 129 | ```{r target_regulatory} 130 | #| child: 'quarto/_regulatory_interactions.qmd' 131 | #| eval: !expr onc_enrich_report[['config']][['show']][['regulatory']] 132 | ``` 133 | 134 | ```{r target_subcell} 135 | #| child: 'quarto/_subcell_comp.qmd' 136 | #| eval: !expr onc_enrich_report[['config']][['show']][['subcellcomp']] 137 | ``` 138 | 139 | ```{r target_enrichment_invalid} 140 | #| child: 'quarto/_functional_enrichment_invalid.qmd' 141 | #| eval: !expr NROW(onc_enrich_report[['data']][['query']][['target']] |> dplyr::filter(status == "found")) < 5 142 | ``` 143 | 144 | ```{r target_enrichment} 145 | #| child: 'quarto/_functional_enrichment.qmd' 146 | #| eval: !expr onc_enrich_report[['config']][['show']][['enrichment']] 147 | ``` 148 | 149 | ```{r target_cell_tissue} 150 | #| child: 'quarto/_cell_tissue.qmd' 151 | #| eval: !expr onc_enrich_report[['config']][['show']][['cell_tissue']] 152 | ``` 153 | 154 | ```{r target_tcga_aberration} 155 | #| child: 'quarto/_aberration.qmd' 156 | #| eval: !expr onc_enrich_report[['config']][['show']][['aberration']] 157 | ``` 158 | 159 | ```{r target_tcga_coexpression} 160 | #| child: 'quarto/_coexpression.qmd' 161 | #| eval: !expr onc_enrich_report[['config']][['show']][['coexpression']] 162 | ``` 163 | 164 | ```{r target_cancer_prognosis} 165 | #| child: 'quarto/_prognosis_survival.qmd' 166 | #| eval: !expr onc_enrich_report[['config']][['show']][['cancer_prognosis']] 167 | ``` 168 | 169 |
170 | 171 | ```{r documentation_workflow} 172 | #| child: 'quarto/_documentation_workflow.qmd' 173 | #| eval: !expr onc_enrich_report[['data']][['query']]$validation_status != "imperfect_stop" 174 | ``` 175 | 176 |

177 | 178 | ### References 179 | 180 | ::: {#refs} 181 | ::: 182 | 183 | 184 | ```{r oncoenrichr_disclaimer} 185 | #| eval: true 186 | #| output: asis 187 | 188 | cat("

\n\n::: {.callout-important}\n## DISCLAIMER\n\nThe information contained in this report is more of an exploratory procedure than a statistical analysis. The final interpretation, i.e. putting the results in the context of the study/screen, should be made by biologists/analysts rather than by any tool.
\n\n:::") 189 | 190 | ``` 191 | -------------------------------------------------------------------------------- /inst/templates/quarto/_cancer_hallmark_association.qmd: -------------------------------------------------------------------------------- 1 | ### Cancer hallmark evidence 2 | 3 | ::: {.callout-note} 4 | ## Synopsis 5 | 6 | * Each gene in the query set is annotated with cancer hallmarks evidence ([Hanahan & Weinberg, Cell, 2011](https://pubmed.ncbi.nlm.nih.gov/21376230/)), indicating genes associated with essential alterations in cell physiology that can dictate malignant growth. 7 | * Data has been collected from the [Open Targets Platform](https://targetvalidation.org), and we list evidence for each hallmark per gene, indicated as either being  promoted  , or  suppressed   8 | 9 | ::: 10 | 11 |
12 | 13 | 14 | ```{r table_browse_hallmarks} 15 | #| output: asis 16 | #| echo: false 17 | #| eval: !expr NROW(onc_enrich_report[['data']][['cancer_hallmark']][['target']]) > 0 18 | 19 | target_hm_shared <- crosstalk::SharedData$new( 20 | onc_enrich_report[['data']][['cancer_hallmark']][['target']]) 21 | 22 | crosstalk::bscols( 23 | list( 24 | crosstalk::filter_select("hallmark", "Cancer hallmark", target_hm_shared, ~hallmark) 25 | ) 26 | ) 27 | 28 | htmltools::br() 29 | DT::datatable(target_hm_shared, 30 | escape = F, 31 | extensions=c("Buttons","Responsive"), 32 | width = "100%", 33 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip')) |> 34 | DT::formatStyle(columns = c("promotes"), 35 | valueColumns = c('promotes'), 36 | color = "white", 37 | backgroundColor = DT::styleEqual( 38 | c(TRUE, FALSE), 39 | c("#005a32","#989898")) 40 | ) |> 41 | DT::formatStyle(columns = c("suppresses"), 42 | valueColumns = c('suppresses'), 43 | color = "white", 44 | backgroundColor = DT::styleEqual( 45 | c(TRUE, FALSE), 46 | c("#800026","#989898")) 47 | ) 48 | 49 | 50 | 51 | ``` 52 | 53 | 54 | ```{r hallmarks_missing} 55 | #| echo: false 56 | #| output: asis 57 | #| eval: !expr NROW(onc_enrich_report[['data']][['cancer_hallmark']][['target']]) == 0 58 | 59 | cat('\n
  •   NO query genes with cancer hallmark associations from Open Targets Platform were found.   
',sep='\n') 60 | cat('\n') 61 | cat('

') 62 | 63 | ``` 64 | 65 |

66 | -------------------------------------------------------------------------------- /inst/templates/quarto/_coexpression.qmd: -------------------------------------------------------------------------------- 1 | ### Tumor co-expression 2 | 3 | ::: {.callout-note} 4 | ## Synopsis 5 | 6 | * Using RNA-seq data from ~9,500 primary tumor samples in TCGA, a co-expression correlation matrix (Pearson rank correlation coefficient) was calculated, indicating pairs of genes that have their expression patterns correlated in tumors 7 | * Here, we are showing, across the main primary tumor sites in TCGA: 8 | - Tumor suppressor genes, proto-oncogenes or cancer driver genes with a **strong/very strong** (_r_ >= 0.7 or _r_ <= -0.7 ) correlation to genes in the query set 9 | - Here, a maximum of _n = 2,500_ top associations are shown per correlation direction (a more extensive set, maximum *n = 100,000*, of top associations are listed in the Excel output of *oncoEnrichR*) 10 | 11 | ::: 12 | 13 |
14 | 15 | ::: {.panel-tabset} 16 | 17 | ```{r filter_tcga_coexp} 18 | #| echo: false 19 | #| output: asis 20 | 21 | show_tcga_coexp <- list() 22 | coexp_data <- list() 23 | active_tab <- list() 24 | 25 | for(n in c('Positive','Negative')){ 26 | show_tcga_coexp[[n]] <- TRUE 27 | coexp_data[[n]] <- data.frame() 28 | active_tab[[n]] <- FALSE 29 | 30 | coexp_data[[n]] <- 31 | onc_enrich_report[['data']][['tcga']][['coexpression']] |> 32 | dplyr::filter(corrtype == n) |> 33 | dplyr::select(-corrtype) |> 34 | head(2500) 35 | 36 | if(n == 'Negative'){ 37 | coexp_data[[n]] <- coexp_data[[n]] |> 38 | dplyr::arrange(r) 39 | } 40 | 41 | if(nrow(coexp_data[[n]]) == 0){ 42 | show_tcga_coexp[[n]] <- FALSE 43 | } 44 | } 45 | 46 | if(show_tcga_coexp[['Positive']] == T){ 47 | active_tab[['Positive']] <- T 48 | }else{ 49 | if(show_tcga_coexp[['Negative']] == T){ 50 | active_tab[['Negative']] <- T 51 | }else{ 52 | active_tab[['Positive']] <- T 53 | } 54 | } 55 | 56 | ``` 57 | 58 | 59 | ```{r active_tab_positive_coexp} 60 | #| echo: false 61 | #| output: asis 62 | 63 | if(active_tab[['Positive']] == T){ 64 | cat("") 65 | cat("#### Positive correlation {.active}") 66 | cat("") 67 | }else{ 68 | cat("") 69 | cat("#### Positive correlation") 70 | cat("") 71 | } 72 | ``` 73 | 74 | 75 | ```{r table_browse_tcga_coexp} 76 | #| echo: false 77 | #| output: asis 78 | #| eval: !expr show_tcga_coexp[['Positive']] 79 | 80 | coexp_genes_positive <- crosstalk::SharedData$new(coexp_data[['Positive']]) 81 | 82 | crosstalk::bscols( 83 | list( 84 | crosstalk::filter_select("target_gene", "Target gene", 85 | coexp_genes_positive, ~target_gene), 86 | crosstalk::filter_slider("r", "Correlation coefficient (r)", coexp_genes_positive, 87 | ~r, step = 0.05, min = 0.7, max = 1), 88 | crosstalk::filter_checkbox("tumor_suppressor", "Tumor suppressor (partner)", 89 | coexp_genes_positive, ~tumor_suppressor) 90 | ), 91 | list( 92 | crosstalk::filter_checkbox("oncogene", "Proto-oncogene (partner)", 93 | coexp_genes_positive, ~oncogene), 94 | crosstalk::filter_checkbox("cancer_driver", "Cancer driver (partner)", 95 | coexp_genes_positive, ~cancer_driver), 96 | crosstalk::filter_select("primary_site", "Primary site", 97 | coexp_genes_positive, ~primary_site) 98 | 99 | ) 100 | ) 101 | 102 | htmltools::br() 103 | DT::datatable(coexp_genes_positive, escape = F, 104 | extensions=c("Buttons","Responsive"), 105 | width = "100%", 106 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip') 107 | ) 108 | rm(coexp_genes_positive) 109 | 110 | 111 | ``` 112 | 113 | 114 | ```{r coexp_missing_positive} 115 | #| echo: false 116 | #| output: asis 117 | #| eval: !expr show_tcga_coexp[['Positive']] == FALSE 118 | 119 | cat('

\n
  •   No genes in the query set with strong positive correlations to tumor suppressors, oncogenes or cancer drivers.  
',sep='\n') 120 | cat('\n') 121 | cat('

') 122 | 123 | ``` 124 | 125 |

126 | 127 | 128 | ```{r active_tab_negative_coexp} 129 | #| echo: false 130 | #| output: asis 131 | 132 | if(active_tab[['Negative']] == T){ 133 | cat("") 134 | cat("#### Negative correlation {.active}") 135 | cat("") 136 | }else{ 137 | cat("") 138 | cat("#### Negative correlation") 139 | cat("") 140 | } 141 | ``` 142 | 143 | 144 | ```{r table_browse_tcga_coexp2} 145 | #| echo: false 146 | #| output: asis 147 | #| eval: !expr show_tcga_coexp[['Negative']] 148 | 149 | coexp_genes_negative <- crosstalk::SharedData$new(coexp_data[['Negative']]) 150 | 151 | crosstalk::bscols( 152 | list( 153 | crosstalk::filter_select("target_gene", "Target gene", 154 | coexp_genes_negative,~target_gene), 155 | crosstalk::filter_slider("r", "Correlation coefficient (r)", 156 | coexp_genes_negative, 157 | ~r, step = 0.05, min = -1, max = -0.7), 158 | crosstalk::filter_checkbox("tumor_suppressor", "Tumor suppressor (partner)", 159 | coexp_genes_negative, ~tumor_suppressor) 160 | ), 161 | list( 162 | crosstalk::filter_checkbox("oncogene", "Proto-oncogene (partner)", 163 | coexp_genes_negative, ~oncogene), 164 | crosstalk::filter_checkbox("cancer_driver", "Cancer driver (partner)", 165 | coexp_genes_negative, ~cancer_driver), 166 | crosstalk::filter_select("primary_site", "Primary site", 167 | coexp_genes_negative, ~primary_site) 168 | ) 169 | ) 170 | 171 | htmltools::br() 172 | DT::datatable(coexp_genes_negative, escape = F, 173 | extensions=c("Buttons","Responsive"), width = "100%", 174 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip') 175 | ) 176 | rm(coexp_genes_negative) 177 | rm(coexp_data) 178 | 179 | 180 | ``` 181 |

182 | 183 | ```{r coexp_missing_negative} 184 | #| echo: false 185 | #| output: asis 186 | #| eval: !expr show_tcga_coexp[['Negative']] == FALSE 187 | 188 | cat('

\n
  •   No genes in the query set with strong negative correlations to tumor suppressors, oncogenes or cancer drivers.  
',sep='\n') 189 | cat('\n') 190 | cat('

') 191 | ``` 192 | 193 | ::: 194 | 195 |

196 | -------------------------------------------------------------------------------- /inst/templates/quarto/_drug_target_association.qmd: -------------------------------------------------------------------------------- 1 | ### Drug associations 2 | 3 | ::: {.callout-note} 4 | ## Synopsis 5 | 6 | * Each protein/protein in the query set is annotated with: 7 | * Targeted drugs (inhibitors/antagonists), as found through the [Open Targets Platform](https://targetvalidation.org), limited to compounds indicated for a cancer condition/phenotype 8 | * Drugs are organized into the following buckets: 9 | * Targeted cancer drugs in early clinical development (phase 1/2)(column drugs_early_phase) 10 | * Targeted cancer drugs in late clinical development (phase 3/4) (column drugs_late_phase) 11 | * Approved drugs - here also showing the (cancer type) indications for which the drugs are approved for 12 | 13 | ::: 14 | 15 |
16 | 17 | ```{r table_browse_drug_targets} 18 | #| echo: false 19 | #| output: asis 20 | #| eval: !expr NROW(onc_enrich_report[['data']][['drug']][['target_drugs']]) > 0 21 | 22 | htmltools::br() 23 | DT::datatable(onc_enrich_report[['data']][['drug']][['target_drugs']], escape = F, 24 | extensions=c("Buttons","Responsive"), width = "100%", 25 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip')) 26 | 27 | 28 | 29 | ``` 30 | 31 | 32 | ```{r drug_targets_missing} 33 | #| echo: false 34 | #| output: asis 35 | #| eval: !expr NROW(onc_enrich_report[['data']][['drug']][['target_drugs']]) == 0 36 | 37 | cat('\n
  •   NO query proteins with cancer drug associations from Open Targets Platform were found.   
',sep='\n') 38 | cat('\n') 39 | cat('

') 40 | 41 | ``` 42 | 43 | 44 |

45 | 46 | #### Target tractabilities 47 | 48 | ::: {.panel-tabset} 49 | 50 | * Each gene/protein in the query set is annotated with _[target tractability information](https://docs.targetvalidation.org/getting-started/target-tractability)_ (also known as _druggability_) towards 51 | small molecules/compounds and antibodies 52 | * Query genes are colored in varying shades of purple (from  unknown tractability  to  clinical precedence ) 53 | 54 | 55 |

56 | 57 | ##### Small molecules/compounds 58 | 59 | ```{r table_browse_tractability_sm} 60 | #| echo: false 61 | #| output: asis 62 | #| eval: true 63 | 64 | htmltools::br() 65 | 66 | tractable_targets_sm <- onc_enrich_report[['data']][['drug']][['tractability_sm']] |> 67 | dplyr::filter(!is.na(SM_tractability_category) & 68 | SM_tractability_category != "Unknown") 69 | 70 | DT::datatable(tractable_targets_sm, escape = F, 71 | extensions=c("Buttons","Responsive"), width = "100%", 72 | options=list(buttons = c('csv','excel'), dom = 'Bfrtip')) |> 73 | DT::formatStyle( 74 | "SM_tractability_category", 75 | color = "white", 76 | backgroundColor = DT::styleEqual( 77 | onc_enrich_report[["config"]][["drug"]][["sm_levels"]], 78 | onc_enrich_report[["config"]][["drug"]][["sm_levels_colors"]] 79 | ) 80 | ) 81 | 82 | 83 | 84 | ``` 85 | 86 |

87 | 88 | ##### Antibodies 89 | 90 | ```{r table_browse_tractability_ab} 91 | #| echo: false 92 | #| output: asis 93 | #| eval: true 94 | 95 | htmltools::br() 96 | 97 | tractable_targets_ab <- onc_enrich_report[['data']][['drug']][['tractability_ab']] |> 98 | dplyr::filter(!is.na(AB_tractability_category) & 99 | AB_tractability_category != "Unknown") 100 | 101 | DT::datatable(tractable_targets_ab, escape = F, 102 | extensions=c("Buttons","Responsive"), width = "100%", 103 | options=list(buttons = c('csv','excel'), dom = 'Bfrtip')) |> 104 | DT::formatStyle( 105 | "AB_tractability_category", 106 | color = "white", 107 | backgroundColor = DT::styleEqual( 108 | onc_enrich_report[["config"]][["drug"]][["ab_levels"]], 109 | onc_enrich_report[["config"]][["drug"]][["ab_levels_colors"]] 110 | ) 111 | ) 112 | 113 | 114 | 115 | ``` 116 | 117 | 118 |

119 | 120 | ::: 121 | -------------------------------------------------------------------------------- /inst/templates/quarto/_functional_enrichment_invalid.qmd: -------------------------------------------------------------------------------- 1 | ### Function and pathway enrichment 2 | 3 | ```{r limited_enrichment_input} 4 | #| echo: false 5 | #| output: asis 6 | #| eval: true 7 | 8 | cat('

\n
  •   TOO FEW GENES (n < 5) in the query set for robust function and pathway enrichment analysis.  
',sep='\n') 9 | cat('\n') 10 | cat('

') 11 | 12 | ``` 13 | 14 | -------------------------------------------------------------------------------- /inst/templates/quarto/_ligand_receptor.qmd: -------------------------------------------------------------------------------- 1 | ### Ligand-receptor interactions 2 | 3 | ::: {.callout-note} 4 | ## Synopsis 5 | 6 | * Using data from the [CellChatDB](http://www.cellchat.org/) resource, we are here interrogating ligand-receptor interactions for members of the query set. Putative interactions are displayed along three different axes with respect to cell-cell communication: 7 | 8 | 1) Secreted Signaling (Paracrine/autocrine signaling) 9 | 2) ECM-Receptor (extracellular matrix-receptor interactions) 10 | 3) Cell-Cell Contact 11 | 12 | ::: 13 | 14 |
15 | 16 | ```{r ligand_receptor_prep} 17 | #| echo: false 18 | #| output: asis 19 | #| eval: true 20 | 21 | active_tab <- list() 22 | 23 | for(cl in c('ss','ecm','ccc')){ 24 | active_tab[[cl]] <- F 25 | } 26 | 27 | if(NROW(onc_enrich_report[['data']][['ligand_receptor']][['secreted_signaling']]) > 0){ 28 | active_tab[['ss']] <- T 29 | }else{ 30 | if(NROW(onc_enrich_report[['data']][['ligand_receptor']][['ecm_receptor']]) > 0){ 31 | active_tab[['ecm']] <- T 32 | }else{ 33 | if(NROW(onc_enrich_report[['data']][['ligand_receptor']][['cell_cell_contact']]) > 0){ 34 | active_tab[['ccc']] <- T 35 | } 36 | } 37 | } 38 | 39 | if(active_tab[['ss']] == F & 40 | active_tab[['ecm']] == F & 41 | active_tab[['ccc']] == F){ 42 | active_tab[['ss']] <- T 43 | } 44 | 45 | ``` 46 | 47 | ::: {.panel-tabset} 48 | 49 | ```{r active_tab_ss} 50 | #| echo: false 51 | #| output: asis 52 | 53 | if(active_tab[['ss']] == T){ 54 | cat("") 55 | cat("#### Secreted Signaling {.active}") 56 | cat("") 57 | }else{ 58 | cat("") 59 | cat("#### Secreted Signaling") 60 | cat("") 61 | } 62 | ``` 63 | 64 | ```{r lig_rec_interactions_1} 65 | #| echo: false 66 | #| output: asis 67 | #| eval: !expr NROW(onc_enrich_report[['data']][['ligand_receptor']][['secreted_signaling']]) > 0 68 | 69 | ligand_interactions_ss <- 70 | crosstalk::SharedData$new(onc_enrich_report[['data']][['ligand_receptor']][['secreted_signaling']]) 71 | 72 | crosstalk::bscols( 73 | list( 74 | crosstalk::filter_select("ligand", "Ligand", ligand_interactions_ss, ~ligand) 75 | ), 76 | list( 77 | crosstalk::filter_select("receptor", "Receptor", ligand_interactions_ss, ~receptor) 78 | ) 79 | ) 80 | 81 | htmltools::br() 82 | 83 | DT::datatable( 84 | ligand_interactions_ss, 85 | escape = F, 86 | extensions=c("Buttons","Responsive"), 87 | width = "100%", 88 | #style = 'bootstrap', 89 | rownames = F, 90 | options=list(buttons = c('csv','excel'), 91 | pageLength = 10, 92 | bPaginate = T, 93 | dom = 'Bfrtip') 94 | ) 95 | 96 | 97 | ``` 98 |

99 | 100 | 101 | ```{r no_lig_receptor_interactions1} 102 | #| echo: false 103 | #| output: asis 104 | #| eval: !expr NROW(onc_enrich_report[['data']][['ligand_receptor']][['secreted_signaling']]) == 0 105 | 106 | cat('\n
  •   NO pair of genes in the queryset are involved in ligand-receptor interactions (CellChatDB - Secreted signalling)  
',sep='\n') 107 | cat('\n') 108 | cat('

') 109 | 110 | ``` 111 | 112 |
113 | 114 | ```{r active_tab_ecm} 115 | #| echo: false 116 | #| output: asis 117 | 118 | if(active_tab[['ecm']] == T){ 119 | cat("") 120 | cat("#### ECM-Receptor {.active}") 121 | cat("") 122 | }else{ 123 | cat("") 124 | cat("#### ECM-Receptor") 125 | cat("") 126 | } 127 | ``` 128 | 129 | 130 | ```{r lig_rec_interactions_2} 131 | #| echo: false 132 | #| output: asis 133 | #| eval: !expr NROW(onc_enrich_report[['data']][['ligand_receptor']][['ecm_receptor']]) > 0 134 | 135 | ligand_interactions_ecm <- 136 | crosstalk::SharedData$new(onc_enrich_report[['data']][['ligand_receptor']][['ecm_receptor']]) 137 | 138 | crosstalk::bscols( 139 | list( 140 | crosstalk::filter_select("ligand", "Ligand", ligand_interactions_ecm, ~ligand) 141 | ), 142 | list( 143 | crosstalk::filter_select("receptor", "Receptor", ligand_interactions_ecm, ~receptor) 144 | ) 145 | ) 146 | 147 | htmltools::br() 148 | 149 | DT::datatable( 150 | ligand_interactions_ecm, 151 | escape = F, 152 | extensions=c("Buttons","Responsive"), 153 | width = "100%", 154 | #style = 'bootstrap', 155 | rownames = F, 156 | options=list(buttons = c('csv','excel'), 157 | pageLength = 10, 158 | bPaginate = T, 159 | dom = 'Bfrtip') 160 | ) 161 | 162 | 163 | ``` 164 |

165 | 166 | 167 | ```{r no_lig_receptor_interactions2} 168 | #| echo: false 169 | #| output: asis 170 | #| eval: !expr NROW(onc_enrich_report[['data']][['ligand_receptor']][['ecm_receptor']]) == 0 171 | 172 | cat('\n
  •   NO pair of genes in the queryset are involved in ligand-receptor interactions (CellChatDB - ECM Receptor)  
',sep='\n') 173 | cat('\n') 174 | cat('

') 175 | 176 | ``` 177 | 178 |
179 | 180 | ```{r active_tab_ccc} 181 | #| echo: false 182 | #| output: asis 183 | 184 | if(active_tab[['ccc']] == T){ 185 | cat("") 186 | cat("#### Cell-Cell Contact {.active}") 187 | cat("") 188 | }else{ 189 | cat("") 190 | cat("#### Cell-Cell Contact") 191 | cat("") 192 | } 193 | ``` 194 | 195 | ```{r lig_rec_interactions_3} 196 | #| echo: false 197 | #| output: asis 198 | #| eval: !expr as.logical(NROW(onc_enrich_report[['data']][['ligand_receptor']][['cell_cell_contact']]) > 0) == TRUE 199 | 200 | ligand_interactions_ccc <- 201 | crosstalk::SharedData$new(onc_enrich_report[['data']][['ligand_receptor']][['cell_cell_contact']]) 202 | 203 | crosstalk::bscols( 204 | list( 205 | crosstalk::filter_select("ligand", "Ligand", ligand_interactions_ccc, ~ligand) 206 | ), 207 | list( 208 | crosstalk::filter_select("receptor", "Receptor", ligand_interactions_ccc, ~receptor) 209 | ) 210 | ) 211 | 212 | htmltools::br() 213 | 214 | DT::datatable( 215 | ligand_interactions_ccc, 216 | escape = F, 217 | extensions=c("Buttons","Responsive"), 218 | width = "100%", 219 | #style = 'bootstrap', 220 | rownames = F, 221 | options=list(buttons = c('csv','excel'), 222 | pageLength = 10, 223 | bPaginate = T, 224 | dom = 'Bfrtip') 225 | ) 226 | 227 | 228 | ``` 229 |

230 | 231 | 232 | ```{r no_lig_receptor_interactions3} 233 | #| echo: false 234 | #| output: asis 235 | #| eval: !expr NROW(onc_enrich_report[['data']][['ligand_receptor']][['cell_cell_contact']]) == 0 236 | 237 | cat('\n
  •   NO pair of genes in the queryset are involved in ligand-receptor interactions (CellChatDB - Cell-Cell Contact)  
',sep='\n') 238 | cat('\n') 239 | cat('

') 240 | 241 | ``` 242 | 243 |
244 | 245 | ::: 246 | -------------------------------------------------------------------------------- /inst/templates/quarto/_project_background.qmd: -------------------------------------------------------------------------------- 1 | ### Project background 2 | 3 | * Project owner/contact: `r onc_enrich_report[['config']][['project_owner']]` 4 | 5 | * Description: `r onc_enrich_report[['config']][['project_description']]` 6 | 7 |

8 | -------------------------------------------------------------------------------- /inst/templates/quarto/_protein_complex.qmd: -------------------------------------------------------------------------------- 1 | ### Protein complexes 2 | 3 | ::: {.callout-note} 4 | ## Synopsis 5 | 6 | Here we show how members of the query set that are involved in *known* protein complexes, using two different collections of protein complex annotations: 7 | 8 | 1. [OmniPath](https://omnipathdb.org/) - a meta-database of molecular biology prior knowledge, containing protein complex annotations predominantly from [CORUM](http://mips.helmholtz-muenchen.de/corum/), [ComplexPortal](https://www.ebi.ac.uk/complexportal/home), [Compleat](https://fgr.hms.harvard.edu/compleat), and [PDB](https://www.rcsb.org/). 9 | * We limit complexes to those that are supported by references to the scientific literature (i.e. manually curated), and those with more than one participating members 10 | 2. [Human Protein Complex Map - hu.MAP v2.0](http://humap2.proteincomplexes.org/) - created through an integration of > 15,000 proteomics experiments (biochemical fractionation data, proximity labeling data, and RNA hairpin pulldown data) 11 | * Each complex comes with a confidence score from clustering (1=Extremely High, 2=Very High, 3=High, 4=Medium High, 5=Medium) 12 | 13 | * The protein complexes that overlap with members of the query set are ranked according to the mean cancer-relevance score of the participating members, and is color-coded in varying shades of blue (i.e. from   low cancer-relevance     to   strong cancer-relevance   ). 14 | 15 | 16 | ::: 17 | 18 |

19 | 20 | ```{r complex_prep} 21 | #| echo: false 22 | #| output: asis 23 | #| eval: true 24 | 25 | active_tab <- list() 26 | 27 | for(cl in c('omnipath','humap2')){ 28 | active_tab[[cl]] <- F 29 | } 30 | 31 | if(NROW(onc_enrich_report[['data']][['protein_complex']][['omnipath']]) > 0){ 32 | active_tab[['omnipath']] <- T 33 | }else{ 34 | if(NROW(onc_enrich_report[['data']][['protein_complex']][['humap2']]) > 0){ 35 | active_tab[['humap2']] <- T 36 | }else{ 37 | active_tab[['omnipath']] <- T 38 | } 39 | } 40 | 41 | 42 | ``` 43 | 44 | ::: {.panel-tabset} 45 | 46 | ```{r active_tab_omnipath} 47 | #| echo: false 48 | #| output: asis 49 | 50 | if(active_tab[['omnipath']] == T){ 51 | cat("") 52 | cat("#### OmniPath {.active}") 53 | cat("") 54 | }else{ 55 | cat("") 56 | cat("#### OmniPath") 57 | cat("") 58 | } 59 | ``` 60 | 61 | ```{r table_browse_complex_omnipath} 62 | #| echo: false 63 | #| output: asis 64 | #| eval: !expr NROW(onc_enrich_report[['data']][['protein_complex']][['omnipath']]) > 0 65 | 66 | htmltools::br() 67 | 68 | stepsize <- 1 69 | max_complex_members <- max(onc_enrich_report[['data']][['protein_complex']][['omnipath']]$num_target_members) 70 | if(max_complex_members > 10){ 71 | stepsize <- 2 72 | } 73 | if(max_complex_members > 20){ 74 | stepsize <- 3 75 | } 76 | 77 | omnipath_complexes_df <- 78 | crosstalk::SharedData$new( 79 | onc_enrich_report[['data']][['protein_complex']][['omnipath']]|> 80 | dplyr::filter(num_target_members > 1)) 81 | 82 | crosstalk::bscols( 83 | list( 84 | crosstalk::filter_slider("num_target_members", "Minimum number of query set members in complex", 85 | omnipath_complexes_df, ~num_target_members, step = stepsize) 86 | ) 87 | ) 88 | 89 | htmltools::br() 90 | DT::datatable(omnipath_complexes_df, 91 | escape = F, 92 | extensions=c("Buttons","Responsive"), 93 | width = "100%", 94 | #style = 'bootstrap', 95 | rownames = F, 96 | options=list(buttons = c('csv','excel'), 97 | pageLength = 10, 98 | bPaginate = T, 99 | dom = 'Bfrtip')) |> 100 | DT::formatStyle("complex_name", 101 | "complex_cancer_rank_score", 102 | color = "white", 103 | backgroundColor = DT::styleInterval( 104 | onc_enrich_report[['config']][['complex']][['breaks']], 105 | onc_enrich_report[['config']][['complex']][['colors']]) 106 | ) 107 | 108 | 109 | ``` 110 | 111 | 112 | ```{r indicate_missing_complexes} 113 | #| echo: false 114 | #| output: asis 115 | #| eval: !expr NROW(onc_enrich_report[['data']][['protein_complex']][['omnipath']]) == 0 116 | 117 | cat('

\n
  •   NO GENES in the query set associate with protein complexes found in the OmniPath database .  
',sep='\n') 118 | cat('\n') 119 | cat('

') 120 | 121 | ``` 122 | 123 |
124 | 125 | ```{r active_tab_humap2} 126 | #| echo: false 127 | #| output: asis 128 | 129 | if(active_tab[['humap2']] == T){ 130 | cat("") 131 | cat("#### hu.MAP v2.0 {.active}") 132 | cat("") 133 | }else{ 134 | cat("") 135 | cat("#### hu.MAP v2.0") 136 | cat("") 137 | } 138 | ``` 139 | 140 | ```{r table_browse_complex_humap2} 141 | #| echo: false 142 | #| output: asis 143 | #| eval: !expr NROW(onc_enrich_report[['data']][['protein_complex']][['humap2']]) > 0 144 | 145 | htmltools::br() 146 | 147 | humap2_complexes_df <- 148 | crosstalk::SharedData$new( 149 | onc_enrich_report[['data']][['protein_complex']][['humap2']] |> 150 | dplyr::filter(num_target_members > 1)) 151 | 152 | crosstalk::bscols( 153 | list( 154 | crosstalk::filter_slider("num_target_members", "Number of query set members in complex", 155 | humap2_complexes_df, ~num_target_members) 156 | ) 157 | ) 158 | 159 | htmltools::br() 160 | 161 | DT::datatable(humap2_complexes_df, 162 | escape = F, 163 | extensions=c("Buttons","Responsive"), 164 | width = "100%", 165 | #style = 'bootstrap', 166 | rownames = F, 167 | options=list(buttons = c('csv','excel'), 168 | pageLength = 10, 169 | bPaginate = T, 170 | dom = 'Bfrtip')) |> 171 | 172 | 173 | DT::formatStyle("complex_name", 174 | "complex_cancer_rank_score", 175 | color = "white", 176 | backgroundColor = DT::styleInterval( 177 | onc_enrich_report[['config']][['complex']][['breaks']], 178 | onc_enrich_report[['config']][['complex']][['colors']]) 179 | ) 180 | 181 | 182 | ``` 183 | 184 | 185 | ```{r indicate_missing_complexes_humap2} 186 | #| echo: false 187 | #| output: asis 188 | #| eval: !expr NROW(onc_enrich_report[['data']][['protein_complex']][['humap2']]) == 0 189 | 190 | cat('

\n
  •   NO GENES in the query set associate with protein complexes established by the hu.MAP v2.0 protein complex map .  
',sep='\n') 191 | cat('\n') 192 | cat('

') 193 | 194 | ``` 195 | 196 | 197 |
198 | 199 | ::: 200 | -------------------------------------------------------------------------------- /inst/templates/quarto/_protein_domain.qmd: -------------------------------------------------------------------------------- 1 | ### Protein domains 2 | 3 | ::: {.callout-note} 4 | ## Synopsis 5 | 6 | Here we show the most frequent protein domains ([PFAM](https://www.ebi.ac.uk/interpro/entry/pfam/#table)) that occur within members of the query set 7 | 8 | * Only domains occurring in more than one query target protein are shown in the table below 9 | 10 | ::: 11 | 12 | 13 | ```{r table_browse_domain_pfam} 14 | #| echo: false 15 | #| output: asis 16 | #| eval: !expr NROW(onc_enrich_report[['data']][['protein_domain']][['target']]) > 0 17 | 18 | htmltools::br() 19 | 20 | domains_recurrent <- onc_enrich_report[['data']][['protein_domain']][['target']] |> 21 | dplyr::filter(stringr::str_detect( 22 | .data$target_genes, "," 23 | )) 24 | 25 | DT::datatable(domains_recurrent, 26 | escape = F, 27 | extensions=c("Buttons","Responsive"), 28 | width = "100%", 29 | #style = 'bootstrap', 30 | rownames = F, 31 | options=list(buttons = c('csv','excel'), 32 | pageLength = 10, 33 | bPaginate = T, 34 | dom = 'Bfrtip') 35 | ) 36 | 37 | 38 | ``` 39 | 40 | 41 | ```{r indicate_missing_domains} 42 | #| echo: false 43 | #| output: asis 44 | #| eval: !expr NROW(onc_enrich_report[['data']][['protein_domain']][['target']]) == 0 45 | 46 | cat('

\n
  •   NO GENES in the query set are annotated with common protein domains found in the PFAM database.   
',sep='\n') 47 | cat('\n') 48 | cat('

') 49 | 50 | ``` 51 | 52 |

53 | -------------------------------------------------------------------------------- /inst/templates/quarto/_query_verification.qmd: -------------------------------------------------------------------------------- 1 | ### Query verification 2 | 3 | 4 | ```{r imperfect_stop_notice} 5 | #| output: asis 6 | #| echo: false 7 | #| eval: !expr onc_enrich_report[['data']][['query']]$validation_status == "imperfect_stop" 8 | 9 | cat('

\n   - IMPORTANT NOTICE: Due to invalid entries in the query set, analysis is halted.  
   - Set \'Ignore errenous identifiers (ignore_id_err)\' = TRUE in order to ignore invalid entries and complete the analysis    with oncoEnrichR.  
',sep='\n') 10 | cat('\n') 11 | cat('

') 12 | 13 | ``` 14 | 15 | ::: {.callout-note} 16 | ## Identifier mapping results 17 | 18 | * A total of __n = `r NROW(onc_enrich_report[['data']][['query']][['target']])`__ target identifiers were provided (type: _`r onc_enrich_report[['config']][['query']][['id_type']]`_, option _ignore_id_err_ = `r onc_enrich_report[["config"]][["query"]][["ignore_err"]]`) 19 | * All query identifiers have been mapped towards identifiers for known human genes (including non-ambiguous aliases), and valid/invalid entries in the query set are indicated as follows: 20 | *   Valid identifier    :   __n = `r NROW(onc_enrich_report[['data']][['query']][['target']] |> dplyr::filter(status == 'found'))`__ 21 | *   Valid identifier (mapped as alias)    :   __n = `r NROW(onc_enrich_report[['data']][['query']][['target']] |> dplyr::filter(status == 'found_as_alias'))`__ 22 | *   Invalid identifier    :   __n = `r NROW(onc_enrich_report[['data']][['query']][['target']] |> dplyr::filter(status == 'not_found'))`__ 23 | 24 | ::: 25 | 26 |
27 | 28 | 29 | ```{r table_browse_querylist} 30 | #| echo: false 31 | #| output: asis 32 | #| eval: true 33 | 34 | htmltools::br() 35 | DT::datatable(onc_enrich_report[['data']][['query']][['target']], escape = F, 36 | extensions=c("Buttons","Responsive"), 37 | width = "100%", 38 | options=list(buttons = c('csv','excel'), 39 | dom = 'Bfrtip')) |> 40 | DT::formatStyle(columns = c("query_id"), 41 | valueColumns = c('status'), 42 | color = "white", 43 | backgroundColor = DT::styleEqual( 44 | c('found','not_found','found_as_alias'), 45 | c("#005a32","#800026","#238b45")) 46 | ) 47 | 48 | 49 | ``` 50 | 51 |

52 | -------------------------------------------------------------------------------- /inst/templates/quarto/_subcell_comp.qmd: -------------------------------------------------------------------------------- 1 | ### Subcellular compartments 2 | 3 | ::: {.callout-note} 4 | ## Synopsis 5 | 6 | * The query set is annotated with data from [COMPARTMENTS](https://compartments.jensenlab.org/Search), a weekly updated database of subcellular localization data for human proteins, and results are here presented in two different views: 7 | 8 | 1. A subcellular _anatogram_ - acting as a "heatmap" of subcellular structures associated with proteins in the query set 9 | * Compartments are here limited to the key compartments (n = 24) defined within the [gganatogram package](https://github.com/jespermaag/gganatogram#cellular-structures) 10 | 2. A subcellular _data browser_ 11 | * All unique subcellular compartment annotations and their target members ("By Compartment") 12 | * Subcellular compartment annotations per gene are provided with a __confidence score__ between 3 and 5 - indicating the quality/reliability of a given compartment annotation 13 | * Minimum confidence score (pr. COMPARTMENTS channel) - user-provided: __`r onc_enrich_report$config$subcellcomp$minimum_confidence`__ 14 | * Minimum number of supporting COMPARTMENTS channels pr. annotation - user-provided: __`r onc_enrich_report$config$subcellcomp$minimum_channels`__ 15 | * Ignore cytosol as a subcellular location: __`r !onc_enrich_report$config$subcellcomp$show_cytosol`__ 16 | 17 | ::: 18 | 19 |
20 | 21 | #### Subcellular anatogram 22 | 23 | ::: {.panel-tabset} 24 | 25 | ##### Heatmap - query set 26 | 27 |
28 | 29 | * In the heatmap below, *value* refers to the fraction of target genes that are annotated with a particular compartment/subcellular structure 30 |

31 | 32 | ```{r gganatogram_plot} 33 | #| echo: false 34 | #| output: asis 35 | #| eval: !expr as.logical(NROW(onc_enrich_report[['data']][['subcellcomp']][['anatogram']]) > 0) == TRUE 36 | #| fig-width: 10 37 | #| fig-height: 5 38 | 39 | suppressPackageStartupMessages(library(gganatogram)) 40 | 41 | subcellcomp_geneset_density <- 42 | onc_enrich_report[['data']][['subcellcomp']][['anatogram']] 43 | 44 | if(onc_enrich_report[['config']][['subcellcomp']][['show_cytosol']] == F){ 45 | subcellcomp_geneset_density <- 46 | subcellcomp_geneset_density |> 47 | dplyr::filter(organ != "cytosol") 48 | } 49 | 50 | gganatogram::gganatogram(data = subcellcomp_geneset_density, 51 | outline = T, 52 | fillOutline = 'lightgray', 53 | organism = 'cell', 54 | fill = 'value') + 55 | ggplot2::theme_void() + 56 | ggplot2::coord_fixed() + 57 | ggplot2::scale_fill_gradient(low ="#FFEDA0", high = "#800026") 58 | 59 | ``` 60 |

61 | 62 | ```{r subcellcomp_density_barplot} 63 | #| echo: false 64 | #| output: asis 65 | #| eval: !expr as.logical(NROW(onc_enrich_report[['data']][['subcellcomp']][['anatogram']]) > 0) == TRUE 66 | 67 | plot_data <- onc_enrich_report[['data']][['subcellcomp']][['anatogram']] |> 68 | dplyr::arrange(value) 69 | plot_data$organ <- factor(plot_data$organ, levels = plot_data$organ) 70 | plot_data$toDownlight <- "NO" 71 | 72 | if(onc_enrich_report[['config']][['subcellcomp']][['show_cytosol']] == F){ 73 | plot_data <- plot_data |> 74 | dplyr::mutate(toDownlight = dplyr::if_else( 75 | organ == "cytosol", 76 | as.character("YES"), 77 | as.character(toDownlight) 78 | )) 79 | } 80 | 81 | p <- ggplot2::ggplot( 82 | plot_data, 83 | ggplot2::aes( x = organ, y = value, fill = toDownlight) ) + 84 | ggplot2::geom_bar( stat = "identity" ) + 85 | ggplot2::ylab("Percent of query gene set") + 86 | ggplot2::scale_fill_manual( 87 | values = c("YES"="gray", "NO"="BLACK" ), guide = FALSE ) + 88 | ggplot2::xlab("") + 89 | ggplot2::ylim(0,100) + 90 | ggplot2::theme_classic() + 91 | ggplot2::coord_flip() + 92 | ggplot2::theme( 93 | legend.position = "none", 94 | axis.text.x = ggplot2::element_text(size = 11, vjust = 0.5), 95 | legend.text = ggplot2::element_text(face="bold", family = "Helvetica", size = 11), 96 | axis.text.y = ggplot2::element_text(family = "Helvetica", size = 11), 97 | axis.title.x = ggplot2::element_text(family = "Helvetica", size = 11), 98 | axis.title.y = ggplot2::element_text(family = "Helvetica", size = 11) 99 | ) 100 | 101 | plotly::ggplotly(p, width = 600, height = 600) 102 | 103 | ``` 104 | 105 | 106 | 107 | ::: 108 | 109 | #### Subcellular data browser 110 | 111 |
112 | 113 | ::: {.panel-tabset} 114 | 115 | ##### By compartment 116 | 117 | * Genes listed per compartment are calculated using only compartment annotations with a minimum confidence level (pr. channel) of: __`r onc_enrich_report$config$subcellcomp$minimum_confidence`__ 118 | 119 |
120 | 121 | ```{r table_browse_subcell_comp_grouped} 122 | #| echo: false 123 | #| output: asis 124 | #| eval: !expr as.logical(NROW(onc_enrich_report[['data']][['subcellcomp']][['grouped']]) > 0) == TRUE 125 | 126 | htmltools::br() 127 | DT::datatable(onc_enrich_report[['data']][['subcellcomp']][['grouped']], 128 | escape = F, extensions=c("Buttons","Responsive"), 129 | width = "100%", 130 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip')) 131 | 132 | 133 | ``` 134 |


135 | 136 | ::: 137 | 138 | -------------------------------------------------------------------------------- /inst/templates/quarto/_unknown_function.qmd: -------------------------------------------------------------------------------- 1 | ### Poorly characterized genes 2 | 3 | ::: {.callout-note} 4 | ## Synopsis 5 | 6 | * The aim of this section is to highlight poorly characterized protein-coding genes or protein-coding genes with unknown function in the query set 7 | * A set of _uncharacterized/poorly characterized human protein-coding genes (__n = `r onc_enrich_report[['config']][['unknown_function']][['num_candidates']]`__) _ have been established based on 8 | 1. Gene names specifically designated with _uncharacterized_ or _open reading frame_ 9 | 2. Missing gene function summary in [NCBI Gene](https://www.ncbi.nlm.nih.gov/gene) AND function summary in [UniProt Knowledgebase](https://uniprot.org) 10 | 3. Missing or limited (<= 2) [gene ontology (GO) annotations](https://www.ebi.ac.uk/GOA/human_release) with respect to molecular function (MF) or biological process (BP) 11 | * Ontology annotations attributed with an [electronic annotation evidence code (IEA)](http://geneontology.org/docs/guide-go-evidence-codes/) are not considered in this calculation (less reliable due to lack of manually review) 12 | 13 | * Query genes found within the set of poorly characterized protein-coding genes are listed below, colored in varying shades of red according to the level of missing characterization (from  unknown function  to  poorly defined function ) 14 | 15 | ::: 16 | 17 |

18 | 19 | 20 | 21 | ```{r filter_unknown} 22 | #| echo: false 23 | #| output: asis 24 | 25 | show_ufunction_genes <- FALSE 26 | no_ufunction_genes <- TRUE 27 | 28 | if(nrow(onc_enrich_report[['data']][['unknown_function']][['hits_df']]) > 0){ 29 | show_ufunction_genes <- TRUE 30 | no_ufunction_genes <- FALSE 31 | 32 | } 33 | 34 | ``` 35 | 36 | 37 | ```{r table_browse_unknown} 38 | #| echo: false 39 | #| output: asis 40 | #| eval: !expr show_ufunction_genes 41 | 42 | targets_unknown_function <- crosstalk::SharedData$new( 43 | onc_enrich_report[['data']][['unknown_function']][['hits_df']] |> 44 | dplyr::rename(go_terms = go_term_link)) 45 | 46 | crosstalk::bscols( 47 | list( 48 | crosstalk::filter_select("symbol", "Target", targets_unknown_function, ~symbol), 49 | crosstalk::filter_checkbox("has_gene_summary", "Has gene summary", targets_unknown_function, ~has_gene_summary) 50 | ), 51 | list( 52 | crosstalk::filter_slider("num_go_annotations", "Number of annotated GO terms (non-IEA)", targets_unknown_function, ~num_go_terms) 53 | ) 54 | ) 55 | 56 | htmltools::br() 57 | DT::datatable(targets_unknown_function, 58 | escape = F, 59 | extensions=c("Buttons","Responsive"), 60 | width = "100%", 61 | options=list(buttons = c('csv','excel'), 62 | dom = 'Bfrtip')) |> 63 | 64 | DT::formatStyle( 65 | "symbol", 66 | "unknown_function_rank", 67 | color = "white", 68 | backgroundColor = DT::styleEqual( 69 | onc_enrich_report[["config"]][["unknown_function"]][["rank"]], 70 | onc_enrich_report[["config"]][["unknown_function"]][["colors"]] 71 | ) 72 | ) 73 | 74 | 75 | ``` 76 | 77 | 78 | ```{r ufunction_genes_missing} 79 | #| echo: false 80 | #| output: asis 81 | #| eval: !expr no_ufunction_genes 82 | 83 | cat('\n
  •   NO genes with unknown or poorly defined functions were detected in the query set.  
',sep='\n') 84 | cat('\n') 85 | cat('

') 86 | 87 | ``` 88 | 89 | 90 |

91 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_cancer_hallmark_association.Rmd: -------------------------------------------------------------------------------- 1 | ### Cancer hallmark evidence 2 | 3 | * Each gene in the query set is annotated with cancer hallmarks evidence ([Hanahan & Weinberg, Cell, 2011](https://pubmed.ncbi.nlm.nih.gov/21376230/)), indicating genes associated with essential alterations in cell physiology that can dictate malignant growth. 4 | * Data has been collected from the [Open Targets Platform](https://targetvalidation.org), and we list evidence for each hallmark per gene, indicated as either being  promoted  , or  suppressed   5 | 6 |

7 | 8 | 9 | ```{r table_browse_hallmarks, echo=F, results = "asis", eval = NROW(onc_enrich_report[['data']][['cancer_hallmark']][['target']]) > 0} 10 | 11 | target_hm_shared <- crosstalk::SharedData$new( 12 | onc_enrich_report[['data']][['cancer_hallmark']][['target']]) 13 | 14 | crosstalk::bscols( 15 | list( 16 | crosstalk::filter_select("hallmark", "Cancer hallmark", target_hm_shared, ~hallmark) 17 | ) 18 | ) 19 | 20 | htmltools::br() 21 | DT::datatable(target_hm_shared, 22 | escape = F, 23 | extensions=c("Buttons","Responsive"), 24 | width = "100%", 25 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip')) |> 26 | DT::formatStyle(columns = c("promotes"), 27 | valueColumns = c('promotes'), 28 | color = "white", 29 | backgroundColor = DT::styleEqual( 30 | c(TRUE, FALSE), 31 | c("#005a32","#989898")) 32 | ) |> 33 | DT::formatStyle(columns = c("suppresses"), 34 | valueColumns = c('suppresses'), 35 | color = "white", 36 | backgroundColor = DT::styleEqual( 37 | c(TRUE, FALSE), 38 | c("#800026","#989898")) 39 | ) 40 | 41 | 42 | 43 | ``` 44 | 45 | 46 | ```{r hallmarks_missing, echo=F, results = 'asis', eval = NROW(onc_enrich_report[['data']][['cancer_hallmark']][['target']]) == 0} 47 | 48 | cat('\n
  •   NO query genes with cancer hallmark associations from Open Targets Platform were found.   
',sep='\n') 49 | cat('\n') 50 | cat('

') 51 | 52 | ``` 53 | 54 |

55 | 56 | ### {.unlisted .unnumbered .toc-ignore} 57 | 58 |   Citation Note   : If you use the output of the *Cancer hallmark evidence* module of oncoEnrichR in your research, please cite the following resources and tools: 59 | 60 | * [Nakken et al., Int J Cancer, 2023](https://doi.org/10.1002/ijc.34666) 61 | * [Ochoa et al., Nucleic Acids Res, 2021](https://pubmed.ncbi.nlm.nih.gov/33196847/) 62 | * [Hanahan & Weinberg, Cell, 2011](https://pubmed.ncbi.nlm.nih.gov/21376230/) 63 | 64 | 65 |

66 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_coexpression.Rmd: -------------------------------------------------------------------------------- 1 | ### Tumor co-expression {.tabset} 2 | 3 | * Using RNA-seq data from ~9,500 primary tumor samples in [The Cancer Genome Atlas (TCGA)](https://portal.gdc.cancer.gov/), a co-expression correlation matrix (Pearson rank correlation coefficient) was calculated, indicating pairs of genes that have their expression patterns correlated in tumors 4 | * Here, we are showing, across the main primary tumor sites in TCGA: 5 | - Tumor suppressor genes, proto-oncogenes or cancer driver genes with a **strong/very strong** (_r_ >= 0.7 or _r_ <= -0.7 ) correlation to genes in the query set 6 | - Here, a maximum of _n = 2,500_ top associations are shown per correlation direction (a more extensive set, maximum *n = 100,000*, of top associations are listed in the Excel output of *oncoEnrichR*) 7 | 8 | 9 |

10 | 11 | ```{r filter_tcga_coexp, echo=F, results='asis'} 12 | 13 | show_tcga_coexp <- list() 14 | coexp_data <- list() 15 | active_tab <- list() 16 | 17 | for(n in c('Positive','Negative')){ 18 | show_tcga_coexp[[n]] <- TRUE 19 | coexp_data[[n]] <- data.frame() 20 | active_tab[[n]] <- FALSE 21 | 22 | coexp_data[[n]] <- 23 | onc_enrich_report[['data']][['tcga']][['coexpression']] |> 24 | dplyr::filter(corrtype == n) |> 25 | dplyr::select(-corrtype) |> 26 | head(2500) 27 | 28 | if(n == 'Negative'){ 29 | coexp_data[[n]] <- coexp_data[[n]] |> 30 | dplyr::arrange(r) 31 | } 32 | 33 | if(nrow(coexp_data[[n]]) == 0){ 34 | show_tcga_coexp[[n]] <- FALSE 35 | } 36 | } 37 | 38 | if(show_tcga_coexp[['Positive']] == T){ 39 | active_tab[['Positive']] <- T 40 | }else{ 41 | if(show_tcga_coexp[['Negative']] == T){ 42 | active_tab[['Negative']] <- T 43 | }else{ 44 | active_tab[['Positive']] <- T 45 | } 46 | } 47 | 48 | ``` 49 | 50 | 51 | ```{r active_tab_positive_coexp, echo = F, results = "asis"} 52 | if(active_tab[['Positive']] == T){ 53 | cat("") 54 | cat("#### Positive correlation {.active}") 55 | cat("") 56 | }else{ 57 | cat("") 58 | cat("#### Positive correlation") 59 | cat("") 60 | } 61 | ``` 62 | 63 | 64 | ```{r table_browse_tcga_coexp, echo=F, results = "asis", eval = show_tcga_coexp[['Positive']]} 65 | 66 | coexp_genes_positive <- crosstalk::SharedData$new(coexp_data[['Positive']]) 67 | 68 | crosstalk::bscols( 69 | list( 70 | crosstalk::filter_select("target_gene", "Target gene", 71 | coexp_genes_positive, ~target_gene), 72 | crosstalk::filter_slider("r", "Correlation coefficient (r)", coexp_genes_positive, 73 | ~r, step = 0.05, min = 0.7, max = 1), 74 | crosstalk::filter_checkbox("tumor_suppressor", "Tumor suppressor (partner)", 75 | coexp_genes_positive, ~tumor_suppressor) 76 | ), 77 | list( 78 | crosstalk::filter_checkbox("oncogene", "Proto-oncogene (partner)", 79 | coexp_genes_positive, ~oncogene), 80 | crosstalk::filter_checkbox("cancer_driver", "Cancer driver (partner)", 81 | coexp_genes_positive, ~cancer_driver), 82 | crosstalk::filter_select("primary_site", "Primary site", 83 | coexp_genes_positive, ~primary_site) 84 | 85 | ) 86 | ) 87 | 88 | htmltools::br() 89 | DT::datatable(coexp_genes_positive, escape = F, 90 | extensions=c("Buttons","Responsive"), 91 | width = "100%", 92 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip') 93 | ) 94 | rm(coexp_genes_positive) 95 | 96 | 97 | ``` 98 | 99 | 100 | ```{r coexp_missing_positive, echo=F, results = 'asis', eval = !show_tcga_coexp[['Positive']]} 101 | 102 | cat('

\n
  •   No genes in the query set with strong positive correlations to tumor suppressors, oncogenes or cancer drivers.  
',sep='\n') 103 | cat('\n') 104 | cat('

') 105 | 106 | ``` 107 | 108 |

109 | 110 | 111 | ```{r active_tab_negative_coexp, echo = F, results = "asis"} 112 | if(active_tab[['Negative']] == T){ 113 | cat("") 114 | cat("#### Negative correlation {.active}") 115 | cat("") 116 | }else{ 117 | cat("") 118 | cat("#### Negative correlation") 119 | cat("") 120 | } 121 | ``` 122 | 123 | 124 | ```{r table_browse_tcga_coexp2, echo=F, results = "asis", eval = show_tcga_coexp[['Negative']]} 125 | 126 | 127 | coexp_genes_negative <- crosstalk::SharedData$new(coexp_data[['Negative']]) 128 | 129 | crosstalk::bscols( 130 | list( 131 | crosstalk::filter_select("target_gene", "Target gene", 132 | coexp_genes_negative,~target_gene), 133 | crosstalk::filter_slider("r", "Correlation coefficient (r)", 134 | coexp_genes_negative, 135 | ~r, step = 0.05, min = -1, max = -0.7), 136 | crosstalk::filter_checkbox("tumor_suppressor", "Tumor suppressor (partner)", 137 | coexp_genes_negative, ~tumor_suppressor) 138 | ), 139 | list( 140 | crosstalk::filter_checkbox("oncogene", "Proto-oncogene (partner)", 141 | coexp_genes_negative, ~oncogene), 142 | crosstalk::filter_checkbox("cancer_driver", "Cancer driver (partner)", 143 | coexp_genes_negative, ~cancer_driver), 144 | crosstalk::filter_select("primary_site", "Primary site", 145 | coexp_genes_negative, ~primary_site) 146 | ) 147 | ) 148 | 149 | htmltools::br() 150 | DT::datatable(coexp_genes_negative, escape = F, 151 | extensions=c("Buttons","Responsive"), width = "100%", 152 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip') 153 | ) 154 | rm(coexp_genes_negative) 155 | rm(coexp_data) 156 | 157 | 158 | ``` 159 |

160 | 161 | ```{r coexp_missing_negative, echo=F, results = 'asis', eval = !show_tcga_coexp[['Negative']]} 162 | cat('

\n
  •   No genes in the query set with strong negative correlations to tumor suppressors, oncogenes or cancer drivers.  
',sep='\n') 163 | cat('\n') 164 | cat('

') 165 | ``` 166 | 167 |

168 | 169 | ### {.unlisted .unnumbered .toc-ignore} 170 | 171 |   Citation Note   : If you use the output of the *Tumor co-expression* module of oncoEnrichR in your research, please cite the following resources and tools: 172 | 173 | * [Nakken et al., Int J Cancer, 2023](https://doi.org/10.1002/ijc.34666) - *oncoEnrichR* 174 | * [Weinstein et al., Nat Genet, 2013](https://pubmed.ncbi.nlm.nih.gov/24071849/) - *TCGA* 175 | 176 | 177 |

178 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_disclaimer.md: -------------------------------------------------------------------------------- 1 | 2 |


3 | DISCLAIMER:The information contained in this report is more of an exploratory procedure than a statistical analysis. The final interpretation, i.e. putting the results in the context of the study/screen, should be made by biologists/analysts rather than by any tool. 4 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_drug_target_association.Rmd: -------------------------------------------------------------------------------- 1 | ### Drug associations 2 | 3 | * Each protein/protein in the query set is annotated with: 4 | * Molecularly targeted drugs (i.e. small molecule inhibitors/antagonists or monoclonal antibodies), as found through the [Open Targets Platform](https://targetvalidation.org) and the [NCI Thesaurus](https://ncithesaurus.nci.nih.gov/ncitbrowser/) 5 | * Drugs are organized into the following buckets: 6 | * Targeted cancer drugs in early clinical development/phase (phase 1-2)(column drugs_early_phase) 7 | * Targeted cancer drugs in late clinical development/phase (phase 3-4) (column drugs_late_phase) 8 | * Approved drugs - here also showing the (cancer type) indications for which the drugs are approved for 9 | 10 |

11 | 12 | 13 | ```{r table_browse_drug_targets, echo=F, results = "asis", eval = NROW(onc_enrich_report[['data']][['drug']][['target_drugs']]) > 0} 14 | 15 | htmltools::br() 16 | DT::datatable(onc_enrich_report[['data']][['drug']][['target_drugs']], escape = F, 17 | extensions=c("Buttons","Responsive"), width = "100%", 18 | options=list(buttons = c('csv','excel'),dom = 'Bfrtip')) 19 | 20 | 21 | 22 | ``` 23 | 24 | 25 | ```{r drug_targets_missing, echo=F, results = 'asis', eval = NROW(onc_enrich_report[['data']][['drug']][['target_drugs']]) == 0} 26 | 27 | cat('\n
  •   NO query proteins with cancer drug associations from Open Targets Platform were found.   
',sep='\n') 28 | cat('\n') 29 | cat('

') 30 | 31 | ``` 32 | 33 | 34 |

35 | 36 | #### Target tractabilities {.tabset } 37 | 38 | * Each gene/protein in the query set is annotated with _[target tractability information](https://docs.targetvalidation.org/getting-started/target-tractability)_ (also known as _druggability_) towards 39 | small molecules/compounds and antibodies 40 | * Query genes are colored in varying shades of purple (from  unknown tractability  to  clinical precedence ) 41 | 42 | 43 |

44 | 45 | ##### Small molecules/compounds 46 | 47 | ```{r table_browse_tractability_sm, echo=F, results = "asis", eval = T} 48 | 49 | htmltools::br() 50 | DT::datatable(onc_enrich_report[['data']][['drug']][['tractability_sm']], escape = F, 51 | extensions=c("Buttons","Responsive"), width = "100%", 52 | options=list(buttons = c('csv','excel'), dom = 'Bfrtip')) |> 53 | DT::formatStyle( 54 | "SM_tractability_category", 55 | color = "white", 56 | backgroundColor = DT::styleEqual( 57 | onc_enrich_report[["config"]][["drug"]][["sm_levels"]], 58 | onc_enrich_report[["config"]][["drug"]][["sm_levels_colors"]] 59 | ) 60 | ) 61 | 62 | 63 | 64 | ``` 65 | 66 | 67 | ##### Antibodies 68 | 69 | ```{r table_browse_tractability_ab, echo=F, results = "asis", eval = T} 70 | 71 | htmltools::br() 72 | DT::datatable(onc_enrich_report[['data']][['drug']][['tractability_ab']], escape = F, 73 | extensions=c("Buttons","Responsive"), width = "100%", 74 | options=list(buttons = c('csv','excel'), dom = 'Bfrtip')) |> 75 | DT::formatStyle( 76 | "AB_tractability_category", 77 | color = "white", 78 | backgroundColor = DT::styleEqual( 79 | onc_enrich_report[["config"]][["drug"]][["ab_levels"]], 80 | onc_enrich_report[["config"]][["drug"]][["ab_levels_colors"]] 81 | ) 82 | ) 83 | 84 | 85 | 86 | ``` 87 | 88 |

89 | 90 | ### {.unlisted .unnumbered .toc-ignore} 91 | 92 |   Citation Note   : If you use the output of the *Drug associations* module of oncoEnrichR in your research, please cite the following resources and tools: 93 | 94 | * [Nakken et al., Int J Cancer, 2023](https://doi.org/10.1002/ijc.34666) - *oncoEnrichR* 95 | * [Ochoa et al., Nucleic Acids Res, 2021](https://pubmed.ncbi.nlm.nih.gov/33196847/) - *Open Targets Platform* 96 | * [Sioutos et al., J Biomed Inform, 2007](https://pubmed.ncbi.nlm.nih.gov/16697710/) - *NCI Thesaurus* 97 | 98 |


99 | 100 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_functional_enrichment_invalid.Rmd: -------------------------------------------------------------------------------- 1 | ### Function and pathway enrichment 2 | 3 | ```{r limited_enrichment_input, echo = F, results = "asis", eval = T} 4 | 5 | cat('

\n
  •   TOO FEW GENES (n < 5) in the query set for robust function and pathway enrichment analysis.  
',sep='\n') 6 | cat('\n') 7 | cat('

') 8 | 9 | ``` 10 | 11 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_header.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_ligand_receptor.Rmd: -------------------------------------------------------------------------------- 1 | ### Ligand-receptor interactions {.tabset} 2 | 3 |
4 | 5 | * Using data from the [CellChatDB](http://www.cellchat.org/) resource, we are here interrogating ligand-receptor interactions for members of the query set. Putative interactions are displayed along three different axes with respect to cell-cell communication: 6 | 7 | 1) Secreted Signaling (Paracrine/autocrine signaling) 8 | 2) ECM-Receptor (extracellular matrix-receptor interactions) 9 | 3) Cell-Cell Contact 10 | 11 | 12 |

13 | 14 | ```{r ligand_receptor_prep, echo = F, results = 'asis', eval = T} 15 | 16 | active_tab <- list() 17 | 18 | for(cl in c('ss','ecm','ccc')){ 19 | active_tab[[cl]] <- F 20 | } 21 | 22 | if(NROW(onc_enrich_report[['data']][['ligand_receptor']][['secreted_signaling']]) > 0){ 23 | active_tab[['ss']] <- T 24 | }else{ 25 | if(NROW(onc_enrich_report[['data']][['ligand_receptor']][['ecm_receptor']]) > 0){ 26 | active_tab[['ecm']] <- T 27 | }else{ 28 | if(NROW(onc_enrich_report[['data']][['ligand_receptor']][['cell_cell_contact']]) > 0){ 29 | active_tab[['ccc']] <- T 30 | } 31 | } 32 | } 33 | 34 | if(active_tab[['ss']] == F & 35 | active_tab[['ecm']] == F & 36 | active_tab[['ccc']] == F){ 37 | active_tab[['ss']] <- T 38 | } 39 | 40 | ``` 41 | 42 | ```{r active_tab_ss, echo = F, results = "asis"} 43 | if(active_tab[['ss']] == T){ 44 | cat("") 45 | cat("#### Secreted Signaling {.active}") 46 | cat("") 47 | }else{ 48 | cat("") 49 | cat("#### Secreted Signaling") 50 | cat("") 51 | } 52 | ``` 53 | 54 | ```{r lig_rec_interactions_1, echo = F, results = 'asis', eval = nrow(onc_enrich_report[['data']][['ligand_receptor']][['secreted_signaling']]) > 0} 55 | 56 | ligand_interactions_ss <- 57 | crosstalk::SharedData$new(onc_enrich_report[['data']][['ligand_receptor']][['secreted_signaling']]) 58 | 59 | crosstalk::bscols( 60 | list( 61 | crosstalk::filter_select("ligand", "Ligand", ligand_interactions_ss, ~ligand) 62 | ), 63 | list( 64 | crosstalk::filter_select("receptor", "Receptor", ligand_interactions_ss, ~receptor) 65 | ) 66 | ) 67 | 68 | htmltools::br() 69 | 70 | DT::datatable( 71 | ligand_interactions_ss, 72 | escape = F, 73 | extensions=c("Buttons","Responsive"), 74 | width = "100%", 75 | style = 'bootstrap', 76 | rownames = F, 77 | options=list(buttons = c('csv','excel'), 78 | pageLength = 10, 79 | bPaginate = T, 80 | dom = 'Bfrtip') 81 | ) 82 | 83 | 84 | ``` 85 |

86 | 87 | 88 | ```{r no_lig_receptor_interactions1, echo=F, results = 'asis', eval = nrow(onc_enrich_report[['data']][['ligand_receptor']][['secreted_signaling']]) == 0} 89 | cat('\n
  •   NO pair of genes in the queryset are involved in ligand-receptor interactions (CellChatDB - Secreted signalling)  
',sep='\n') 90 | cat('\n') 91 | cat('

') 92 | 93 | ``` 94 | 95 |
96 | 97 | ```{r active_tab_ecm, echo = F, results = "asis"} 98 | if(active_tab[['ecm']] == T){ 99 | cat("") 100 | cat("#### ECM-Receptor {.active}") 101 | cat("") 102 | }else{ 103 | cat("") 104 | cat("#### ECM-Receptor") 105 | cat("") 106 | } 107 | ``` 108 | 109 | 110 | ```{r lig_rec_interactions_2, echo = F, results = 'asis', eval = nrow(onc_enrich_report[['data']][['ligand_receptor']][['ecm_receptor']]) > 0} 111 | 112 | ligand_interactions_ecm <- 113 | crosstalk::SharedData$new(onc_enrich_report[['data']][['ligand_receptor']][['ecm_receptor']]) 114 | 115 | crosstalk::bscols( 116 | list( 117 | crosstalk::filter_select("ligand", "Ligand", ligand_interactions_ecm, ~ligand) 118 | ), 119 | list( 120 | crosstalk::filter_select("receptor", "Receptor", ligand_interactions_ecm, ~receptor) 121 | ) 122 | ) 123 | 124 | htmltools::br() 125 | 126 | DT::datatable( 127 | ligand_interactions_ecm, 128 | escape = F, 129 | extensions=c("Buttons","Responsive"), 130 | width = "100%", 131 | style = 'bootstrap', 132 | rownames = F, 133 | options=list(buttons = c('csv','excel'), 134 | pageLength = 10, 135 | bPaginate = T, 136 | dom = 'Bfrtip') 137 | ) 138 | 139 | 140 | ``` 141 |

142 | 143 | 144 | ```{r no_lig_receptor_interactions2, echo=F, results = 'asis', eval = nrow(onc_enrich_report[['data']][['ligand_receptor']][['ecm_receptor']]) == 0} 145 | cat('\n
  •   NO pair of genes in the queryset are involved in ligand-receptor interactions (CellChatDB - ECM Receptor)  
',sep='\n') 146 | cat('\n') 147 | cat('

') 148 | 149 | ``` 150 | 151 |
152 | 153 | ```{r active_tab_ccc, echo = F, results = "asis"} 154 | if(active_tab[['ccc']] == T){ 155 | cat("") 156 | cat("#### Cell-Cell Contact {.active}") 157 | cat("") 158 | }else{ 159 | cat("") 160 | cat("#### Cell-Cell Contact") 161 | cat("") 162 | } 163 | ``` 164 | 165 | ```{r lig_rec_interactions_3, echo = F, results = 'asis', eval = nrow(onc_enrich_report[['data']][['ligand_receptor']][['cell_cell_contact']]) > 0} 166 | 167 | ligand_interactions_ccc <- 168 | crosstalk::SharedData$new(onc_enrich_report[['data']][['ligand_receptor']][['cell_cell_contact']]) 169 | 170 | crosstalk::bscols( 171 | list( 172 | crosstalk::filter_select("ligand", "Ligand", ligand_interactions_ccc, ~ligand) 173 | ), 174 | list( 175 | crosstalk::filter_select("receptor", "Receptor", ligand_interactions_ccc, ~receptor) 176 | ) 177 | ) 178 | 179 | htmltools::br() 180 | 181 | DT::datatable( 182 | ligand_interactions_ccc, 183 | escape = F, 184 | extensions=c("Buttons","Responsive"), 185 | width = "100%", 186 | style = 'bootstrap', 187 | rownames = F, 188 | options=list(buttons = c('csv','excel'), 189 | pageLength = 10, 190 | bPaginate = T, 191 | dom = 'Bfrtip') 192 | ) 193 | 194 | 195 | ``` 196 |

197 | 198 | 199 | ```{r no_lig_receptor_interactions3, echo=F, results = 'asis', eval = nrow(onc_enrich_report[['data']][['ligand_receptor']][['cell_cell_contact']]) == 0} 200 | cat('\n
  •   NO pair of genes in the queryset are involved in ligand-receptor interactions (CellChatDB - Cell-Cell Contact)  
',sep='\n') 201 | cat('\n') 202 | cat('

') 203 | 204 | ``` 205 | 206 |

207 | 208 | ### {.unlisted .unnumbered .toc-ignore} 209 | 210 |   Citation Note   : If you use the output of the *Ligand-receptor interactions* module of oncoEnrichR in your research, please cite the following resources and tools as appropriate: 211 | 212 | * **[Nakken et al., Int J Cancer, 2023](https://doi.org/10.1002/ijc.34666)** - *oncoEnrichR* 213 | * [Jin et al., Nat Commun, 2021](https://pubmed.ncbi.nlm.nih.gov/33597522/) - *CellChatDB* 214 | 215 |

216 | 217 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_project_background.Rmd: -------------------------------------------------------------------------------- 1 | ### Project background 2 | 3 | * Project owner/contact: `r onc_enrich_report[['config']][['project_owner']]` 4 | 5 | ```{r bg, echo=F, results = "asis", eval = T} 6 | 7 | cat(paste0('* Description: ',onc_enrich_report[['config']][['project_description']])) 8 | htmltools::br() 9 | 10 | 11 | ``` 12 |
13 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_protein_domain.Rmd: -------------------------------------------------------------------------------- 1 | ### Protein domains {.tabset} 2 | 3 | * Here we show the most frequent protein domains ([PFAM](https://www.ebi.ac.uk/interpro/entry/pfam/#table)) that occur within members of the query set 4 | * Only domains occurring in more than one query target protein are shown in the table below 5 | 6 |

7 | 8 | ```{r table_browse_domain_pfam, echo=F, results = "asis", eval = NROW(onc_enrich_report[['data']][['protein_domain']][['target']]) > 0} 9 | 10 | htmltools::br() 11 | 12 | domains_recurrent <- onc_enrich_report[['data']][['protein_domain']][['target']] |> 13 | dplyr::filter(stringr::str_detect( 14 | .data$target_genes, "," 15 | )) 16 | 17 | DT::datatable(domains_recurrent, 18 | escape = F, 19 | extensions=c("Buttons","Responsive"), 20 | width = "100%", 21 | style = 'bootstrap', 22 | rownames = F, 23 | options=list(buttons = c('csv','excel'), 24 | pageLength = 10, 25 | bPaginate = T, 26 | dom = 'Bfrtip') 27 | ) 28 | 29 | 30 | ``` 31 | 32 | 33 | ```{r indicate_missing_domains, echo=F, results = 'asis', eval = NROW(onc_enrich_report[['data']][['protein_domain']][['target']]) == 0} 34 | 35 | cat('

\n
  •   NO GENES in the query set are annotated with common protein domains found in the PFAM database.   
',sep='\n') 36 | cat('\n') 37 | cat('

') 38 | 39 | ``` 40 | 41 |

42 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_query_verification.Rmd: -------------------------------------------------------------------------------- 1 | ### Query verification 2 | 3 | 4 | ```{r imperfect_stop_notice, echo = F, results = "asis", eval = onc_enrich_report[['data']][['query']]$validation_status == "imperfect_stop"} 5 | 6 | cat('

\n   - IMPORTANT NOTICE: Due to invalid entries in the query set, analysis is halted.  
   - Set \'Ignore errenous identifiers (ignore_id_err)\' = TRUE in order to ignore invalid entries and complete the analysis    with oncoEnrichR.  
',sep='\n') 7 | cat('\n') 8 | cat('

') 9 | 10 | ``` 11 | 12 | 13 | * A total of __n = `r NROW(onc_enrich_report[['data']][['query']][['target']])`__ target identifiers were provided (type: _`r onc_enrich_report[["config"]][["query"]][["id_type"]]`_, option _ignore_id_err_ = `r onc_enrich_report[["config"]][["query"]][["ignore_err"]]`) 14 | * All query identifiers have been mapped towards identifiers for known human genes (including non-ambiguous aliases), and valid/invalid entries in the query set are indicated as follows: 15 | *   Valid identifier    :   __n = `r NROW(onc_enrich_report[['data']][['query']][['target']] |> dplyr::filter(status == 'found'))`__ 16 | *   Valid identifier (mapped as alias)    :   __n = `r NROW(onc_enrich_report[['data']][['query']][['target']] |> dplyr::filter(status == 'found_as_alias'))`__ 17 | *   Invalid identifier    :   __n = `r NROW(onc_enrich_report[['data']][['query']][['target']] |> dplyr::filter(status == 'not_found'))`__ 18 | 19 |
20 | 21 | 22 | ```{r table_browse_querylist, echo=F, results = "asis", eval = T} 23 | 24 | htmltools::br() 25 | DT::datatable(onc_enrich_report[['data']][['query']][['target']], escape = F, 26 | extensions=c("Buttons","Responsive"), 27 | width = "100%", 28 | options=list(buttons = c('csv','excel'), 29 | dom = 'Bfrtip')) |> 30 | DT::formatStyle(columns = c("query_id"), 31 | valueColumns = c('status'), 32 | color = "white", 33 | backgroundColor = DT::styleEqual( 34 | c('found','not_found','found_as_alias'), 35 | c("#005a32","#800026","#238b45")) 36 | ) 37 | 38 | 39 | ``` 40 | 41 |

42 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_site.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/inst/templates/rmarkdown/_site.yml -------------------------------------------------------------------------------- /inst/templates/rmarkdown/_unknown_function.Rmd: -------------------------------------------------------------------------------- 1 | ### Poorly characterized genes 2 | 3 | * The aim of this section is to highlight poorly characterized protein-coding genes or protein-coding genes with unknown function in the query set 4 | * A set of _uncharacterized/poorly characterized human protein-coding genes (__n = `r onc_enrich_report[['config']][['unknown_function']][['num_candidates']]`__) _ have been established based on 5 | 1. Gene names specifically designated with _uncharacterized_ or _open reading frame_ 6 | 2. Missing gene function summary in [NCBI Gene](https://www.ncbi.nlm.nih.gov/gene) AND function summary in [UniProt Knowledgebase](https://uniprot.org) 7 | 3. Missing or limited (<= 2) [gene ontology (GO) annotations](https://www.ebi.ac.uk/GOA/human_release) with respect to molecular function (MF) or biological process (BP) 8 | * Ontology annotations attributed with an [electronic annotation evidence code (IEA)](http://geneontology.org/docs/guide-go-evidence-codes/) are not considered in this calculation (less reliable due to lack of manually review) 9 | 10 | * Query genes found within the set of poorly characterized protein-coding genes are listed below, colored in varying shades of red according to the level of missing characterization (from  unknown function  to  poorly defined function ) 11 | 12 |

13 | 14 | 15 | 16 | ```{r filter_unknown, echo=F, results='asis'} 17 | 18 | show_ufunction_genes <- FALSE 19 | 20 | if(nrow(onc_enrich_report[['data']][['unknown_function']][['hits_df']]) > 0){ 21 | show_ufunction_genes <- TRUE 22 | } 23 | 24 | ``` 25 | 26 | 27 | ```{r table_browse_unknown, echo=F, results = "asis", eval = show_ufunction_genes} 28 | 29 | targets_unknown_function <- crosstalk::SharedData$new( 30 | onc_enrich_report[['data']][['unknown_function']][['hits_df']] |> 31 | dplyr::rename(go_terms = go_term_link)) 32 | 33 | crosstalk::bscols( 34 | list( 35 | crosstalk::filter_select("symbol", "Target", targets_unknown_function, ~symbol), 36 | crosstalk::filter_checkbox("has_gene_summary", "Has gene summary", targets_unknown_function, ~has_gene_summary) 37 | ), 38 | list( 39 | crosstalk::filter_slider("num_go_annotations", "Number of annotated GO terms (non-IEA)", targets_unknown_function, ~num_go_terms) 40 | ) 41 | ) 42 | 43 | htmltools::br() 44 | DT::datatable(targets_unknown_function, 45 | escape = F, 46 | extensions=c("Buttons","Responsive"), 47 | width = "100%", 48 | options=list(buttons = c('csv','excel'), 49 | dom = 'Bfrtip')) |> 50 | 51 | DT::formatStyle( 52 | "symbol", 53 | "unknown_function_rank", 54 | color = "white", 55 | backgroundColor = DT::styleEqual( 56 | onc_enrich_report[["config"]][["unknown_function"]][["rank"]], 57 | onc_enrich_report[["config"]][["unknown_function"]][["colors"]] 58 | ) 59 | ) 60 | 61 | 62 | ``` 63 | 64 | 65 | ```{r ufunction_genes_missing, echo=F, results = 'asis', eval = !show_ufunction_genes} 66 | cat('\n
  •   NO genes with unknown or poorly defined functions were detected in the query set.  
',sep='\n') 67 | cat('\n') 68 | cat('

') 69 | 70 | ``` 71 | 72 | 73 |

74 | -------------------------------------------------------------------------------- /inst/templates/rmarkdown/index.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | title: "OncoEnrichR report - `r onc_enrich_report[['config']][['project_title']]`" 3 | date: '`r strftime(Sys.time(), format = "%B %d, %Y")`' 4 | bibliography: '`r system.file("bibliography.bib", package = "oncoEnrichR")`' 5 | nocite: | 6 | @Kanehisa2000-nm, @Joshi-Tope2005-bw, @Kelder2012-vj, @Ashburner2000-sy, 7 | @Von_Mering2005-jy, @Petryszak2016-jp, @Giurgiu2019-yu, @Ochoa2021-jc, 8 | @Yu2012-yk, @Clauset2004-ov, @Kleinberg1999-oo, @Hart2016-ic, @Iorio2018-ph, 9 | @Subramanian2005-ci, @Uhlen2015-sh, @Uhlen2017-mg, @Jain2019-eh, 10 | @Lever2019-xp, @Binder2014-py, @Repana2019-dd, @Sondka2018-wf, 11 | @Meldal2018-pg, @Vinayagam2013-aq, 12 | @Mermel2011-bp, @Kandasamy2010-te, @Behan2019-tf, @Hanahan2011-da, 13 | @Turei2016-wq, @Drew2021-kd, @Garcia-Alonso2019-mr, @Jin2021-tf, 14 | @De_Kegel2021-xo, @Smith2022-mk, @Martinez-Jimenez2020-qx, 15 | @Pacini2021-xm, @GTEx_Consortium2013-fz, @Nakken2023-bp 16 | --- 17 | 18 | 19 | ```{r global_options, include=FALSE} 20 | knitr::opts_chunk$set(echo = F,warning=FALSE, dpi=72, error=F, eval=T) 21 | ``` 22 | 23 |
24 | ```{r project_background, child='_project_background.Rmd', eval = T} 25 | ``` 26 | 27 | ```{r query_verification, child='_query_verification.Rmd', eval = T} 28 | ``` 29 | 30 | ```{r target_disease, child='_cancer_association.Rmd', eval = onc_enrich_report[['config']][['show']][['disease']]} 31 | ``` 32 | 33 | ```{r target_hallmark, child='_cancer_hallmark_association.Rmd', eval = onc_enrich_report[['config']][['show']][['cancer_hallmark']]} 34 | ``` 35 | 36 | ```{r target_unknown, child='_unknown_function.Rmd', eval = onc_enrich_report[['config']][['show']][['unknown_function']]} 37 | ``` 38 | 39 | ```{r target_drug, child='_drug_target_association.Rmd', eval = onc_enrich_report[['config']][['show']][['drug']]} 40 | ``` 41 | 42 | 43 | ```{r target_synthetic_lethality, child='_synthetic_lethality.Rmd', eval = onc_enrich_report[['config']][['show']][['synleth']]} 44 | ``` 45 | 46 | 47 | ```{r target_fitness, child='_fitness_lof.Rmd', eval = onc_enrich_report[['config']][['show']][['fitness']]} 48 | ``` 49 | 50 |
51 | 52 | ```{r target_complex, child='_protein_complex.Rmd', eval = onc_enrich_report[['config']][['show']][['protein_complex']]} 53 | ``` 54 | 55 | ```{r target_domain, child='_protein_domain.Rmd', eval = onc_enrich_report[['config']][['show']][['protein_domain']]} 56 | ``` 57 | 58 | 59 | ```{r target_ppi, child='_ppi.Rmd', eval = onc_enrich_report[['config']][['show']][['ppi']]} 60 | ``` 61 | 62 | ```{r target_ligand_receptor, child='_ligand_receptor.Rmd', eval = onc_enrich_report[['config']][['show']][['ligand_receptor']]} 63 | ``` 64 | 65 | 66 | ```{r target_regulatory, child='_regulatory_interactions.Rmd', eval = onc_enrich_report[['config']][['show']][['regulatory']]} 67 | ``` 68 | 69 | ```{r target_subcell, child='_subcell_comp.Rmd', eval = onc_enrich_report[['config']][['show']][['subcellcomp']]} 70 | ``` 71 | 72 | ```{r target_enrichment_invalid, child='_functional_enrichment_invalid.Rmd', eval = NROW(onc_enrich_report[['data']][['query']][['target']] |> dplyr::filter(status == "found")) < 5} 73 | ``` 74 | 75 | ```{r target_enrichment, child='_functional_enrichment.Rmd', eval = onc_enrich_report[['config']][['show']][['enrichment']]} 76 | ``` 77 | 78 | ```{r target_cell_tissue, child='_cell_tissue.Rmd', eval = onc_enrich_report[['config']][['show']][['cell_tissue']]} 79 | ``` 80 | 81 | ```{r target_tcga_aberration, child='_aberration.Rmd', eval = onc_enrich_report[['config']][['show']][['aberration']]} 82 | ``` 83 | 84 | ```{r target_tcga_coexpression, child='_coexpression.Rmd', eval = onc_enrich_report[['config']][['show']][['coexpression']]} 85 | ``` 86 | 87 | ```{r target_cancer_prognosis, child='_prognosis_survival.Rmd', eval = onc_enrich_report[['config']][['show']][['cancer_prognosis']]} 88 | ``` 89 | 90 | 91 | ```{r documentation_workflow, child='_documentation_workflow.Rmd', eval = onc_enrich_report[['data']][['query']]$validation_status != "imperfect_stop"} 92 | ``` 93 | 94 |

95 | 96 | ### References 97 | 98 | -------------------------------------------------------------------------------- /man/cancer_association_rank.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/disease_drug.R 3 | \name{cancer_association_rank} 4 | \alias{cancer_association_rank} 5 | \title{Rank a gene list according to cancer relevance to a tumor type/site} 6 | \usage{ 7 | cancer_association_rank( 8 | query = NULL, 9 | tumor_site = "Breast", 10 | query_id_type = "symbol", 11 | ignore_id_err = TRUE, 12 | include_gene_summary = FALSE, 13 | oeDB = NULL 14 | ) 15 | } 16 | \arguments{ 17 | \item{query}{character vector with gene/query identifiers (minimum 1, maximum 2,500)} 18 | 19 | \item{tumor_site}{character indicating primary tumor site of interest} 20 | 21 | \item{query_id_type}{character indicating source of query (one of 22 | "uniprot_acc", "symbol","entrezgene", or "ensembl_gene", "ensembl_mrna", 23 | "refseq_transcript_id", "ensembl_protein", "refseq_protein")} 24 | 25 | \item{ignore_id_err}{logical indicating if analysis should 26 | continue when uknown query identifiers are encountered} 27 | 28 | \item{include_gene_summary}{logical indicating if gene summary (NCBI/UniProt) should be included 29 | in output data tables} 30 | 31 | \item{oeDB}{oncoEnrichR data repository object - as returned from \code{load_db()}} 32 | } 33 | \value{ 34 | A list with two data frames: query genes ranked according to cancer relevance 35 | for the specified tumor site, and unranked query genes (no evidence found) 36 | } 37 | \description{ 38 | Function that ranks a list of human gene identifiers with respect to 39 | strength of association to a particular tumor type/site. Underlying association 40 | evidence for the cancer rank per site is pulled from the Open Targets Platform, 41 | see more details \href{https://sigven.github.io/oncoEnrichR/articles/cancer_gene_rank.html}{here}. 42 | } 43 | -------------------------------------------------------------------------------- /man/cp_output_cols.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.R 3 | \docType{data} 4 | \name{cp_output_cols} 5 | \alias{cp_output_cols} 6 | \title{Format (columns) for clusterProfiler enrichment output} 7 | \format{ 8 | A character vector of 23 variables 9 | } 10 | \usage{ 11 | cp_output_cols 12 | } 13 | \description{ 14 | Format (columns) for clusterProfiler enrichment output 15 | } 16 | \keyword{datasets} 17 | -------------------------------------------------------------------------------- /man/figures/can-cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/man/figures/can-cell.png -------------------------------------------------------------------------------- /man/figures/elixir_norway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/man/figures/elixir_norway.png -------------------------------------------------------------------------------- /man/figures/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/man/figures/logo.png -------------------------------------------------------------------------------- /man/figures/oncoenrichr_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/man/figures/oncoenrichr_overview.png -------------------------------------------------------------------------------- /man/figures/oncoenrichr_slideshow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/man/figures/oncoenrichr_slideshow.gif -------------------------------------------------------------------------------- /man/load_db.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/onco_enrichr.R 3 | \name{load_db} 4 | \alias{load_db} 5 | \title{Load oncoEnrichR data repository} 6 | \usage{ 7 | load_db(cache_dir = NA, force_download = FALSE, googledrive = FALSE) 8 | } 9 | \arguments{ 10 | \item{cache_dir}{Local directory for data download} 11 | 12 | \item{force_download}{Logical indicating if local cache should force download 13 | (i.e. set to TRUE to re-download even if data exists in cache)} 14 | 15 | \item{googledrive}{logical indicating to use googledrive or UiO server as 16 | host for downloading} 17 | } 18 | \value{ 19 | A \code{list} object with oncoEnrichR datasets, to be used as 20 | the \emph{oeDB} argument for \code{onco_enrich()} and \code{write()} 21 | } 22 | \description{ 23 | Function that fetches version-tagged oncoEnrichR data 24 | repository from Google Drive 25 | } 26 | -------------------------------------------------------------------------------- /man/tidyeval.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/utils.R 3 | \name{tidyeval} 4 | \alias{tidyeval} 5 | \title{Tidy eval helpers} 6 | \description{ 7 | \url{https://cran.r-project.org/web/packages/dplyr/vignettes/programming.html} 8 | } 9 | \keyword{internal} 10 | -------------------------------------------------------------------------------- /man/tissue_colors.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/data.R 3 | \docType{data} 4 | \name{tissue_colors} 5 | \alias{tissue_colors} 6 | \title{Colors for tissue types in the gene fitness plot section in oncoEnrichR} 7 | \format{ 8 | A character vector of 24 color codes 9 | } 10 | \usage{ 11 | tissue_colors 12 | } 13 | \description{ 14 | Colors for tissue types in the gene fitness plot section in oncoEnrichR 15 | } 16 | \keyword{datasets} 17 | -------------------------------------------------------------------------------- /man/validate_db.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/utils.R 3 | \name{validate_db} 4 | \alias{validate_db} 5 | \title{Function that validates the oncoEnrichR database object} 6 | \usage{ 7 | validate_db(oe_db) 8 | } 9 | \arguments{ 10 | \item{oe_db}{list object with annotation data for oncoEnrichR} 11 | } 12 | \description{ 13 | Function that validates the oncoEnrichR database object 14 | } 15 | \keyword{internal} 16 | -------------------------------------------------------------------------------- /man/validate_db_df.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/utils.R 3 | \name{validate_db_df} 4 | \alias{validate_db_df} 5 | \title{Function that validates a particular db object (data.frame) in oncoEnrichR} 6 | \usage{ 7 | validate_db_df(df, dbtype = "genedb") 8 | } 9 | \arguments{ 10 | \item{df}{data.frame with annotation data for oncoEnrichR} 11 | 12 | \item{dbtype}{type of oncoEnrichR datasource} 13 | } 14 | \description{ 15 | Function that validates a particular db object (data.frame) in oncoEnrichR 16 | } 17 | \keyword{internal} 18 | -------------------------------------------------------------------------------- /man/write.Rd: -------------------------------------------------------------------------------- 1 | % Generated by roxygen2: do not edit by hand 2 | % Please edit documentation in R/onco_enrichr.R 3 | \name{write} 4 | \alias{write} 5 | \title{Write oncoEnrichR report object to output file} 6 | \usage{ 7 | write( 8 | report, 9 | oeDB, 10 | file = "testReport.html", 11 | ignore_file_extension = F, 12 | overwrite = F, 13 | render_quarto_quiet = T, 14 | format = "html", 15 | ... 16 | ) 17 | } 18 | \arguments{ 19 | \item{report}{object with oncoEnrichR report data (returned by oeDB$onco_enrich)} 20 | 21 | \item{oeDB}{oncoEnrichR data repository object - as returned from \code{load_db()}} 22 | 23 | \item{file}{full filename for report output (e.g. "oe_report.html" or "oe_report.xlsx")} 24 | 25 | \item{ignore_file_extension}{logical to accept any type of filaname extensions (for Galaxy integration)} 26 | 27 | \item{overwrite}{logical indicating if existing output files may be overwritten} 28 | 29 | \item{render_quarto_quiet}{logical indicating if Quarto rendering should be done quietly} 30 | 31 | \item{format}{file format of output (html/excel)} 32 | 33 | \item{...}{options for Galaxy/non self-contained HTML. Only applicable for use in Galaxy} 34 | } 35 | \description{ 36 | Function that writes an oncoEnrichR report object to file, 37 | either as an interactive HTML report or as an Excel workbook. 38 | } 39 | -------------------------------------------------------------------------------- /oncoEnrichR.Rproj: -------------------------------------------------------------------------------- 1 | Version: 1.0 2 | ProjectId: 646ced1c-0da7-4352-be3a-671d85ffa120 3 | 4 | RestoreWorkspace: Default 5 | SaveWorkspace: Default 6 | AlwaysSaveHistory: Default 7 | 8 | EnableCodeIndexing: Yes 9 | UseSpacesForTab: Yes 10 | NumSpacesForTab: 2 11 | Encoding: UTF-8 12 | 13 | RnwWeave: Sweave 14 | LaTeX: pdfLaTeX 15 | 16 | AutoAppendNewline: Yes 17 | StripTrailingWhitespace: Yes 18 | 19 | BuildType: Package 20 | PackageUseDevtools: Yes 21 | PackageInstallArgs: --no-multiarch --with-keep.source 22 | PackageRoxygenize: rd,collate,namespace 23 | -------------------------------------------------------------------------------- /pkgdown/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/.DS_Store -------------------------------------------------------------------------------- /pkgdown/_pkgdown.yml: -------------------------------------------------------------------------------- 1 | url: https://sigven.github.io/oncoEnrichR/ 2 | title: oncoEnrichR 3 | toc: 4 | depth: 3 5 | template: 6 | bootstrap: 5 7 | bslib: 8 | info: "#014587" 9 | dropdown-link-hover-bg: "#014587" 10 | dropdown-link-hover-color: "white" 11 | dropdown-link-active-color: "white" 12 | navbar-light-color: "white" 13 | navbar-light-brand-color: "white" 14 | navbar-link-hover-color: "white !important" 15 | nav-link-hover-color: "white !important" 16 | navbar-light-brand-hover-color: "white !important" 17 | navbar-link-color: "white" 18 | includes: 19 | in_header: | 20 | 21 | 28 | authors: 29 | Sigve Nakken: 30 | href: "https://github.com/sigven" 31 | navbar: 32 | link-color: "white" 33 | light-color: "white" 34 | light-brand-color: "white" 35 | light-hover-color: "white !important" 36 | type: light 37 | bg: info 38 | structure: 39 | left: [home, installation, running, articles, changelog] 40 | right: [reference, search, github] 41 | components: 42 | home: 43 | text: Intro 44 | href: index.html 45 | installation: 46 | text: Installation 47 | href: articles/installation.html 48 | running: 49 | text: Running 50 | href: articles/running.html 51 | articles: 52 | text: Articles 53 | menu: 54 | - text: Input 55 | href: articles/input.html 56 | - text: Output 57 | href: articles/output.html 58 | - text: Annotation resources 59 | href: articles/annotation_resources.html 60 | - text: Cancer gene rank 61 | href: articles/cancer_gene_rank.html 62 | changelog: 63 | text: CHANGELOG 64 | href: articles/CHANGELOG.html 65 | home: 66 | sidebar: 67 | structure: [links, license, community, citation, authors, dev] 68 | components: 69 | citation: 70 | title: Citation 71 | text: "[Citing oncoEnrichR](authors.html#citation)" 72 | news: 73 | one_page: true 74 | -------------------------------------------------------------------------------- /pkgdown/assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/assets/.DS_Store -------------------------------------------------------------------------------- /pkgdown/assets/img/can-cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/assets/img/can-cell.png -------------------------------------------------------------------------------- /pkgdown/assets/img/elixir_norway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/assets/img/elixir_norway.png -------------------------------------------------------------------------------- /pkgdown/assets/img/oncoenrichr_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/assets/img/oncoenrichr_overview.png -------------------------------------------------------------------------------- /pkgdown/assets/img/oncoenrichr_overview2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/assets/img/oncoenrichr_overview2.png -------------------------------------------------------------------------------- /pkgdown/assets/img/oncoenrichr_slideshow2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/assets/img/oncoenrichr_slideshow2.gif -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-120x120.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/apple-touch-icon-120x120.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-152x152.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/apple-touch-icon-152x152.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-180x180.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/apple-touch-icon-180x180.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-60x60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/apple-touch-icon-60x60.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon-76x76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/apple-touch-icon-76x76.png -------------------------------------------------------------------------------- /pkgdown/favicon/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/apple-touch-icon.png -------------------------------------------------------------------------------- /pkgdown/favicon/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/favicon-16x16.png -------------------------------------------------------------------------------- /pkgdown/favicon/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/favicon-32x32.png -------------------------------------------------------------------------------- /pkgdown/favicon/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/pkgdown/favicon/favicon.ico -------------------------------------------------------------------------------- /pkgdown/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | editor_options: 3 | markdown: 4 | wrap: 72 5 | --- 6 | 7 |
8 | 9 | # oncoEnrichR 10 | 11 | **oncoEnrichR** is an R package for functional interrogation of human 12 | genesets in the context of cancer. It is primarily intended for 13 | exploratory analysis, interpretation, and prioritization of long gene 14 | lists, which represent a common output from many types of 15 | high-throughput cancer biology screens. 16 | 17 | **oncoEnrichR** can be used to interrogate results from e.g. genetic 18 | screens (siRNA/CRISPR), protein proximity labeling, or transcriptomics 19 | (differential expression). The tool queries a variety of high-quality 20 | data resources in order to assemble useful gene annotations and analyses 21 | in an interactive report (examples from the report shown below). 22 | 23 | Web-based access to **oncoEnrichR** is available at 24 | [**https://oncotools.elixir.no**](https://oncotools.elixir.no/tool_runner?tool_id=toolshed.g2.bx.psu.edu%2Frepos%2Fsigven%2Foncoenrichr%2Foncoenrichr_wrapper%2F1.5.3) 25 | 26 |
27 | 28 | 29 | 30 |

31 | 32 | ## Questions addressed by oncoEnrichR 33 | 34 | The contents of the analysis report provided by oncoEnrichR address the 35 | following scientific questions for a given gene list: 36 | 37 | - Which diseases/tumor types are known to be associated with genes in 38 | the query set, and to what extent? 39 | - Which genes in the query set are known to have oncogenic or tumor 40 | suppressive roles, using evidence from the biomedical literature and 41 | curated resources? 42 | - Which genes in the query set are attributed with cancer hallmark 43 | evidence? 44 | - Which proteins in the query sets are druggable in different cancer 45 | conditions (early and late clinical development phases)? For other 46 | proteins in the query set, what is their likelihood of being 47 | druggable? 48 | - Which protein complexes involve proteins in the query set? 49 | - Which subcellular compartments (nucleus, cytosol, plasma membrane 50 | etc) are dominant localizations for proteins in the query set? 51 | - Which protein-protein interactions are known within the query set? 52 | Are there interactions between members of the query set and other 53 | cancer-relevant proteins (e.g. proto-oncogenes, tumor-suppressors or 54 | predicted cancer drivers)? Which proteins constitute hubs in the 55 | protein-protein interaction network? 56 | - Which known regulatory interactions (TF-target) are found within the 57 | query set, and what is their mode of regulation (repressive vs. 58 | stimulating)? 59 | - Are there occurrences of known ligand-receptor interactions within 60 | the query set? 61 | - Are there specific pathways, biological processes, or pre-defined 62 | molecular signatures that are enriched within the query set, as 63 | compared to a reference/background set? 64 | - Which members of the query set are frequently mutated in tumor 65 | sample cohorts (TCGA, SNVs/InDels, homozygous deletions, copy number 66 | amplifications)? 67 | - Which members of the query set are co-expressed (strong negative or 68 | positive correlations) with cancer-relevant genes (i.e. 69 | proto-oncogenes or tumor suppressors) in tumor sample cohorts 70 | (TCGA)? 71 | - Which members of the query set are associated with better/worse 72 | survival in different cancers, considering high or low gene 73 | expression levels, mutation, or copy number status in tumors? 74 | - Which members of the query set are predicted as partners of 75 | synthetic lethality interactions? 76 | - Which members of the query set are associated with cellular 77 | loss-of-fitness in CRISPR/Cas9 whole-genome drop out screens of 78 | cancer cell lines (i.e. reduction of cell viability elicited by a 79 | gene inactivation)? Which targets are prioritized therapeutic 80 | targets, considering fitness effects and genomic biomarkers in 81 | combination? 82 | 83 | 84 | See also the [output views](articles/output.html) that addresses each of the questions above. 85 | 86 | ## News 87 | 88 | - February 27th 2025: [**1.5.3 release**](articles/CHANGELOG.html#version-1-5-3) 89 | - September 9th 2024: [**1.5.2 release**](articles/CHANGELOG.html#version-1-5-2) 90 | - August 3rd 2024: [**1.5.1 release**](articles/CHANGELOG.html#version-1-5-1) 91 | - August 16th 2023: [**1.4.2 release**](articles/CHANGELOG.html#version-1-4-2) 92 | 93 | ## Citation 94 | 95 | If you use oncoEnrichR, please cite the following publication: 96 | 97 | Sigve Nakken, Sveinung Gundersen, Fabian L. M. Bernal, Dimitris Polychronopoulos, Eivind Hovig, and Jørgen Wesche. **Comprehensive interrogation of gene lists from genome-scale cancer screens with oncoEnrichR** (2023). Int J Cancer. [doi:10.1002/ijc.34666](https://doi.org/10.1002/ijc.34666) 98 | 99 | 100 | ## Example report 101 | 102 | DOI 103 | 104 |
105 | 106 | ## Getting started 107 | 108 | - [Installation instructions](articles/installation.html) 109 | - [How to run oncoEnrichR](articles/running.html) 110 | - [Explore the various analysis outputs produced with oncoEnrichR](articles/output.html) 111 | - [Annotation resources available in oncoEnrichR](articles/annotation_resources.html) 112 | 113 | ## Contact 114 | 115 | sigven AT ifi.uio.no 116 | 117 | ## Funding and Collaboration 118 | 119 | oncoEnrichR is supported by the [Centre for Cancer Cell 120 | Reprogramming](https://www.med.uio.no/cancell/english/) at the 121 | [University of Oslo](https://www.uio.no)/[Oslo University 122 | Hospital](https://radium.no), and [Elixir Norway (Oslo 123 | node)](https://elixir.no/organization/organisation/elixir-uio). 124 | 125 |

126 | 127 |

128 | 129 | 130 | 131 |       132 | 133 | 134 | 135 |

136 | -------------------------------------------------------------------------------- /tests/testthat.R: -------------------------------------------------------------------------------- 1 | library(testthat) 2 | suppressPackageStartupMessages(library(oncoEnrichR)) 3 | 4 | 5 | load(system.file("internal_db/oedb.rda", package = "oncoEnrichR")) 6 | 7 | # log4r_logger <- log4r::logger( 8 | # threshold = "INFO", 9 | # appenders = log4r::console_appender(oncoEnrichR:::log4r_layout)) 10 | 11 | myc_data <- read.csv(system.file("extdata","myc_data.csv", 12 | package = "oncoEnrichR"), 13 | stringsAsFactors = F) |> 14 | dplyr::inner_join(oedb$genedb$all, by = "symbol", 15 | multiple = "all") |> 16 | dplyr::filter(!is.na(entrezgene)) 17 | 18 | bg_set <- 19 | oedb[['genedb']][['all']] |> 20 | dplyr::filter(.data$gene_biotype == "protein_coding") |> 21 | dplyr::filter(!is.na(.data$entrezgene)) |> 22 | dplyr::distinct() 23 | 24 | background_sample <- bg_set |> 25 | dplyr::sample_n(250) 26 | 27 | background_sample_entrez <- as.character(background_sample$entrezgene) 28 | background_full_entrez <- as.character(bg_set$entrezgene) 29 | 30 | testthat::test_check("oncoEnrichR") 31 | -------------------------------------------------------------------------------- /tests/testthat/test_complex.R: -------------------------------------------------------------------------------- 1 | 2 | test_that("Protein complex annotations - testing input parameters ", { 3 | expect_error(oncoEnrichR:::annotate_protein_complex()) 4 | expect_error(oncoEnrichR:::annotate_protein_complex( 5 | query_entrez = as.integer(1042))) 6 | expect_error(oncoEnrichR:::annotate_protein_complex( 7 | genedb = oedb$genedb$all, 8 | query_entrez = as.integer(1042))) 9 | expect_error(oncoEnrichR:::annotate_protein_complex( 10 | complex_db = oedb$genedb$proteincomplexdb$db, 11 | genedb = oedb$genedb$all, 12 | query_entrez = as.integer(1042))) 13 | expect_error(oncoEnrichR:::annotate_protein_complex( 14 | complex_db = oedb$genedb$proteincomplexdb$db, 15 | complex_up_xref = oedb$genedb$proteincomplexdb$up_xref, 16 | genedb = oedb$genedb$all, 17 | query_entrez = as.integer(1042))) 18 | 19 | expect_error(oncoEnrichR:::annotate_protein_complex( 20 | complex_db = oedb$genedb$proteincomplexdb$db, 21 | complex_up_xref = oedb$genedb$proteincomplexdb$up_xref, 22 | transcript_xref = oedb$genedb$transcript_xref, 23 | genedb = oedb$genedb$all, 24 | query_entrez = "1042")) 25 | 26 | expect_error(oncoEnrichR:::annotate_protein_complex( 27 | complex_db = oedb$genedb$proteincomplexdb$db, 28 | complex_up_xref = oedb$genedb$proteincomplexdb$up_xref, 29 | transcript_xref = oedb$genedb$all, 30 | genedb = oedb$genedb$all, 31 | query_entrez = as.integer(1042))) 32 | 33 | ## Get protein complexes related to EGFR (entrezgene = 1956) 34 | ## check that output is list 35 | expect_identical( 36 | typeof( 37 | oncoEnrichR:::annotate_protein_complex( 38 | query_entrez = as.integer(1956), 39 | genedb = oedb$genedb$all, 40 | complex_db = oedb$genedb$proteincomplexdb$db, 41 | complex_up_xref = oedb$genedb$proteincomplexdb$up_xref, 42 | transcript_xref = oedb$genedb$transcript_xref, 43 | otdb_gene_rank = oedb$otdb$gene_rank) 44 | ), 45 | "list" 46 | ) 47 | 48 | expect_identical( 49 | colnames( 50 | oncoEnrichR:::annotate_protein_complex( 51 | query_entrez = as.integer(1956), 52 | genedb = oedb$genedb$all, 53 | complex_db = oedb$genedb$proteincomplexdb$db, 54 | complex_up_xref = oedb$genedb$proteincomplexdb$up_xref, 55 | transcript_xref = oedb$genedb$transcript_xref, 56 | otdb_gene_rank = oedb$otdb$gene_rank)$omnipath 57 | ), 58 | c("complex_name", "target_genes", 59 | "literature", "complex_genes", 60 | "annotation_source", "disease_comment", 61 | "complex_cancer_rank_score", "num_target_members", 62 | "complex_comment", 63 | "confidence", "purification_method") 64 | ) 65 | 66 | ## check that EGFR returns more than one hit from the OmniPath resource 67 | expect_gt( 68 | NROW( 69 | oncoEnrichR:::annotate_protein_complex( 70 | query_entrez = as.integer(1956), 71 | genedb = oedb$genedb$all, 72 | complex_db = oedb$genedb$proteincomplexdb$db, 73 | complex_up_xref = oedb$genedb$proteincomplexdb$up_xref, 74 | transcript_xref = oedb$genedb$transcript_xref, 75 | otdb_gene_rank = oedb$otdb$gene_rank)$omnipath 76 | ), 77 | 0 78 | ) 79 | 80 | expect_gt( 81 | NROW( 82 | oncoEnrichR:::annotate_protein_complex( 83 | query_entrez = as.integer(29844), 84 | genedb = oedb$genedb$all, 85 | complex_db = oedb$genedb$proteincomplexdb$db, 86 | complex_up_xref = oedb$genedb$proteincomplexdb$up_xref, 87 | transcript_xref = oedb$genedb$transcript_xref, 88 | otdb_gene_rank = oedb$otdb$gene_rank 89 | )$humap2 90 | ), 91 | as.integer(0) 92 | ) 93 | 94 | }) 95 | -------------------------------------------------------------------------------- /tests/testthat/test_enrich.R: -------------------------------------------------------------------------------- 1 | 2 | test_that("GO enrichment/ORA functionality (clusterProfiler) - testing ", { 3 | expect_error(oncoEnrichR:::get_go_enrichment( 4 | query_entrez = "200")) 5 | expect_error(oncoEnrichR:::get_go_enrichment( 6 | query_entrez = "200", 7 | genedb = oedb$genedb$all, 8 | background_entrez = background_full_entrez, 9 | p_value_adjustment_method = "UNKNOWN")) 10 | expect_error(oncoEnrichR:::get_go_enrichment( 11 | query_entrez = "200", 12 | genedb = oedb$genedb$all, 13 | background_entrez = background_full_entrez, 14 | p_value_cutoff = 2)) 15 | expect_error(oncoEnrichR:::get_go_enrichment( 16 | query_entrez = "200", 17 | genedb = oedb$genedb$all, 18 | background_entrez = background_full_entrez, 19 | q_value_cutoff = 2)) 20 | expect_error(oncoEnrichR:::get_go_enrichment( 21 | query_entrez = "200", 22 | genedb = oedb$genedb$all, 23 | background_entrez = background_full_entrez, 24 | ontology = "UNKNOWN")) 25 | 26 | expect_error( 27 | oncoEnrichR:::get_go_enrichment( 28 | query_entrez = as.integer( 29 | c(3845, 4609)), 30 | genedb = oedb$genedb$all, 31 | background_entrez = background_full_entrez, 32 | ) 33 | ) 34 | 35 | expect_true( 36 | is.data.frame( 37 | oncoEnrichR:::get_go_enrichment( 38 | query_entrez = c("3845", "4609"), 39 | genedb = oedb$genedb$all, 40 | background_entrez = background_full_entrez, 41 | 42 | ) 43 | ) 44 | ) 45 | 46 | expect_gte( 47 | NROW( 48 | oncoEnrichR:::get_go_enrichment( 49 | query_entrez = c("3845", "4609"), 50 | genedb = oedb$genedb$all, 51 | background_entrez = background_full_entrez, 52 | 53 | ) 54 | ), 55 | as.integer(0) 56 | ) 57 | 58 | 59 | expect_identical( 60 | colnames( 61 | oncoEnrichR:::get_go_enrichment( 62 | query_entrez = c("3845", "4609"), 63 | genedb = oedb$genedb$all, 64 | background_entrez = background_full_entrez, 65 | ) 66 | ), 67 | oncoEnrichR::cp_output_cols 68 | ) 69 | 70 | expect_identical( 71 | oncoEnrichR:::get_go_enrichment( 72 | query_entrez = c("3845", "4609"), 73 | background_entrez = utils::head( 74 | background_sample_entrez, 20), 75 | genedb = oedb$genedb$all 76 | ), 77 | NULL 78 | ) 79 | 80 | }) 81 | 82 | test_that("Universal enrichment/ORA functionality (clusterProfiler) - testing ", { 83 | expect_error(oncoEnrichR:::get_universal_enrichment( 84 | query_entrez = "200")) 85 | expect_error(oncoEnrichR:::get_universal_enrichment( 86 | query_entrez = "200", 87 | background_entrez = background_full_entrez)) 88 | 89 | expect_error(oncoEnrichR:::get_universal_enrichment( 90 | query_entrez = "200", 91 | p_value_adjustment_method = "UNKNOWN", 92 | genedb = oedb$genedb$all, 93 | background_entrez = background_full_entrez)) 94 | 95 | expect_error(oncoEnrichR:::get_universal_enrichment( 96 | query_entrez = "200", 97 | p_value_cutoff = 2, 98 | genedb = oedb$genedb$all, 99 | background_entrez = background_full_entrez)) 100 | 101 | expect_error(oncoEnrichR:::get_universal_enrichment( 102 | query_entrez = "200", 103 | q_value_cutoff = 2, 104 | genedb = oedb$genedb$all, 105 | background_entrez = background_full_entrez)) 106 | 107 | for(c in c("WikiPathways","NetPath","KEGG")){ 108 | 109 | pway_db <- tolower(c) 110 | 111 | expect_gte( 112 | NROW( 113 | oncoEnrichR:::get_universal_enrichment( 114 | query_entrez = as.character( 115 | myc_data$entrezgene), 116 | background_entrez = background_full_entrez, 117 | genedb = oedb$genedb$all, 118 | dbsource = c, 119 | TERM2GENE = oedb$pathwaydb[[pway_db]]$TERM2GENE, 120 | TERM2NAME = oedb$pathwaydb[[pway_db]]$TERM2NAME) 121 | ), 122 | 1 123 | ) 124 | 125 | expect_identical( 126 | colnames( 127 | oncoEnrichR:::get_universal_enrichment( 128 | query_entrez = as.character( 129 | myc_data$entrezgene), 130 | genedb = oedb$genedb$all, 131 | background_entrez = background_full_entrez, 132 | dbsource = c, 133 | TERM2GENE = oedb$pathwaydb[[pway_db]]$TERM2GENE, 134 | TERM2NAME = oedb$pathwaydb[[pway_db]]$TERM2NAME) 135 | ), 136 | oncoEnrichR::cp_output_cols 137 | ) 138 | 139 | } 140 | 141 | expect_gte( 142 | NROW( 143 | oncoEnrichR:::get_universal_enrichment( 144 | query_entrez = as.character( 145 | myc_data$entrezgene), 146 | background_entrez = background_full_entrez, 147 | genedb = oedb$genedb$all, 148 | dbsource = "MSIGDB/HALLMARK", 149 | TERM2GENE = oedb$pathwaydb$msigdb$COLLECTION$H$ALL$TERM2GENE, 150 | TERM2NAME = oedb$pathwaydb$msigdb$COLLECTION$H$ALL$TERM2NAME, 151 | TERM2SOURCE = oedb$pathwaydb$msigdb$TERM2SOURCE) 152 | ), 153 | 1 154 | ) 155 | 156 | expect_identical( 157 | colnames( 158 | oncoEnrichR:::get_universal_enrichment( 159 | query_entrez = as.character( 160 | myc_data$entrezgene), 161 | genedb = oedb$genedb$all, 162 | background_entrez = background_full_entrez, 163 | dbsource = "MSIGDB/HALLMARK", 164 | TERM2GENE = oedb$pathwaydb$msigdb$COLLECTION$H$ALL$TERM2GENE, 165 | TERM2NAME = oedb$pathwaydb$msigdb$COLLECTION$H$ALL$TERM2NAME, 166 | TERM2SOURCE = oedb$pathwaydb$msigdb$TERM2SOURCE) 167 | ), 168 | oncoEnrichR::cp_output_cols 169 | ) 170 | 171 | expect_identical( 172 | oncoEnrichR:::get_universal_enrichment( 173 | query_entrez = as.character( 174 | myc_data$entrezgene), 175 | genedb = oedb$genedb$all, 176 | background_entrez = background_sample_entrez, 177 | dbsource = "NetPath", 178 | TERM2GENE = oedb$pathwaydb$netpath$TERM2GENE, 179 | TERM2NAME = oedb$pathwaydb$netpath$TERM2NAME), 180 | NULL 181 | ) 182 | 183 | }) 184 | -------------------------------------------------------------------------------- /tests/testthat/test_fitness.R: -------------------------------------------------------------------------------- 1 | 2 | test_that("Gene fitness scores (Project Score) - testing ", { 3 | expect_error(oncoEnrichR:::get_fitness_lof_scores( 4 | qgenes = c("EGFR","KRAS"))) 5 | 6 | expect_identical( 7 | names( 8 | oncoEnrichR:::get_fitness_lof_scores( 9 | qgenes = c("EGFR","KRAS"), 10 | depmapdb = oedb$depmapdb 11 | ) 12 | ), 13 | c("targets","n_targets") 14 | ) 15 | 16 | expect_true( 17 | is.data.frame( 18 | oncoEnrichR:::get_fitness_lof_scores( 19 | qgenes = c("EGFR","KRAS"), 20 | depmapdb = oedb$depmapdb 21 | )$targets 22 | ) 23 | ) 24 | 25 | expect_identical( 26 | names( 27 | oncoEnrichR:::get_fitness_lof_scores( 28 | qgenes = c("EGFR","KRAS"), 29 | depmapdb = oedb$depmapdb 30 | )$targets 31 | ), 32 | c("symbol", 33 | "symbol_link_ps", 34 | "model_name", 35 | "scaled_BF", 36 | "tissue", 37 | "model_link_ps", 38 | "cancer_type", 39 | "sample_site", 40 | "tissue_status", 41 | "n_gene_tissue", 42 | "n_gene") 43 | ) 44 | 45 | expect_gt( 46 | NROW( 47 | oncoEnrichR:::get_fitness_lof_scores( 48 | qgenes = c("EGFR","KRAS"), 49 | depmapdb = oedb$depmapdb 50 | )$targets 51 | ), 52 | as.integer(0) 53 | ) 54 | 55 | expect_equal( 56 | NROW( 57 | oncoEnrichR:::get_fitness_lof_scores( 58 | qgenes = c("AQP4"), 59 | depmapdb = oedb$depmapdb 60 | )$targets 61 | ), 62 | as.integer(0) 63 | ) 64 | 65 | }) 66 | 67 | 68 | test_that("Target priority scores (Project Score) - testing ", { 69 | expect_error(oncoEnrichR:::get_target_priority_scores( 70 | qgenes = c("EGFR","KRAS"))) 71 | 72 | expect_identical( 73 | names( 74 | oncoEnrichR:::get_target_priority_scores( 75 | qgenes = c("EGFR","KRAS"), 76 | depmapdb = oedb$depmapdb 77 | ) 78 | ), 79 | c("targets","n_pri_targets") 80 | ) 81 | 82 | expect_true( 83 | is.data.frame( 84 | oncoEnrichR:::get_target_priority_scores( 85 | qgenes = c("EGFR","KRAS"), 86 | depmapdb = oedb$depmapdb 87 | )$targets 88 | ) 89 | ) 90 | 91 | expect_identical( 92 | names( 93 | oncoEnrichR:::get_target_priority_scores( 94 | qgenes = c("EGFR","KRAS"), 95 | depmapdb = oedb$depmapdb 96 | )$targets 97 | ), 98 | c("symbol","tumor_type", 99 | "priority_score") 100 | ) 101 | 102 | expect_gt( 103 | NROW( 104 | oncoEnrichR:::get_target_priority_scores( 105 | qgenes = c("EGFR","KRAS"), 106 | depmapdb = oedb$depmapdb 107 | )$targets 108 | ), 109 | as.integer(0) 110 | ) 111 | 112 | expect_equal( 113 | NROW( 114 | oncoEnrichR:::get_target_priority_scores( 115 | qgenes = c("AQP4"), 116 | depmapdb = oedb$depmapdb 117 | )$targets 118 | ), 119 | as.integer(0) 120 | ) 121 | 122 | }) 123 | 124 | 125 | -------------------------------------------------------------------------------- /tests/testthat/test_ligandreceptor.R: -------------------------------------------------------------------------------- 1 | 2 | load(system.file("internal_db/oedb.rda", package = "oncoEnrichR")) 3 | 4 | test_that("Ligand-receptor interactions - testing ", { 5 | expect_error( 6 | oncoEnrichR:::annotate_ligand_receptor_interactions( 7 | qgenes = c("EGFR", "EGF") 8 | ) 9 | ) 10 | expect_error( 11 | oncoEnrichR:::annotate_ligand_receptor_interactions( 12 | qgenes = c("EGFR", "EGF"), 13 | genedb = oedb$genedb$all 14 | ) 15 | ) 16 | expect_error( 17 | oncoEnrichR:::annotate_ligand_receptor_interactions( 18 | qgenes = c("EGFR", "EGF"), 19 | genedb = oedb$genedb$all, 20 | ligand_receptor_db = oedb$ligandreceptordb$cellchatdb$db 21 | ) 22 | ) 23 | expect_error( 24 | oncoEnrichR:::annotate_ligand_receptor_interactions( 25 | qgenes = as.integer(c(200,300)), 26 | genedb = oedb$genedb$all, 27 | ligand_receptor_db = oedb$ligandreceptordb$cellchatdb$db, 28 | ligand_receptor_xref = oedb$ligandreceptordb$cellchatdb$xref) 29 | ) 30 | 31 | expect_gte( 32 | NROW( 33 | oncoEnrichR:::annotate_ligand_receptor_interactions( 34 | qgenes = c("EGFR", "EGF"), 35 | genedb = oedb$genedb$all, 36 | ligand_receptor_db = oedb$ligandreceptordb$cellchatdb$db, 37 | ligand_receptor_xref = oedb$ligandreceptordb$cellchatdb$xref)$secreted_signaling 38 | ), 39 | 1 40 | ) 41 | 42 | }) 43 | -------------------------------------------------------------------------------- /tests/testthat/test_oncoenrichr.R: -------------------------------------------------------------------------------- 1 | 2 | test_that("oncoEnrichR - initialize report", { 3 | 4 | expect_identical( 5 | typeof( 6 | oncoEnrichR:::init_report( 7 | oedb, 8 | project_title = "Project title", 9 | project_owner = "Project owner", 10 | query_id_type = "symbol", 11 | ignore_id_err = TRUE, 12 | project_description = "Project description", 13 | ppi_string_min_score = 0.9, 14 | ppi_add_nodes = 30, 15 | ppi_show_drugs = T, 16 | bgset_description = 17 | "All annotated protein-coding genes", 18 | bgset_id_type = "symbol", 19 | enrichment_p_value_cutoff = 0.05, 20 | enrichment_p_value_adj = "BH", 21 | enrichment_q_value_cutoff = 0.2, 22 | enrichment_min_geneset_size = 10, 23 | enrichment_max_geneset_size = 500, 24 | enrichment_plot_num_terms = 20, 25 | enrichment_simplify_go = F, 26 | subcellcomp_min_confidence = 2, 27 | subcellcomp_show_cytosol = F, 28 | regulatory_min_confidence = "D", 29 | show_ppi = T, 30 | show_disease = T, 31 | show_top_diseases_only = T, 32 | show_cancer_hallmarks = T, 33 | show_drug = T, 34 | show_enrichment = T, 35 | show_aberration = T, 36 | show_coexpression = T, 37 | show_subcell_comp = T, 38 | show_fitness = T, 39 | show_ligand_receptor = T, 40 | show_regulatory = T, 41 | show_unknown_function = T, 42 | show_prognostic = T, 43 | show_complex = T) 44 | ), 45 | "list" 46 | ) 47 | 48 | }) 49 | 50 | 51 | test_that("oncoEnrichR - generate report", { 52 | 53 | expect_output( 54 | oncoEnrichR::onco_enrich( 55 | query = myc_data[['symbol']], 56 | oeDB = NULL 57 | ), 58 | regexp = "ERROR: " 59 | ) 60 | 61 | expect_output( 62 | oncoEnrichR::onco_enrich( 63 | query = NULL, 64 | oeDB = oedb 65 | ), 66 | regexp = "ERROR: " 67 | ) 68 | 69 | expect_output( 70 | oncoEnrichR::onco_enrich( 71 | query = as.integer(100), 72 | oeDB = oedb 73 | ), 74 | regexp = "ERROR: " 75 | ) 76 | 77 | expect_output( 78 | oncoEnrichR::onco_enrich( 79 | query = myc_data$symbol, 80 | bgset = as.integer(100), 81 | oeDB = oedb 82 | ), 83 | regexp = "ERROR: " 84 | ) 85 | 86 | expect_output( 87 | oncoEnrichR::onco_enrich( 88 | query = myc_data$symbol, 89 | oeDB = oedb, 90 | enrichment_p_value_adj = "UNKNOWN_ADJUSTMENT" 91 | ), 92 | regexp = "ERROR: " 93 | ) 94 | 95 | expect_output( 96 | oncoEnrichR::onco_enrich( 97 | query = myc_data$symbol, 98 | oeDB = oedb, 99 | regulatory_min_confidence = "F" 100 | ), 101 | regexp = "ERROR: " 102 | ) 103 | 104 | expect_output( 105 | oncoEnrichR::onco_enrich( 106 | query = myc_data$symbol, 107 | oeDB = oedb, 108 | galaxy = T, 109 | show_enrichment = F, 110 | show_aberration = F, 111 | show_coexpression = F 112 | ), 113 | regexp = "NOTE: Running oncoEnrichR workflow in Galaxy mode" 114 | ) 115 | 116 | expect_output( 117 | oncoEnrichR::onco_enrich( 118 | query = myc_data$symbol, 119 | query_id_type = "UNKNOWN_TYPE", 120 | oeDB = oedb 121 | ), 122 | regexp = "ERROR: " 123 | ) 124 | 125 | expect_output( 126 | oncoEnrichR::onco_enrich( 127 | query = myc_data$symbol, 128 | bgset_id_type = "UNKNOWN_TYPE", 129 | oeDB = oedb 130 | ), 131 | regexp = "ERROR: " 132 | ) 133 | 134 | expect_output( 135 | oncoEnrichR::onco_enrich( 136 | query = myc_data$symbol, 137 | ppi_string_min_score = 1.2, 138 | oeDB = oedb 139 | ), 140 | regexp = "ERROR: " 141 | ) 142 | 143 | expect_output( 144 | oncoEnrichR::onco_enrich( 145 | query = myc_data$symbol, 146 | ppi_biogrid_min_evidence = 11, 147 | oeDB = oedb 148 | ), 149 | regexp = "ERROR: " 150 | ) 151 | 152 | expect_output( 153 | oncoEnrichR::onco_enrich( 154 | query = myc_data$symbol, 155 | enrichment_plot_num_terms = 10.7, 156 | oeDB = oedb 157 | ), 158 | regexp = "ERROR: " 159 | ) 160 | 161 | expect_output( 162 | oncoEnrichR::onco_enrich( 163 | query = myc_data$symbol, 164 | enrichment_plot_num_terms = 35, 165 | oeDB = oedb 166 | ), 167 | regexp = "ERROR: " 168 | ) 169 | 170 | expect_output( 171 | oncoEnrichR::onco_enrich( 172 | query = myc_data$symbol, 173 | subcellcomp_min_confidence = 6, 174 | oeDB = oedb 175 | ), 176 | regexp = "ERROR: " 177 | ) 178 | 179 | expect_output( 180 | oncoEnrichR::onco_enrich( 181 | query = myc_data$symbol, 182 | enrichment_p_value_cutoff = 1.2, 183 | oeDB = oedb 184 | ), 185 | regexp = "ERROR: " 186 | ) 187 | 188 | expect_output( 189 | oncoEnrichR::onco_enrich( 190 | query = myc_data$symbol, 191 | enrichment_q_value_cutoff = 1.2, 192 | oeDB = oedb 193 | ), 194 | regexp = "ERROR: " 195 | ) 196 | 197 | expect_output( 198 | oncoEnrichR::onco_enrich( 199 | query = myc_data$symbol, 200 | fitness_max_score = 1, 201 | oeDB = oedb 202 | ), 203 | regexp = "ERROR: " 204 | ) 205 | 206 | expect_error( 207 | oncoEnrichR::onco_enrich( 208 | query = myc_data$symbol, 209 | ppi_add_nodes = 70, 210 | oeDB = oedb 211 | ) 212 | ) 213 | 214 | expect_identical( 215 | typeof( 216 | oncoEnrichR::onco_enrich( 217 | query = myc_data[['symbol']], 218 | oeDB = oedb, 219 | query_id_type = "symbol", 220 | show_enrichment = T, 221 | project_title = "cMYC_BioID_screen", 222 | project_owner = "Raught et al.") 223 | ), 224 | "list" 225 | ) 226 | 227 | 228 | }) 229 | 230 | -------------------------------------------------------------------------------- /tests/testthat/test_ppi.R: -------------------------------------------------------------------------------- 1 | 2 | 3 | ppi_settings <- list() 4 | 5 | ppi_settings[["string"]] <- list() 6 | ppi_settings[["string"]][["minimum_score"]] <- 0.9 7 | ppi_settings[["string"]][["visnetwork_shape"]] <- "dot" 8 | ppi_settings[["string"]][["visnetwork_shadow"]] <- TRUE 9 | ppi_settings[["string"]][["show_drugs"]] <- TRUE 10 | ppi_settings[["string"]][["add_nodes"]] <- 30 11 | ppi_settings[["string"]][["query_type"]] <- "network" 12 | ppi_settings[["string"]][["network_type"]] <- "physical" 13 | ppi_settings[["string"]][["show_isolated_nodes"]] <- F 14 | 15 | ppi_settings[["biogrid"]] <- list() 16 | ppi_settings[["biogrid"]][['minimum_evidence']] <- 2 17 | ppi_settings[["biogrid"]][["visnetwork_shape"]] <- "dot" 18 | ppi_settings[["biogrid"]][["visnetwork_shadow"]] <- TRUE 19 | ppi_settings[["biogrid"]][["show_drugs"]] <- TRUE 20 | ppi_settings[["biogrid"]][["add_nodes"]] <- 30 21 | ppi_settings[["biogrid"]][["show_isolated_nodes"]] <- F 22 | 23 | 24 | pc_genes <- 25 | oedb$genedb$all[oedb$genedb$all$gene_biotype == "protein_coding",] 26 | 27 | test_that("Protein-protein interaction network ", { 28 | expect_error(oncoEnrichR:::get_ppi_network( 29 | settings = ppi_settings[['string']])) 30 | 31 | expect_error(oncoEnrichR:::get_ppi_network( 32 | settings = ppi_settings, 33 | genedb = oedb$genedb$all 34 | )) 35 | expect_error(oncoEnrichR:::get_ppi_network( 36 | settings = ppi_settings, 37 | genedb = oedb$genedb$all, 38 | cancerdrugdb = oedb$cancerdrugdb 39 | )) 40 | expect_error(oncoEnrichR:::get_ppi_network( 41 | settings = ppi_settings, 42 | genedb = oedb$genedb$all, 43 | cancerdrugdb = oedb$cancerdrugdb, 44 | qgenes = c("BRAF") 45 | )) 46 | 47 | expect_error(oncoEnrichR:::get_ppi_network( 48 | settings = ppi_settings, 49 | genedb = oedb$genedb$all, 50 | cancerdrugdb = oedb$cancerdrugdb, 51 | qgenes = as.integer(25912), 52 | )) 53 | 54 | expect_identical( 55 | names( 56 | oncoEnrichR:::get_ppi_network( 57 | qgenes = as.integer(25912), 58 | genedb = oedb$genedb$all, 59 | settings = ppi_settings, 60 | biogrid = oedb$biogrid, 61 | cancerdrugdb = oedb$cancerdrugdb 62 | ) 63 | ), 64 | c("source","complete_network", 65 | "hubscores") 66 | ) 67 | 68 | expect_equal( 69 | NROW( 70 | oncoEnrichR:::get_ppi_network( 71 | qgenes = as.integer(25912), 72 | genedb = oedb$genedb$all, 73 | settings = ppi_settings, 74 | biogrid = oedb$biogrid, 75 | cancerdrugdb = oedb$cancerdrugdb 76 | )$complete_network$edges 77 | ), 78 | as.integer(0) 79 | ) 80 | 81 | expect_equal( 82 | NROW( 83 | oncoEnrichR:::get_ppi_network( 84 | qgenes = as.integer(25912), 85 | genedb = oedb$genedb$all, 86 | settings = ppi_settings, 87 | biogrid = oedb$biogrid, 88 | cancerdrugdb = oedb$cancerdrugdb 89 | )$complete_network$nodes 90 | ), 91 | as.integer(0) 92 | ) 93 | 94 | ppi_settings$minimum_score <- 0.7 95 | 96 | expect_identical( 97 | names( 98 | oncoEnrichR:::get_ppi_network( 99 | qgenes = as.integer(c(1956, 673)), 100 | genedb = oedb$genedb$all, 101 | settings = ppi_settings, 102 | biogrid = oedb$biogrid, 103 | cancerdrugdb = oedb$cancerdrugdb 104 | ) 105 | ), 106 | c("source","complete_network", 107 | "community_network","hubscores") 108 | ) 109 | 110 | expect_identical( 111 | names( 112 | oncoEnrichR:::get_ppi_network( 113 | qgenes = as.integer( 114 | dplyr::sample_n(pc_genes, 300)$entrezgene), 115 | genedb = oedb$genedb$all, 116 | settings = ppi_settings, 117 | biogrid = oedb$biogrid, 118 | cancerdrugdb = oedb$cancerdrugdb 119 | ) 120 | ), 121 | c("source","complete_network", 122 | "community_network","hubscores") 123 | ) 124 | 125 | expect_identical( 126 | names( 127 | oncoEnrichR:::get_ppi_network( 128 | qgenes = as.integer(c(1956, 673)), 129 | genedb = oedb$genedb$all, 130 | settings = ppi_settings, 131 | biogrid = oedb$biogrid, 132 | cancerdrugdb = oedb$cancerdrugdb 133 | )$complete_network 134 | ), 135 | c("nodes", 136 | "edges") 137 | ) 138 | 139 | expect_true( 140 | is.data.frame( 141 | oncoEnrichR:::get_ppi_network( 142 | qgenes = as.integer(c(1956, 673)), 143 | genedb = oedb$genedb$all, 144 | settings = ppi_settings, 145 | biogrid = oedb$biogrid, 146 | cancerdrugdb = oedb$cancerdrugdb 147 | )$complete_network$nodes 148 | ) 149 | ) 150 | 151 | expect_true( 152 | is.data.frame( 153 | oncoEnrichR:::get_ppi_network( 154 | qgenes = as.integer(c(1956, 673)), 155 | genedb = oedb$genedb$all, 156 | settings = ppi_settings, 157 | biogrid = oedb$biogrid, 158 | cancerdrugdb = oedb$cancerdrugdb 159 | )$complete_network$edges 160 | ) 161 | ) 162 | 163 | expect_true( 164 | is.data.frame( 165 | oncoEnrichR:::get_ppi_network( 166 | qgenes = as.integer(c(1956, 673)), 167 | genedb = oedb$genedb$all, 168 | settings = ppi_settings, 169 | biogrid = oedb$biogrid, 170 | cancerdrugdb = oedb$cancerdrugdb 171 | )$hubscores 172 | ) 173 | ) 174 | 175 | expect_identical( 176 | colnames( 177 | oncoEnrichR:::get_ppi_network( 178 | qgenes = as.integer(c(1956, 673)), 179 | genedb = oedb$genedb$all, 180 | settings = ppi_settings, 181 | biogrid = oedb$biogrid, 182 | cancerdrugdb = oedb$cancerdrugdb 183 | )$hubscores 184 | ), 185 | c("symbol","name","hub_score") 186 | ) 187 | 188 | }) 189 | -------------------------------------------------------------------------------- /tests/testthat/test_prognostic_assocs.R: -------------------------------------------------------------------------------- 1 | 2 | test_that("Prognostic associations - HPA - input check", { 3 | expect_error(oncoEnrichR:::hpa_prognostic_genes( 4 | qgenes = c(1042), 5 | genedb = oedb$genedb$all, 6 | hpadb = NULL)) 7 | expect_error(oncoEnrichR:::hpa_prognostic_genes( 8 | qgenes = c(1042), 9 | genedb = oedb$genedb$all, 10 | hpadb = oedb$hpa, 11 | q_id_type = "WRONG_ID_TYPE")) 12 | expect_error(oncoEnrichR:::hpa_prognostic_genes( 13 | q_id_type = "entrezgene", 14 | genedb = oedb$genedb$all, 15 | hpadb = oedb$hpa, 16 | qgenes = c("200","300"))) 17 | expect_error(oncoEnrichR:::hpa_prognostic_genes( 18 | q_id_type = "symbol", qgenes = c(300,400))) 19 | 20 | expect_gte( 21 | NROW( 22 | oncoEnrichR:::hpa_prognostic_genes( 23 | q_id_type = "entrezgene", 24 | qgenes = as.integer(3845), #KRAS 25 | hpadb = oedb$hpa, 26 | genedb = oedb$genedb$all) 27 | ), 28 | as.integer(1) 29 | ) 30 | 31 | expect_equal(NROW(oncoEnrichR:::hpa_prognostic_genes( 32 | hpadb = oedb$hpa, 33 | genedb = oedb$genedb$all, 34 | qgenes = c("UNKNOWN_GENE"))), 0) 35 | 36 | expect_named(oncoEnrichR:::hpa_prognostic_genes( 37 | hpadb = oedb$hpa, 38 | genedb = oedb$genedb$all, 39 | qgenes = c("BRAF","KRAS")), 40 | c("symbol","primary_site","evidence_direction", 41 | "tumor_types", "p_value", 42 | "percentile_rank_site","percentile_rank_all", 43 | "log10_p_value")) 44 | 45 | 46 | }) 47 | 48 | test_that("Prognostic associations - CSHL - input check", { 49 | expect_error( 50 | oncoEnrichR:::km_cshl_survival_genes( 51 | qgenes = c("BRAF"), 52 | projectsurvivaldb = NULL) 53 | ) 54 | 55 | expect_error( 56 | oncoEnrichR:::km_cshl_survival_genes( 57 | qgenes = c(300,400) 58 | ) 59 | ) 60 | expect_named( 61 | oncoEnrichR:::km_cshl_survival_genes( 62 | survivaldb = oedb$survivaldb$cna, 63 | qgenes = c("BRAF","KRAS")), 64 | c("symbol","tcga_cohort","z_score") 65 | ) 66 | expect_gt( 67 | NROW( 68 | oncoEnrichR:::km_cshl_survival_genes( 69 | survivaldb = oedb$survivaldb$cna, 70 | qgenes = c("BRAF","KRAS"))), 71 | 0) 72 | 73 | }) 74 | 75 | -------------------------------------------------------------------------------- /tests/testthat/test_subcell.R: -------------------------------------------------------------------------------- 1 | 2 | test_that("Subcellular compartment annotations - testing input parameters ", { 3 | expect_error(oncoEnrichR:::annotate_subcellular_compartments( 4 | query_entrez = as.integer(c(300,400)))) 5 | expect_error(oncoEnrichR:::annotate_subcellular_compartments( 6 | query_entrez = as.integer(c(300,400)), 7 | genedb = oedb$genedb$all)) 8 | expect_error(oncoEnrichR:::annotate_subcellular_compartments( 9 | query_entrez = as.integer(c(300,400)), 10 | genedb = oedb$genedb$all)) 11 | expect_error(oncoEnrichR:::annotate_subcellular_compartments( 12 | query_entrez = as.integer(c(300,400)), 13 | genedb = oedb$genedb$all, 14 | compartments = oedb$subcelldb$compartments)) 15 | 16 | expect_error(oncoEnrichR:::annotate_subcellular_compartments( 17 | query_entrez = c("200","300"), 18 | genedb = oedb$genedb$all, 19 | compartments = oedb$subcelldb$compartments, 20 | go_gganatogram_map = oedb$subcelldb$go_gganatogram_map)) 21 | 22 | expect_identical( 23 | typeof( 24 | oncoEnrichR:::annotate_subcellular_compartments( 25 | query_entrez = as.integer(1956), 26 | genedb = oedb$genedb$all, 27 | compartments = oedb$subcelldb$compartments, 28 | go_gganatogram_map = oedb$subcelldb$go_gganatogram_map) 29 | ), 30 | "list" 31 | ) 32 | 33 | expect_identical( 34 | names( 35 | oncoEnrichR:::annotate_subcellular_compartments( 36 | query_entrez = as.integer(1956), 37 | genedb = oedb$genedb$all, 38 | compartments = oedb$subcelldb$compartments, 39 | go_gganatogram_map = oedb$subcelldb$go_gganatogram_map) 40 | ), 41 | c("all","grouped","anatogram") 42 | ) 43 | 44 | expect_identical( 45 | colnames( 46 | oncoEnrichR:::annotate_subcellular_compartments( 47 | query_entrez = as.integer(1956), 48 | genedb = oedb$genedb$all, 49 | compartments = oedb$subcelldb$compartments, 50 | go_gganatogram_map = oedb$subcelldb$go_gganatogram_map)$anatogram 51 | ), 52 | c("organ","type","colour","value") 53 | ) 54 | 55 | expect_identical( 56 | colnames( 57 | oncoEnrichR:::annotate_subcellular_compartments( 58 | query_entrez = as.integer(1956), 59 | genedb = oedb$genedb$all, 60 | compartments = oedb$subcelldb$compartments, 61 | go_gganatogram_map = oedb$subcelldb$go_gganatogram_map)$grouped 62 | ), 63 | c("compartment","targets","targetlinks","n") 64 | ) 65 | 66 | expect_identical( 67 | colnames( 68 | oncoEnrichR:::annotate_subcellular_compartments( 69 | query_entrez = as.integer(1956), 70 | genedb = oedb$genedb$all, 71 | compartments = oedb$subcelldb$compartments, 72 | go_gganatogram_map = oedb$subcelldb$go_gganatogram_map)$all 73 | ), 74 | c("symbol","genename","compartment","minimum_confidence", 75 | "supporting_channels","supporting_channels_confidence", 76 | "supporting_sources", 77 | "n_supporting_channels", 78 | "ggcompartment") 79 | ) 80 | 81 | 82 | expect_gt( 83 | (NROW( 84 | oncoEnrichR:::annotate_subcellular_compartments( 85 | query_entrez = as.integer(1956), 86 | genedb = oedb$genedb$all, 87 | compartments = oedb$subcelldb$compartments, 88 | go_gganatogram_map = oedb$subcelldb$go_gganatogram_map)$all 89 | ) - 90 | NROW( 91 | oncoEnrichR:::annotate_subcellular_compartments( 92 | query_entrez = as.integer(1956), 93 | compartments_min_confidence = 4, 94 | genedb = oedb$genedb$all, 95 | compartments = oedb$subcelldb$compartments, 96 | go_gganatogram_map = oedb$subcelldb$go_gganatogram_map)$all 97 | )), 98 | 0 99 | ) 100 | 101 | }) 102 | -------------------------------------------------------------------------------- /tests/testthat/test_tf_target.R: -------------------------------------------------------------------------------- 1 | 2 | test_that("TF-target annotations - testing ", { 3 | expect_error(oncoEnrichR:::annotate_tf_targets( 4 | qgenes = c("MYC"))) 5 | expect_error(oncoEnrichR:::annotate_tf_targets( 6 | qgenes = c("MYC"), 7 | genedb = oedb$genedb$all)) 8 | expect_error(oncoEnrichR:::annotate_tf_targets( 9 | qgenes = c("MYC"), 10 | collection = "UNKNOWN_COLLECTION", 11 | tf_target_interactions = oedb$tftargetdb, 12 | genedb = oedb$genedb$all)) 13 | 14 | expect_error(oncoEnrichR:::annotate_tf_targets( 15 | qgenes = as.integer(200), 16 | genedb = oedb$genedb$all, 17 | tf_target_interactions = oedb$tftargetdb, 18 | collection = "global")) 19 | 20 | expect_gt(NROW(oncoEnrichR:::annotate_tf_targets( 21 | qgenes = c("MYC","TP53"), 22 | genedb = oedb$genedb$all, 23 | tf_target_interactions = oedb$tftargetdb, 24 | collection = "pancancer")), 0) 25 | 26 | expect_gte( 27 | NROW( 28 | oncoEnrichR:::annotate_tf_targets( 29 | qgenes = c("TP53"), 30 | genedb = oedb$genedb$all, 31 | regulatory_min_confidence = "D", 32 | tf_target_interactions = oedb$tftargetdb, 33 | collection = "pancancer") 34 | ), 35 | NROW( 36 | oncoEnrichR:::annotate_tf_targets( 37 | qgenes = c("TP53"), 38 | genedb = oedb$genedb$all, 39 | regulatory_min_confidence = "C", 40 | tf_target_interactions = oedb$tftargetdb, 41 | collection = "pancancer") 42 | ) 43 | ) 44 | 45 | expect_gte( 46 | NROW( 47 | oncoEnrichR:::annotate_tf_targets( 48 | qgenes = c("TP53"), 49 | genedb = oedb$genedb$all, 50 | regulatory_min_confidence = "B", 51 | tf_target_interactions = oedb$tftargetdb, 52 | collection = "pancancer") 53 | ), 54 | NROW( 55 | oncoEnrichR:::annotate_tf_targets( 56 | qgenes = c("TP53"), 57 | genedb = oedb$genedb$all, 58 | regulatory_min_confidence = "A", 59 | tf_target_interactions = oedb$tftargetdb, 60 | collection = "pancancer") 61 | ) 62 | ) 63 | 64 | expect_gt( 65 | NROW( 66 | oncoEnrichR:::annotate_tf_targets( 67 | qgenes = c("SMARCA2"), 68 | genedb = oedb$genedb$all, 69 | tf_target_interactions = oedb$tftargetdb, 70 | collection = "pancancer") 71 | ), 72 | 0) 73 | 74 | expect_identical( 75 | typeof( 76 | oncoEnrichR:::retrieve_tf_target_network( 77 | oncoEnrichR:::annotate_tf_targets( 78 | qgenes = c("SMARCA2"), 79 | genedb = oedb$genedb$all, 80 | tf_target_interactions = oedb$tftargetdb, 81 | collection = "pancancer") 82 | )), 83 | "list" 84 | ) 85 | 86 | expect_identical( 87 | typeof( 88 | oncoEnrichR:::retrieve_tf_target_network( 89 | oncoEnrichR:::annotate_tf_targets( 90 | qgenes = c("MYC","TP53"), 91 | genedb = oedb$genedb$all, 92 | tf_target_interactions = oedb$tftargetdb, 93 | collection = "pancancer") 94 | )), 95 | "list" 96 | ) 97 | 98 | expect_identical( 99 | names( 100 | oncoEnrichR:::retrieve_tf_target_network( 101 | oncoEnrichR:::annotate_tf_targets( 102 | qgenes = c("MYC","TP53"), 103 | genedb = oedb$genedb$all, 104 | tf_target_interactions = oedb$tftargetdb, 105 | collection = "pancancer") 106 | )), 107 | c("nodes", "edges") 108 | ) 109 | 110 | }) 111 | -------------------------------------------------------------------------------- /tests/testthat/test_utils.R: -------------------------------------------------------------------------------- 1 | 2 | test_that("Query gene validation routine - testing ", { 3 | 4 | expect_error(oncoEnrichR:::validate_query_genes( 5 | qgenes = c("EGFR","KRAS"))) 6 | expect_error(oncoEnrichR:::validate_query_genes( 7 | genedb = oedb$genedb$all, 8 | qgenes = c("EGFR","KRAS"))) 9 | expect_error(oncoEnrichR:::validate_query_genes( 10 | transcript_xref = oedb$genedb$transcript_xref, 11 | genedb = oedb$genedb$all, 12 | q_id_type = "UNKNOWN", 13 | qgenes = c("EGFR","KRAS"))) 14 | 15 | expect_identical( 16 | names( 17 | oncoEnrichR:::validate_query_genes( 18 | qgenes = c("EGFR","KRAS"), 19 | transcript_xref = oedb$genedb$transcript_xref, 20 | genedb = oedb$genedb$all, 21 | q_id_type = "symbol" 22 | ) 23 | ), 24 | c("found", "not_found", "all", "match_status") 25 | ) 26 | 27 | expect_identical( 28 | colnames( 29 | oncoEnrichR:::validate_query_genes( 30 | qgenes = c("EGFR","KRAS"), 31 | transcript_xref = oedb$genedb$transcript_xref, 32 | genedb = oedb$genedb$all, 33 | q_id_type = "symbol" 34 | )$all 35 | ), 36 | c("query_id", "status", "symbol", "genename") 37 | ) 38 | 39 | expect_identical( 40 | colnames( 41 | oncoEnrichR:::validate_query_genes( 42 | qgenes = c("EGFR","KRAS"), 43 | transcript_xref = oedb$genedb$transcript_xref, 44 | genedb = oedb$genedb$all, 45 | q_id_type = "symbol" 46 | )$not_found 47 | ), 48 | c("entrezgene", "name", 49 | "symbol") 50 | ) 51 | 52 | expect_identical( 53 | colnames( 54 | oncoEnrichR:::validate_query_genes( 55 | qgenes = c("EGFR","KRAS"), 56 | transcript_xref = oedb$genedb$transcript_xref, 57 | genedb = oedb$genedb$all, 58 | q_id_type = "symbol" 59 | )$found 60 | ), 61 | c("entrezgene", "name", 62 | "symbol", "alias", "status", "genename") 63 | ) 64 | 65 | expect_identical( 66 | NROW( 67 | oncoEnrichR:::validate_query_genes( 68 | qgenes = "NP_005219", 69 | transcript_xref = oedb$genedb$transcript_xref, 70 | genedb = oedb$genedb$all, 71 | q_id_type = "refseq_protein" 72 | )$found 73 | ), 74 | as.integer(1) 75 | ) 76 | 77 | expect_identical( 78 | NROW( 79 | oncoEnrichR:::validate_query_genes( 80 | qgenes = "NM_005228", 81 | transcript_xref = oedb$genedb$transcript_xref, 82 | genedb = oedb$genedb$all, 83 | q_id_type = "refseq_transcript_id" 84 | )$found 85 | ), 86 | as.integer(1) 87 | ) 88 | 89 | expect_identical( 90 | NROW( 91 | oncoEnrichR:::validate_query_genes( 92 | qgenes = "1956", 93 | transcript_xref = oedb$genedb$transcript_xref, 94 | genedb = oedb$genedb$all, 95 | q_id_type = "entrezgene" 96 | )$found 97 | ), 98 | as.integer(1) 99 | ) 100 | 101 | expect_identical( 102 | NROW( 103 | oncoEnrichR:::validate_query_genes( 104 | qgenes = "ENST00000275493", 105 | transcript_xref = oedb$genedb$transcript_xref, 106 | genedb = oedb$genedb$all, 107 | q_id_type = "ensembl_mrna" 108 | )$found 109 | ), 110 | as.integer(1) 111 | ) 112 | 113 | expect_identical( 114 | NROW( 115 | oncoEnrichR:::validate_query_genes( 116 | qgenes = "ENSP00000275493", 117 | transcript_xref = oedb$genedb$transcript_xref, 118 | genedb = oedb$genedb$all, 119 | q_id_type = "ensembl_protein" 120 | )$found 121 | ), 122 | as.integer(1) 123 | ) 124 | 125 | expect_identical( 126 | NROW( 127 | oncoEnrichR:::validate_query_genes( 128 | qgenes = "ENSG00000146648", 129 | transcript_xref = oedb$genedb$transcript_xref, 130 | genedb = oedb$genedb$all, 131 | q_id_type = "ensembl_gene" 132 | )$found 133 | ), 134 | as.integer(1) 135 | ) 136 | 137 | expect_identical( 138 | NROW( 139 | oncoEnrichR:::validate_query_genes( 140 | qgenes = "P00533", 141 | transcript_xref = oedb$genedb$transcript_xref, 142 | genedb = oedb$genedb$all, 143 | q_id_type = "uniprot_acc" 144 | )$found 145 | ), 146 | as.integer(1) 147 | ) 148 | 149 | expect_identical( 150 | NROW( 151 | dplyr::filter( 152 | oncoEnrichR:::validate_query_genes( 153 | qgenes = "NISBD2", 154 | transcript_xref = oedb$genedb$transcript_xref, 155 | genedb = oedb$genedb$all, 156 | q_id_type = "symbol" 157 | )$found, 158 | status == "found_as_alias") 159 | ), 160 | as.integer(1) 161 | ) 162 | 163 | expect_output( 164 | oncoEnrichR:::validate_query_genes( 165 | qgenes = "NISBD2", 166 | transcript_xref = oedb$genedb$transcript_xref, 167 | genedb = oedb$genedb$all, 168 | q_id_type = "symbol" 169 | ), regexp = "WARNING: target gene identifiers NOT found as primary symbols" 170 | ) 171 | 172 | expect_output( 173 | oncoEnrichR:::validate_query_genes( 174 | qgenes = c("NISBD2","UNKNOWN"), 175 | ignore_id_err = F, 176 | transcript_xref = oedb$genedb$transcript_xref, 177 | genedb = oedb$genedb$all, 178 | q_id_type = "symbol" 179 | ), regexp = "ERROR: target gene identifiers NOT found: UNKNOWN" 180 | ) 181 | 182 | expect_output( 183 | oncoEnrichR:::validate_query_genes( 184 | qgenes = c("UNKNOWN"), 185 | ignore_id_err = F, 186 | transcript_xref = oedb$genedb$transcript_xref, 187 | genedb = oedb$genedb$all, 188 | q_id_type = "symbol" 189 | ), regexp = "ERROR: NO target gene identifiers found" 190 | ) 191 | 192 | }) 193 | 194 | -------------------------------------------------------------------------------- /vignettes/cancer_gene_rank.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: rmarkdown::html_vignette 3 | title: Cancer gene rank 4 | vignette: > 5 | %\VignetteEngine{knitr::knitr} 6 | %\VignetteIndexEntry{Cancer gene rank} 7 | %\usepackage[UTF-8]{inputenc} 8 | --- 9 | 10 | In oncoEnrichR, associations between human genes and phenotypes/diseases are harvested from the Open Targets Platform (OTP v2024.09, https://platform.opentargets.org/downloads/data, considering _direct_ associations only). Associations are here quantified as numerical scores in the range 0-1, with larger values indicating a stronger association between the gene and the phenotype (https://platform-docs.opentargets.org/associations#overall). Phenotypes from OTP are provided as Experimental Factor Ontology (EFO) terms. For each OTP association, we integrate the underlying data type evidence, examples being genetic associations, text mining, pathway associations, or animal models. 11 | 12 | In order to minimize the impact of associations with very weak underlying evidence, we consider only associations with support from at least two data types, and with an overall association score >= 0.02. Furthermore, in order to limit associations to cancer phenotypes, we have established a mapping between EFO terms and n = 32 primary tumor types/sites, using OncoTree as a starting point (the complete mapping is available in the R package https://github.com/sigven/phenOncoX). 13 | 14 | In order to establish an overall ranking of genes with respect to cancer relevance, we summarize, for each tumor type/site, the potential multiple OTP association scores found per gene, and compute a scaled rank between 0 and 1 (i.e. gene-tumor type rank). Next, we compute a global (i.e. pancancer) gene-cancer rank per gene by summarizing the gene-tumor type rank found across tumor types, with all genes ultimately ranked and scaled between 0 and 1 (illustration below). 15 | 16 |
17 |

18 | 19 | 20 |

21 |
22 | 23 | Note that the oncoEnrichR package contains a dedicated function `cancer_association_rank()` that provides the relative importance of query genes with respect to a particular tumor type/site. The function takes as input a character vector with gene symbols, and returns a list with genes ranked according to strength of association to the given tumor type/site, i.e. using the strategy outlined above. 24 | 25 | -------------------------------------------------------------------------------- /vignettes/input.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: rmarkdown::html_vignette 3 | title: Input 4 | vignette: > 5 | %\VignetteEngine{knitr::knitr} 6 | %\VignetteIndexEntry{Input} 7 | %\usepackage[UTF-8]{inputenc} 8 | --- 9 | 10 | ## Input data 11 | 12 | The main input to oncoEnrichR is a list of human genes, typically the top ranked hits from a high-throughput screen. The gene list can be provided by using any of the following identifiers: 13 | 14 | - Primary gene symbols (e.g. **`KRAS`**) 15 | - Entrez gene IDs (e.g. **`3845`**) 16 | - Uniprot accessions (e.g. **`P01116`**) 17 | - Ensembl gene identifiers (e.g. **`ENSG00000133703`**) 18 | - Ensembl transcript identifiers (e.g. **`ENST00000311936`**) 19 | - Ensembl protein identifiers (e.g. **`ENSP00000308495`**) 20 | - RefSeq transcript identifiers (e.g. **`NM_004985`**) 21 | - RefSeq peptide identifiers (e.g. **`NP_004976`**) 22 | 23 | The type of identifier used should be specified using the `--query_id_type` argument. Similarly, 24 | if a background gene set is specified (through the `--bgset` argument, for use in enrichment analysis), the identifier type should be set with the `--bgset_id_type` argument. 25 | 26 | If the user submits gene symbols which are no longer considered as primary gene symbols, oncoEnrichR 27 | attempts to map such cases as synonyms/aliases for the primary gene symbols. 28 | 29 | ### Number of input genes 30 | 31 | In order to keep the size of the HTML output report at a manageable level, there is currently an upper limit of 32 | 33 | * **`n = 1000`** 34 | 35 | genes that can be used as input to the tool. When running the tool through Galaxy, the limitation with respect to the number of input genes is stricter (**`n = 200`**). Note also that if the number of input genes is very low (i.e. __n = 1-5__), some analysis modules are not applicable for analysis (functional enrichment, protein-protein interaction network etc). 36 | 37 | **IMPORTANT NOTE**: Due to its large size, the HTML report can be slow to load when generating full reports with the maximum number of genes (n = 1000). We generally recommend to use oncoEnrichR with smaller querysets (< 500), as this will produce reports that can be more efficiently loaded and viewed. If you want to submit a query that pushes the limit (n = 1000), we recommend that you carefully configure the report contents/modules, in that sense producing more managable reports. 38 | 39 | 40 | -------------------------------------------------------------------------------- /vignettes/installation.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: rmarkdown::html_vignette 3 | title: Installation 4 | vignette: > 5 | %\VignetteEngine{knitr::knitr} 6 | %\VignetteIndexEntry{Installation} 7 | %\usepackage[UTF-8]{inputenc} 8 | --- 9 | 10 | ## Requirements/dependencies 11 | 12 | * R (>= version 4.1) 13 | * **quarto CLI** 14 | - Downloads available for different platforms here: [https://github.com/quarto-dev/quarto-cli/releases](https://github.com/quarto-dev/quarto-cli/releases) 15 | - When installing on Linux, make sure you include `quarto` in your PATH variable, see instructions [here](https://quarto.org/docs/download/tarball.html) 16 | - Ensure that quarto is correctly installed through `quarto check` 17 | 18 | ## Installation of oncoEnrichR with R commands 19 | 20 | 1. `install.packages('remotes')` 21 | 2. `remotes::install_github('sigven/oncoEnrichR', ref = "v1.5.3")` 22 | 3. `library(oncoEnrichR)` 23 | 24 |
25 | -------------------------------------------------------------------------------- /vignettes/module_screenshots/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/.DS_Store -------------------------------------------------------------------------------- /vignettes/module_screenshots/aberration_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/aberration_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/aberration_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/aberration_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/aberration_III.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/aberration_III.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/aberration_IV.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/aberration_IV.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/cancer_association_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/cancer_association_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/cancer_association_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/cancer_association_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/cancer_hallmarks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/cancer_hallmarks.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/cell_tissue_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/cell_tissue_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/cell_tissue_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/cell_tissue_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/drug_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/drug_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/drug_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/drug_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/enrichment_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/enrichment_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/enrichment_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/enrichment_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/excel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/excel.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/fitness_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/fitness_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/fitness_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/fitness_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/oncoEnrichR_SuppFigure1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/oncoEnrichR_SuppFigure1.png -------------------------------------------------------------------------------- /vignettes/module_screenshots/ppi_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/ppi_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/ppi_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/ppi_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/prognostic_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/prognostic_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/prognostic_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/prognostic_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/protein_complex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/protein_complex.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/protein_domains.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/protein_domains.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/query_verification.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/query_verification.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/regulatory_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/regulatory_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/regulatory_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/regulatory_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/subcell_I.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/subcell_I.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/subcell_II.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/subcell_II.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/synthetic_lethality.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/synthetic_lethality.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/tumor_coexpression.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/tumor_coexpression.jpg -------------------------------------------------------------------------------- /vignettes/module_screenshots/unknown_function.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigven/oncoEnrichR/a1d4bf46c2fc55c8ac1fb88f49401ee180903ebf/vignettes/module_screenshots/unknown_function.jpg -------------------------------------------------------------------------------- /vignettes/running.Rmd: -------------------------------------------------------------------------------- 1 | --- 2 | output: rmarkdown::html_vignette 3 | title: Running 4 | vignette: > 5 | %\VignetteEngine{knitr::knitr} 6 | %\VignetteIndexEntry{Running} 7 | %\usepackage[UTF-8]{inputenc} 8 | --- 9 | 10 | ## Key functions 11 | 12 | *oncoEnrichR* performs its operations through the following three functions: 13 | 14 | ### 1. `oncoEnrichR::load_db()` 15 | 16 | - Loads the underlying annotation data repository for oncoEnrichR, and saves 17 | it to a local cache directory. 18 | 19 |
20 | 21 | ### 2. `oncoEnrichR::onco_enrich()` 22 | 23 | - Consists of two main processing steps: 24 | 25 | 1\) Takes an input/query list of human gene/protein identifiers (e.g. UniProt accession, RefSeq/Ensembl transcript identifer etc.) as input and conducts uniform identifier conversion 26 | 27 | 2\) Performs extensive annotation, enrichment and membership analyses of the query set against underlying data sources on cancer-relevant properties of human genes and their interrelationships. 28 | 29 | - Technically, the method returns a *list object* with all contents of the analyses performed. The specific arguments/options and default values are outlined below: 30 | 31 | ``` r 32 | onco_enrich( 33 | query = NULL, 34 | oeDB = NULL, 35 | query_id_type = "symbol", 36 | ignore_id_err = TRUE, 37 | project_title = "_Project title_", 38 | project_owner = "_Project owner_", 39 | project_description = "_Project description_", 40 | bgset = NULL, 41 | bgset_id_type = "symbol", 42 | bgset_description = "All protein-coding genes", 43 | enrichment_p_value_cutoff = 0.05, 44 | enrichment_p_value_adj = "BH", 45 | enrichment_q_value_cutoff = 0.2, 46 | enrichment_min_geneset_size = 10, 47 | enrichment_max_geneset_size = 500, 48 | enrichment_plot_num_terms = 20, 49 | enrichment_simplify_go = TRUE, 50 | subcellcomp_min_confidence = 3, 51 | subcellcomp_min_channels = 1, 52 | subcellcomp_show_cytosol = FALSE, 53 | regulatory_min_confidence = "D", 54 | fitness_max_score = -2, 55 | ppi_add_nodes = 30, 56 | ppi_string_min_score = 0.9, 57 | ppi_string_network_type = "functional", 58 | ppi_biogrid_min_evidence = 3, 59 | ppi_node_shadow = TRUE, 60 | ppi_show_drugs = TRUE, 61 | ppi_show_isolated_nodes = FALSE, 62 | show_ppi = TRUE, 63 | show_disease = TRUE, 64 | show_top_diseases_only = TRUE, 65 | show_cancer_hallmarks = TRUE, 66 | show_drug = TRUE, 67 | show_enrichment = TRUE, 68 | show_aberration = FALSE, 69 | show_coexpression = FALSE, 70 | show_ligand_receptor = FALSE, 71 | show_regulatory = FALSE, 72 | show_unknown_function = TRUE, 73 | show_prognostic = TRUE, 74 | show_subcell_comp = FALSE, 75 | show_synleth = FALSE, 76 | show_fitness = TRUE, 77 | show_complex = TRUE, 78 | show_domain = FALSE) 79 | ``` 80 | 81 | See [detailed descriptions of all options here](https://sigven.github.io/oncoEnrichR/reference/onco_enrich.html) 82 | Note that not all modules of the report are enabled by default. The user can enable or disable specific modules by setting the corresponding `show_` arguments to `TRUE` or `FALSE`. 83 | 84 |
85 | 86 | ### 3. `oncoEnrichR::write()` 87 | 88 | - Consists of two main processing steps: 89 | 90 | 1\) Transformation of the raw analysis results returned by *oncoEnrichR::onco_enrich()* into various visualizations and interactive tables 91 | 92 | 2\) Assembly and generation of the final analysis report through 93 | 94 | - A\) a structured and interactive *oncoEnrichR* HTML report 95 | - B\) a multisheet Excel workbook 96 | 97 |
98 | 99 | ## Example run 100 | 101 | A target list of *n = 134* high-confidence interacting proteins with the c-MYC oncoprotein were previously identified through BioID protein proximity assay in standard cell culture and in tumor xenografts ([Dingar et al., J Proteomics, 2015](https://www.ncbi.nlm.nih.gov/pubmed/25452129)). We ran this target list through the *oncoEnrichR* analysis workflow using the following configurations for the `onco_enrich` method: 102 | 103 | - `project_title = "cMYC_BioID_screen"` 104 | - `project_owner = "Raught et al."` 105 | 106 | and produced the [following HTML report with results](https://doi.org/10.5281/zenodo.13734871). 107 | 108 | Below are R commands provided to reproduce the example output. **NOTE**: Replace "\" with a directory on your local computer: 109 | 110 | - `library(oncoEnrichR)` 111 | - `myc_interact_targets <- read.csv(system.file("extdata","myc_data.csv", package = "oncoEnrichR"), stringsAsFactors = F)` 112 | - `oeDB <- oncoEnrichR::load_db(cache_dir = "")` 113 | - `myc_report <- oncoEnrichR::onco_enrich(query = myc_interact_targets$symbol, oeDB = oeDB, project_title = "cMYC BioID screen", project_owner = "Raught et al.")` 114 | - `oncoEnrichR::write(report = myc_report, oeDB = oeDB, file = "/myc_report_oncoenrichr.html", format = "html")` 115 | - `oncoEnrichR::write(report = myc_report, oeDB = oeDB, file = "/myc_report_oncoenrichr.xlsx", format = "excel")` 116 | 117 | --------------------------------------------------------------------------------