R/create_ncbi_basic_tax_dataframe.R

Defines functions create_ncbi_basic_tax_dataframe

Documented in create_ncbi_basic_tax_dataframe

#' Create a minimal dataframe with taxonomic information extracted from NCBI.
#'
#' @param taxid A character vector containing Uniprot taxonomy id
#' @param rank_vc A character vector containing Taxonomic rank columns
#'
#' @return Dataframe
#' @export
#'
create_ncbi_basic_tax_dataframe <- function(taxid,
    rank_vc = c("superkingdom", "kingdom","phylum", "subphylum","superclass",
    "class","suborder",  "order","family","subfamily","genus","species")) {

  ## Check arguments
  if(!is.character(taxid))
    stop("'taxid' should be character")
  if(!is.character(rank_vc))
    stop("'rank_vc' should be character")
  tax_cl <- taxizedb::classification(taxid) %>%
    purrr::discard(~ any(is.na(.x)))
  purrr::map2_dfr(tax_cl, names(tax_cl),~ dplyr::filter(.x,
                                                        rank %in% rank_vc) %>%
                    dplyr::distinct(rank, .keep_all = TRUE) %>%
                    dplyr::select(name, rank) %>%
                    dplyr::mutate(taxid = .y)%>%
                    tidyr::pivot_wider(names_from = rank, values_from = name))%>%
    dplyr::distinct(taxid, .keep_all = TRUE)
}
currocam/FascinRSCA documentation built on March 21, 2022, 6:29 a.m.