From 7f1ae1f4748ea19d226e6783b11418dd4df65700 Mon Sep 17 00:00:00 2001 From: Matthijs Berends <m.s.berends@umcg.nl> Date: Sat, 15 Mar 2025 13:25:23 +0100 Subject: [PATCH] (v2.1.1.9203) unit tests --- DESCRIPTION | 4 +- NEWS.md | 2 +- PythonPackage/AMR/AMR.egg-info/PKG-INFO | 2 +- PythonPackage/AMR/dist/amr-2.1.1.9201.tar.gz | Bin 10104 -> 0 bytes ...ny.whl => amr-2.1.1.9203-py3-none-any.whl} | Bin 10281 -> 10281 bytes PythonPackage/AMR/dist/amr-2.1.1.9203.tar.gz | Bin 0 -> 10107 bytes PythonPackage/AMR/setup.py | 2 +- R/sir.R | 60 ++++++++++-------- _pkgdown.yml | 2 +- ....txt => gpt_training_text_v2.1.1.9203.txt} | 40 ++++++++---- man/as.sir.Rd | 38 +++++++---- pkgdown/extra.css | 10 +++ 12 files changed, 105 insertions(+), 55 deletions(-) delete mode 100644 PythonPackage/AMR/dist/amr-2.1.1.9201.tar.gz rename PythonPackage/AMR/dist/{amr-2.1.1.9201-py3-none-any.whl => amr-2.1.1.9203-py3-none-any.whl} (86%) create mode 100644 PythonPackage/AMR/dist/amr-2.1.1.9203.tar.gz rename data-raw/{gpt_training_text_v2.1.1.9201.txt => gpt_training_text_v2.1.1.9203.txt} (99%) diff --git a/DESCRIPTION b/DESCRIPTION index 32195868a..ea0b25052 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AMR -Version: 2.1.1.9202 -Date: 2025-03-14 +Version: 2.1.1.9203 +Date: 2025-03-15 Title: Antimicrobial Resistance Data Analysis Description: Functions to simplify and standardise antimicrobial resistance (AMR) data analysis and to work with microbial and antimicrobial properties by diff --git a/NEWS.md b/NEWS.md index 24cba854c..9f8c73ae0 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# AMR 2.1.1.9202 +# AMR 2.1.1.9203 *(this beta version will eventually become v3.0. We're happy to reach a new major milestone soon, which will be all about the new One Health support! Install this beta using [the instructions here](https://msberends.github.io/AMR/#latest-development-version).)* diff --git a/PythonPackage/AMR/AMR.egg-info/PKG-INFO b/PythonPackage/AMR/AMR.egg-info/PKG-INFO index 06759f58a..8efa895dc 100644 --- a/PythonPackage/AMR/AMR.egg-info/PKG-INFO +++ b/PythonPackage/AMR/AMR.egg-info/PKG-INFO @@ -1,6 +1,6 @@ Metadata-Version: 2.2 Name: AMR -Version: 2.1.1.9201 +Version: 2.1.1.9203 Summary: A Python wrapper for the AMR R package Home-page: https://github.com/msberends/AMR Author: Matthijs Berends diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9201.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9201.tar.gz deleted file mode 100644 index bb4ebdcadb647f83af1671fd5df67f043d38434a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10104 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 diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9201-py3-none-any.whl b/PythonPackage/AMR/dist/amr-2.1.1.9203-py3-none-any.whl similarity index 86% rename from PythonPackage/AMR/dist/amr-2.1.1.9201-py3-none-any.whl rename to PythonPackage/AMR/dist/amr-2.1.1.9203-py3-none-any.whl index c41de98fc2e602fd7b032d1b036fa135f31e03b7..8aa80b1c4fcbbeff84d33eeaab6233b560e84b8a 100644 GIT binary patch delta 680 zcmZ1(urh!*z?+#xgn@y9gTW;^e<N=_D>IPZ+|Me?0%k1de8bJ*nw%eXe0IsJ$+JZz z8I31z6|G{F-E1IM#mfwonY>n64k&m=xl9S9PF~}i5F5}u79dsw;>6q{T_Zh1Aha|x zFrK_lU1D;Lia<R`DYMrKj|4`b)l3Ww@)%0>QZkE6bTjkP^7VsUo&AGcO3(P_Z!%zD zc(8l_(p{H4Cm!bO&~UU9S;MT)+iVoDB%_<T?(gnBohS94?X+(b-xnBVI(13OH9m(a znn54iE3=KiFRc8bC3)re9lx^2^_w=&wT+fGPuB~0etGv*b=L0<%l01b{P_FHN*~tA zkIrv4tyH|EwCwg{nRQM|+YGfM-f1i?jW?|cUU&G%lv=;kDGV)BkN#i&VwO+Xo}bb$ zPc6JQSEze^-l{K80=ZYpxBm^=I=A8B<d@UacV<g(U#*wWXWF9n@~fSz@zd#j4}R;c zuWy+X=6mqI&Fh3UJ<T82%$?1hyu0j2>GMyFW<UKsYbL+h`qV9!g<s6@?0?V2_w3Uh z8VeZXug~9>y7PRv>*>-N3YVN*^qwoYT3NFST77$R?_HC@zpz`}`sUI?x()00_^IY+ zo|RiO?_``^ac=is>E6tQ=Y<CEY)cz{cwDlvQ=hIn@nPZ{uJDtlUB7wG#NS_-%Jz_} z;iP?lHzSh>Gdwv=)>E?rrGm-XP<n-$H6k&*R#R6tMv5h0*APb+#}G$kLqO@nR9!~_ kSzWk?tE&&XqDFNcU?N(lt^zh6lrkpYQdb8GF=?m+08w!X>;M1& delta 680 zcmZ1(urh!*z?+#xgn@y9gJD)<-bUVfR%Rf*xt~>(1<Y8^`G%WgPGeqF@nj>8$+JZz z84V|I6|G{_-E1IM#mfwonY>n64k&m=xl9S9PF~}i5F5}u79dsw;>6q{T_Zh1Aha|x zFr2(jU1D;Lia<R`>72#4oD&#<Rx>d$$YUtgOUW!Q(ap?D%hwNbb@mT(DLv!czsP`r z;ll3yORaL<yJWsKbZn~O>AJ?K&&!<ZC@?`x{Kr@8n@3Xgp52}Qjy1nWv{X?tdW*6^ zWsm5m(>u0z{tmD$nk<tQoaOqvKJ#w$x5oUhyZ4Ih_@6M>(k1dSV`y!=@!#K`$&%c9 zNBfT(&hj}Dd1B6Ip*$w7ITO-twg%>v&E9qM>1~BQD)Wmgdl=L*zWzV?%W9%)@c$l@ zl2s<w>W@~>U)*S?rMUHTMTGXWx5Y(<cAr+?*}nC*xN3xu=;O$m*Uu^%_hm{fa*e9z zu+)FGrt<Td$@?z)|Jr=cc(wW6Fst{S=6w4zmDav{onIN0&$Wa({xHMAwTzEnB`~o( z<l48+UiWgz{Pj)OZz~+y(mG>WxcxDy{Xg7m<T9?m`>XJ$`PQbB<<?a(jJ$jOQZH}n zvai@Wp}FSSD(5}c+%xl+F0_}mNo{%J^VnpM+f&seCoR6t><*ebQIYZV_3{L%x($p8 z-}nQ(8JR?w;mKjLo|+XX6->^C(ks-g5sBfon!2(fQY`tphB&%7hBzV{0!kmI>N*O@ j>cTx-U476MHLB|X6VW<#6|niBlrj01x;jvZNkbg~_2~=C diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9203.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9203.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..18c4632341e37a321a2fad07f38dbd7361f77b6f GIT binary patch literal 10107 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 literal 0 HcmV?d00001 diff --git a/PythonPackage/AMR/setup.py b/PythonPackage/AMR/setup.py index 49a58a71a..08cc14990 100644 --- a/PythonPackage/AMR/setup.py +++ b/PythonPackage/AMR/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name='AMR', - version='2.1.1.9201', + version='2.1.1.9203', packages=find_packages(), install_requires=[ 'rpy2', diff --git a/R/sir.R b/R/sir.R index 71e512d86..3544ce02d 100755 --- a/R/sir.R +++ b/R/sir.R @@ -45,14 +45,22 @@ #' @inheritParams first_isolate #' @param guideline defaults to `r AMR::clinical_breakpoints$guideline[1]` (the latest implemented EUCAST guideline in the [AMR::clinical_breakpoints] data set), but can be set with the package option [`AMR_guideline`][AMR-options]. Currently supports EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`) and CLSI (`r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI")$guideline)))`), see *Details*. #' @param capped_mic_handling A [character] string that controls how MIC values with a cap (i.e., starting with `<`, `<=`, `>`, or `>=`) are interpreted. Supports the following options: -#' - `"standard"` (default)\cr -#' `<=` and `>=` return `"NI"` if the value is **within** the breakpoint guideline range, while `<` and `>` are interpreted normally. -#' - `"strict"`\cr -#' Enforces conservative handling; `<` always returns `"S"`, `>` always returns `"R"`, and `<=`/`>=` return `"NI"` when within breakpoint guideline range. -#' - `"relaxed"`\cr -#' Ignores all signs, treating values as their numeric equivalents (e.g., `>0.5` is regarded `0.5`). -#' - `"inverse"`\cr -#' Opposite of `"standard"`; `<` always returns `"S"`, `>` always returns `"R"`, and `<=`/`>=` are treated as their numeric equivalents +#' +#' `"none"` +#' * `<=` and `>=` are treated as-is. +#' * `<` and `>` are treated as-is. +#' +#' `"conservative"` +#' * `<=` and `>=` return `"NI"` (non-interpretable) if the MIC is within the breakpoint guideline range. +#' * `<` always returns `"S"`, and `>` always returns `"R"`. +#' +#' `"standard"` (default) +#' * `<=` and `>=` return `"NI"` (non-interpretable) if the MIC is within the breakpoint guideline range. +#' * `<` and `>` are treated as-is. +#' +#' `"inverse"` +#' * `<=` and `>=` are treated as-is. +#' * `<` always returns `"S"`, and `>` always returns `"R"`. #' #' The default `"standard"` setting ensures cautious handling of uncertain values while preserving interpretability. This option can also be set with the package option [`AMR_capped_mic_handling`][AMR-options]. #' @param add_intrinsic_resistance *(only useful when using a EUCAST guideline)* a [logical] to indicate whether intrinsic antibiotic resistance must also be considered for applicable bug-drug combinations, meaning that e.g. ampicillin will always return "R" in *Klebsiella* species. Determination is based on the [intrinsic_resistant] data set, that itself is based on `r format_eucast_version_nr(3.3)`. @@ -64,6 +72,7 @@ #' @param verbose a [logical] to indicate that all notes should be printed during interpretation of MIC values or disk diffusion values. #' @param reference_data a [data.frame] to be used for interpretation, which defaults to the [clinical_breakpoints] data set. Changing this argument allows for using own interpretation guidelines. This argument must contain a data set that is equal in structure to the [clinical_breakpoints] data set (same column names and column types). Please note that the `guideline` argument will be ignored when `reference_data` is manually set. #' @param threshold maximum fraction of invalid antimicrobial interpretations of `x`, see *Examples* +#' @param conserve_capped_values deprecated, use `capped_mic_handling` instead #' @param ... for using on a [data.frame]: names of columns to apply [as.sir()] on (supports tidy selection such as `column1:column4`). Otherwise: arguments passed on to methods. #' @details #' *Note: The clinical breakpoints in this package were validated through, and imported from, [WHONET](https://whonet.org). The public use of this `AMR` package has been endorsed by both CLSI and EUCAST. See [clinical_breakpoints] for more information.* @@ -85,7 +94,7 @@ #' # for veterinary breakpoints, also set `host`: #' your_data %>% mutate_if(is.mic, as.sir, host = "column_with_animal_species", guideline = "CLSI") #' ``` -#' * Operators like "<=" will be stripped before interpretation. When using `capped_mic_handling = "strict"`, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (`capped_mic_handling = "standard"`) considers ">2" to be lower than ">=4" and might in this case return "S" or "I". +#' * Operators like "<=" will be stripped before interpretation. When using `capped_mic_handling = "conservative"`, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (`capped_mic_handling = "standard"`) considers ">2" to be lower than ">=4" and might in this case return "S" or "I". #' 3. For **interpreting disk diffusion diameters** according to EUCAST or CLSI. You must clean your disk zones first using [as.disk()], that also gives your columns the new data class [`disk`]. Also, be sure to have a column with microorganism names or codes. It will be found automatically, but can be set manually using the `mo` argument. #' * Using `dplyr`, SIR interpretation can be done very easily with either: #' ```r @@ -582,6 +591,7 @@ as.sir.mic <- function(x, breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL, verbose = FALSE, + conserve_capped_values = NULL, ...) { as_sir_method( method_short = "mic", @@ -656,16 +666,13 @@ as.sir.data.frame <- function(x, include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL, - verbose = FALSE) { - if (isTRUE(list(...)$converse_capped_values)) { - deprecation_warning(old = "converse_capped_values", new = "capped_mic_handling", fn = "as.sir", is_argument = TRUE) - capped_mic_handling <- "strict" - } + verbose = FALSE, + conserve_capped_values = NULL) { meet_criteria(x, allow_class = "data.frame") # will also check for dimensions > 0 meet_criteria(col_mo, allow_class = "character", is_in = colnames(x), allow_NULL = TRUE) meet_criteria(guideline, allow_class = "character", has_length = 1) meet_criteria(uti, allow_class = c("logical", "character"), allow_NULL = TRUE, allow_NA = TRUE) - meet_criteria(capped_mic_handling, allow_class = "character", has_length = 1, is_in = c("standard", "strict", "relaxed", "inverse")) + meet_criteria(capped_mic_handling, allow_class = "character", has_length = 1, is_in = c("standard", "conservative", "none", "inverse")) meet_criteria(add_intrinsic_resistance, allow_class = "logical", has_length = 1) meet_criteria(reference_data, allow_class = "data.frame") meet_criteria(substitute_missing_r_breakpoint, allow_class = "logical", has_length = 1) @@ -956,17 +963,18 @@ as_sir_method <- function(method_short, breakpoint_type, host, verbose, + conserve_capped_values = NULL, ...) { - if (isTRUE(list(...)$converse_capped_values)) { - deprecation_warning(old = "converse_capped_values", new = "capped_mic_handling", fn = "as.sir", is_argument = TRUE) - capped_mic_handling <- "strict" + if (isTRUE(conserve_capped_values)) { + deprecation_warning(old = "conserve_capped_values", new = "capped_mic_handling", fn = "as.sir", is_argument = TRUE) + capped_mic_handling <- "conservative" } meet_criteria(x, allow_NA = TRUE, .call_depth = -2) meet_criteria(mo, allow_class = c("mo", "character"), has_length = c(1, length(x)), allow_NULL = TRUE, .call_depth = -2) meet_criteria(ab, allow_class = c("ab", "character"), has_length = c(1, length(x)), .call_depth = -2) meet_criteria(guideline, allow_class = "character", has_length = 1, .call_depth = -2) meet_criteria(uti, allow_class = c("logical", "character"), has_length = c(1, length(x)), allow_NULL = TRUE, allow_NA = TRUE, .call_depth = -2) - meet_criteria(capped_mic_handling, allow_class = "character", has_length = 1, is_in = c("standard", "strict", "relaxed", "inverse"), .call_depth = -2) + meet_criteria(capped_mic_handling, allow_class = "character", has_length = 1, is_in = c("standard", "conservative", "none", "inverse"), .call_depth = -2) meet_criteria(add_intrinsic_resistance, allow_class = "logical", has_length = 1, .call_depth = -2) meet_criteria(reference_data, allow_class = "data.frame", .call_depth = -2) meet_criteria(substitute_missing_r_breakpoint, allow_class = "logical", has_length = 1, .call_depth = -2) @@ -979,7 +987,7 @@ as_sir_method <- function(method_short, # backward compatibilty dots <- list(...) - dots <- dots[which(!names(dots) %in% c("warn", "mo.bak", "is_data.frame", "conserve_capped_values"))] + dots <- dots[which(!names(dots) %in% c("warn", "mo.bak", "is_data.frame"))] if (length(dots) != 0) { warning_("These arguments in `as.sir()` are no longer used: ", vector_and(names(dots), quotes = "`"), ".", call = FALSE) } @@ -1526,13 +1534,13 @@ as_sir_method <- function(method_short, if (any(breakpoints_current$site %like% "screen", na.rm = TRUE) | any(breakpoints_current$ref_tbl %like% "screen", na.rm = TRUE)) { notes_current <- c(notes_current, "Some screening breakpoints were applied - use `include_screening = FALSE` to prevent this") } - if (capped_mic_handling %in% c("strict", "inverse") && any(as.character(values) %like% "^[<][0-9]")) { + if (capped_mic_handling %in% c("conservative", "inverse") && any(as.character(values) %like% "^[<][0-9]")) { notes_current <- c(notes_current, paste0("MIC values with the sign '<' are all considered 'S' since capped_mic_handling = \"", capped_mic_handling, "\"")) } - if (capped_mic_handling %in% c("strict", "inverse") && any(as.character(values) %like% "^[>][0-9]")) { + if (capped_mic_handling %in% c("conservative", "inverse") && any(as.character(values) %like% "^[>][0-9]")) { notes_current <- c(notes_current, paste0("MIC values with the sign '>' are all considered 'R' since capped_mic_handling = \"", capped_mic_handling, "\"")) } - if (capped_mic_handling %in% c("strict", "standard") && any(as.character(values) %like% "^[><]=[0-9]" & as.double(values) > breakpoints_current$breakpoint_S & as.double(values) < breakpoints_current$breakpoint_R, na.rm = TRUE)) { + if (capped_mic_handling %in% c("conservative", "standard") && any(as.character(values) %like% "^[><]=[0-9]" & as.double(values) > breakpoints_current$breakpoint_S & as.double(values) < breakpoints_current$breakpoint_R, na.rm = TRUE)) { notes_current <- c(notes_current, paste0("MIC values within the breakpoint guideline range with the sign '<=' or '>=' are considered 'NI' since capped_mic_handling = \"", capped_mic_handling, "\"")) } if (isTRUE(substitute_missing_r_breakpoint) && !is.na(breakpoints_current$breakpoint_S) && is.na(breakpoints_current$breakpoint_R)) { @@ -1543,9 +1551,9 @@ as_sir_method <- function(method_short, if (method == "mic") { new_sir <- case_when_AMR( is.na(values) ~ NA_sir_, - capped_mic_handling %in% c("strict", "inverse") & as.character(values) %like% "^[<][0-9]" ~ as.sir("S"), - capped_mic_handling %in% c("strict", "inverse") & as.character(values) %like% "^[>][0-9]" ~ as.sir("R"), - capped_mic_handling %in% c("strict", "standard") & as.character(values) %like% "^[><]=[0-9]" & as.double(values) > breakpoints_current$breakpoint_S & as.double(values) < breakpoints_current$breakpoint_R ~ as.sir("NI"), + capped_mic_handling %in% c("conservative", "inverse") & as.character(values) %like% "^[<][0-9]" ~ as.sir("S"), + capped_mic_handling %in% c("conservative", "inverse") & as.character(values) %like% "^[>][0-9]" ~ as.sir("R"), + capped_mic_handling %in% c("conservative", "standard") & as.character(values) %like% "^[><]=[0-9]" & as.double(values) > breakpoints_current$breakpoint_S & as.double(values) < breakpoints_current$breakpoint_R ~ as.sir("NI"), values <= breakpoints_current$breakpoint_S ~ as.sir("S"), guideline_coerced %like% "EUCAST" & values > breakpoints_current$breakpoint_R ~ as.sir("R"), guideline_coerced %like% "CLSI" & values >= breakpoints_current$breakpoint_R ~ as.sir("R"), diff --git a/_pkgdown.yml b/_pkgdown.yml index 136247f8a..c77afa8bb 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -62,7 +62,7 @@ footer: home: sidebar: - structure: [toc, links, authors] + structure: [toc, authors] navbar: title: "AMR (for R)" diff --git a/data-raw/gpt_training_text_v2.1.1.9201.txt b/data-raw/gpt_training_text_v2.1.1.9203.txt similarity index 99% rename from data-raw/gpt_training_text_v2.1.1.9201.txt rename to data-raw/gpt_training_text_v2.1.1.9203.txt index 204f10be1..7f6a28c46 100644 --- a/data-raw/gpt_training_text_v2.1.1.9201.txt +++ b/data-raw/gpt_training_text_v2.1.1.9203.txt @@ -1,6 +1,6 @@ This knowledge base contains all context you must know about the AMR package for R. You are a GPT trained to be an assistant for the AMR package in R. You are an incredible R specialist, especially trained in this package and in the tidyverse. -First and foremost, you are trained on version 2.1.1.9201. Remember this whenever someone asks which AMR package version you’re at. +First and foremost, you are trained on version 2.1.1.9203. Remember this whenever someone asks which AMR package version you’re at. Below are the contents of the file, the file, and all the files (documentation) in the package. Every file content is split using 100 hypens. ---------------------------------------------------------------------------------------------------- @@ -3348,7 +3348,7 @@ is_sir_eligible(x, threshold = 0.05) FALSE), include_screening = getOption("AMR_include_screening", FALSE), include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL, - verbose = FALSE, ...) + verbose = FALSE, conserve_capped_values = NULL, ...) \method{as.sir}{disk}(x, mo = NULL, ab = deparse(substitute(x)), guideline = getOption("AMR_guideline", "EUCAST"), uti = NULL, @@ -3369,7 +3369,7 @@ is_sir_eligible(x, threshold = 0.05) FALSE), include_screening = getOption("AMR_include_screening", FALSE), include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL, - verbose = FALSE) + verbose = FALSE, conserve_capped_values = NULL) sir_interpretation_history(clean = FALSE) } @@ -3391,15 +3391,29 @@ sir_interpretation_history(clean = FALSE) \item{uti}{(Urinary Tract Infection) a vector (or column name) with \link{logical}s (\code{TRUE} or \code{FALSE}) to specify whether a UTI specific interpretation from the guideline should be chosen. For using \code{\link[=as.sir]{as.sir()}} on a \link{data.frame}, this can also be a column containing \link{logical}s or when left blank, the data set will be searched for a column 'specimen', and rows within this column containing 'urin' (such as 'urine', 'urina') will be regarded isolates from a UTI. See \emph{Examples}.} \item{capped_mic_handling}{A \link{character} string that controls how MIC values with a cap (i.e., starting with \code{<}, \code{<=}, \code{>}, or \code{>=}) are interpreted. Supports the following options: + +\code{"none"} \itemize{ -\item \code{"standard"} (default)\cr -\code{<=} and \code{>=} return \code{"NI"} if the value is \strong{within} the breakpoint guideline range, while \code{<} and \code{>} are interpreted normally. -\item \code{"strict"}\cr -Enforces conservative handling; \code{<} always returns \code{"S"}, \code{>} always returns \code{"R"}, and \code{<=}/\code{>=} return \code{"NI"} when within breakpoint guideline range. -\item \code{"relaxed"}\cr -Ignores all signs, treating values as their numeric equivalents (e.g., \verb{>0.5} is regarded \code{0.5}). -\item \code{"inverse"}\cr -Opposite of \code{"standard"}; \code{<} always returns \code{"S"}, \code{>} always returns \code{"R"}, and \code{<=}/\code{>=} are treated as their numeric equivalents +\item \code{<=} and \code{>=} are treated as-is. +\item \code{<} and \code{>} are treated as-is. +} + +\code{"conservative"} +\itemize{ +\item \code{<=} and \code{>=} return \code{"NI"} (non-interpretable) if the MIC is within the breakpoint guideline range. +\item \code{<} always returns \code{"S"}, and \code{>} always returns \code{"R"}. +} + +\code{"standard"} (default) +\itemize{ +\item \code{<=} and \code{>=} return \code{"NI"} (non-interpretable) if the MIC is within the breakpoint guideline range. +\item \code{<} and \code{>} are treated as-is. +} + +\code{"inverse"} +\itemize{ +\item \code{<=} and \code{>=} are treated as-is. +\item \code{<} always returns \code{"S"}, and \code{>} always returns \code{"R"}. } The default \code{"standard"} setting ensures cautious handling of uncertain values while preserving interpretability. This option can also be set with the package option \code{\link[=AMR-options]{AMR_capped_mic_handling}}.} @@ -3420,6 +3434,8 @@ The default \code{"standard"} setting ensures cautious handling of uncertain val \item{verbose}{a \link{logical} to indicate that all notes should be printed during interpretation of MIC values or disk diffusion values.} +\item{conserve_capped_values}{deprecated, use \code{capped_mic_handling} instead} + \item{col_mo}{column name of the names or codes of the microorganisms (see \code{\link[=as.mo]{as.mo()}}) - the default is the first column of class \code{\link{mo}}. Values will be coerced using \code{\link[=as.mo]{as.mo()}}.} \item{clean}{a \link{logical} to indicate whether previously stored results should be forgotten after returning the 'logbook' with results} @@ -3458,7 +3474,7 @@ your_data \%>\% mutate_if(is.mic, as.sir, ab = c("cipro", "ampicillin", ...), mo # for veterinary breakpoints, also set `host`: your_data \%>\% mutate_if(is.mic, as.sir, host = "column_with_animal_species", guideline = "CLSI") }\if{html}{\out{</div>}} -\item Operators like "<=" will be stripped before interpretation. When using \code{capped_mic_handling = "strict"}, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (\code{capped_mic_handling = "standard"}) considers ">2" to be lower than ">=4" and might in this case return "S" or "I". +\item Operators like "<=" will be stripped before interpretation. When using \code{capped_mic_handling = "conservative"}, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (\code{capped_mic_handling = "standard"}) considers ">2" to be lower than ">=4" and might in this case return "S" or "I". } \item For \strong{interpreting disk diffusion diameters} according to EUCAST or CLSI. You must clean your disk zones first using \code{\link[=as.disk]{as.disk()}}, that also gives your columns the new data class \code{\link{disk}}. Also, be sure to have a column with microorganism names or codes. It will be found automatically, but can be set manually using the \code{mo} argument. \itemize{ diff --git a/man/as.sir.Rd b/man/as.sir.Rd index 32e2eb16d..ea4edee19 100644 --- a/man/as.sir.Rd +++ b/man/as.sir.Rd @@ -44,7 +44,7 @@ is_sir_eligible(x, threshold = 0.05) FALSE), include_screening = getOption("AMR_include_screening", FALSE), include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL, - verbose = FALSE, ...) + verbose = FALSE, conserve_capped_values = NULL, ...) \method{as.sir}{disk}(x, mo = NULL, ab = deparse(substitute(x)), guideline = getOption("AMR_guideline", "EUCAST"), uti = NULL, @@ -65,7 +65,7 @@ is_sir_eligible(x, threshold = 0.05) FALSE), include_screening = getOption("AMR_include_screening", FALSE), include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), host = NULL, - verbose = FALSE) + verbose = FALSE, conserve_capped_values = NULL) sir_interpretation_history(clean = FALSE) } @@ -87,15 +87,29 @@ sir_interpretation_history(clean = FALSE) \item{uti}{(Urinary Tract Infection) a vector (or column name) with \link{logical}s (\code{TRUE} or \code{FALSE}) to specify whether a UTI specific interpretation from the guideline should be chosen. For using \code{\link[=as.sir]{as.sir()}} on a \link{data.frame}, this can also be a column containing \link{logical}s or when left blank, the data set will be searched for a column 'specimen', and rows within this column containing 'urin' (such as 'urine', 'urina') will be regarded isolates from a UTI. See \emph{Examples}.} \item{capped_mic_handling}{A \link{character} string that controls how MIC values with a cap (i.e., starting with \code{<}, \code{<=}, \code{>}, or \code{>=}) are interpreted. Supports the following options: + +\code{"none"} \itemize{ -\item \code{"standard"} (default)\cr -\code{<=} and \code{>=} return \code{"NI"} if the value is \strong{within} the breakpoint guideline range, while \code{<} and \code{>} are interpreted normally. -\item \code{"strict"}\cr -Enforces conservative handling; \code{<} always returns \code{"S"}, \code{>} always returns \code{"R"}, and \code{<=}/\code{>=} return \code{"NI"} when within breakpoint guideline range. -\item \code{"relaxed"}\cr -Ignores all signs, treating values as their numeric equivalents (e.g., \verb{>0.5} is regarded \code{0.5}). -\item \code{"inverse"}\cr -Opposite of \code{"standard"}; \code{<} always returns \code{"S"}, \code{>} always returns \code{"R"}, and \code{<=}/\code{>=} are treated as their numeric equivalents +\item \code{<=} and \code{>=} are treated as-is. +\item \code{<} and \code{>} are treated as-is. +} + +\code{"conservative"} +\itemize{ +\item \code{<=} and \code{>=} return \code{"NI"} (non-interpretable) if the MIC is within the breakpoint guideline range. +\item \code{<} always returns \code{"S"}, and \code{>} always returns \code{"R"}. +} + +\code{"standard"} (default) +\itemize{ +\item \code{<=} and \code{>=} return \code{"NI"} (non-interpretable) if the MIC is within the breakpoint guideline range. +\item \code{<} and \code{>} are treated as-is. +} + +\code{"inverse"} +\itemize{ +\item \code{<=} and \code{>=} are treated as-is. +\item \code{<} always returns \code{"S"}, and \code{>} always returns \code{"R"}. } The default \code{"standard"} setting ensures cautious handling of uncertain values while preserving interpretability. This option can also be set with the package option \code{\link[=AMR-options]{AMR_capped_mic_handling}}.} @@ -116,6 +130,8 @@ The default \code{"standard"} setting ensures cautious handling of uncertain val \item{verbose}{a \link{logical} to indicate that all notes should be printed during interpretation of MIC values or disk diffusion values.} +\item{conserve_capped_values}{deprecated, use \code{capped_mic_handling} instead} + \item{col_mo}{column name of the names or codes of the microorganisms (see \code{\link[=as.mo]{as.mo()}}) - the default is the first column of class \code{\link{mo}}. Values will be coerced using \code{\link[=as.mo]{as.mo()}}.} \item{clean}{a \link{logical} to indicate whether previously stored results should be forgotten after returning the 'logbook' with results} @@ -154,7 +170,7 @@ your_data \%>\% mutate_if(is.mic, as.sir, ab = c("cipro", "ampicillin", ...), mo # for veterinary breakpoints, also set `host`: your_data \%>\% mutate_if(is.mic, as.sir, host = "column_with_animal_species", guideline = "CLSI") }\if{html}{\out{</div>}} -\item Operators like "<=" will be stripped before interpretation. When using \code{capped_mic_handling = "strict"}, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (\code{capped_mic_handling = "standard"}) considers ">2" to be lower than ">=4" and might in this case return "S" or "I". +\item Operators like "<=" will be stripped before interpretation. When using \code{capped_mic_handling = "conservative"}, an MIC value of e.g. ">2" will always return "R", even if the breakpoint according to the chosen guideline is ">=4". This is to prevent that capped values from raw laboratory data would not be treated conservatively. The default behaviour (\code{capped_mic_handling = "standard"}) considers ">2" to be lower than ">=4" and might in this case return "S" or "I". } \item For \strong{interpreting disk diffusion diameters} according to EUCAST or CLSI. You must clean your disk zones first using \code{\link[=as.disk]{as.disk()}}, that also gives your columns the new data class \code{\link{disk}}. Also, be sure to have a column with microorganism names or codes. It will be found automatically, but can be set manually using the \code{mo} argument. \itemize{ diff --git a/pkgdown/extra.css b/pkgdown/extra.css index 88dff5bb7..584f2f7ba 100644 --- a/pkgdown/extra.css +++ b/pkgdown/extra.css @@ -101,12 +101,22 @@ body.amr-for-python * { .navbar-nav .nav-item > .nav-link:hover { background: none !important; } +.navbar .algolia-autocomplete .aa-dropdown-menu { + background-color: var(--amr-green-dark) !important; +} input[type="search"] { + color: var(--bs-tertiary-bg) !important; background-color: var(--amr-green-light) !important; max-width: 160px; border-color: var(--amr-green-dark) !important; border-radius: 2px !important; } +.dropdown-item:hover, +.dropdown-item:focus { + background-color: var(--bs-tertiary-bg) !important; + text-decoration: none !important; + color: var(--bs-body-color) !important; +} .navbar-nav .nav-item > .nav-link { border-radius: 0 !important; }