From 2ef7dfc8a34f742e6a465472824efec5d997253f Mon Sep 17 00:00:00 2001 From: "Matthijs S. Berends" Date: Tue, 20 Oct 2020 21:00:57 +0200 Subject: [PATCH] (v1.4.0.9003) CoNS update --- DESCRIPTION | 4 +-- NEWS.md | 6 ++-- R/ab_property.R | 26 +++++++------- R/deprecated.R | 2 +- R/mic.R | 2 +- R/mo.R | 24 +++++++------ R/rsi.R | 62 ++++++++++++++++++++------------- R/zzz.R | 26 +++++++------- docs/404.html | 2 +- docs/LICENSE-text.html | 2 +- docs/articles/index.html | 2 +- docs/authors.html | 2 +- docs/index.html | 2 +- docs/news/index.html | 14 ++++---- docs/pkgdown.yml | 2 +- docs/reference/as.mo.html | 7 ++-- docs/reference/index.html | 2 +- docs/reference/mo_property.html | 3 +- docs/survey.html | 2 +- man/as.mo.Rd | 5 +-- man/mo_property.Rd | 1 + 21 files changed, 112 insertions(+), 86 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index f7e62c67..8e4c08e3 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AMR -Version: 1.4.0.9002 -Date: 2020-10-19 +Version: 1.4.0.9003 +Date: 2020-10-20 Title: Antimicrobial Resistance Analysis Authors@R: c( person(role = c("aut", "cre"), diff --git a/NEWS.md b/NEWS.md index 778c41e1..326834d1 100755 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,5 @@ -# AMR 1.4.0.9002 -## Last updated: 19 October 2020 +# AMR 1.4.0.9003 +## Last updated: 20 October 2020 ### New * Functions `is_gram_negative()` and `is_gram_positive()` as wrappers around `mo_gramstain()`. They always return `TRUE` or `FALSE`, thus always return `FALSE` for species outside the taxonomic kingdom of Bacteria. @@ -7,6 +7,8 @@ ### Changed * For all function parameters in the code, it is now defined what the exact type of user input should be (inspired by the [`typed`](https://github.com/moodymudskipper/typed) package). If the user input for a certain function does not meet the requirements for a specific parameter (such as the class or length), an informative error will be thrown. This makes the package more robust and the use of it more reproducible and reliable. In total, more than 400 arguments were defined. * Deprecated function `p_symbol()` that not really fits the scope of this package. It will be removed in a future version. See [here](https://github.com/msberends/AMR/blob/v1.4.0/R/p_symbol.R) for the source code to preserve it. +* Better determination of disk zones and MIC values when running `as.rsi()` on a data.frame +* Updated coagulase-negative staphylococci with Becker *et al.* 2020 (PMID 32056452), meaning that the species *S. argensis*, *S. caeli*, *S. debuckii*, *S. edaphicus* and *S. pseudoxylosus* are now all considered CoNS ### Other * More extensive unit tests diff --git a/R/ab_property.R b/R/ab_property.R index 4df2a9a9..297aa4d1 100644 --- a/R/ab_property.R +++ b/R/ab_property.R @@ -89,7 +89,7 @@ #' ab_atc("cephthriaxone") #' ab_atc("seephthriaaksone") ab_name <- function(x, language = get_locale(), tolower = FALSE, ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) meet_criteria(language, has_length = 1, is_in = c(LANGUAGES_SUPPORTED, ""), allow_NULL = TRUE, allow_NA = TRUE) meet_criteria(tolower, allow_class = "logical", has_length = 1) @@ -106,21 +106,21 @@ ab_name <- function(x, language = get_locale(), tolower = FALSE, ...) { #' @aliases ATC #' @export ab_atc <- function(x, ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) ab_validate(x = x, property = "atc", ...) } #' @rdname ab_property #' @export ab_cid <- function(x, ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) ab_validate(x = x, property = "cid", ...) } #' @rdname ab_property #' @export ab_synonyms <- function(x, ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) syns <- ab_validate(x = x, property = "synonyms", ...) names(syns) <- x if (length(syns) == 1) { @@ -133,14 +133,14 @@ ab_synonyms <- function(x, ...) { #' @rdname ab_property #' @export ab_tradenames <- function(x, ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) ab_synonyms(x, ...) } #' @rdname ab_property #' @export ab_group <- function(x, language = get_locale(), ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) meet_criteria(language, has_length = 1, is_in = c(LANGUAGES_SUPPORTED, ""), allow_NULL = TRUE, allow_NA = TRUE) translate_AMR(ab_validate(x = x, property = "group", ...), language = language) } @@ -148,7 +148,7 @@ ab_group <- function(x, language = get_locale(), ...) { #' @rdname ab_property #' @export ab_atc_group1 <- function(x, language = get_locale(), ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) meet_criteria(language, has_length = 1, is_in = c(LANGUAGES_SUPPORTED, ""), allow_NULL = TRUE, allow_NA = TRUE) translate_AMR(ab_validate(x = x, property = "atc_group1", ...), language = language) } @@ -156,7 +156,7 @@ ab_atc_group1 <- function(x, language = get_locale(), ...) { #' @rdname ab_property #' @export ab_atc_group2 <- function(x, language = get_locale(), ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) meet_criteria(language, has_length = 1, is_in = c(LANGUAGES_SUPPORTED, ""), allow_NULL = TRUE, allow_NA = TRUE) translate_AMR(ab_validate(x = x, property = "atc_group2", ...), language = language) } @@ -164,7 +164,7 @@ ab_atc_group2 <- function(x, language = get_locale(), ...) { #' @rdname ab_property #' @export ab_loinc <- function(x, ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) loincs <- ab_validate(x = x, property = "loinc", ...) names(loincs) <- x if (length(loincs) == 1) { @@ -177,7 +177,7 @@ ab_loinc <- function(x, ...) { #' @rdname ab_property #' @export ab_ddd <- function(x, administration = "oral", units = FALSE, ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) meet_criteria(administration, is_in = c("oral", "iv"), has_length = 1) meet_criteria(units, allow_class = "logical", has_length = 1) @@ -193,7 +193,7 @@ ab_ddd <- function(x, administration = "oral", units = FALSE, ...) { #' @rdname ab_property #' @export ab_info <- function(x, language = get_locale(), ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) meet_criteria(language, has_length = 1, is_in = c(LANGUAGES_SUPPORTED, ""), allow_NULL = TRUE, allow_NA = TRUE) x <- as.ab(x, ...) @@ -215,7 +215,7 @@ ab_info <- function(x, language = get_locale(), ...) { #' @rdname ab_property #' @export ab_url <- function(x, open = FALSE, ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) meet_criteria(open, allow_class = "logical", has_length = 1) ab <- as.ab(x = x, ... = ...) @@ -242,7 +242,7 @@ ab_url <- function(x, open = FALSE, ...) { #' @rdname ab_property #' @export ab_property <- function(x, property = "name", language = get_locale(), ...) { - meet_criteria(x, allow_class = c("character", "numeric", "integer")) + meet_criteria(x, allow_NA = TRUE) meet_criteria(property, is_in = colnames(antibiotics), has_length = 1) meet_criteria(language, is_in = c(LANGUAGES_SUPPORTED, ""), has_length = 1, allow_NULL = TRUE, allow_NA = TRUE) translate_AMR(ab_validate(x = x, property = property, ...), language = language) diff --git a/R/deprecated.R b/R/deprecated.R index 2096be94..4b810cb7 100755 --- a/R/deprecated.R +++ b/R/deprecated.R @@ -32,7 +32,7 @@ #' @name AMR-deprecated #' @export p_symbol <- function(p, emptychar = " ") { - .Deprecated(package = "AMR") + .Deprecated(package = "AMR", new = "cleaner::p_symbol") p <- as.double(p) s <- rep(NA_character_, length(p)) diff --git a/R/mic.R b/R/mic.R index 720d34a5..879900e0 100755 --- a/R/mic.R +++ b/R/mic.R @@ -323,7 +323,7 @@ get_skimmers.mic <- function(column) { inline_hist <- import_fn("inline_hist", "skimr", error_on_fail = FALSE) sfl( skim_type = "mic", - min = ~as.character(sort(na.omit(.))[1]), + min = ~as.character(sort(stats::na.omit(.))[1]), max = ~as.character(sort(stats::na.omit(.))[length(stats::na.omit(.))]), median = ~as.character(stats::na.omit(.)[as.double(stats::na.omit(.)) == median(as.double(stats::na.omit(.)))])[1], n_unique = ~pm_n_distinct(., na.rm = TRUE), diff --git a/R/mo.R b/R/mo.R index 48b5dfa8..af8d1b29 100755 --- a/R/mo.R +++ b/R/mo.R @@ -28,10 +28,10 @@ #' Use this function to determine a valid microorganism ID ([`mo`]). Determination is done using intelligent rules and the complete taxonomic kingdoms Bacteria, Chromista, Protozoa, Archaea and most microbial species from the kingdom Fungi (see Source). The input can be almost anything: a full name (like `"Staphylococcus aureus"`), an abbreviated name (like `"S. aureus"`), an abbreviation known in the field (like `"MRSA"`), or just a genus. Please see *Examples*. #' @inheritSection lifecycle Stable lifecycle #' @param x a character vector or a [data.frame] with one or two columns -#' @param Becker a logical to indicate whether *Staphylococci* should be categorised into coagulase-negative *Staphylococci* ("CoNS") and coagulase-positive *Staphylococci* ("CoPS") instead of their own species, according to Karsten Becker *et al.* (1,2). Note that this does not include species that were newly named after these publications, like *S. caeli*. +#' @param Becker a logical to indicate whether *Staphylococci* should be categorised into coagulase-negative *Staphylococci* ("CoNS") and coagulase-positive *Staphylococci* ("CoPS") instead of their own species, according to Karsten Becker *et al.* (1,2,3). #' #' This excludes *Staphylococcus aureus* at default, use `Becker = "all"` to also categorise *S. aureus* as "CoPS". -#' @param Lancefield a logical to indicate whether beta-haemolytic *Streptococci* should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield (3). These *Streptococci* will be categorised in their first group, e.g. *Streptococcus dysgalactiae* will be group C, although officially it was also categorised into groups G and L. +#' @param Lancefield a logical to indicate whether beta-haemolytic *Streptococci* should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield (4). These *Streptococci* will be categorised in their first group, e.g. *Streptococcus dysgalactiae* will be group C, although officially it was also categorised into groups G and L. #' #' This excludes *Enterococci* at default (who are in group D), use `Lancefield = "all"` to also categorise all *Enterococci* as group D. #' @param allow_uncertain a number between `0` (or `"none"`) and `3` (or `"all"`), or `TRUE` (= `2`) or `FALSE` (= `0`) to indicate whether the input should be checked for less probable results, please see *Details* @@ -104,8 +104,9 @@ #' @section Source: #' 1. Becker K *et al.* **Coagulase-Negative Staphylococci**. 2014. Clin Microbiol Rev. 27(4): 870–926. #' 2. Becker K *et al.* **Implications of identifying the recently defined members of the *S. aureus* complex, *S. argenteus* and *S. schweitzeri*: A position paper of members of the ESCMID Study Group for staphylococci and Staphylococcal Diseases (ESGS).** 2019. Clin Microbiol Infect. -#' 3. Lancefield RC **A serological differentiation of human and other groups of hemolytic streptococci**. 1933. J Exp Med. 57(4): 571–95. -#' 4. Catalogue of Life: Annual Checklist (public online taxonomic database), (check included annual version with [catalogue_of_life_version()]). +#' 3. Becker K *et al.* **Emergence of coagulase-negative staphylococci** 2020. Expert Rev Anti Infect Ther. 18(4):349-366. +#' 4. Lancefield RC **A serological differentiation of human and other groups of hemolytic streptococci**. 1933. J Exp Med. 57(4): 571–95. +#' 5. Catalogue of Life: Annual Checklist (public online taxonomic database), (check included annual version with [catalogue_of_life_version()]). #' @export #' @return A [character] [vector] with additional class [`mo`] #' @seealso [microorganisms] for the [data.frame] that is being used to determine ID's. @@ -158,7 +159,7 @@ as.mo <- function(x, ignore_pattern = getOption("AMR_ignore_pattern"), language = get_locale(), ...) { - meet_criteria(x, allow_NA = TRUE) + meet_criteria(x, allow_class = c("mo", "data.frame", "list", "character", "numeric", "integer", "factor"), allow_NA = TRUE) meet_criteria(Becker, allow_class = c("logical", "character"), has_length = 1) meet_criteria(Lancefield, allow_class = c("logical", "character"), has_length = 1) meet_criteria(allow_uncertain, allow_class = c("logical", "numeric", "integer"), has_length = 1) @@ -275,7 +276,7 @@ exec_as.mo <- function(x, actual_uncertainty = 1, actual_input = NULL, language = get_locale()) { - meet_criteria(x, allow_NA = TRUE) + meet_criteria(x, allow_class = c("mo", "data.frame", "list", "character", "numeric", "integer", "factor"), allow_NA = TRUE) meet_criteria(Becker, allow_class = c("logical", "character"), has_length = 1) meet_criteria(Lancefield, allow_class = c("logical", "character"), has_length = 1) meet_criteria(allow_uncertain, allow_class = c("logical", "numeric", "integer"), has_length = 1) @@ -1431,15 +1432,18 @@ exec_as.mo <- function(x, if (length(uncertainties$input) > 1) { plural <- c("s", "them", "were") } - msg <- paste0("Result", plural[1], " of ", nr2char(length(uncertainties$input)), " value", plural[1], + msg <- paste0("Translation to ", nr2char(length(uncertainties$input)), " microorganism", plural[1], " ", plural[3], " guessed with uncertainty. Use mo_uncertainties() to review ", plural[2], ".") - message(font_blue(msg)) + message(font_red(msg)) } # Becker ---- if (Becker == TRUE | Becker == "all") { - # warn when species found that are not in Becker (2014, PMID 25278577) and Becker (2019, PMID 30872103) - post_Becker <- c("argensis", "caeli", "cornubiensis", "edaphicus") + # warn when species found that are not in: + # - Becker et al. 2014, PMID 25278577 + # - Becker et al. 2019, PMID 30872103 + # - Becker et al. 2020, PMID 32056452 + post_Becker <- c("") # 2020-10-20 currently all are mentioned in above papers if (any(x %in% MO_lookup[which(MO_lookup$species %in% post_Becker), property])) { warning("Becker ", font_italic("et al."), " (2014, 2019) does not contain these species named after their publication: ", diff --git a/R/rsi.R b/R/rsi.R index e76f4768..9330eeb1 100755 --- a/R/rsi.R +++ b/R/rsi.R @@ -461,6 +461,12 @@ as.rsi.data.frame <- function(x, meet_criteria(conserve_capped_values, allow_class = "logical", has_length = 1) meet_criteria(add_intrinsic_resistance, allow_class = "logical", has_length = 1) + # -- MO + col_mo.bak <- col_mo + if (is.null(col_mo)) { + col_mo <- search_type_in_df(x = x, type = "mo", info = FALSE) + } + # -- UTIs col_uti <- uti if (is.null(col_uti)) { @@ -501,29 +507,25 @@ as.rsi.data.frame <- function(x, i <- 0 sel <- colnames(pm_select(x, ...)) + if (!is.null(col_mo)) { + sel <- sel[sel != col_mo] + } ab_cols <- colnames(x)[sapply(x, function(y) { i <<- i + 1 check <- is.mic(y) | is.disk(y) ab <- colnames(x)[i] + if (!is.null(col_mo) && ab == col_mo) { + return(FALSE) + } + if (!is.null(col_uti) && ab == col_uti) { + return(FALSE) + } if (length(sel) == 0 || (length(sel) > 0 && ab %in% sel)) { ab_coerced <- suppressWarnings(as.ab(ab)) if (is.na(ab_coerced) || (length(sel) > 0 & !ab %in% sel)) { # not even a valid AB code return(FALSE) } else { - if (!check & all_valid_mics(y)) { - message(font_blue(paste0("NOTE: Assuming column `", ab, "` (", - ifelse(ab_coerced != ab, paste0(ab_coerced, ", "), ""), - ab_name(ab_coerced, tolower = TRUE), ") contains MIC values."))) - } else if (!check & all_valid_disks(y)) { - message(font_blue(paste0("NOTE: Assuming column `", ab, "` (", - ifelse(ab_coerced != ab, paste0(ab_coerced, ", "), ""), - ab_name(ab_coerced, tolower = TRUE), ") contains disk zones."))) - } else if (!check & !is.rsi(y)) { - message(font_blue(paste0("NOTE: Assuming column `", ab, "` (", - ifelse(ab_coerced != ab, paste0(ab_coerced, ", "), ""), - ab_name(ab_coerced, tolower = TRUE), ") must be cleaned to valid R/SI values."))) - } return(TRUE) } } else { @@ -535,36 +537,46 @@ as.rsi.data.frame <- function(x, "no columns with MIC values, disk zones or antibiotic column names found in this data set. Use as.mic() or as.disk() to transform antimicrobial columns.") # set type per column types <- character(length(ab_cols)) - types[sapply(x[, ab_cols], is.mic)] <- "mic" - types[types == "" & sapply(x[, ab_cols], all_valid_mics)] <- "mic" types[sapply(x[, ab_cols], is.disk)] <- "disk" types[types == "" & sapply(x[, ab_cols], all_valid_disks)] <- "disk" + types[sapply(x[, ab_cols], is.mic)] <- "mic" + types[types == "" & sapply(x[, ab_cols], all_valid_mics)] <- "mic" types[types == "" & !sapply(x[, ab_cols], is.rsi)] <- "rsi" if (any(types %in% c("mic", "disk"), na.rm = TRUE)) { - # now we need an mo column - try to find columns based on type - if (is.null(col_mo)) { + # now we need an mo column + stop_if(is.null(col_mo), "`col_mo` must be set") + # if not null, we already found it, now find again so a message will show + if (is.null(col_mo.bak)) { col_mo <- search_type_in_df(x = x, type = "mo") - stop_if(is.null(col_mo), "`col_mo` must be set") } } + x_mo <- as.mo(x %pm>% pm_pull(col_mo)) + for (i in seq_len(length(ab_cols))) { if (types[i] == "mic") { x[, ab_cols[i]] <- as.rsi.mic(x = x %pm>% pm_pull(ab_cols[i]), - mo = x %pm>% pm_pull(col_mo), + mo = x_mo, ab = ab_cols[i], guideline = guideline, uti = uti, conserve_capped_values = conserve_capped_values) } else if (types[i] == "disk") { x[, ab_cols[i]] <- as.rsi.disk(x = x %pm>% pm_pull(ab_cols[i]), - mo = x %pm>% pm_pull(col_mo), + mo = x_mo, ab = ab_cols[i], guideline = guideline, uti = uti) } else if (types[i] == "rsi") { + ab <- ab_cols[i] + ab_coerced <- suppressWarnings(as.ab(ab)) + message(font_blue(paste0("=> Cleaning values in column `", font_bold(ab), "` (", + ifelse(ab_coerced != ab, paste0(ab_coerced, ", "), ""), + ab_name(ab_coerced, tolower = TRUE), ")... ")), + appendLF = FALSE) x[, ab_cols[i]] <- as.rsi.default(x = x %pm>% pm_pull(ab_cols[i])) + message(font_green("OK.")) } } @@ -760,11 +772,11 @@ freq.rsi <- function(x, ...) { x_name <- gsub(".*[$]", "", x_name) if (x_name %in% c("x", ".")) { # try again going through system calls - x_name <- na.omit(sapply(sys.calls(), - function(call) { - call_txt <- as.character(call) - ifelse(call_txt[1] %like% "freq$", call_txt[length(call_txt)], character(0)) - }))[1L] + x_name <- stats::na.omit(sapply(sys.calls(), + function(call) { + call_txt <- as.character(call) + ifelse(call_txt[1] %like% "freq$", call_txt[length(call_txt)], character(0)) + }))[1L] } ab <- suppressMessages(suppressWarnings(as.ab(x_name))) freq.default <- import_fn("freq.default", "cleaner", error_on_fail = FALSE) diff --git a/R/zzz.R b/R/zzz.R index 6ef2c1e0..ac0f57f6 100755 --- a/R/zzz.R +++ b/R/zzz.R @@ -84,23 +84,25 @@ } create_species_cons_cops <- function(type = c("CoNS", "CoPS")) { - # Determination of which staphylococcal species are CoNS/CoPS according to Becker et al.: - # https://cmr.asm.org/content/cmr/27/4/870/F6.large.jpg + # Determination of which staphylococcal species are CoNS/CoPS according to: + # - Becker et al. 2014, PMID 25278577 + # - Becker et al. 2019, PMID 30872103 + # - Becker et al. 2020, PMID 32056452 # this function returns class MO_staph <- AMR::microorganisms MO_staph <- MO_staph[which(MO_staph$genus == "Staphylococcus"), , drop = FALSE] if (type == "CoNS") { - MO_staph[which(MO_staph$species %in% c("coagulase-negative", - "arlettae", "auricularis", "capitis", - "caprae", "carnosus", "chromogenes", "cohnii", "condimenti", - "devriesei", "epidermidis", "equorum", "felis", - "fleurettii", "gallinarum", "haemolyticus", - "hominis", "jettensis", "kloosii", "lentus", - "lugdunensis", "massiliensis", "microti", + MO_staph[which(MO_staph$species %in% c("coagulase-negative", "argensis", "arlettae", + "auricularis", "caeli", "capitis", "caprae", + "carnosus", "chromogenes", "cohnii", "condimenti", + "debuckii", "devriesei", "edaphicus", "epidermidis", + "equorum", "felis", "fleurettii", "gallinarum", + "haemolyticus", "hominis", "jettensis", "kloosii", + "lentus", "lugdunensis", "massiliensis", "microti", "muscae", "nepalensis", "pasteuri", "petrasii", - "pettenkoferi", "piscifermentans", "rostri", - "saccharolyticus", "saprophyticus", "sciuri", - "stepanovicii", "simulans", "succinus", + "pettenkoferi", "piscifermentans", "pseudoxylosus", + "rostri", "saccharolyticus", "saprophyticus", + "sciuri", "simulans", "stepanovicii", "succinus", "vitulinus", "warneri", "xylosus") | (MO_staph$species == "schleiferi" & MO_staph$subspecies %in% c("schleiferi", ""))), "mo", drop = TRUE] diff --git a/docs/404.html b/docs/404.html index da5fb27a..ff720422 100644 --- a/docs/404.html +++ b/docs/404.html @@ -81,7 +81,7 @@ AMR (for R) - 1.4.0.9002 + 1.4.0.9003 diff --git a/docs/LICENSE-text.html b/docs/LICENSE-text.html index 98a1cba3..254d2cde 100644 --- a/docs/LICENSE-text.html +++ b/docs/LICENSE-text.html @@ -81,7 +81,7 @@ AMR (for R) - 1.4.0.9002 + 1.4.0.9003 diff --git a/docs/articles/index.html b/docs/articles/index.html index 6fac2270..4f1d0661 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -81,7 +81,7 @@ AMR (for R) - 1.4.0.9002 + 1.4.0.9003 diff --git a/docs/authors.html b/docs/authors.html index 4ee02551..e2a6f3d1 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -81,7 +81,7 @@ AMR (for R) - 1.4.0.9002 + 1.4.0.9003 diff --git a/docs/index.html b/docs/index.html index 7f6efa7c..a9566494 100644 --- a/docs/index.html +++ b/docs/index.html @@ -43,7 +43,7 @@ AMR (for R) - 1.4.0.9002 + 1.4.0.9003 diff --git a/docs/news/index.html b/docs/news/index.html index 0ef4cb7f..283a66bc 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -81,7 +81,7 @@ AMR (for R) - 1.4.0.9002 + 1.4.0.9003 @@ -236,13 +236,13 @@ Source: NEWS.md -
-

-AMR 1.4.0.9002 Unreleased +
+

+AMR 1.4.0.9003 Unreleased

-
+

-Last updated: 19 October 2020 +Last updated: 20 October 2020

@@ -257,6 +257,8 @@
  • For all function parameters in the code, it is now defined what the exact type of user input should be (inspired by the typed package). If the user input for a certain function does not meet the requirements for a specific parameter (such as the class or length), an informative error will be thrown. This makes the package more robust and the use of it more reproducible and reliable. In total, more than 400 arguments were defined.
  • Deprecated function p_symbol() that not really fits the scope of this package. It will be removed in a future version. See here for the source code to preserve it.
  • +
  • Better determination of disk zones and MIC values when running as.rsi() on a data.frame
  • +
  • Updated coagulase-negative staphylococci with Becker et al. 2020 (PMID 32056452), meaning that the species S. argensis, S. caeli, S. debuckii, S. edaphicus and S. pseudoxylosus are now all considered CoNS

diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 29151880..9b7457ac 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -12,7 +12,7 @@ articles: datasets: datasets.html resistance_predict: resistance_predict.html welcome_to_AMR: welcome_to_AMR.html -last_built: 2020-10-19T18:44Z +last_built: 2020-10-20T18:59Z urls: reference: https://msberends.github.io/AMR//reference article: https://msberends.github.io/AMR//articles diff --git a/docs/reference/as.mo.html b/docs/reference/as.mo.html index 8500bd37..2929590f 100644 --- a/docs/reference/as.mo.html +++ b/docs/reference/as.mo.html @@ -82,7 +82,7 @@ AMR (for R) - 1.4.0.9000 + 1.4.0.9003
@@ -270,12 +270,12 @@ Becker -

a logical to indicate whether Staphylococci should be categorised into coagulase-negative Staphylococci ("CoNS") and coagulase-positive Staphylococci ("CoPS") instead of their own species, according to Karsten Becker et al. (1,2). Note that this does not include species that were newly named after these publications, like S. caeli.

+

a logical to indicate whether Staphylococci should be categorised into coagulase-negative Staphylococci ("CoNS") and coagulase-positive Staphylococci ("CoPS") instead of their own species, according to Karsten Becker et al. (1,2,3).

This excludes Staphylococcus aureus at default, use Becker = "all" to also categorise S. aureus as "CoPS".

Lancefield -

a logical to indicate whether beta-haemolytic Streptococci should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield (3). These Streptococci will be categorised in their first group, e.g. Streptococcus dysgalactiae will be group C, although officially it was also categorised into groups G and L.

+

a logical to indicate whether beta-haemolytic Streptococci should be categorised into Lancefield groups instead of their own species, according to Rebecca C. Lancefield (4). These Streptococci will be categorised in their first group, e.g. Streptococcus dysgalactiae will be group C, although officially it was also categorised into groups G and L.

This excludes Enterococci at default (who are in group D), use Lancefield = "all" to also categorise all Enterococci as group D.

@@ -370,6 +370,7 @@
  1. Becker K et al. Coagulase-Negative Staphylococci. 2014. Clin Microbiol Rev. 27(4): 870–926. https://dx.doi.org/10.1128/CMR.00109-13

  2. Becker K et al. Implications of identifying the recently defined members of the S. aureus complex, S. argenteus and S. schweitzeri: A position paper of members of the ESCMID Study Group for staphylococci and Staphylococcal Diseases (ESGS). 2019. Clin Microbiol Infect. https://doi.org/10.1016/j.cmi.2019.02.028

  3. +
  4. Becker K et al. Emergence of coagulase-negative staphylococci 2020. Expert Rev Anti Infect Ther. 18(4):349-366. https://dx.doi.org/10.1080/14787210.2020.1730813

  5. Lancefield RC A serological differentiation of human and other groups of hemolytic streptococci. 1933. J Exp Med. 57(4): 571–95. https://dx.doi.org/10.1084/jem.57.4.571

  6. Catalogue of Life: Annual Checklist (public online taxonomic database), http://www.catalogueoflife.org (check included annual version with catalogue_of_life_version()).

diff --git a/docs/reference/index.html b/docs/reference/index.html index 444a94ce..6a8dc016 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -81,7 +81,7 @@ AMR (for R) - 1.4.0.9002 + 1.4.0.9003
diff --git a/docs/reference/mo_property.html b/docs/reference/mo_property.html index 2aadafd4..38b02145 100644 --- a/docs/reference/mo_property.html +++ b/docs/reference/mo_property.html @@ -82,7 +82,7 @@ AMR (for R) - 1.4.0.9001 + 1.4.0.9003
@@ -381,6 +381,7 @@ This package contains the complete taxonomic tree of almost all microorganisms (
  1. Becker K et al. Coagulase-Negative Staphylococci. 2014. Clin Microbiol Rev. 27(4): 870–926. https://dx.doi.org/10.1128/CMR.00109-13

  2. Becker K et al. Implications of identifying the recently defined members of the S. aureus complex, S. argenteus and S. schweitzeri: A position paper of members of the ESCMID Study Group for staphylococci and Staphylococcal Diseases (ESGS). 2019. Clin Microbiol Infect. https://doi.org/10.1016/j.cmi.2019.02.028

  3. +
  4. Becker K et al. Emergence of coagulase-negative staphylococci 2020. Expert Rev Anti Infect Ther. 18(4):349-366. https://dx.doi.org/10.1080/14787210.2020.1730813

  5. Lancefield RC A serological differentiation of human and other groups of hemolytic streptococci. 1933. J Exp Med. 57(4): 571–95. https://dx.doi.org/10.1084/jem.57.4.571

  6. Catalogue of Life: Annual Checklist (public online taxonomic database), http://www.catalogueoflife.org (check included annual version with catalogue_of_life_version()).

diff --git a/docs/survey.html b/docs/survey.html index 243c2082..9995b100 100644 --- a/docs/survey.html +++ b/docs/survey.html @@ -81,7 +81,7 @@ AMR (for R) - 1.4.0.9002 + 1.4.0.9003
diff --git a/man/as.mo.Rd b/man/as.mo.Rd index 68afd7af..edf90246 100644 --- a/man/as.mo.Rd +++ b/man/as.mo.Rd @@ -31,11 +31,11 @@ mo_renamed() \arguments{ \item{x}{a character vector or a \link{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,2). Note that this does not include species that were newly named after these publications, like \emph{S. caeli}. +\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,2,3). 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 (3). These \emph{Streptococci} will be categorised in their first group, e.g. \emph{Streptococcus dysgalactiae} will be group C, although officially it was also categorised into groups G and L. +\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 (4). These \emph{Streptococci} will be categorised in their first group, e.g. \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.} @@ -125,6 +125,7 @@ The intelligent rules consider the prevalence of microorganisms in humans groupe \enumerate{ \item 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} \item Becker K \emph{et al.} \strong{Implications of identifying the recently defined members of the \emph{S. aureus} complex, \emph{S. argenteus} and \emph{S. schweitzeri}: A position paper of members of the ESCMID Study Group for staphylococci and Staphylococcal Diseases (ESGS).} 2019. Clin Microbiol Infect. \url{https://doi.org/10.1016/j.cmi.2019.02.028} +\item Becker K \emph{et al.} \strong{Emergence of coagulase-negative staphylococci} 2020. Expert Rev Anti Infect Ther. 18(4):349-366. \url{https://dx.doi.org/10.1080/14787210.2020.1730813} \item 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} \item Catalogue of Life: Annual Checklist (public online taxonomic database), \url{http://www.catalogueoflife.org} (check included annual version with \code{\link[=catalogue_of_life_version]{catalogue_of_life_version()}}). } diff --git a/man/mo_property.Rd b/man/mo_property.Rd index ecfd8cf2..62e2ae07 100644 --- a/man/mo_property.Rd +++ b/man/mo_property.Rd @@ -164,6 +164,7 @@ This package contains the complete taxonomic tree of almost all microorganisms ( \enumerate{ \item 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} \item Becker K \emph{et al.} \strong{Implications of identifying the recently defined members of the \emph{S. aureus} complex, \emph{S. argenteus} and \emph{S. schweitzeri}: A position paper of members of the ESCMID Study Group for staphylococci and Staphylococcal Diseases (ESGS).} 2019. Clin Microbiol Infect. \url{https://doi.org/10.1016/j.cmi.2019.02.028} +\item Becker K \emph{et al.} \strong{Emergence of coagulase-negative staphylococci} 2020. Expert Rev Anti Infect Ther. 18(4):349-366. \url{https://dx.doi.org/10.1080/14787210.2020.1730813} \item 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} \item Catalogue of Life: Annual Checklist (public online taxonomic database), \url{http://www.catalogueoflife.org} (check included annual version with \code{\link[=catalogue_of_life_version]{catalogue_of_life_version()}}). }