1
0
mirror of https://github.com/msberends/AMR.git synced 2024-12-26 07:26:13 +01:00

(v2.1.1.9080) fix rescale_mic() for an outside MIC range

This commit is contained in:
dr. M.S. (Matthijs) Berends 2024-09-24 22:39:40 +02:00
parent 1ca40e8d67
commit a558f4c121
6 changed files with 31 additions and 14 deletions

View File

@ -1,5 +1,5 @@
Package: AMR Package: AMR
Version: 2.1.1.9079 Version: 2.1.1.9080
Date: 2024-09-24 Date: 2024-09-24
Title: Antimicrobial Resistance Data Analysis Title: Antimicrobial Resistance Data Analysis
Description: Functions to simplify and standardise antimicrobial resistance (AMR) Description: Functions to simplify and standardise antimicrobial resistance (AMR)

View File

@ -1,4 +1,4 @@
# AMR 2.1.1.9079 # AMR 2.1.1.9080
*(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).)* *(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).)*

View File

@ -304,9 +304,9 @@ rescale_mic <- function(x, mic_range, keep_operators = "edges", as.mic = TRUE) {
# create a manual factor with levels only within desired range # create a manual factor with levels only within desired range
expanded <- plotrange_as_table(x, expanded <- plotrange_as_table(x,
expand = TRUE, expand = TRUE,
keep_operators = ifelse(keep_operators == "edges", "none", keep_operators), keep_operators = ifelse(keep_operators == "edges", "none", keep_operators),
mic_range = mic_range) mic_range = mic_range)
if (keep_operators == "edges") { if (keep_operators == "edges") {
names(expanded)[1] <- paste0("<=", names(expanded)[1]) names(expanded)[1] <- paste0("<=", names(expanded)[1])
names(expanded)[length(expanded)] <- paste0(">=", names(expanded)[length(expanded)]) names(expanded)[length(expanded)] <- paste0(">=", names(expanded)[length(expanded)])

View File

@ -73,7 +73,7 @@
#' # Plotting using scale_x_mic() #' # Plotting using scale_x_mic()
#' \donttest{ #' \donttest{
#' if (require("ggplot2")) { #' if (require("ggplot2")) {
#' mic_plot <- ggplot(data.frame(mics = as.mic(c(0.125, "<=4", 4, 8, 32, ">=32")), #' mic_plot <- ggplot(data.frame(mics = as.mic(c(0.25, "<=4", 4, 8, 32, ">=32")),
#' counts = c(1, 1, 2, 2, 3, 3)), #' counts = c(1, 1, 2, 2, 3, 3)),
#' aes(mics, counts)) + #' aes(mics, counts)) +
#' geom_col() #' geom_col()
@ -92,8 +92,13 @@
#' } #' }
#' if (require("ggplot2")) { #' if (require("ggplot2")) {
#' mic_plot + #' mic_plot +
#' scale_x_mic(mic_range = c(1, 128)) + #' scale_x_mic(mic_range = c(1, 16)) +
#' labs(title = "with scale_x_mic() using a manual range") #' labs(title = "with scale_x_mic() using a manual 'within' range")
#' }
#' if (require("ggplot2")) {
#' mic_plot +
#' scale_x_mic(mic_range = c(0.032, 256)) +
#' labs(title = "with scale_x_mic() using a manual 'outside' range")
#' } #' }
#' #'
#' if (require("ggplot2")) { #' if (require("ggplot2")) {
@ -795,7 +800,14 @@ plotrange_as_table <- function(x, expand, keep_operators = "all", mic_range = NU
x <- as.mic(x, keep_operators = keep_operators) x <- as.mic(x, keep_operators = keep_operators)
if (expand == TRUE) { if (expand == TRUE) {
# expand range for MIC by adding common intermediate factors levels # expand range for MIC by adding common intermediate factors levels
extra_range <- COMMON_MIC_VALUES[COMMON_MIC_VALUES > min(x, na.rm = TRUE) & COMMON_MIC_VALUES < max(x, na.rm = TRUE)] if (!is.null(mic_range) && !all(is.na(mic_range))) {
# base on mic_range
`%na_or%` <- function(x, y) if (is.na(x)) y else x
extra_range <- COMMON_MIC_VALUES[COMMON_MIC_VALUES >= (mic_range[1] %na_or% min(x, na.rm = TRUE)) & COMMON_MIC_VALUES <= (mic_range[2] %na_or% max(x, na.rm = TRUE))]
} else {
# base on x
extra_range <- COMMON_MIC_VALUES[COMMON_MIC_VALUES > min(x, na.rm = TRUE) & COMMON_MIC_VALUES < max(x, na.rm = TRUE)]
}
# remove the ones that are in 25% range of user values # remove the ones that are in 25% range of user values
extra_range <- extra_range[!vapply(FUN.VALUE = logical(1), extra_range, function(r) any(abs(r - x) / x < 0.25, na.rm = TRUE))] extra_range <- extra_range[!vapply(FUN.VALUE = logical(1), extra_range, function(r) any(abs(r - x) / x < 0.25, na.rm = TRUE))]
nms <- extra_range nms <- extra_range

View File

@ -1376,7 +1376,7 @@ as_sir_method <- function(method_short,
} else { } else {
site <- paste0("body site '", site, "'") site <- paste0("body site '", site, "'")
} }
if (nrow(breakpoints_current) == 1 && all(breakpoints_current$uti == TRUE) && any(uti_current %in% c(FALSE, NA)) && message_not_thrown_before("as.sir", "uti", ab_current)) { if (nrow(breakpoints_current) == 1 && all(breakpoints_current$uti == TRUE) && is.na(uti_current) && message_not_thrown_before("as.sir", "uti", ab_current)) {
# only UTI breakpoints available # only UTI breakpoints available
notes_current <- c(notes_current, paste0("Breakpoints for ", font_bold(ab_formatted), " in ", mo_formatted, " are only available for (uncomplicated) urinary tract infections (UTI); assuming `uti = TRUE`.")) notes_current <- c(notes_current, paste0("Breakpoints for ", font_bold(ab_formatted), " in ", mo_formatted, " are only available for (uncomplicated) urinary tract infections (UTI); assuming `uti = TRUE`."))
} else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && any(is.na(uti_current)) && all(c(TRUE, FALSE) %in% breakpoints_current$uti, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteUTI", mo_current, ab_current)) { } else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && any(is.na(uti_current)) && all(c(TRUE, FALSE) %in% breakpoints_current$uti, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteUTI", mo_current, ab_current)) {

View File

@ -1,5 +1,5 @@
% Generated by roxygen2: do not edit by hand % Generated by roxygen2: do not edit by hand
% Please edit documentation in R/plot.R % Please edit documentation in R/plotting.R
\name{plot} \name{plot}
\alias{plot} \alias{plot}
\alias{scale_x_mic} \alias{scale_x_mic}
@ -180,7 +180,7 @@ plot(some_disk_values, mo = "Escherichia coli", ab = "cipro", language = "nl")
# Plotting using scale_x_mic() # Plotting using scale_x_mic()
\donttest{ \donttest{
if (require("ggplot2")) { if (require("ggplot2")) {
mic_plot <- ggplot(data.frame(mics = as.mic(c(0.125, "<=4", 4, 8, 32, ">=32")), mic_plot <- ggplot(data.frame(mics = as.mic(c(0.25, "<=4", 4, 8, 32, ">=32")),
counts = c(1, 1, 2, 2, 3, 3)), counts = c(1, 1, 2, 2, 3, 3)),
aes(mics, counts)) + aes(mics, counts)) +
geom_col() geom_col()
@ -199,8 +199,13 @@ if (require("ggplot2")) {
} }
if (require("ggplot2")) { if (require("ggplot2")) {
mic_plot + mic_plot +
scale_x_mic(mic_range = c(1, 128)) + scale_x_mic(mic_range = c(1, 16)) +
labs(title = "with scale_x_mic() using a manual range") labs(title = "with scale_x_mic() using a manual 'within' range")
}
if (require("ggplot2")) {
mic_plot +
scale_x_mic(mic_range = c(0.032, 256)) +
labs(title = "with scale_x_mic() using a manual 'outside' range")
} }
if (require("ggplot2")) { if (require("ggplot2")) {