From bd2887bcd4bb1bbc873a33dfdd64de948de0b548 Mon Sep 17 00:00:00 2001 From: Matthijs Berends Date: Thu, 13 Feb 2025 19:47:57 +0100 Subject: [PATCH] (v2.1.1.9146) new `scale_*_sir()` functions --- DESCRIPTION | 4 +- NAMESPACE | 3 + NEWS.md | 7 +- PythonPackage/AMR/AMR.egg-info/PKG-INFO | 2 +- ...ny.whl => AMR-2.1.1.9146-py3-none-any.whl} | Bin 10253 -> 10254 bytes PythonPackage/AMR/dist/amr-2.1.1.9144.tar.gz | Bin 10080 -> 0 bytes PythonPackage/AMR/dist/amr-2.1.1.9146.tar.gz | Bin 0 -> 10058 bytes PythonPackage/AMR/setup.py | 2 +- R/ggplot_sir.R | 7 +- R/plotting.R | 197 ++++++++++++++++-- R/sysdata.rda | Bin 93152 -> 93336 bytes ....txt => gpt_training_text_v2.1.1.9146.txt} | 119 ++++++++--- data-raw/translations.tsv | 1 + man/ggplot_sir.Rd | 5 +- man/plot.Rd | 107 ++++++++-- tests/testthat/test-plotting.R | 87 ++++++++ 16 files changed, 460 insertions(+), 81 deletions(-) rename PythonPackage/AMR/dist/{AMR-2.1.1.9144-py3-none-any.whl => AMR-2.1.1.9146-py3-none-any.whl} (85%) delete mode 100644 PythonPackage/AMR/dist/amr-2.1.1.9144.tar.gz create mode 100644 PythonPackage/AMR/dist/amr-2.1.1.9146.tar.gz rename data-raw/{gpt_training_text_v2.1.1.9144.txt => gpt_training_text_v2.1.1.9146.txt} (99%) create mode 100644 tests/testthat/test-plotting.R diff --git a/DESCRIPTION b/DESCRIPTION index 1773aa1a3..ec225564e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: AMR -Version: 2.1.1.9144 -Date: 2025-02-11 +Version: 2.1.1.9146 +Date: 2025-02-13 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/NAMESPACE b/NAMESPACE index c97dbf123..3ce73cd9c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -323,9 +323,12 @@ export(rifamycins) export(right_join_microorganisms) export(scale_color_mic) export(scale_colour_mic) +export(scale_colour_sir) export(scale_fill_mic) +export(scale_fill_sir) export(scale_sir_colours) export(scale_x_mic) +export(scale_x_sir) export(scale_y_mic) export(scale_y_percent) export(semi_join_microorganisms) diff --git a/NEWS.md b/NEWS.md index e55957eba..a6710fb4b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# AMR 2.1.1.9144 +# AMR 2.1.1.9146 *(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).)* @@ -27,8 +27,9 @@ This package now supports not only tools for AMR data analysis in clinical setti * **Updated clinical breakpoints** * EUCAST 2024 and CLSI 2024 are now supported, by adding all of their over 4,000 new clinical breakpoints to the `clinical_breakpoints` data set for usage in `as.sir()`. EUCAST 2024 is now the new default guideline for all MIC and disk diffusion interpretations. * `as.sir()` now brings additional factor levels: "NI" for non-interpretable and "SDD" for susceptible dose-dependent. Currently, the `clinical_breakpoints` data set contains 24 breakpoints that can return the value "SDD" instead of "I". -* **New forms for MIC plotting and transforming** - * New function group `scale_*_mic()`, namely: `scale_x_mic()`, `scale_y_mic()`, `scale_colour_mic()` and `scale_fill_mic()`. They are advanced ggplot2 extensions to allow easy plotting of MIC values. They allow for manual range definition and plotting missing intermediate log2 levels. +* **New advanced ggplot2 extensions for MIC and SIR plotting and transforming** + * New function group `scale_*_mic()`, namely: `scale_x_mic()`, `scale_y_mic()`, `scale_colour_mic()` and `scale_fill_mic()`. They allow easy plotting of MIC values. They allow for manual range definition and plotting missing intermediate log2 levels. + * New function group `scale_*_sir()`, namely: `scale_x_sir()`, `scale_colour_sir()` and `scale_fill_sir()`. They allow to plot the `sir` class, and translates into the system language at default. They also set colourblind-safe colours to the plots. * New function `rescale_mic()`, which allows users to rescale MIC values to a manually set range. This is the powerhouse behind the `scale_*_mic()` functions, but it can be used independently to, for instance, compare equality in MIC distributions by rescaling them to the same range first. * **Support for Python** * While using R for the heavy lifting, [our 'AMR' Python Package](https://pypi.org/project/AMR/) was developed to run the AMR R package natively in Python. The Python package will always have the same version number as the R package, as it is built automatically with every code change. diff --git a/PythonPackage/AMR/AMR.egg-info/PKG-INFO b/PythonPackage/AMR/AMR.egg-info/PKG-INFO index 0d11eea39..d1084a0fa 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.9144 +Version: 2.1.1.9146 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.9144-py3-none-any.whl b/PythonPackage/AMR/dist/AMR-2.1.1.9146-py3-none-any.whl similarity index 85% rename from PythonPackage/AMR/dist/AMR-2.1.1.9144-py3-none-any.whl rename to PythonPackage/AMR/dist/AMR-2.1.1.9146-py3-none-any.whl index 54ddf209ba16fc3fdf9f8d086a838186bd3f0ac8..2d9fc3353292a38b01a2ee9f090fa7c439c432a9 100644 GIT binary patch delta 658 zcmeAT=nLQt@MdNaVPIh3U=W(-yOFn?l^IBHZf6x?0W;=t-sI*Gp5_}h{eDvU^D2R4*7f~(90N2V8i?h9*wHsg*GSJ02rUgw%qDMCE@K8No2;cG z2h{7SqEQdhwE6D6dkKs{Ynd1r;bHZ> zrG`0X-xS#e0;b7{1xD+~COEUOoV{@B(-+UIQ>$W(zTV&et5jxxP}DZnK8r}j*H#@o^F`3Joemf z`95o{6W@JTaaLaQzb3ESv_Ejp#HANczk23j9%-ZTJZG(peC8zHJ&rl4tB+alVP#k7T(s<; z-}~#+p4!JQcP;yre!^L!DmQ3-)!OxmkK5SYBDbtulk7a>;D<|sVho=97yqeRJpIqa z__Ue_{xP2w{w-)>%XVwhJoGuRWq0l=kJ1&Y%Vqj5@BN^-OY{?^P4Epl} zycwB9nBhrbvXGh;CPl-pE_d$_%78x3h|{fEn{RZ*p_!+IdI4Z+2ImTrVog zXfk=GXcc4ZW)ZP!UL}ysy1pNeV}K?^1F;+sJNgFc8tEAVp{1dT$>fd7Wz0ZjleJXj zfO>uP(d+uc3VgrVTht>00 zgTk8miyIhHizA(wP9E(_$~gOI$sx_tm;K!rd+gov>;3#X?x*J^g54~S&AzSF^FG~` zy( zbM=@IiQ|1XOO%{4mmXf&Yh>iIb^ED+mjTaK)Lg81aIt#kp;;?NflgOg=ztEIG(gtzdz1UGy-ud)ALL45tSzisFL zG)fCP$nQAR>Ax!F?1X(D4>s6OUS(UB&8sr)>%AjJh6XeA59uG?x!bqMU0~inrT}k7 zCJ|@-2xQDB&53+fn=ucDE d0cx47uEGhA{>cZ_)qrBp)fL&8)qrV$0RSMK`?df8 diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9144.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9144.tar.gz deleted file mode 100644 index 0035680bb67e91ff6271265fd7d940c45e15d441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10080 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 ZvAC4U|KF|t?E?f#WhXHgY6lwXe*rrZ<9+}D diff --git a/PythonPackage/AMR/dist/amr-2.1.1.9146.tar.gz b/PythonPackage/AMR/dist/amr-2.1.1.9146.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..9ea0ebb611d79eab3340c86571d7521e3132f188 GIT binary patch literal 10058 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 literal 0 HcmV?d00001 diff --git a/PythonPackage/AMR/setup.py b/PythonPackage/AMR/setup.py index ea74567b8..87949ce57 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.9144', + version='2.1.1.9146', packages=find_packages(), install_requires=[ 'rpy2', diff --git a/R/ggplot_sir.R b/R/ggplot_sir.R index 16f97efb6..82402528a 100755 --- a/R/ggplot_sir.R +++ b/R/ggplot_sir.R @@ -77,7 +77,7 @@ #' ggplot(df) + #' geom_sir() + #' scale_y_percent() + -#' scale_sir_colours() + +#' scale_sir_colours(aesthetics = "fill") + #' labels_sir_count() + #' theme_sir() #' } @@ -121,7 +121,8 @@ #' ) %>% #' ggplot() + #' geom_col(aes(x = x, y = y, fill = z)) + -#' scale_sir_colours(Value4 = "S", Value5 = "I", Value6 = "R") +#' scale_sir_colours(aesthetics = "fill", +#' Value4 = "S", Value5 = "I", Value6 = "R") #' } #' if (require("ggplot2") && require("dplyr")) { #' # resistance of ciprofloxacine per age group @@ -243,7 +244,7 @@ ggplot_sir <- function(data, theme_sir() if (fill == "interpretation") { - p <- p + scale_sir_colours(colours = colours) + p <- p + scale_sir_colours(aesthetics = "fill", colours = colours) } if (identical(position, "fill")) { diff --git a/R/plotting.R b/R/plotting.R index 976e2afe6..3960851e0 100755 --- a/R/plotting.R +++ b/R/plotting.R @@ -40,38 +40,46 @@ #' @param main,title title of the plot #' @param xlab,ylab axis title #' @param colours_SIR colours to use for filling in the bars, must be a vector of three values (in the order S, I and R). The default colours are colour-blind friendly. -#' @param language language to be used to translate 'Susceptible', 'Increased exposure'/'Intermediate' and 'Resistant' - the default is system language (see [get_AMR_locale()]) and can be overwritten by setting the package option [`AMR_locale`][AMR-options], e.g. `options(AMR_locale = "de")`, see [translate]. Use `language = NULL` or `language = ""` to prevent translation. +#' @param language language to be used to translate 'Susceptible', 'Increased exposure'/'Intermediate' and 'Resistant' - the default is system language (see [get_AMR_locale()]) and can be overwritten by setting the package option [`AMR_locale`][AMR-options], e.g. `options(AMR_locale = "de")`, see [translate]. Use `language = NULL` to prevent translation. #' @param expand a [logical] to indicate whether the range on the x axis should be expanded between the lowest and highest value. For MIC values, intermediate values will be factors of 2 starting from the highest MIC value. For disk diameters, the whole diameter range will be filled. #' @param aesthetics aesthetics to apply the colours to - the default is "fill" but can also be (a combination of) "alpha", "colour", "fill", "linetype", "shape" or "size" +#' @param eucast_I a [logical] to indicate whether the 'I' must be interpreted as "Susceptible, under increased exposure". Will be `TRUE` if the default [AMR interpretation guideline][as.sir()] is set to EUCAST (which is the default). With `FALSE`, it will be interpreted as "Intermediate". #' @inheritParams as.sir #' @inheritParams ggplot_sir #' @inheritParams proportion #' @details -#' The interpretation of "I" will be named "Increased exposure" for all EUCAST guidelines since 2019, and will be named "Intermediate" in all other cases. -#' -#' For interpreting MIC values as well as disk diffusion diameters, supported guidelines to be used as input for the `guideline` argument are: `r vector_and(AMR::clinical_breakpoints$guideline, quotes = TRUE, reverse = TRUE)`. -#' -#' Simply using `"CLSI"` or `"EUCAST"` as input will automatically select the latest version of that guideline. +#' ### The `scale_*_mic()` Functions +#' +#' The functions [scale_x_mic()], [scale_y_mic()], [scale_colour_mic()], and [scale_fill_mic()] functions allow to plot the [mic][as.mic()] class (MIC values) on a continuous scale. They allow to rescale the MIC range, and retain the signs in MIC values if desired. Missing intermediate log2 levels will be plotted too. +#' +#' ### The `scale_*_sir()` Functions +#' +#' The functions [scale_x_sir()], [scale_colour_sir()], and [scale_fill_sir()] functions allow to plot the [sir][as.sir()] class (S/I/R values). They can translate the S/I/R values to any of the `r length(AMR:::LANGUAGES_SUPPORTED)` supported languages, and set colour-blind friendly colours to the `colour` and `fill` aesthetics. #' #' ### Additional `ggplot2` Functions #' -#' This package contains several functions that extend the `ggplot2` package, to help in visualising AMR data results. All these functions are internally used by [ggplot_sir()] too. +#' This package contains more functions that extend the `ggplot2` package, to help in visualising AMR data results. All these functions are internally used by [ggplot_sir()] too. #' #' * [facet_sir()] creates 2d plots (at default based on S/I/R) using [ggplot2::facet_wrap()]. #' * [scale_y_percent()] transforms the y axis to a 0 to 100% range using [ggplot2::scale_y_continuous()]. -#' * [scale_sir_colours()] sets colours to the bars (green for S, yellow for I, and red for R). Has multilingual support. The default colours are colour-blind friendly, while maintaining the convention that e.g. 'susceptible' should be green and 'resistant' should be red. +#' * [scale_sir_colours()] allows to set colours to any aesthetic, even for `shape` or `linetype`. #' * [theme_sir()] is a [ggplot2 theme][[ggplot2::theme()] with minimal distraction. #' * [labels_sir_count()] print datalabels on the bars with percentage and number of isolates, using [ggplot2::geom_text()]. +#' +#' The interpretation of "I" will be named "Increased exposure" for all EUCAST guidelines since 2019, and will be named "Intermediate" in all other cases. +#' +#' For interpreting MIC values as well as disk diffusion diameters, supported guidelines to be used as input for the `guideline` argument are: `r vector_and(AMR::clinical_breakpoints$guideline, quotes = TRUE, reverse = TRUE)`. Simply using `"CLSI"` or `"EUCAST"` as input will automatically select the latest version of that guideline. #' @name plot #' @rdname plot #' @return The `autoplot()` functions return a [`ggplot`][ggplot2::ggplot()] model that is extendible with any `ggplot2` function. -#' -#' The `fortify()` functions return a [data.frame] as an extension for usage in the [ggplot2::ggplot()] function. #' @param ... arguments passed on to methods #' @examples #' some_mic_values <- random_mic(size = 100) #' some_disk_values <- random_disk(size = 100, mo = "Escherichia coli", ab = "cipro") #' some_sir_values <- random_sir(50, prob_SIR = c(0.55, 0.05, 0.30)) +#' +#' +#' # Plotting using base R's plot() --------------------------------------- #' #' plot(some_mic_values) #' plot(some_disk_values) @@ -114,8 +122,10 @@ #' labs(title = "with scale_x_mic() using a manual 'outside' range") #' } #' +#' #' # Plotting using scale_y_mic() ----------------------------------------- #' some_groups <- sample(LETTERS[1:5], 20, replace = TRUE) +#' #' if (require("ggplot2")) { #' ggplot(data.frame(mic = some_mic_values, #' group = some_groups), @@ -133,18 +143,58 @@ #' scale_y_mic(mic_range = c(NA, 2)) #' } #' +#' #' # Plotting using scale_fill_mic() ----------------------------------------- #' some_counts <- as.integer(runif(20, 5, 50)) +#' #' if (require("ggplot2")) { #' ggplot(data.frame(mic = some_mic_values, #' group = some_groups, -#' counts = some_counts, +#' counts = some_counts), #' aes(group, counts, fill = mic)) + #' geom_col() + #' scale_fill_mic(mic_range = c(0.5, 16)) #' } #' -#' # Auto plotting -------------------------------------------------------- +#' # Plotting using scale_x_sir() ----------------------------------------- +#' if (require("ggplot2")) { +#' ggplot(data.frame(x = c("I", "R", "S"), +#' y = c(45,323, 573)), +#' aes(x, y)) + +#' geom_col() + +#' scale_x_sir() +#' } +#' +#' +#' # Plotting using scale_y_mic() and scale_colour_sir() ------------------ +#' if (require("ggplot2")) { +#' plain <- ggplot(data.frame(mic = some_mic_values, +#' group = some_groups, +#' sir = as.sir(some_mic_values, +#' mo = "E. coli", +#' ab = "cipro")), +#' aes(x = group, y = mic, colour = sir)) + +#' theme_minimal() + +#' geom_boxplot(fill = NA, colour = "grey") + +#' geom_jitter(width = 0.25) +#' +#' plain +#' } +#' if (require("ggplot2")) { +#' # and now with our MIC and SIR scale functions: +#' plain + +#' scale_y_mic() + +#' scale_colour_sir() +#' } +#' if (require("ggplot2")) { +#' plain + +#' scale_y_mic(mic_range = c(0.005, 32), name = "Our MICs!") + +#' scale_colour_sir(language = "el", eucast_I = FALSE, +#' name = "In Greek!") +#' } +#' +#' +#' # Plotting using ggplot2's autoplot() ---------------------------------- #' if (require("ggplot2")) { #' autoplot(some_mic_values) #' } @@ -155,6 +205,7 @@ #' autoplot(some_sir_values) #' } #' +#' #' # Plotting using scale_y_percent() ------------------------------------- #' if (require("ggplot2")) { #' p <- ggplot(data.frame(mics = as.mic(c(0.25, "<=4", 4, 8, 32, ">=32")), @@ -202,9 +253,15 @@ create_scale_mic <- function(aest, keep_operators, mic_range, ...) { } scale$breaks <- function(..., self) log2(as.mic(self$`.values_levels`)) scale$labels <- function(..., self) self$`.values_levels` - scale$limits <- function(..., self) { + scale$limits <- function(x, ..., self) { rng <- range(log2(as.mic(self$`.values_levels`))) - c(rng[1] - 0.5, rng[2] + 0.5) + # add 0.5 extra space + rng <- c(rng[1] - 0.5, rng[2] + 0.5) + if (!is.na(x[1]) && x[1] == 0) { + # scale that start at 0 must remain so, e.g. in case of geom_col() + rng[1] <- 0 + } + rng } scale } @@ -213,6 +270,8 @@ create_scale_mic <- function(aest, keep_operators, mic_range, ...) { #' @inheritParams as.mic #' @rdname plot scale_x_mic <- function(keep_operators = "edges", mic_range = NULL, ...) { + meet_criteria(keep_operators, allow_class = c("character", "logical"), is_in = c("all", "none", "edges", FALSE, TRUE), has_length = 1) + meet_criteria(mic_range, allow_class = c("numeric", "integer", "logical", "mic"), has_length = 2, allow_NA = TRUE, allow_NULL = TRUE) create_scale_mic("x", keep_operators = keep_operators, mic_range = mic_range, ...) } @@ -220,6 +279,8 @@ scale_x_mic <- function(keep_operators = "edges", mic_range = NULL, ...) { #' @inheritParams as.mic #' @rdname plot scale_y_mic <- function(keep_operators = "edges", mic_range = NULL, ...) { + meet_criteria(keep_operators, allow_class = c("character", "logical"), is_in = c("all", "none", "edges", FALSE, TRUE), has_length = 1) + meet_criteria(mic_range, allow_class = c("numeric", "integer", "logical", "mic"), has_length = 2, allow_NA = TRUE, allow_NULL = TRUE) create_scale_mic("y", keep_operators = keep_operators, mic_range = mic_range, ...) } @@ -227,6 +288,8 @@ scale_y_mic <- function(keep_operators = "edges", mic_range = NULL, ...) { #' @inheritParams as.mic #' @rdname plot scale_colour_mic <- function(keep_operators = "edges", mic_range = NULL, ...) { + meet_criteria(keep_operators, allow_class = c("character", "logical"), is_in = c("all", "none", "edges", FALSE, TRUE), has_length = 1) + meet_criteria(mic_range, allow_class = c("numeric", "integer", "logical", "mic"), has_length = 2, allow_NA = TRUE, allow_NULL = TRUE) create_scale_mic("colour", keep_operators = keep_operators, mic_range = mic_range, ...) } @@ -239,9 +302,97 @@ scale_color_mic <- scale_colour_mic #' @inheritParams as.mic #' @rdname plot scale_fill_mic <- function(keep_operators = "edges", mic_range = NULL, ...) { + meet_criteria(keep_operators, allow_class = c("character", "logical"), is_in = c("all", "none", "edges", FALSE, TRUE), has_length = 1) + meet_criteria(mic_range, allow_class = c("numeric", "integer", "logical", "mic"), has_length = 2, allow_NA = TRUE, allow_NULL = TRUE) create_scale_mic("fill", keep_operators = keep_operators, mic_range = mic_range, ...) } +create_scale_sir <- function(aest, colours_SIR, language, eucast_I, ...) { + ggplot_fn <- getExportedValue(paste0("scale_", aest, "_discrete"), + ns = asNamespace("ggplot2")) + args <- list(...) + args[c("aesthetics", "value", "labels", "limits")] <- NULL + + if (aest == "x") { + ggplot_fn <- ggplot2::scale_x_discrete + args <- c(args, + list(limits = base::force)) + } else { + ggplot_fn <- ggplot2::scale_discrete_manual + args <- c(args, + list(aesthetics = aest, + values = c(S = colours_SIR[1], + SDD = colours_SIR[2], + I = colours_SIR[2], + R = colours_SIR[3], + NI = "grey30"), + limits = base::force)) + } + scale <- do.call(ggplot_fn, args) + + scale$labels <- function(x) { + stop_ifnot(all(x %in% levels(NA_sir_)), + "Apply `scale_", aest, "_sir()` to a variable of class 'sir', see `?as.sir`.", + call = FALSE) + x <- as.character(as.sir(x)) + if (!is.null(language)) { + x[x == "S"] <- "(S) Susceptible" + x[x == "SDD"] <- "(SDD) Susceptible dose-dependent" + if (eucast_I == TRUE) { + x[x == "I"] <- "(I) Susceptible, incr. exp." + } else { + x[x == "I"] <- "(I) Intermediate" + } + x[x == "R"] <- "(R) Resistant" + x[x == "NI"] <- "(NI) Not interpretable" + x <- translate_AMR(x, language = language) + } + x + } + scale$limits <- function(x, ...) { + # force SIR in the right order + x[match(x, levels(NA_sir_))] + } + + scale +} + +#' @rdname plot +#' @export +scale_x_sir <- function(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), + eucast_I = getOption("AMR_guideline", "EUCAST") == "EUCAST", + ...) { + meet_criteria(colours_SIR, allow_class = "character", has_length = c(1, 3)) + language <- validate_language(language) + meet_criteria(eucast_I, allow_class = "logical", has_length = 1) + create_scale_sir("x", colours_SIR = colours_SIR, language = language, eucast_I = eucast_I, ...) +} + +#' @rdname plot +#' @export +scale_colour_sir <- function(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), + eucast_I = getOption("AMR_guideline", "EUCAST") == "EUCAST", + ...) { + meet_criteria(colours_SIR, allow_class = "character", has_length = c(1, 3)) + language <- validate_language(language) + meet_criteria(eucast_I, allow_class = "logical", has_length = 1) + create_scale_sir("colour", colours_SIR = colours_SIR, language = language, eucast_I = eucast_I, ...) +} + +#' @rdname plot +#' @export +scale_fill_sir <- function(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), + eucast_I = getOption("AMR_guideline", "EUCAST") == "EUCAST", + ...) { + meet_criteria(colours_SIR, allow_class = "character", has_length = c(1, 3)) + language <- validate_language(language) + meet_criteria(eucast_I, allow_class = "logical", has_length = 1) + create_scale_sir("fill", colours_SIR = colours_SIR, language = language, eucast_I = eucast_I, ...) +} + #' @method plot mic #' @importFrom graphics barplot axis mtext legend #' @export @@ -468,7 +619,7 @@ autoplot.mic <- function(object, } #' @method fortify mic -#' @rdname plot +#' @noRd # will be exported using s3_register() in R/zzz.R fortify.mic <- function(object, ...) { object <- as.mic(object) # make sure that currently implemented MIC levels are used @@ -701,7 +852,7 @@ autoplot.disk <- function(object, } #' @method fortify disk -#' @rdname plot +#' @noRd # will be exported using s3_register() in R/zzz.R fortify.disk <- function(object, ...) { stats::setNames( @@ -861,7 +1012,7 @@ autoplot.sir <- function(object, } #' @method fortify sir -#' @rdname plot +#' @noRd # will be exported using s3_register() in R/zzz.R fortify.sir <- function(object, ...) { stats::setNames( @@ -1037,11 +1188,19 @@ scale_y_percent <- function(breaks = function(x) seq(0, max(x, na.rm = TRUE), 0. #' @rdname plot #' @export scale_sir_colours <- function(..., - aesthetics = "fill", + aesthetics, colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B")) { stop_ifnot_installed("ggplot2") meet_criteria(aesthetics, allow_class = "character", is_in = c("alpha", "colour", "color", "fill", "linetype", "shape", "size")) meet_criteria(colours_SIR, allow_class = "character", has_length = c(1, 3)) + + if ("fill" %in% aesthetics && message_not_thrown_before("scale_sir_colours", "fill", entire_session = TRUE)) { + warning_("Using `scale_sir_colours()` for the `fill` aesthetic has been superseded by `scale_fill_sir()`, please use that instead. This warning will be shown once per session.") + } + if (any(c("colour", "color") %in% aesthetics) && message_not_thrown_before("scale_sir_colours", "colour", entire_session = TRUE)) { + warning_("Using `scale_sir_colours()` for the `colour` aesthetic has been superseded by `scale_colour_sir()`, please use that instead. This warning will be shown once per session.") + } + if (length(colours_SIR) == 1) { colours_SIR <- rep(colours_SIR, 3) } @@ -1057,7 +1216,7 @@ scale_sir_colours <- function(..., colours <- replace(original_cols, names(list(...)$colours), list(...)$colours) # limits = force is needed in ggplot2 3.3.4 and 3.3.5, see here; # https://github.com/tidyverse/ggplot2/issues/4511#issuecomment-866185530 - return(ggplot2::scale_fill_manual(values = colours, limits = force)) + return(ggplot2::scale_fill_manual(values = colours, limits = force, aesthetics = aesthetics)) } if (identical(unlist(list(...)), FALSE)) { return(invisible()) diff --git a/R/sysdata.rda b/R/sysdata.rda index c30d253370ba824f3150cb8accbc6de701396fac..8b1f0b08aeea93eed02b4a5e59efa8fb64312ffb 100755 GIT binary patch delta 88189 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 delta 88004 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

