diff --git a/DESCRIPTION b/DESCRIPTION index 7f52f70c..7d2e89c6 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AMR -Version: 0.4.0.9009 -Date: 2018-11-05 +Version: 0.4.0.9010 +Date: 2018-11-09 Title: Antimicrobial Resistance Analysis Authors@R: c( person( diff --git a/NAMESPACE b/NAMESPACE index 069de508..55e1b8ee 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -92,11 +92,13 @@ export(labels_rsi_count) export(left_join_microorganisms) export(like) export(mo_TSN) +export(mo_authors) export(mo_class) export(mo_family) export(mo_fullname) export(mo_genus) export(mo_gramstain) +export(mo_kingdom) export(mo_order) export(mo_phylum) export(mo_property) @@ -107,6 +109,7 @@ export(mo_subkingdom) export(mo_subspecies) export(mo_taxonomy) export(mo_type) +export(mo_year) export(n_rsi) export(p.symbol) export(portion_I) diff --git a/NEWS.md b/NEWS.md index aaf0f3b9..8900db76 100755 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,7 @@ * Function `get_locale` to determine language for language-dependent output for some `mo_*` functions. This is now the default value for their `language` parameter, by which the system language will be used at default. * Data sets `microorganismsDT`, `microorganisms.prevDT`, `microorganisms.unprevDT` and `microorganisms.oldDT` to improve the speed of `as.mo`. They are for reference only, since they are primarily for internal use of `as.mo`. * Function `read_4D` to read from the 4D database of the MMB department of the UMCG +* Functions `mo_authors` and `mo_year` to get specific values about the scientific reference of a taxonomic entry #### Changed * Big changes to the `EUCAST_rules` function: @@ -17,6 +18,7 @@ * Data set `septic_patients` now reflects these changes * Added parameter `pipe` for piperacillin (J01CA12), also to the `MDRO` function * Small fixes to EUCAST clinical breakpoint rules +* Added column `kingdom` to the microorganisms data set, and function `mo_kingdom` to look up values * Tremendous speed improvement for `as.mo` (and subsequently all `mo_*` functions), as empty values wil be ignored *a priori* * Fewer than 3 characters as input for `as.mo` will return NA * Added parameter `combine_IR` (TRUE/FALSE) to functions `portion_df` and `count_df`, to indicate that all values of I and R must be merged into one, so the output only consists of S vs. IR (susceptible vs. non-susceptible) diff --git a/R/data.R b/R/data.R index db16488b..4debcbf1 100755 --- a/R/data.R +++ b/R/data.R @@ -137,8 +137,8 @@ #' \item{\code{class}}{Taxonomic class of the microorganism as found in ITIS, see Source} #' \item{\code{phylum}}{Taxonomic phylum of the microorganism as found in ITIS, see Source} #' \item{\code{subkingdom}}{Taxonomic subkingdom of the microorganism as found in ITIS, see Source} +#' \item{\code{kingdom}}{Taxonomic kingdom of the microorganism as found in ITIS, see Source} #' \item{\code{gramstain}}{Gram of microorganism, like \code{"Gram negative"}} -#' \item{\code{type}}{Type of microorganism, like \code{"Bacteria"} and \code{"Fungi"}} #' \item{\code{prevalence}}{An integer based on estimated prevalence of the microorganism in humans. Used internally by \code{\link{as.mo}}, otherwise quite meaningless. It has a value of 25 for manually added items and a value of 1000 for all unprevalent microorganisms whose genus was somewhere in the top 250 (with another species).} #' \item{\code{ref}}{Author(s) and year of concerning publication as found in ITIS, see Source} #' } @@ -248,7 +248,7 @@ # # Renew data: # microorganismsDT <- data.table::as.data.table(AMR::microorganisms) # # sort on (1) bacteria, (2) fungi, (3) protozoa and then human pathogenic prevalence and then TSN: -# data.table::setkey(microorganismsDT, type, prevalence, fullname) +# data.table::setkey(microorganismsDT, kingdom, prevalence, fullname) # microorganisms.prevDT <- microorganismsDT[prevalence == 9999,] # microorganisms.unprevDT <- microorganismsDT[prevalence != 9999,] # microorganisms.oldDT <- data.table::as.data.table(AMR::microorganisms.old) diff --git a/R/eucast.R b/R/eucast.R index bc6b9df6..faa51a42 100755 --- a/R/eucast.R +++ b/R/eucast.R @@ -1730,12 +1730,12 @@ EUCAST_rules <- function(tbl, } else { colour <- blue } - cat(bold('\n=> EUCAST rules affected', + cat(bold(paste('\n=> EUCAST rules', paste0(wouldve, 'affected'), amount_affected_rows %>% length() %>% format(big.mark = ","), 'out of', nrow(tbl_original) %>% format(big.mark = ","), 'rows ->', colour(paste0(wouldve, 'changed'), - amount_changed %>% format(big.mark = ","), 'test results.\n\n'))) + amount_changed %>% format(big.mark = ","), 'test results.\n\n')))) } if (verbose == TRUE) { diff --git a/R/mo.R b/R/mo.R index 74089b36..30075e6d 100644 --- a/R/mo.R +++ b/R/mo.R @@ -69,9 +69,9 @@ #' \code{guess_mo} is an alias of \code{as.mo}. #' @section ITIS: #' \if{html}{\figure{itis_logo.jpg}{options: height=60px style=margin-bottom:5px} \cr} -#' This package contains the \strong{complete microbial taxonomic data} (with all seven taxonomic ranks - from subkingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). +#' This package contains the \strong{complete microbial taxonomic data} (with all eight taxonomic ranks - from kingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). #' -#' All (sub)species from the \strong{taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. +#' All (sub)species from \strong{the taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. #' #' ITIS is a partnership of U.S., Canadian, and Mexican agencies and taxonomic specialists [3]. #' @@ -517,7 +517,14 @@ exec_as.mo <- function(x, Becker = FALSE, Lancefield = FALSE, allow_uncertain = | tsn == x_trimmed[i] | name %like% x_withspaces[i],] if (NROW(found) > 0) { - x[i] <- microorganismsDT[tsn == found[1, tsn_new], ..property][[1]] + # when property is "ref" (which is the case in mo_ref, mo_authors and mo_year), return the old value, so: + # mo_ref("Chlamydia psittaci) = "Page, 1968" (with warning) + # mo_ref("Chlamydophila psittaci) = "Everett et al., 1999" + if (property == "ref") { + x[i] <- found[1, ref] + } else { + x[i] <- microorganismsDT[tsn == found[1, tsn_new], ..property][[1]] + } renamed_note(name_old = found[1, name], name_new = microorganismsDT[tsn == found[1, tsn_new], fullname], ref_old = found[1, ref], @@ -532,7 +539,11 @@ exec_as.mo <- function(x, Becker = FALSE, Lancefield = FALSE, allow_uncertain = | name %like% x_withspaces_start[i] | name %like% x[i],] if (NROW(found) > 0) { - x[i] <- microorganismsDT[tsn == found[1, tsn_new], ..property][[1]] + if (property == "ref") { + x[i] <- found[1, ref] + } else { + x[i] <- microorganismsDT[tsn == found[1, tsn_new], ..property][[1]] + } warning("Uncertain interpretation: '", x_backup[i], "' -> '", found[1, name], "'", call. = FALSE, immediate. = TRUE) diff --git a/R/mo_property.R b/R/mo_property.R index ec5679b3..997f4322 100644 --- a/R/mo_property.R +++ b/R/mo_property.R @@ -21,18 +21,30 @@ #' Use these functions to return a specific property of a microorganism from the \code{\link{microorganisms}} data set. All input values will be evaluated internally with \code{\link{as.mo}}. #' @param x any (vector of) text that can be coerced to a valid microorganism code with \code{\link{as.mo}} #' @param property one of the column names of one of the \code{\link{microorganisms}} data set or \code{"shortname"} -#' @param language language of the returned text, defaults to system language (see \code{\link{get_locale}}) and can also be set with \code{\link{getOption}("AMR_locale")}. +#' @param language language of the returned text, defaults to system language (see \code{\link{get_locale}}) and can also be set with \code{\link{getOption}("AMR_locale")}. Use \code{language = NULL} or \code{language = ""} to prevent translation. #' @param ... other parameters passed on to \code{\link{as.mo}} +#' @details All functions will return the most recently known taxonomic property according to ITIS, except for \code{mo_ref}, \code{mo_authors} and \code{mo_year}. This leads to the following results: +#' \itemize{ +#' \item{\code{mo_fullname("Chlamydia psittaci")} will return \code{"Chlamydophila psittaci"} (with a warning about the renaming)} +#' \item{\code{mo_ref("Chlamydia psittaci")} will return \code{"Page, 1968"} (with a warning about the renaming)} +#' \item{\code{mo_ref("Chlamydophila psittaci")} will return \code{"Everett et al., 1999"} (without a warning)} +#' } #' @inheritSection get_locale Supported languages #' @inheritSection as.mo ITIS #' @inheritSection as.mo Source #' @rdname mo_property #' @name mo_property -#' @return A \code{list} (in case of \code{mo_taxonomy}) or a \code{character} otherwise +#' @return \itemize{ +#' \item{An \code{integer} in case of \code{mo_TSN} and \code{mo_year}} +#' \item{A \code{list} in case of \code{mo_taxonomy}} +#' \item{A \code{character} in all other cases} +#' } #' @export #' @seealso \code{\link{microorganisms}} #' @examples #' # All properties of Escherichia coli +#' ## taxonomic properties +#' mo_kingdom("E. coli") # "Bacteria" #' mo_subkingdom("E. coli") # "Negibacteria" #' mo_phylum("E. coli") # "Proteobacteria" #' mo_class("E. coli") # "Gammaproteobacteria" @@ -41,12 +53,20 @@ #' mo_genus("E. coli") # "Escherichia" #' mo_species("E. coli") # "coli" #' mo_subspecies("E. coli") # NA +#' mo_TSN("E. coli") # 285 (Taxonomic Serial Number) +#' +#' ## colloquial properties #' mo_fullname("E. coli") # "Escherichia coli" #' mo_shortname("E. coli") # "E. coli" +#' +#' ## other properties #' mo_gramstain("E. coli") # "Gram negative" -#' mo_TSN("E. coli") # 285 -#' mo_type("E. coli") # "Bacteria" +#' mo_type("E. coli") # "Bacteria" (equal to kingdom) +#' +#' ## scientific reference #' mo_ref("E. coli") # "Castellani and Chalmers, 1919" +#' mo_authors("E. coli") # "Castellani and Chalmers" +#' mo_year("E. coli") # 1919 #' #' #' # Abbreviations known in the field @@ -78,17 +98,19 @@ #' mo_fullname("S. pyo") # "Streptococcus pyogenes" #' mo_fullname("S. pyo", Lancefield = TRUE) # "Streptococcus group A" #' mo_shortname("S. pyo") # "S. pyogenes" -#' mo_shortname("S. pyo", Lancefield = TRUE) # "GAS" +#' mo_shortname("S. pyo", Lancefield = TRUE) # "GAS" ('Group A streptococci') #' #' -#' # Language support for German, Dutch, Spanish and Portuguese -#' mo_type("E. coli", language = "de") # "Bakterium" -#' mo_type("E. coli", language = "nl") # "Bacterie" -#' mo_type("E. coli", language = "es") # "Bakteria" +#' # Language support for German, Dutch, Spanish, Portuguese, Italian and French #' mo_gramstain("E. coli", language = "de") # "Gramnegativ" #' mo_gramstain("E. coli", language = "nl") # "Gram-negatief" #' mo_gramstain("E. coli", language = "es") # "Gram negativo" #' +#' # mo_type is equal to mo_kingdom, but mo_kingdom will remain official +#' mo_kingdom("E. coli") # "Bacteria" on a German system +#' mo_type("E. coli") # "Bakterien" on a German system +#' mo_type("E. coli") # "Bacteria" on an English system +#' #' mo_fullname("S. pyogenes", #' Lancefield = TRUE, #' language = "de") # "Streptococcus Gruppe A" @@ -97,7 +119,7 @@ #' language = "nl") # "Streptococcus groep A" #' #' -#' # Complete taxonomy up to Subkingdom, returns a list +#' # Get a list with the complete taxonomy (subkingdom to subspecies) #' mo_taxonomy("E. coli") mo_fullname <- function(x, language = get_locale(), ...) { x <- mo_validate(x = x, property = "fullname", ...) @@ -203,14 +225,20 @@ mo_subkingdom <- function(x, ...) { #' @rdname mo_property #' @export -mo_ref <- function(x, ...) { - mo_validate(x = x, property = "ref", ...) +mo_kingdom <- function(x, ...) { + mo_validate(x = x, property = "kingdom", ...) } #' @rdname mo_property #' @export mo_type <- function(x, language = get_locale(), ...) { - mo_translate(mo_validate(x = x, property = "type", ...), language = language) + mo_translate(mo_validate(x = x, property = "kingdom", ...), language = language) +} + +#' @rdname mo_property +#' @export +mo_gramstain <- function(x, language = get_locale(), ...) { + mo_translate(mo_validate(x = x, property = "gramstain", ...), language = language) } #' @rdname mo_property @@ -221,22 +249,26 @@ mo_TSN <- function(x, ...) { #' @rdname mo_property #' @export -mo_gramstain <- function(x, language = get_locale(), ...) { - mo_translate(mo_validate(x = x, property = "gramstain", ...), language = language) +mo_ref <- function(x, ...) { + mo_validate(x = x, property = "ref", ...) } #' @rdname mo_property -#' @importFrom data.table data.table as.data.table setkey #' @export -mo_property <- function(x, property = 'fullname', language = get_locale(), ...) { - if (length(property) != 1L) { - stop("'property' must be of length 1.") - } - if (!property %in% colnames(AMR::microorganisms)) { - stop("invalid property: '", property, "' - use a column name of the `microorganisms` data set") - } +mo_authors <- function(x, ...) { + x <- mo_validate(x = x, property = "ref", ...) + # remove last 4 digits and presumably the comma and space that preceed them + x[!is.na(x)] <- gsub(",? ?[0-9]{4}", "", x[!is.na(x)]) + x +} - mo_translate(mo_validate(x = x, property = property, ...), language = language) +#' @rdname mo_property +#' @export +mo_year <- function(x, ...) { + x <- mo_validate(x = x, property = "ref", ...) + # get last 4 digits + x[!is.na(x)] <- gsub(".*([0-9]{4})$", "\\1", x[!is.na(x)]) + as.integer(x) } #' @rdname mo_property @@ -253,6 +285,20 @@ mo_taxonomy <- function(x, ...) { subspecies = mo_subspecies(x)) } +#' @rdname mo_property +#' @importFrom data.table data.table as.data.table setkey +#' @export +mo_property <- function(x, property = 'fullname', language = get_locale(), ...) { + if (length(property) != 1L) { + stop("'property' must be of length 1.") + } + if (!property %in% colnames(AMR::microorganisms)) { + stop("invalid property: '", property, "' - use a column name of the `microorganisms` data set") + } + + mo_translate(mo_validate(x = x, property = property, ...), language = language) +} + #' @importFrom dplyr %>% case_when mo_translate <- function(x, language) { if (is.null(language)) { @@ -267,9 +313,17 @@ mo_translate <- function(x, language) { stop("Unsupported language: '", language, "' - use one of: ", paste0("'", sort(supported), "'", collapse = ", "), call. = FALSE) } - case_when( + x_tobetranslated <- grepl(x = x, + pattern = "(Coagulase Negative Staphylococcus|Coagulase Positive Staphylococcus|Beta-haemolytic Streptococcus|unknown Gram negatives|unknown Gram positives|CoNS|CoPS|no MO|Gram negative|Gram positive|Bacteria|Fungi|Protozoa|biogroup|biotype|vegetative|group|Group)") + + if (sum(x_tobetranslated, na.rm = TRUE) == 0) { + return(x) + } + + # only translate the ones that need translation + x[x_tobetranslated] <- case_when( # German - language == "de" ~ x %>% + language == "de" ~ x[x_tobetranslated] %>% gsub("Coagulase Negative Staphylococcus","Koagulase-negative Staphylococcus", ., fixed = TRUE) %>% gsub("Coagulase Positive Staphylococcus","Koagulase-positive Staphylococcus", ., fixed = TRUE) %>% gsub("Beta-haemolytic Streptococcus", "Beta-h\u00e4molytischer Streptococcus", ., fixed = TRUE) %>% @@ -287,10 +341,11 @@ mo_translate <- function(x, language) { gsub("biotype", "Biotyp", ., fixed = TRUE) %>% gsub("vegetative", "vegetativ", ., fixed = TRUE) %>% gsub("([([ ]*?)group", "\\1Gruppe", .) %>% - gsub("([([ ]*?)Group", "\\1Gruppe", .), + gsub("([([ ]*?)Group", "\\1Gruppe", .) %>% + iconv(to = "UTF-8"), # Dutch - language == "nl" ~ x %>% + language == "nl" ~ x[x_tobetranslated] %>% gsub("Coagulase Negative Staphylococcus","Coagulase-negatieve Staphylococcus", ., fixed = TRUE) %>% gsub("Coagulase Positive Staphylococcus","Coagulase-positieve Staphylococcus", ., fixed = TRUE) %>% gsub("Beta-haemolytic Streptococcus", "Beta-hemolytische Streptococcus", ., fixed = TRUE) %>% @@ -308,10 +363,11 @@ mo_translate <- function(x, language) { # gsub("biotype", "biotype", ., fixed = TRUE) %>% gsub("vegetative", "vegetatief", ., fixed = TRUE) %>% gsub("([([ ]*?)group", "\\1groep", .) %>% - gsub("([([ ]*?)Group", "\\1Groep", .), + gsub("([([ ]*?)Group", "\\1Groep", .) %>% + iconv(to = "UTF-8"), # Spanish - language == "es" ~ x %>% + language == "es" ~ x[x_tobetranslated] %>% gsub("Coagulase Negative Staphylococcus","Staphylococcus coagulasa negativo", ., fixed = TRUE) %>% gsub("Coagulase Positive Staphylococcus","Staphylococcus coagulasa positivo", ., fixed = TRUE) %>% gsub("Beta-haemolytic Streptococcus", "Streptococcus Beta-hemol\u00edtico", ., fixed = TRUE) %>% @@ -327,10 +383,11 @@ mo_translate <- function(x, language) { gsub("biotype", "biotipo", ., fixed = TRUE) %>% gsub("vegetative", "vegetativo", ., fixed = TRUE) %>% gsub("([([ ]*?)group", "\\1grupo", .) %>% - gsub("([([ ]*?)Group", "\\1Grupo", .), + gsub("([([ ]*?)Group", "\\1Grupo", .) %>% + iconv(to = "UTF-8"), # Italian - language == "it" ~ x %>% + language == "it" ~ x[x_tobetranslated] %>% gsub("Coagulase Negative Staphylococcus","Staphylococcus negativo coagulasi", ., fixed = TRUE) %>% gsub("Coagulase Positive Staphylococcus","Staphylococcus positivo coagulasi", ., fixed = TRUE) %>% gsub("Beta-haemolytic Streptococcus", "Streptococcus Beta-emolitico", ., fixed = TRUE) %>% @@ -349,7 +406,7 @@ mo_translate <- function(x, language) { gsub("([([ ]*?)Group", "\\1Gruppo", .), # French - language == "fr" ~ x %>% + language == "fr" ~ x[x_tobetranslated] %>% gsub("Coagulase Negative Staphylococcus","Staphylococcus \u00e0 coagulase n\u00e9gative", ., fixed = TRUE) %>% gsub("Coagulase Positive Staphylococcus","Staphylococcus \u00e0 coagulase positif", ., fixed = TRUE) %>% gsub("Beta-haemolytic Streptococcus", "Streptococcus B\u00eata-h\u00e9molytique", ., fixed = TRUE) %>% @@ -365,10 +422,11 @@ mo_translate <- function(x, language) { # gsub("biotype", "biotype", ., fixed = TRUE) %>% gsub("vegetative", "v\u00e9g\u00e9tatif", ., fixed = TRUE) %>% gsub("([([ ]*?)group", "\\1groupe", .) %>% - gsub("([([ ]*?)Group", "\\1Groupe", .), + gsub("([([ ]*?)Group", "\\1Groupe", .) %>% + iconv(to = "UTF-8"), # Portuguese - language == "pt" ~ x %>% + language == "pt" ~ x[x_tobetranslated] %>% gsub("Coagulase Negative Staphylococcus","Staphylococcus coagulase negativo", ., fixed = TRUE) %>% gsub("Coagulase Positive Staphylococcus","Staphylococcus coagulase positivo", ., fixed = TRUE) %>% gsub("Beta-haemolytic Streptococcus", "Streptococcus Beta-hemol\u00edtico", ., fixed = TRUE) %>% @@ -384,9 +442,10 @@ mo_translate <- function(x, language) { gsub("biotype", "bi\u00f3tipo", ., fixed = TRUE) %>% gsub("vegetative", "vegetativo", ., fixed = TRUE) %>% gsub("([([ ]*?)group", "\\1grupo", .) %>% - gsub("([([ ]*?)Group", "\\1Grupo", .) + gsub("([([ ]*?)Group", "\\1Grupo", .) %>% + iconv(to = "UTF-8")) - ) + x } diff --git a/README.md b/README.md index be345a50..167069c9 100755 --- a/README.md +++ b/README.md @@ -81,9 +81,9 @@ The `AMR` package basically does four important things: ### ITIS -This package contains the **complete microbial taxonomic data** (with all seven taxonomic ranks - from subkingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, https://www.itis.gov). +This package contains the **complete microbial taxonomic data** (with all eight taxonomic ranks - from kingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, https://www.itis.gov). -All (sub)species from the **taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package**, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. +All (sub)species from **the taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package**, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. ITIS is a partnership of U.S., Canadian, and Mexican agencies and taxonomic specialists. @@ -575,18 +575,20 @@ microbenchmark(A = mo_species("aureus"), F = mo_class("Bacilli"), G = mo_phylum("Firmicutes"), H = mo_subkingdom("Posibacteria"), + I = mo_kingdom("Bacteria"), times = 10, unit = "ms") # Unit: milliseconds # expr min lq mean median uq max neval -# A 0.096801 0.120966 0.1264836 0.1262045 0.135773 0.158192 10 -# B 0.102807 0.123899 0.1258339 0.1286835 0.132420 0.143245 10 -# C 0.122503 0.128299 0.1374623 0.1292070 0.139683 0.187315 10 -# D 0.087372 0.093239 0.1053774 0.1026330 0.113633 0.128299 10 -# E 0.084020 0.098617 0.1124383 0.1094420 0.113423 0.178515 10 -# F 0.080667 0.085346 0.1068579 0.1128295 0.115030 0.133537 10 -# G 0.087443 0.090026 0.1030171 0.0995250 0.106369 0.152325 10 -# H 0.084648 0.103156 0.1058313 0.1095120 0.112864 0.117265 10 +# A 0.105181 0.121314 0.1478538 0.1465265 0.166711 0.211409 10 +# B 0.132558 0.146388 0.1584278 0.1499835 0.164895 0.208477 10 +# C 0.135492 0.160355 0.2341847 0.1884665 0.348857 0.395931 10 +# D 0.109650 0.115727 0.1270481 0.1264130 0.128648 0.168317 10 +# E 0.081574 0.096940 0.0992582 0.0980915 0.101479 0.120477 10 +# F 0.081575 0.088489 0.0988463 0.0989650 0.103365 0.126482 10 +# G 0.091981 0.095333 0.1043568 0.1001530 0.111327 0.129625 10 +# H 0.092610 0.093169 0.1009135 0.0985455 0.101828 0.120406 10 +# I 0.087371 0.091213 0.1069758 0.0941815 0.109302 0.192831 10 ``` Of course, when running `mo_phylum("Firmicutes")` the function has zero knowledge about the actual microorganism, namely *S. aureus*. But since the result would be `"Firmicutes"` too, there is no point in calculating the result. And because this package 'knows' all phyla of all known microorganisms (according to ITIS), it can just return the initial value immediately. diff --git a/data/microorganisms.prevDT.rda b/data/microorganisms.prevDT.rda index 56667ba9..02121910 100644 Binary files a/data/microorganisms.prevDT.rda and b/data/microorganisms.prevDT.rda differ diff --git a/data/microorganisms.rda b/data/microorganisms.rda index 38a31040..85b0691e 100755 Binary files a/data/microorganisms.rda and b/data/microorganisms.rda differ diff --git a/data/microorganisms.unprevDT.rda b/data/microorganisms.unprevDT.rda index 4e656221..4ab178ca 100644 Binary files a/data/microorganisms.unprevDT.rda and b/data/microorganisms.unprevDT.rda differ diff --git a/data/microorganismsDT.rda b/data/microorganismsDT.rda index acd97e18..14c7ac46 100644 Binary files a/data/microorganismsDT.rda and b/data/microorganismsDT.rda differ diff --git a/man/as.mo.Rd b/man/as.mo.Rd index fca975e5..dd8e9aea 100644 --- a/man/as.mo.Rd +++ b/man/as.mo.Rd @@ -76,9 +76,9 @@ This means that looking up human pathogenic microorganisms takes less time than \section{ITIS}{ \if{html}{\figure{itis_logo.jpg}{options: height=60px style=margin-bottom:5px} \cr} -This package contains the \strong{complete microbial taxonomic data} (with all seven taxonomic ranks - from subkingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). +This package contains the \strong{complete microbial taxonomic data} (with all eight taxonomic ranks - from kingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). -All (sub)species from the \strong{taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. +All (sub)species from \strong{the taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. ITIS is a partnership of U.S., Canadian, and Mexican agencies and taxonomic specialists [3]. } diff --git a/man/microorganisms.Rd b/man/microorganisms.Rd index 37c9e2e1..9e40eec4 100755 --- a/man/microorganisms.Rd +++ b/man/microorganisms.Rd @@ -17,8 +17,8 @@ \item{\code{class}}{Taxonomic class of the microorganism as found in ITIS, see Source} \item{\code{phylum}}{Taxonomic phylum of the microorganism as found in ITIS, see Source} \item{\code{subkingdom}}{Taxonomic subkingdom of the microorganism as found in ITIS, see Source} + \item{\code{kingdom}}{Taxonomic kingdom of the microorganism as found in ITIS, see Source} \item{\code{gramstain}}{Gram of microorganism, like \code{"Gram negative"}} - \item{\code{type}}{Type of microorganism, like \code{"Bacteria"} and \code{"Fungi"}} \item{\code{prevalence}}{An integer based on estimated prevalence of the microorganism in humans. Used internally by \code{\link{as.mo}}, otherwise quite meaningless. It has a value of 25 for manually added items and a value of 1000 for all unprevalent microorganisms whose genus was somewhere in the top 250 (with another species).} \item{\code{ref}}{Author(s) and year of concerning publication as found in ITIS, see Source} }} @@ -34,9 +34,9 @@ A data set containing the complete microbial taxonomy of the kingdoms Bacteria, \section{ITIS}{ \if{html}{\figure{itis_logo.jpg}{options: height=60px style=margin-bottom:5px} \cr} -This package contains the \strong{complete microbial taxonomic data} (with all seven taxonomic ranks - from subkingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). +This package contains the \strong{complete microbial taxonomic data} (with all eight taxonomic ranks - from kingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). -All (sub)species from the \strong{taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. +All (sub)species from \strong{the taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. ITIS is a partnership of U.S., Canadian, and Mexican agencies and taxonomic specialists [3]. } diff --git a/man/microorganisms.old.Rd b/man/microorganisms.old.Rd index b9584451..21668920 100644 --- a/man/microorganisms.old.Rd +++ b/man/microorganisms.old.Rd @@ -23,9 +23,9 @@ A data set containing old (previously valid or accepted) taxonomic names accordi \section{ITIS}{ \if{html}{\figure{itis_logo.jpg}{options: height=60px style=margin-bottom:5px} \cr} -This package contains the \strong{complete microbial taxonomic data} (with all seven taxonomic ranks - from subkingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). +This package contains the \strong{complete microbial taxonomic data} (with all eight taxonomic ranks - from kingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). -All (sub)species from the \strong{taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. +All (sub)species from \strong{the taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. ITIS is a partnership of U.S., Canadian, and Mexican agencies and taxonomic specialists [3]. } diff --git a/man/mo_property.Rd b/man/mo_property.Rd index fe02f1f1..f6d221c8 100644 --- a/man/mo_property.Rd +++ b/man/mo_property.Rd @@ -12,10 +12,13 @@ \alias{mo_class} \alias{mo_phylum} \alias{mo_subkingdom} -\alias{mo_ref} +\alias{mo_kingdom} \alias{mo_type} -\alias{mo_TSN} \alias{mo_gramstain} +\alias{mo_TSN} +\alias{mo_ref} +\alias{mo_authors} +\alias{mo_year} \alias{mo_taxonomy} \title{Property of a microorganism} \usage{ @@ -39,33 +42,51 @@ mo_phylum(x, ...) mo_subkingdom(x, ...) -mo_ref(x, ...) +mo_kingdom(x, ...) mo_type(x, language = get_locale(), ...) -mo_TSN(x, ...) - mo_gramstain(x, language = get_locale(), ...) -mo_property(x, property = "fullname", language = get_locale(), ...) +mo_TSN(x, ...) + +mo_ref(x, ...) + +mo_authors(x, ...) + +mo_year(x, ...) mo_taxonomy(x, ...) + +mo_property(x, property = "fullname", language = get_locale(), ...) } \arguments{ \item{x}{any (vector of) text that can be coerced to a valid microorganism code with \code{\link{as.mo}}} -\item{language}{language of the returned text, defaults to system language (see \code{\link{get_locale}}) and can also be set with \code{\link{getOption}("AMR_locale")}.} +\item{language}{language of the returned text, defaults to system language (see \code{\link{get_locale}}) and can also be set with \code{\link{getOption}("AMR_locale")}. Use \code{language = NULL} or \code{language = ""} to prevent translation.} \item{...}{other parameters passed on to \code{\link{as.mo}}} \item{property}{one of the column names of one of the \code{\link{microorganisms}} data set or \code{"shortname"}} } \value{ -A \code{list} (in case of \code{mo_taxonomy}) or a \code{character} otherwise +\itemize{ + \item{An \code{integer} in case of \code{mo_TSN} and \code{mo_year}} + \item{A \code{list} in case of \code{mo_taxonomy}} + \item{A \code{character} in all other cases} +} } \description{ Use these functions to return a specific property of a microorganism from the \code{\link{microorganisms}} data set. All input values will be evaluated internally with \code{\link{as.mo}}. } +\details{ +All functions will return the most recently known taxonomic property according to ITIS, except for \code{mo_ref}, \code{mo_authors} and \code{mo_year}. This leads to the following results: +\itemize{ + \item{\code{mo_fullname("Chlamydia psittaci")} will return \code{"Chlamydophila psittaci"} (with a warning about the renaming)} + \item{\code{mo_ref("Chlamydia psittaci")} will return \code{"Page, 1968"} (with a warning about the renaming)} + \item{\code{mo_ref("Chlamydophila psittaci")} will return \code{"Everett et al., 1999"} (without a warning)} +} +} \section{Supported languages}{ Supported languages are \code{"en"} (English), \code{"de"} (German), \code{"nl"} (Dutch), \code{"es"} (Spanish), \code{"it"} (Italian), \code{"fr"} (French), and \code{"pt"} (Portuguese). @@ -74,9 +95,9 @@ Supported languages are \code{"en"} (English), \code{"de"} (German), \code{"nl"} \section{ITIS}{ \if{html}{\figure{itis_logo.jpg}{options: height=60px style=margin-bottom:5px} \cr} -This package contains the \strong{complete microbial taxonomic data} (with all seven taxonomic ranks - from subkingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). +This package contains the \strong{complete microbial taxonomic data} (with all eight taxonomic ranks - from kingdom to subspecies) from the publicly available Integrated Taxonomic Information System (ITIS, \url{https://www.itis.gov}). -All (sub)species from the \strong{taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. +All (sub)species from \strong{the taxonomic kingdoms Bacteria, Fungi and Protozoa are included in this package}, as well as all previously accepted names known to ITIS. Furthermore, the responsible authors and year of publication are available. This allows users to use authoritative taxonomic information for their data analysis on any microorganism, not only human pathogens. It also helps to quickly determine the Gram stain of bacteria, since all bacteria are classified into subkingdom Negibacteria or Posibacteria. ITIS is a partnership of U.S., Canadian, and Mexican agencies and taxonomic specialists [3]. } @@ -92,6 +113,8 @@ ITIS is a partnership of U.S., Canadian, and Mexican agencies and taxonomic spec \examples{ # All properties of Escherichia coli +## taxonomic properties +mo_kingdom("E. coli") # "Bacteria" mo_subkingdom("E. coli") # "Negibacteria" mo_phylum("E. coli") # "Proteobacteria" mo_class("E. coli") # "Gammaproteobacteria" @@ -100,12 +123,20 @@ mo_family("E. coli") # "Enterobacteriaceae" mo_genus("E. coli") # "Escherichia" mo_species("E. coli") # "coli" mo_subspecies("E. coli") # NA +mo_TSN("E. coli") # 285 (Taxonomic Serial Number) + +## colloquial properties mo_fullname("E. coli") # "Escherichia coli" mo_shortname("E. coli") # "E. coli" + +## other properties mo_gramstain("E. coli") # "Gram negative" -mo_TSN("E. coli") # 285 -mo_type("E. coli") # "Bacteria" +mo_type("E. coli") # "Bacteria" (equal to kingdom) + +## scientific reference mo_ref("E. coli") # "Castellani and Chalmers, 1919" +mo_authors("E. coli") # "Castellani and Chalmers" +mo_year("E. coli") # 1919 # Abbreviations known in the field @@ -137,17 +168,19 @@ mo_shortname("S. epi", Becker = TRUE) # "CoNS" mo_fullname("S. pyo") # "Streptococcus pyogenes" mo_fullname("S. pyo", Lancefield = TRUE) # "Streptococcus group A" mo_shortname("S. pyo") # "S. pyogenes" -mo_shortname("S. pyo", Lancefield = TRUE) # "GAS" +mo_shortname("S. pyo", Lancefield = TRUE) # "GAS" ('Group A streptococci') -# Language support for German, Dutch, Spanish and Portuguese -mo_type("E. coli", language = "de") # "Bakterium" -mo_type("E. coli", language = "nl") # "Bacterie" -mo_type("E. coli", language = "es") # "Bakteria" +# Language support for German, Dutch, Spanish, Portuguese, Italian and French mo_gramstain("E. coli", language = "de") # "Gramnegativ" mo_gramstain("E. coli", language = "nl") # "Gram-negatief" mo_gramstain("E. coli", language = "es") # "Gram negativo" +# mo_type is equal to mo_kingdom, but mo_kingdom will remain official +mo_kingdom("E. coli") # "Bacteria" on a German system +mo_type("E. coli") # "Bakterien" on a German system +mo_type("E. coli") # "Bacteria" on an English system + mo_fullname("S. pyogenes", Lancefield = TRUE, language = "de") # "Streptococcus Gruppe A" @@ -156,7 +189,7 @@ mo_fullname("S. pyogenes", language = "nl") # "Streptococcus groep A" -# Complete taxonomy up to Subkingdom, returns a list +# Get a list with the complete taxonomy (subkingdom to subspecies) mo_taxonomy("E. coli") } \seealso{ diff --git a/tests/testthat/test-mo_property.R b/tests/testthat/test-mo_property.R index aa1300a3..92b6a18f 100644 --- a/tests/testthat/test-mo_property.R +++ b/tests/testthat/test-mo_property.R @@ -1,6 +1,7 @@ context("mo_property.R") test_that("mo_property works", { + expect_equal(mo_kingdom("E. coli"), "Bacteria") expect_equal(mo_subkingdom("E. coli"), "Negibacteria") expect_equal(mo_phylum("E. coli"), "Proteobacteria") expect_equal(mo_class("E. coli"), "Gammaproteobacteria")