From 8421638b606951f09e84a808babab18d6d4f0033 Mon Sep 17 00:00:00 2001 From: "Matthijs S. Berends" Date: Mon, 23 Jul 2018 14:14:03 +0200 Subject: [PATCH] new class bactid --- DESCRIPTION | 1 - NAMESPACE | 6 + NEWS.md | 9 +- R/{guess_bactid.R => bactid.R} | 159 +++++++++++++----- R/eucast.R | 7 +- R/{first_isolates.R => first_isolate.R} | 7 +- R/freq.R | 3 + R/{join.R => join_microorganisms.R} | 48 ++++-- README.md | 149 ++++++++-------- data/microorganisms.rda | Bin 38384 -> 38443 bytes data/septic_patients.rda | Bin 35579 -> 35508 bytes man/as.bactid.Rd | 69 ++++++++ man/first_isolate.Rd | 4 +- man/guess_bactid.Rd | 43 ----- man/join.Rd | 2 +- man/key_antibiotics.Rd | 2 +- tests/testthat/test-bactid.R | 64 +++++++ tests/testthat/test-eucast.R | 33 ++-- ...-first_isolates.R => test-first_isolate.R} | 2 +- tests/testthat/test-guess_bactid.R | 49 ------ ...est-joins.R => test-join_microorganisms.R} | 2 +- 21 files changed, 408 insertions(+), 251 deletions(-) rename R/{guess_bactid.R => bactid.R} (53%) rename R/{first_isolates.R => first_isolate.R} (97%) rename R/{join.R => join_microorganisms.R} (72%) create mode 100644 man/as.bactid.Rd delete mode 100755 man/guess_bactid.Rd create mode 100644 tests/testthat/test-bactid.R rename tests/testthat/{test-first_isolates.R => test-first_isolate.R} (99%) delete mode 100644 tests/testthat/test-guess_bactid.R rename tests/testthat/{test-joins.R => test-join_microorganisms.R} (96%) diff --git a/DESCRIPTION b/DESCRIPTION index fb4059e5..b28deb19 100755 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -28,7 +28,6 @@ Depends: R (>= 3.0.0) Imports: backports, - broom, clipr, curl, dplyr (>= 0.7.0), diff --git a/NAMESPACE b/NAMESPACE index ce3edb46..60753e49 100755 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,5 +1,6 @@ # Generated by roxygen2: do not edit by hand +S3method(as.data.frame,bactid) S3method(as.data.frame,frequency_tbl) S3method(as.double,mic) S3method(as.integer,mic) @@ -16,6 +17,7 @@ S3method(kurtosis,matrix) S3method(plot,frequency_tbl) S3method(plot,mic) S3method(plot,rsi) +S3method(print,bactid) S3method(print,frequency_tbl) S3method(print,mic) S3method(print,rsi) @@ -32,6 +34,7 @@ export(MDRO) export(MRGN) export(abname) export(anti_join_microorganisms) +export(as.bactid) export(as.mic) export(as.rsi) export(atc_ddd) @@ -48,6 +51,7 @@ export(guess_atc) export(guess_bactid) export(inner_join_microorganisms) export(interpretive_reading) +export(is.bactid) export(is.mic) export(is.rsi) export(key_antibiotics) @@ -68,6 +72,7 @@ export(semi_join_microorganisms) export(skewness) export(susceptibility) export(top_freq) +exportMethods(as.data.frame.bactid) exportMethods(as.data.frame.frequency_tbl) exportMethods(as.double.mic) exportMethods(as.integer.mic) @@ -85,6 +90,7 @@ exportMethods(kurtosis.matrix) exportMethods(plot.frequency_tbl) exportMethods(plot.mic) exportMethods(plot.rsi) +exportMethods(print.bactid) exportMethods(print.frequency_tbl) exportMethods(print.mic) exportMethods(print.rsi) diff --git a/NEWS.md b/NEWS.md index a331d627..850c2a17 100755 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,7 @@ * **BREAKING**: the methodology for determining first weighted isolates was changed. The antibiotics that are compared between isolates (call *key antibiotics*) to include more first isolates (afterwards called first *weighted* isolates) are now as follows: * Gram-positive: amoxicillin, amoxicillin/clavlanic acid, cefuroxime, piperacillin/tazobactam, ciprofloxacin, trimethoprim/sulfamethoxazole, vancomycin, teicoplanin, tetracycline, erythromycin, oxacillin, rifampicin * Gram-negative: amoxicillin, amoxicillin/clavlanic acid, cefuroxime, piperacillin/tazobactam, ciprofloxacin, trimethoprim/sulfamethoxazole, gentamicin, tobramycin, colistin, cefotaxime, ceftazidime, meropenem +* Functions `as.bactid` and `is.bactid` to transform/look up microbial ID's; this replaces the function `guess_bactid` but it will remain available for backwards compatibility * For convience, new descriptive statistical functions `kurtosis` and `skewness` that are lacking in base R - they are generic functions and have support for vectors, data.frames and matrices * Function `g.test` to perform the Χ2 distributed [*G*-test](https://en.wikipedia.org/wiki/G-test), which use is the same as `chisq.test` * Function `ratio` to transform a vector of values to a preset ratio @@ -28,8 +29,9 @@ * Printing of class `mic` now shows all MIC values * `%like%` now supports multiple patterns * Frequency tables are now actual `data.frame`s with altered console printing to make it look like a frequency table. Because of this, the parameter `toConsole` is not longer needed. -* Small translational improvements to the `septic_patients` dataset -* Small improvements to the `microorganisms` dataset, especially for *Salmonella* +* Fix for `freq` where the class of an item would be lost +* Small translational improvements to the `septic_patients` dataset and the column `bactid` now has the new class `"bactid"` +* Small improvements to the `microorganisms` dataset (especially for *Salmonella*) and the column `bactid` now has the new class `"bactid"` * Combined MIC/RSI values will now be coerced by the `rsi` and `mic` functions: * `as.rsi("<=0.002; S")` will return `S` * `as.mic("<=0.002; S")` will return `<=0.002` @@ -38,7 +40,8 @@ * Build-in host check for `atc_property` as it requires the host set by `url` to be responsive * Improved `first_isolate` algorithm to exclude isolates where bacteria ID or genus is unavailable * Fix for warning *hybrid evaluation forced for row_number* ([`924b62`](https://github.com/tidyverse/dplyr/commit/924b62)) from the `dplyr` package v0.7.5 and above -* Support for 1 or 2 columns as input for `guess_bactid` +* Support for empty values and for 1 or 2 columns as input for `guess_bactid` (now called `as.bactid`) + * So `yourdata %>% select(genus, species) %>% as.bactid()` now also works #### Other * Unit testing for R 3.0 and the latest available release: https://travis-ci.org/msberends/AMR diff --git a/R/guess_bactid.R b/R/bactid.R similarity index 53% rename from R/guess_bactid.R rename to R/bactid.R index 785ca0ae..93c10e7f 100644 --- a/R/guess_bactid.R +++ b/R/bactid.R @@ -16,37 +16,58 @@ # GNU General Public License for more details. # # ==================================================================== # -#' Find bacteria ID based on genus/species +#' Transform to bacteria ID #' -#' Use this function to determine a valid ID based on a genus (and species). This input could 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 character vector or a dataframe with one or two columns +#' 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 +#' @rdname as.bactid +#' @details Some exceptions have been built in to get more logical results, based on prevalence of human pathogens. For example: +#' \itemize{ +#' \item{\code{"E. coli"} will return the ID of \emph{Escherichia coli} and not \emph{Entamoeba coli}, although the latter would alphabetically come first} +#' \item{\code{"H. influenzae"} will return the ID of \emph{Haemophilus influenzae} and not \emph{Haematobacter influenzae}} +#' \item{Something like \code{"p aer"} will return the ID of \emph{Pseudomonas aeruginosa} and not \emph{Pasteurella aerogenes}} +#' \item{Something like \code{"stau"} or \code{"staaur"} will return the ID of \emph{Staphylococcus aureus} and not \emph{Staphylococcus auricularis}} +#' } +#' 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}. #' @export #' @importFrom dplyr %>% filter pull -#' @return Character (vector). +#' @return Character (vector) with class \code{"bactid"}. Unknown values will return \code{NA}. #' @seealso \code{\link{microorganisms}} for the dataframe that is being used to determine ID's. #' @examples #' # These examples all return "STAAUR", the ID of S. aureus: -#' guess_bactid("stau") -#' guess_bactid("STAU") -#' guess_bactid("staaur") -#' guess_bactid("S. aureus") -#' guess_bactid("S aureus") -#' guess_bactid("Staphylococcus aureus") -#' guess_bactid("MRSA") # Methicillin-resistant S. aureus -#' guess_bactid("VISA") # Vancomycin Intermediate S. aureus +#' as.bactid("stau") +#' as.bactid("STAU") +#' as.bactid("staaur") +#' as.bactid("S. aureus") +#' as.bactid("S aureus") +#' as.bactid("Staphylococcus aureus") +#' as.bactid("MRSA") # Methicillin Resistant S. aureus +#' as.bactid("VISA") # Vancomycin Intermediate S. aureus +#' as.bactid("VRSA") # Vancomycin Resistant S. aureus #' #' \dontrun{ -#' df$bactid <- guess_bactid(df$microorganism_name) +#' df$bactid <- as.bactid(df$microorganism_name) #' #' # the select function of tidyverse is also supported: -#' df$bactid <- df %>% select(microorganism_name) %>% guess_bactid() +#' library(dplyr) +#' df$bactid <- df %>% +#' select(microorganism_name) %>% +#' as.bactid() #' #' # and can even contain 2 columns, which is convenient for genus/species combinations: -#' df$bactid <- df %>% select(genus, species) %>% guess_bactid() +#' df$bactid <- df %>% +#' select(genus, species) %>% +#' as.bactid() +#' #' # same result: -#' df <- df %>% mutate(bactid = paste(genus, species)) %>% guess_bactid()) +#' df <- df %>% +#' mutate(bactid = paste(genus, species) %>% +#' as.bactid()) #' } -guess_bactid <- function(x) { +as.bactid <- function(x) { + + failures <- character(0) if (NCOL(x) == 2) { # support tidyverse selection like: df %>% select(colA, colB) @@ -60,17 +81,19 @@ guess_bactid <- function(x) { if (NCOL(x) > 2) { stop('`x` can be 2 columns at most', call. = FALSE) } + # support tidyverse selection like: df %>% select(colA) if (!is.vector(x)) { x <- pull(x, 1) } } + x.fullbackup <- x # remove dots and other non-text in case of "E. coli" except spaces - x <- gsub("[^a-zA-Z ]+", "", x) + x <- gsub("[^a-zA-Z0-9 ]+", "", x) # but spaces before and after should be omitted x <- trimws(x, which = "both") - x.bak <- x + x.backup <- x # replace space by regex sign x <- gsub(" ", ".*", x, fixed = TRUE) # add start and stop @@ -96,42 +119,44 @@ guess_bactid <- function(x) { # avoid detection of Pasteurella aerogenes in case of Pseudomonas aeruginosa x[i] <- 'Pseudomonas aeruginosa' } - if (tolower(x[i]) %like% 'coagulase') { - # coerce S. coagulase negative + if (tolower(x[i]) %like% 'coagulase' + | tolower(x[i]) %like% 'cns' + | tolower(x[i]) %like% 'cons') { + # coerce S. coagulase negative, also as CNS and CoNS x[i] <- 'Coagulase Negative Staphylococcus (CNS)' } # translate known trivial names to genus+species - if (!is.na(x.bak[i])) { - if (toupper(x.bak[i]) == 'MRSA' - | toupper(x.bak[i]) == 'VISA' - | toupper(x.bak[i]) == 'VRSA') { + if (!is.na(x.backup[i])) { + if (toupper(x.backup[i]) == 'MRSA' + | toupper(x.backup[i]) == 'VISA' + | toupper(x.backup[i]) == 'VRSA') { x[i] <- 'Staphylococcus aureus' } - if (toupper(x.bak[i]) == 'MRSE') { + if (toupper(x.backup[i]) == 'MRSE') { x[i] <- 'Staphylococcus epidermidis' } - if (toupper(x.bak[i]) == 'VRE') { + if (toupper(x.backup[i]) == 'VRE') { x[i] <- 'Enterococcus' } - if (toupper(x.bak[i]) == 'MRPA') { + if (toupper(x.backup[i]) == 'MRPA') { # multi resistant P. aeruginosa x[i] <- 'Pseudomonas aeruginosa' } - if (toupper(x.bak[i]) == 'PISP' - | toupper(x.bak[i]) == 'PRSP') { + if (toupper(x.backup[i]) == 'PISP' + | toupper(x.backup[i]) == 'PRSP') { # peni resistant S. pneumoniae x[i] <- 'Streptococcus pneumoniae' } - if (toupper(x.bak[i]) == 'VISP' - | toupper(x.bak[i]) == 'VRSP') { + if (toupper(x.backup[i]) == 'VISP' + | toupper(x.backup[i]) == 'VRSP') { # vanco resistant S. pneumoniae x[i] <- 'Streptococcus pneumoniae' } } # let's try the ID's first - found <- AMR::microorganisms %>% filter(bactid == x.bak[i]) + found <- AMR::microorganisms %>% filter(bactid == x.backup[i]) if (nrow(found) == 0) { # now try exact match @@ -152,38 +177,82 @@ guess_bactid <- function(x) { } if (nrow(found) == 0) { # search for GLIMS code - if (toupper(x.bak[i]) %in% toupper(AMR::microorganisms.umcg$mocode)) { - found <- AMR::microorganisms.umcg %>% filter(toupper(mocode) == toupper(x.bak[i])) + if (toupper(x.backup[i]) %in% toupper(AMR::microorganisms.umcg$mocode)) { + found <- AMR::microorganisms.umcg %>% filter(toupper(mocode) == toupper(x.backup[i])) } } if (nrow(found) == 0) { # try splitting of characters and then find ID # like esco = E. coli, klpn = K. pneumoniae, stau = S. aureus x_split <- x - x_length <- nchar(x.bak[i]) - x_split[i] <- paste0(x.bak[i] %>% substr(1, x_length / 2) %>% trimws(), + x_length <- nchar(x.backup[i]) + x_split[i] <- paste0(x.backup[i] %>% substr(1, x_length / 2) %>% trimws(), '.* ', - x.bak[i] %>% substr((x_length / 2) + 1, x_length) %>% trimws()) + x.backup[i] %>% substr((x_length / 2) + 1, x_length) %>% trimws()) found <- AMR::microorganisms %>% filter(fullname %like% paste0('^', x_split[i])) } if (nrow(found) == 0) { # try any match with text before and after original search string # so "negative rods" will be "GNR" - if (x.bak[i] %like% "^Gram") { - x.bak[i] <- gsub("^Gram", "", x.bak[i], ignore.case = TRUE) + if (x.backup[i] %like% "^Gram") { + x.backup[i] <- gsub("^Gram", "", x.backup[i], ignore.case = TRUE) # remove leading and trailing spaces again - x.bak[i] <- trimws(x.bak[i], which = "both") + x.backup[i] <- trimws(x.backup[i], which = "both") } - if (!is.na(x.bak[i])) { - found <- AMR::microorganisms %>% filter(fullname %like% x.bak[i]) + if (!is.na(x.backup[i])) { + found <- AMR::microorganisms %>% filter(fullname %like% x.backup[i]) } } - if (nrow(found) != 0) { + if (nrow(found) != 0 & x.backup[i] != "") { x[i] <- as.character(found[1, 'bactid']) } else { - x[i] <- "" + x[i] <- NA_character_ + failures <- c(failures, x.fullbackup[i]) } } + + failures <- failures[!failures %in% c(NA, NULL, NaN)] + if (length(failures) > 0) { + warning("These values could not be coerced to a valid bactid: ", + paste('"', unique(failures), '"', sep = "", collapse = ', '), + ".", + call. = FALSE) + } + class(x) <- "bactid" + attr(x, 'package') <- 'AMR' + attr(x, 'package.version') <- packageDescription('AMR')$Version x } + +#' @rdname as.bactid +#' @export +guess_bactid <- as.bactid + +#' @rdname as.bactid +#' @export +is.bactid <- function(x) { + identical(class(x), "bactid") +} + +#' @exportMethod print.bactid +#' @export +#' @noRd +print.bactid <- function(x, ...) { + cat("Class 'bactid'\n") + print.default(as.character(x), quote = FALSE) +} + +#' @exportMethod as.data.frame.bactid +#' @export +#' @noRd +as.data.frame.bactid <- function (x, ...) { + # same as as.data.frame.character but with removed stringsAsFactors + nm <- paste(deparse(substitute(x), width.cutoff = 500L), + collapse = " ") + if (!"nm" %in% names(list(...))) { + as.data.frame.vector(x, ..., nm = nm) + } else { + as.data.frame.vector(x, ...) + } +} diff --git a/R/eucast.R b/R/eucast.R index 3d2575fd..b1ec16c8 100755 --- a/R/eucast.R +++ b/R/eucast.R @@ -201,9 +201,10 @@ EUCAST_rules <- function(tbl, } # join to microorganisms table - joinby <- colnames(AMR::microorganisms)[1] - names(joinby) <- col_bactid - tbl <- tbl %>% left_join(y = AMR::microorganisms, by = joinby, suffix = c("_tempmicroorganisms", "")) + if (!tbl %>% pull(col_bactid) %>% is.bactid()) { + tbl[, col_bactid] <- tbl %>% pull(col_bactid) %>% as.bactid() + } + tbl <- tbl %>% left_join_microorganisms(by = col_bactid, suffix = c("_tempmicroorganisms", "")) # antibiotic classes aminoglycosides <- c(tobr, gent, kana, neom, neti, siso) diff --git a/R/first_isolates.R b/R/first_isolate.R similarity index 97% rename from R/first_isolates.R rename to R/first_isolate.R index 4f9f2bff..fd97bcf4 100755 --- a/R/first_isolates.R +++ b/R/first_isolate.R @@ -22,7 +22,7 @@ #' @param tbl a \code{data.frame} containing isolates. #' @param col_date column name of the result date (or date that is was received on the lab) #' @param col_patient_id column name of the unique IDs of the patients -#' @param col_bactid column name of the unique IDs of the microorganisms (should occur in the \code{\link{microorganisms}} dataset). Get your bactid's with the function \code{\link{guess_bactid}}, that takes microorganism names as input. +#' @param col_bactid column name of the unique IDs of the microorganisms: \code{bactid}'s. If this column has another class than \code{"bactid"}, values will be coerced using \code{\link{as.bactid}}. #' @param col_testcode column name of the test codes. Use \code{col_testcode = NA} to \strong{not} exclude certain test codes (like test codes for screening). In that case \code{testcodes_exclude} will be ignored. Supports tidyverse-like quotation. #' @param col_specimen column name of the specimen type or group #' @param col_icu column name of the logicals (\code{TRUE}/\code{FALSE}) whether a ward or department is an Intensive Care Unit (ICU) @@ -126,7 +126,7 @@ first_isolate <- function(tbl, # bactid OR genus+species must be available if (is.na(col_bactid) & (is.na(col_genus) | is.na(col_species))) { - stop('`col_bactid or both `col_genus` and `col_species` must be available.') + stop('`col_bactid` or both `col_genus` and `col_species` must be available.') } # check if columns exist @@ -152,6 +152,9 @@ first_isolate <- function(tbl, check_columns_existance(col_keyantibiotics) if (!is.na(col_bactid)) { + if (!tbl %>% pull(col_bactid) %>% is.bactid()) { + tbl[, col_bactid] <- tbl %>% pull(col_bactid) %>% as.bactid() + } tbl <- tbl %>% left_join_microorganisms(by = col_bactid) col_genus <- "genus" col_species <- "species" diff --git a/R/freq.R b/R/freq.R index 9d88c560..17cfab5a 100755 --- a/R/freq.R +++ b/R/freq.R @@ -273,8 +273,11 @@ frequency_tbl <- function(x, } else { NAs <- x[is.na(x)] } + if (na.rm == TRUE) { + x_class <- class(x) x <- x[!x %in% NAs] + class(x) <- x_class } if (missing(sort.count) & 'factor' %in% class(x)) { diff --git a/R/join.R b/R/join_microorganisms.R similarity index 72% rename from R/join.R rename to R/join_microorganisms.R index c22a0953..3cdaa276 100755 --- a/R/join.R +++ b/R/join_microorganisms.R @@ -26,8 +26,8 @@ #' df2 <- left_join_microorganisms(df, "bacteria_id") #' colnames(df2) inner_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ...) { - if (any(class(x) %in% c('character', 'factor'))) { - x <- data.frame(bactid = x, stringsAsFactors = FALSE) + if (!any(class(x) %in% c("bactid", "data.frame", "matrix"))) { + x <- data.frame(bactid = as.bactid(x), stringsAsFactors = FALSE) } # no name set to `by` parameter if (is.null(names(by))) { @@ -36,7 +36,9 @@ inner_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ... } else { joinby <- by } - join <- dplyr::inner_join(x = x, y = AMR::microorganisms, by = joinby, suffix = c("2", ""), ...) + join <- suppressWarnings( + dplyr::inner_join(x = x, y = AMR::microorganisms, by = joinby, suffix = c("2", ""), ...) + ) if (nrow(join) > nrow(x)) { warning('the newly joined tbl contains ', nrow(join) - nrow(x), ' rows more that its original') } @@ -46,8 +48,8 @@ inner_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ... #' @rdname join #' @export left_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ...) { - if (any(class(x) %in% c('character', 'factor'))) { - x <- data.frame(bactid = x, stringsAsFactors = FALSE) + if (!any(class(x) %in% c("bactid", "data.frame", "matrix"))) { + x <- data.frame(bactid = as.bactid(x), stringsAsFactors = FALSE) } # no name set to `by` parameter if (is.null(names(by))) { @@ -56,7 +58,9 @@ left_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ...) } else { joinby <- by } - join <- dplyr::left_join(x = x, y = AMR::microorganisms, by = joinby, suffix = c("2", ""), ...) + join <- suppressWarnings( + dplyr::left_join(x = x, y = AMR::microorganisms, by = joinby, suffix = c("2", ""), ...) + ) if (nrow(join) > nrow(x)) { warning('the newly joined tbl contains ', nrow(join) - nrow(x), ' rows more that its original') } @@ -66,8 +70,8 @@ left_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ...) #' @rdname join #' @export right_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ...) { - if (any(class(x) %in% c('character', 'factor'))) { - x <- data.frame(bactid = x, stringsAsFactors = FALSE) + if (!any(class(x) %in% c("bactid", "data.frame", "matrix"))) { + x <- data.frame(bactid = as.bactid(x), stringsAsFactors = FALSE) } # no name set to `by` parameter if (is.null(names(by))) { @@ -76,7 +80,9 @@ right_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ... } else { joinby <- by } - join <- dplyr::right_join(x = x, y = AMR::microorganisms, by = joinby, suffix = c("2", ""), ...) + join <- suppressWarnings( + dplyr::right_join(x = x, y = AMR::microorganisms, by = joinby, suffix = c("2", ""), ...) + ) if (nrow(join) > nrow(x)) { warning('the newly joined tbl contains ', nrow(join) - nrow(x), ' rows more that its original') } @@ -86,8 +92,8 @@ right_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ... #' @rdname join #' @export full_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ...) { - if (any(class(x) %in% c('character', 'factor'))) { - x <- data.frame(bactid = x, stringsAsFactors = FALSE) + if (!any(class(x) %in% c("bactid", "data.frame", "matrix"))) { + x <- data.frame(bactid = as.bactid(x), stringsAsFactors = FALSE) } # no name set to `by` parameter if (is.null(names(by))) { @@ -96,7 +102,9 @@ full_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ...) } else { joinby <- by } - join <- dplyr::full_join(x = x, y = AMR::microorganisms, by = joinby, suffix = c("2", ""), ...) + join <- suppressWarnings( + dplyr::full_join(x = x, y = AMR::microorganisms, by = joinby, suffix = c("2", ""), ...) + ) if (nrow(join) > nrow(x)) { warning('the newly joined tbl contains ', nrow(join) - nrow(x), ' rows more that its original') } @@ -106,8 +114,8 @@ full_join_microorganisms <- function(x, by = 'bactid', suffix = c("2", ""), ...) #' @rdname join #' @export semi_join_microorganisms <- function(x, by = 'bactid', ...) { - if (any(class(x) %in% c('character', 'factor'))) { - x <- data.frame(bactid = x, stringsAsFactors = FALSE) + if (!any(class(x) %in% c("bactid", "data.frame", "matrix"))) { + x <- data.frame(bactid = as.bactid(x), stringsAsFactors = FALSE) } # no name set to `by` parameter if (is.null(names(by))) { @@ -116,14 +124,16 @@ semi_join_microorganisms <- function(x, by = 'bactid', ...) { } else { joinby <- by } - dplyr::semi_join(x = x, y = AMR::microorganisms, by = joinby, ...) + suppressWarnings( + dplyr::semi_join(x = x, y = AMR::microorganisms, by = joinby, ...) + ) } #' @rdname join #' @export anti_join_microorganisms <- function(x, by = 'bactid', ...) { - if (any(class(x) %in% c('character', 'factor'))) { - x <- data.frame(bactid = x, stringsAsFactors = FALSE) + if (!any(class(x) %in% c("bactid", "data.frame", "matrix"))) { + x <- data.frame(bactid = as.bactid(x), stringsAsFactors = FALSE) } # no name set to `by` parameter if (is.null(names(by))) { @@ -132,5 +142,7 @@ anti_join_microorganisms <- function(x, by = 'bactid', ...) { } else { joinby <- by } - dplyr::anti_join(x = x, y = AMR::microorganisms, by = joinby, ...) + suppressWarnings( + dplyr::anti_join(x = x, y = AMR::microorganisms, by = joinby, ...) + ) } diff --git a/README.md b/README.md index b05851c1..1e9c5920 100755 --- a/README.md +++ b/README.md @@ -126,6 +126,86 @@ after # 5 PSEAER R R - - R ``` +Bacteria ID's can be retrieved with the `as.bactid` function. It uses any type of info about a microorganism as input. For example, all these will return value `STAAUR`, the ID of *S. aureus*: +```r +as.bactid("stau") +as.bactid("STAU") +as.bactid("staaur") +as.bactid("S. aureus") +as.bactid("S aureus") +as.bactid("Staphylococcus aureus") +as.bactid("MRSA") # Methicillin Resistant S. aureus +as.bactid("VISA") # Vancomycin Intermediate S. aureus +as.bactid("VRSA") # Vancomycin Resistant S. aureus +``` + +### New classes +This package contains two new S3 classes: `mic` for MIC values (e.g. from Vitek or Phoenix) and `rsi` for antimicrobial drug interpretations (i.e. S, I and R). Both are actually ordered factors under the hood (an MIC of `2` being higher than `<=1` but lower than `>=32`, and for class `rsi` factors are ordered as `S < I < R`). +Both classes have extensions for existing generic functions like `print`, `summary` and `plot`. + +```r +# Transform values to new classes +mic_data <- as.mic(c(">=32", "1.0", "8", "<=0.128", "8", "16", "16")) +rsi_data <- as.rsi(c(rep("S", 474), rep("I", 36), rep("R", 370))) +``` +These functions also try to coerce valid values. + +Quick overviews when just printing objects: +```r +mic_data +# Class 'mic': 7 isolates +# +# 0 +# +# <=0.128 1 8 16 >=32 +# 1 1 2 2 1 + +rsi_data +# Class 'rsi': 880 isolates +# +# : 0 +# Sum of S: 474 +# Sum of IR: 406 +# - Sum of R: 370 +# - Sum of I: 36 +# +# %S %IR %I %R +# 53.9 46.1 4.1 42.0 +``` + +A plot of `rsi_data`: +```r +plot(rsi_data) +``` + +![example1](man/figures/rsi_example.png) + +A plot of `mic_data` (defaults to bar plot): +```r +plot(mic_data) +``` + +![example2](man/figures/mic_example.png) + +Other epidemiological functions: + +```r +# Determine key antibiotic based on bacteria ID +key_antibiotics(...) + +# Selection of first isolates of any patient +first_isolate(...) + +# Calculate resistance levels of antibiotics, can be used with `summarise` (dplyr) +rsi(...) +# Predict resistance levels of antibiotics +rsi_predict(...) + +# Get name of antibiotic by ATC code +abname(...) +abname("J01CR02", from = "atc", to = "umcg") # "AMCL" +``` + ### Frequency tables Base R lacks a simple function to create frequency tables. We created such a function that works with almost all data types: `freq` (or `frequency_tbl`). It can be used in two ways: ```r @@ -235,79 +315,12 @@ Learn more about this function with: ?freq ``` -### New classes -This package contains two new S3 classes: `mic` for MIC values (e.g. from Vitek or Phoenix) and `rsi` for antimicrobial drug interpretations (i.e. S, I and R). Both are actually ordered factors under the hood (an MIC of `2` being higher than `<=1` but lower than `>=32`, and for class `rsi` factors are ordered as `S < I < R`). -Both classes have extensions for existing generic functions like `print`, `summary` and `plot`. - -```r -# Transform values to new classes -mic_data <- as.mic(c(">=32", "1.0", "8", "<=0.128", "8", "16", "16")) -rsi_data <- as.rsi(c(rep("S", 474), rep("I", 36), rep("R", 370))) -``` -These functions also try to coerce valid values. - -Quick overviews when just printing objects: -```r -mic_data -# Class 'mic': 7 isolates -# -# 0 -# -# <=0.128 1 8 16 >=32 -# 1 1 2 2 1 - -rsi_data -# Class 'rsi': 880 isolates -# -# : 0 -# Sum of S: 474 -# Sum of IR: 406 -# - Sum of R: 370 -# - Sum of I: 36 -# -# %S %IR %I %R -# 53.9 46.1 4.1 42.0 -``` - -A plot of `rsi_data`: -```r -plot(rsi_data) -``` - -![example1](man/figures/rsi_example.png) - -A plot of `mic_data` (defaults to bar plot): -```r -plot(mic_data) -``` - -![example2](man/figures/mic_example.png) - -Other epidemiological functions: - -```r -# Determine key antibiotic based on bacteria ID -key_antibiotics(...) - -# Selection of first isolates of any patient -first_isolate(...) - -# Calculate resistance levels of antibiotics, can be used with `summarise` (dplyr) -rsi(...) -# Predict resistance levels of antibiotics -rsi_predict(...) - -# Get name of antibiotic by ATC code -abname(...) -abname("J01CR02", from = "atc", to = "umcg") # "AMCL" -``` - ### Databases included in package Datasets to work with antibiotics and bacteria properties. ```r # Dataset with 2000 random blood culture isolates from anonymised # septic patients between 2001 and 2017 in 5 Dutch hospitals -septic_patients # A tibble: 4,000 x 47 +septic_patients # A tibble: 2,000 x 47 # Dataset with ATC antibiotics codes, official names, trade names # and DDD's (oral and parenteral) diff --git a/data/microorganisms.rda b/data/microorganisms.rda index c466967ad2ba9f73df8386a858e528bde41036cf..d66b105d58bee842baf595a53491f8eaf08ade7b 100755 GIT binary patch delta 37988 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 LP81{;RGHO4Lu;J# literal 35579 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 XVkC-&h4NNtzxcb7DZ+$>+00j%vZf7x diff --git a/man/as.bactid.Rd b/man/as.bactid.Rd new file mode 100644 index 00000000..3a17bc6a --- /dev/null +++ b/man/as.bactid.Rd @@ -0,0 +1,69 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/bactid.R +\name{as.bactid} +\alias{as.bactid} +\alias{guess_bactid} +\alias{is.bactid} +\title{Transform to bacteria ID} +\usage{ +as.bactid(x) + +guess_bactid(x) + +is.bactid(x) +} +\arguments{ +\item{x}{a character vector or a dataframe with one or two columns} +} +\value{ +Character (vector) with class \code{"bactid"}. Unknown values will return \code{NA}. +} +\description{ +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. +} +\details{ +Some exceptions have been built in to get more logical results, based on prevalence of human pathogens. For example: +\itemize{ + \item{\code{"E. coli"} will return the ID of \emph{Escherichia coli} and not \emph{Entamoeba coli}, although the latter would alphabetically come first} + \item{\code{"H. influenzae"} will return the ID of \emph{Haemophilus influenzae} and not \emph{Haematobacter influenzae}} + \item{Something like \code{"p aer"} will return the ID of \emph{Pseudomonas aeruginosa} and not \emph{Pasteurella aerogenes}} + \item{Something like \code{"stau"} or \code{"staaur"} will return the ID of \emph{Staphylococcus aureus} and not \emph{Staphylococcus auricularis}} +} +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}. +} +\examples{ +# These examples all return "STAAUR", the ID of S. aureus: +as.bactid("stau") +as.bactid("STAU") +as.bactid("staaur") +as.bactid("S. aureus") +as.bactid("S aureus") +as.bactid("Staphylococcus aureus") +as.bactid("MRSA") # Methicillin Resistant S. aureus +as.bactid("VISA") # Vancomycin Intermediate S. aureus +as.bactid("VRSA") # Vancomycin Resistant S. aureus + +\dontrun{ +df$bactid <- as.bactid(df$microorganism_name) + +# the select function of tidyverse is also supported: +library(dplyr) +df$bactid <- df \%>\% + select(microorganism_name) \%>\% + as.bactid() + +# and can even contain 2 columns, which is convenient for genus/species combinations: +df$bactid <- df \%>\% + select(genus, species) \%>\% + as.bactid() + +# same result: +df <- df \%>\% + mutate(bactid = paste(genus, species) \%>\% + as.bactid()) +} +} +\seealso{ +\code{\link{microorganisms}} for the dataframe that is being used to determine ID's. +} diff --git a/man/first_isolate.Rd b/man/first_isolate.Rd index f9e8e457..86b582cb 100755 --- a/man/first_isolate.Rd +++ b/man/first_isolate.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/first_isolates.R +% Please edit documentation in R/first_isolate.R \name{first_isolate} \alias{first_isolate} \title{Determine first (weighted) isolates} @@ -21,7 +21,7 @@ first_isolate(tbl, col_date, col_patient_id, col_bactid = NA, \item{col_patient_id}{column name of the unique IDs of the patients} -\item{col_bactid}{column name of the unique IDs of the microorganisms (should occur in the \code{\link{microorganisms}} dataset). Get your bactid's with the function \code{\link{guess_bactid}}, that takes microorganism names as input.} +\item{col_bactid}{column name of the unique IDs of the microorganisms: \code{bactid}'s. If this column has another class than \code{"bactid"}, values will be coerced using \code{\link{as.bactid}}.} \item{col_testcode}{column name of the test codes. Use \code{col_testcode = NA} to \strong{not} exclude certain test codes (like test codes for screening). In that case \code{testcodes_exclude} will be ignored. Supports tidyverse-like quotation.} diff --git a/man/guess_bactid.Rd b/man/guess_bactid.Rd deleted file mode 100755 index f86c197d..00000000 --- a/man/guess_bactid.Rd +++ /dev/null @@ -1,43 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/guess_bactid.R -\name{guess_bactid} -\alias{guess_bactid} -\title{Find bacteria ID based on genus/species} -\usage{ -guess_bactid(x) -} -\arguments{ -\item{x}{character vector or a dataframe with one or two columns} -} -\value{ -Character (vector). -} -\description{ -Use this function to determine a valid ID based on a genus (and species). This input could 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. -} -\examples{ -# These examples all return "STAAUR", the ID of S. aureus: -guess_bactid("stau") -guess_bactid("STAU") -guess_bactid("staaur") -guess_bactid("S. aureus") -guess_bactid("S aureus") -guess_bactid("Staphylococcus aureus") -guess_bactid("MRSA") # Methicillin-resistant S. aureus -guess_bactid("VISA") # Vancomycin Intermediate S. aureus - -\dontrun{ -df$bactid <- guess_bactid(df$microorganism_name) - -# the select function of tidyverse is also supported: -df$bactid <- df \%>\% select(microorganism_name) \%>\% guess_bactid() - -# and can even contain 2 columns, which is convenient for genus/species combinations: -df$bactid <- df \%>\% select(genus, species) \%>\% guess_bactid() -# same result: -df <- df \%>\% mutate(bactid = paste(genus, species)) \%>\% guess_bactid()) -} -} -\seealso{ -\code{\link{microorganisms}} for the dataframe that is being used to determine ID's. -} diff --git a/man/join.Rd b/man/join.Rd index 09254631..ca89e27d 100755 --- a/man/join.Rd +++ b/man/join.Rd @@ -1,5 +1,5 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/join.R +% Please edit documentation in R/join_microorganisms.R \name{join} \alias{join} \alias{inner_join_microorganisms} diff --git a/man/key_antibiotics.Rd b/man/key_antibiotics.Rd index 4e222c2b..8d97b7e7 100755 --- a/man/key_antibiotics.Rd +++ b/man/key_antibiotics.Rd @@ -19,7 +19,7 @@ key_antibiotics_equal(x, y, type = c("keyantibiotics", "points"), \arguments{ \item{tbl}{table with antibiotics coloms, like \code{amox} and \code{amcl}.} -\item{col_bactid}{column name of the unique IDs of the microorganisms (should occur in the \code{\link{microorganisms}} dataset). Get your bactid's with the function \code{\link{guess_bactid}}, that takes microorganism names as input.} +\item{col_bactid}{column name of the unique IDs of the microorganisms: \code{bactid}'s. If this column has another class than \code{"bactid"}, values will be coerced using \code{\link{as.bactid}}.} \item{universal_1, universal_2, universal_3, universal_4, universal_5, universal_6}{column names of \strong{broad-spectrum} antibiotics, case-insensitive} diff --git a/tests/testthat/test-bactid.R b/tests/testthat/test-bactid.R new file mode 100644 index 00000000..1fc8253f --- /dev/null +++ b/tests/testthat/test-bactid.R @@ -0,0 +1,64 @@ +context("bactid.R") + +test_that("as.bactid works", { + expect_identical( + as.character(as.bactid(c("E. coli", "H. influenzae"))), + c("ESCCOL", "HAEINF")) + + expect_equal(as.character(as.bactid("Escherichia coli")), "ESCCOL") + expect_equal(as.character(as.bactid("P. aer")), "PSEAER") # not Pasteurella aerogenes + + expect_equal(as.character(as.bactid("Negative rods")), "GNR") + + expect_equal(as.character(as.bactid("MRSE")), "STAEPI") + expect_equal(as.character(as.bactid("VRE")), "ENC") + expect_equal(as.character(as.bactid("MRPA")), "PSEAER") + expect_equal(as.character(as.bactid("PISP")), "STCPNE") + expect_equal(as.character(as.bactid("PRSP")), "STCPNE") + expect_equal(as.character(as.bactid("VISP")), "STCPNE") + expect_equal(as.character(as.bactid("VRSP")), "STCPNE") + + expect_identical( + as.character( + as.bactid(c("stau", + "STAU", + "staaur", + "S. aureus", + "S aureus", + "Staphylococcus aureus", + "MRSA", + "VISA"))), + rep("STAAUR", 8)) + + # select with one column + expect_identical( + septic_patients[1:10,] %>% + left_join_microorganisms() %>% + select(genus) %>% + as.bactid() %>% + as.character(), + c("STC", "STC", "NEI", "STA", "STA", + "NEI", "ENT", "ENT", "ESC", "KLE")) + + # select with two columns + expect_identical( + septic_patients[1:10,] %>% + pull(bactid), + septic_patients[1:10,] %>% + left_join_microorganisms() %>% + select(genus, species) %>% + as.bactid() %>% + as.character()) + + # unknown results + expect_warning(as.bactid(c("INVALID", "Yeah, unknown"))) + + # print + expect_output(print(as.bactid(c("ESCCOL", NA)))) + + # helper function + expect_identical(as.bactid("ESCCOL"), + guess_bactid("ESCCOL")) + + +}) diff --git a/tests/testthat/test-eucast.R b/tests/testthat/test-eucast.R index 666f5970..22892005 100755 --- a/tests/testthat/test-eucast.R +++ b/tests/testthat/test-eucast.R @@ -1,27 +1,34 @@ context("eucast.R") test_that("EUCAST rules work", { - a <- suppressWarnings(EUCAST_rules(septic_patients)) + expect_identical(colnames(septic_patients), + colnames(suppressWarnings(EUCAST_rules(septic_patients)))) - a <- data.frame(bactid = c("KLEPNE", # Klebsiella pneumoniae - "PSEAER", # Pseudomonas aeruginosa - "ENTAER"), # Enterobacter aerogenes + a <- data.frame(bactid = + c("KLEPNE", # Klebsiella pneumoniae + "PSEAER", # Pseudomonas aeruginosa + "ENTAER"), # Enterobacter aerogenes amox = "-", # Amoxicillin stringsAsFactors = FALSE) - b <- data.frame(bactid = c("KLEPNE", # Klebsiella pneumoniae - "PSEAER", # Pseudomonas aeruginosa - "ENTAER"), # Enterobacter aerogenes + b <- data.frame(bactid = + as.bactid( + c("KLEPNE", # Klebsiella pneumoniae + "PSEAER", # Pseudomonas aeruginosa + "ENTAER")), # Enterobacter aerogenes amox = "R", # Amoxicillin stringsAsFactors = FALSE) - expect_equal(EUCAST_rules(a, info = FALSE), b) - expect_equal(suppressWarnings(interpretive_reading(a, info = TRUE)), b) + expect_identical(EUCAST_rules(a, info = FALSE), b) + expect_identical(suppressWarnings(interpretive_reading(a, info = TRUE)), b) - a <- data.frame(bactid = c("STAAUR", # Staphylococcus aureus - "STCGRA"), # Streptococcus pyognenes (Lancefield Group A) + a <- data.frame(bactid = + c("STAAUR", # Staphylococcus aureus + "STCGRA"), # Streptococcus pyognenes (Lancefield Group A) coli = "-", # Colistin stringsAsFactors = FALSE) - b <- data.frame(bactid = c("STAAUR", # Staphylococcus aureus - "STCGRA"), # Streptococcus pyognenes (Lancefield Group A) + b <- data.frame(bactid = + as.bactid( + c("STAAUR", # Staphylococcus aureus + "STCGRA")), # Streptococcus pyognenes (Lancefield Group A) coli = "R", # Colistin stringsAsFactors = FALSE) expect_equal(EUCAST_rules(a, info = FALSE), b) diff --git a/tests/testthat/test-first_isolates.R b/tests/testthat/test-first_isolate.R similarity index 99% rename from tests/testthat/test-first_isolates.R rename to tests/testthat/test-first_isolate.R index 6b08494f..c809bbfc 100755 --- a/tests/testthat/test-first_isolates.R +++ b/tests/testthat/test-first_isolate.R @@ -1,4 +1,4 @@ -context("first_isolates.R") +context("first_isolate.R") test_that("first isolates work", { # septic_patients contains 1959 out of 2000 first isolates diff --git a/tests/testthat/test-guess_bactid.R b/tests/testthat/test-guess_bactid.R deleted file mode 100644 index 17d03d11..00000000 --- a/tests/testthat/test-guess_bactid.R +++ /dev/null @@ -1,49 +0,0 @@ -context("guess_bactid.R") - -test_that("guess_bactid works", { - expect_identical( - guess_bactid(c("E. coli", "H. influenzae")), - c("ESCCOL", "HAEINF")) - - expect_equal(guess_bactid("Escherichia coli"), "ESCCOL") - expect_equal(guess_bactid("P. aer"), "PSEAER") # not Pasteurella aerogenes - - expect_equal(guess_bactid("Negative rods"), "GNR") - - expect_equal(guess_bactid("MRSE"), "STAEPI") - expect_equal(guess_bactid("VRE"), "ENC") - expect_equal(guess_bactid("MRPA"), "PSEAER") - expect_equal(guess_bactid("PISP"), "STCPNE") - expect_equal(guess_bactid("PRSP"), "STCPNE") - expect_equal(guess_bactid("VISP"), "STCPNE") - expect_equal(guess_bactid("VRSP"), "STCPNE") - - expect_identical( - guess_bactid(c("stau", - "STAU", - "staaur", - "S. aureus", - "S aureus", - "Staphylococcus aureus", - "MRSA", - "VISA")), - rep("STAAUR", 8)) - - # select with one column - expect_identical( - septic_patients[1:10,] %>% - left_join_microorganisms() %>% - select(genus) %>% - guess_bactid(), - c("STC", "STC", "NEI", "STA", "STA", - "NEI", "ENT", "ENT", "ESC", "KLE")) - - # select with two columns - expect_identical( - septic_patients[1:10,] %>% - pull(bactid), - septic_patients[1:10,] %>% - left_join_microorganisms() %>% - select(genus, species) %>% - guess_bactid()) -}) diff --git a/tests/testthat/test-joins.R b/tests/testthat/test-join_microorganisms.R similarity index 96% rename from tests/testthat/test-joins.R rename to tests/testthat/test-join_microorganisms.R index 0ba877fe..3436a3f7 100755 --- a/tests/testthat/test-joins.R +++ b/tests/testthat/test-join_microorganisms.R @@ -1,4 +1,4 @@ -context("joins.R") +context("join_microorganisms.R") test_that("joins work", { unjoined <- septic_patients