From b388e3fee767199f6cb71c3302c5371bd3662a51 Mon Sep 17 00:00:00 2001 From: "Matthijs S. Berends" Date: Tue, 4 Sep 2018 11:33:30 +0200 Subject: [PATCH] Support for German and Spanish microorganism properties, cleanup --- DESCRIPTION | 4 +- NAMESPACE | 2 - NEWS.md | 10 ++- R/ab_property.R | 2 +- R/atc.R | 4 +- R/data.R | 8 +- R/mo.R | 37 ++++++--- R/mo_property.R | 130 +++++++++++++++++------------- README.md | 2 +- data/microorganisms.rda | Bin 40638 -> 42208 bytes man/as.atc.Rd | 4 +- man/as.mo.Rd | 21 ++--- man/microorganisms.Rd | 8 +- man/mo_property.Rd | 107 +++++++++++++++--------- tests/testthat/test-ab_property.R | 3 + tests/testthat/test-deprecated.R | 6 +- tests/testthat/test-mo.R | 51 +++++++----- tests/testthat/test-mo_property.R | 10 ++- vignettes/.gitignore | 1 + vignettes/AMR.Rmd | 3 +- 20 files changed, 256 insertions(+), 157 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 0993a6a9..f913bc12 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AMR -Version: 0.3.0.9006 -Date: 2018-09-01 +Version: 0.3.0.9007 +Date: 2018-09-04 Title: Antimicrobial Resistance Analysis Authors@R: c( person( diff --git a/NAMESPACE b/NAMESPACE index bf01e726..80bfba22 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -94,12 +94,10 @@ export(mo_family) export(mo_fullname) export(mo_genus) export(mo_gramstain) -export(mo_gramstain_nl) export(mo_property) export(mo_species) export(mo_subspecies) export(mo_type) -export(mo_type_nl) export(n_rsi) export(p.symbol) export(portion_I) diff --git a/NEWS.md b/NEWS.md index 4c25f10c..ddc4b17a 100755 --- a/NEWS.md +++ b/NEWS.md @@ -10,7 +10,15 @@ * Column names of datasets `microorganisms` and `septic_patients` * All old syntaxes will still work with this version, but will throw warnings * Functions `as.atc` and `is.atc` to transform/look up antibiotic ATC codes as defined by the WHO. The existing function `guess_atc` is now an alias of `as.atc`. -* Aliases for existing function `mo_property`: `mo_family`, `mo_genus`, `mo_species`, `mo_subspecies`, `mo_fullname`, `mo_type`, `mo_gramstain`, `mo_aerobic`, `mo_type_nl` and `mo_gramstain_nl` +* Aliases for existing function `mo_property`: `mo_family`, `mo_genus`, `mo_species`, `mo_subspecies`, `mo_fullname`, `mo_aerobic`, `mo_type`, `mo_gramstain`. The last two functions have a `language` parameter, with support for Spanish, German and Dutch: + ```r + mo_gramstain("E. coli") + # [1] "Negative rods" + mo_gramstain("E. coli", language = "de") # "de" = Deutsch / German + # [1] "Negative Staebchen" + mo_gramstain("E. coli", language = "es") # "es" = Español / Spanish + # [1] "Bacilos negativos" + ``` * Function `ab_property` and its aliases: `ab_official`, `ab_tradenames`, `ab_certe`, `ab_umcg`, `ab_official_nl` and `ab_trivial_nl` * Introduction to AMR as a vignette diff --git a/R/ab_property.R b/R/ab_property.R index a29ca321..ac5a1fee 100644 --- a/R/ab_property.R +++ b/R/ab_property.R @@ -36,7 +36,7 @@ ab_property <- function(x, property = 'official') { property <- property[1] if (!property %in% colnames(antibiotics)) { - stop("invalid property: ", property, " - use a column name of `antibiotics`") + stop("invalid property: ", property, " - use a column name of the `antibiotics` data set") } if (!is.atc(x)) { x <- as.atc(x) # this will give a warning if x cannot be coerced diff --git a/R/atc.R b/R/atc.R index 7ce60f74..d27e408f 100755 --- a/R/atc.R +++ b/R/atc.R @@ -17,9 +17,9 @@ # ==================================================================== # -#' Find ATC code based on antibiotic property +#' Transform to ATC code #' -#' Use this function to determine the ATC code of one or more antibiotics. The dataset \code{\link{antibiotics}} will be searched for abbreviations, official names and trade names. +#' Use this function to determine the ATC code of one or more antibiotics. The data set \code{\link{antibiotics}} will be searched for abbreviations, official names and trade names. #' @param x character vector to determine \code{ATC} code #' @rdname as.atc #' @aliases atc diff --git a/R/data.R b/R/data.R index d667332d..d6505cb2 100755 --- a/R/data.R +++ b/R/data.R @@ -123,7 +123,7 @@ #' Data set with human pathogenic microorganisms #' #' A data set containing 2,664 (potential) human pathogenic microorganisms. MO codes can be looked up using \code{\link{guess_mo}}. -#' @format A \code{\link{tibble}} with 2,664 observations and 12 variables: +#' @format A \code{\link{tibble}} with 2,664 observations and 16 variables: #' \describe{ #' \item{\code{mo}}{ID of microorganism} #' \item{\code{bactsys}}{Bactsyscode of microorganism} @@ -132,11 +132,15 @@ #' \item{\code{species}}{Species name of microorganism, like \code{"coli"}} #' \item{\code{subspecies}}{Subspecies name of bio-/serovar of microorganism, like \code{"EHEC"}} #' \item{\code{fullname}}{Full name, like \code{"Echerichia coli (EHEC)"}} +#' \item{\code{aerobic}}{Logical whether bacteria is aerobic} #' \item{\code{type}}{Type of microorganism, like \code{"Bacteria"} and \code{"Fungus/yeast"}} #' \item{\code{gramstain}}{Gram of microorganism, like \code{"Negative rods"}} -#' \item{\code{aerobic}}{Logical whether bacteria is aerobic} +#' \item{\code{type_de}}{Type of microorganism in German, like \code{"Bakterien"} and \code{"Pilz/Hefe"}} +#' \item{\code{gramstain_de}}{Gram of microorganism in German, like \code{"Negative Staebchen"}} #' \item{\code{type_nl}}{Type of microorganism in Dutch, like \code{"Bacterie"} and \code{"Schimmel/gist"}} #' \item{\code{gramstain_nl}}{Gram of microorganism in Dutch, like \code{"Negatieve staven"}} +#' \item{\code{type_es}}{Type of microorganism in Spanish, like \code{"Bacteria"} and \code{"Hongo/levadura"}} +#' \item{\code{gramstain_es}}{Gram of microorganism in Spanish, like \code{"Bacilos negativos"}} #' } # source MOLIS (LIS of Certe) - \url{https://www.certe.nl} # new <- microorganisms %>% filter(genus == "Bacteroides") %>% .[1,] diff --git a/R/mo.R b/R/mo.R index 55b05097..80e0a345 100644 --- a/R/mo.R +++ b/R/mo.R @@ -19,15 +19,19 @@ #' Transform to microorganism ID #' #' Use this function to determine a valid ID based on a genus (and species). This input can be a full name (like \code{"Staphylococcus aureus"}), an abbreviated name (like \code{"S. aureus"}), or just a genus. You could also \code{\link{select}} a genus and species column, zie Examples. -#' @param x a character vector or a dataframe with one or two columns -#' @param Becker a logical to indicate whether \emph{Staphylococci} should be categorised into Coagulase Negative \emph{Staphylococci} ("CoNS") and Coagulase Positive \emph{Staphylococci} ("CoPS") instead of their own species, according to Karsten Becker \emph{et al.} [1]. This excludes \emph{Staphylococcus aureus} at default, use \code{Becker = "all"} to also categorise \emph{S. aureus} as "CoPS". -#' @param Lancefield a logical to indicate whether beta-haemolytic \emph{Streptococci} should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield [2]. These \emph{Streptococci} will be categorised in their first group, i.e. \emph{Streptococcus dysgalactiae} will be group C, although officially it was also categorised into groups G and L. Groups D and E will be ignored, since they are \emph{Enterococci}. +#' @param x a character vector or a \code{data.frame} with one or two columns +#' @param Becker a logical to indicate whether \emph{Staphylococci} should be categorised into Coagulase Negative \emph{Staphylococci} ("CoNS") and Coagulase Positive \emph{Staphylococci} ("CoPS") instead of their own species, according to Karsten Becker \emph{et al.} [1]. +#' +#' This excludes \emph{Staphylococcus aureus} at default, use \code{Becker = "all"} to also categorise \emph{S. aureus} as "CoPS". +#' @param Lancefield a logical to indicate whether beta-haemolytic \emph{Streptococci} should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield [2]. These \emph{Streptococci} will be categorised in their first group, i.e. \emph{Streptococcus dysgalactiae} will be group C, although officially it was also categorised into groups G and L. +#' +#' This excludes \emph{Enterococci} at default (who are in group D), use \code{Lancefield = "all"} to also categorise all \emph{Enterococci} as group D. #' @rdname as.mo #' @aliases mo #' @keywords mo Becker becker Lancefield lancefield guess #' @details \code{guess_mo} is an alias of \code{as.mo}. #' -#' Use the \code{\link{mo_property}} functions to get properties based on the returned mo, see Examples. +#' Use the \code{\link{mo_property}} functions to get properties based on the returned code, see Examples. #' #' Some exceptions have been built in to get more logical results, based on prevalence of human pathogens. These are: #' \itemize{ @@ -39,10 +43,9 @@ #' Moreover, this function also supports ID's based on only Gram stain, when the species is not known. \cr #' For example, \code{"Gram negative rods"} and \code{"GNR"} will both return the ID of a Gram negative rod: \code{GNR}. #' @source -#' [1] Becker K \emph{et al.} \strong{Coagulase-Negative Staphylococci}. 2014. Clin Microbiol Rev. 27(4): 870–926. \cr -#' \url{https://dx.doi.org/10.1128/CMR.00109-13} \cr -#' [2] Lancefield RC \strong{A serological differentiation of human and other groups of hemolytic streptococci}. 1933. J Exp Med. 57(4): 571–95. \cr -#' \url{https://dx.doi.org/10.1084/jem.57.4.571} +#' [1] Becker K \emph{et al.} \strong{Coagulase-Negative Staphylococci}. 2014. Clin Microbiol Rev. 27(4): 870–926. \url{https://dx.doi.org/10.1128/CMR.00109-13} +#' +#' [2] Lancefield RC \strong{A serological differentiation of human and other groups of hemolytic streptococci}. 1933. J Exp Med. 57(4): 571–95. \url{https://dx.doi.org/10.1084/jem.57.4.571} #' @export #' @importFrom dplyr %>% pull left_join #' @return Character (vector) with class \code{"mo"}. Unknown values will return \code{NA}. @@ -63,7 +66,7 @@ #' guess_mo("S. epidermidis") # will remain species: STAEPI #' guess_mo("S. epidermidis", Becker = TRUE) # will not remain species: STACNS #' -#' guess_mo("S. pyogenes") # will remain species: STCAGA +#' guess_mo("S. pyogenes") # will remain species: STCPYO #' guess_mo("S. pyogenes", Lancefield = TRUE) # will not remain species: STCGRA #' #' # Use mo_* functions to get a specific property based on `mo` @@ -177,10 +180,17 @@ as.mo <- function(x, Becker = FALSE, Lancefield = FALSE) { if (tolower(x[i]) %like% 'coagulase negative' | tolower(x[i]) %like% 'cns' | tolower(x[i]) %like% 'cons') { - # coerce S. coagulase negative, also as CNS and CoNS + # coerce S. coagulase negative x[i] <- 'STACNS' next } + if (tolower(x[i]) %like% 'coagulase positive' + | tolower(x[i]) %like% 'cps' + | tolower(x[i]) %like% 'cops') { + # coerce S. coagulase positive + x[i] <- 'STACPS' + next + } # translate known trivial names to genus+species if (!is.na(x_trimmed[i])) { @@ -204,7 +214,7 @@ as.mo <- function(x, Becker = FALSE, Lancefield = FALSE) { next } if (toupper(x_trimmed[i]) %in% c('PISP', 'PRSP', 'VISP', 'VRSP')) { - # peni R, peni I, vanco I, vanco R: S. pneumoniae + # peni I, peni R, vanco I, vanco R: S. pneumoniae x[i] <- 'STCPNE' next } @@ -327,7 +337,7 @@ as.mo <- function(x, Becker = FALSE, Lancefield = FALSE) { } } - if (Lancefield == TRUE) { + if (Lancefield == TRUE | Lancefield == "all") { # group A x[x == "STCPYO"] <- "STCGRA" # S. pyogenes # group B @@ -338,6 +348,9 @@ as.mo <- function(x, Becker = FALSE, Lancefield = FALSE) { "zooepidemicus", "dysgalactiae")) %>% pull(mo) x[x %in% S_groupC] <- "STCGRC" # S. agalactiae + if (Lancefield == "all") { + x[substr(x, 1, 3) == "ENC"] <- "STCGRD" # all Enterococci + } # group F x[x == "STCANG"] <- "STCGRF" # S. anginosus # group H diff --git a/R/mo_property.R b/R/mo_property.R index a0459a59..52bfeb14 100644 --- a/R/mo_property.R +++ b/R/mo_property.R @@ -18,59 +18,80 @@ #' Property of a microorganism #' -#' Use these functions to return a specific property of a microorganism from the \code{\link{microorganisms}} data set, based on their \code{mo}. Get such an ID with \code{\link{as.mo}}. -#' @param x a (vector of a) valid \code{\link{mo}} or any text that can be coerced to a valid microorganism code with \code{\link{as.mo}} +#' 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, like \code{"mo"}, \code{"bactsys"}, \code{"family"}, \code{"genus"}, \code{"species"}, \code{"fullname"}, \code{"gramstain"} and \code{"aerobic"} +#' @inheritParams as.mo +#' @param language language of the returned text, either one of \code{"en"} (English), \code{"de"} (German) or \code{"nl"} (Dutch) +#' @source +#' [1] Becker K \emph{et al.} \strong{Coagulase-Negative Staphylococci}. 2014. Clin Microbiol Rev. 27(4): 870–926. \url{https://dx.doi.org/10.1128/CMR.00109-13} +#' +#' [2] Lancefield RC \strong{A serological differentiation of human and other groups of hemolytic streptococci}. 1933. J Exp Med. 57(4): 571–95. \url{https://dx.doi.org/10.1084/jem.57.4.571} #' @rdname mo_property #' @export #' @importFrom dplyr %>% left_join pull #' @seealso \code{\link{microorganisms}} #' @examples #' # All properties -#' mo_family("E. coli") # Enterobacteriaceae -#' mo_genus("E. coli") # Escherichia -#' mo_species("E. coli") # coli -#' mo_subspecies("E. coli") # -#' mo_fullname("E. coli") # Escherichia coli -#' mo_type("E. coli") # Bacteria -#' mo_gramstain("E. coli") # Negative rods -#' mo_aerobic("E. coli") # TRUE -#' mo_type_nl("E. coli") # Bacterie -#' mo_gramstain_nl("E. coli") # Negatieve staven +#' mo_family("E. coli") # "Enterobacteriaceae" +#' mo_genus("E. coli") # "Escherichia" +#' mo_species("E. coli") # "coli" +#' mo_subspecies("E. coli") # +#' mo_fullname("E. coli") # "Escherichia coli" +#' mo_type("E. coli") # "Bacteria" +#' mo_gramstain("E. coli") # "Negative rods" +#' mo_aerobic("E. coli") # TRUE +#' +#' # language support for Spanish, German and Dutch +#' mo_type("E. coli", "es") # "Bakteria" +#' mo_type("E. coli", "de") # "Bakterien" +#' mo_type("E. coli", "nl") # "Bacterie" +#' mo_gramstain("E. coli", "es") # "Bacilos negativos" +#' mo_gramstain("E. coli", "de") # "Negative Staebchen" +#' mo_gramstain("E. coli", "nl") # "Negatieve staven" #' #' #' # Abbreviations known in the field -#' mo_genus("EHEC") # Escherichia -#' mo_species("EHEC") # coli -#' mo_subspecies("EHEC") # EHEC -#' mo_fullname("EHEC") # Escherichia coli (EHEC) +#' mo_genus("MRSA") # "Staphylococcus" +#' mo_species("MRSA") # "aureus" +#' mo_gramstain("MRSA") # "Positive cocci" #' -#' mo_genus("MRSA") # Staphylococcus -#' mo_species("MRSA") # aureus -#' mo_gramstain("MRSA") # Positive cocci -#' -#' mo_genus("VISA") # Staphylococcus -#' mo_species("VISA") # aureus +#' mo_genus("VISA") # "Staphylococcus" +#' mo_species("VISA") # "aureus" #' #' #' # Known subspecies -#' mo_genus("doylei") # Campylobacter -#' mo_species("doylei") # jejuni -#' mo_fullname("doylei") # Campylobacter jejuni (doylei) +#' mo_genus("EHEC") # "Escherichia" +#' mo_species("EHEC") # "coli" +#' mo_subspecies("EHEC") # "EHEC" +#' mo_fullname("EHEC") # "Escherichia coli (EHEC)" +#' +#' mo_genus("doylei") # "Campylobacter" +#' mo_species("doylei") # "jejuni" +#' mo_fullname("doylei") # "Campylobacter jejuni (doylei)" +#' +#' mo_fullname("K. pneu rh") # "Klebsiella pneumoniae (rhinoscleromatis)" #' #' #' # Anaerobic bacteria -#' mo_genus("B. fragilis") # Bacteroides -#' mo_species("B. fragilis") # fragilis -#' mo_aerobic("B. fragilis") # FALSE -mo_property <- function(x, property = 'fullname') { - property <- property[1] +#' mo_genus("B. fragilis") # "Bacteroides" +#' mo_species("B. fragilis") # "fragilis" +#' mo_aerobic("B. fragilis") # FALSE +#' +#' +#' # Becker classification, see ?as.mo +#' mo_fullname("S. epidermidis") # "Staphylococcus epidermidis" +#' mo_fullname("S. epidermidis", Becker = TRUE) # "Coagulase Negative Staphylococcus (CoNS)" +#' +#' # Lancefield classification, see ?as.mo +#' mo_fullname("S. pyogenes") # "Streptococcus pyogenes" +#' mo_fullname("S. pyogenes", Lancefield = TRUE) # "Streptococcus group A" +mo_property <- function(x, property = 'fullname', Becker = FALSE, Lancefield = FALSE) { + property <- tolower(property[1]) if (!property %in% colnames(microorganisms)) { - stop("invalid property: ", property, " - use a column name of `microorganisms`") - } - if (!is.mo(x)) { - x <- as.mo(x) # this will give a warning if x cannot be coerced + stop("invalid property: ", property, " - use a column name of the `microorganisms` data set") } + x <- as.mo(x = x, Becker = Becker, Lancefield = Lancefield) # this will give a warning if x cannot be coerced suppressWarnings( data.frame(mo = x, stringsAsFactors = FALSE) %>% left_join(AMR::microorganisms, by = "mo") %>% @@ -92,32 +113,32 @@ mo_genus <- function(x) { #' @rdname mo_property #' @export -mo_species <- function(x) { - mo_property(x, "species") +mo_species <- function(x, Becker = FALSE, Lancefield = FALSE) { + mo_property(x, "species", Becker = Becker, Lancefield = Lancefield) } #' @rdname mo_property #' @export -mo_subspecies <- function(x) { - mo_property(x, "subspecies") +mo_subspecies <- function(x, Becker = FALSE, Lancefield = FALSE) { + mo_property(x, "subspecies", Becker = Becker, Lancefield = Lancefield) } #' @rdname mo_property #' @export -mo_fullname <- function(x) { - mo_property(x, "fullname") +mo_fullname <- function(x, Becker = FALSE, Lancefield = FALSE) { + mo_property(x, "fullname", Becker = Becker, Lancefield = Lancefield) } #' @rdname mo_property #' @export -mo_type <- function(x) { - mo_property(x, "type") +mo_type <- function(x, language = "en") { + mo_property(x, paste0("type", checklang(language))) } #' @rdname mo_property #' @export -mo_gramstain <- function(x) { - mo_property(x, "gramstain") +mo_gramstain <- function(x, language = "en") { + mo_property(x, paste0("gramstain", checklang(language))) } #' @rdname mo_property @@ -126,14 +147,15 @@ mo_aerobic <- function(x) { mo_property(x, "aerobic") } -#' @rdname mo_property -#' @export -mo_type_nl <- function(x) { - mo_property(x, "type_nl") -} - -#' @rdname mo_property -#' @export -mo_gramstain_nl <- function(x) { - mo_property(x, "gramstain_nl") +checklang <- function(language) { + language <- tolower(language[1]) + supported <- c("en", "de", "nl", "es") + if (!language %in% c(NULL, "", supported)) { + stop("invalid language: ", language, " - use one of ", paste0("'", sort(supported), "'", collapse = ", "), call. = FALSE) + } + if (language %in% c(NULL, "", "en")) { + "" + } else { + paste0("_", language) + } } diff --git a/README.md b/README.md index 223a57a9..ba748292 100755 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ This `AMR` package basically does four important things: * Use `first_isolate` to identify the first isolates of every patient [using guidelines from the CLSI](https://clsi.org/standards/products/microbiology/documents/m39/) (Clinical and Laboratory Standards Institute). * You can also identify first *weighted* isolates of every patient, an adjusted version of the CLSI guideline. This takes into account key antibiotics of every strain and compares them. * Use `MDRO` (abbreviation of Multi Drug Resistant Organisms) to check your isolates for exceptional resistance with country-specific guidelines or EUCAST rules. Currently, national guidelines for Germany and the Netherlands are supported. - * The data set `microorganisms` contains the family, genus, species, subspecies, colloquial name and Gram stain of almost 3,000 potential human pathogenic microorganisms (bacteria, fungi/yeasts and parasites). This enables resistance analysis of e.g. different antibiotics per Gram stain. The package also contains functions to look up values in this data set like `mo_genus`, `mo_family` or `mo_gramstain`. Since it uses `as.mo` internally, AI is supported. For example, `mo_genus("MRSA")` and `mo_genus("S. aureus")` will both return `"Staphylococcus"`. These functions can be used to add new variables to your data. + * The data set `microorganisms` contains the family, genus, species, subspecies, colloquial name and Gram stain of almost 3,000 potential human pathogenic microorganisms (bacteria, fungi/yeasts and parasites). This enables resistance analysis of e.g. different antibiotics per Gram stain. The package also contains functions to look up values in this data set like `mo_genus`, `mo_family` or `mo_gramstain`. As they use `as.mo` internally, they also use artificial intelligence. For example, `mo_genus("MRSA")` and `mo_genus("S. aureus")` will both return `"Staphylococcus"`. Some functions can return results in Spanish, German and Dutch. These functions can be used to add new variables to your data. * The data set `antibiotics` contains the ATC code, LIS codes, official name, trivial name and DDD of both oral and parenteral administration. It also contains a total of 298 trade names. Use functions like `ab_official` and `ab_tradenames` to look up values. As the `mo_*` functions use `as.mo` internally, the `ab_*` functions use `as.atc` internally so it uses AI to guess your expected result. For example, `ab_official("Fluclox")`, `ab_official("Floxapen")` and `ab_official("J01CF05")` will all return `"Flucloxacillin"`. These functions can again be used to add new variables to your data. 3. It **analyses the data** with convenient functions that use well-known methods. diff --git a/data/microorganisms.rda b/data/microorganisms.rda index d939951ae67a105bb19d74b863bda5ce1d5574f6..1ab46d3b8adb18ac1cc4486d3f9f2fdfe16e0aaf 100755 GIT binary patch delta 41681 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 z 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 delta 39955 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νBObwFv9;4dDLC9ol7zz>?siP1GlgHoQtWYL; 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 diff --git a/man/as.atc.Rd b/man/as.atc.Rd index cf0f053a..445be02f 100644 --- a/man/as.atc.Rd +++ b/man/as.atc.Rd @@ -5,7 +5,7 @@ \alias{atc} \alias{guess_atc} \alias{is.atc} -\title{Find ATC code based on antibiotic property} +\title{Transform to ATC code} \usage{ as.atc(x) @@ -20,7 +20,7 @@ is.atc(x) Character (vector) with class \code{"act"}. Unknown values will return \code{NA}. } \description{ -Use this function to determine the ATC code of one or more antibiotics. The dataset \code{\link{antibiotics}} will be searched for abbreviations, official names and trade names. +Use this function to determine the ATC code of one or more antibiotics. The data set \code{\link{antibiotics}} will be searched for abbreviations, official names and trade names. } \details{ Use the \code{\link{ab_property}} functions to get properties based on the returned ATC code, see Examples. diff --git a/man/as.mo.Rd b/man/as.mo.Rd index fcaa458a..8a10f8e3 100644 --- a/man/as.mo.Rd +++ b/man/as.mo.Rd @@ -7,10 +7,9 @@ \alias{guess_mo} \title{Transform to microorganism ID} \source{ -[1] Becker K \emph{et al.} \strong{Coagulase-Negative Staphylococci}. 2014. Clin Microbiol Rev. 27(4): 870–926. \cr - \url{https://dx.doi.org/10.1128/CMR.00109-13} \cr -[2] Lancefield RC \strong{A serological differentiation of human and other groups of hemolytic streptococci}. 1933. J Exp Med. 57(4): 571–95. \cr - \url{https://dx.doi.org/10.1084/jem.57.4.571} +[1] Becker K \emph{et al.} \strong{Coagulase-Negative Staphylococci}. 2014. Clin Microbiol Rev. 27(4): 870–926. \url{https://dx.doi.org/10.1128/CMR.00109-13} + +[2] Lancefield RC \strong{A serological differentiation of human and other groups of hemolytic streptococci}. 1933. J Exp Med. 57(4): 571–95. \url{https://dx.doi.org/10.1084/jem.57.4.571} } \usage{ as.mo(x, Becker = FALSE, Lancefield = FALSE) @@ -20,11 +19,15 @@ is.mo(x) guess_mo(x, Becker = FALSE, Lancefield = FALSE) } \arguments{ -\item{x}{a character vector or a dataframe with one or two columns} +\item{x}{a character vector or a \code{data.frame} with one or two columns} -\item{Becker}{a logical to indicate whether \emph{Staphylococci} should be categorised into Coagulase Negative \emph{Staphylococci} ("CoNS") and Coagulase Positive \emph{Staphylococci} ("CoPS") instead of their own species, according to Karsten Becker \emph{et al.} [1]. This excludes \emph{Staphylococcus aureus} at default, use \code{Becker = "all"} to also categorise \emph{S. aureus} as "CoPS".} +\item{Becker}{a logical to indicate whether \emph{Staphylococci} should be categorised into Coagulase Negative \emph{Staphylococci} ("CoNS") and Coagulase Positive \emph{Staphylococci} ("CoPS") instead of their own species, according to Karsten Becker \emph{et al.} [1]. -\item{Lancefield}{a logical to indicate whether beta-haemolytic \emph{Streptococci} should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield [2]. These \emph{Streptococci} will be categorised in their first group, i.e. \emph{Streptococcus dysgalactiae} will be group C, although officially it was also categorised into groups G and L. Groups D and E will be ignored, since they are \emph{Enterococci}.} + This excludes \emph{Staphylococcus aureus} at default, use \code{Becker = "all"} to also categorise \emph{S. aureus} as "CoPS".} + +\item{Lancefield}{a logical to indicate whether beta-haemolytic \emph{Streptococci} should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield [2]. These \emph{Streptococci} will be categorised in their first group, i.e. \emph{Streptococcus dysgalactiae} will be group C, although officially it was also categorised into groups G and L. + + This excludes \emph{Enterococci} at default (who are in group D), use \code{Lancefield = "all"} to also categorise all \emph{Enterococci} as group D.} } \value{ Character (vector) with class \code{"mo"}. Unknown values will return \code{NA}. @@ -35,7 +38,7 @@ Use this function to determine a valid ID based on a genus (and species). This i \details{ \code{guess_mo} is an alias of \code{as.mo}. -Use the \code{\link{mo_property}} functions to get properties based on the returned mo, see Examples. +Use the \code{\link{mo_property}} functions to get properties based on the returned code, see Examples. Some exceptions have been built in to get more logical results, based on prevalence of human pathogens. These are: \itemize{ @@ -63,7 +66,7 @@ as.mo("VRSA") # Vancomycin Resistant S. aureus guess_mo("S. epidermidis") # will remain species: STAEPI guess_mo("S. epidermidis", Becker = TRUE) # will not remain species: STACNS -guess_mo("S. pyogenes") # will remain species: STCAGA +guess_mo("S. pyogenes") # will remain species: STCPYO guess_mo("S. pyogenes", Lancefield = TRUE) # will not remain species: STCGRA # Use mo_* functions to get a specific property based on `mo` diff --git a/man/microorganisms.Rd b/man/microorganisms.Rd index 4a3bf3a8..c6a2796c 100755 --- a/man/microorganisms.Rd +++ b/man/microorganisms.Rd @@ -4,7 +4,7 @@ \name{microorganisms} \alias{microorganisms} \title{Data set with human pathogenic microorganisms} -\format{A \code{\link{tibble}} with 2,664 observations and 12 variables: +\format{A \code{\link{tibble}} with 2,664 observations and 16 variables: \describe{ \item{\code{mo}}{ID of microorganism} \item{\code{bactsys}}{Bactsyscode of microorganism} @@ -13,11 +13,15 @@ \item{\code{species}}{Species name of microorganism, like \code{"coli"}} \item{\code{subspecies}}{Subspecies name of bio-/serovar of microorganism, like \code{"EHEC"}} \item{\code{fullname}}{Full name, like \code{"Echerichia coli (EHEC)"}} + \item{\code{aerobic}}{Logical whether bacteria is aerobic} \item{\code{type}}{Type of microorganism, like \code{"Bacteria"} and \code{"Fungus/yeast"}} \item{\code{gramstain}}{Gram of microorganism, like \code{"Negative rods"}} - \item{\code{aerobic}}{Logical whether bacteria is aerobic} + \item{\code{type_de}}{Type of microorganism in German, like \code{"Bakterien"} and \code{"Pilz/Hefe"}} + \item{\code{gramstain_de}}{Gram of microorganism in German, like \code{"Negative Staebchen"}} \item{\code{type_nl}}{Type of microorganism in Dutch, like \code{"Bacterie"} and \code{"Schimmel/gist"}} \item{\code{gramstain_nl}}{Gram of microorganism in Dutch, like \code{"Negatieve staven"}} + \item{\code{type_es}}{Type of microorganism in Spanish, like \code{"Bacteria"} and \code{"Hongo/levadura"}} + \item{\code{gramstain_es}}{Gram of microorganism in Spanish, like \code{"Bacilos negativos"}} }} \usage{ microorganisms diff --git a/man/mo_property.Rd b/man/mo_property.Rd index cd8caabe..76574879 100644 --- a/man/mo_property.Rd +++ b/man/mo_property.Rd @@ -10,78 +10,105 @@ \alias{mo_type} \alias{mo_gramstain} \alias{mo_aerobic} -\alias{mo_type_nl} -\alias{mo_gramstain_nl} \title{Property of a microorganism} +\source{ +[1] Becker K \emph{et al.} \strong{Coagulase-Negative Staphylococci}. 2014. Clin Microbiol Rev. 27(4): 870–926. \url{https://dx.doi.org/10.1128/CMR.00109-13} + +[2] Lancefield RC \strong{A serological differentiation of human and other groups of hemolytic streptococci}. 1933. J Exp Med. 57(4): 571–95. \url{https://dx.doi.org/10.1084/jem.57.4.571} +} \usage{ -mo_property(x, property = "fullname") +mo_property(x, property = "fullname", Becker = FALSE, + Lancefield = FALSE) mo_family(x) mo_genus(x) -mo_species(x) +mo_species(x, Becker = FALSE, Lancefield = FALSE) -mo_subspecies(x) +mo_subspecies(x, Becker = FALSE, Lancefield = FALSE) -mo_fullname(x) +mo_fullname(x, Becker = FALSE, Lancefield = FALSE) -mo_type(x) +mo_type(x, language = "en") -mo_gramstain(x) +mo_gramstain(x, language = "en") mo_aerobic(x) - -mo_type_nl(x) - -mo_gramstain_nl(x) } \arguments{ -\item{x}{a (vector of a) valid \code{\link{mo}} or any text that can be coerced to a valid microorganism code with \code{\link{as.mo}}} +\item{x}{any (vector of) text that can be coerced to a valid microorganism code with \code{\link{as.mo}}} \item{property}{one of the column names of one of the \code{\link{microorganisms}} data set, like \code{"mo"}, \code{"bactsys"}, \code{"family"}, \code{"genus"}, \code{"species"}, \code{"fullname"}, \code{"gramstain"} and \code{"aerobic"}} + +\item{Becker}{a logical to indicate whether \emph{Staphylococci} should be categorised into Coagulase Negative \emph{Staphylococci} ("CoNS") and Coagulase Positive \emph{Staphylococci} ("CoPS") instead of their own species, according to Karsten Becker \emph{et al.} [1]. + + This excludes \emph{Staphylococcus aureus} at default, use \code{Becker = "all"} to also categorise \emph{S. aureus} as "CoPS".} + +\item{Lancefield}{a logical to indicate whether beta-haemolytic \emph{Streptococci} should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield [2]. These \emph{Streptococci} will be categorised in their first group, i.e. \emph{Streptococcus dysgalactiae} will be group C, although officially it was also categorised into groups G and L. + + This excludes \emph{Enterococci} at default (who are in group D), use \code{Lancefield = "all"} to also categorise all \emph{Enterococci} as group D.} + +\item{language}{language of the returned text, either one of \code{"en"} (English), \code{"de"} (German) or \code{"nl"} (Dutch)} } \description{ -Use these functions to return a specific property of a microorganism from the \code{\link{microorganisms}} data set, based on their \code{mo}. Get such an ID with \code{\link{as.mo}}. +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}}. } \examples{ # All properties -mo_family("E. coli") # Enterobacteriaceae -mo_genus("E. coli") # Escherichia -mo_species("E. coli") # coli -mo_subspecies("E. coli") # -mo_fullname("E. coli") # Escherichia coli -mo_type("E. coli") # Bacteria -mo_gramstain("E. coli") # Negative rods -mo_aerobic("E. coli") # TRUE -mo_type_nl("E. coli") # Bacterie -mo_gramstain_nl("E. coli") # Negatieve staven +mo_family("E. coli") # "Enterobacteriaceae" +mo_genus("E. coli") # "Escherichia" +mo_species("E. coli") # "coli" +mo_subspecies("E. coli") # +mo_fullname("E. coli") # "Escherichia coli" +mo_type("E. coli") # "Bacteria" +mo_gramstain("E. coli") # "Negative rods" +mo_aerobic("E. coli") # TRUE + +# language support for Spanish, German and Dutch +mo_type("E. coli", "es") # "Bakteria" +mo_type("E. coli", "de") # "Bakterien" +mo_type("E. coli", "nl") # "Bacterie" +mo_gramstain("E. coli", "es") # "Bacilos negativos" +mo_gramstain("E. coli", "de") # "Negative Staebchen" +mo_gramstain("E. coli", "nl") # "Negatieve staven" # Abbreviations known in the field -mo_genus("EHEC") # Escherichia -mo_species("EHEC") # coli -mo_subspecies("EHEC") # EHEC -mo_fullname("EHEC") # Escherichia coli (EHEC) +mo_genus("MRSA") # "Staphylococcus" +mo_species("MRSA") # "aureus" +mo_gramstain("MRSA") # "Positive cocci" -mo_genus("MRSA") # Staphylococcus -mo_species("MRSA") # aureus -mo_gramstain("MRSA") # Positive cocci - -mo_genus("VISA") # Staphylococcus -mo_species("VISA") # aureus +mo_genus("VISA") # "Staphylococcus" +mo_species("VISA") # "aureus" # Known subspecies -mo_genus("doylei") # Campylobacter -mo_species("doylei") # jejuni -mo_fullname("doylei") # Campylobacter jejuni (doylei) +mo_genus("EHEC") # "Escherichia" +mo_species("EHEC") # "coli" +mo_subspecies("EHEC") # "EHEC" +mo_fullname("EHEC") # "Escherichia coli (EHEC)" + +mo_genus("doylei") # "Campylobacter" +mo_species("doylei") # "jejuni" +mo_fullname("doylei") # "Campylobacter jejuni (doylei)" + +mo_fullname("K. pneu rh") # "Klebsiella pneumoniae (rhinoscleromatis)" # Anaerobic bacteria -mo_genus("B. fragilis") # Bacteroides -mo_species("B. fragilis") # fragilis -mo_aerobic("B. fragilis") # FALSE +mo_genus("B. fragilis") # "Bacteroides" +mo_species("B. fragilis") # "fragilis" +mo_aerobic("B. fragilis") # FALSE + + +# Becker classification, see ?as.mo +mo_fullname("S. epidermidis") # "Staphylococcus epidermidis" +mo_fullname("S. epidermidis", Becker = TRUE) # "Coagulase Negative Staphylococcus (CoNS)" + +# Lancefield classification, see ?as.mo +mo_fullname("S. pyogenes") # "Streptococcus pyogenes" +mo_fullname("S. pyogenes", Lancefield = TRUE) # "Streptococcus group A" } \seealso{ \code{\link{microorganisms}} diff --git a/tests/testthat/test-ab_property.R b/tests/testthat/test-ab_property.R index 9088cfbf..fb32a170 100644 --- a/tests/testthat/test-ab_property.R +++ b/tests/testthat/test-ab_property.R @@ -8,4 +8,7 @@ test_that("ab_property works", { expect_equal(ab_umcg("amox"), "AMOX") expect_equal(class(ab_tradenames("amox")), "character") expect_equal(class(ab_tradenames(c("amox", "amox"))), "list") + expect_equal(ab_atc("amox"), as.character(as.atc("amox"))) + + expect_error(ab_property("amox", "invalid property")) }) diff --git a/tests/testthat/test-deprecated.R b/tests/testthat/test-deprecated.R index 353242bd..12df2550 100644 --- a/tests/testthat/test-deprecated.R +++ b/tests/testthat/test-deprecated.R @@ -16,9 +16,11 @@ test_that("deprecated functions work", { old_mo <- "ESCCOL" class(old_mo) <- "bactid" + df_oldmo <- data.frame(test = old_mo) # print expect_output(print(old_mo)) - # test data.frame and pull - expect_equal(as.character(dplyr::pull(data.frame(test = old_mo), test)), "ESCCOL") + # test pull + library(dplyr) + expect_identical(df_oldmo %>% pull(test), old_mo) }) diff --git a/tests/testthat/test-mo.R b/tests/testthat/test-mo.R index 36185168..afbe1237 100644 --- a/tests/testthat/test-mo.R +++ b/tests/testthat/test-mo.R @@ -12,7 +12,7 @@ test_that("as.mo works", { expect_equal(as.character(as.mo("klpn")), "KLEPNE") expect_equal(as.character(as.mo("Klebsiella")), "KLE") expect_equal(as.character(as.mo("K. pneu rhino")), "KLEPNERH") # K. pneumoniae subspp. rhinoscleromatis - expect_equal(as.character(as.mo("coagulase negative")), "STACNS") + expect_equal(as.character(as.mo("Bartonella")), "BAR") expect_equal(as.character(as.mo("P. aer")), "PSEAER") # not Pasteurella aerogenes @@ -30,16 +30,21 @@ test_that("as.mo works", { expect_equal(as.character(as.mo("VISP")), "STCPNE") expect_equal(as.character(as.mo("VRSP")), "STCPNE") + expect_equal(as.character(as.mo("CNS")), "STACNS") + expect_equal(as.character(as.mo("CoNS")), "STACNS") + expect_equal(as.character(as.mo("CPS")), "STACPS") + expect_equal(as.character(as.mo("CoPS")), "STACPS") + expect_identical( as.character( as.mo(c("stau", - "STAU", - "staaur", - "S. aureus", - "S aureus", - "Staphylococcus aureus", - "MRSA", - "VISA"))), + "STAU", + "staaur", + "S. aureus", + "S aureus", + "Staphylococcus aureus", + "MRSA", + "VISA"))), rep("STAAUR", 8)) # check for Becker classification @@ -55,19 +60,23 @@ test_that("as.mo works", { expect_identical(as.character(guess_mo("STAAUR", Becker = "all")), "STACPS") # check for Lancefield classification - expect_identical(as.character(guess_mo("S. pyogenes", Lancefield = FALSE)), "STCPYO") - expect_identical(as.character(guess_mo("S. pyogenes", Lancefield = TRUE)), "STCGRA") - expect_identical(as.character(guess_mo("STCPYO", Lancefield = TRUE)), "STCGRA") - expect_identical(as.character(guess_mo("S. agalactiae", Lancefield = FALSE)), "STCAGA") - expect_identical(as.character(guess_mo("S. agalactiae", Lancefield = TRUE)), "STCGRB") # group B - expect_identical(as.character(guess_mo("S. equisimilis", Lancefield = FALSE)), "STCEQS") - expect_identical(as.character(guess_mo("S. equisimilis", Lancefield = TRUE)), "STCGRC") # group C - expect_identical(as.character(guess_mo("S. anginosus", Lancefield = FALSE)), "STCANG") - expect_identical(as.character(guess_mo("S. anginosus", Lancefield = TRUE)), "STCGRF") # group F - expect_identical(as.character(guess_mo("S. sanguis", Lancefield = FALSE)), "STCSAN") - expect_identical(as.character(guess_mo("S. sanguis", Lancefield = TRUE)), "STCGRH") # group H - expect_identical(as.character(guess_mo("S. salivarius", Lancefield = FALSE)), "STCSAL") - expect_identical(as.character(guess_mo("S. salivarius", Lancefield = TRUE)), "STCGRK") # group K + expect_identical(as.character(guess_mo("S. pyogenes", Lancefield = FALSE)), "STCPYO") + expect_identical(as.character(guess_mo("S. pyogenes", Lancefield = TRUE)), "STCGRA") + expect_identical(as.character(guess_mo("STCPYO", Lancefield = TRUE)), "STCGRA") # group A + expect_identical(as.character(guess_mo("S. agalactiae", Lancefield = FALSE)), "STCAGA") + expect_identical(as.character(guess_mo("S. agalactiae", Lancefield = TRUE)), "STCGRB") # group B + expect_identical(as.character(guess_mo("S. equisimilis", Lancefield = FALSE)), "STCEQS") + expect_identical(as.character(guess_mo("S. equisimilis", Lancefield = TRUE)), "STCGRC") # group C + # Enterococci must only be influenced if Lancefield = "all" + expect_identical(as.character(guess_mo("E. faecium", Lancefield = FALSE)), "ENCFAC") + expect_identical(as.character(guess_mo("E. faecium", Lancefield = TRUE)), "ENCFAC") + expect_identical(as.character(guess_mo("E. faecium", Lancefield = "all")), "STCGRD") # group D + expect_identical(as.character(guess_mo("S. anginosus", Lancefield = FALSE)), "STCANG") + expect_identical(as.character(guess_mo("S. anginosus", Lancefield = TRUE)), "STCGRF") # group F + expect_identical(as.character(guess_mo("S. sanguis", Lancefield = FALSE)), "STCSAN") + expect_identical(as.character(guess_mo("S. sanguis", Lancefield = TRUE)), "STCGRH") # group H + expect_identical(as.character(guess_mo("S. salivarius", Lancefield = FALSE)), "STCSAL") + expect_identical(as.character(guess_mo("S. salivarius", Lancefield = TRUE)), "STCGRK") # group K library(dplyr) diff --git a/tests/testthat/test-mo_property.R b/tests/testthat/test-mo_property.R index b78b6a2f..782f6aef 100644 --- a/tests/testthat/test-mo_property.R +++ b/tests/testthat/test-mo_property.R @@ -9,6 +9,12 @@ test_that("mo_property works", { expect_equal(mo_type("E. coli"), "Bacteria") expect_equal(mo_gramstain("E. coli"), "Negative rods") expect_equal(mo_aerobic("E. coli"), TRUE) - expect_equal(mo_type_nl("E. coli"), "Bacterie") - expect_equal(mo_gramstain_nl("E. coli"), "Negatieve staven") + + expect_equal(mo_type("E. coli", language = "de"), "Bakterien") + expect_equal(mo_gramstain("E. coli", language = "de"), "Negative Staebchen") + + expect_equal(mo_type("E. coli", language = "nl"), "Bacterie") + expect_equal(mo_gramstain("E. coli", language = "nl"), "Negatieve staven") + + expect_error(mo_type("E. coli", language = "INVALID")) }) diff --git a/vignettes/.gitignore b/vignettes/.gitignore index 5a5283f9..efb49e92 100755 --- a/vignettes/.gitignore +++ b/vignettes/.gitignore @@ -1,4 +1,5 @@ figure *.html *.md +*.R rsconnect diff --git a/vignettes/AMR.Rmd b/vignettes/AMR.Rmd index cf1e2b96..c785a189 100755 --- a/vignettes/AMR.Rmd +++ b/vignettes/AMR.Rmd @@ -34,7 +34,7 @@ This `AMR` package basically does four important things: * Use `first_isolate` to identify the first isolates of every patient [using guidelines from the CLSI](https://clsi.org/standards/products/microbiology/documents/m39/) (Clinical and Laboratory Standards Institute). * You can also identify first *weighted* isolates of every patient, an adjusted version of the CLSI guideline. This takes into account key antibiotics of every strain and compares them. * Use `MDRO` (abbreviation of Multi Drug Resistant Organisms) to check your isolates for exceptional resistance with country-specific guidelines or EUCAST rules. Currently, national guidelines for Germany and the Netherlands are supported. - * The data set `microorganisms` contains the family, genus, species, subspecies, colloquial name and Gram stain of almost 2,650 microorganisms (2,207 bacteria, 285 fungi/yeasts, 153 parasites, 1 other). This enables resistance analysis of e.g. different antibiotics per Gram stain. The package also contains functions to look up values in this data set like `mo_genus`, `mo_family` or `mo_gramstain`. Since it uses `as.mo` internally, AI is supported. For example, `mo_genus("MRSA")` and `mo_genus("S. aureus")` will both return `"Staphylococcus"`. These functions can be used to add new variables to your data. + * The data set `microorganisms` contains the family, genus, species, subspecies, colloquial name and Gram stain of almost 3,000 potential human pathogenic microorganisms (bacteria, fungi/yeasts and parasites). This enables resistance analysis of e.g. different antibiotics per Gram stain. The package also contains functions to look up values in this data set like `mo_genus`, `mo_family` or `mo_gramstain`. As they use `as.mo` internally, they also use artificial intelligence. For example, `mo_genus("MRSA")` and `mo_genus("S. aureus")` will both return `"Staphylococcus"`. Some functions can return results in Spanish, German and Dutch. These functions can be used to add new variables to your data. * The data set `antibiotics` contains the ATC code, LIS codes, official name, trivial name and DDD of both oral and parenteral administration. It also contains a total of 298 trade names. Use functions like `ab_official` and `ab_tradenames` to look up values. As the `mo_*` functions use `as.mo` internally, the `ab_*` functions use `as.atc` internally so it uses AI to guess your expected result. For example, `ab_official("Fluclox")`, `ab_official("Floxapen")` and `ab_official("J01CF05")` will all return `"Flucloxacillin"`. These functions can again be used to add new variables to your data. 3. It **analyses the data** with convenient functions that use well-known methods. @@ -52,7 +52,6 @@ This `AMR` package basically does four important things: * Results of 40 antibiotics (each antibiotic in its own column) with a total of 38,414 antimicrobial results * Real and genuine data - ---- ```{r, echo = FALSE} # this will print "2018" in 2018, and "2018-yyyy" after 2018.