From 93bd920973c39fefd2cddcbe84472518d3fae1b6 Mon Sep 17 00:00:00 2001 From: stevenpbachman Date: Fri, 31 May 2024 16:37:58 +0100 Subject: [PATCH] closes #6. fungi csvs working --- R/get_name_keys.R | 17 +++----- R/get_native_range.R | 5 +-- R/get_occs_range.R | 12 ++++-- R/make_LC_points.R | 3 +- R/make_sis_csvs.R | 92 +++++++++++++++++++++++++++++----------- R/make_sis_occs.R | 15 +++++-- R/name_search_gbif.R | 22 +++++----- R/name_search_powo.R | 18 ++++---- R/sis_countries.R | 45 ++++++++------------ R/sis_credits.R | 44 +++++++------------ R/sis_references.R | 32 +++++++------- R/sis_taxonomy.R | 4 ++ data/tdwg2iucn.rda | Bin 12708 -> 12719 bytes man/get_name_keys.Rd | 18 +++----- man/get_native_range.Rd | 5 ++- man/get_occs_range.Rd | 2 +- man/make_LC_points.Rd | 2 +- man/make_sis_csvs.Rd | 20 ++++++--- man/name_search_gbif.Rd | 28 ++++++++++++ man/name_search_powo.Rd | 5 +-- man/sis_countries.Rd | 6 +-- man/sis_taxonomy.Rd | 8 ++++ 22 files changed, 232 insertions(+), 171 deletions(-) create mode 100644 man/name_search_gbif.Rd diff --git a/R/get_name_keys.R b/R/get_name_keys.R index 9052cd3..92ab760 100644 --- a/R/get_name_keys.R +++ b/R/get_name_keys.R @@ -3,7 +3,6 @@ #' #' @param df character) Data frame with taxon names #' @param name_col (character) Column for taxon names. Include taxonomic authority for better matching -#' @param tax_status (character) Default `any` provides all taxonomic, otherwise 'accepted' #' @param match (character) Controls the output of the search. Use `single` to #' force a single match result that has the highest confidence or `any` to return #' all possible matches sorted in order of confidence @@ -12,15 +11,15 @@ #' #' @return Returns a data frame with accepted GBIF and POWO identifiers #' @export -#' @details Designed for batch processing. Default setting (tax_status = "accepted" and match = "single") -#' returns an accepted name with the best single match against GBIF and POWO name backbones. -#' Final list may return fewer names if there are discrepancies e.g. accepted +#' @details Designed for batch processing. Default setting (match = "single", kingdom = "plantae") +#' returns an accepted name with the best single match against GBIF and POWO name backbones (GBIF +#' only for kingdom = "fungi"). Final list may return fewer names if there are discrepancies e.g. accepted #' in GBIF, but not in POWO. Output data frame includes GBIF 'usageKey' that can be used with #' [`get_gbif_occs()`] to get occurrences from GBIF, and 'wcvp_ipni_id' that can be used with [`powo_range()`] -#' to get native ranges. To see a wider range of plausible matches adjust 'tax_status' and 'match' to 'any'. +#' to get native ranges. To see a wider range of plausible matches adjust 'match' to 'any'. # add option to determine which sources you want to search e.g. WCVP for plants, or IF for fungi -get_name_keys <- function(df, name_column, tax_status = "any", match = "single", kingdom = "plantae") { +get_name_keys <- function(df, name_column, match = "single", kingdom = "plantae") { # search terms search_names <- as.vector(unlist(df[, name_column])) @@ -28,8 +27,7 @@ get_name_keys <- function(df, name_column, tax_status = "any", match = "single", gbif_names_out <- purrr::map_dfr(search_names, name_search_gbif, - match = match, - gbif_tax_stat = tax_status) + match = match) colnames(gbif_names_out) <- paste0("GBIF", "_", colnames(gbif_names_out)) keys_df <- gbif_names_out @@ -39,8 +37,7 @@ get_name_keys <- function(df, name_column, tax_status = "any", match = "single", # get the POWO keys powo_names_out <- name_search_powo(df = df, - name_column = name_column, - powo_tax_stat = tax_status) + name_column = name_column) # bind them together - need to fix when WCVP returns multiple matches keys_df <- diff --git a/R/get_native_range.R b/R/get_native_range.R index 147f564..93244da 100644 --- a/R/get_native_range.R +++ b/R/get_native_range.R @@ -2,9 +2,9 @@ #' Get native ranges for taxa #' #' @param keys (data frame) Contain identifier for the taxon e.g. derived from [`get_name_keys()`] -#' @param keys (name_col) Column name for the identifier #' -#' @return (data frame) A list of places where a taxon occurs. +#' @return (data frame) A list of 'botanical countries' (World Geogrpahic Scheme for Recording Plant +#' Distributions) where a taxon occurs. #' @export #' #' @details Currently one option to get native ranges from (Plants of the @@ -14,7 +14,6 @@ get_native_range <- function(keys) { #,name_col # get the search ids - #search_ids <- as.vector(unlist(keys[, name_col])) search_ids <- as.vector(unlist(keys[, "wcvp_ipni_id"])) # run the powo range function through map_dfr diff --git a/R/get_occs_range.R b/R/get_occs_range.R index 5e1c757..d2c149c 100644 --- a/R/get_occs_range.R +++ b/R/get_occs_range.R @@ -2,22 +2,26 @@ #' #' @param sis_points (dataframe) SIS points file #' -#' @return Occurrence dataframe with ISO two-digit codes added +#' @return Occurrence dataframe with ISO two-digit codes added and internal id get_occs_range <- function(sis_points) { - sf_use_s2(FALSE) + sf::sf_use_s2(FALSE) # get unique lat longs sis_points_sf <- sf::st_as_sf(sis_points, coords = c("dec_long","dec_lat")) # prepare the tdwg polygon data - st_crs(LCr::tdwg_level3) <- st_crs(tdwg_level3) - st_crs(sis_points_sf) <- st_crs(tdwg_level3) + sf::st_crs(tdwg_level3) <- sf::st_crs(tdwg_level3) + sf::st_crs(sis_points_sf) <- sf::st_crs(tdwg_level3) # do the intersect out <- sf::st_join(sis_points_sf, tdwg_level3) + # tidy up the table with just the required fields + out <- out %>% dplyr::select("LEVEL3_COD", "sci_name", "internal_taxon_id") %>% + sf::st_drop_geometry() %>% unique() %>% tidyr::drop_na() %>% dplyr::arrange(sci_name) + return(out) } diff --git a/R/make_LC_points.R b/R/make_LC_points.R index d4ed1c5..b85927d 100644 --- a/R/make_LC_points.R +++ b/R/make_LC_points.R @@ -7,7 +7,7 @@ #' @param institution (character) Name of institution or affiliation #' @param range_check (boolean) TRUE if you want to carry out occurrence cleaning with native range filter #' -#' @return (list) Includes the GBIF citation, and "points" the cleaned SIS compatible point file +#' @return (list) Includes the GBIF "citation", and "points" the cleaned SIS compatible point file #' @export #' @details Designed for batch processing using keys derived from [`get_name_keys()`] @@ -52,7 +52,6 @@ make_LC_points <- res_list <- list("citation" = gbif_ref, "points" = final_points) } - #res_list <- list("citation" = gbif_ref, "points" = final_points) return(res_list) } diff --git a/R/make_sis_csvs.R b/R/make_sis_csvs.R index 327ff25..cd002b3 100644 --- a/R/make_sis_csvs.R +++ b/R/make_sis_csvs.R @@ -1,28 +1,45 @@ + #' Generate all SIS connect csv files #' -#' @param keys (data frame) Derived from [`get_name_keys()`] function. Must include at least GBIF_usageKey to obtain GBIF occurrences +#' @param unique_id (character) Unique identifier - default is the GBIF usage key #' @param first_name (character) First name of assessor #' @param second_name (character) Second name of assessor #' @param email (character) Email of assessor #' @param institution (character) Name of institution or affiliation #' @param gbif_ref (data frame) A GBIF download citation according to IUCN format. +#' @param powo_ref (data frame) A citation for use of POWO according to IUCN format. #' @param native_ranges (data frame) Native ranges derived from [`get_native_range()`] +#' @param family (character) Field containing the family +#' @param genus (character) Field containing the genus +#' @param species (character) Field containing the specific epithet +#' @param taxonomicAuthority (character) Field containing the taxonomic authority #' @param kingdom (character) Default is 'plantae', but can also be 'fungi' #' #' @return Returns an SIS compliant zip file #' @export make_sis_csvs <- - function(unique_id, wcvp_ipni_id, first_name, second_name, email, - institution, gbif_ref = NULL, native_ranges, - family, genus, species, taxonomicAuthority, - kingdom = "plantae", powo_ref = FALSE) { - + function(unique_id, + wcvp_ipni_id, + first_name, + second_name, + email, + institution, + gbif_ref = NULL, + powo_ref = FALSE, + native_ranges = NULL, + family, + genus, + species, + taxonomicAuthority, + kingdom = "plantae") + { if (kingdom == "plantae") { - # get most of the csvs here - countries <- sis_countries(unique_id, wcvp_ipni_id, native_ranges) + if (!is.null(native_ranges)) { + countries <- sis_countries(native_ranges) + } allfields <- sis_allfields(unique_id) assessments <- sis_assessments(unique_id) plantspecific <- sis_plantspecific(unique_id, kingdom) @@ -30,35 +47,62 @@ make_sis_csvs <- credits <- sis_credits(unique_id, first_name, second_name, email, affiliation = institution) taxonomy <- sis_taxonomy(unique_id, family, genus, species, taxonomicAuthority) - # need to embed map into the function, but these are a bit awkward - try again later - references <- purrr::map_dfr(unique_id, sis_references, powo_ref = powo_ref, gbif_ref) + # need to embed map into the function, but refs a bit awkward - try again later + references <- purrr::map_dfr(unique_id, sis_references, powo_ref = powo_ref, gbif_ref = gbif_ref) - return( - list(allfields = allfields, assessments = assessments, plantspecific = plantspecific, - habitats = habitats, taxonomy = taxonomy, credits = credits, references = references, - countries = countries + # list of default results - these should always be generated + results <- + list( + allfields = allfields, + assessments = assessments, + plantspecific = plantspecific, + habitats = habitats, + credits = credits, + taxonomy = taxonomy, + references = references ) - ) + + # countries df depends on native ranges, so only add countries if exists + if (exists("countries")) { + results$countries <- countries + } + + return(results) } if (kingdom == "fungi") { - # get most of the csvs here - #countries <- sis_countries(unique_id, wcvp_ipni_id, native_ranges) + if (!is.null(native_ranges)) { + countries <- sis_countries(native_ranges) + } allfields <- sis_allfields(unique_id) assessments <- sis_assessments(unique_id) plantspecific <- sis_plantspecific(unique_id, kingdom) habitats <- sis_habitats(unique_id) credits <- sis_credits(unique_id, first_name, second_name, email, affiliation = institution) - taxonomy <- sis_taxonomy(unique_id, family,genus, species, taxonomicAuthority) + taxonomy <- sis_taxonomy(unique_id, family, genus, species, taxonomicAuthority) - # need to embed map into the function, but these are a bit awkward - try again later + # need to embed map into the function, but refs a bit awkward - try again later references <- purrr::map_dfr(unique_id, sis_references, gbif_ref, powo_ref) - return( - list(allfields = allfields, assessments = assessments, plantspecific = plantspecific, - habitats = habitats, credits = credits, taxonomy = taxonomy, references = references + # list of default results - these should always be generated + results <- + list( + allfields = allfields, + assessments = assessments, + plantspecific = plantspecific, + habitats = habitats, + credits = credits, + taxonomy = taxonomy, + references = references ) - ) - } + + # countries df depends on native ranges, so only add countries if exists + if (exists("countries")) { + results$countries <- countries + } + + return(results) + + } } diff --git a/R/make_sis_occs.R b/R/make_sis_occs.R index cc95a16..727ea80 100644 --- a/R/make_sis_occs.R +++ b/R/make_sis_occs.R @@ -25,6 +25,7 @@ make_sis_occs <- function(occs_clean, first_name = "", second_name = "", institu basisOfRecord, elevation, catalogNumber, + speciesKey, gbifID ) @@ -42,6 +43,7 @@ make_sis_occs <- function(occs_clean, first_name = "", second_name = "", institu ) sis_points <- dplyr::mutate(sis_points, + internal_taxon_id = speciesKey, source = paste0("https://www.gbif.org/occurrence/", gbifID), yrcompiled = format(Sys.Date(), "%Y"), citation = institution, @@ -56,15 +58,20 @@ make_sis_occs <- function(occs_clean, first_name = "", second_name = "", institu basisofrec, "FOSSIL_SPECIMEN" = "FossilSpecimen", "HUMAN_OBSERVATION" = "HumanObservation", - "LITERATURE" = "", "LIVING_SPECIMEN" = "LivingSpecimen", "MACHINE_OBSERVATION" = "MachineObservation", - "OBSERVATION" = "", "PRESERVED_SPECIMEN" = "PreservedSpecimen", - "UNKNOWN" = "Unknown" + "UNKNOWN" = "Unknown", + "OCCURRENCE" = "HumanObservation", + "LITERATURE" = "", + "OBSERVATION" = "HumanObservation", + "MATERIAL_ENTITY" = "", + "MATERIAL_SAMPLE" = "PreservedSpecimen", + "MATERIAL_CITATION" = "PreservedSpecimen" ) ) - sis_points <- dplyr::select(sis_points, -gbifID) + + sis_points <- dplyr::select(sis_points, -speciesKey,-gbifID) return(sis_points) } diff --git a/R/name_search_gbif.R b/R/name_search_gbif.R index 7c47ebe..c972c9b 100644 --- a/R/name_search_gbif.R +++ b/R/name_search_gbif.R @@ -10,8 +10,6 @@ #' @param match (character) Controls the output of the search. Use `single` to #' force a single match result that has the highest confidence or `any` to return #' all possible matches sorted in order of confidence -#' @param gbif_tax_stat (character) Default `any` provides all taxonomic -#' matches, otherwise `accepted` returns only accepted names according to GBIF #' #' @return Returns a data frame with initial search term and matching name(s) #' @export @@ -21,8 +19,8 @@ name_search_gbif = function(name, species_rank = TRUE, - match = "single", - gbif_tax_stat = "any") { + match = "single") { + #gbif_tax_stat = "any") { #removed as was not working well # set up default results table default_tbl = gbif_name_tbl_(name) @@ -65,14 +63,14 @@ name_search_gbif = function(name, results = dplyr::arrange(results, dplyr::desc(confidence)) } - # option to filter on GBIF accepted species only - if (gbif_tax_stat == "any") { - results = results - } else { - if (gbif_tax_stat == "accepted") { - results = dplyr::filter(results, status == "ACCEPTED") - } - } + # # option to filter on GBIF accepted species only + # if (gbif_tax_stat == "any") { + # results = results + # } else { + # if (gbif_tax_stat == "accepted") { + # results = dplyr::filter(results, status == "ACCEPTED") + # } + # } # option to filter on maximum confidence from GBIF search - one option only "single" # or allow list of options "any" diff --git a/R/name_search_powo.R b/R/name_search_powo.R index 0aa3665..9d32ab7 100644 --- a/R/name_search_powo.R +++ b/R/name_search_powo.R @@ -5,23 +5,21 @@ #' #' @param df (data frame) Taxon name(s) #' @param name_column (string) Column that contains the name(s) -#' @param powo_tax_stat (character) Default `any` provides all taxonomic -#' matches, otherwise `accepted` returns only accepted names according to POWO #' #' @return Returns a data frame with initial search term and matching name(s) #' @export -name_search_powo <- function(df, name_column, powo_tax_stat = "any"){ +name_search_powo <- function(df, name_column){ #name_df <- data.frame(name = name) results <- rWCVP::wcvp_match_names(names_df = df, name_col = name_column) - # allow user to filter on accepted name only - if (powo_tax_stat == "any"){ - results = results - } else { - if (powo_tax_stat == "accepted") { - results = dplyr::filter(results, wcvp_status == "Accepted") - }} + # # allow user to filter on accepted name only + # if (powo_tax_stat == "any"){ + # results = results + # } else { + # if (powo_tax_stat == "accepted") { + # results = dplyr::filter(results, wcvp_status == "Accepted") + # }} return(results) } diff --git a/R/sis_countries.R b/R/sis_countries.R index ea13e6e..d4b78de 100644 --- a/R/sis_countries.R +++ b/R/sis_countries.R @@ -1,40 +1,31 @@ #' Generate the countries.csv file #' -#' @param unique_id (character) Unique identifier -#' @param wcvp_ipni_id (character) WCVP identifier #' @param native_ranges (character) native range list of WGSRPD level 3 #' #' @return Returns an SIS compliant csv file #' @export +sis_countries <- function(native_ranges) { + country_table <- + dplyr::left_join(native_ranges, tdwg2iucn, by = c("LEVEL3_COD" = "Level.3.code")) -sis_countries <- function(unique_id, wcvp_ipni_id, native_ranges) { - combined_table <- purrr::map_dfr(seq_along(unique_id), function(i) { - unique_id <- unique_id[i] - wcvp_ipni_id <- wcvp_ipni_id[i] + country_table$CountryOccurrence.CountryOccurrenceSubfield.presence <- "Extant" + country_table$CountryOccurrence.CountryOccurrenceSubfield.origin <- "Native" + country_table$CountryOccurrence.CountryOccurrenceSubfield.seasonality <- "Resident" - native_ranges_filtered <- dplyr::filter(native_ranges, POWO_ID == wcvp_ipni_id) + country_table <- dplyr::select( + country_table, + internal_taxon_id, + countryoccurrence.countryoccurrencesubfield.countryoccurrencename, + CountryOccurrence.CountryOccurrenceSubfield.presence, + CountryOccurrence.CountryOccurrenceSubfield.origin, + CountryOccurrence.CountryOccurrenceSubfield.seasonality, + countryoccurrence.countryoccurrencesubfield.countryoccurrencelookup + ) - country_table <- dplyr::left_join(native_ranges_filtered, tdwg2iucn, by = c("LEVEL3_COD" = "Level.3.code")) + country_table <- + dplyr::distinct(country_table, .keep_all = TRUE) - country_table$CountryOccurrence.CountryOccurrenceSubfield.presence <- "Extant" - country_table$CountryOccurrence.CountryOccurrenceSubfield.origin <- "Native" - country_table$CountryOccurrence.CountryOccurrenceSubfield.seasonality <- "Resident" - country_table$internal_taxon_id <- unique_id - - country_table <- dplyr::select(country_table, - internal_taxon_id, - countryoccurrence.countryoccurrencesubfield.countryoccurrencename, - CountryOccurrence.CountryOccurrenceSubfield.presence, - CountryOccurrence.CountryOccurrenceSubfield.origin, - CountryOccurrence.CountryOccurrenceSubfield.seasonality, - countryoccurrence.countryoccurrencesubfield.countryoccurrencelookup) - - country_table <- dplyr::distinct(country_table, .keep_all = TRUE) - - return(country_table) - }) - - return(combined_table) + return(country_table) } diff --git a/R/sis_credits.R b/R/sis_credits.R index b2ceb93..d65575d 100644 --- a/R/sis_credits.R +++ b/R/sis_credits.R @@ -1,4 +1,5 @@ + #' Generate the credits.csv file #' #' @param unique_id (character) Unique identifier @@ -9,38 +10,23 @@ #' @return Returns an SIS compliant csv file #' @export -# sis_credits = function(unique_id, first_name="your first name",second_name = "your second name", -# email="your email", affiliation="your affiliation") { -# -# credits <- tibble::tibble( -# internal_taxon_id = unique_id, -# credit_type = "Assessor", -# firstName = first_name, -# lastName = second_name, -# initials = "", -# Order = "1", -# email = email, -# affiliation = affiliation, -# user_id = "1" -# ) -# -# return(credits) -# } - -sis_credits = function(unique_id, first_name="your first name",second_name = "your second name", - email="your email", affiliation="your affiliation") { +sis_credits = function(unique_id, + first_name = "your first name", + second_name = "your second name", + email = "your email", + affiliation = "your affiliation") { combined_table <- purrr::map_dfr(unique_id, function(id) { credits <- tibble::tibble( - internal_taxon_id = id, - credit_type = "Assessor", - firstName = first_name, - lastName = second_name, - initials = "", - Order = "1", - email = email, - affiliation = affiliation, - user_id = "1" + internal_taxon_id = id, + credit_type = "Assessor", + firstName = first_name, + lastName = second_name, + initials = "", + Order = "1", + email = email, + affiliation = affiliation, + user_id = "1" ) }) diff --git a/R/sis_references.R b/R/sis_references.R index 2ad920b..367eb3f 100644 --- a/R/sis_references.R +++ b/R/sis_references.R @@ -1,4 +1,5 @@ + #' Generate the references.csv file #' #' @param unique_id (character) Unique identifier. @@ -9,25 +10,26 @@ #' @export #' -sis_references = function(unique_id, gbif_ref = NULL, powo_ref = NULL) { - +sis_references = function(unique_id, + gbif_ref = NULL, + powo_ref = NULL) { LCr_ref <- - tibble::tibble( - Reference_type = "Assessment", - type = "electronic source", - author = "Bachman, S., Brown, M.", - year = format(as.Date(Sys.Date(), format="%d/%m/%Y"),"%Y"), - title = "LCr: Generate minimal Least Concern Red List assessments", - url = "https://github.com/stevenpbachman/LCr", - access_date = format(as.Date(Sys.Date(), format="%d/%m/%Y")) - ) + tibble::tibble( + Reference_type = "Assessment", + type = "electronic source", + author = "Bachman, S., Brown, M.", + year = format(as.Date(Sys.Date(), format = "%d/%m/%Y"), "%Y"), + title = "LCr: Generate minimal Least Concern Red List assessments", + url = "https://github.com/stevenpbachman/LCr", + access_date = format(as.Date(Sys.Date(), format = "%d/%m/%Y")) + ) sis_refs <- LCr_ref - if (powo_ref == TRUE) { - powo_ref <- powo_ref() - sis_refs <- dplyr::bind_rows(sis_refs, powo_ref) - } + if (powo_ref == TRUE) { + powo_ref <- powo_ref() + sis_refs <- dplyr::bind_rows(sis_refs, powo_ref) + } if (!is.null(gbif_ref)) { sis_refs <- dplyr::bind_rows(sis_refs, gbif_ref) } diff --git a/R/sis_taxonomy.R b/R/sis_taxonomy.R index 81dbf7f..8fef26b 100644 --- a/R/sis_taxonomy.R +++ b/R/sis_taxonomy.R @@ -2,6 +2,10 @@ #' Generate the taxonomy.csv file #' #' @param unique_id (character) Unique identifier. +#' @param family (character) field containing family. +#' @param genus (character) field containing genus. +#' @param species (character) field containing species. +#' @param taxonomicAuthority (character) field containing taxonomic author. #' #' @return Returns an SIS compliant csv file #' @export diff --git a/data/tdwg2iucn.rda b/data/tdwg2iucn.rda index fb202df182c19c4b42babc638fa3b3c2be7bc3b2..2e3da448fb32671517374e3c6b6ec2c238cfaf1b 100644 GIT binary patch literal 12719 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 W!V$cqkN=DFD9*K*c7aoY;(q~_RFvTW literal 12708 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 diff --git a/man/get_name_keys.Rd b/man/get_name_keys.Rd index 4a8bfcf..99c3cf5 100644 --- a/man/get_name_keys.Rd +++ b/man/get_name_keys.Rd @@ -4,19 +4,11 @@ \alias{get_name_keys} \title{Get accepted GBIF and POWO identifiers (keys) for taxon names to support data downloads} \usage{ -get_name_keys( - df, - name_column, - tax_status = "any", - match = "single", - kingdom = "plantae" -) +get_name_keys(df, name_column, match = "single", kingdom = "plantae") } \arguments{ \item{df}{character) Data frame with taxon names} -\item{tax_status}{(character) Default `any` provides all taxonomic, otherwise 'accepted'} - \item{match}{(character) Controls the output of the search. Use `single` to force a single match result that has the highest confidence or `any` to return all possible matches sorted in order of confidence} @@ -33,10 +25,10 @@ Returns a data frame with accepted GBIF and POWO identifiers Get accepted GBIF and POWO identifiers (keys) for taxon names to support data downloads } \details{ -Designed for batch processing. Default setting (tax_status = "accepted" and match = "single") -returns an accepted name with the best single match against GBIF and POWO name backbones. -Final list may return fewer names if there are discrepancies e.g. accepted +Designed for batch processing. Default setting (match = "single", kingdom = "plantae") +returns an accepted name with the best single match against GBIF and POWO name backbones (GBIF +only for kingdom = "fungi"). Final list may return fewer names if there are discrepancies e.g. accepted in GBIF, but not in POWO. Output data frame includes GBIF 'usageKey' that can be used with [`get_gbif_occs()`] to get occurrences from GBIF, and 'wcvp_ipni_id' that can be used with [`powo_range()`] -to get native ranges. To see a wider range of plausible matches adjust 'tax_status' and 'match' to 'any'. +to get native ranges. To see a wider range of plausible matches adjust 'match' to 'any'. } diff --git a/man/get_native_range.Rd b/man/get_native_range.Rd index 60e9714..9440038 100644 --- a/man/get_native_range.Rd +++ b/man/get_native_range.Rd @@ -7,10 +7,11 @@ get_native_range(keys) } \arguments{ -\item{keys}{(name_col) Column name for the identifier} +\item{keys}{(data frame) Contain identifier for the taxon e.g. derived from [`get_name_keys()`]} } \value{ -(data frame) A list of places where a taxon occurs. +(data frame) A list of 'botanical countries' (World Geogrpahic Scheme for Recording Plant +Distributions) where a taxon occurs. } \description{ Get native ranges for taxa diff --git a/man/get_occs_range.Rd b/man/get_occs_range.Rd index 27cc880..1c8fcf2 100644 --- a/man/get_occs_range.Rd +++ b/man/get_occs_range.Rd @@ -10,7 +10,7 @@ get_occs_range(sis_points) \item{sis_points}{(dataframe) SIS points file} } \value{ -Occurrence dataframe with ISO two-digit codes added +Occurrence dataframe with ISO two-digit codes added and internal id } \description{ Get ISO two-digit code from occurrence lat longs diff --git a/man/make_LC_points.Rd b/man/make_LC_points.Rd index f5d11b2..085c044 100644 --- a/man/make_LC_points.Rd +++ b/man/make_LC_points.Rd @@ -24,7 +24,7 @@ make_LC_points( \item{range_check}{(boolean) TRUE if you want to carry out occurrence cleaning with native range filter} } \value{ -(list) Includes the GBIF citation, and "points" the cleaned SIS compatible point file +(list) Includes the GBIF "citation", and "points" the cleaned SIS compatible point file } \description{ Combined function to get clean SIS points file using name identifiers diff --git a/man/make_sis_csvs.Rd b/man/make_sis_csvs.Rd index 0c07f7c..81e62d2 100644 --- a/man/make_sis_csvs.Rd +++ b/man/make_sis_csvs.Rd @@ -12,16 +12,18 @@ make_sis_csvs( email, institution, gbif_ref = NULL, - native_ranges, + powo_ref = FALSE, + native_ranges = NULL, family, genus, species, taxonomicAuthority, - kingdom = "plantae", - powo_ref = FALSE + kingdom = "plantae" ) } \arguments{ +\item{unique_id}{(character) Unique identifier - default is the GBIF usage key} + \item{first_name}{(character) First name of assessor} \item{second_name}{(character) Second name of assessor} @@ -32,11 +34,19 @@ make_sis_csvs( \item{gbif_ref}{(data frame) A GBIF download citation according to IUCN format.} +\item{powo_ref}{(data frame) A citation for use of POWO according to IUCN format.} + \item{native_ranges}{(data frame) Native ranges derived from [`get_native_range()`]} -\item{kingdom}{(character) Default is 'plantae', but can also be 'fungi'} +\item{family}{(character) Field containing the family} + +\item{genus}{(character) Field containing the genus} -\item{keys}{(data frame) Derived from [`get_name_keys()`] function. Must include at least GBIF_usageKey to obtain GBIF occurrences} +\item{species}{(character) Field containing the specific epithet} + +\item{taxonomicAuthority}{(character) Field containing the taxonomic authority} + +\item{kingdom}{(character) Default is 'plantae', but can also be 'fungi'} } \value{ Returns an SIS compliant zip file diff --git a/man/name_search_gbif.Rd b/man/name_search_gbif.Rd new file mode 100644 index 0000000..3e1d6e8 --- /dev/null +++ b/man/name_search_gbif.Rd @@ -0,0 +1,28 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/name_search_gbif.R +\name{name_search_gbif} +\alias{name_search_gbif} +\title{Query taxon name against GBIF backbone} +\usage{ +name_search_gbif(name, species_rank = TRUE, match = "single") +} +\arguments{ +\item{name}{(character) A taxon name} + +\item{species_rank}{(character) Default TRUE returns matches at species +level, otherwise FALSE returns any taxonomic rank} + +\item{match}{(character) Controls the output of the search. Use `single` to +force a single match result that has the highest confidence or `any` to return +all possible matches sorted in order of confidence} +} +\value{ +Returns a data frame with initial search term and matching name(s) +} +\description{ +Queries a taxon name against the GBIF names backbone. Simple wrapper around +the rgbif `name_backbone_verbose` function. +} +\examples{ +name_search_gbif("Poa annua L.") +} diff --git a/man/name_search_powo.Rd b/man/name_search_powo.Rd index fbd372a..ab02838 100644 --- a/man/name_search_powo.Rd +++ b/man/name_search_powo.Rd @@ -4,15 +4,12 @@ \alias{name_search_powo} \title{Query taxon name against POWO (Plants of the World Online) backbone} \usage{ -name_search_powo(df, name_column, powo_tax_stat = "any") +name_search_powo(df, name_column) } \arguments{ \item{df}{(data frame) Taxon name(s)} \item{name_column}{(string) Column that contains the name(s)} - -\item{powo_tax_stat}{(character) Default `any` provides all taxonomic -matches, otherwise `accepted` returns only accepted names according to POWO} } \value{ Returns a data frame with initial search term and matching name(s) diff --git a/man/sis_countries.Rd b/man/sis_countries.Rd index 3cccdf2..e313157 100644 --- a/man/sis_countries.Rd +++ b/man/sis_countries.Rd @@ -4,13 +4,9 @@ \alias{sis_countries} \title{Generate the countries.csv file} \usage{ -sis_countries(unique_id, wcvp_ipni_id, native_ranges) +sis_countries(native_ranges) } \arguments{ -\item{unique_id}{(character) Unique identifier} - -\item{wcvp_ipni_id}{(character) WCVP identifier} - \item{native_ranges}{(character) native range list of WGSRPD level 3} } \value{ diff --git a/man/sis_taxonomy.Rd b/man/sis_taxonomy.Rd index 0c4eb48..03a19e4 100644 --- a/man/sis_taxonomy.Rd +++ b/man/sis_taxonomy.Rd @@ -8,6 +8,14 @@ sis_taxonomy(unique_id, family, genus, species, taxonomicAuthority) } \arguments{ \item{unique_id}{(character) Unique identifier.} + +\item{family}{(character) field containing family.} + +\item{genus}{(character) field containing genus.} + +\item{species}{(character) field containing species.} + +\item{taxonomicAuthority}{(character) field containing taxonomic author.} } \value{ Returns an SIS compliant csv file