#' URL of Bioplanet top dir #' #' @return A string with URL. #' @noRd get_bioplanet_download <- function() { getOption("BIOPLANET_PATHWAY_DOWNLOAD", "https://tripod.nih.gov/bioplanet/download") } #' URL of Bioplanet pathway file #' #' @return A string with URL. #' @noRd get_bioplanet_pathway_file <- function() { getOption("BIOPLANET_PATHWAY_FILE", "https://tripod.nih.gov/bioplanet/download/pathway.csv") } #' Get functional term data from BioPlanet #' #' Download term information (term ID and name) and gene-pathway mapping #' (NCBI gene ID, gene symbol and pathway ID) from BioPlanet. #' #' @param use_cache Logical, if TRUE, the remote file will be cached locally. #' @param on_error A character string indicating the error handling strategy: #' either "stop" to halt execution, "warn" to issue a warning and return #' `NULL` or "ignore" to return `NULL` without warnings. Defaults to "stop". #' @return A list with \code{terms} and \code{mapping} tibbles. #' @export #' @examples #' bioplanet_data <- fetch_bp(on_error = "warn") fetch_bp <- function(use_cache = TRUE, on_error = c("stop", "warn", "ignore")) { on_error <- match.arg(on_error) # Binding variables from non-standard evaluation locally PATHWAY_ID <- PATHWAY_NAME <- GENE_ID <- GENE_SYMBOL <- NULL if(!assert_url_path(get_bioplanet_download(), on_error)) return(NULL) pathway_file <- get_bioplanet_pathway_file() lpath <- cached_url_path("bioplanet_pathway", pathway_file, use_cache) paths <- readr::read_csv(lpath, show_col_types = FALSE) terms <- paths |> dplyr::select(term_id = PATHWAY_ID, term_name = PATHWAY_NAME) |> dplyr::distinct() mapping <- paths |> dplyr::select(term_id = PATHWAY_ID, ncbi_id = GENE_ID, gene_symbol = GENE_SYMBOL) |> dplyr::distinct() list( terms = terms, mapping = mapping ) }