YJ*+9_^<41K+JxP`8VS%G$HX| zdR;uiND|0bb<P4~O{1Fw~l|_)i!Ojo!0_u!t$zE~@;mTDx=J65m=@APt z;#7%$S$}w@A+g~kUo-FCDOpxb3o!2cF@ue@wS}5jiR5qLKPg=)n8rL9-2n{xCcQX7 z+||}f_O9|%al%*9*f-PPm*MEuC!A_=d#57cQ6tA`-pXq(+w~mSvS9_2Qrj`&^XOzk zOj!l4-CGnMy#>N@2pdJCSXi+De(W z(0@H`S5vkcT{b8~2|Elq`my!1z$*=5HMC$f=sxB}kUI!~8&P_F@=x(fw7wrD$W*15 z-DyXoAox}6PiFG@YZa|Nt+@H6K!Ey)Q*2`+h^+HQE>m`q&m31AGv8Jbq>wvLWeHPE zXm#Q}XhebBaYflxo)OnED+ClvX^zO=`+spGw5SG2i@YU$mW~Mz6t3OtA1bFIpZJ_I z_?m+srLQ#w+3L3AjN>Yr<7M9F%FCuPg6T#VqG1L^rvpqqdTnlWi`XY;TsgF1UlXet zHVcK)y;~E&N?hc)8cj5TxLlV(U$*;xB1Z#<;ssG27TOgw>L@TH$99DB1kqC8bbkgb zlwPF|+CwpoalFl9U_W&%L1Wkm8aI3R{`$a^;kf(wM{L-)ZTbC}o-JEiqI&=)b)MwVW{ zhatj7B+^>WhU?}5O|yYtMI&2#^}G#<Rmumj zPTHI0oTu5MFy{T(;AIkmDQavL@a#uac9pVWFrm8;>PA1C05Hm6(bG&;Vmm0@L%a5| zher7kr*xyMp*H?RBP8UQi#&*4SW^S0+3eyOx>$i#U81G+jVHR-d#VD-NIw0R?9GdH zR#yG{@cLf|f!J(?P+~UW5P!p3g(ufVbtnxp`=D~5FqA%~u41*7(WSb3E&WSUfQOH> zmEl1)D#no^;%9(0Do=8gUT|;4IV;`EzZI9}cC-@L@OWq4qA*o>p6zO)(FSkDR|Nr& z_?9;pEm_)*u;d75(5;hp!J+VHS??ZvTWVEUOz<&oN|P zCq9~*X~SmV)!FUcJb#oxxtJ!qwDtvL!hc8t{xMF!8lTim-nfLS-UI!G+5;G=aN~== zHdhF%;M1*dZ&WEu+Ba0$?RFatc#V5?4!$hSmySZD#Su zz8W{*oA1=lPl#|rlNRm_2tt66Jsl2R?Q;%f02%AW(nh>JR2@^YY;q*;@Z=8n{27fH zbuJ-Qp^u}6u#*{=oIloaLyL#>DJE*gWuJ>iWU4MX`cbljA#7%CKDS(jZ zDl1wFYv(^?^Yo`$NaNe?rwZ-c#WPm8V)>9|KOhuaJeq8+tyyKe;U@&U`S0i{(CUI1}cJmFW?` z!VL0uitctcog|!yGml&{NkBH#$I}kv9J5)Ik_1)9=&vhZzE7~+9d#tng~VazcB{LV z)%C2LgIov~p#j)_*P&V~XG2Uq`)pDoG^v~7Db5&{o__?>G;ZUHq?CHx3!ShGH^j8j zSBxrMhe3x3I%J2S0HGV2WGi+`Bb#2?dhB`=Df%JXR4Op(ytyGmdThDDk4yJK&(GO^ zJU#?qOQ<%LDU!@Uo0*vJRSAYHK6QtT-RQk)cx!*Dl8ztiOiuC%!+e~b1URggngER# zZa-CO8h`fLz6(~jqh1>^oX29bfcXtQvRlL9wC^?lOU*Rf%LEYQ1PJhXDm|Uk-_J8q9mxE=M?u|)~=#INKV{U_+fUjcUiHS71UyI0Kh(bcDMt+dE|jto+J`adZr zR)4sE`b=nnEA*GCcrHTmkF*K)aLxQGr#bMWp2g$MNjAA&+h#PEGp&rW2nZ4^#MP#? z=U%f|CJuypO3qSNSGKM@K9{0tw3WoCzEC`@dlwt3i%v=(q^Jy_Q<)!d6-oSKpe=dhw+|p^a5oYYHXO;_Xg|(E`VX!YTYU9Rqj+0RPD$93MFQo6X&KD|!VcC}wg}|-RewN~ zRn&a%^(vgAs}Kd6x1|aOZc8Jk?hB86{s34neg;BII75pF1C*hUViZ&NdW4RlRM*{$ zaRx);?M7gvY0}h$BV8aZaWR4bWIrc05l}-e0H3#zP=>q*g&?=MIE~KS(Td$ngT;G` z0g3NE*9#$|BY%J6YtOd3gGd3l4S$Yn&8$6;#33_wTjdlf?FnxQec_UeR952ZW4Kiu zjR9*1=NiP$qM)zYX%;-8wMrdz4oJ;^s_o7PmsUj>=k zqFN!Q^`|gRxmds7{A%-3Sxqz^v~*A1?~J^>QEx(m_8!d3oiGm)gxkbJEq`S(-+g}C z+L_Sp^<;gsFv>DSt!n-!3ROcoV1C2wbMv#>7Ypf!>rM3Yd9&v#{9Kn>bi^B}&WvE4cHaZ_Q_k zE);xUYnEbQV`~<#RhzsoT3yVgx<1SE_6=U5WX(3=4Dj!misT9zEn7A9-tqL;beZY} zRmL8srM0A$D;@BIiEDrXhFtZ+bKaGbc|B&ki)&@*`daZ5%-(Kj11*=nj zD@Tg~OPf&lL8eQKz$z3K(O7h$=7n{&g%LT={d26U`&*=Y3wxLBVP+h#5VUo~as4K! z|4Lq*`Ra~$IGpmKd|mU~2^6#Hd^={dVnpz@e=UATAyprR{=PA^^Eimgpc&2)!h;(` z)^~;R=nBFUaDUSlPkhQUW>>caHvOW8HR|QcjiGC5`&Aj^Mt>J7AprgUVVK0?PvY`! zZoR!yRygzicGu3{7zot5DM?9b{(TmVFe4trg1$#C0cx669KKzA!c3AZ8@ zWKnnX`**D|#UXJ)T^--qlG~$YAvcOXztX5P;Ev^zVB;a0x8pXwUyGrH#6E@}vW->n z88=sp!+y7{AHx3ggl=U^Q8DoyCC+J@IiiB(B?)7rm*5EhT%HPw#ja9YdDRf`kxHvD++T#k!Uxuoen5_OPR_j= zzZ80TlMB<@Zv{N@CDWpfJG8uC%qnzUUlI=47=P?NTVvRvn3+S`uG2_=IZHQJzwAzh zo2go!Nbdzfo!2Jzv-(}{P*Cuhc8$FV3KWl8YotAwHruBPvXQ1oB22 zZGSklu~uq&l@!pHoiEU(x1M&|2`YaGMfy)R@84sb5iAm_q`DbNUDqYVZ+ggZR-(bZ z!MPs3phWjBUvb-|EJ+-Ko0_kZ3V*oU zC7KOg=RF>Wd~+r#vkd`cuh!6^2ofW-5}}5T z4JfBDH@U-LEGi^3*r1xHg};-~t$zqZLxp4HTf72EVueD@+lwnFGb{-PGaQ~^#x0^A zDZ)92VQC>r&H3^rS8`_K@A#fyHtDhZ@`E}IwdC}<;2GV73! zWrtAc!|73H#X)?9u4<@y?CFkW@1>Ycq{b+6##@{C|M!`LgIGhBQ|* zH}j4O{9mQ#VXyTx<6~YL$Dw!Zl*!@b*g$bnL+OI zO930{_u$LGLYSJ{vNbum3xzV|8ZWnljd>-v0ehknj}MMJ%j7PiO%hPXLZP3%ir6nh zXOQ3#VZjYUi-K}rB7Z7?21(wuH#12JL06hNYTBcjqrBG`5spV!ng zet>D(k{4U;@3ZL`1Y#Aez{ofCH#pOUPLMwFOuh-)U-f1?iBaKPuOJ>Wb+btAr1|5g z4gL5O>{IVaPykdeRC22ET5ofb0@3(}u?zQn_@;l_VH0orIaxIhUs}V7$WM`#TU8*>=mGXiF2T?Y=;kr$)lj7=wXLL8{)Q#M9C(yt zpJL=NIWjlo$hH=BMX8EQpxpd_!COR~Ny5cZs$-ekbbkmOHntK;uc`8VTYJ<-OXT(2 zQW;NL}nfB!R4w5eXGAh;TX88W>(5JOa4bxq>5F*7p! zT42rUu(j{xDq<3MRr2P|n!2?J$oNYM|JTrOz5e2>jkgCg-R)LDwCcK>i-#y*x_h~* z4^H3J-hW?z8JKs5*>m6Yq!90lEV0}%(b~?8SotOe%9!J$hA-Ck)GLSy+`CBIYm7o! zPXZnLRl1*a<^?cp=*&8MXFO4Hv1^e$R;?LTHzR=s*zt*9s}#Ov8mCJwF9cfdgGy;z zHug4I>l1hRiPqiM;&3&8-G`d15C`}Du$5|$O^Z_NY+UYu^^OT zAo~m!(<8GSJ`y_%K}q9`SC!M&&Z>N=P_O%IdgF9uRee0fY-N<~b4L!L2Zh=HGTZY~ z-f(es4}^fvxCJ`;&eV4CSk0nH`fa0@TVZBkJCS&TgO6gL_e$=@7C6ZhTTSx6Z6skn z0)K%Wp?jCrsk!j*^seU=Xk_Zl@HI6~YS}z>_`ld<1|yNzhJBPw6AXCR4bX!2^j~FS zCzEoX9ae4$6IQoEi`^>~e7ql`ks;L!22-UPhX{W-*(rId75_A$pFY2AX zjjR=cd1@1`f&m8^gcj|w5N1;CMJB$w^M7sBPMeb6wjXk~1JPmD&AQnjiCim-Z~rK{ zpZE9{YzMX+dBHB_Sv9BL!Yz(`M_6Ke75)1aX}vlVS<%|oZL}7-Bs26c^`717A<4Qo z)L}qeY^Eg1+1gj5WMkF|);$FtdFKv@Ju$kV6$@yoPY-n5 zqruofT?eMppq_|woddD+?InQruzxe933sYbofL=bHE&8;pozz0Irql0AtqpfDy}GG zrHN}@P}ADYG^h`xGWr`#bG@1_c;=#O$}-(RsT=v31xS-BwKs@;O3z3(mh3d0Y{@a4sZYWrZCO zxR>sB=F=^0zUK1`y?0wenG`ZQ49fPk9dlOA#;ie5XtlJSyTwqaY=0%vyb8Lj6o#3^ zL6*0_A!jeNH!Nad_pc3R`2+Ht-SI(nyq|ex9FKW|VxG*;5EL>Oy5JQb<}irYPTJp;?;bbNbQ|PxZ@`02X1pV+XA}I#2%`767!%7eiIR zXqwn1Aj*me*Pel_@PecIWiZa(>`7NGoNW0w)MYvNV;y=V$8HUC3|xGdG!*{$+i{xP z__wA4B+haELkK(;04D$hv2P&Yo^s;|6@mmi`5H+oU3l*ss(-XjY#3HTppiHO*t6XS zya&U#?;nq_wPZhN@(wF__GiG@YFX?l@jM9Gi|t_wQ4Lf|65~3})J!yRw%Xc9n_}-- z(5l~Tu){#f>hKFf7sKArXk6LfJonyg9YLh<*Sg?>j>WRP@_?ciQYrR zGM&qcm8fVEmqjOjb)@{Fa$DmdO{mJa9asEG8)i3d@qdfM1_3f0e?xmTZQaLabkL|) zZosmC)1$&wHS!hMqym*QO@1o}#KgJUO~Pg&nEYQywmhmVbbQq&(YQ8_R$=?iwE}ql z75x+U=OL#_^a7+4*S}&yVJ|Y=NNl%#|;Jg#eFKOt?#!+s+IlFCL(XM(pEU@m76O82f>jVH?Ivaf% z+5C!7H&r5aEVBL;^^#XdqbHbYtb_yg$fk{prhk3XJ^qMjvqcqT#`On!_oXSY5Z(-R zb=j_JqBqRg&v`|s;yPe7*~e(vx&>1H5ZMoY6bsL>9-KqdDW4T=gU~06 zcfsX}gj>X9Jt(35Ti!dW(aTge{i%Q?PV)A#2e&%-$I%Ay>bnyt!`T$a(X>x0 z9sP@7GVO$5e8N1ZUqYvxk*&-X55flRpMM_;{EW^(aFBmrax9ngYdA6}C=)qY(Hkyr zWxEmLN!jKt5i6*?SJKMP5|JIMF)N~J=!&#rv(Xw07ly*vuv|(B=N$W=04BeK!-Kp?_Tu z$xK*y<|pu>qC`TTKi#vxl(U{U6~Muy({3>b zAk~K2TY|i#g+zaa=&MTH@5Dt=%zp!vY?6R-T8jB)c7?!kE(5m^)hiZ7#{X*8a-?df zJ~9vdB>c}G>rvuk&>+W#q)OdVvechRw5@1ZuXaNL0x>ywB7%pPuX}|FtWm5(6CfAr z3n%;q;Y80WngwLt0wOHwRm1@vv5*98vXKD<0fh|(QEO)diB6xHf?k0HC4cEDXKrdD zhE8gj!p+wU!$?7d>nj_Vjta93?Sjh_p7(4=YXd{^)p`CpXnI1Z7Z8yQZ58lbgG3>*CBqisRfOQ8YwknBDUJQr32V*rJMzm@JY@ z`#uBBoEu1)KsCr`E=*dl4tvHmKGx5avi3sG7T_iuw92ROQ%036^QWkW_4n%XJ7! z;Hv;&)3mI*nQhdrv^E-Bl+nRSX%mB!4$_and=_K}Tp~)4ITj1hZGWc%1d3SGTlr;x zTOpBkhI5i|ky2j^;6u0CWXlr`?v~z{YaBtxy5#eVr<|hTk zu5kaXL>}81?O(?j)b7Y*6BlZAN8u)rOmq#9w&iVw@v)uJMDE<7N8O|N8VqNM1X|2a zG_7}_UM>%}+=PPv-+yZWmir)w=&UHcTN}0l;P+e@te`X$%QzXtzt%mOO{O*CzW4x44CHd?9afD{{~8JZv7ug% zvU_lgb;$SuQ~QNoIpK7LDeG0bhBR|&){SIUzdCtAKQ%7}!hhRAOKy86rM?gY)10wI zJMG||VlVg-kwc8#1WocQJ~=?S7hm%*5*{Iu0{Z2+h$6vDyz^+z6v;I+TTCm5AXUTf~~k-5l0I@se=NQub&% zc_L;1ONuA6%U1YYdZ>YI6gc1k#~8!A)arocJw4oZTgS}u-spdwH&bbCP?hPTtFCXL zwyUM}eb3^H&LBBrUp7AtXRyV>TD(+>U2ywlX@Tj;nRGp<=m7Wbp2Dj`+XRF4PAlUk z-mp1=m?M%ZOsofbYnHxTn~F0qkW7H!!~xl8WgtI?G)O(}d?voJIo>i%r{5X+W&Rkk z1I~@UJWbHLM8tnvaH?`?n#l<@Pd%K_Z_FKO#Ku($N@_E^8tPjI_9Hx=nFS<`$OX9; zx?NHg-(8c9QKj$YZA8y%>=4k+v-p0`c#sQWshE3&brFgRKXurA+j)z4K>%PE{fIBB zGnTP^swOg$djs#62{>#|BRE^zLAFWUITd)}>2Y2YDG7h5VZzztC;B95YAGl^k3O6$ zqB50y6aw{4@Qyqc`W4i<^4CFJkH8XdXwJXl@Dc{@v1MO^RHR-&X`2dnb^gc!=)_I5 z{otrgTnk%%t4D2?tx1d2Vh_0GasCid4o50IGW9-CVhY?cPa?UAg#sUuB6M@kMS})8 zPRrbhF7kgLGUqcnsR6m{2}#j48HP2Pfm`%!_5k)>mXFo1`;e`B>!G{TV^7hpFsWTk zsr774pAQv-n0hUaRoZ#6Xn4^wOfIrFRrk{m9G==dZDo!~Ki(L7tSuMGA+o({1YxH zMPq->A%_g2EOXb@)ZV22Kjz%z)?pdWYUB+VWE~FgTD8abBK+Zuf-I_OZ|MmOZ$qIA zrMb8}zLlrz$csb&(ORH|KwJ6X0z;Gg;^00oQ<^P-n!Kq-t6_m6*Yx29bikM8mc>Df zq<0%Cs?S58p1H%&bNUo`CA!XAk=qO2QR;sbKCF#}0hhD$%)tpL?!qW6YqD&cb0e81 zh8g@knU{6oV8kkszo>qsgLeYX6)Khb4Bs%79uI+{$8P<;)Rp0l$ZA%U@kMR2wFhrW z7`oeBu-znC(*@S-t4hGBSJ4>3+!>=A!P?q+3C0!KCI;5S~olhm@ zR<)SMQ*bECsN}hYWTa8xE{l~RFmQsa!eE<#x|0Jo1i*9w>U3|j&|2`}#xl0?aJKOw zJR^e~{wk=&WgN%%v?z(B*+$le1mJ-pTZlfmxEC;H$4zEaIJ*fB$}_gqlRehDqaDW7Ji+W>?y= zePI{&YG~dWa{7125ntRx%-#BT@{A_a-dQa2dqCcpgsn*YAj~L-kIe2#-VD|>2*2}{ z*DB#DLl0AxmDuXat8qa1#w>sKJY#CB9K(fPju@9-yrCW`KLiQpa@X2WY$i)*McOAp z$3pZN(Xd@w_KUod0to`~q}+)nZ4lu?GU7s}ZX*EU0$!x#FiYyg0BxN3(ftVj4^Q zUKqgNTidJa1{_(Xs6s7@4>ngUa(cm>*KrIU-Kl$v_2D6q?gX)eq>S zbP9Tnx*j@)nphh#%DrM@@1uTDp!Q7|cFpPYSrG+K%1A|z+j8`kzcbi6bG8mcU+ox` zEDSyww;M#IiG`xbN@0JvQPLm9ldZ|ybE@o~m|hW)NI3{a{RCd!l^ec3NE7|ogNySo;D=k=Uk>mEt#xI}DuFGetE9-MpW;Z=}L5Z`e zXTWu!J%B#dvTA=fHG*Dig3z7m9HCJ#E|F$g?oAZ$fLOIkS6X63GI><t{mJe;E9G z^>Q<(G;@QinwuQn60L7`^seum;T|{{gIM>7^>9#^K2m=k5vn8M?u~Og*haQQQ{fpQ zCiy83aD%__I4Vny@ND)G!EzMHr$@IkBut)h#N~iws++p|z`^{Lu^vDMC`5<#WtB>G z;ctR6$rq<^H^+qFTpMNX_)mu=jqToH4tI-Q9m7pb?&($QiWJENieO|PlrL@2GfPrA zV?x=>xU_${h3vO!d%LbJ6u?ekg@3sDehpH=C@Q7llE4A04#SV8krhodU)xbao7y?;?U&= z4b=umP-g9`qASHVUeOeIX%m6gpo}$cj2;&bKW@W;u zpCP|#bnTK8#D;MYWzbmP8OFmpgW9A8}C0J?-G&@Xs!%Dw({B)8pjLABYi3# z%aI6m)CT&I_A$CB5UCBKF-&LS2!JgF83V6bV8RVagRkc_;heIR>{eDnld6ALOg%D(ZII3s9I1GzKBcGA|O{roQLL3AvyrokiNXoiTiG*%Fp4h=af4mJ znxX7%1V6hif$mgfqcDPGAp7sbk`ZJe)ESL#oP^Q6wJ>&%Z<1g(GjuzJYJ>A%DK zgJZ2nI0O*L1o_+Tr53>V4RyC>9Ub)(k(f+vJ#h-E57=B$9&@!b3JguCf{f*)kZlnr zHUf?vKr(qgWA@NfgILv7i>vYcEwSWZ-d!5fn8PMphQRXNZg;v|G@IkO5uJ&5L&+U+ z0=myH>}|y!L?Z|EQg(m2Bd}XGfQ-qhFAs`K+_G=sjj7Q&dl&6cZ3ND&9634$Adam;tf7py+D5tc!;AfEUh0GIHwN_ z3b+spM`6R8j=jERID3@KH0Fuq0H(k2C{lsQG3+EC@V9cez^kUnr%Pf~=N`AODz@ix zaD4&X{@*Dk=LqTxY))Qum*wQCf9RQnF2?>0?p`oDtY*`tE|Zs_3Xdim0VpOP@RgjI zm6%7-cYA4M3l4u;j16+!wJuphV%fK0*Q#3*Kz6APw`V&$a=-GE8(ozQu>k*P@6$@6 z5d4L{r(uySjXzpb6!;tG^RH(8g&o@6&yz8m{1-;1vey<*bu#=mI|&uW)k~I*wR3+Y zr3hso@GsaXcQFd`d(&iYrYIr8X=$%~4u|3~9zm~5ofvYyTzH!cz)H<$RXlDOofq6wc@scP4fVh%k(`p4P#;RqDTer-Qpit3$b?G00&n^a}F$hIJDDbZUG($FN6`T0XPHl%#sU*Hrl!qoZA{@ zAR>{J+jpRuxT>sKapw3cgvP9Fk>-{iY@K+=b;Exal8dUy&8yF`2_h1YR)N)r-^^(6 zA?ypzE`bUt;1Gsxw_D)BsAc+!f8@`H33*x^HID8A8A^y!8AcVPZH94&o-ZI$(y=h^ z8Z33>{SWy+lJlf3W84D0Wy! zRtbL?9Nt|!V-zj+IQ%-={b~#MTGo7f>=KFEInsO(ow9bHEq59ysUu!&`-vZvjBba2 z5E3*0qKoANV)ye+X!PLx3rvY{StfCCcP5Q^A~3hLpE~s96Qi*U)K{-Ug%RWB%P=1@ zF?vCIMp>QSUIa>G^c(1kGx;jz1T=1ELF& z$*)C8RMpmKR`#jM@GjS{Z@+-8B>pQ^q8H`lo(!@NCarbV{J}*A5%?Qp9P|~t zeC<}JpxWAfj`VC@g5Q`&ztO4<)~v|>RAMqhUp1PWu}$M%x9W*?C*K@Lhyvl=C>1_# zDuwi%Es{#6Son>R?+$M5JTg(i#yzy0!8QnnYDtbH`UE7*F^ZAh5#VvMaNwG!B8HlRrqa&# z{P;MPkS&k>OWG{}#K_e~fS!#VLKOzu<$_KXX+a=mjSunF8?^$wI^Bcmq1 zA1DOTA-KF9gv@sJ32Om(6I6e|;~fPuy~I@T=F{f=A-|CH7`<)<3i>w-+ZBV)CvDoi zm-Bii#a0jvIZICaND!j8tFkT7!eXcpFIY>PQxwjV|tt7Wd*oEhNK_W7UZkxtdgagPh#*$)y0R{BiYR=ye+YQghy1T6*6|?4- z*EeEO?FELcc`Dg<_K|;83LL>ABE^g_?>);LtgHi3I!(s`Fq_bUBT;)Pxn&=+ti|Va zJlgBg4lL7Ch}o19gd(t?q}lDeXTG(+sO+dt5q(okr0r1!*#gkSrW(5pFvo|^h<|1P zwlv;;QQXv%eYvJZJ3kPUPaqb<^IXA^hN3VS`eGh5u%Pc(N+5sxYp!+ZzD+PB^ye7Z z9bxT@vQ`rPE7dmc=;Np4ssIxUYB=G@>g80HU9w`MwTiSt77gy2m9gpzZT?PXmMz6y z>bC9C^!7bE?*Ogb$ayCo-=xU1J?G7Q9Nk>+IQKTVIyjBuDlFjpMyXyi1aKjMU{2T~ zx<46XMzz8B+OU7~DVU5vK!Ve8iOO0Cu)w9v$R~f{Gn3I7TKnzw_!i8vfdGIYP_4uE zj;+gphs5;B8DTAQ77$}h)S@&bC9{61&XpD?=}H3;8p$|Z)6y_Dn? z4=ZA7;l%vD6XpWfvc&a@x49H}(GU3(%?vPP;KP5Uir7Lb`O;rATkSd=*l!%K zAPL!gfq1!%3^}(nHf%>tulTEGEYpM*@vV_dTJ=_nXwD3(uFC1JoF!Z96dJ(gy{%oR znZFj2{@TyrJw(o1f;kt8e9JT^ArF!4PX>P@&bCR6#q4?0TCXnSMV8SqF&WPKR1I;`uuT`wOgd$LGETDgb!U(SBRQ>XVbY^zB(3G4iNVgoE z$0abro55Us*Sbu9=`LJ5ch?GQMXQD$g_+jsI)ryppYF}=>VD)=V$-z2i|Njf>>{fj|V5$iK99%o-)lJ3H!I+E&LZ;G)>Y`GZ>pI ze&f9Rq?-@d0d$aPo$~>OuK%cGZ)h!V*ZK9AFl@yeTpJJsCf(?(2L7i{D@ieVN&=@n z&)-@2txDC0y`yFH@v`8&DAWm8&qr4He%gPtq4#6X8-H?NWSU7bQ}O}AeEte(nys3! zWc32u`b86VBfZ9zcMA1JkkOeTyb+@o*`7;okZ7n4LXn&&*ISvsix?Fa88f@Jb= z^|N<6ZhRPb>F3f-2%9xDf!A%ra0GZB&^LFVAh3bD>mQ4cH|s9wVhEdN0`mSG_tp{2=H|>X9|6n`L)X$`IZM?7i7_&?CEzV3@|b>PhI-5xiUFY`@v+< zqG(Ivp3l4_Hx7Xw-TgtUV8@$--wcal&i;L8>_Ap#lFV|__7cLGqO8Sva_F)~s2<}) z=Q*Rx`CJvpW7&5IyZLpoea(28y<&geQ#+BJROtYZFj%k}ffF;owbNm)3y2EWSArYb z`X^NY3(XqzAxu_B_8`k3yri?EWkb1jfa$8uW{7GH2m-~v z4JEFX`SqJ_HKSFDP?B1oWyO~7u3n>~x+nu>0138=dD#6--nKNPRIE>!NY(x-Mh()E zuiq$*HW1X);5}PWPZa0XtH6I;G#KY)R`}sB&!u|TtPOniE4PwD#Ay;ua;WeKknd&z zpP<4G*82}`KkdKB3iT_j^jAJU)3JgD;|n-e-|kfRmZri8Ua9Bo!tU=qQk&kKQU(cq zu)x~1LWRWjfX!my!)OAqxav5@pl%7XZ&dZ-7TevFQDYao#=K25jx2v+ZhN>|=_?Q> z0#K`>>8MCdT!#%#({5g;$vF{4Jbtflv=U{WvTrnnS zeT?&zX1SVf<4JLQgM5EKx3;@sOM074BuZm@zpxO4grUMgLc8+@rul=eHI4Lbd`6{F z_t7|@nh}{M4p{kQ_N|#`*W8l${zR%{@RFtxyY88b2-G8>kJ*9uC<7x^{PoAmP+5|Jy zCV&Z$IRW&d>STwbJ^}}C;;#90m+Zux_(VVx0i?{vL#P5gmXRNYE9Qu(ppWtuN@g^M zOnw!Mf}`>gqD>%T*=%5O79EVyNv#L)-MA9Dt8sf997hb8W~Sd`UhnS$Lg&N1rZbm`}Y zwGZwIEz^#jwY76Yy!_@?Oq?v!50zUxY_IPgR@zEz<%`Hgv6?tl7IG0KFjFT0EI3IX zcyVs?xC|6qf{R=`mOAjWO2J+7^(bo6!o0$s1$n&N4Ro}Ol4hc-YNNo0PKAjUn;5ad ztyz8yUju(PE+Ebcs}Z@WmD4(OwcNj?iJk>wKG7WVDR=9t4JDr{SYZ;d2XcQZ=7rqb zmyxbHYCj*&d*PM&gm_t5>?Hg)_YiY#Qfj4mrX4{DV{iO?+kYSey&QJenO57a$p38w zi5;i-!GEM~0RE0TYU}DtEzwm_gqVu0+?@pk`~!{h)oik|9nnZJZe@rRG5Sg95+UOGSXT3X-PbH}_90Xu1y}9UPqTCdqe5jH!d$o~ zF&tRzKN_NJWTMobW*9LXw)Z;vG5Y$sPN|&_f@`G+qHxuB{>)V6?l(xTR953r?(ViF zpgDi{^DtyMOO;;xO@U#UOm{%Ir$AJYGVQCa_9rPB5JOPT#pwgy;#njV)U)DgARo@2 z@wzR@K5o6i^_)pqpEif_WN3?`e!c}IjoK|Bp-n$bV{HJG@2xXJp;nO@Ivq11nt zBg$~YM#Ymsla$Y{2V)*%_|o6Fj|po2S2EP7cvZ(*h_h%}ZMZZ8hNFm&_DF95*EEIofe7YM${1KvAS^?;%!I7j?f#3j4)3JoRBAxTjam$ zbSYO)ai2BQ%Owic*mdm6Y0Pag3i@-Xt-DoAn#wm zyEeD-B)(`1c$>Y)IIl}mS?i4%dQY)h`G27U_2J9M#H55+@4in+*Bf}@Fye)5&yCWI z=Timy5{o(dS2(9>sRQ!l_YAIPkn5doX4t6sV8%}$E#h;4G!t!y*J3GqQ&MJ;(UJm6 zN8r6{g=Sp)@u{W1?J$ zQ90tL6X^=JpR%a+fddKsa7?d~S=;K^@RK*+ zLAQjPbB>=wZ;K47{UeF#%lfqC=K;D#^~2Oo`3AY=bVKc`r^C>9Mf)J2y?1l>U{;1A zF^}e3YQF*KeS3eQ37kQ!Q4p%A_WZXz2~)BYcqe?*QnaO|pP@<}(|$#5%0S^N0PW6# zCpXdUB%BXVGShLza~-;_))uU#l;WtcMDv4lIY%5gtNjLnCBZ@@xR=t&5EW7WczG_v zB)IWaOofAZr=BiShk>$u5evonMu%%p4OM?((ckm5+eGY|0y0;lkX>M| zpCfIL4IM{ENkeCrAF+^>QWeW@B>DJ?zy%XCOkRf;$yGVG1#yc4J+3D#Qkp_7FJhRk z`d>9E_6*09z=T!oDbnhVEEY*)D28UdMcbB=qS`@b2$eVrEv&YmKl=8#0 zEiwMYTR(q63IyLS0qp}fCyWo%>>CpAlk-sCZ@a1O9}+fushEgMu1_2#$2i!*D)UI@ z8GQ@XdZGW$#_$u=?}(<|G_EmetJ%y*B5ACe9<*oAA5}xEZj|cBhp10piWn%k664<| zU?(OOo)Q|*UIJ_?)>^E_iw}-hP$crh(+ipOIfZ`=84bFG7H(PoWv#cLs%pQy3XDTf z($TyHQhA$83p9|35%N#-n2WBu+>yg5jPOhs+)8kqDGoFl*X0W~Ok@9e9blEW@`uL$ zKGYybW>EgGfOW|upC7Eb)tX{vqR@g(wl^TFl$NK3EVJ_1qlTLgO|&V0OfLva@b;{Z zV5ooH7WzkQ$T)~`VzGa^J0|F@1+TrXhtG~UmVfLAVIU3*KqzB+&& ziN2U$3~sv+Q@E215M5Zyd7Dy)_TYqUuzMRoHjOw+Ln4|Qw#<}#sd8h<{?sQKIQrm>P{oR{-8dyjUWYJTYAnW{Uq= z62Lx-&pt8W zw#p>vOUpxhzQ@E^c|c8GJCi%+?(d%$ngKX_p^o*c206^zwVptLS==OFD;lUQd$^oe z#HxggUt~6$^mGZ8dk;L^0C1#xdSic?-!-2)!jD44)62#@UjZH7<%pM||HsgISs=6|&V5805&2-{ac@{gp}b+q02&AM>%P)fLWYeQ8A-Jj*Ju{ zxywv{uOkGVV#6vyWW!P(cSfH7wt<5CWEQ&zVm4Io*yqf7c{K&)UsiGOe^X74m;V`Q zNS3NZ=R?eWTv*Fj9%Fy!01%M3*!dEPDZ3rpr;Z`v5x2_1V-WwxZHIBn1P0B90 z4z4eYehCwU>|cM%%MCUq{FnrMuIEKwRu0GA-u2>lZw3+<7Ux9kj?_eCf|)Cwm{O*T z?n?3R8M=s%Xr2qSWB?>{IPi6;+(oPWbYwaV$65!NucBd3?55nd(Lb2?H#aWlA|yxW z4zittih`KHSvt8Z6}Vy@NCyaBX+e+?MN!k{M<|&CNict1L~)qX6T>wOuUE_D)-Ow@ ztwq*Z2Q~(f3y{_i{;l${#v^_*lGwQ^!Ze`h+Xin`d8abX#dsN53 zn&~X~;LX7XdI>eFl8f(tUHqEdyQ?MkAbm-cK!_HAV>srpB7zS?5J=5n&Pp^f6Oo+7 zX94tmg?N9hAp7C9G_UPC9PhVDFuW_4|(U zx@RhMpt8o^TT1BvBrgI8)c=z6%tJvZkDKNp$dqZ!T75p(&Ch~h@RXIy^AS=zv&&j< z9Qn|MPo;sfOg;?a8$c--rK{2yny++P0%ddP3{QW>7{Lc%HI3-+7oYNZX226`0~rA( z1$)r8RKP5*~ z`R+g)Sn!Q-pYt}(r5D;QU{*crjBJ?=|`GMUL{m28A9GE-(`Zt zjCUsZu<$9fV~}A5D*>RuQv9W&k_5Qkud>ysXp?+MYg^KcjSs@^Fx$drJKMPa$I<{O z6$+20{XTd2{sM*FaXsw~8Yz3qkw0&4WF}u%$i{OYASN16(ffpGd5XJ2=Y!ebIEyrHhetFImONmgJN6Z6Qx8RjPo^1AJ*b$b?Wgh^@aHBdlkYhI1PE>{&0%+?K;Mzto9BNT7RR)c z!-oQ)3VfE8ybP+hpFoD z=i4q8=aS*^myXtcQ{V1@peI^0Gz3r)E9ioW9DadwB<4KI@={?6Sl)6S+`0gbDeMMv z(!+pRBED)yr^9iCWY03{%j7iAcVNF$FiL)~e+Q_sgT3q>zhftXp z*=epVPxfl8moYG!2vyQzY!l{5?M6rc6Q@t7m|E$tQKet87zj;>&xCAO9CKwqwN7D8 zhZbRrU<8(Av?Ntv`O>;#5V;A^?vne?PB{+(7tV}A#Oubvm_@BC`*nXn(f3TxG=;wI zKoVS_wPl*Hl&o~wbcvZnqH%m9$1gh}p|VIad=SWH>4VK;>4R;s>Cowp*>ooYvivvt z1r-WBw;(@|E4y!5FwE?2jU*S%io3Xc_cc+L-BsOvL{KfZwk{WI^^(EP2nw0nyysv< z@|RTiibOPLqE|q-pX7-LxF@<0y8Nh%ydcd`Orp?2S|Jhf;=N5e{EJ6hnGk z6JJ5S2g87q=R6mp&m}mWGt|E$lTgwi;oVal5BkABe@pVeGW+{7o@ayx3ChEi2)8Xe z5h3Ig7%(1j9UlVN-E2W7AG|aiNK~bl@DXXu;c5*ojDl9Nm*Ia;(Gc@hf&n5|tT}Ux zA!XO)Wp%cZ4`Oq5NpWu6&rJXh*UB3o8)t zhw0q$O|(ikWYZ< zH2J7W3|Z_Gn$n&lC1yfr0cF#6s~Le6x7zr@NtS;-Y1pk(P24nh!PgGz5j>0crF9rb z1r7Fp-KVSNm@DbxK3nd@7AR(3ASLZK%C{ctu=G*;A@YA=&p+4p??YxuieojphE(bu zs@=Mgl$6t<439%_*eBT5PsbE5?grXiHmwCu-J@|BU-}i7?!Aiuc-P7rB}dPp!}*IstD%( zY`#Z5IlcwhHU!U>7ifAT9*2KX+dDfeYF2XH2>E}U5GWIilirssLj)=eSMCZ}E0c^g zxK+ERM(t)`MeB{$xy8x;ylo{<&bS?pO2b(qdYe;1ElUTlN&hRI&A4Bxdj<|;m-H+i z9}m&sO^6znZn~wPPYntdfk0}n)TOmteT%08Y;Mp-T@xZ2X(fxjx zC6|9n@TJh}$%>FJw5@P3Y7>ScHZgECX<=1N942M_$fT|CmQU|d8cknU)sFmrrM~HJ zQkWfW+%v{sIz`m{-x1oMb^BDj5H=Gu@2mQ&zyGktAe~91#wY58jGGIDq3jXPbFI-u zdWfe%Iq>ka>QX=0JO4M+FFI&x<(mBdtYm+%JTHrWu6t=5tcpmqNK4A(W#zM3g_i@J zu>`mBDt83L>g;{bK4t<>G;dkpXt3BTJf>~Vyjv~Y zuI$!)W<`e|E+~o8y3qfu7+m)feuA%0E9Ey)iSCGK9$R6Y2LAuRf~xy@mfpmbO|Pe; z+are`>^H`Qh;bKR8`N#tufCqfOv`_=v9HV6{iUSZH^m2t0z#dD!u0V!NU$<$4BdW_ z!;CN#tPudMpTS|c)eJret?nl4G+Na&a5R1ve>9O1+dmr#J(o(+2 zl`yAlCBGeG6Q5fntx4rk&kKooK}Q#? zzKA2Uv+#+x;VvM53d`K9rx^Gl)_jGsqNx-}D+|;lGEtbL0#LcA-bQ}$=u7hkD@QB@ znuef=5)m0oYIzC&gW7XatG1{z#kTz_s+=mcQcvWPu@~_9Qyxd#Y({_03Z()ZaT9(` zG$W29U}qyJ#e011XxHK{5hgZkVI0idWeNC<&4aMXw}d|ig5;NRJ}~Mbk*WsFLE&)v zU6wwEA)=f67jiyVn;kOp;W~TJ7s>r}-hIgdOD_o;i_mUbw|wzk+4@FkdT-ah!A@CEkH8Qu8*A%q!IHZ}{t?fRGY2Y;2{mL^Yfik1CK< zDs-`9TDL=LU+Vn;U8G0A#w$KvXRUhVtm?x38Xahsd0KyXAsio~E!xz)&01A+ z%vyDDZ!|Rk^QV%i$V-ixdXfVU4|wEN|5HraHHkxLarXf=5z_uuQoIMn=cnH%_JFKu zMj%Uc!2H=S`tA|`!1VCC_E@+^4pq8{DQB;nq=mXF9+6< zQQhzVr#!G+W_EuQWInwW_*5j%H2T(HGW$4?TPpBRK8;-Rprpd+{OGBBcBY9crV%4R zU1sVChvnS181eYP;jiZ) zbv!OFs3a-Nb%$T?t%Q!scr**B%7~CGp7xp1q%OnDVohNGi#C**xxCK`GH%u#MMp0i7J{A!rN<_qdkeVL4o^=bXHH3eru{?o|(bWpkbc9CHxPJXOSw~CU%2OWDr zpkdU7h55Dv#pR{*Ol3V#G?hN&OYLuo$}F1ylT_9kruDmaj!nZF%fCT|pt)sZ zl3jaM7H4gL0J!oBw7X6$K@ZZY$b}QIl%0P%VJ*hD9F`nxG6CHj`aUNTjg?TF+R|2y zLLlp?iOnVePR{arE;3K#AH?22j?T)1Ya^T^%5!cxx=BY6gG{gUktV}$o??)|_1}?~vP*|5k_U z+6zW+Io%i?e@;M#1O(H%R?s`cPUJ;+^~tTm_C1MV9A70`S;2&y!&#b6&?N76Q|O6K zQSgf>+Sz(+TB(3Xp+S*Qeh(P{vKqinY|%Q^v)s1-Bs&*Fm3_IFA9tDf*aP;D()|}X z#W4dd#Wc98teokjFxeJBuc?2hD7giYARCQ}Z4@wHXe&0yf#9NW$g--hi?n3Qgq4j0 zrWgdn9)|6ir(wbNOy}FH(7N!o=H37k$*R1Y_C2zAP;&>-N`igY48OHJ$41gb)!`x5 zDW9=y;j$Em-nPbD(=U?t9X7p5bt!naLoY6+9(OeF+M1)pEM;VuG4+4!hm>I}HkfKV zRq*|o(0kEXVT9Fk$%U#nt{M9e1cMSEUPEV4Tj}e5yJkE4=L>(b0(&pFZyRh}9OsRaM zhw$hp5sJLx^&6aBH3WZIgz~u~OL_^?x0Mi|jmwu!rrGl$H<-3dFqQ+x!n8evvKrLjN(Q zk*R+aB(ylpH_U%?ee5E*ep(zAefaCQ0XiYmYaB(XA?%;Mi=6@JBv(s3t6{8GYWTS3f z4gvMt82F_~Y~~WJY(??NaDt}cl3(U`oq3}I4GY4gu9_hn53iMj6Qma4`m|IUZpf@u zz}9hLDUg3V8|yK4?e@JoJeN(UUADg;>DSMOv;|Z{9DLP=*XA@6dO8xjuvq*zk;{fE-SEgqw0fZ0ta&VB=tPFii`b%o-~c6!|v8BUU$5t2t7#f+f& zgih}>Fuym#BrUB`nkKlk3!({5X3LI|^TmHqADd&Z%bcCc&e=Ls0f_YP9((%z9kJ#C zYW}Dz8IB|T@dHD$I;^6<_Z0NC(7`VG(BTRBx}L$b{|u73nBF7d6XI<^F1x{-m3l6T z2&^qG?l2RAsSm{Wd7?7m6gulUF7A3D9i2p1tSs6qTUphp@R`2WL4jQLmf_#gW8Qzb zUMGyLg@zgcb}5rZm5~B?do#MHni;VLjPV)5u|e0*Xt$aFv_`dAuZZ(uHF{wCKps@d zG6`dH#FAI;uyq;%6sI3JGF0_VNmp?c$hi)^tA$mZv_%BJ#_!V6G$ z-Lo%*9eigV>zGNaBaov6_A_v=3CT=S$BDie@<6tj^?^;&0I^mH^v{VD94y{dl;-b$A# zWk0qHgH}X;o^C4LOv_MilQW34@`%Yvn~SQ2QoXk?T&BKgsc?6+!W@x?NRGy5w^W2= z9IelQef2kf>89`rjbZUqPgSk1Bj4$f%R+`&=%kctUE|FqqN5O{=D00*0bQ~xNHv7gG7SbFfX8|y1b`Ev`OHzf=(jn2go6-M>Ix zKj68H)YUOEG^4Yg4X<3WEUmpk?R)2b>j2(%3c2$ss@Vs8vp?qq;;Mlr%dA&L&3Xw) zlS3WS#MPr-z52OJF4(;1&%>BFg7SVVQ3T`n#`iC*Cr-DDsAJuK3Q)tW-=oOO@nxRt z&|HO(-APDF96cGm0%P*lYECF#Ybv<25cVXGCaI`>QxaYQ3%cES#Ac zcFcNXp?}BZz>=UQ=A^~GQ>s&+DWmh@|aus?{>)t8pA#zdbI$GY7#q&9cyTz z{UIc5q>_X@VHz@jk?CbgQ-qM5Vt3;wMJV#BYbhMlA`Qdy+h0R$aJ{526U+jEqLzdw z@CXYD_hKRd&%J3LXe?(Th4*g+ih3M-z~=~uWzI5>+Qd(5egpHrk|Vs3;W*^9AaV;D zI2QF1yFS{#CXdvoaOo&rX>ZG*+xet?xe1JNkT=VBz5eitPg{7$HsKp7u`Ocvh3v|LfKibo0TGmSIPa%&g z$zngWeU(|$BGSMsKW{53F@HueQ__?U+bx`#wxa{Y2vULA2@q z?QVX_Sj!}TFlB$hRzX~IHAVV$&JK=E#-daux5n1styd0+*foiQ9`G-}@G^^B+GZ#L zP3ZW#AR}vS- z4eTuhLqgwej|aA+LLV(5*^2J@M0Zn#ui#BY-1N69GkPgPh#~W6$39b0Pr&&}G!R8I zblXtdx|$<+=Qo+wAL<8d&YjI_7YW79lHK3T@?Y#kNkYOX^|c+|>=REPvSm>Hx}dzamsW43`@@FEvhoW(uqAt~coRoyxT`mKNx#%W*_JHM zXyu_lo2kS`#r!pUUazt#^TzBMYxRij^|IH0!#?y6^I$j=BKp9|bXSf|)EL7`!cv{Tr8YID&~jTJjnD$vtviwXzN)dtvYrtvhR*S@6n0 z+;8$Un?FNa`Y8gOFec)QAZMWybQu>azx)#{!fK5)5jV@dl(OhC!oKoBOAv}$T`p;V zb(r{^7Zk#VmEqqYTkemfJGn-2)9Ak=3)>s}Bq$=P1;=E;q(YR|9f%5;xVg&Fw(C0W z_)`o}FQT1jsK@XIE2am(u*EW_?fr~O94zy?c_%YOr-0rwMiz4M zMpf0;A$EA|k1#Q@f>{X6{&YxSc(+l19ecE0)P9Y_*owjLwQNqONcD{SXx8qh{PAR2 zRSN@46r=_K9h^V%D~LgNznY8T1gTa8OfPZ3l!5mmtAIvGKrk(z8s{FtR0f|4zrgN8 z9#XlyXuBJU4z{lEux%eEz znuX^bxLB{qkn!kUCS}#Vd_wZwFA1P#8xQ!RQ|EnJ2bwUK1*4|^>ldfbO3&`;Vl`U- zkD@y%8Kkxn%qzM1(mm`xz`$p+Li8p3og?J+0Y;HZ9O-si71knSUH2}io&S{v!J9H_ zo3U2`{Ewj+Tsk!BoaAJF_e5iV`?tZvh&)H>XkdzC!bE5%exyWD)x-+1kzS8~EclQn zsZ0k_jQG#@<758wyH}~2Ndv_DcZ}3B69LT1C1@#dCj6^-{VS|BDpAk>+@&@pDPK+< zGXTjf9Ebaukw$tWXz)zXERAR`U8_1W_*2o?MD~)UO?5eGyGo3Mxzg`{`S&aoWDNLk zdObPlB3&i}({ih~)i?5qeS%F30A+w`5MAr}oZDv94M{dpaS6*cv)0y6TM1b6$&cpE z$}-C3J#7hW71bU3!15_`b*^76Bf=e?juvew^->W)lGLm-3j;^+Yi+r{2Ip;z&?=0c zxEWuM@V%3=LlvPu+GL%7enSUNDe^VBF^deO*#Iiib)to600hbzCBv(_?1=k@GL|Lp ze;`rGaZ{U1Afaz>cbL0+eA#ktQ0)8t$F>{|D&<)-#rIMV_w6^5%bEJ_Z>XD|?ScbjTqI&Y6%10-OS)icT9oM3YVrN+M^oh7wZ_!Y_;3ErUO8=(w&G__xeTC7X5y`2uNM=Z5H3P4|N#rj=of^;cgCQR=QpHd#ko(0W(?yKe zz%#8qs<`Jj>prDbb`Zx^YU`va9P-0*0q&L+`3M&d%KjlFZV^5ENv05X{;#>-e!R&tt@+e*#t48aF9ijC{-M9_g5Dr%*ynlGS=wtll!Dr5qvDR z_@ae>1Eq5r^X0*y#-)GYykry_6Y@_p4=eWzilK)8VtG~V(_q2j(2sH$wu>ZRxF8uF z?77oxCZc6&^W2FEiNi|W^#%>G>guktI>sD@MUK}0wB3!1RAOs2TLb1ix8rCBPjKez_Q|18cklPP;-kW=*L`hn09pqq=tM1<6T z^kGYyRQ}^={sc~4uh6kIe3w9jsmWu7wsd+*Gz6J$adh)#wQhf{kqD74r)x=}ajZ*) zT1%8ZsvU+EBnz$!G9sXqVPh6h8O^W2FWWmeQJ5>f5$&UqY%k-0042ol-gkagIOPSE zzZz%*J7kX}W^!2`BFbC7{*a$`s8Ni6ir0ZH42;Oeq0JaHj#of)bK2zbtR0!Czoh>> zSGvoX?XZKflttq|m^N94Z{gE9=4tz>Ko)3t%KPg=p@$+jd|xCDq~6-LXdrOq8nU|i zeeK7LG#p(E8A3OlVP3}$zW(B`RI$9WfJ-4{-;9JRh)zc(x{BbXY6<=oOXbpks<5Un z9*mionnN>3%Gn~(o(jBe2-xrj<{2N0sfiz)%L9-v18($e0D?=D>LL|=;x|tcO`PWl zvo2;MUmSwX`WsYcdUK|PqJArajPxcZq{x#a-h@1l;ha#Eu0>K8AuQvzPgM?y#}=3r z7L|;;+yYfHcB4lInwT2eA4G_MmpxG;W!e`EUpm5rN!m|&pD3iqmqGuETu(HzhsY;A z-eW83eH-G;O284+P7=h0iBro-dSOn1c`a*VXra4+Q4EB21gI#6*~Q*G!`I308s!G> z*4<{ygVmSP8&3dK3f-kBFz)Tid9aov8fr;O-sCtUX3Q%Mm?}UES)C=O){_js<_7|0O|R{0b;9&!M2yEfc6* zOv|i0q?g<<#KZX~;)kjXML~VFybdRzi&p5$)01w~qLjGn@c5sW+T6==3(p_PIDDiY z6!b`^K%2#T%qH-g8QFDz#UJd1P{*0Il8wyj55VE~#}rmmcmSR=@vX`q8r_UNkyM}3 z)fpPmr@^gthl;ghj+9IK`a`~iUxw>zu5&n<)lCF&s|~x1omGlw--69F{ju6(b{cwv}631 z9{38Jh-;5)cK-$WvEW|8$k<6B3p4kof3ad0-b&cAy=GDa7ifB@3tS`XZ7iqr(h+z7 zkhp0+GwIg0P4@xE0BTRH4uc=4c7T6Gp|T9#e1Eql96U;j*;8PLj`W2P6jqy$&S4~B zE=Puu%^GNb9Knz*QYx1sZZ1xeyhoG}t_(IE(i-lZoDw6cy|%GxV2Put(%8f&jk@Ao z245(sqzRWmUv(4om4@=2+~&+o6LPt7@oP5WOyE@oW%k1z@473P1mdKO7STb}pp=pkSAN_(~T3$erT+(KLBARG99LtR=q8gSBbq;-z0!u%IwGgX>g zN0jx=F@8Kh;x&Xk5+q4fjmg9BiVWhOW7fIZ@~XdA$|YZTH{DGh`3!3QDz3(8zH5x1 z7qgz!$D(qKj*PnR@BRkW?nUo0%?8hf`nl1Nhrs`I4B=i>UJ$9I&18~9{g>K%t%4qE$B`Wtgre;2bmGs;hJvQt%7UQ-H8ZFy zbY5&pk-jYzc-$ZgQIZ%Mp3O#aRWJhieeI`zT`_Z@OUT^ItaO)C0Qw&X4*k~Ha}ETq z6iDAAEC5pWzlyVUF$D^ZGPCYPnJ?_gs(LxoebvhiA6!W6aQ%U%YlUQVu1L4ahA8S7bp6Ao^ccwhs$(nc zGJAZCka%9beQ|SE#%}k5S3wMr;Ken6n|+XS;%T%iYJ?_M()MpG1m&6WkQUF(w{s7d z)BbQB*$J!tMKPE#U%CphU*nuOiHI#S5CUzJFJGZ#r>7P$phv`D*yZzW<7ogz^i z_XeP09%9Zia)dVU&WB0`I8}LrYfDEQ8FD!)glw3xHD$zBdYy)bv~ib1o~<10YlE3Q@gp7R+Awj`5(A$WWa*~yfbXo4gNP6)dmM>QD700R(lnzLQ$FMOtN z?l3cz%Ou~J#b=5BRO7sbbjxZyM&;3%MKJG4cxzmYsOSIOzEY=JS;Tq>{^m3ls>fJpFv`<`LB&BZo@ zpdgXU>$0<_EO|YA_PL=%98jnc9W5xs`gV5p2F-JN{X+_<03(v}TwrXowg3k33fDn8 zMvXtR_dNjQTpp&9Iw>oVLdF08i_oB3`isJfC9TApdH~fI1>aV4{})yC05dixqy`}* zGx85p*7<`Io{-!;hT(F5QryC8B|o)NLq_vQY*LfVez$#dF=ox-9c@Si1xX1_2hQlu z(Q@4w8HWIP=?C1cYm9KfQV}eG?HegS@MR&+$t`Ao3@763JLV?P!K%Sz6j0{aG*u(E zs_m359!B=LJcmAmX$51l$c{vP1P2WxxS`}L_C3KFK!Lwxa1LyLt)2sU2(|;sOQDOb zz-F$1&M|2?>q6y>@I15x&SYjvK(ly~On25Jcg|#qj!>kSOYfYXf90R@Qfjvu!RAkv zAJ6c|pO*5{LsLyqO`P@)?B6zL^y&P+ZQE5xYyTrGbW1pwh7J52!g1JQda>Rs;ijb8 ziUkA1Hm^E4c;bA2Jka}7n=WvOFhLPDCjkF0-A#! zEB4Dp?JM4L2HByT^Gk_p+Ru#r?%plL2N0y;{Z1GLvYf0~Dd=y+OoWZ;%lJ00D*jgp zt>WHy5Hx|+_{qSs@Hh~CKX1pnv3+!-cATPzQ+qTu>GDv2(pJU0A<;JM?!_Y90K(^* zSL-peT3L3v9r_rT##g88n;(y0M~Zs17AUPebF?s_m_up+hiq1P+)Q&7)Ng?wdQBS` zrv%Dl&$B3-a{z$#&o8NXAf*}aQk9JCVXA567y-ZP5H}yCHCwgc&l5}ykmO7l_MN^3 z&+zdFuzU7@aLvK8n7zFHXC8(!&Md~EFB6Ypjn4vAnW|+4g|h$Wl;wqo?a=x=X&VP9 z*7Q-@6|godTDr_N8XXg&aW0qbU{(td==HAyY$F|}&3xT)hz&4287PtKrMF~i1^GHc zcAW^i2X!MKQ^sP%&rdwNFj?9Fu@8XJmN<$$2^39#w3My1On`hWdgvvqqu#1vXHHo5 zL0QW5{MD0|3Q4;>YH_Ep&qoDSPyryb;n>4zKD!Dtt5&U+vJSS5d+559>}iNmKRPSs zi6+)J<=v=o9kMY{Vt3@tbSuX?S|+|S10c=JGp<#Q>RxR@-_h}dX)pGT?P8`~?i@{% zgg!2RaT3+r8H8A8i>dgTwKIBqG%pSWEWX+C$YJ8C&`2T4kx5FcUdq@)uC@4YanZcu z;fQdbbG0|8)E{;XArC@>hxVWyg;nXZZOShD5wFr9oEv3&#pA@Y(Z(1ShCcyf-+k7k z<*_Sr4Qtc&ymSnE&(#p2hQj+$pp6+Tn|6VJS@F!xX%H5EEBm&+>p2k)SJSRU5`dbm zi^2s-q*F!SSbeUe11p3&2e>fBk+Op4K{sM=O+JU`ZhE`aAcLc2lk0F+mS3x!8Ne=K zAWa|;8anmt$X^Ay3-jgoPC!jZ*V!`N5gOd?c?Fb~8E=H}0Mx!bT+%KmULAFS`;XFp ze-CU*+da(@V>OX!6tvdP-RCUO4##2e80?aE@IpVE20;C6bVzX1zsndi4vgCk8l>9i zGUXx0e)=GZPqSvE>#|}zj!QBC+pr_SUC-gqc_qnNpdIiRM<^j98qn;+DKDIBU`~9_ zHTKa)iv1gly<$d+$c2ib$}M;wrRgw#(DiAx2Dp6Ejw+Qn4&NN|P#28(fg<{^yZ!M&$2xM@S%h$eaC3W|0NtH`S#!g- zuQcO)$Z>PGs4uS4sI2{ziq<$vAjd)Hq&Fh(A@Nh{!0;O#Z zDdu_qp#?PTW?g7G!qxt!!|b|qGrM8p7uZn#&Xz+k5H$lF!YUTzJL`3S;%}~JfL#=b z4LNm6u^sDF0V!ue(YK#vt2URftt}XRH+_*T`MO937pXZfJ8{IBhaedkzcK+s(rck1 zx+Lo3Mx^RPJW`ZhOoWz5zYa5hHaNs1Ir>MES+Ez22Uo@qFN40g~$Xi zkn;j4687giJY2_5jcbvAR(Z^JvO6)X3gAfFjJ177>fwEXU`Bu$PGr7=U|If-{L34@ zA)CvF%W2|`+O7g5jSg;+yK}52cNpp7D+lSxz2Z7LLp_JTBvn{T{9p`YAk316d;oaS zxh18lLBjb^YzqLBN|ynu$M7rKxgs5)c!0v-=~YN`3(9ligWsBeWXut!3Z4mm9Mj93-vh2bMqZg15Nl&8hxhgH%v;ivcCHw+Bz=PSVVL z@I>0&z_M6`inlcrT%FwgR5Tu#d`s2MB&Z>ii5*|Ftb~uignWM2>R}rv_JZE$NuH&g zCwfztGiu{gF~PEby>@@Xr7gpgIOY8;3j@~Q$;y!b-b$&kBrMSamb)XL5)+`7yFBV+ zOrAt}5f2R?yUvAzPC!!|d8&tdxq4N)=kGc;4rjl24eHKYd6I{ zNsq0Z7j3A2!uAT^UpAiCMuWAdX;Txx@sk={g#!@H??n+DhmrMr!PAqzLW?#{UM-_0M zQ+_Ca*NsXaKD4xR%&5^#_K78T>afEZ&C@=SftA8U^x@V^D0mOu=#(}!hk-yg5%`k8 ziAP`AAboCl;@S&8o_LOrftfPsr^2ASV$m+S7tuqyj0ktFYeLU8*&}*gOu@$rn%A(8 zOg*V|hOY-*`;eRIGW_1O2?d}U#f89K|THa;oTkbO`t@{ezVD%S|J+6OaYazJY z(|qiBu^?2jQ1%hy#0*z$v-^i-5`Kr%d@&PgAG@W;Vt0=QORx?HODGZ!Y^A;7D4MQ+ zQOw?K`s#mY5%(d>e3x4Z;UV+>-6svJm|EQ$JuOTDX769$?y+@jglydbucOj4IG?#O z3*G{D?FYT_ppM;OR!vbwCT6{dtYtsc7Xqxm^NBq9tNSe{!RDL1**Je zFR1N3;=UQw^4+YiRgCe~{Oou4*wpOCpR<~Ugo+d4T|1`~gYl{2%XC)W4!n5Z@t?zh zgP1l@=L8`#rQg6^QqH(;2lQ8q3MyMvBZ))3qm<4Qz3M~1ip?=D=IZ0Xr($J)0*~$! zGP{>Ij18XT(1fGXR2HH9lz&GOvQ)+3MJ%M(?NwY41qk+|@hJCPe3&$c3YTSh@z_-~ zz)@r2DLdoNlaRHXXbZAgmwIg5;qsLH;5+A1qdh|9(6*3h(zi*JA=>iW1q>gcvH?_% zXl2DK)Wp%ZKzmrk*z4@pDp3J{Yd$z;WIJD@=Rr>m7J8w6l(kb@wCY=4<~7i&nTrAO z67=lv92;c--tPaABV3(o6#H09c|M&xBrjI-(_IcgiP!aTqRS|J4x_pb0A7<3%|RvH;DG6VFZMK#t!p-01;XK zyJ%Is7J-yZecYYhGJ);@fqG7FV!OY{_#{6mB#T!vuh3#F%-yotl5Xt{)~U% zFp>y+h^~TKws1iFSfgJNtTWp zY<|jAcom9mXB7~Z0_=d5gHlNfCg^WM9ystz;$%duQxkX}j(#kL@gAQoNW&%aK+5)GK(??n{0>YJYFL2%S zbwS#zNBzq0=kC8RBqu4#!8uhsiP=2ayFKwluRxShPLD>?(&17lLfda7+Nx zo=8IftFVqN#R6#LotoaxK;LR6JdX-Pg}&kyM?=BT^+M}^^gUDmxp0?&A}>r};0>f~ z=024C>U~-oFZhfEbPmKd@U--4gHQ5x_yp$mt;|X zpAXmV2T?v<7`Z6ec!)-x%bQI)-t|VkM%jU_E5_IZS}@2OAvvf4WA(-xws$gljYJcgL(uFbGU?nL~`Mk9T+U?JNVcky?V z1B!d-mj8|woYc&^;F3g`dBOw?XCA-UqomeWO6q~RLtgy72seA^`*Q^E%dfd4(%f@b-xZ{>y^M})5R*z8P$4^N{4HUowh_wT*5sF>GA z>*uz<@^pSpMh>%Dc}9`v(bAkv18^h_E?fArm-}i5t_N8TWk=7IrYS#0z%;0U4(OvV zc{`7PNwSGU;kocR{8F@^Eh?5oe+9<4TLe6NhW%Kfi*-_qD8-A-uFWQ4wP*x};Gz~Q zz((wG{}tlEOfnl^14VvqNN+|3_9n(0>Q9P%wgM$v#)!K-aT@poj4QXNIb?dyrpCQz ziFFYLY4WO#kjiYHjQFkp_zcVA1}Q~7-j0NSM!=nY>HDHh$N4fCmU1*1?L;0rRm&(@ zYcwoS==3Nl~mA?zT$c3oH_#T+d1;`NriB$jbs;QUE3w!=$) z$raW!%jjZK-1~o%i`qIfH-yy4HDKI-d!$W(xbdw^Nf$yL(d}j~htNi+KuN!4Z||wl zK$vDmPX&}L%NE)rog^ng6ws>@;o^0{lQnUI#y8cvij*=f-$=w<8rV=4LsjSNZ7CH%MWt8>-JyFA#e!l# z#!vI254ti*grQf{3S{=b{cpAi_PK6NPQS%hm(qZQ0#NK58Z645l&tzdH6)<2BERvQ z{o}tl-M%b2$p+x0Sr7AVw`1Oa;|TEH5KXMHsQgdK_KLcolC9lQqtp^i#3`**%Cm6tXh^nFd=MuEKzPlR*X{)xopw5p#KB zop%Ij7%HzRc;0jrPR^Zoq!0XL8Jvw!(mbA!+gRv_0l`(EgqY5hg-9uX2kVAMO?fp& zMbeYU4t%lt)~eaGncLAUfin22Dh|Wbz3q!tMO((M zz4NIKP*>U^Hx;(rY<1v&Jz@G5P6=DM&L$NYpPs$3Tuh6=xz`{r^G)G<>cyzouwvz) z<9z|T)|Cr~oJ`TdJ?-CfYabJ1gB8Abb+S)WMFB$;?xlvK5L9MR0g21rfpqd)w*LLG zloGGB6DE8pTgRj9s!)DKC`dQp=UUGqNRD0t&!H|Ds#CT0;!zNP918^^KLUu&+L4&= zZ?ynD&}yA|RFw^WXbSD9t4=RYB(F>%3_BG;T|V9R$Dl1G+DGY`DR#z!=@BRYIuDoa z8MgL)NMrvEvq5$i8ECpW!mH(LGW-*tl<3zeBOQg7;79aoW63rU5#rm1QBa?a#wX=Q z+i~3$xzd0G_l${u;`4aDh2uvWl>O{cz-tB4^}H3*11`5>!XEuEs-BG50cB51*ry|q z`AAZoSHF*YDq=EF$viJqE5btgdO>obHJJc=9t@!B^=S!#C7N`(s%c0L-suOvNW`N6 z-A$af2j2qW&apwGmf{*Yb))_zC-(o$s~zY1gUpD9lEVIN@)o|Kb4(yH<)Ee=u( zG=1DpXK5W^%atT^;FN|=#pcJko4Rg$0!$8}6`O7iOYJ4+r`Bs!LPidc~QUoQYMSR2%e)&0U`*a~j25OX^V_EQQW=*jhN(^&ZP5 zY9Rkm)3ofDi!nPJe`FT1kFr7jO=(ER=k>FZWErTfG#u?+AFtybTf{iU07CU<`PUuL-@>S9M+g#S|vKX z1J3$?wRcwGK1xQSrjtf&PjvPSQUiAdI^nqy>0yYo7wTQ>A{p3Dh{l(_tVXr1$O0qJ zOve-A?kf-zCrG40j^~zz1ttsCZ41-xkW&*A6|C(C&FCUSc7`$V4MJcruE7b8ve)?p zm@ehXF{)roCH?^$ZV$@2MOxW`Io>6*w`iw-nqK}n4(u-eHW2*h?4gr&5sjsXpN`_t zJi?YAaqE?U7@^)ptc$%^zDExCo?wE%rZFRz3pD9=1fR-e$1Ft|>02E~w^S7zI7jfZ z_H+u>NH0&9o`ENyd@r$6u?e1Url313W>PEEUOWe-n|mJ7F`NeV)P6qz;*aZ$|2emR zaz{y;Q1orrl6dnba7ePD_(ql$)m!479 zwT7PP0FUQQkzxYLc~k6?jba=XoPZgkg%YS#hI4(4^aM1g@J>1_fvAF|nvV@pn7+Df za~d?JwDBzZPb3u>WN7RNz!0f0<Zp-DBllvn8l1ot zphI49(FiC6?MR~r#5MQpY}CA|a$9ee5x1zvF9ZY7_mgnkfepNvbc%I3#5EVF2{-}>=SCXyJoPL!}_T@(3qCC4pDJUV@#CPC%o{M%0IL9xJv}0*QlOCPq zJt*WRr|-^LP?oO8gV4R~XErTHy^vT^bQtOGZ{_0>zUi47+DxeCb=nyoP4-K-qMrb^ zU!A2m?bbic`{<5pdiD5!FQIxsjwxNieSs|trl5PRN)SumA4FVxs0EDJJ|oOV>```f z7_b-t{K8^vq}sSfwHpj2KZH>j$+6FGK89U(Db8Z-yE$T8jj|&Zk*Jko6M%EXHkR!I z0}jxUoBuJRGq4(AMx>1Dc?l$}x_ILzG)mioi;LU%k1FAvD74a7YaO zrjw#9lWex5@6iN{Ek@B<;xT`313(9VLUzlZlY7Dn0DeH}d8r*ncIqQBNwaYhX_jcY zV@4gZmlyARfyG6XCo@aF3n45hHNvGeRH~0lHp{^C^t|oj$x%j?fh`}6JRuvcbF*uR z(>%^326n;^?n7O_9!VIx6UWyXFr8cs_S-Wum=JqCu=bppKX4_&-Sov~6)!8bjuW$3 zK+B=Oz{)m@kn+gfBMA+S+DB1+Ib38(q`44Bhj&_Wy!~f?!T1aHI|hj8VrGYJD!n;S zvj>w$FxD-I{mPbn!4@J7%mnaT50+}{seW}~SA-Jx&&F{ux12^vH2u#yeJF!AcXRJ@ zeiWfb;_a!Z_hdeWz?^&Fkpw##j+(~;@1i^e?({sH?%Y@POH<;u0?Yyf6;$VdF-ZF< z=}hffF6VxKbD^)do+^PDP-|(?*5*804Vv1WCgd{PZ-<~FVVDRcE+y0_HL?Xqj86B= zRDq`cZTpi_c(gNXtiptVy8aChZ&Dc=Sl3?8u`d(HiqUuP_2yh;CgYB5BaS7hKDSZs zIlfG;EpJ`%ty8jY8$dAftdm^q-I!rWji86as#rgN@Ejl@H!M!ykqW6>3>+U#n~37& z%+76L+3^&bL~;vuVrg|zEpz2xoizKFqZ-UbQU3(lsKrFek0v#f2_Zy*hCLwGKy#!9 z+WzuU*L_ItAFfKb*qt(x;~C;gZrc5Lopj{+l9n+AqmPGOuktf%GnItXr-tor+k(&> zNby^LvCD0fA4r)~nG$0=q)QqBR^}B^NP_Q2hd9u21#M|8oseJ4;lKi2c51v2?oDO| zJbz$61^N`mHdo#?!F;icOOZrNe7AUa{=;Qc@%(UnQngtXU0xnFbs$`Vv>QI&{WXgQBZ)L)_T~QW-Ei=Uq5dmvI*svSDp% zr!m509c2ah)X@W?Gbvw|yh5pxg)ur8+u0_Pd|x%4t;^t!Y>isBP;IqN-wo+XlqhC@ z8w<+({B)zpB0eX|+~?Om2v`unI0&Yh5=_gE`Sp;go^2ni7B5A%m(~;cZ2FrK$F!Wr zPSaT4H4^|Y{*gMg#xC@egTEaUpDM(WH%{AIsvz_9Hcibg4vjr>I|cD(=rFT!LupdY zvq^V`C4odCa#9xMTtZ(xyo_lK~qGF=(1AV>Jm_ebGZ7 z*jes+Vc)0vI$lLsX8}0&wa4Trtm`DF_9fPk$|ypbu_P=0ik9mxZjEG=$oS9AqDq<# zvV;4`#2TG6tz$CL0Z|nF=eLo(!biqcP;Ux!JW}9@kTKdkf7OH=Tk!*bfsEs&a9<@QB}x+PFbE}glgN*@++`%APHMS?)#1SIv*XY-oD;cIYk|to9KYu6&bUCJ-~cRr zW((FS+n+G#V)neaDilZ!gdw74wn}-1-?&z5{m{nVfP4wk@05;kHTCIfGme-Zo4E&* zK$q$vH;)ti6s1#YYW0nO+_WmaJ!}xdBIFM&s{ihauB76c6V2#LsU6_bZSY_G9iiO&u zR@;RF!nap<6SZp#mg!VM%O+ywoQuFOJDP@Ax>#Oc(>uX|d`6Z8^EHhZ`A*OA(oA0j z;?9+lyJW4PGDh3aj!#6`l?n1k@vAQw$K4h02888EMl<>%QcPf@jG0FiFOB+9h;me`rJDCZM1e?AdW{2w zLmCT`7nzR`-=l#iel(%=CT74vFTH%b5r$aX!8dnoIUhw^dV z%uU>AE@+$*s-QtVYj|Zy>OS_)oNDab;+K8)o~!+7?OgJ7Rz3ZQQ=a<>HZk*S)uw|E_h0l940<6bAY zqJ`@=KiavwU{R)YfWzQqsQc2553&Oj=ROTBRKYdy_<>(R>*q%B!!-bGaUY?uDPEg2 zL{uF!GU~7A%(_jLdb*{F$OIPYK^7u1kcAT#xQdZ~ixh3O6Pux$J#S}CH;t$@v0WOZ zUy>#JCS3*aIZA*25$R0;@`uN~UhZ*`tM*H1m<>*fn6iC8>HM~*-54D;2jeXJ;&5bguT zD?9^kU?^;!JQ2Lj^_u;B*X@m#U`hqM7zn{6E^hxQo1=8O=d`42Q2rJHYH4fx$<`G+mK-ym~A#fXPrX0Jpm{{sdG$$W@^GP&|ILevULds8$-sYTs;bCv!`G zTzDXPbiZ_)#$I^puFSTkPzi}nYW~G6G#F=i_DisWixiOJv)2u(yL{K8h#_$kBd^D$ zh~^Nf>9nvU@SUh`r@*TKpu;>h>?EQ)j;vEC3t_heG-=ORVh})D2VPR%V26!q3bj2Q z3vHmUC4M_09i(Px3KZ^@dOzw-#!P%WPHsp)ATD+=sEGqt

^y)Uk1d|13l8)P6O%swSxU{10F9 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�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 DfKA8W diff --git a/data-raw/gpt_training_text_v2.1.1.9144.txt b/data-raw/gpt_training_text_v2.1.1.9146.txt similarity index 99% rename from data-raw/gpt_training_text_v2.1.1.9144.txt rename to data-raw/gpt_training_text_v2.1.1.9146.txt index d972d27e1..f7f677173 100644 --- a/data-raw/gpt_training_text_v2.1.1.9144.txt +++ b/data-raw/gpt_training_text_v2.1.1.9146.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.9144. Remember this whenever someone asks which AMR package version you’re at. +First and foremost, you are trained on version 2.1.1.9146. 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. ---------------------------------------------------------------------------------------------------- @@ -334,9 +334,12 @@ export(rifamycins) export(right_join_microorganisms) export(scale_color_mic) export(scale_colour_mic) +export(scale_colour_sir) export(scale_fill_mic) +export(scale_fill_sir) export(scale_sir_colours) export(scale_x_mic) +export(scale_x_sir) export(scale_y_mic) export(scale_y_percent) export(semi_join_microorganisms) @@ -5561,7 +5564,7 @@ if (require("ggplot2") && require("dplyr")) { ggplot(df) + geom_sir() + scale_y_percent() + - scale_sir_colours() + + scale_sir_colours(aesthetics = "fill") + labels_sir_count() + theme_sir() } @@ -5605,7 +5608,8 @@ if (require("ggplot2") && require("dplyr")) { ) \%>\% ggplot() + geom_col(aes(x = x, y = y, fill = z)) + - scale_sir_colours(Value4 = "S", Value5 = "I", Value6 = "R") + scale_sir_colours(aesthetics = "fill", + Value4 = "S", Value5 = "I", Value6 = "R") } if (require("ggplot2") && require("dplyr")) { # resistance of ciprofloxacine per age group @@ -7333,15 +7337,15 @@ THE PART HEREAFTER CONTAINS CONTENTS FROM FILE 'man/plot.Rd': \alias{scale_colour_mic} \alias{scale_color_mic} \alias{scale_fill_mic} +\alias{scale_x_sir} +\alias{scale_colour_sir} +\alias{scale_fill_sir} \alias{plot.mic} \alias{autoplot.mic} -\alias{fortify.mic} \alias{plot.disk} \alias{autoplot.disk} -\alias{fortify.disk} \alias{plot.sir} \alias{autoplot.sir} -\alias{fortify.sir} \alias{facet_sir} \alias{scale_y_percent} \alias{scale_sir_colours} @@ -7359,6 +7363,18 @@ scale_color_mic(keep_operators = "edges", mic_range = NULL, ...) scale_fill_mic(keep_operators = "edges", mic_range = NULL, ...) +scale_x_sir(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), eucast_I = getOption("AMR_guideline", + "EUCAST") == "EUCAST", ...) + +scale_colour_sir(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), eucast_I = getOption("AMR_guideline", + "EUCAST") == "EUCAST", ...) + +scale_fill_sir(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), eucast_I = getOption("AMR_guideline", + "EUCAST") == "EUCAST", ...) + \method{plot}{mic}(x, mo = NULL, ab = NULL, guideline = "EUCAST", main = deparse(substitute(x)), ylab = translate_AMR("Frequency", language = language), @@ -7377,8 +7393,6 @@ scale_fill_mic(keep_operators = "edges", mic_range = NULL, ...) include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), ...) -\method{fortify}{mic}(object, ...) - \method{plot}{disk}(x, main = deparse(substitute(x)), ylab = translate_AMR("Frequency", language = language), xlab = translate_AMR("Disk diffusion diameter (mm)", language = language), @@ -7396,8 +7410,6 @@ scale_fill_mic(keep_operators = "edges", mic_range = NULL, ...) include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), ...) -\method{fortify}{disk}(object, ...) - \method{plot}{sir}(x, ylab = translate_AMR("Percentage", language = language), xlab = translate_AMR("Antimicrobial Interpretation", language = language), main = deparse(substitute(x)), language = get_AMR_locale(), @@ -7409,15 +7421,13 @@ scale_fill_mic(keep_operators = "edges", mic_range = NULL, ...) colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), language = get_AMR_locale(), ...) -\method{fortify}{sir}(object, ...) - facet_sir(facet = c("interpretation", "antibiotic"), nrow = NULL) scale_y_percent(breaks = function(x) seq(0, max(x, na.rm = TRUE), 0.1), limits = c(0, NA)) -scale_sir_colours(..., aesthetics = "fill", colours_SIR = c("#3CAEA3", - "#F6D55C", "#ED553B")) +scale_sir_colours(..., aesthetics, colours_SIR = c("#3CAEA3", "#F6D55C", + "#ED553B")) theme_sir() @@ -7432,6 +7442,12 @@ labels_sir_count(position = NULL, x = "antibiotic", \item{...}{arguments passed on to methods} +\item{colours_SIR}{colours to use for filling in the bars, must be a vector of three values (in the order S, I and R). The default colours are colour-blind friendly.} + +\item{language}{language to be used to translate 'Susceptible', 'Increased exposure'/'Intermediate' and 'Resistant' - the default is system language (see \code{\link[=get_AMR_locale]{get_AMR_locale()}}) and can be overwritten by setting the package option \code{\link[=AMR-options]{AMR_locale}}, e.g. \code{options(AMR_locale = "de")}, see \link{translate}. Use \code{language = NULL} to prevent translation.} + +\item{eucast_I}{a \link{logical} to indicate whether the 'I' must be interpreted as "Susceptible, under increased exposure". Will be \code{TRUE} if the default \link[=as.sir]{AMR interpretation guideline} is set to EUCAST (which is the default). With \code{FALSE}, it will be interpreted as "Intermediate".} + \item{x, object}{values created with \code{\link[=as.mic]{as.mic()}}, \code{\link[=as.disk]{as.disk()}} or \code{\link[=as.sir]{as.sir()}} (or their \verb{random_*} variants, such as \code{\link[=random_mic]{random_mic()}})} \item{mo}{any (vector of) text that can be coerced to a valid microorganism code with \code{\link[=as.mo]{as.mo()}}} @@ -7444,10 +7460,6 @@ labels_sir_count(position = NULL, x = "antibiotic", \item{xlab, ylab}{axis title} -\item{colours_SIR}{colours to use for filling in the bars, must be a vector of three values (in the order S, I and R). The default colours are colour-blind friendly.} - -\item{language}{language to be used to translate 'Susceptible', 'Increased exposure'/'Intermediate' and 'Resistant' - the default is system language (see \code{\link[=get_AMR_locale]{get_AMR_locale()}}) and can be overwritten by setting the package option \code{\link[=AMR-options]{AMR_locale}}, e.g. \code{options(AMR_locale = "de")}, see \link{translate}. Use \code{language = NULL} or \code{language = ""} to prevent translation.} - \item{expand}{a \link{logical} to indicate whether the range on the x axis should be expanded between the lowest and highest value. For MIC values, intermediate values will be factors of 2 starting from the highest MIC value. For disk diameters, the whole diameter range will be filled.} \item{include_PKPD}{a \link{logical} to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is \code{TRUE}. Can also be set with the package option \code{\link[=AMR-options]{AMR_include_PKPD}}.} @@ -7478,8 +7490,6 @@ labels_sir_count(position = NULL, x = "antibiotic", } \value{ The \code{autoplot()} functions return a \code{\link[ggplot2:ggplot]{ggplot}} model that is extendible with any \code{ggplot2} function. - -The \code{fortify()} functions return a \link{data.frame} as an extension for usage in the \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} function. } \description{ Functions to plot classes \code{sir}, \code{mic} and \code{disk}, with support for base \R and \code{ggplot2}. @@ -7487,21 +7497,30 @@ Functions to plot classes \code{sir}, \code{mic} and \code{disk}, with support f Especially the \verb{scale_*_mic()} functions are relevant wrappers to plot MIC values for \code{ggplot2}. They allows custom MIC ranges and to plot intermediate log2 levels for missing MIC values. } \details{ -The interpretation of "I" will be named "Increased exposure" for all EUCAST guidelines since 2019, and will be named "Intermediate" in all other cases. +\subsection{The \verb{scale_*_mic()} Functions}{ -For interpreting MIC values as well as disk diffusion diameters, supported guidelines to be used as input for the \code{guideline} argument are: "EUCAST 2024", "EUCAST 2023", "EUCAST 2022", "EUCAST 2021", "EUCAST 2020", "EUCAST 2019", "EUCAST 2018", "EUCAST 2017", "EUCAST 2016", "EUCAST 2015", "EUCAST 2014", "EUCAST 2013", "EUCAST 2012", "EUCAST 2011", "CLSI 2024", "CLSI 2023", "CLSI 2022", "CLSI 2021", "CLSI 2020", "CLSI 2019", "CLSI 2018", "CLSI 2017", "CLSI 2016", "CLSI 2015", "CLSI 2014", "CLSI 2013", "CLSI 2012", and "CLSI 2011". +The functions \code{\link[=scale_x_mic]{scale_x_mic()}}, \code{\link[=scale_y_mic]{scale_y_mic()}}, \code{\link[=scale_colour_mic]{scale_colour_mic()}}, and \code{\link[=scale_fill_mic]{scale_fill_mic()}} functions allow to plot the \link[=as.mic]{mic} class (MIC values) on a continuous scale. They allow to rescale the MIC range, and retain the signs in MIC values if desired. Missing intermediate log2 levels will be plotted too. +} + +\subsection{The \verb{scale_*_sir()} Functions}{ + +The functions \code{\link[=scale_x_sir]{scale_x_sir()}}, \code{\link[=scale_colour_sir]{scale_colour_sir()}}, and \code{\link[=scale_fill_sir]{scale_fill_sir()}} functions allow to plot the \link[=as.sir]{sir} class (S/I/R values). They can translate the S/I/R values to any of the 20 supported languages, and set colour-blind friendly colours to the \code{colour} and \code{fill} aesthetics. +} -Simply using \code{"CLSI"} or \code{"EUCAST"} as input will automatically select the latest version of that guideline. \subsection{Additional \code{ggplot2} Functions}{ -This package contains several functions that extend the \code{ggplot2} package, to help in visualising AMR data results. All these functions are internally used by \code{\link[=ggplot_sir]{ggplot_sir()}} too. +This package contains more functions that extend the \code{ggplot2} package, to help in visualising AMR data results. All these functions are internally used by \code{\link[=ggplot_sir]{ggplot_sir()}} too. \itemize{ \item \code{\link[=facet_sir]{facet_sir()}} creates 2d plots (at default based on S/I/R) using \code{\link[ggplot2:facet_wrap]{ggplot2::facet_wrap()}}. \item \code{\link[=scale_y_percent]{scale_y_percent()}} transforms the y axis to a 0 to 100\% range using \code{\link[ggplot2:scale_continuous]{ggplot2::scale_y_continuous()}}. -\item \code{\link[=scale_sir_colours]{scale_sir_colours()}} sets colours to the bars (green for S, yellow for I, and red for R). Has multilingual support. The default colours are colour-blind friendly, while maintaining the convention that e.g. 'susceptible' should be green and 'resistant' should be red. +\item \code{\link[=scale_sir_colours]{scale_sir_colours()}} allows to set colours to any aesthetic, even for \code{shape} or \code{linetype}. \item \code{\link[=theme_sir]{theme_sir()}} is a [ggplot2 theme][\code{\link[ggplot2:theme]{ggplot2::theme()}} with minimal distraction. \item \code{\link[=labels_sir_count]{labels_sir_count()}} print datalabels on the bars with percentage and number of isolates, using \code{\link[ggplot2:geom_text]{ggplot2::geom_text()}}. } + +The interpretation of "I" will be named "Increased exposure" for all EUCAST guidelines since 2019, and will be named "Intermediate" in all other cases. + +For interpreting MIC values as well as disk diffusion diameters, supported guidelines to be used as input for the \code{guideline} argument are: "EUCAST 2024", "EUCAST 2023", "EUCAST 2022", "EUCAST 2021", "EUCAST 2020", "EUCAST 2019", "EUCAST 2018", "EUCAST 2017", "EUCAST 2016", "EUCAST 2015", "EUCAST 2014", "EUCAST 2013", "EUCAST 2012", "EUCAST 2011", "CLSI 2024", "CLSI 2023", "CLSI 2022", "CLSI 2021", "CLSI 2020", "CLSI 2019", "CLSI 2018", "CLSI 2017", "CLSI 2016", "CLSI 2015", "CLSI 2014", "CLSI 2013", "CLSI 2012", and "CLSI 2011". Simply using \code{"CLSI"} or \code{"EUCAST"} as input will automatically select the latest version of that guideline. } } \examples{ @@ -7509,6 +7528,9 @@ some_mic_values <- random_mic(size = 100) some_disk_values <- random_disk(size = 100, mo = "Escherichia coli", ab = "cipro") some_sir_values <- random_sir(50, prob_SIR = c(0.55, 0.05, 0.30)) + +# Plotting using base R's plot() --------------------------------------- + plot(some_mic_values) plot(some_disk_values) plot(some_sir_values) @@ -7550,8 +7572,10 @@ if (require("ggplot2")) { labs(title = "with scale_x_mic() using a manual 'outside' range") } + # Plotting using scale_y_mic() ----------------------------------------- some_groups <- sample(LETTERS[1:5], 20, replace = TRUE) + if (require("ggplot2")) { ggplot(data.frame(mic = some_mic_values, group = some_groups), @@ -7569,18 +7593,58 @@ if (require("ggplot2")) { scale_y_mic(mic_range = c(NA, 2)) } + # Plotting using scale_fill_mic() ----------------------------------------- some_counts <- as.integer(runif(20, 5, 50)) + if (require("ggplot2")) { ggplot(data.frame(mic = some_mic_values, group = some_groups, - counts = some_counts, + counts = some_counts), aes(group, counts, fill = mic)) + geom_col() + scale_fill_mic(mic_range = c(0.5, 16)) } -# Auto plotting -------------------------------------------------------- +# Plotting using scale_x_sir() ----------------------------------------- +if (require("ggplot2")) { + ggplot(data.frame(x = c("I", "R", "S"), + y = c(45,323, 573)), + aes(x, y)) + + geom_col() + + scale_x_sir() +} + + +# Plotting using scale_y_mic() and scale_colour_sir() ------------------ +if (require("ggplot2")) { + plain <- ggplot(data.frame(mic = some_mic_values, + group = some_groups, + sir = as.sir(some_mic_values, + mo = "E. coli", + ab = "cipro")), + aes(x = group, y = mic, colour = sir)) + + theme_minimal() + + geom_boxplot(fill = NA, colour = "grey") + + geom_jitter(width = 0.25) + + plain +} +if (require("ggplot2")) { + # and now with our MIC and SIR scale functions: + plain + + scale_y_mic() + + scale_colour_sir() +} +if (require("ggplot2")) { + plain + + scale_y_mic(mic_range = c(0.005, 32), name = "Our MICs!") + + scale_colour_sir(language = "el", eucast_I = FALSE, + name = "In Greek!") +} + + +# Plotting using ggplot2's autoplot() ---------------------------------- if (require("ggplot2")) { autoplot(some_mic_values) } @@ -7591,6 +7655,7 @@ if (require("ggplot2")) { autoplot(some_sir_values) } + # Plotting using scale_y_percent() ------------------------------------- if (require("ggplot2")) { p <- ggplot(data.frame(mics = as.mic(c(0.25, "<=4", 4, 8, 32, ">=32")), diff --git a/data-raw/translations.tsv b/data-raw/translations.tsv index 42ea47364..3546c1a57 100644 --- a/data-raw/translations.tsv +++ b/data-raw/translations.tsv @@ -45,6 +45,7 @@ susceptible, incr. exp. FALSE TRUE FALSE FALSE 易感,接触增加 náchylná, Susceptible TRUE FALSE FALSE FALSE 易受影响 Susceptible Modtagelig Gevoelig Altis Empfindlich Ευαίσθητο 影響を受けやすい Mottakelig Podatny Susceptibil Susceptible Mottaglig Duyarlı Чутливий Incr. exposure TRUE FALSE FALSE FALSE 暴露增加 zvýšená expozice Øget eksponering 'Incr. exposure' Lisääntynyt altistuminen Empfindlich, erh Belastung Αυξημένη έκθεση 曝露量増加 Økt eksp. Większe narażenie Exp. crescută Mayor exposición Inkr. exponering Enk. maruziyet Підвищена експозиція Resistant TRUE FALSE FALSE FALSE 耐药性 Rezistentní Resistent Resistent Kestävä Resistent Ανθεκτικός 耐性 Resistent Odporny Rezistent Resistente Resistent Dayanıklı Стійкий +Not interpretable TRUE FALSE FALSE FALSE 无法解释 Nelze interpretovat Ufortolkelig Niet interpreteerbaar Ei tulkittavissa Non interprétable Nicht interpretierbar Μη ερμηνεύσιμο Non interpretabile 解釈不可 Utolkelig ikke Niemożliwe do interpretacji Neinterpretabil Непереводимо No interpretable Inte tolkningsbar Yorumlanamaz Непридатний до інтерпретації antibiotic TRUE TRUE FALSE FALSE 抗生素 antibiotikum antibiotikum antibioticum antibiootti antibiotique Antibiotikum αντιβιοτικό antibiotico 抗生物質 Antibiotikum antybiotyk antibiótico antibiotic антибиотик antibiótico antibiotika Antibiyotik антибіотик Antibiotic TRUE TRUE FALSE FALSE 抗生素 Antibiotikum Antibiotikum Antibioticum Antibiootti Antibiotique Antibiotikum Αντιβιοτικό Antibiotico 抗生物質 Antibiotikum Antybiotyk Antibiótico Antibiotic Антибиотик Antibiótico Antibiotika Antibiyotik Антибіотик Drug TRUE TRUE FALSE FALSE 药物 Lék Lægemiddel Middel Lääke Médicament Medikament Φάρμακο Droga 薬剤 Legemiddel Lek Droga Medicament Лекарство Fármaco Läkemedel İlaç Лікарський засіб diff --git a/man/ggplot_sir.Rd b/man/ggplot_sir.Rd index 5e62fabe9..6fae3546b 100644 --- a/man/ggplot_sir.Rd +++ b/man/ggplot_sir.Rd @@ -95,7 +95,7 @@ if (require("ggplot2") && require("dplyr")) { ggplot(df) + geom_sir() + scale_y_percent() + - scale_sir_colours() + + scale_sir_colours(aesthetics = "fill") + labels_sir_count() + theme_sir() } @@ -139,7 +139,8 @@ if (require("ggplot2") && require("dplyr")) { ) \%>\% ggplot() + geom_col(aes(x = x, y = y, fill = z)) + - scale_sir_colours(Value4 = "S", Value5 = "I", Value6 = "R") + scale_sir_colours(aesthetics = "fill", + Value4 = "S", Value5 = "I", Value6 = "R") } if (require("ggplot2") && require("dplyr")) { # resistance of ciprofloxacine per age group diff --git a/man/plot.Rd b/man/plot.Rd index 00b338c17..82c62a602 100644 --- a/man/plot.Rd +++ b/man/plot.Rd @@ -7,15 +7,15 @@ \alias{scale_colour_mic} \alias{scale_color_mic} \alias{scale_fill_mic} +\alias{scale_x_sir} +\alias{scale_colour_sir} +\alias{scale_fill_sir} \alias{plot.mic} \alias{autoplot.mic} -\alias{fortify.mic} \alias{plot.disk} \alias{autoplot.disk} -\alias{fortify.disk} \alias{plot.sir} \alias{autoplot.sir} -\alias{fortify.sir} \alias{facet_sir} \alias{scale_y_percent} \alias{scale_sir_colours} @@ -33,6 +33,18 @@ scale_color_mic(keep_operators = "edges", mic_range = NULL, ...) scale_fill_mic(keep_operators = "edges", mic_range = NULL, ...) +scale_x_sir(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), eucast_I = getOption("AMR_guideline", + "EUCAST") == "EUCAST", ...) + +scale_colour_sir(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), eucast_I = getOption("AMR_guideline", + "EUCAST") == "EUCAST", ...) + +scale_fill_sir(colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), + language = get_AMR_locale(), eucast_I = getOption("AMR_guideline", + "EUCAST") == "EUCAST", ...) + \method{plot}{mic}(x, mo = NULL, ab = NULL, guideline = "EUCAST", main = deparse(substitute(x)), ylab = translate_AMR("Frequency", language = language), @@ -51,8 +63,6 @@ scale_fill_mic(keep_operators = "edges", mic_range = NULL, ...) include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), ...) -\method{fortify}{mic}(object, ...) - \method{plot}{disk}(x, main = deparse(substitute(x)), ylab = translate_AMR("Frequency", language = language), xlab = translate_AMR("Disk diffusion diameter (mm)", language = language), @@ -70,8 +80,6 @@ scale_fill_mic(keep_operators = "edges", mic_range = NULL, ...) include_PKPD = getOption("AMR_include_PKPD", TRUE), breakpoint_type = getOption("AMR_breakpoint_type", "human"), ...) -\method{fortify}{disk}(object, ...) - \method{plot}{sir}(x, ylab = translate_AMR("Percentage", language = language), xlab = translate_AMR("Antimicrobial Interpretation", language = language), main = deparse(substitute(x)), language = get_AMR_locale(), @@ -83,15 +91,13 @@ scale_fill_mic(keep_operators = "edges", mic_range = NULL, ...) colours_SIR = c("#3CAEA3", "#F6D55C", "#ED553B"), language = get_AMR_locale(), ...) -\method{fortify}{sir}(object, ...) - facet_sir(facet = c("interpretation", "antibiotic"), nrow = NULL) scale_y_percent(breaks = function(x) seq(0, max(x, na.rm = TRUE), 0.1), limits = c(0, NA)) -scale_sir_colours(..., aesthetics = "fill", colours_SIR = c("#3CAEA3", - "#F6D55C", "#ED553B")) +scale_sir_colours(..., aesthetics, colours_SIR = c("#3CAEA3", "#F6D55C", + "#ED553B")) theme_sir() @@ -106,6 +112,12 @@ labels_sir_count(position = NULL, x = "antibiotic", \item{...}{arguments passed on to methods} +\item{colours_SIR}{colours to use for filling in the bars, must be a vector of three values (in the order S, I and R). The default colours are colour-blind friendly.} + +\item{language}{language to be used to translate 'Susceptible', 'Increased exposure'/'Intermediate' and 'Resistant' - the default is system language (see \code{\link[=get_AMR_locale]{get_AMR_locale()}}) and can be overwritten by setting the package option \code{\link[=AMR-options]{AMR_locale}}, e.g. \code{options(AMR_locale = "de")}, see \link{translate}. Use \code{language = NULL} to prevent translation.} + +\item{eucast_I}{a \link{logical} to indicate whether the 'I' must be interpreted as "Susceptible, under increased exposure". Will be \code{TRUE} if the default \link[=as.sir]{AMR interpretation guideline} is set to EUCAST (which is the default). With \code{FALSE}, it will be interpreted as "Intermediate".} + \item{x, object}{values created with \code{\link[=as.mic]{as.mic()}}, \code{\link[=as.disk]{as.disk()}} or \code{\link[=as.sir]{as.sir()}} (or their \verb{random_*} variants, such as \code{\link[=random_mic]{random_mic()}})} \item{mo}{any (vector of) text that can be coerced to a valid microorganism code with \code{\link[=as.mo]{as.mo()}}} @@ -118,10 +130,6 @@ labels_sir_count(position = NULL, x = "antibiotic", \item{xlab, ylab}{axis title} -\item{colours_SIR}{colours to use for filling in the bars, must be a vector of three values (in the order S, I and R). The default colours are colour-blind friendly.} - -\item{language}{language to be used to translate 'Susceptible', 'Increased exposure'/'Intermediate' and 'Resistant' - the default is system language (see \code{\link[=get_AMR_locale]{get_AMR_locale()}}) and can be overwritten by setting the package option \code{\link[=AMR-options]{AMR_locale}}, e.g. \code{options(AMR_locale = "de")}, see \link{translate}. Use \code{language = NULL} or \code{language = ""} to prevent translation.} - \item{expand}{a \link{logical} to indicate whether the range on the x axis should be expanded between the lowest and highest value. For MIC values, intermediate values will be factors of 2 starting from the highest MIC value. For disk diameters, the whole diameter range will be filled.} \item{include_PKPD}{a \link{logical} to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is \code{TRUE}. Can also be set with the package option \code{\link[=AMR-options]{AMR_include_PKPD}}.} @@ -152,8 +160,6 @@ labels_sir_count(position = NULL, x = "antibiotic", } \value{ The \code{autoplot()} functions return a \code{\link[ggplot2:ggplot]{ggplot}} model that is extendible with any \code{ggplot2} function. - -The \code{fortify()} functions return a \link{data.frame} as an extension for usage in the \code{\link[ggplot2:ggplot]{ggplot2::ggplot()}} function. } \description{ Functions to plot classes \code{sir}, \code{mic} and \code{disk}, with support for base \R and \code{ggplot2}. @@ -161,21 +167,30 @@ Functions to plot classes \code{sir}, \code{mic} and \code{disk}, with support f Especially the \verb{scale_*_mic()} functions are relevant wrappers to plot MIC values for \code{ggplot2}. They allows custom MIC ranges and to plot intermediate log2 levels for missing MIC values. } \details{ -The interpretation of "I" will be named "Increased exposure" for all EUCAST guidelines since 2019, and will be named "Intermediate" in all other cases. +\subsection{The \verb{scale_*_mic()} Functions}{ -For interpreting MIC values as well as disk diffusion diameters, supported guidelines to be used as input for the \code{guideline} argument are: "EUCAST 2024", "EUCAST 2023", "EUCAST 2022", "EUCAST 2021", "EUCAST 2020", "EUCAST 2019", "EUCAST 2018", "EUCAST 2017", "EUCAST 2016", "EUCAST 2015", "EUCAST 2014", "EUCAST 2013", "EUCAST 2012", "EUCAST 2011", "CLSI 2024", "CLSI 2023", "CLSI 2022", "CLSI 2021", "CLSI 2020", "CLSI 2019", "CLSI 2018", "CLSI 2017", "CLSI 2016", "CLSI 2015", "CLSI 2014", "CLSI 2013", "CLSI 2012", and "CLSI 2011". +The functions \code{\link[=scale_x_mic]{scale_x_mic()}}, \code{\link[=scale_y_mic]{scale_y_mic()}}, \code{\link[=scale_colour_mic]{scale_colour_mic()}}, and \code{\link[=scale_fill_mic]{scale_fill_mic()}} functions allow to plot the \link[=as.mic]{mic} class (MIC values) on a continuous scale. They allow to rescale the MIC range, and retain the signs in MIC values if desired. Missing intermediate log2 levels will be plotted too. +} + +\subsection{The \verb{scale_*_sir()} Functions}{ + +The functions \code{\link[=scale_x_sir]{scale_x_sir()}}, \code{\link[=scale_colour_sir]{scale_colour_sir()}}, and \code{\link[=scale_fill_sir]{scale_fill_sir()}} functions allow to plot the \link[=as.sir]{sir} class (S/I/R values). They can translate the S/I/R values to any of the 20 supported languages, and set colour-blind friendly colours to the \code{colour} and \code{fill} aesthetics. +} -Simply using \code{"CLSI"} or \code{"EUCAST"} as input will automatically select the latest version of that guideline. \subsection{Additional \code{ggplot2} Functions}{ -This package contains several functions that extend the \code{ggplot2} package, to help in visualising AMR data results. All these functions are internally used by \code{\link[=ggplot_sir]{ggplot_sir()}} too. +This package contains more functions that extend the \code{ggplot2} package, to help in visualising AMR data results. All these functions are internally used by \code{\link[=ggplot_sir]{ggplot_sir()}} too. \itemize{ \item \code{\link[=facet_sir]{facet_sir()}} creates 2d plots (at default based on S/I/R) using \code{\link[ggplot2:facet_wrap]{ggplot2::facet_wrap()}}. \item \code{\link[=scale_y_percent]{scale_y_percent()}} transforms the y axis to a 0 to 100\% range using \code{\link[ggplot2:scale_continuous]{ggplot2::scale_y_continuous()}}. -\item \code{\link[=scale_sir_colours]{scale_sir_colours()}} sets colours to the bars (green for S, yellow for I, and red for R). Has multilingual support. The default colours are colour-blind friendly, while maintaining the convention that e.g. 'susceptible' should be green and 'resistant' should be red. +\item \code{\link[=scale_sir_colours]{scale_sir_colours()}} allows to set colours to any aesthetic, even for \code{shape} or \code{linetype}. \item \code{\link[=theme_sir]{theme_sir()}} is a [ggplot2 theme][\code{\link[ggplot2:theme]{ggplot2::theme()}} with minimal distraction. \item \code{\link[=labels_sir_count]{labels_sir_count()}} print datalabels on the bars with percentage and number of isolates, using \code{\link[ggplot2:geom_text]{ggplot2::geom_text()}}. } + +The interpretation of "I" will be named "Increased exposure" for all EUCAST guidelines since 2019, and will be named "Intermediate" in all other cases. + +For interpreting MIC values as well as disk diffusion diameters, supported guidelines to be used as input for the \code{guideline} argument are: "EUCAST 2024", "EUCAST 2023", "EUCAST 2022", "EUCAST 2021", "EUCAST 2020", "EUCAST 2019", "EUCAST 2018", "EUCAST 2017", "EUCAST 2016", "EUCAST 2015", "EUCAST 2014", "EUCAST 2013", "EUCAST 2012", "EUCAST 2011", "CLSI 2024", "CLSI 2023", "CLSI 2022", "CLSI 2021", "CLSI 2020", "CLSI 2019", "CLSI 2018", "CLSI 2017", "CLSI 2016", "CLSI 2015", "CLSI 2014", "CLSI 2013", "CLSI 2012", and "CLSI 2011". Simply using \code{"CLSI"} or \code{"EUCAST"} as input will automatically select the latest version of that guideline. } } \examples{ @@ -183,6 +198,9 @@ some_mic_values <- random_mic(size = 100) some_disk_values <- random_disk(size = 100, mo = "Escherichia coli", ab = "cipro") some_sir_values <- random_sir(50, prob_SIR = c(0.55, 0.05, 0.30)) + +# Plotting using base R's plot() --------------------------------------- + plot(some_mic_values) plot(some_disk_values) plot(some_sir_values) @@ -224,8 +242,10 @@ if (require("ggplot2")) { labs(title = "with scale_x_mic() using a manual 'outside' range") } + # Plotting using scale_y_mic() ----------------------------------------- some_groups <- sample(LETTERS[1:5], 20, replace = TRUE) + if (require("ggplot2")) { ggplot(data.frame(mic = some_mic_values, group = some_groups), @@ -243,8 +263,10 @@ if (require("ggplot2")) { scale_y_mic(mic_range = c(NA, 2)) } + # Plotting using scale_fill_mic() ----------------------------------------- some_counts <- as.integer(runif(20, 5, 50)) + if (require("ggplot2")) { ggplot(data.frame(mic = some_mic_values, group = some_groups, @@ -254,7 +276,45 @@ if (require("ggplot2")) { scale_fill_mic(mic_range = c(0.5, 16)) } -# Auto plotting -------------------------------------------------------- +# Plotting using scale_x_sir() ----------------------------------------- +if (require("ggplot2")) { + ggplot(data.frame(x = c("I", "R", "S"), + y = c(45,323, 573)), + aes(x, y)) + + geom_col() + + scale_x_sir() +} + + +# Plotting using scale_y_mic() and scale_colour_sir() ------------------ +if (require("ggplot2")) { + plain <- ggplot(data.frame(mic = some_mic_values, + group = some_groups, + sir = as.sir(some_mic_values, + mo = "E. coli", + ab = "cipro")), + aes(x = group, y = mic, colour = sir)) + + theme_minimal() + + geom_boxplot(fill = NA, colour = "grey") + + geom_jitter(width = 0.25) + + plain +} +if (require("ggplot2")) { + # and now with our MIC and SIR scale functions: + plain + + scale_y_mic() + + scale_colour_sir() +} +if (require("ggplot2")) { + plain + + scale_y_mic(mic_range = c(0.005, 32), name = "Our MICs!") + + scale_colour_sir(language = "el", eucast_I = FALSE, + name = "In Greek!") +} + + +# Plotting using ggplot2's autoplot() ---------------------------------- if (require("ggplot2")) { autoplot(some_mic_values) } @@ -265,6 +325,7 @@ if (require("ggplot2")) { autoplot(some_sir_values) } + # Plotting using scale_y_percent() ------------------------------------- if (require("ggplot2")) { p <- ggplot(data.frame(mics = as.mic(c(0.25, "<=4", 4, 8, 32, ">=32")), diff --git a/tests/testthat/test-plotting.R b/tests/testthat/test-plotting.R new file mode 100644 index 000000000..dbf53d09e --- /dev/null +++ b/tests/testthat/test-plotting.R @@ -0,0 +1,87 @@ +# ==================================================================== # +# TITLE: # +# AMR: An R Package for Working with Antimicrobial Resistance Data # +# # +# SOURCE CODE: # +# https://github.com/msberends/AMR # +# # +# PLEASE CITE THIS SOFTWARE AS: # +# Berends MS, Luz CF, Friedrich AW, et al. (2022). # +# AMR: An R Package for Working with Antimicrobial Resistance Data. # +# Journal of Statistical Software, 104(3), 1-31. # +# https://doi.org/10.18637/jss.v104.i03 # +# # +# Developed at the University of Groningen and the University Medical # +# Center Groningen in The Netherlands, in collaboration with many # +# colleagues from around the world, see our website. # +# # +# This R package is free software; you can freely use and distribute # +# it for both personal and commercial purposes under the terms of the # +# GNU General Public License version 2.0 (GNU GPL-2), as published by # +# the Free Software Foundation. # +# We created this package for both routine data analysis and academic # +# research and it was publicly released in the hope that it will be # +# useful, but it comes WITHOUT ANY WARRANTY OR LIABILITY. # +# # +# Visit our website for the full manual and a complete tutorial about # +# how to conduct AMR data analysis: https://msberends.github.io/AMR/ # +# ==================================================================== # + +if (AMR:::pkg_is_available("ggplot2", also_load = TRUE)) { + pdf(NULL) # prevent Rplots.pdf being created + + # scale_*_mic + aesthetics <- c("x", "y", "colour", "fill") + expected_methods <- c("transform", "transform_df", "breaks", "labels", "limits") + for (aest in aesthetics) { + scale_fn_name <- paste0("scale_", aest, "_continuous") + scale_obj <- getExportedValue("ggplot2", scale_fn_name)() + for (method in expected_methods) { + expect_true(is.function(scale_obj[[method]]) || method %in% names(scale_obj), + info = paste0("Method '", method, "' is missing in ggplot2::", scale_fn_name)) + } + } + + # scale_*_sir + aesthetics <- c("colour", "fill") + expected_methods <- c("transform", "transform_df", "labels", "limits") + for (aest in aesthetics) { + scale_fn_name <- "scale_discrete_manual" + scale_obj <- getExportedValue("ggplot2", scale_fn_name)(aesthetics = aest) + for (method in expected_methods) { + expect_true(is.function(scale_obj[[method]]) || method %in% names(scale_obj), + info = paste0("Method '", method, "' is missing in ggplot2::", scale_fn_name)) + } + } + for (method in expected_methods) { + expect_true(is.function(ggplot2::scale_x_discrete()[[method]]) || method %in% names(ggplot2::scale_x_discrete()), + info = paste0("Method '", method, "' is missing in ggplot2::", "scale_x_discrete")) + } + + expect_inherits(ggplot(data.frame(count = c(1,2,3, 4), + sir = c("S", "I", "R", "SDD")), + aes(x = sir, y = count, fill = sir)) + + geom_col() + + scale_x_sir(eucast_I = F, language = "el") + + scale_fill_sir(eucast_I = T, language = "nl"), + "gg") + expect_inherits(ggplot(data.frame(mic = as.mic(c(2,4,8, 16)), + sir = as.sir(c("S", "I", "R", "SDD"))), + aes(x = sir, y = mic)) + + geom_point() + + scale_y_mic(), + "gg") + expect_inherits(ggplot(data.frame(mic = as.mic(c(2,4,8, 16)), + sir = as.sir(c("S", "I", "R", "SDD"))), + aes(x = sir, y = mic)) + + geom_col() + + scale_y_mic(), + "gg") + expect_inherits(ggplot(data.frame(mic = as.mic(c(2,4,8, 16)), + sir = as.sir(c("S", "I", "R", "SDD"))), + aes(x = sir, y = mic)) + + geom_col() + + scale_y_mic(mic_range = c(4,16)) + + scale_x_sir(), + "gg") +}