From c2cfc5ef84097f88bcd6e91dc91af6ef0b320b53 Mon Sep 17 00:00:00 2001 From: "Matthijs S. Berends" Date: Wed, 22 Feb 2023 15:40:05 +0100 Subject: [PATCH] fix for `antibiogram()`, transform `WHONET` data set to `sir` --- DESCRIPTION | 2 +- NEWS.md | 2 +- R/ab.R | 2 -- R/antibiogram.R | 30 +++++++++++------------------- R/data.R | 2 +- R/sir.R | 2 +- R/zz_deprecated.R | 3 +-- data/WHONET.rda | Bin 13636 -> 13736 bytes man/WHONET.Rd | 2 +- man/antibiogram.Rd | 5 +++-- 10 files changed, 20 insertions(+), 30 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 80507039..fd06087f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: AMR -Version: 1.8.2.9138 +Version: 1.8.2.9139 Date: 2023-02-22 Title: Antimicrobial Resistance Data Analysis Description: Functions to simplify and standardise antimicrobial resistance (AMR) diff --git a/NEWS.md b/NEWS.md index f6840775..70b0e25f 100755 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# AMR 1.8.2.9138 +# AMR 1.8.2.9139 *(this beta version will eventually become v2.0! We're happy to reach a new major milestone soon!)* diff --git a/R/ab.R b/R/ab.R index 73590bba..e57754cd 100755 --- a/R/ab.R +++ b/R/ab.R @@ -249,8 +249,6 @@ as.ab <- function(x, flag_multiple_results = TRUE, info = interactive(), ...) { next } - print("here") - # length of input is quite long, and Levenshtein distance is only max 2 if (nchar(x[i]) >= 10) { levenshtein <- as.double(utils::adist(x[i], AMR_env$AB_lookup$generalised_name)) diff --git a/R/antibiogram.R b/R/antibiogram.R index da4ae427..940bbd3d 100755 --- a/R/antibiogram.R +++ b/R/antibiogram.R @@ -31,7 +31,7 @@ #' #' Generate an antibiogram, and communicate the results in plots or tables. These functions follow the logic of Klinker *et al.* and Barbieri *et al.* (see *Source*), and allow reporting in e.g. R Markdown and Quarto as well. #' @param x a [data.frame] containing at least a column with microorganisms and columns with antibiotic results (class 'sir', see [as.sir()]) -#' @param antibiotics vector of column names, or (any combinations of) [antibiotic selectors][antibiotic_class_selectors] such as [aminoglycosides()] or [carbapenems()]. For combination antibiograms, this can also be column names separated with `"+"`, such as "TZP+TOB" given that the data set contains columns "TZP" and "TOB". See *Examples*. +#' @param antibiotics vector of any antibiotic name or code (will be evaluated with [as.ab()], column name of `x`, or (any combinations of) [antibiotic selectors][antibiotic_class_selectors] such as [aminoglycosides()] or [carbapenems()]. For combination antibiograms, this can also be set to values separated with `"+"`, such as "TZP+TOB" or "cipro + genta", given that columns resembling such antibiotics exist in `x`. See *Examples*. #' @param mo_transform a character to transform microorganism input - must be "name", "shortname", "gramstain", or one of the column names of the [microorganisms] data set: `r vector_or(colnames(microorganisms), sort = FALSE, quotes = TRUE)`. Can also be `NULL` to not transform the input. #' @param ab_transform a character to transform antibiotic input - must be one of the column names of the [antibiotics] data set: `r vector_or(colnames(antibiotics), sort = FALSE, quotes = TRUE)`. Can also be `NULL` to not transform the input. #' @param syndromic_group a column name of `x`, or values calculated to split rows of `x`, e.g. by using [ifelse()] or [`case_when()`][dplyr::case_when()]. See *Examples*. @@ -165,8 +165,9 @@ #' mo_transform = "gramstain" #' ) #' +#' # names of antibiotics do not need to resemble columns exactly: #' antibiogram(example_isolates, -#' antibiotics = c("TZP", "TZP+TOB"), +#' antibiotics = c("Cipro", "cipro + genta"), #' mo_transform = "gramstain", #' ab_transform = "name", #' sep = " & " @@ -313,25 +314,16 @@ antibiogram <- function(x, # get antibiotics from user user_ab <- suppressMessages(suppressWarnings(lapply(antibiotics, as.ab, flag_multiple_results = FALSE, info = FALSE))) user_ab <- lapply(user_ab, function(x) unname(df_ab[match(x, names(df_ab))])) - # - # names(user_ab) <- antibiotics.bak - # user_ab <- user_ab - return(1) - # cols <- - # convert antibiotics to valid AB codes - abx_ab <- suppressMessages(suppressWarnings(lapply(antibiotics, as.ab, flag_multiple_results = FALSE, info = FALSE))) - # match them to existing column names - abx_user <- lapply(abx_ab, function(a) unname(names(cols)[match(a, names(cols))])) - + # remove non-existing columns - non_existing <- unlist(antibiotics)[is.na(unlist(abx_ab))] - if (length(non_existing) > 0) { - warning_("The following antibiotics were not available and ignored: ", vector_and(non_existing, sort = FALSE)) - abx_user <- Map(antibiotics, abx_user, f = function(input, ab) input[!is.na(ab)]) - } + # non_existing <- unlist(antibiotics)[is.na(unlist(abx_ab))] + # if (length(non_existing) > 0) { + # warning_("The following antibiotics were not available and ignored: ", vector_and(non_existing, sort = FALSE)) + # abx_user <- Map(antibiotics, abx_user, f = function(input, ab) input[!is.na(ab)]) + # } + # make list unique - antibiotics <- unique(abx_user) - print(antibiotics) + antibiotics <- unique(user_ab) # go through list to set AMR in combinations for (i in seq_len(length(antibiotics))) { abx <- antibiotics[[i]] diff --git a/R/data.R b/R/data.R index ab7b2f88..5773d73b 100755 --- a/R/data.R +++ b/R/data.R @@ -197,7 +197,7 @@ #' Data Set with `r format(nrow(WHONET), big.mark = " ")` Isolates - WHONET Example #' -#' This example data set has the exact same structure as an export file from WHONET. Such files can be used with this package, as this example data set shows. The antibiotic results are from our [example_isolates] data set. All patient names are created using online surname generators and are only in place for practice purposes. +#' This example data set has the exact same structure as an export file from WHONET. Such files can be used with this package, as this example data set shows. The antibiotic results are from our [example_isolates] data set. All patient names were created using online surname generators and are only in place for practice purposes. #' @format A [tibble][tibble::tibble] with `r format(nrow(WHONET), big.mark = " ")` observations and `r ncol(WHONET)` variables: #' - `Identification number`\cr ID of the sample #' - `Specimen number`\cr ID of the specimen diff --git a/R/sir.R b/R/sir.R index 14d658e3..3a20c0e0 100755 --- a/R/sir.R +++ b/R/sir.R @@ -300,7 +300,7 @@ is_sir_eligible <- function(x, threshold = 0.05) { #' @export # extra param: warn (logical, to never throw a warning) as.sir.default <- function(x, ...) { - if (is.sir(x)) { + if (inherits(x, "sir")) { return(x) } diff --git a/R/zz_deprecated.R b/R/zz_deprecated.R index b43304ce..46755748 100755 --- a/R/zz_deprecated.R +++ b/R/zz_deprecated.R @@ -92,8 +92,7 @@ ggplot_rsi_predict <- function(...) { #' @export is.rsi <- function(...) { # REMINDER: change as.sir() to remove the deprecation warning there - deprecation_warning("is.rsi", "is.sir") - is.sir(...) + suppressWarnings(is.sir(...)) } #' @rdname AMR-deprecated #' @export diff --git a/data/WHONET.rda b/data/WHONET.rda index b4b8159f098040ea6bfee28c10ff34b40887166d..386ccfc3e424a6816a508d0ba3a674151f43bfbe 100644 GIT binary patch literal 13736 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 S#{En_Fb#_W000000a;o(cD?`r literal 13636 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