Generating antibiograms
@@ -256,117 +171,119 @@
If used inside R Markdown or Quarto , the table will be printed in the right output format automatically (such as markdown, LaTeX, HTML, etc.).
-
+ antimicrobials = c ( aminoglycosides ( ) , carbapenems ( ) ) )
+#> [34mℹ For [48;5;255maminoglycosides()[49m using columns '[1mGEN[22m' (gentamicin), '[1mTOB[22m' (tobramycin), '[1mAMK[22m' (amikacin), and '[1mKAN[22m' (kanamycin)[39m
+#> [34mℹ For [48;5;255mcarbapenems()[49m using columns '[1mIPM[22m' (imipenem) and '[1mMEM[22m' (meropenem)[39m
+#> [31mℹ 502 combinations had less than [48;5;255mminimum = 30[49m results and were ignored[39m
+
-
-
+
+
CoNS
-0% (0-8%)
-86% (82-90%)
-52% (37-67%)
-0% (0-8%)
-52% (37-67%)
-22% (12-35%)
+0% (0-8%,N=43)
+86% (82-90%,N=309)
+52% (37-67%,N=48)
+0% (0-8%,N=43)
+52% (37-67%,N=48)
+22% (12-35%,N=55)
-E. coli
-100% (98-100%)
-98% (96-99%)
-100% (99-100%)
-
-100% (99-100%)
-97% (96-99%)
+E. coli
+100% (98-100%,N=171)
+98% (96-99%,N=460)
+100% (99-100%,N=422)
+
+100% (99-100%,N=418)
+97% (96-99%,N=462)
-E. faecalis
-0% (0-9%)
-0% (0-9%)
-100% (91-100%)
-0% (0-9%)
-
-0% (0-9%)
+E. faecalis
+0% (0-9%,N=39)
+0% (0-9%,N=39)
+100% (91-100%,N=38)
+0% (0-9%,N=39)
+
+0% (0-9%,N=39)
-K. pneumoniae
-
-90% (79-96%)
-100% (93-100%)
-
-100% (93-100%)
-90% (79-96%)
+K. pneumoniae
+
+90% (79-96%,N=58)
+100% (93-100%,N=51)
+
+100% (93-100%,N=53)
+90% (79-96%,N=58)
-P. aeruginosa
-
-100% (88-100%)
-
-0% (0-12%)
-
-100% (88-100%)
+P. aeruginosa
+
+100% (88-100%,N=30)
+
+0% (0-12%,N=30)
+
+100% (88-100%,N=30)
-P. mirabilis
-
-94% (80-99%)
-94% (79-99%)
-
-
-94% (80-99%)
+P. mirabilis
+
+94% (80-99%,N=34)
+94% (79-99%,N=32)
+
+
+94% (80-99%,N=34)
-S. aureus
-
-99% (97-100%)
-
-
-
-98% (92-100%)
+S. aureus
+
+99% (97-100%,N=233)
+
+
+
+98% (92-100%,N=86)
-S. epidermidis
-0% (0-8%)
-79% (71-85%)
-
-0% (0-8%)
-
-51% (40-61%)
+S. epidermidis
+0% (0-8%,N=44)
+79% (71-85%,N=163)
+
+0% (0-8%,N=44)
+
+51% (40-61%,N=89)
-S. hominis
-
-92% (84-97%)
-
-
-
-85% (74-93%)
+S. hominis
+
+92% (84-97%,N=80)
+
+
+
+85% (74-93%,N=62)
-S. pneumoniae
-0% (0-3%)
-0% (0-3%)
-
-0% (0-3%)
-
-0% (0-3%)
+S. pneumoniae
+0% (0-3%,N=117)
+0% (0-3%,N=117)
+
+0% (0-3%,N=117)
+
+0% (0-3%,N=117)
@@ -374,33 +291,33 @@
antibiogram ( example_isolates ,
antimicrobials = c ( "TZP" , "TZP+TOB" , "TZP+GEN" ) ,
- mo_transform = "gramstain" ,
- formatting_type = 14 )
-
+ mo_transform = "gramstain" )
+#> [31mℹ 3 combinations had less than [48;5;255mminimum = 30[49m results and were ignored[39m
+
-
-
-
-
+
+
+
+
Gram-negative
-88% (85-91%)
-99% (97-99%)
-98% (97-99%)
+88% (85-91%,N=641)
+99% (97-99%,N=691)
+98% (97-99%,N=693)
Gram-positive
-86% (82-89%)
-98% (96-98%)
-95% (93-97%)
+86% (82-89%,N=345)
+98% (96-98%,N=1044)
+95% (93-97%,N=550)
@@ -410,27 +327,33 @@
antimicrobials = c ( "cipro" , "tobra" , "genta" ) , # any arbitrary name or code will work
mo_transform = "gramstain" ,
ab_transform = "name" ,
- formatting_type = 14 ,
- language = "uk" ) # Ukrainian
+ language = "uk" ) # Ukrainian
+#> [31mℹ 3 combinations had less than [48;5;255mminimum = 30[49m results and were ignored[39m
+
+
+
+
+
+
Грамнегативні
-96% (95-98%)
-96% (94-97%)
-91% (88-93%)
+96% (95-98%,N=684)
+96% (94-97%,N=686)
+91% (88-93%,N=684)
Грампозитивні
-63% (60-66%)
-34% (31-38%)
-77% (74-80%)
+63% (60-66%,N=1170)
+34% (31-38%,N=665)
+77% (74-80%,N=724)
@@ -480,39 +403,13 @@
# and get their 95% confidence intervals using sir_confidence_interval():
summarise ( across ( c ( GEN , TOB ) ,
list ( total_R = resistance ,
- conf_int = function ( x ) sir_confidence_interval ( x , collapse = "-" ) ) ) )
-
-
-
-
-Clinical
-0.2289362
-0.205-0.254
-0.3147503
-0.284-0.347
-
-
-ICU
-0.2902655
-0.253-0.33
-0.4004739
-0.353-0.449
-
-
-Outpatient
-0.2000000
-0.131-0.285
-0.3676471
-0.254-0.493
-
-
-
+ conf_int = function ( x ) sir_confidence_interval ( x , collapse = "-" ) ) ) )
+#> # A tibble: 3 × 5
+#> ward GEN_total_R GEN_conf_int TOB_total_R TOB_conf_int
+#> <chr> <dbl> <chr> <dbl> <chr>
+#> 1 Clinical 0.2289362 0.205-0.254 0.3147503 0.284-0.347
+#> 2 ICU 0.2902655 0.253-0.33 0.4004739 0.353-0.449
+#> 3 Outpatient 0.2 0.131-0.285 0.3676471 0.254-0.493
Or use antimicrobial selectors to select a series of antibiotic columns:
-
-
-
-
-Clinical
-0.229
-0.315
-0.626
-1
-0.780
-
-
-ICU
-0.290
-0.400
-0.662
-1
-0.857
-
-
-Outpatient
-0.200
-0.368
-0.605
-
-0.889
-
-
-
+#> [34mℹ For [48;5;255maminoglycosides()[49m using columns '[1mGEN[22m' (gentamicin), '[1mTOB[22m' (tobramycin), '[1mAMK[22m' (amikacin), and '[1mKAN[22m' (kanamycin)[39m
+#> [34mℹ For [48;5;255mpolymyxins()[49m using column '[1mCOL[22m' (colistin)[39m
+#> Warning: There was 1 warning in `summarise()`.
+#> ℹ In argument: `across(c(aminoglycosides(), polymyxins()), resistance)`.
+#> ℹ In group 3: `ward = "Outpatient"`.
+#> Caused by warning:
+#> ! Introducing NA: only 23 results available for KAN in group: ward = "Outpatient" ([48;5;255mminimum[49m = 30).
+out
+#> # A tibble: 3 × 6
+#> ward GEN TOB AMK KAN COL
+#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
+#> 1 Clinical 0.2289362 0.3147503 0.6258993 1 0.7802956
+#> 2 ICU 0.2902655 0.4004739 0.6624473 1 0.8574144
+#> 3 Outpatient 0.2 0.3676471 0.6052632 NA 0.8888889
-
-
-
-
-
-
-
-
-
-
-
-
-Clinical
-0.229
-0.315
-0.626
-1
-0.780
-
-
-ICU
-0.290
-0.400
-0.662
-1
-0.857
-
-
-Outpatient
-0.200
-0.368
-0.605
-
-0.889
-
-
-
+out %>% set_ab_names ( )
+#> # A tibble: 3 × 6
+#> ward gentamicin tobramycin amikacin kanamycin colistin
+#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
+#> 1 Clinical 0.2289362 0.3147503 0.6258993 1 0.7802956
+#> 2 ICU 0.2902655 0.4004739 0.6624473 1 0.8574144
+#> 3 Outpatient 0.2 0.3676471 0.6052632 NA 0.8888889
# transform the antibiotic column to ATC codes:
-out %>% set_ab_names ( property = "atc" )
-
-
-
-
-
-
-
-
-
-
-
-
-Clinical
-0.229
-0.315
-0.626
-1
-0.780
-
-
-ICU
-0.290
-0.400
-0.662
-1
-0.857
-
-
-Outpatient
-0.200
-0.368
-0.605
-
-0.889
-
-
-
+out %>% set_ab_names ( property = "atc" )
+#> # A tibble: 3 × 6
+#> ward J01GB03 J01GB01 J01GB06 J01GB04 J01XB01
+#> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
+#> 1 Clinical 0.2289362 0.3147503 0.6258993 1 0.7802956
+#> 2 ICU 0.2902655 0.4004739 0.6624473 1 0.8574144
+#> 3 Outpatient 0.2 0.3676471 0.6052632 NA 0.8888889
@@ -714,7 +512,7 @@
Partners
-
The development of this package is part of, related to, or made possible by the following non-profit organisations and initiatives:
+
The initial development of this package was part of, related to, or made possible by the following non-profit organisations and initiatives:
diff --git a/news/index.html b/news/index.html
index bfb3d89c8..659bf4c7a 100644
--- a/news/index.html
+++ b/news/index.html
@@ -7,7 +7,7 @@
AMR (for R)
-
2.1.1.9249
+
2.1.1.9250
@@ -49,20 +49,20 @@
-
AMR 2.1.1.9249
+
AMR 2.1.1.9250
(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 .)
-
A New Milestone: AMR v3.0 with One Health Support (= Human + Veterinary + Environmental)
+
A New Milestone: AMR v3.0 with One Health Support (= Human + Veterinary + Environmental)
This package now supports not only tools for AMR data analysis in clinical settings, but also for veterinary and environmental microbiology. This was made possible through a collaboration with the University of Prince Edward Island’s Atlantic Veterinary College , Canada. To celebrate this great improvement of the package, we also updated the package logo to reflect this change.
-
Breaking
+
Breaking
Dataset antibiotics
has been renamed to antimicrobials
as the data set contains more than just antibiotics. Using antibiotics
will still work, but now returns a warning.
Removed all functions and references that used the deprecated rsi
class, which were all replaced with their sir
equivalents over two years ago.
Functions resistance_predict()
and sir_predict()
is now deprecated and will be removed in a future version. Use the tidymodels
framework instead, for which we wrote a basic introduction .
-
New
+
New
One Health implementation
Function as.sir()
now has extensive support for veterinary breakpoints from CLSI. Use breakpoint_type = "animal"
and set the host
argument to a variable that contains animal species names.
@@ -117,7 +117,7 @@
-
Changed
+
Changed
SIR interpretation
It is now possible to use column names for arguments guideline
, ab
, mo
, and uti
: as.sir(..., ab = "column1", mo = "column2", uti = "column3")
. This greatly improves the flexibility for users.
Users can now set their own criteria (using regular expressions) as to what should be considered S, I, R, SDD, and NI.
@@ -198,7 +198,7 @@
Added console colours support of sir
class for Positron
-
Other
+
Other
New website domain: https://amr-for-r.org ! The old domain (http://amr-for-r.org ) will remain to work.
Added Dr. Larisse Bolton and Aislinn Cook as contributors for their fantastic implementation of WISCA in a mathematically solid way
Added Matthew Saab, Dr. Jordan Stull, and Prof. Javier Sanchez as contributors for their tremendous input on veterinary breakpoints and interpretations
@@ -208,7 +208,7 @@
Stopped support for SAS (.xpt
) files, since their file structure and extremely inefficient and requires more disk space than GitHub allows in a single commit.
-
Older Versions
+
Older Versions
This changelog only contains changes from AMR v3.0 (March 2025) and later.
For prior v2 versions, please see our v2 archive .
For prior v1 versions, please see our v1 archive .
diff --git a/pkgdown.yml b/pkgdown.yml
index 354a2451d..37da980c3 100644
--- a/pkgdown.yml
+++ b/pkgdown.yml
@@ -11,7 +11,7 @@ articles:
PCA: PCA.html
welcome_to_AMR: welcome_to_AMR.html
WHONET: WHONET.html
-last_built: 2025-04-20T15:53Z
+last_built: 2025-04-21T13:41Z
urls:
reference: https://amr-for-r.org/reference
article: https://amr-for-r.org/articles
diff --git a/reference/AMR-deprecated.html b/reference/AMR-deprecated.html
index 145a2f02b..77c4138b6 100644
--- a/reference/AMR-deprecated.html
+++ b/reference/AMR-deprecated.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/AMR-options.html b/reference/AMR-options.html
index b06219e75..762585496 100644
--- a/reference/AMR-options.html
+++ b/reference/AMR-options.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/AMR.html b/reference/AMR.html
index ed97c8fca..bf834511f 100644
--- a/reference/AMR.html
+++ b/reference/AMR.html
@@ -21,7 +21,7 @@ The AMR package is available in English, Chinese, Czech, Danish, Dutch, Finnish,
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/WHOCC.html b/reference/WHOCC.html
index 520c46d0b..113820ac6 100644
--- a/reference/WHOCC.html
+++ b/reference/WHOCC.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/WHONET.html b/reference/WHONET.html
index 0f8da42ca..aae5f1935 100644
--- a/reference/WHONET.html
+++ b/reference/WHONET.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/ab_from_text.html b/reference/ab_from_text.html
index 5338c3985..0bec65b52 100644
--- a/reference/ab_from_text.html
+++ b/reference/ab_from_text.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/ab_property.html b/reference/ab_property.html
index e58d49b0f..d61ea232c 100644
--- a/reference/ab_property.html
+++ b/reference/ab_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/add_custom_antimicrobials.html b/reference/add_custom_antimicrobials.html
index 20b4184f3..593a26a15 100644
--- a/reference/add_custom_antimicrobials.html
+++ b/reference/add_custom_antimicrobials.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/add_custom_microorganisms.html b/reference/add_custom_microorganisms.html
index 0a6881603..2e34a97eb 100644
--- a/reference/add_custom_microorganisms.html
+++ b/reference/add_custom_microorganisms.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/age.html b/reference/age.html
index 8f6ae22db..50291245e 100644
--- a/reference/age.html
+++ b/reference/age.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
@@ -112,16 +112,16 @@
df
#> birth_date age age_exact age_at_y2k
-#> 1 1999-06-30 25 25.80548 0
-#> 2 1968-01-29 57 57.22192 31
-#> 3 1965-12-05 59 59.37260 34
-#> 4 1980-03-01 45 45.13699 19
-#> 5 1949-11-01 75 75.46575 50
-#> 6 1947-02-14 78 78.17808 52
-#> 7 1940-02-19 85 85.16438 59
-#> 8 1988-01-10 37 37.27397 11
-#> 9 1997-08-27 27 27.64658 2
-#> 10 1978-01-26 47 47.23014 21
+#> 1 1999-06-30 25 25.80822 0
+#> 2 1968-01-29 57 57.22466 31
+#> 3 1965-12-05 59 59.37534 34
+#> 4 1980-03-01 45 45.13973 19
+#> 5 1949-11-01 75 75.46849 50
+#> 6 1947-02-14 78 78.18082 52
+#> 7 1940-02-19 85 85.16712 59
+#> 8 1988-01-10 37 37.27671 11
+#> 9 1997-08-27 27 27.64932 2
+#> 10 1978-01-26 47 47.23288 21
On this page
diff --git a/reference/age_groups.html b/reference/age_groups.html
index e53b1066b..07a3b22b3 100644
--- a/reference/age_groups.html
+++ b/reference/age_groups.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/antibiogram.html b/reference/antibiogram.html
index 2a9d9fa4b..b487cd49f 100644
--- a/reference/antibiogram.html
+++ b/reference/antibiogram.html
@@ -9,7 +9,7 @@ Adhering to previously described approaches (see Source) and especially the Baye
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/antimicrobial_selectors.html b/reference/antimicrobial_selectors.html
index 4f87ac782..f03b5989c 100644
--- a/reference/antimicrobial_selectors.html
+++ b/reference/antimicrobial_selectors.html
@@ -17,7 +17,7 @@ my_data_with_all_these_columns %>%
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/antimicrobials.html b/reference/antimicrobials.html
index f41c28f5c..b9bd78d3e 100644
--- a/reference/antimicrobials.html
+++ b/reference/antimicrobials.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/as.ab.html b/reference/as.ab.html
index 1ae10b5b4..9528b84aa 100644
--- a/reference/as.ab.html
+++ b/reference/as.ab.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/as.av.html b/reference/as.av.html
index 07119b74a..54b42a2bc 100644
--- a/reference/as.av.html
+++ b/reference/as.av.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/as.disk.html b/reference/as.disk.html
index 578403287..6d2ac294d 100644
--- a/reference/as.disk.html
+++ b/reference/as.disk.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/as.mic.html b/reference/as.mic.html
index fbcdc1c35..edd22d9eb 100644
--- a/reference/as.mic.html
+++ b/reference/as.mic.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/as.mo.html b/reference/as.mo.html
index 1302f270a..6778f37ae 100644
--- a/reference/as.mo.html
+++ b/reference/as.mo.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/as.sir.html b/reference/as.sir.html
index bc9ab9614..f3be907c0 100644
--- a/reference/as.sir.html
+++ b/reference/as.sir.html
@@ -9,7 +9,7 @@ Breakpoints are currently implemented from EUCAST 2011-2025 and CLSI 2011-2025,
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
@@ -827,16 +827,16 @@ Breakpoints are currently implemented from EUCAST 2011-2025 and CLSI 2011-2025,
#> # A tibble: 65 × 17
#> datetime index method ab_given mo_given host_given input_given
#> <dttm> <int> <chr> <chr> <chr> <chr> <chr>
-#> 1 2025-04-20 15:54:17 1 DISK ampicillin Strep pneu human 18
-#> 2 2025-04-20 15:54:18 1 DISK AMP Escherich… human 20
-#> 3 2025-04-20 15:54:18 1 DISK AMP Escherich… human 20
+#> 1 2025-04-21 13:42:15 1 DISK ampicillin Strep pneu human 18
+#> 2 2025-04-21 13:42:16 1 DISK AMP Escherich… human 20
+#> 3 2025-04-21 13:42:16 1 DISK AMP Escherich… human 20
#> 4 NA NA NA NA NA NA NA
-#> 5 2025-04-20 15:54:18 1 DISK GEN Escherich… human 18
-#> 6 2025-04-20 15:54:18 1 DISK TOB Escherich… human 16
-#> 7 2025-04-20 15:54:19 1 MIC AMX B_STRPT_P… human 2
-#> 8 2025-04-20 15:54:19 1 MIC AMX B_STRPT_P… human 0.01
-#> 9 2025-04-20 15:54:19 2 MIC AMX B_STRPT_P… human 2
-#> 10 2025-04-20 15:54:19 3 MIC AMX B_STRPT_P… human 4
+#> 5 2025-04-21 13:42:16 1 DISK GEN Escherich… human 18
+#> 6 2025-04-21 13:42:17 1 DISK TOB Escherich… human 16
+#> 7 2025-04-21 13:42:17 1 MIC AMX B_STRPT_P… human 2
+#> 8 2025-04-21 13:42:18 1 MIC AMX B_STRPT_P… human 0.01
+#> 9 2025-04-21 13:42:18 2 MIC AMX B_STRPT_P… human 2
+#> 10 2025-04-21 13:42:18 3 MIC AMX B_STRPT_P… human 4
#> # ℹ 55 more rows
#> # ℹ 10 more variables: ab <ab>, mo <mo>, host <chr>, input <chr>,
#> # outcome <sir>, notes <chr>, guideline <chr>, ref_table <chr>, uti <lgl>,
diff --git a/reference/atc_online.html b/reference/atc_online.html
index 082494cb7..b8c3bf43f 100644
--- a/reference/atc_online.html
+++ b/reference/atc_online.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/av_from_text.html b/reference/av_from_text.html
index 814bd685f..8d9e6ef12 100644
--- a/reference/av_from_text.html
+++ b/reference/av_from_text.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/av_property.html b/reference/av_property.html
index 3628820c7..ae828c54d 100644
--- a/reference/av_property.html
+++ b/reference/av_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/availability.html b/reference/availability.html
index 72c6c93c7..82e787d90 100644
--- a/reference/availability.html
+++ b/reference/availability.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/bug_drug_combinations.html b/reference/bug_drug_combinations.html
index e6f9e5939..7bc1556ec 100644
--- a/reference/bug_drug_combinations.html
+++ b/reference/bug_drug_combinations.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/clinical_breakpoints.html b/reference/clinical_breakpoints.html
index 218f90f03..95413dc12 100644
--- a/reference/clinical_breakpoints.html
+++ b/reference/clinical_breakpoints.html
@@ -21,7 +21,7 @@ Use as.sir() to transform MICs or disks measurements to SIR values."> AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/count.html b/reference/count.html
index 11287c90b..8c540b996 100644
--- a/reference/count.html
+++ b/reference/count.html
@@ -9,7 +9,7 @@ count_resistant() should be used to count resistant isolates, count_susceptible(
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/custom_eucast_rules.html b/reference/custom_eucast_rules.html
index 6aa60c7c8..710855015 100644
--- a/reference/custom_eucast_rules.html
+++ b/reference/custom_eucast_rules.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/dosage.html b/reference/dosage.html
index 9f13ba1b4..a721e5745 100644
--- a/reference/dosage.html
+++ b/reference/dosage.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/eucast_rules.html b/reference/eucast_rules.html
index 8dd9f438d..c23b3ee9f 100644
--- a/reference/eucast_rules.html
+++ b/reference/eucast_rules.html
@@ -9,7 +9,7 @@ To improve the interpretation of the antibiogram before EUCAST rules are applied
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
@@ -130,7 +130,7 @@ Leclercq et al. EUCAST expert rules in antimicrobial susceptibility test
overwrite
-A logical indicating whether to overwrite non-NA
values (default: FALSE
). When FALSE
, only NA
values are modified. To ensure compliance with EUCAST guidelines, this should remain FALSE
, as EUCAST notes often state that an organism "should be tested for susceptibility to individual agents or be reported resistant.".
+A logical indicating whether to overwrite non-NA
values (default: FALSE
). When FALSE
, only non-SIR values are modified (i.e., any value that is not already S, I or R). To ensure compliance with EUCAST guidelines, this should remain FALSE
, as EUCAST notes often state that an organism "should be tested for susceptibility to individual agents or be reported resistant".
...
@@ -275,22 +275,20 @@ Leclercq et al. EUCAST expert rules in antimicrobial susceptibility test
eucast_dosage ( c ( "tobra" , "genta" , "cipro" ) , "iv" )
#> ℹ Dosages for antimicrobial drugs, as meant for 'EUCAST Clinical Breakpoint
#> Tables' v15.0 (2025). This note will be shown once per session.
-#> # A tibble: 3 × 4
-#> ab name standard_dosage high_dosage
-#> <ab> <chr> <chr> <chr>
-#> 1 TOB Tobramycin 6-7 mg/kg x 1 iv NA
-#> 2 GEN Gentamicin 6-7 mg/kg x 1 iv NA
-#> 3 CIP Ciprofloxacin 0.4 g x 2 iv 0.4 g x 3 iv
+#> # A tibble: 3 × 5
+#> ab name standard_dosage high_dosage eucast_version
+#> <ab> <chr> <chr> <chr> <dbl>
+#> 1 TOB Tobramycin 6-7 mg/kg x 1 iv NA 15
+#> 2 GEN Gentamicin 6-7 mg/kg x 1 iv NA 15
+#> 3 CIP Ciprofloxacin 0.4 g x 2 iv 0.4 g x 3 iv 15
eucast_dosage ( c ( "tobra" , "genta" , "cipro" ) , "iv" , version_breakpoints = 10 )
-#> ℹ Dosages for antimicrobial drugs, as meant for 'EUCAST Clinical Breakpoint
-#> Tables' v10.0 (2020). This note will be shown once per session.
-#> # A tibble: 3 × 4
-#> ab name standard_dosage high_dosage
-#> <ab> <chr> <chr> <chr>
-#> 1 TOB Tobramycin 6-7 mg/kg x 1 iv NA
-#> 2 GEN Gentamicin 6-7 mg/kg x 1 iv NA
-#> 3 CIP Ciprofloxacin 0.4 g x 2 iv 0.4 g x 3 iv
+#> # A tibble: 3 × 5
+#> ab name standard_dosage high_dosage eucast_version
+#> <ab> <chr> <chr> <chr> <dbl>
+#> 1 TOB Tobramycin NA NA NA
+#> 2 GEN Gentamicin NA NA NA
+#> 3 CIP Ciprofloxacin NA NA NA
On this page
diff --git a/reference/example_isolates.html b/reference/example_isolates.html
index 4030a1f3a..369d6c9cf 100644
--- a/reference/example_isolates.html
+++ b/reference/example_isolates.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/example_isolates_unclean.html b/reference/example_isolates_unclean.html
index f64ec965f..6ba16cdfb 100644
--- a/reference/example_isolates_unclean.html
+++ b/reference/example_isolates_unclean.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/export_ncbi_biosample.html b/reference/export_ncbi_biosample.html
index a4a7e0e25..de127cc20 100644
--- a/reference/export_ncbi_biosample.html
+++ b/reference/export_ncbi_biosample.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/first_isolate.html b/reference/first_isolate.html
index 9518d21ab..30f3c7a95 100644
--- a/reference/first_isolate.html
+++ b/reference/first_isolate.html
@@ -9,7 +9,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/g.test.html b/reference/g.test.html
index 008ae8fa9..7461261b7 100644
--- a/reference/g.test.html
+++ b/reference/g.test.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/get_episode.html b/reference/get_episode.html
index 4ef101b25..07750a6b3 100644
--- a/reference/get_episode.html
+++ b/reference/get_episode.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/ggplot_pca.html b/reference/ggplot_pca.html
index 44a91d16e..83e6c8e49 100644
--- a/reference/ggplot_pca.html
+++ b/reference/ggplot_pca.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/ggplot_sir.html b/reference/ggplot_sir.html
index e59904319..fe4cd53e6 100644
--- a/reference/ggplot_sir.html
+++ b/reference/ggplot_sir.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/guess_ab_col.html b/reference/guess_ab_col.html
index 52bdc049b..aae07f26a 100644
--- a/reference/guess_ab_col.html
+++ b/reference/guess_ab_col.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/index.html b/reference/index.html
index 3b62ab56b..70a009e1d 100644
--- a/reference/index.html
+++ b/reference/index.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/intrinsic_resistant.html b/reference/intrinsic_resistant.html
index afddbb6d9..09ef1a654 100644
--- a/reference/intrinsic_resistant.html
+++ b/reference/intrinsic_resistant.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/italicise_taxonomy.html b/reference/italicise_taxonomy.html
index 428169448..8906942a6 100644
--- a/reference/italicise_taxonomy.html
+++ b/reference/italicise_taxonomy.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/join.html b/reference/join.html
index 0972cfc58..f39295554 100644
--- a/reference/join.html
+++ b/reference/join.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/key_antimicrobials.html b/reference/key_antimicrobials.html
index 1550d9dc8..4728fc538 100644
--- a/reference/key_antimicrobials.html
+++ b/reference/key_antimicrobials.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/kurtosis.html b/reference/kurtosis.html
index 84806f761..73267c10b 100644
--- a/reference/kurtosis.html
+++ b/reference/kurtosis.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/like.html b/reference/like.html
index 9034d7511..55b62dea5 100644
--- a/reference/like.html
+++ b/reference/like.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/mdro.html b/reference/mdro.html
index 47e5f3073..7006f5806 100644
--- a/reference/mdro.html
+++ b/reference/mdro.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/mean_amr_distance.html b/reference/mean_amr_distance.html
index 0c6edd3a6..8510bc867 100644
--- a/reference/mean_amr_distance.html
+++ b/reference/mean_amr_distance.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/microorganisms.codes.html b/reference/microorganisms.codes.html
index 1737cccc8..7e0b80015 100644
--- a/reference/microorganisms.codes.html
+++ b/reference/microorganisms.codes.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/microorganisms.groups.html b/reference/microorganisms.groups.html
index 93ec11f5d..e384240af 100644
--- a/reference/microorganisms.groups.html
+++ b/reference/microorganisms.groups.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/microorganisms.html b/reference/microorganisms.html
index 838b0d1a4..718f39b32 100644
--- a/reference/microorganisms.html
+++ b/reference/microorganisms.html
@@ -9,7 +9,7 @@ This data set is carefully crafted, yet made 100% reproducible from public and a
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/mo_matching_score.html b/reference/mo_matching_score.html
index 3068a70bf..8f78ef499 100644
--- a/reference/mo_matching_score.html
+++ b/reference/mo_matching_score.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/mo_property.html b/reference/mo_property.html
index 79928d0dc..d78a04656 100644
--- a/reference/mo_property.html
+++ b/reference/mo_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/mo_source.html b/reference/mo_source.html
index 8edb2750b..0dd048028 100644
--- a/reference/mo_source.html
+++ b/reference/mo_source.html
@@ -9,7 +9,7 @@ This is the fastest way to have your organisation (or analysis) specific codes p
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/pca.html b/reference/pca.html
index 04aa66c04..5ad60bf4e 100644
--- a/reference/pca.html
+++ b/reference/pca.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/plot.html b/reference/plot.html
index c52dbd3e0..1ffb38fbd 100644
--- a/reference/plot.html
+++ b/reference/plot.html
@@ -9,7 +9,7 @@ Especially the scale_*_mic() functions are relevant wrappers to plot MIC values
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/proportion.html b/reference/proportion.html
index 38d78ebf7..6ce91af1c 100644
--- a/reference/proportion.html
+++ b/reference/proportion.html
@@ -9,7 +9,7 @@ resistance() should be used to calculate resistance, susceptibility() should be
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/random.html b/reference/random.html
index 2f198158a..fb82cf326 100644
--- a/reference/random.html
+++ b/reference/random.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/resistance_predict.html b/reference/resistance_predict.html
index 822a127fe..381c48f64 100644
--- a/reference/resistance_predict.html
+++ b/reference/resistance_predict.html
@@ -9,7 +9,7 @@ NOTE: These functions are deprecated and will be removed in a future version. Us
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/skewness.html b/reference/skewness.html
index 0e76a7337..4d2ee9d55 100644
--- a/reference/skewness.html
+++ b/reference/skewness.html
@@ -9,7 +9,7 @@ When negative ('left-skewed'): the left tail is longer; the mass of the distribu
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/top_n_microorganisms.html b/reference/top_n_microorganisms.html
index 79e6a255e..607079580 100644
--- a/reference/top_n_microorganisms.html
+++ b/reference/top_n_microorganisms.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/reference/translate.html b/reference/translate.html
index 0abd71f0a..9f7a7af3a 100644
--- a/reference/translate.html
+++ b/reference/translate.html
@@ -7,7 +7,7 @@
AMR (for R)
- 2.1.1.9249
+ 2.1.1.9250
diff --git a/search.json b/search.json
index 65c67c2bb..a9d0fd372 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"path":"https://amr-for-r.org/articles/AMR.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"How to conduct AMR data analysis","text":"Conducting AMR data analysis unfortunately requires -depth knowledge different scientific fields, makes hard right. least, requires: Good questions (always start !) reliable data thorough understanding (clinical) epidemiology, understand clinical epidemiological relevance possible bias results thorough understanding (clinical) microbiology/infectious diseases, understand microorganisms causal infections implications pharmaceutical treatment, well understanding intrinsic acquired microbial resistance Experience data analysis microbiological tests results, understand determination limitations MIC values interpretations SIR values Availability biological taxonomy microorganisms probably normalisation factors pharmaceuticals, defined daily doses (DDD) Available (inter-)national guidelines, profound methods apply course, instantly provide knowledge experience. AMR package, aimed providing (1) tools simplify antimicrobial resistance data cleaning, transformation analysis, (2) methods easily incorporate international guidelines (3) scientifically reliable reference data, including requirements mentioned . AMR package enables standardised reproducible AMR data analysis, application evidence-based rules, determination first isolates, translation various codes microorganisms antimicrobial agents, determination (multi-drug) resistant microorganisms, calculation antimicrobial resistance, prevalence future trends.","code":""},{"path":"https://amr-for-r.org/articles/AMR.html","id":"preparation","dir":"Articles","previous_headings":"","what":"Preparation","title":"How to conduct AMR data analysis","text":"tutorial, create fake demonstration data work . can skip Cleaning data already data ready. start analysis, try make structure data generally look like :","code":""},{"path":"https://amr-for-r.org/articles/AMR.html","id":"needed-r-packages","dir":"Articles","previous_headings":"Preparation","what":"Needed R packages","title":"How to conduct AMR data analysis","text":"many uses R, need additional packages AMR data analysis. package works closely together tidyverse packages dplyr ggplot2 RStudio. tidyverse tremendously improves way conduct data science - allows natural way writing syntaxes creating beautiful plots R. also use cleaner package, can used cleaning data creating frequency tables. AMR package contains data set example_isolates_unclean, might look data users extracted laboratory systems: AMR data analysis, like microorganism column contain valid, --date taxonomy, antibiotic columns cleaned SIR values well.","code":"library(dplyr) library(ggplot2) library(AMR) # (if not yet installed, install with:) # install.packages(c(\"dplyr\", \"ggplot2\", \"AMR\")) example_isolates_unclean #> # A tibble: 3,000 × 8 #> patient_id hospital date bacteria AMX AMC CIP GEN #> #> 1 J3 A 2012-11-21 E. coli R I S S #> 2 R7 A 2018-04-03 K. pneumoniae R I S S #> 3 P3 A 2014-09-19 E. coli R S S S #> 4 P10 A 2015-12-10 E. coli S I S S #> 5 B7 A 2015-03-02 E. coli S S S S #> 6 W3 A 2018-03-31 S. aureus R S R S #> 7 J8 A 2016-06-14 E. coli R S S S #> 8 M3 A 2015-10-25 E. coli R S S S #> 9 J3 A 2019-06-19 E. coli S S S S #> 10 G6 A 2015-04-27 S. aureus S S S S #> # ℹ 2,990 more rows # we will use 'our_data' as the data set name for this tutorial our_data <- example_isolates_unclean"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"taxonomy-of-microorganisms","dir":"Articles","previous_headings":"Preparation","what":"Taxonomy of microorganisms","title":"How to conduct AMR data analysis","text":".mo(), users can transform arbitrary microorganism names codes current taxonomy. AMR package contains --date taxonomic data. specific, currently included data retrieved 24 Jun 2024. codes AMR packages come .mo() short, still human readable. importantly, .mo() supports kinds input: first character codes denote taxonomic kingdom, Bacteria (B), Fungi (F), Protozoa (P). AMR package also contain functions directly retrieve taxonomic properties, name, genus, species, family, order, even Gram-stain. start mo_ use .mo() internally, still arbitrary user input can used: Now can thus clean data: Apparently, uncertainty translation taxonomic codes. Let’s check : ’s good.","code":"as.mo(\"Klebsiella pneumoniae\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"K. pneumoniae\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"KLEPNE\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"KLPN\") #> Class 'mo' #> [1] B_KLBSL_PNMN mo_family(\"K. pneumoniae\") #> [1] \"Enterobacteriaceae\" mo_genus(\"K. pneumoniae\") #> [1] \"Klebsiella\" mo_species(\"K. pneumoniae\") #> [1] \"pneumoniae\" mo_gramstain(\"Klebsiella pneumoniae\") #> [1] \"Gram-negative\" mo_ref(\"K. pneumoniae\") #> [1] \"Trevisan, 1887\" mo_snomed(\"K. pneumoniae\") #> [[1]] #> [1] \"1098101000112102\" \"446870005\" \"1098201000112108\" \"409801009\" #> [5] \"56415008\" \"714315002\" \"713926009\" our_data$bacteria <- as.mo(our_data$bacteria, info = TRUE) #> ℹ Retrieved values from the microorganisms.codes data set for \"ESCCOL\", #> \"KLEPNE\", \"STAAUR\", and \"STRPNE\". #> ℹ Microorganism translation was uncertain for four microorganisms. Run #> mo_uncertainties() to review these uncertainties, or use #> add_custom_microorganisms() to add custom entries. mo_uncertainties() #> Matching scores are based on the resemblance between the input and the full #> taxonomic name, and the pathogenicity in humans. See ?mo_matching_score. #> Colour keys: 0.000-0.549 0.550-0.649 0.650-0.749 0.750-1.000 #> #> -------------------------------------------------------------------------------- #> \"E. coli\" -> Escherichia coli (B_ESCHR_COLI, 0.688) #> Also matched: Enterococcus crotali (0.650), Escherichia coli coli #> (0.643), Escherichia coli expressing (0.611), Enterobacter cowanii #> (0.600), Enterococcus columbae (0.595), Enterococcus camelliae (0.591), #> Enterococcus casseliflavus (0.577), Enterobacter cloacae cloacae #> (0.571), Enterobacter cloacae complex (0.571), and Enterobacter cloacae #> dissolvens (0.565) #> -------------------------------------------------------------------------------- #> \"K. pneumoniae\" -> Klebsiella pneumoniae (B_KLBSL_PNMN, 0.786) #> Also matched: Klebsiella pneumoniae complex (0.707), Klebsiella #> pneumoniae ozaenae (0.707), Klebsiella pneumoniae pneumoniae (0.688), #> Klebsiella pneumoniae rhinoscleromatis (0.658), Klebsiella pasteurii #> (0.500), Klebsiella planticola (0.500), Kingella potus (0.400), #> Kluyveromyces pseudotropicale (0.386), Kluyveromyces pseudotropicalis #> (0.363), and Kosakonia pseudosacchari (0.361) #> -------------------------------------------------------------------------------- #> \"S. aureus\" -> Staphylococcus aureus (B_STPHY_AURS, 0.690) #> Also matched: Staphylococcus aureus aureus (0.643), Staphylococcus #> argenteus (0.625), Staphylococcus aureus anaerobius (0.625), #> Staphylococcus auricularis (0.615), Salmonella Aurelianis (0.595), #> Salmonella Aarhus (0.588), Salmonella Amounderness (0.587), #> Staphylococcus argensis (0.587), Streptococcus australis (0.587), and #> Salmonella choleraesuis arizonae (0.562) #> -------------------------------------------------------------------------------- #> \"S. pneumoniae\" -> Streptococcus pneumoniae (B_STRPT_PNMN, 0.750) #> Also matched: Streptococcus pseudopneumoniae (0.700), Streptococcus #> phocae salmonis (0.552), Serratia proteamaculans quinovora (0.545), #> Streptococcus pseudoporcinus (0.536), Staphylococcus piscifermentans #> (0.533), Staphylococcus pseudintermedius (0.532), Serratia #> proteamaculans proteamaculans (0.526), Streptococcus gallolyticus #> pasteurianus (0.526), Salmonella Portanigra (0.524), and Streptococcus #> periodonticum (0.519) #> #> Only the first 10 other matches of each record are shown. Run #> print(mo_uncertainties(), n = ...) to view more entries, or save #> mo_uncertainties() to an object."},{"path":"https://amr-for-r.org/articles/AMR.html","id":"antibiotic-results","dir":"Articles","previous_headings":"Preparation","what":"Antibiotic results","title":"How to conduct AMR data analysis","text":"column antibiotic test results must also cleaned. AMR package comes three new data types work test results: mic minimal inhibitory concentrations (MIC), disk disk diffusion diameters, sir SIR data interpreted already. package can also determine SIR values based MIC disk diffusion values, read .sir() page. now, just clean SIR columns data using dplyr: basically cleaning, time start data inclusion.","code":"# method 1, be explicit about the columns: our_data <- our_data %>% mutate_at(vars(AMX:GEN), as.sir) # method 2, let the AMR package determine the eligible columns our_data <- our_data %>% mutate_if(is_sir_eligible, as.sir) # result: our_data #> # A tibble: 3,000 × 8 #> patient_id hospital date bacteria AMX AMC CIP GEN #> #> 1 J3 A 2012-11-21 B_ESCHR_COLI R I S S #> 2 R7 A 2018-04-03 B_KLBSL_PNMN R I S S #> 3 P3 A 2014-09-19 B_ESCHR_COLI R S S S #> 4 P10 A 2015-12-10 B_ESCHR_COLI S I S S #> 5 B7 A 2015-03-02 B_ESCHR_COLI S S S S #> 6 W3 A 2018-03-31 B_STPHY_AURS R S R S #> 7 J8 A 2016-06-14 B_ESCHR_COLI R S S S #> 8 M3 A 2015-10-25 B_ESCHR_COLI R S S S #> 9 J3 A 2019-06-19 B_ESCHR_COLI S S S S #> 10 G6 A 2015-04-27 B_STPHY_AURS S S S S #> # ℹ 2,990 more rows"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"first-isolates","dir":"Articles","previous_headings":"Preparation","what":"First isolates","title":"How to conduct AMR data analysis","text":"need know isolates can actually use analysis without repetition bias. conduct analysis antimicrobial resistance, must include first isolate every patient per episode (Hindler et al., Clin Infect Dis. 2007). , easily get overestimate underestimate resistance antibiotic. Imagine patient admitted MRSA found 5 different blood cultures following weeks (yes, countries like Netherlands blood drawing policies). resistance percentage oxacillin isolates overestimated, included MRSA . clearly selection bias. Clinical Laboratory Standards Institute (CLSI) appoints follows: (…) preparing cumulative antibiogram guide clinical decisions empirical antimicrobial therapy initial infections, first isolate given species per patient, per analysis period (eg, one year) included, irrespective body site, antimicrobial susceptibility profile, phenotypical characteristics (eg, biotype). first isolate easily identified, cumulative antimicrobial susceptibility test data prepared using first isolate generally comparable cumulative antimicrobial susceptibility test data calculated methods, providing duplicate isolates excluded. M39-A4 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 4th Edition. CLSI, 2014. Chapter 6.4 AMR package includes methodology first_isolate() function able apply four different methods defined Hindler et al. 2007: phenotype-based, episode-based, patient-based, isolate-based. right method depends goals analysis, default phenotype-based method case method properly correct duplicate isolates. Read methods first_isolate() page. outcome function can easily added data: 91% suitable resistance analysis! can now filter filter() function, also dplyr package: future use, two syntaxes can shortened: end 2 724 isolates analysis. Now data looks like: Time analysis.","code":"our_data <- our_data %>% mutate(first = first_isolate(info = TRUE)) #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Using column 'bacteria' as input for col_mo. #> ℹ Using column 'date' as input for col_date. #> ℹ Using column 'patient_id' as input for col_patient_id. #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #> of 2 #> => Found 2,724 'phenotype-based' first isolates (90.8% of total where a #> microbial ID was available) our_data_1st <- our_data %>% filter(first == TRUE) our_data_1st <- our_data %>% filter_first_isolate() our_data_1st #> # A tibble: 2,724 × 9 #> patient_id hospital date bacteria AMX AMC CIP GEN first #> #> 1 J3 A 2012-11-21 B_ESCHR_COLI R I S S TRUE #> 2 R7 A 2018-04-03 B_KLBSL_PNMN R I S S TRUE #> 3 P3 A 2014-09-19 B_ESCHR_COLI R S S S TRUE #> 4 P10 A 2015-12-10 B_ESCHR_COLI S I S S TRUE #> 5 B7 A 2015-03-02 B_ESCHR_COLI S S S S TRUE #> 6 W3 A 2018-03-31 B_STPHY_AURS R S R S TRUE #> 7 M3 A 2015-10-25 B_ESCHR_COLI R S S S TRUE #> 8 J3 A 2019-06-19 B_ESCHR_COLI S S S S TRUE #> 9 G6 A 2015-04-27 B_STPHY_AURS S S S S TRUE #> 10 P4 A 2011-06-21 B_ESCHR_COLI S S S S TRUE #> # ℹ 2,714 more rows"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"analysing-the-data","dir":"Articles","previous_headings":"","what":"Analysing the data","title":"How to conduct AMR data analysis","text":"base R summary() function gives good first impression, comes support new mo sir classes now data set:","code":"summary(our_data_1st) #> patient_id hospital date #> Length:2724 Length:2724 Min. :2011-01-01 #> Class :character Class :character 1st Qu.:2013-04-07 #> Mode :character Mode :character Median :2015-06-03 #> Mean :2015-06-09 #> 3rd Qu.:2017-08-11 #> Max. :2019-12-27 #> bacteria AMX AMC #> Class :mo Class:sir Class:sir #> :0 %S :41.6% (n=1133) %S :52.6% (n=1432) #> Unique:4 %SDD : 0.0% (n=0) %SDD : 0.0% (n=0) #> #1 :B_ESCHR_COLI %I :16.4% (n=446) %I :12.2% (n=333) #> #2 :B_STPHY_AURS %R :42.0% (n=1145) %R :35.2% (n=959) #> #3 :B_STRPT_PNMN %NI : 0.0% (n=0) %NI : 0.0% (n=0) #> CIP GEN first #> Class:sir Class:sir Mode:logical #> %S :52.5% (n=1431) %S :61.0% (n=1661) TRUE:2724 #> %SDD : 0.0% (n=0) %SDD : 0.0% (n=0) #> %I : 6.5% (n=176) %I : 3.0% (n=82) #> %R :41.0% (n=1117) %R :36.0% (n=981) #> %NI : 0.0% (n=0) %NI : 0.0% (n=0) glimpse(our_data_1st) #> Rows: 2,724 #> Columns: 9 #> $ patient_id \"J3\", \"R7\", \"P3\", \"P10\", \"B7\", \"W3\", \"M3\", \"J3\", \"G6\", \"P4\"… #> $ hospital \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\",… #> $ date 2012-11-21, 2018-04-03, 2014-09-19, 2015-12-10, 2015-03-02… #> $ bacteria \"B_ESCHR_COLI\", \"B_KLBSL_PNMN\", \"B_ESCHR_COLI\", \"B_ESCHR_COL… #> $ AMX R, R, R, S, S, R, R, S, S, S, S, R, S, S, R, R, R, R, S, R,… #> $ AMC I, I, S, I, S, S, S, S, S, S, S, S, S, S, S, S, S, R, S, S,… #> $ CIP S, S, S, S, S, R, S, S, S, S, S, S, S, S, S, S, S, S, S, S,… #> $ GEN S, S, S, S, S, S, S, S, S, S, S, R, S, S, S, S, S, S, S, S,… #> $ first TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE,… # number of unique values per column: sapply(our_data_1st, n_distinct) #> patient_id hospital date bacteria AMX AMC CIP #> 260 3 1854 4 3 3 3 #> GEN first #> 3 1"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"availability-of-species","dir":"Articles","previous_headings":"Analysing the data","what":"Availability of species","title":"How to conduct AMR data analysis","text":"just get idea species distributed, create frequency table count() based name microorganisms:","code":"our_data %>% count(mo_name(bacteria), sort = TRUE) #> # A tibble: 4 × 2 #> `mo_name(bacteria)` n #> #> 1 Escherichia coli 1518 #> 2 Staphylococcus aureus 730 #> 3 Streptococcus pneumoniae 426 #> 4 Klebsiella pneumoniae 326 our_data_1st %>% count(mo_name(bacteria), sort = TRUE) #> # A tibble: 4 × 2 #> `mo_name(bacteria)` n #> #> 1 Escherichia coli 1321 #> 2 Staphylococcus aureus 682 #> 3 Streptococcus pneumoniae 402 #> 4 Klebsiella pneumoniae 319"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"select-and-filter-with-antibiotic-selectors","dir":"Articles","previous_headings":"Analysing the data","what":"Select and filter with antibiotic selectors","title":"How to conduct AMR data analysis","text":"Using -called antibiotic class selectors, can select filter columns based antibiotic class antibiotic results :","code":"our_data_1st %>% select(date, aminoglycosides()) #> ℹ For aminoglycosides() using column 'GEN' (gentamicin) #> # A tibble: 2,724 × 2 #> date GEN #> #> 1 2012-11-21 S #> 2 2018-04-03 S #> 3 2014-09-19 S #> 4 2015-12-10 S #> 5 2015-03-02 S #> 6 2018-03-31 S #> 7 2015-10-25 S #> 8 2019-06-19 S #> 9 2015-04-27 S #> 10 2011-06-21 S #> # ℹ 2,714 more rows our_data_1st %>% select(bacteria, betalactams()) #> ℹ For betalactams() using columns 'AMX' (amoxicillin) and 'AMC' #> (amoxicillin/clavulanic acid) #> # A tibble: 2,724 × 3 #> bacteria AMX AMC #> #> 1 B_ESCHR_COLI R I #> 2 B_KLBSL_PNMN R I #> 3 B_ESCHR_COLI R S #> 4 B_ESCHR_COLI S I #> 5 B_ESCHR_COLI S S #> 6 B_STPHY_AURS R S #> 7 B_ESCHR_COLI R S #> 8 B_ESCHR_COLI S S #> 9 B_STPHY_AURS S S #> 10 B_ESCHR_COLI S S #> # ℹ 2,714 more rows our_data_1st %>% select(bacteria, where(is.sir)) #> # A tibble: 2,724 × 5 #> bacteria AMX AMC CIP GEN #> #> 1 B_ESCHR_COLI R I S S #> 2 B_KLBSL_PNMN R I S S #> 3 B_ESCHR_COLI R S S S #> 4 B_ESCHR_COLI S I S S #> 5 B_ESCHR_COLI S S S S #> 6 B_STPHY_AURS R S R S #> 7 B_ESCHR_COLI R S S S #> 8 B_ESCHR_COLI S S S S #> 9 B_STPHY_AURS S S S S #> 10 B_ESCHR_COLI S S S S #> # ℹ 2,714 more rows # filtering using AB selectors is also possible: our_data_1st %>% filter(any(aminoglycosides() == \"R\")) #> ℹ For aminoglycosides() using column 'GEN' (gentamicin) #> # A tibble: 981 × 9 #> patient_id hospital date bacteria AMX AMC CIP GEN first #> #> 1 J5 A 2017-12-25 B_STRPT_PNMN R S S R TRUE #> 2 X1 A 2017-07-04 B_STPHY_AURS R S S R TRUE #> 3 B3 A 2016-07-24 B_ESCHR_COLI S S S R TRUE #> 4 V7 A 2012-04-03 B_ESCHR_COLI S S S R TRUE #> 5 C9 A 2017-03-23 B_ESCHR_COLI S S S R TRUE #> 6 R1 A 2018-06-10 B_STPHY_AURS S S S R TRUE #> 7 S2 A 2013-07-19 B_STRPT_PNMN S S S R TRUE #> 8 P5 A 2019-03-09 B_STPHY_AURS S S S R TRUE #> 9 Q8 A 2019-08-10 B_STPHY_AURS S S S R TRUE #> 10 K5 A 2013-03-15 B_STRPT_PNMN S S S R TRUE #> # ℹ 971 more rows our_data_1st %>% filter(all(betalactams() == \"R\")) #> ℹ For betalactams() using columns 'AMX' (amoxicillin) and 'AMC' #> (amoxicillin/clavulanic acid) #> # A tibble: 462 × 9 #> patient_id hospital date bacteria AMX AMC CIP GEN first #> #> 1 M7 A 2013-07-22 B_STRPT_PNMN R R S S TRUE #> 2 R10 A 2013-12-20 B_STPHY_AURS R R S S TRUE #> 3 R7 A 2015-10-25 B_STPHY_AURS R R S S TRUE #> 4 R8 A 2019-10-25 B_STPHY_AURS R R S S TRUE #> 5 B6 A 2016-11-20 B_ESCHR_COLI R R R R TRUE #> 6 I7 A 2015-08-19 B_ESCHR_COLI R R S S TRUE #> 7 N3 A 2014-12-29 B_STRPT_PNMN R R R S TRUE #> 8 Q2 A 2019-09-22 B_ESCHR_COLI R R S S TRUE #> 9 X7 A 2011-03-20 B_ESCHR_COLI R R S R TRUE #> 10 V1 A 2018-08-07 B_STPHY_AURS R R S S TRUE #> # ℹ 452 more rows # even works in base R (since R 3.0): our_data_1st[all(betalactams() == \"R\"), ] #> ℹ For betalactams() using columns 'AMX' (amoxicillin) and 'AMC' #> (amoxicillin/clavulanic acid) #> # A tibble: 462 × 9 #> patient_id hospital date bacteria AMX AMC CIP GEN first #> #> 1 M7 A 2013-07-22 B_STRPT_PNMN R R S S TRUE #> 2 R10 A 2013-12-20 B_STPHY_AURS R R S S TRUE #> 3 R7 A 2015-10-25 B_STPHY_AURS R R S S TRUE #> 4 R8 A 2019-10-25 B_STPHY_AURS R R S S TRUE #> 5 B6 A 2016-11-20 B_ESCHR_COLI R R R R TRUE #> 6 I7 A 2015-08-19 B_ESCHR_COLI R R S S TRUE #> 7 N3 A 2014-12-29 B_STRPT_PNMN R R R S TRUE #> 8 Q2 A 2019-09-22 B_ESCHR_COLI R R S S TRUE #> 9 X7 A 2011-03-20 B_ESCHR_COLI R R S R TRUE #> 10 V1 A 2018-08-07 B_STPHY_AURS R R S S TRUE #> # ℹ 452 more rows"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"generate-antibiograms","dir":"Articles","previous_headings":"Analysing the data","what":"Generate antibiograms","title":"How to conduct AMR data analysis","text":"Since AMR v2.0 (March 2023), easy create different types antibiograms, support 20 different languages. four antibiogram types, proposed Klinker et al. (2021, DOI 10.1177/20499361211011373), supported new antibiogram() function: Traditional Antibiogram (TA) e.g, susceptibility Pseudomonas aeruginosa piperacillin/tazobactam (TZP) Combination Antibiogram (CA) e.g, sdditional susceptibility Pseudomonas aeruginosa TZP + tobramycin versus TZP alone Syndromic Antibiogram (SA) e.g, susceptibility Pseudomonas aeruginosa TZP among respiratory specimens (obtained among ICU patients ) Weighted-Incidence Syndromic Combination Antibiogram (WISCA) e.g, susceptibility Pseudomonas aeruginosa TZP among respiratory specimens (obtained among ICU patients ) male patients age >=65 years heart failure section, show use antibiogram() function create antibiogram types. starters, included example_isolates data set looks like:","code":"example_isolates #> # A tibble: 2,000 × 46 #> date patient age gender ward mo PEN OXA FLC AMX #> #> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA #> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA #> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R #> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R #> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA #> # ℹ 1,990 more rows #> # ℹ 36 more variables: AMC , AMP , TZP , CZO , FEP , #> # CXM , FOX , CTX , CAZ , CRO , GEN , #> # TOB , AMK , KAN , TMP , SXT , NIT , #> # FOS , LNZ , CIP , MFX , VAN , TEC , #> # TCY , TGC , DOX , ERY , CLI , AZM , #> # IPM , MEM , MTR , CHL , COL , MUP , …"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"traditional-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Traditional Antibiogram","title":"How to conduct AMR data analysis","text":"create traditional antibiogram, simply state antibiotics used. antibiotics argument antibiogram() function supports (combination) previously mentioned antibiotic class selectors: Notice antibiogram() function automatically prints right format using Quarto R Markdown (page), even applies italics taxonomic names (using italicise_taxonomy() internally). also uses language OS either English, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Italian, Japanese, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian. next example, force language Spanish using language argument:","code":"antibiogram(example_isolates, antibiotics = c(aminoglycosides(), carbapenems())) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) antibiogram(example_isolates, mo_transform = \"gramstain\", antibiotics = aminoglycosides(), ab_transform = \"name\", language = \"es\") #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin)"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"combined-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Combined Antibiogram","title":"How to conduct AMR data analysis","text":"create combined antibiogram, use antibiotic codes names plus + character like :","code":"combined_ab <- antibiogram(example_isolates, antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"), ab_transform = NULL) combined_ab"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"syndromic-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Syndromic Antibiogram","title":"How to conduct AMR data analysis","text":"create syndromic antibiogram, syndromic_group argument must used. can column data, e.g. ifelse() calculations based certain columns:","code":"antibiogram(example_isolates, antibiotics = c(aminoglycosides(), carbapenems()), syndromic_group = \"ward\") #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem)"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"weighted-incidence-syndromic-combination-antibiogram-wisca","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Weighted-Incidence Syndromic Combination Antibiogram (WISCA)","title":"How to conduct AMR data analysis","text":"create Weighted-Incidence Syndromic Combination Antibiogram (WISCA), simply set wisca = TRUE antibiogram() function, use dedicated wisca() function. Unlike traditional antibiograms, WISCA provides syndrome-based susceptibility estimates, weighted pathogen incidence antimicrobial susceptibility patterns. WISCA uses Bayesian decision model integrate data multiple pathogens, improving empirical therapy guidance, especially low-incidence infections. pathogen-agnostic, meaning results syndrome-based rather stratified microorganism. reliable results, ensure data includes first isolates (use first_isolate()) consider filtering top n species (use top_n_microorganisms()), WISCA outcomes meaningful based robust incidence estimates. patient- syndrome-specific WISCA, run function grouped tibble, .e., using group_by() first:","code":"example_isolates %>% wisca(antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"), minimum = 10) # Recommended threshold: ≥30 example_isolates %>% top_n_microorganisms(n = 10) %>% group_by(age_group = age_groups(age, c(25, 50, 75)), gender) %>% wisca(antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"))"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"plotting-antibiograms","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Plotting antibiograms","title":"How to conduct AMR data analysis","text":"Antibiograms can plotted using autoplot() ggplot2 packages, since AMR package provides extension function: calculate antimicrobial resistance sensible way, also correcting results, use resistance() susceptibility() functions.","code":"autoplot(combined_ab)"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"resistance-percentages","dir":"Articles","previous_headings":"Analysing the data","what":"Resistance percentages","title":"How to conduct AMR data analysis","text":"functions resistance() susceptibility() can used calculate antimicrobial resistance susceptibility. specific analyses, functions proportion_S(), proportion_SI(), proportion_I(), proportion_IR() proportion_R() can used determine proportion specific antimicrobial outcome. functions contain minimum argument, denoting minimum required number test results returning value. functions otherwise return NA. default minimum = 30, following CLSI M39-A4 guideline applying microbial epidemiology. per EUCAST guideline 2019, calculate resistance proportion R (proportion_R(), equal resistance()) susceptibility proportion S (proportion_SI(), equal susceptibility()). functions can used : can used conjunction group_by() summarise(), dplyr package:","code":"our_data_1st %>% resistance(AMX) #> [1] 0.4203377 our_data_1st %>% group_by(hospital) %>% summarise(amoxicillin = resistance(AMX)) #> # A tibble: 3 × 2 #> hospital amoxicillin #> #> 1 A 0.340 #> 2 B 0.551 #> 3 C 0.370"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"interpreting-mic-and-disk-diffusion-values","dir":"Articles","previous_headings":"Analysing the data","what":"Interpreting MIC and Disk Diffusion Values","title":"How to conduct AMR data analysis","text":"Minimal inhibitory concentration (MIC) values disk diffusion diameters can interpreted clinical breakpoints (SIR) using .sir(). ’s example randomly generated MIC values Klebsiella pneumoniae ciprofloxacin: allows direct interpretation according EUCAST CLSI breakpoints, facilitating automated AMR data processing.","code":"set.seed(123) mic_values <- random_mic(100) sir_values <- as.sir(mic_values, mo = \"K. pneumoniae\", ab = \"cipro\", guideline = \"EUCAST 2024\") #> #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #> all the details of the breakpoint interpretations. #> #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), EUCAST 2024... NOTE #> • Multiple breakpoints available for ciprofloxacin (CIP) in Klebsiella pneumoniae - assuming body site 'Non-meningitis'. my_data <- tibble(MIC = mic_values, SIR = sir_values) my_data #> # A tibble: 100 × 2 #> MIC SIR #> #> 1 16.000 R #> 2 0.005 S #> 3 1.000 R #> 4 >=256.000 R #> 5 2.000 R #> 6 0.025 S #> 7 16.000 R #> 8 0.025 S #> 9 0.500 I #> 10 0.005 S #> # ℹ 90 more rows"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"plotting-mic-and-sir-interpretations","dir":"Articles","previous_headings":"Analysing the data","what":"Plotting MIC and SIR Interpretations","title":"How to conduct AMR data analysis","text":"can visualise MIC distributions SIR interpretations using ggplot2, using new scale_y_mic() y-axis scale_colour_sir() colour-code SIR categories. plot provides intuitive way assess susceptibility patterns across different groups incorporating clinical breakpoints. straightforward less manual approach, ggplot2’s function autoplot() extended package directly plot MIC disk diffusion values: Author: Dr. Matthijs Berends, 23rd Feb 2025","code":"# add a group my_data$group <- rep(c(\"A\", \"B\", \"C\", \"D\"), each = 25) ggplot(my_data, aes(x = group, y = MIC, colour = SIR)) + geom_jitter(width = 0.2, size = 2) + geom_boxplot(fill = NA, colour = \"grey40\") + scale_y_mic() + scale_colour_sir() + labs(title = \"MIC Distribution and SIR Interpretation\", x = \"Sample Groups\", y = \"MIC (mg/L)\") autoplot(mic_values) # by providing `mo` and `ab`, colours will indicate the SIR interpretation: autoplot(mic_values, mo = \"K. pneumoniae\", ab = \"cipro\", guideline = \"EUCAST 2024\")"},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"AMR for Python","text":"AMR package R powerful tool antimicrobial resistance (AMR) analysis. provides extensive features handling microbial antimicrobial data. However, work primarily Python, now intuitive option available: AMR Python package. Python package wrapper around AMR R package. uses rpy2 package internally. Despite need R installed, Python users can now easily work AMR data directly Python code.","code":""},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"prerequisites","dir":"Articles","previous_headings":"","what":"Prerequisites","title":"AMR for Python","text":"package tested virtual environment (venv). can set environment running: can activate environment, venv ready work .","code":"# linux and macOS: python -m venv /path/to/new/virtual/environment # Windows: python -m venv C:\\path\\to\\new\\virtual\\environment"},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"install-amr","dir":"Articles","previous_headings":"","what":"Install AMR","title":"AMR for Python","text":"Since Python package available official Python Package Index, can just run: Make sure R installed. need install AMR R package, installed automatically. Linux: macOS (using Homebrew): Windows, visit CRAN download page download install R.","code":"pip install AMR # Ubuntu / Debian sudo apt install r-base # Fedora: sudo dnf install R # CentOS/RHEL sudo yum install R brew install r"},{"path":[]},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"cleaning-taxonomy","dir":"Articles","previous_headings":"Examples of Usage","what":"Cleaning Taxonomy","title":"AMR for Python","text":"’s example demonstrates clean microorganism drug names using AMR Python package:","code":"import pandas as pd import AMR # Sample data data = { \"MOs\": ['E. coli', 'ESCCOL', 'esco', 'Esche coli'], \"Drug\": ['Cipro', 'CIP', 'J01MA02', 'Ciproxin'] } df = pd.DataFrame(data) # Use AMR functions to clean microorganism and drug names df['MO_clean'] = AMR.mo_name(df['MOs']) df['Drug_clean'] = AMR.ab_name(df['Drug']) # Display the results print(df)"},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"explanation","dir":"Articles","previous_headings":"Examples of Usage > Cleaning Taxonomy","what":"Explanation","title":"AMR for Python","text":"mo_name: function standardises microorganism names. , different variations Escherichia coli (“E. coli”, “ESCCOL”, “esco”, “Esche coli”) converted correct, standardised form, “Escherichia coli”. ab_name: Similarly, function standardises antimicrobial names. different representations ciprofloxacin (e.g., “Cipro”, “CIP”, “J01MA02”, “Ciproxin”) converted standard name, “Ciprofloxacin”.","code":""},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"calculating-amr","dir":"Articles","previous_headings":"Examples of Usage","what":"Calculating AMR","title":"AMR for Python","text":"","code":"import AMR import pandas as pd df = AMR.example_isolates result = AMR.resistance(df[\"AMX\"]) print(result) [0.59555556]"},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"generating-antibiograms","dir":"Articles","previous_headings":"Examples of Usage","what":"Generating Antibiograms","title":"AMR for Python","text":"One core functions AMR package generating antibiogram, table summarises antimicrobial susceptibility bacterial isolates. ’s can generate antibiogram Python: example, generate antibiogram selecting various antibiotics.","code":"result2a = AMR.antibiogram(df[[\"mo\", \"AMX\", \"CIP\", \"TZP\"]]) print(result2a) result2b = AMR.antibiogram(df[[\"mo\", \"AMX\", \"CIP\", \"TZP\"]], mo_transform = \"gramstain\") print(result2b)"},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"taxonomic-data-sets-now-in-python","dir":"Articles","previous_headings":"Examples of Usage","what":"Taxonomic Data Sets Now in Python!","title":"AMR for Python","text":"Python user, might like important data sets AMR R package, microorganisms, antimicrobials, clinical_breakpoints, example_isolates, now available regular Python data frames:","code":"AMR.microorganisms AMR.antimicrobials"},{"path":"https://amr-for-r.org/articles/AMR_for_Python.html","id":"conclusion","dir":"Articles","previous_headings":"","what":"Conclusion","title":"AMR for Python","text":"AMR Python package, Python users can now effortlessly call R functions AMR R package. eliminates need complex rpy2 configurations provides clean, easy--use interface antimicrobial resistance analysis. examples provided demonstrate can applied typical workflows, standardising microorganism antimicrobial names calculating resistance. just running import AMR, users can seamlessly integrate robust features R AMR package Python workflows. Whether ’re cleaning data analysing resistance patterns, AMR Python package makes easy work AMR data Python.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"example-1-using-antimicrobial-selectors","dir":"Articles","previous_headings":"","what":"Example 1: Using Antimicrobial Selectors","title":"AMR with tidymodels","text":"leveraging power tidymodels AMR package, ’ll build reproducible machine learning workflow predict Gramstain microorganism two important antibiotic classes: aminoglycosides beta-lactams.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"objective","dir":"Articles","previous_headings":"Example 1: Using Antimicrobial Selectors","what":"Objective","title":"AMR with tidymodels","text":"goal build predictive model using tidymodels framework determine Gramstain microorganism based microbial data. : Preprocess data using selector functions aminoglycosides() betalactams(). Define logistic regression model prediction. Use structured tidymodels workflow preprocess, train, evaluate model.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"data-preparation","dir":"Articles","previous_headings":"Example 1: Using Antimicrobial Selectors","what":"Data Preparation","title":"AMR with tidymodels","text":"begin loading required libraries preparing example_isolates dataset AMR package. Prepare data: Explanation: aminoglycosides() betalactams() dynamically select columns antimicrobials classes. drop_na() ensures model receives complete cases training.","code":"# Load required libraries library(AMR) # For AMR data analysis library(tidymodels) # For machine learning workflows, and data manipulation (dplyr, tidyr, ...) # Your data could look like this: example_isolates #> # A tibble: 2,000 × 46 #> date patient age gender ward mo PEN OXA FLC AMX #> #> 1 2002-01-02 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA #> 2 2002-01-03 A77334 65 F Clinical B_ESCHR_COLI R NA NA NA #> 3 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 4 2002-01-07 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 5 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 6 2002-01-13 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 7 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R #> 8 2002-01-14 462729 78 M Clinical B_STPHY_AURS R NA S R #> 9 2002-01-16 067927 45 F ICU B_STPHY_EPDR R NA R NA #> 10 2002-01-17 858515 79 F ICU B_STPHY_EPDR R NA S NA #> # ℹ 1,990 more rows #> # ℹ 36 more variables: AMC , AMP , TZP , CZO , FEP , #> # CXM , FOX , CTX , CAZ , CRO , GEN , #> # TOB , AMK , KAN , TMP , SXT , NIT , #> # FOS , LNZ , CIP , MFX , VAN , TEC , #> # TCY , TGC , DOX , ERY , CLI , AZM , #> # IPM , MEM , MTR , CHL , COL , MUP , … # Select relevant columns for prediction data <- example_isolates %>% # select AB results dynamically select(mo, aminoglycosides(), betalactams()) %>% # replace NAs with NI (not-interpretable) mutate(across(where(is.sir), ~replace_na(.x, \"NI\")), # make factors of SIR columns across(where(is.sir), as.integer), # get Gramstain of microorganisms mo = as.factor(mo_gramstain(mo))) %>% # drop NAs - the ones without a Gramstain (fungi, etc.) drop_na() #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For betalactams() using columns 'PEN' (benzylpenicillin), 'OXA' #> (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #> (amoxicillin/clavulanic acid), 'AMP' (ampicillin), 'TZP' #> (piperacillin/tazobactam), 'CZO' (cefazolin), 'FEP' (cefepime), 'CXM' #> (cefuroxime), 'FOX' (cefoxitin), 'CTX' (cefotaxime), 'CAZ' (ceftazidime), #> 'CRO' (ceftriaxone), 'IPM' (imipenem), and 'MEM' (meropenem)"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"defining-the-workflow","dir":"Articles","previous_headings":"Example 1: Using Antimicrobial Selectors","what":"Defining the Workflow","title":"AMR with tidymodels","text":"now define tidymodels workflow, consists three steps: preprocessing, model specification, fitting.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"preprocessing-with-a-recipe","dir":"Articles","previous_headings":"Example 1: Using Antimicrobial Selectors > Defining the Workflow","what":"1. Preprocessing with a Recipe","title":"AMR with tidymodels","text":"create recipe preprocess data modelling. recipe includes least one preprocessing operation, like step_corr(), necessary parameters can estimated training set using prep(): Explanation: recipe(mo ~ ., data = data) take mo column outcome columns predictors. step_corr() removes predictors (.e., antibiotic columns) higher correlation 90%. Notice recipe contains just antimicrobial selector functions - need define columns specifically. preparation (retrieved prep()) can see columns variables ‘AMX’ ‘CTX’ removed correlate much existing, variables.","code":"# Define the recipe for data preprocessing resistance_recipe <- recipe(mo ~ ., data = data) %>% step_corr(c(aminoglycosides(), betalactams()), threshold = 0.9) resistance_recipe #> #> ── Recipe ────────────────────────────────────────────────────────────────────── #> #> ── Inputs #> Number of variables by role #> outcome: 1 #> predictor: 20 #> #> ── Operations #> • Correlation filter on: c(aminoglycosides(), betalactams()) prep(resistance_recipe) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #> (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For betalactams() using columns 'PEN' (benzylpenicillin), 'OXA' #> (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #> (amoxicillin/clavulanic acid), 'AMP' (ampicillin), 'TZP' #> (piperacillin/tazobactam), 'CZO' (cefazolin), 'FEP' (cefepime), 'CXM' #> (cefuroxime), 'FOX' (cefoxitin), 'CTX' (cefotaxime), 'CAZ' (ceftazidime), #> 'CRO' (ceftriaxone), 'IPM' (imipenem), and 'MEM' (meropenem) #> #> ── Recipe ────────────────────────────────────────────────────────────────────── #> #> ── Inputs #> Number of variables by role #> outcome: 1 #> predictor: 20 #> #> ── Training information #> Training data contained 1968 data points and no incomplete rows. #> #> ── Operations #> • Correlation filter on: AMX CTX | Trained"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"specifying-the-model","dir":"Articles","previous_headings":"Example 1: Using Antimicrobial Selectors > Defining the Workflow","what":"2. Specifying the Model","title":"AMR with tidymodels","text":"define logistic regression model since resistance prediction binary classification task. Explanation: logistic_reg() sets logistic regression model. set_engine(\"glm\") specifies use R’s built-GLM engine.","code":"# Specify a logistic regression model logistic_model <- logistic_reg() %>% set_engine(\"glm\") # Use the Generalised Linear Model engine logistic_model #> Logistic Regression Model Specification (classification) #> #> Computational engine: glm"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"building-the-workflow","dir":"Articles","previous_headings":"Example 1: Using Antimicrobial Selectors > Defining the Workflow","what":"3. Building the Workflow","title":"AMR with tidymodels","text":"bundle recipe model together workflow, organises entire modelling process.","code":"# Combine the recipe and model into a workflow resistance_workflow <- workflow() %>% add_recipe(resistance_recipe) %>% # Add the preprocessing recipe add_model(logistic_model) # Add the logistic regression model resistance_workflow #> ══ Workflow ════════════════════════════════════════════════════════════════════ #> Preprocessor: Recipe #> Model: logistic_reg() #> #> ── Preprocessor ──────────────────────────────────────────────────────────────── #> 1 Recipe Step #> #> • step_corr() #> #> ── Model ─────────────────────────────────────────────────────────────────────── #> Logistic Regression Model Specification (classification) #> #> Computational engine: glm"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"training-and-evaluating-the-model","dir":"Articles","previous_headings":"Example 1: Using Antimicrobial Selectors","what":"Training and Evaluating the Model","title":"AMR with tidymodels","text":"train model, split data training testing sets. , fit workflow training set evaluate performance. Explanation: initial_split() splits data training testing sets. fit() trains workflow training set. Notice fit(), antimicrobial selector functions internally called . training, functions called since stored recipe. Next, evaluate model testing data. Explanation: predict() generates predictions testing set. metrics() computes evaluation metrics like accuracy kappa. appears can predict Gram stain 99.5% accuracy based AMR results aminoglycosides beta-lactam antibiotics. ROC curve looks like :","code":"# Split data into training and testing sets set.seed(123) # For reproducibility data_split <- initial_split(data, prop = 0.8) # 80% training, 20% testing training_data <- training(data_split) # Training set testing_data <- testing(data_split) # Testing set # Fit the workflow to the training data fitted_workflow <- resistance_workflow %>% fit(training_data) # Train the model # Make predictions on the testing set predictions <- fitted_workflow %>% predict(testing_data) # Generate predictions probabilities <- fitted_workflow %>% predict(testing_data, type = \"prob\") # Generate probabilities predictions <- predictions %>% bind_cols(probabilities) %>% bind_cols(testing_data) # Combine with true labels predictions #> # A tibble: 394 × 24 #> .pred_class `.pred_Gram-negative` `.pred_Gram-positive` mo GEN TOB #> #> 1 Gram-positive 1.07e- 1 8.93e- 1 Gram-p… 5 5 #> 2 Gram-positive 3.17e- 8 1.00e+ 0 Gram-p… 5 1 #> 3 Gram-negative 9.99e- 1 1.42e- 3 Gram-n… 5 5 #> 4 Gram-positive 2.22e-16 1 e+ 0 Gram-p… 5 5 #> 5 Gram-negative 9.46e- 1 5.42e- 2 Gram-n… 5 5 #> 6 Gram-positive 1.07e- 1 8.93e- 1 Gram-p… 5 5 #> 7 Gram-positive 2.22e-16 1 e+ 0 Gram-p… 1 5 #> 8 Gram-positive 2.22e-16 1 e+ 0 Gram-p… 4 4 #> 9 Gram-negative 1 e+ 0 2.22e-16 Gram-n… 1 1 #> 10 Gram-positive 6.05e-11 1.00e+ 0 Gram-p… 4 4 #> # ℹ 384 more rows #> # ℹ 18 more variables: AMK , KAN , PEN , OXA , FLC , #> # AMX , AMC , AMP , TZP , CZO , FEP , #> # CXM , FOX , CTX , CAZ , CRO , IPM , MEM # Evaluate model performance metrics <- predictions %>% metrics(truth = mo, estimate = .pred_class) # Calculate performance metrics metrics #> # A tibble: 2 × 3 #> .metric .estimator .estimate #> #> 1 accuracy binary 0.995 #> 2 kap binary 0.989 # To assess some other model properties, you can make our own `metrics()` function our_metrics <- metric_set(accuracy, kap, ppv, npv) # add Positive Predictive Value and Negative Predictive Value metrics2 <- predictions %>% our_metrics(truth = mo, estimate = .pred_class) # run again on our `our_metrics()` function metrics2 #> # A tibble: 4 × 3 #> .metric .estimator .estimate #> #> 1 accuracy binary 0.995 #> 2 kap binary 0.989 #> 3 ppv binary 0.987 #> 4 npv binary 1 predictions %>% roc_curve(mo, `.pred_Gram-negative`) %>% autoplot()"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"conclusion","dir":"Articles","previous_headings":"Example 1: Using Antimicrobial Selectors","what":"Conclusion","title":"AMR with tidymodels","text":"post, demonstrated build machine learning pipeline tidymodels framework AMR package. combining selector functions like aminoglycosides() betalactams() tidymodels, efficiently prepared data, trained model, evaluated performance. workflow extensible antimicrobial classes resistance patterns, empowering users analyse AMR data systematically reproducibly.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"example-2-predicting-amr-over-time","dir":"Articles","previous_headings":"","what":"Example 2: Predicting AMR Over Time","title":"AMR with tidymodels","text":"second example, aim predict antimicrobial resistance (AMR) trends time using tidymodels. model resistance three antibiotics (amoxicillin AMX, amoxicillin-clavulanic acid AMC, ciprofloxacin CIP), based historical data grouped year hospital ward.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"objective-1","dir":"Articles","previous_headings":"Example 2: Predicting AMR Over Time","what":"Objective","title":"AMR with tidymodels","text":"goal : Prepare dataset aggregating resistance data time. Define regression model predict AMR trends. Use tidymodels preprocess, train, evaluate model.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"data-preparation-1","dir":"Articles","previous_headings":"Example 2: Predicting AMR Over Time","what":"Data Preparation","title":"AMR with tidymodels","text":"start transforming example_isolates dataset structured time-series format. Explanation: mo_name(mo): Converts microbial codes proper species names. resistance(): Converts AMR results numeric values (proportion resistant isolates). group_by(year, ward, species): Aggregates resistance rates year ward.","code":"# Load required libraries library(AMR) library(tidymodels) # Transform dataset data_time <- example_isolates %>% top_n_microorganisms(n = 10) %>% # Filter on the top #10 species mutate(year = as.integer(format(date, \"%Y\")), # Extract year from date gramstain = mo_gramstain(mo)) %>% # Get taxonomic names group_by(year, gramstain) %>% summarise(across(c(AMX, AMC, CIP), function(x) resistance(x, minimum = 0), .names = \"res_{.col}\"), .groups = \"drop\") %>% filter(!is.na(res_AMX) & !is.na(res_AMC) & !is.na(res_CIP)) # Drop missing values #> ℹ Using column 'mo' as input for col_mo. data_time #> # A tibble: 32 × 5 #> year gramstain res_AMX res_AMC res_CIP #> #> 1 2002 Gram-negative 1 0.105 0.0606 #> 2 2002 Gram-positive 0.838 0.182 0.162 #> 3 2003 Gram-negative 1 0.0714 0 #> 4 2003 Gram-positive 0.714 0.244 0.154 #> 5 2004 Gram-negative 0.464 0.0938 0 #> 6 2004 Gram-positive 0.849 0.299 0.244 #> 7 2005 Gram-negative 0.412 0.132 0.0588 #> 8 2005 Gram-positive 0.882 0.382 0.154 #> 9 2006 Gram-negative 0.379 0 0.1 #> 10 2006 Gram-positive 0.778 0.333 0.353 #> # ℹ 22 more rows"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"defining-the-workflow-1","dir":"Articles","previous_headings":"Example 2: Predicting AMR Over Time","what":"Defining the Workflow","title":"AMR with tidymodels","text":"now define modelling workflow, consists preprocessing step, model specification, fitting process.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"preprocessing-with-a-recipe-1","dir":"Articles","previous_headings":"Example 2: Predicting AMR Over Time > Defining the Workflow","what":"1. Preprocessing with a Recipe","title":"AMR with tidymodels","text":"Explanation: step_dummy(): Encodes categorical variables (ward, species) numerical indicators. step_normalize(): Normalises year variable. step_nzv(): Removes near-zero variance predictors.","code":"# Define the recipe resistance_recipe_time <- recipe(res_AMX ~ year + gramstain, data = data_time) %>% step_dummy(gramstain, one_hot = TRUE) %>% # Convert categorical to numerical step_normalize(year) %>% # Normalise year for better model performance step_nzv(all_predictors()) # Remove near-zero variance predictors resistance_recipe_time #> #> ── Recipe ────────────────────────────────────────────────────────────────────── #> #> ── Inputs #> Number of variables by role #> outcome: 1 #> predictor: 2 #> #> ── Operations #> • Dummy variables from: gramstain #> • Centering and scaling for: year #> • Sparse, unbalanced variable filter on: all_predictors()"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"specifying-the-model-1","dir":"Articles","previous_headings":"Example 2: Predicting AMR Over Time > Defining the Workflow","what":"2. Specifying the Model","title":"AMR with tidymodels","text":"use linear regression model predict resistance trends. Explanation: linear_reg(): Defines linear regression model. set_engine(\"lm\"): Uses R’s built-linear regression engine.","code":"# Define the linear regression model lm_model <- linear_reg() %>% set_engine(\"lm\") # Use linear regression lm_model #> Linear Regression Model Specification (regression) #> #> Computational engine: lm"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"building-the-workflow-1","dir":"Articles","previous_headings":"Example 2: Predicting AMR Over Time > Defining the Workflow","what":"3. Building the Workflow","title":"AMR with tidymodels","text":"combine preprocessing recipe model workflow.","code":"# Create workflow resistance_workflow_time <- workflow() %>% add_recipe(resistance_recipe_time) %>% add_model(lm_model) resistance_workflow_time #> ══ Workflow ════════════════════════════════════════════════════════════════════ #> Preprocessor: Recipe #> Model: linear_reg() #> #> ── Preprocessor ──────────────────────────────────────────────────────────────── #> 3 Recipe Steps #> #> • step_dummy() #> • step_normalize() #> • step_nzv() #> #> ── Model ─────────────────────────────────────────────────────────────────────── #> Linear Regression Model Specification (regression) #> #> Computational engine: lm"},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"training-and-evaluating-the-model-1","dir":"Articles","previous_headings":"Example 2: Predicting AMR Over Time","what":"Training and Evaluating the Model","title":"AMR with tidymodels","text":"split data training testing sets, fit model, evaluate performance. Explanation: initial_split(): Splits data training testing sets. fit(): Trains workflow. predict(): Generates resistance predictions. metrics(): Evaluates model performance.","code":"# Split the data set.seed(123) data_split_time <- initial_split(data_time, prop = 0.8) train_time <- training(data_split_time) test_time <- testing(data_split_time) # Train the model fitted_workflow_time <- resistance_workflow_time %>% fit(train_time) # Make predictions predictions_time <- fitted_workflow_time %>% predict(test_time) %>% bind_cols(test_time) # Evaluate model metrics_time <- predictions_time %>% metrics(truth = res_AMX, estimate = .pred) metrics_time #> # A tibble: 3 × 3 #> .metric .estimator .estimate #>