From aab0fcc4799d8ceff2d3ea4dc2b333b2ff2ade03 Mon Sep 17 00:00:00 2001 From: Matthijs Berends Date: Fri, 30 Oct 2026 12:52:30 +0100 Subject: [PATCH] (v3.1.0.9012) Use the native R pipe throughout the examples on the website home page, and fix a typo --- DESCRIPTION | 2 +- NEWS.md | 2 +- index.Rmd | 58 +++++++++++++++++++++++++++-------------------------- index.md | 58 +++++++++++++++++++++++++++-------------------------- 4 files changed, 62 insertions(+), 58 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index cbb41cf50..adc46a938 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,5 +1,5 @@ Package: AMR -Version: 3.1.0.9011 +Version: 3.1.0.9012 Date: 2026-10-30 Title: Antimicrobial Resistance Data Analysis Description: Functions to simplify and standardise antimicrobial resistance (AMR) diff --git a/NEWS.md b/NEWS.md index 17a1b4c13..77de88e45 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# AMR 3.1.0.9011 +# AMR 3.1.0.9012 This version fixes a critical bug in WISCA that biased all coverage estimates of `wisca()` and `antibiogram(..., wisca = TRUE)` downwards since AMR 3.0.0. Users are strongly advised to re-run their WISCA analyses. diff --git a/index.Rmd b/index.Rmd index cce756738..777f05b73 100644 --- a/index.Rmd +++ b/index.Rmd @@ -70,15 +70,15 @@ With the help of contributors from all corners of the world, the `AMR` package i One of the most powerful functions of this package, aside from calculating and plotting AMR, is selecting and filtering based on antimicrobial columns. This can be done using the so-called [antimicrobial selectors](https://amr-for-r.org/reference/antimicrobial_selectors.html), which work in base R, `dplyr` and `data.table`. ```{r} -# AMR works great with dplyr, but it's not required or neccesary +# AMR works great with dplyr, but it's not required or necessary library(AMR) library(dplyr, warn.conflicts = FALSE) -example_isolates %>% - mutate(bacteria = mo_fullname()) %>% +example_isolates |> + mutate(bacteria = mo_fullname()) |> # filtering functions for microorganisms: filter(mo_is_gram_negative(), - mo_is_intrinsic_resistant(ab = "cefotax")) %>% + mo_is_intrinsic_resistant(ab = "cefotax")) |> # antimicrobial selectors: select(bacteria, aminoglycosides(), @@ -94,44 +94,46 @@ The `AMR` package supports four types of antibiograms, with support for `r lengt **For empirical therapy guidance (i.e., coverage estimates), use WISCA** (Weighted-Incidence Syndromic Combination Antibiogram). When a clinician starts empirical treatment, the causative pathogen is unknown. The relevant question is not *"what percentage of E. coli is susceptible?"* but *"what is the probability that this regimen will cover whatever pathogen is causing the infection?"*. WISCA answers that question directly, weighting susceptibility by pathogen incidence and providing credible intervals via Bayesian simulation. See `vignette("WISCA")` for the full explanation. ```{r} -wisca(top_n_microorganisms(example_isolates, n = 10), # 10 most common species - antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"), - minimum = 10) # Recommended threshold: >=30 +example_isolates |> + top_n_microorganisms(n = 10) |> # 10 most common species + wisca(antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"), + minimum = 10) # Recommended threshold: >=30 ``` WISCA supports stratification by any clinical variable, so you can generate syndrome-specific or ward-specific coverage estimates: ```{r} -wisca(top_n_microorganisms(example_isolates, n = 10), - antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"), - syndromic_group = "ward", - minimum = 10) # Recommended threshold: >=30 +example_isolates |> + top_n_microorganisms(n = 10) |> + wisca(antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"), + syndromic_group = "ward", + minimum = 10) # Recommended threshold: >=30 ``` **For AMR surveillance**, traditional antibiograms remain the right tool for tracking resistance per species over time: ```{r} -antibiogram(example_isolates, - mo_transform = "gramstain", - antimicrobials = c("AMC", carbapenems(), "TZP")) +example_isolates |> + antibiogram(mo_transform = "gramstain", + antimicrobials = c("AMC", carbapenems(), "TZP")) ``` Combination antibiograms show the additional coverage gained by adding a second agent, stratified by species: ```{r} -antibiogram(example_isolates, - mo_transform = "gramstain", - antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN")) +example_isolates |> + antibiogram(mo_transform = "gramstain", + antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN")) ``` Like many other functions in this package, `antibiogram()` and `wisca()` come with support for `r length(AMR:::LANGUAGES_SUPPORTED)` languages that are often detected automatically based on system language: ```{r} -antibiogram(example_isolates, - antimicrobials = c("cipro", "tobra", "genta"), # any arbitrary name or code will work - mo_transform = "gramstain", - ab_transform = "name", - language = "uk") # Ukrainian +example_isolates |> + antibiogram(antimicrobials = c("cipro", "tobra", "genta"), # any arbitrary name or code will work + mo_transform = "gramstain", + ab_transform = "name", + language = "uk") # Ukrainian ``` ### Interpreting and plotting MIC and SIR values @@ -176,9 +178,9 @@ ggplot(data.frame(mic = some_mic_values, For a manual approach, you can use the `resistance` or `susceptibility()` function: ```{r} -example_isolates %>% +example_isolates |> # group by ward: - group_by(ward) %>% + group_by(ward) |> # calculate AMR using resistance() for gentamicin and tobramycin # and get their 95% confidence intervals using sir_confidence_interval(): summarise(across(c(GEN, TOB), @@ -192,9 +194,9 @@ Or use [antimicrobial selectors](https://amr-for-r.org/reference/antimicrobial_s library(AMR) library(dplyr) -out <- example_isolates %>% +out <- example_isolates |> # group by ward: - group_by(ward) %>% + group_by(ward) |> # calculate AMR using resistance(), over all aminoglycosides and polymyxins: summarise(across(c(aminoglycosides(), polymyxins()), resistance)) @@ -203,12 +205,12 @@ out ```{r} # transform the antibiotic columns to names: -out %>% set_ab_names() +out |> set_ab_names() ``` ```{r} # transform the antibiotic column to ATC codes: -out %>% set_ab_names(property = "atc") +out |> set_ab_names(property = "atc") ``` ## What else can you do with this package? diff --git a/index.md b/index.md index 922ea96a2..0cde6f771 100644 --- a/index.md +++ b/index.md @@ -154,15 +154,15 @@ selectors](https://amr-for-r.org/reference/antimicrobial_selectors.html), which work in base R, `dplyr` and `data.table`. ``` r -# AMR works great with dplyr, but it's not required or neccesary +# AMR works great with dplyr, but it's not required or necessary library(AMR) library(dplyr, warn.conflicts = FALSE) -example_isolates %>% - mutate(bacteria = mo_fullname()) %>% +example_isolates |> + mutate(bacteria = mo_fullname()) |> # filtering functions for microorganisms: filter(mo_is_gram_negative(), - mo_is_intrinsic_resistant(ab = "cefotax")) %>% + mo_is_intrinsic_resistant(ab = "cefotax")) |> # antimicrobial selectors: select(bacteria, aminoglycosides(), @@ -217,9 +217,10 @@ credible intervals via Bayesian simulation. See `vignette("WISCA")` for the full explanation. ``` r -wisca(top_n_microorganisms(example_isolates, n = 10), # 10 most common species - antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"), - minimum = 10) # Recommended threshold: >=30 +example_isolates |> + top_n_microorganisms(n = 10) |> # 10 most common species + wisca(antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"), + minimum = 10) # Recommended threshold: >=30 ``` | Piperacillin/tazobactam | Piperacillin/tazobactam + Gentamicin | Piperacillin/tazobactam + Tobramycin | @@ -230,10 +231,11 @@ WISCA supports stratification by any clinical variable, so you can generate syndrome-specific or ward-specific coverage estimates: ``` r -wisca(top_n_microorganisms(example_isolates, n = 10), - antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"), - syndromic_group = "ward", - minimum = 10) # Recommended threshold: >=30 +example_isolates |> + top_n_microorganisms(n = 10) |> + wisca(antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN"), + syndromic_group = "ward", + minimum = 10) # Recommended threshold: >=30 #> Warning: In 3 of 9 WISCA regimen(s) or group(s), the prior weight of 1 per pathogen accounts for more than #> 5% of the pathogen incidence (up to 6.4%), since there are few isolates relative to the number of #> pathogens, i.e., rare pathogens or a small group. Because WISCA gives every pathogen a prior weight @@ -252,9 +254,9 @@ wisca(top_n_microorganisms(example_isolates, n = 10), for tracking resistance per species over time: ``` r -antibiogram(example_isolates, - mo_transform = "gramstain", - antimicrobials = c("AMC", carbapenems(), "TZP")) +example_isolates |> + antibiogram(mo_transform = "gramstain", + antimicrobials = c("AMC", carbapenems(), "TZP")) #> ℹ For `carbapenems()` using columns IPM (imipenem) and MEM (meropenem) ``` @@ -267,9 +269,9 @@ Combination antibiograms show the additional coverage gained by adding a second agent, stratified by species: ``` r -antibiogram(example_isolates, - mo_transform = "gramstain", - antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN")) +example_isolates |> + antibiogram(mo_transform = "gramstain", + antimicrobials = c("TZP", "TZP+TOB", "TZP+GEN")) ``` | Pathogen | Piperacillin/tazobactam | Piperacillin/tazobactam + Gentamicin | Piperacillin/tazobactam + Tobramycin | @@ -282,11 +284,11 @@ come with support for 28 languages that are often detected automatically based on system language: ``` r -antibiogram(example_isolates, - antimicrobials = c("cipro", "tobra", "genta"), # any arbitrary name or code will work - mo_transform = "gramstain", - ab_transform = "name", - language = "uk") # Ukrainian +example_isolates |> + antibiogram(antimicrobials = c("cipro", "tobra", "genta"), # any arbitrary name or code will work + mo_transform = "gramstain", + ab_transform = "name", + language = "uk") # Ukrainian ``` | Збудник | Гентаміцин | Тобраміцин | Ципрофлоксацин | @@ -340,9 +342,9 @@ For a manual approach, you can use the `resistance` or `susceptibility()` function: ``` r -example_isolates %>% +example_isolates |> # group by ward: - group_by(ward) %>% + group_by(ward) |> # calculate AMR using resistance() for gentamicin and tobramycin # and get their 95% confidence intervals using sir_confidence_interval(): summarise(across(c(GEN, TOB), @@ -364,9 +366,9 @@ to select a series of antibiotic columns: library(AMR) library(dplyr) -out <- example_isolates %>% +out <- example_isolates |> # group by ward: - group_by(ward) %>% + group_by(ward) |> # calculate AMR using resistance(), over all aminoglycosides and polymyxins: summarise(across(c(aminoglycosides(), polymyxins()), resistance)) @@ -390,7 +392,7 @@ out ``` r # transform the antibiotic columns to names: -out %>% set_ab_names() +out |> set_ab_names() #> # A tibble: 3 × 6 #> ward gentamicin tobramycin amikacin kanamycin colistin #> @@ -401,7 +403,7 @@ out %>% set_ab_names() ``` r # transform the antibiotic column to ATC codes: -out %>% set_ab_names(property = "atc") +out |> set_ab_names(property = "atc") #> # A tibble: 3 × 6 #> ward J01GB03 J01GB01 J01GB06 J01GB04 J01XB01 #>