From 502a44eb252329b37a322d3c87a0cc4942f51905 Mon Sep 17 00:00:00 2001 From: "Matthijs S. Berends" Date: Mon, 19 Mar 2018 12:43:22 +0100 Subject: [PATCH] - Added new function `guess_bactid` to determine the ID of a microorganism based on genus/species - Renamed `ablist` to `antibiotics` - Added support for character vector in join functions - Altered `%like%` to make it case insensitive --- .travis.yml | 19 +++++++ DESCRIPTION | 7 +-- NAMESPACE | 1 + NEWS | 6 +++ R/atc.R | 22 ++++---- R/data.R | 63 +++++++++++++++-------- R/first_isolates.R | 100 ++++++++++++++++++++++++++++++++++-- R/globals.R | 1 + R/join.R | 34 +++++++++--- R/misc.R | 9 ++-- README.md | 11 +++- data/ablist.rda | Bin 9887 -> 0 bytes data/antibiotics.rda | Bin 0 -> 11069 bytes data/bactlist.rda | Bin 38308 -> 39290 bytes man/ablist.Rd | 34 ------------ man/abname.Rd | 6 +-- man/antibiotics.Rd | 38 ++++++++++++++ man/bactlist.Rd | 12 +++-- man/figures/mic_example.png | Bin 0 -> 4770 bytes man/guess_bactid.Rd | 31 +++++++++++ man/join.Rd | 17 +++--- man/key_antibiotics.Rd | 2 +- man/septic_patients.Rd | 2 +- 23 files changed, 312 insertions(+), 103 deletions(-) delete mode 100644 data/ablist.rda create mode 100644 data/antibiotics.rda delete mode 100644 man/ablist.Rd create mode 100644 man/antibiotics.Rd create mode 100644 man/figures/mic_example.png create mode 100644 man/guess_bactid.Rd diff --git a/.travis.yml b/.travis.yml index 468cc477..8a1ef087 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,2 +1,21 @@ +# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r + language: r cache: packages + +r: + - 3.0 + +r_packages: + - covr + +after_success: + - Rscript -e 'covr::codecov()' + +notifications: + email: + recipients: + - m.s.berends@umcg.nl + - c.f.luz@umcg.nl + on_success: change + on_failure: always diff --git a/DESCRIPTION b/DESCRIPTION index aae2c276..d82324d9 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,13 +1,14 @@ Package: AMR -Version: 0.1.1 -Date: 2018-03-13 +Version: 0.1.2 +Date: 2018-03-19 Title: Antimicrobial Resistance Analysis Authors@R: c( person( given = c("Matthijs", "S."), family = "Berends", email = "m.s.berends@umcg.nl", - role = c("aut", "cre")), + role = c("aut", "cre"), + comment = c(ORCID = "0000-0001-7620-1800")), person( given = c("Christian", "F."), family = "Luz", diff --git a/NAMESPACE b/NAMESPACE index f87e4384..7a2bb5b8 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -19,6 +19,7 @@ export(as.rsi) export(atc_property) export(first_isolate) export(full_join_bactlist) +export(guess_bactid) export(inner_join_bactlist) export(interpretive_reading) export(is.mic) diff --git a/NEWS b/NEWS index f80f18eb..677d1a39 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,9 @@ +## 0.1.2 +- Added new function `guess_bactid` to determine the ID of a microorganism based on genus/species +- Renamed `ablist` to `antibiotics` +- Added support for character vector in join functions +- Altered `%like%` to make it case insensitive + ## 0.1.1 - `EUCAST_rules` applies for amoxicillin even if ampicillin is missing - Edited column names to comply with GLIMS, the laboratory information system diff --git a/R/atc.R b/R/atc.R index c309ea17..b03032db 100644 --- a/R/atc.R +++ b/R/atc.R @@ -127,13 +127,13 @@ atc_property <- function(atc_code, #' Name of an antibiotic #' -#' Convert antibiotic codes (from a laboratory information system like MOLIS or GLIMS) to a (trivial) antibiotic name or ATC code, or vice versa. This uses the data from \code{\link{ablist}}. +#' Convert antibiotic codes (from a laboratory information system like MOLIS or GLIMS) to a (trivial) antibiotic name or ATC code, or vice versa. This uses the data from \code{\link{antibiotics}}. #' @param abcode a code or name, like \code{"AMOX"}, \code{"AMCL"} or \code{"J01CA04"} -#' @param from,to type to transform from and to. See \code{\link{ablist}} for its column names. +#' @param from,to type to transform from and to. See \code{\link{antibiotics}} for its column names. #' @param textbetween text to put between multiple returned texts #' @param tolower return output as lower case with function \code{\link{tolower}}. #' @keywords ab antibiotics -#' @source \code{\link{ablist}} +#' @source \code{\link{antibiotics}} #' @export #' @importFrom dplyr %>% filter select slice #' @examples @@ -156,15 +156,15 @@ atc_property <- function(atc_code, #' # "AMCL" abname <- function(abcode, from = 'umcg', to = 'official', textbetween = ' + ', tolower = FALSE) { - ablist <- AMR::ablist - colnames(ablist) <- colnames(ablist) %>% tolower() + antibiotics <- AMR::antibiotics + colnames(antibiotics) <- colnames(antibiotics) %>% tolower() from <- from %>% tolower() to <- to %>% tolower() - if (!from %in% colnames(ablist) | - !to %in% colnames(ablist)) { + if (!from %in% colnames(antibiotics) | + !to %in% colnames(antibiotics)) { stop(paste0('Invalid `from` or `to`. Choose one of ', - colnames(ablist) %>% paste(collapse = ","), '.'), call. = FALSE) + colnames(antibiotics) %>% paste(collapse = ","), '.'), call. = FALSE) } abcode <- as.character(abcode) @@ -173,9 +173,9 @@ abname <- function(abcode, from = 'umcg', to = 'official', textbetween = ' + ', drug <- abcode[i] if (!grepl('+', drug, fixed = TRUE) & !grepl(' en ', drug, fixed = TRUE)) { # bestaat maar uit 1 middel - if (any(ablist[, from] == drug)) { + if (any(antibiotics[, from] == drug)) { abcode[i] <- - ablist %>% + antibiotics %>% filter(.[, from] == drug) %>% select(to) %>% slice(1) %>% @@ -205,7 +205,7 @@ abname <- function(abcode, from = 'umcg', to = 'official', textbetween = ' + ', for (j in 1:length(drug.group)) { drug.group[j] <- - ablist %>% + antibiotics %>% filter(.[, from] == drug.group[j]) %>% select(to) %>% slice(1) %>% diff --git a/R/data.R b/R/data.R index 915f7566..5dfb1ca0 100644 --- a/R/data.R +++ b/R/data.R @@ -18,36 +18,53 @@ #' Dataset with 420 antibiotics #' -#' A dataset containing all antibiotics with a J0 code, with their DDD's. -#' @format A data.frame with 420 observations and 12 variables: +#' A dataset containing all antibiotics with a J0 code, with their DDD's. Properties were downloaded from the WHO, see Source. +#' @format A data.frame with 420 observations and 16 variables: #' \describe{ #' \item{\code{atc}}{ATC code, like \code{J01CR02}} #' \item{\code{molis}}{MOLIS code, like \code{amcl}} #' \item{\code{umcg}}{UMCG code, like \code{AMCL}} -#' \item{\code{official}}{Official name by the WHO, like \code{"amoxicillin and enzyme inhibitor"}} +#' \item{\code{official}}{Official name by the WHO, like \code{"Amoxicillin and enzyme inhibitor"}} #' \item{\code{official_nl}}{Official name in the Netherlands, like \code{"Amoxicilline met enzymremmer"}} #' \item{\code{trivial_nl}}{Trivial name in Dutch, like \code{"Amoxicilline/clavulaanzuur"}} -#' \item{\code{oral_ddd}}{Defined Daily Dose (DDD) according to the WHO, oral treatment} +#' \item{\code{oral_ddd}}{Defined Daily Dose (DDD), oral treatment} #' \item{\code{oral_units}}{Units of \code{ddd_units}} -#' \item{\code{iv_ddd}}{Defined Daily Dose (DDD) according to the WHO, parenteral treatment} +#' \item{\code{iv_ddd}}{Defined Daily Dose (DDD), parenteral treatment} #' \item{\code{iv_units}}{Units of \code{iv_ddd}} -#' \item{\code{atc_group1}}{ATC group in Dutch, like \code{"Macroliden, lincosamiden en streptograminen"}} -#' \item{\code{atc_group2}}{Subgroup of \code{atc_group1} in Dutch, like \code{"Macroliden"}} +#' \item{\code{atc_group1}}{ATC group, like \code{"Macrolides, lincosamides and streptogramins"}} +#' \item{\code{atc_group2}}{Subgroup of \code{atc_group1}, like \code{"Macrolides"}} +#' \item{\code{atc_group1_nl}}{ATC group in Dutch, like \code{"Macroliden, lincosamiden en streptograminen"}} +#' \item{\code{atc_group2_nl}}{Subgroup of \code{atc_group1} in Dutch, like \code{"Macroliden"}} +#' \item{\code{useful_gramnegative}}{\code{FALSE} if not useful according to EUCAST, \code{NA} otherwise (see Source)} +#' \item{\code{useful_grampositive}}{\code{FALSE} if not useful according to EUCAST, \code{NA} otherwise (see Source)} #' } -#' @source MOLIS (LIS of Certe) - \url{https://www.certe.nl} \cr \cr GLIMS (LIS of UMCG) - \url{https://www.umcg.nl} \cr \cr World Health Organization - \url{https://www.whocc.no/atc_ddd_index/} +#' @source - World Health Organization: \url{https://www.whocc.no/atc_ddd_index/} \cr - EUCAST - Expert rules intrinsic exceptional V3.1 \cr - MOLIS (LIS of Certe): \url{https://www.certe.nl} \cr - GLIMS (LIS of UMCG): \url{https://www.umcg.nl} #' @seealso \code{\link{bactlist}} -# todo: -# ablist <- ablist %>% mutate(useful_gramnegative = if_else(atc_group2 == 'Tetracyclines', FALSE, TRUE)) -# ablist <- ablist %>% mutate(useful_gramnegative = if_else(atc_group2 %like% 'Glycopept', FALSE, useful_gramnegative)) -# Tbl1 Enterobacteriaceae are also intrinsically resistant to benzylpenicillin, glycopeptides, fusidic acid, macrolides (with some exceptions1), lincosamides, streptogramins, rifampicin, daptomycin and linezolid. -# Tbl2 Non-fermentative Gram-negative bacteria are also generally intrinsically resistant to benzylpenicillin, first and second generation cephalosporins, glycopeptides, fusidic acid, macrolides, lincosamides, streptogramins, rifampicin, daptomycin and linezolid -# Tbl3 Gram-negative bacteria other than Enterobacteriaceae and non-fermentative Gram-negative bacteria listed are also intrinsically resistant to glycopeptides, lincosamides, daptomycin and linezolid. -"ablist" +# last two columns created with: +# antibiotics %>% +# mutate(useful_gramnegative = +# if_else( +# atc_group1 %like% '(fusidic|glycopeptide|macrolide|lincosamide|daptomycin|linezolid)' | +# atc_group2 %like% '(fusidic|glycopeptide|macrolide|lincosamide|daptomycin|linezolid)' | +# official %like% '(fusidic|glycopeptide|macrolide|lincosamide|daptomycin|linezolid)', +# FALSE, +# NA +# ), +# useful_grampositive = +# if_else( +# atc_group1 %like% '(aztreonam|temocillin|polymyxin|colistin|nalidixic)' | +# atc_group2 %like% '(aztreonam|temocillin|polymyxin|colistin|nalidixic)' | +# official %like% '(aztreonam|temocillin|polymyxin|colistin|nalidixic)', +# FALSE, +# NA +# ) +# ) +"antibiotics" #' Dataset with ~2500 microorganisms #' #' A dataset containing all microorganisms of MOLIS. MO codes of the UMCG can be looked up using \code{\link{bactlist.umcg}}. -#' @format A data.frame with 2507 observations and 10 variables: +#' @format A data.frame with 2507 observations and 12 variables: #' \describe{ #' \item{\code{bactid}}{ID of microorganism} #' \item{\code{bactsys}}{Bactsyscode of microorganism} @@ -56,12 +73,14 @@ #' \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{type}}{Type of microorganism in Dutch, like \code{"Bacterie"} and \code{"Schimmel/gist"}} -#' \item{\code{gramstain}}{Gram of microorganism in Dutch, like \code{"Negatieve staven"}} -#' \item{\code{aerobic}}{Type aerobe/anaerobe of bacteria} +#' \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_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"}} #' } #' @source MOLIS (LIS of Certe) - \url{https://www.certe.nl} -#' @seealso \code{\link{ablist}} \code{\link{bactlist.umcg}} +#' @seealso \code{\link{guess_bactid}} \code{\link{antibiotics}} \code{\link{bactlist.umcg}} "bactlist" #' Translation table for UMCG with ~1100 microorganisms @@ -90,7 +109,7 @@ #' \item{\code{sex}}{sex of the patient} #' \item{\code{patient_id}}{ID of the patient, first 10 characters of an SHA hash containing irretrievable information} #' \item{\code{bactid}}{ID of microorganism, see \code{\link{bactlist}}} -#' \item{\code{peni:mupi}}{38 different antibiotics with class \code{rsi} (see \code{\link{as.rsi}}), these column names occur in \code{\link{ablist}} and can be translated with \code{\link{abname}}} +#' \item{\code{peni:mupi}}{38 different antibiotics with class \code{rsi} (see \code{\link{as.rsi}}), these column names occur in \code{\link{antibiotics}} and can be translated with \code{\link{abname}}} #' } #' @source MOLIS (LIS of Certe) - \url{https://www.certe.nl} -"septic_patients" \ No newline at end of file +"septic_patients" diff --git a/R/first_isolates.R b/R/first_isolates.R index cc510e1e..f2de99f8 100644 --- a/R/first_isolates.R +++ b/R/first_isolates.R @@ -357,7 +357,7 @@ first_isolate <- function(tbl, #' @export #' @importFrom dplyr %>% mutate if_else #' @return Character of length 1. -#' @seealso \code{\link{mo_property}} \code{\link{ablist}} +#' @seealso \code{\link{mo_property}} \code{\link{antibiotics}} #' @examples #' \donttest{ #' #' # set key antibiotics to a new variable @@ -403,7 +403,7 @@ key_antibiotics <- function(tbl, } } - # bactlist aan vastknopen + # join bactlist tbl <- tbl %>% left_join_bactlist(col_bactcode) tbl$key_ab <- NA_character_ @@ -422,7 +422,7 @@ key_antibiotics <- function(tbl, list_ab <- c(peni, amox, teic, vanc, clin, line, clar, trsu) list_ab <- list_ab[list_ab %in% colnames(tbl)] tbl <- tbl %>% mutate(key_ab = - if_else(gramstain %like% '^Positi[e]?ve', + if_else(gramstain %like% '^Positive ', apply(X = tbl[, list_ab], MARGIN = 1, FUN = function(x) paste(x, collapse = "")), @@ -432,7 +432,7 @@ key_antibiotics <- function(tbl, list_ab <- c(amox, amcl, pita, cfur, cfot, cfta, cftr, mero, cipr, trsu, gent) list_ab <- list_ab[list_ab %in% colnames(tbl)] tbl <- tbl %>% mutate(key_ab = - if_else(gramstain %like% '^Negati[e]?ve', + if_else(gramstain %like% '^Negative ', apply(X = tbl[, list_ab], MARGIN = 1, FUN = function(x) paste(x, collapse = "")), @@ -502,3 +502,95 @@ key_antibiotics_equal <- function(x, y, points_threshold = 2, info = FALSE) { } result } + +#' Find bacteria ID based on genus/species +#' +#' 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 use a \code{\link{paste}} of a genus and species column to use the full name as input: \code{x = paste(df$genus, df$species)}, where \code{df} is your dataframe. +#' @param x character vector to determine \code{bactid} +#' @export +#' @importFrom dplyr %>% filter slice pull +#' @return Character (vector). +#' @seealso \code{\link{bactlist}} 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 +guess_bactid <- function(x) { + # remove dots and other non-text in case of "E. coli" except spaces + x <- gsub("[^a-zA-Z ]+", "", x) + x.bak <- x + # replace space by regex sign + x <- gsub(" ", ".*", x, fixed = TRUE) + # add start and stop + x_species <- paste(x, 'species') + x <- paste0('^', x, '$') + + for (i in 1:length(x)) { + if (tolower(x[i]) == '^e.*coli$') { + # avoid detection of Entamoeba coli in case of Escherichia coli + x[i] <- 'Escherichia coli' + } + if (tolower(x[i]) == '^st.*au$' + | tolower(x[i]) == '^stau$' + | tolower(x[i]) == '^staaur$') { + # avoid detection of Staphylococcus auricularis in case of S. aureus + x[i] <- 'Staphylococcus aureus' + } + if (tolower(x[i]) == '^p.*aer$') { + # avoid detection of Pasteurella aerogenes in case of Pseudomonas aeruginosa + x[i] <- 'Pseudomonas aeruginosa' + } + # translate known trivial names to genus+species + if (toupper(x.bak[i]) == 'MRSA' + | toupper(x.bak[i]) == 'VISA' + | toupper(x.bak[i]) == 'VRSA') { + x[i] <- 'Staphylococcus aureus' + } + if (toupper(x.bak[i]) == 'MRSE') { + x[i] <- 'Staphylococcus epidermidis' + } + if (toupper(x.bak[i]) == 'VRE') { + x[i] <- 'Enterococcus' + } + + # let's try the ID's first + found <- AMR::bactlist %>% filter(bactid == x.bak[i]) + + if (nrow(found) == 0) { + # now try exact match + found <- AMR::bactlist %>% filter(fullname == x[i]) + } + if (nrow(found) == 0) { + # try any match + found <- AMR::bactlist %>% filter(fullname %like% x[i]) + } + if (nrow(found) == 0) { + # try only genus, with 'species' attached + found <- AMR::bactlist %>% filter(fullname %like% x_species[i]) + } + if (nrow(found) == 0) { + # try splitting of characters and then find ID + # like esco = E. coli, klpn = K. pneumoniae, stau = S. aureus + x_length <- nchar(x.bak[i]) + x[i] <- paste0(x.bak[i] %>% substr(1, x_length / 2) %>% trimws(), + '.* ', + x.bak[i] %>% substr((x_length / 2) + 1, x_length) %>% trimws()) + found <- AMR::bactlist %>% filter(fullname %like% paste0('^', x[i])) + } + + if (nrow(found) != 0) { + x[i] <- found %>% + slice(1) %>% + pull(bactid) + } else { + x[i] <- "" + } + } + x +} diff --git a/R/globals.R b/R/globals.R index 1ce289ab..ece183b2 100644 --- a/R/globals.R +++ b/R/globals.R @@ -23,6 +23,7 @@ globalVariables(c('.', 'date_lab', 'days_diff', 'first_isolate_row_index', + 'fullname', 'genus', 'gramstain', 'key_ab', diff --git a/R/join.R b/R/join.R index 294b875d..cce29b18 100644 --- a/R/join.R +++ b/R/join.R @@ -4,23 +4,28 @@ #' @rdname join #' @name join #' @aliases join inner_join -#' @param x existing table to join +#' @param x existing table to join, also supports character vectors #' @param by a variable to join by - could be a column name of \code{x} with values that exist in \code{bactlist$bactid} (like \code{by = "bacteria_id"}), or another column in \code{\link{bactlist}} (but then it should be named, like \code{by = c("my_genus_species" = "fullname")}) +#' @param suffix if there are non-joined duplicate variables in \code{x} and \code{y}, these suffixes will be added to the output to disambiguate them. Should be a character vector of length 2. #' @param ... other parameters to pass on to \code{dplyr::\link[dplyr]{join}}. -#' @details As opposed to the \code{\link[dplyr]{join}} functions of \code{dplyr}, at default existing columns will get a suffix \code{"2"} and the newly joined columns will not get a suffix. See \code{\link[dplyr]{join}} for more information. +#' @details As opposed to the \code{\link[dplyr]{join}} functions of \code{dplyr}, characters vectors are supported and at default existing columns will get a suffix \code{"2"} and the newly joined columns will not get a suffix. See \code{\link[dplyr]{join}} for more information. #' @export #' @examples +#' left_join_bactlist("STAAUR") +#' #' df <- data.frame(date = seq(from = as.Date("2018-01-01"), #' to = as.Date("2018-01-07"), #' by = 1), #' bacteria_id = c("STAAUR", "STAAUR", "STAAUR", "STAAUR", #' "ESCCOL", "ESCCOL", "ESCCOL"), #' stringsAsFactors = FALSE) -#' #' colnames(df) #' df2 <- left_join_bactlist(df, "bacteria_id") #' colnames(df2) -inner_join_bactlist <- function(x, by = 'bactid', ...) { +inner_join_bactlist <- function(x, by = 'bactid', suffix = c("2", ""), ...) { + if (any(class(x) %in% c('character', 'factor'))) { + x <- data.frame(bactid = x, stringsAsFactors = FALSE) + } # no name set to `by` parameter if (is.null(names(by))) { joinby <- colnames(AMR::bactlist)[1] @@ -37,7 +42,10 @@ inner_join_bactlist <- function(x, by = 'bactid', ...) { #' @rdname join #' @export -left_join_bactlist <- function(x, by = 'bactid', ...) { +left_join_bactlist <- function(x, by = 'bactid', suffix = c("2", ""), ...) { + if (any(class(x) %in% c('character', 'factor'))) { + x <- data.frame(bactid = x, stringsAsFactors = FALSE) + } # no name set to `by` parameter if (is.null(names(by))) { joinby <- colnames(AMR::bactlist)[1] @@ -54,7 +62,10 @@ left_join_bactlist <- function(x, by = 'bactid', ...) { #' @rdname join #' @export -right_join_bactlist <- function(x, by = 'bactid', ...) { +right_join_bactlist <- function(x, by = 'bactid', suffix = c("2", ""), ...) { + if (any(class(x) %in% c('character', 'factor'))) { + x <- data.frame(bactid = x, stringsAsFactors = FALSE) + } # no name set to `by` parameter if (is.null(names(by))) { joinby <- colnames(AMR::bactlist)[1] @@ -71,7 +82,10 @@ right_join_bactlist <- function(x, by = 'bactid', ...) { #' @rdname join #' @export -full_join_bactlist <- function(x, by = 'bactid', ...) { +full_join_bactlist <- function(x, by = 'bactid', suffix = c("2", ""), ...) { + if (any(class(x) %in% c('character', 'factor'))) { + x <- data.frame(bactid = x, stringsAsFactors = FALSE) + } # no name set to `by` parameter if (is.null(names(by))) { joinby <- colnames(AMR::bactlist)[1] @@ -85,6 +99,9 @@ full_join_bactlist <- function(x, by = 'bactid', ...) { #' @rdname join #' @export semi_join_bactlist <- function(x, by = 'bactid', ...) { + if (any(class(x) %in% c('character', 'factor'))) { + x <- data.frame(bactid = x, stringsAsFactors = FALSE) + } # no name set to `by` parameter if (is.null(names(by))) { joinby <- colnames(AMR::bactlist)[1] @@ -98,6 +115,9 @@ semi_join_bactlist <- function(x, by = 'bactid', ...) { #' @rdname join #' @export anti_join_bactlist <- function(x, by = 'bactid', ...) { + if (any(class(x) %in% c('character', 'factor'))) { + x <- data.frame(bactid = x, stringsAsFactors = FALSE) + } # no name set to `by` parameter if (is.null(names(by))) { joinby <- colnames(AMR::bactlist)[1] diff --git a/R/misc.R b/R/misc.R index ff4b3afa..8d14b600 100644 --- a/R/misc.R +++ b/R/misc.R @@ -19,17 +19,20 @@ # No export, no Rd "%like%" <- function(vector, pattern) { # Source: https://github.com/Rdatatable/data.table/blob/master/R/like.R + # But made it case insensitive if (is.factor(vector)) { - as.integer(vector) %in% grep(pattern, levels(vector)) + as.integer(vector) %in% grep(pattern, levels(vector), ignore.case = TRUE) } else { - grepl(pattern, vector) + grepl(pattern, vector, ignore.case = TRUE) } } +# No export, no Rd percent <- function(x, round = 1, ...) { base::paste0(base::round(x * 100, digits = round), "%") } +# No export, no Rd quasiquotate <- function(deparsed, parsed) { # when text: remove first and last " if (any(deparsed %like% '^".+"$' | deparsed %like% "^'.+'$")) { @@ -46,4 +49,4 @@ quasiquotate <- function(deparsed, parsed) { } else { parsed } -} \ No newline at end of file +} diff --git a/README.md b/README.md index b896be2a..9ab9f67b 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ This package is available on CRAN and also here on GitHub. ### From GitHub (latest development version) [![Travis_Build](https://travis-ci.org/msberends/AMR.svg?branch=master)](https://travis-ci.org/msberends/AMR) -[![Since_Release](https://img.shields.io/github/commits-since/msberends/AMR/latest.svg?colorB=3679BC)](https://github.com/msberends/AMR/releases) +[![Since_Release](https://img.shields.io/github/commits-since/msberends/AMR/latest.svg?colorB=3679BC)](https://github.com/msberends/AMR/commits/master) [![Last_Commit](https://img.shields.io/github/last-commit/msberends/AMR.svg?colorB=3679BC)](https://github.com/msberends/AMR/commits/master) ```r @@ -116,7 +116,14 @@ A plot of `rsi_data`: plot(rsi_data) ``` -![example](man/figures/rsi_example.png) +![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: diff --git a/data/ablist.rda b/data/ablist.rda deleted file mode 100644 index c0f2b9db89ef70a00d45013799ab7a3b37570ada..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9887 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 Riim#ryOJrwgoeVKkw`ANOV|Ja diff --git a/data/antibiotics.rda b/data/antibiotics.rda new file mode 100644 index 0000000000000000000000000000000000000000..3884040e431d1e67e59c52004810808cb43b80e9 GIT binary patch literal 11069 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 D#2Y!U literal 0 HcmV?d00001 diff --git a/data/bactlist.rda b/data/bactlist.rda index 069d2f5aa45331d3231e4282d07c72f59dc69750..743672e9f412b97af161f31432bc6412319ab1f2 100644 GIT binary patch literal 39290 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
?mAp*wJ#MonT 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 OO|CBP`zrUINc$Ta+6-O* literal 0 HcmV?d00001 diff --git a/man/guess_bactid.Rd b/man/guess_bactid.Rd new file mode 100644 index 00000000..df6c8c02 --- /dev/null +++ b/man/guess_bactid.Rd @@ -0,0 +1,31 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/first_isolates.R +\name{guess_bactid} +\alias{guess_bactid} +\title{Find bacteria ID based on genus/species} +\usage{ +guess_bactid(x) +} +\arguments{ +\item{x}{character vector to determine \code{bactid}} +} +\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 use a \code{\link{paste}} of a genus and species column to use the full name as input: \code{x = paste(df$genus, df$species)}, where \code{df} is your dataframe. +} +\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 +} +\seealso{ +\code{\link{bactlist}} for the dataframe that is being used to determine ID's. +} diff --git a/man/join.Rd b/man/join.Rd index 9be18359..2f06422a 100644 --- a/man/join.Rd +++ b/man/join.Rd @@ -11,39 +11,42 @@ \alias{anti_join_bactlist} \title{Join a table with \code{bactlist}} \usage{ -inner_join_bactlist(x, by = "bactid", ...) +inner_join_bactlist(x, by = "bactid", suffix = c("2", ""), ...) -left_join_bactlist(x, by = "bactid", ...) +left_join_bactlist(x, by = "bactid", suffix = c("2", ""), ...) -right_join_bactlist(x, by = "bactid", ...) +right_join_bactlist(x, by = "bactid", suffix = c("2", ""), ...) -full_join_bactlist(x, by = "bactid", ...) +full_join_bactlist(x, by = "bactid", suffix = c("2", ""), ...) semi_join_bactlist(x, by = "bactid", ...) anti_join_bactlist(x, by = "bactid", ...) } \arguments{ -\item{x}{existing table to join} +\item{x}{existing table to join, also supports character vectors} \item{by}{a variable to join by - could be a column name of \code{x} with values that exist in \code{bactlist$bactid} (like \code{by = "bacteria_id"}), or another column in \code{\link{bactlist}} (but then it should be named, like \code{by = c("my_genus_species" = "fullname")})} +\item{suffix}{if there are non-joined duplicate variables in \code{x} and \code{y}, these suffixes will be added to the output to disambiguate them. Should be a character vector of length 2.} + \item{...}{other parameters to pass on to \code{dplyr::\link[dplyr]{join}}.} } \description{ Join the list of microorganisms \code{\link{bactlist}} easily to an existing table. } \details{ -As opposed to the \code{\link[dplyr]{join}} functions of \code{dplyr}, at default existing columns will get a suffix \code{"2"} and the newly joined columns will not get a suffix. See \code{\link[dplyr]{join}} for more information. +As opposed to the \code{\link[dplyr]{join}} functions of \code{dplyr}, characters vectors are supported and at default existing columns will get a suffix \code{"2"} and the newly joined columns will not get a suffix. See \code{\link[dplyr]{join}} for more information. } \examples{ +left_join_bactlist("STAAUR") + df <- data.frame(date = seq(from = as.Date("2018-01-01"), to = as.Date("2018-01-07"), by = 1), bacteria_id = c("STAAUR", "STAAUR", "STAAUR", "STAAUR", "ESCCOL", "ESCCOL", "ESCCOL"), stringsAsFactors = FALSE) - colnames(df) df2 <- left_join_bactlist(df, "bacteria_id") colnames(df2) diff --git a/man/key_antibiotics.Rd b/man/key_antibiotics.Rd index 8943f3ad..3172f4d0 100644 --- a/man/key_antibiotics.Rd +++ b/man/key_antibiotics.Rd @@ -33,5 +33,5 @@ tbl$keyab <- key_antibiotics(tbl) } } \seealso{ -\code{\link{mo_property}} \code{\link{ablist}} +\code{\link{mo_property}} \code{\link{antibiotics}} } diff --git a/man/septic_patients.Rd b/man/septic_patients.Rd index a118d022..510e6aeb 100644 --- a/man/septic_patients.Rd +++ b/man/septic_patients.Rd @@ -15,7 +15,7 @@ \item{\code{sex}}{sex of the patient} \item{\code{patient_id}}{ID of the patient, first 10 characters of an SHA hash containing irretrievable information} \item{\code{bactid}}{ID of microorganism, see \code{\link{bactlist}}} - \item{\code{peni:mupi}}{38 different antibiotics with class \code{rsi} (see \code{\link{as.rsi}}), these column names occur in \code{\link{ablist}} and can be translated with \code{\link{abname}}} + \item{\code{peni:mupi}}{38 different antibiotics with class \code{rsi} (see \code{\link{as.rsi}}), these column names occur in \code{\link{antibiotics}} and can be translated with \code{\link{abname}}} }} \source{ MOLIS (LIS of Certe) - \url{https://www.certe.nl}