@@ -254,7 +254,11 @@ Longest: 40
# our transformed antibiotic columns
# amoxicillin/clavulanic acid (J01CR02) as an example
-data %>% freq ( AMC_ND2 )
+data %>% freq ( AMC_ND2 )
+#> ℹ `susceptibility()` assumes the EUCAST guideline and thus considers the
+#> 'I' category susceptible. Set the `guideline` argument or the
+#> `AMR_guideline` option to either "CLSI" or "EUCAST", see `?AMR-options` .
+#> ℹ This message will be shown once per session.
Frequency table
Class: factor > ordered > sir (numeric)
Length: 500
diff --git a/articles/WHONET.md b/articles/WHONET.md
index 0f07eabf7..21b8030f4 100644
--- a/articles/WHONET.md
+++ b/articles/WHONET.md
@@ -101,6 +101,10 @@ Longest: 40
# our transformed antibiotic columns
# amoxicillin/clavulanic acid (J01CR02) as an example
data %>% freq(AMC_ND2)
+#> ℹ `susceptibility()` assumes the EUCAST guideline and thus considers the
+#> 'I' category susceptible. Set the `guideline` argument or the
+#> `AMR_guideline` option to either "CLSI" or "EUCAST", see `?AMR-options`.
+#> ℹ This message will be shown once per session.
```
**Frequency table**
diff --git a/articles/WISCA.html b/articles/WISCA.html
index 7c560e4f7..b9277f717 100644
--- a/articles/WISCA.html
+++ b/articles/WISCA.html
@@ -30,7 +30,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/articles/datasets.html b/articles/datasets.html
index c042f62cf..d9fe441a1 100644
--- a/articles/datasets.html
+++ b/articles/datasets.html
@@ -30,7 +30,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
@@ -80,7 +80,7 @@
-
AMR 3.0.1.9020
+
AMR 3.0.1.9021
-
New
+
New
Integration with the tidymodels framework to allow seamless use of SIR, MIC and disk data in modelling pipelines via recipes
-
Fixes
+
Fixes
Fixed a bug in antibiogram() for when no antimicrobials are set
-Fixed a bug in as.sir() where for numeric input the arguments S, i, and R would not be considered (#244 )
+Fixed a bug in as.sir() where for numeric input the arguments S, I, and R would not be considered (#244 )
Fixed some foreign translations of antimicrobial drugs
Fixed a bug for printing column names to the console when using mutate_at(vars(...), as.mic) (#249 )
Fixed a bug to disregard NI for susceptibility proportion functions
Fixed Italian translation of CoNS to Stafilococco coagulasi-negativo and CoPS to Stafilococco coagulasi-positivo (#256 )
-
Updates
+
Updates
+susceptibility() and resistance() gained the argument guideline, which defaults to EUCAST, for interpreting the ‘I’ category correctly.
+
as.mic() and rescale_mic() gained the argument round_to_next_log2, which can be set to TRUE to round all values up to the nearest next log2 level (#255 )
antimicrobials$group is now a list instead of a character, to contain any group the drug is in (#246 )
diff --git a/news/index.md b/news/index.md
index 71368577a..b75f2580f 100644
--- a/news/index.md
+++ b/news/index.md
@@ -1,6 +1,6 @@
# Changelog
-## AMR 3.0.1.9020
+## AMR 3.0.1.9021
#### New
@@ -45,7 +45,7 @@
[`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md) for
when no antimicrobials are set
- Fixed a bug in [`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
- where for numeric input the arguments `S`, `i`, and `R` would not be
+ where for numeric input the arguments `S`, `I`, and `R` would not be
considered ([\#244](https://github.com/msberends/AMR/issues/244))
- Fixed some foreign translations of antimicrobial drugs
- Fixed a bug for printing column names to the console when using
@@ -58,6 +58,10 @@
#### Updates
+- [`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
+ and [`resistance()`](https://amr-for-r.org/reference/proportion.md)
+ gained the argument `guideline`, which defaults to EUCAST, for
+ interpreting the ‘I’ category correctly.
- [`as.mic()`](https://amr-for-r.org/reference/as.mic.md) and
[`rescale_mic()`](https://amr-for-r.org/reference/as.mic.md) gained
the argument `round_to_next_log2`, which can be set to `TRUE` to round
diff --git a/pkgdown.yml b/pkgdown.yml
index e30d0b1e8..49fb6eaf4 100644
--- a/pkgdown.yml
+++ b/pkgdown.yml
@@ -10,7 +10,7 @@ articles:
PCA: PCA.html
WHONET: WHONET.html
WISCA: WISCA.html
-last_built: 2026-02-09T12:49Z
+last_built: 2026-02-12T19:40Z
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 5464c08e8..c9c3fc4a8 100644
--- a/reference/AMR-deprecated.html
+++ b/reference/AMR-deprecated.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/AMR-options.html b/reference/AMR-options.html
index 05f0b6321..60a14d25b 100644
--- a/reference/AMR-options.html
+++ b/reference/AMR-options.html
@@ -1,5 +1,7 @@
-Options for the AMR package — AMR-options • AMR (for R)
+Options for the AMR package — AMR-options • AMR (for R)
Skip to contents
@@ -7,7 +9,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
@@ -50,12 +52,13 @@
-
This is an overview of all the package-specific options() you can set in the AMR package.
+
This is an overview of all the package-specific options you can set in the AMR package. Set them using the options() function, e.g.:
+
options(AMR_guideline = "CLSI")
-
Options
+
Options (alphabetical order)
AMR_antibiogram_formatting_type A numeric (1-22) to use in antibiogram() , to indicate which formatting type to use.
@@ -65,6 +68,11 @@
AMR_custom_ab A file location to an RDS file, to use custom antimicrobial drugs with this package. This is explained in add_custom_antimicrobials() .
AMR_custom_mo A file location to an RDS file, to use custom microorganisms with this package. This is explained in add_custom_microorganisms() .
AMR_eucastrules A character to set the default types of rules for eucast_rules() function, must be one or more of: "breakpoints", "expert", "other", "custom", "all", and defaults to c("breakpoints", "expert").
+AMR_guideline A character to set the default guideline used throughout the AMR package wherever a guideline argument is available. This option is used as the default in e.g. as.sir() , resistance() , susceptibility() , interpretive_rules() and many plotting functions. While unset , the AMR package uses the latest implemented EUCAST guideline (currently EUCAST 2025).
For as.sir() , this determines which clinical breakpoint guideline is used to interpret MIC values and disk diffusion diameters. It can be either the guideline name (e.g., "CLSI" or "EUCAST") or the name including a year (e.g., "CLSI 2019"). Supported guidelines are EUCAST 2011 to 2025, and CLSI 2011 to 2025.
+For resistance() and susceptibility() , this setting determines how the "I" (Intermediate / Increased exposure) category is handled in calculations. Under CLSI, "I" is considered resistant in susceptibility calculations; under EUCAST, "I" is considered susceptible in susceptibility calculations. Explicitly setting this option ensures reproducible AMR proportion estimates.
+For interpretive_rules() , this determines which guideline-specific interpretive (expert) rules are applied to antimicrobial test results, either EUCAST or CLSI.
+For many plotting functions (e.g., for MIC or disk diffusion values), supplying mo and ab enables automatic SIR-based interpretative colouring. These colours are derived from as.sir() in the background and therefore depend on the active guideline setting, which again uses EUCAST 2025 if not set explicitly.
+
AMR_guideline A character to set the default guideline for interpreting MIC values and disk diffusion diameters with as.sir() . Can be only the guideline name (e.g., "CLSI") or the name with a year (e.g. "CLSI 2019"). The default to the latest implemented EUCAST guideline, currently "EUCAST 2025". Supported guideline are currently EUCAST (2011-2025) and CLSI (2011-2025).
AMR_ignore_pattern A regular expression to ignore (i.e., make NA) any match given in as.mo() and all mo_* functions.
AMR_include_PKPD A logical to use in as.sir() , to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is TRUE.
@@ -87,7 +95,7 @@
Share Options Within Team
-For a more global approach, e.g. within a (data) team, save an options file to a remote file location, such as a shared network drive, and have each user read in this file automatically at start-up. This would work in this way:
Save a plain text file to e.g. "X:/team_folder/R_options.R" and fill it with preferred settings.
+For a more collaborative approach, e.g. within a (data) team, save an options file to a remote file location, such as a shared network drive, and have each user read in this file automatically at start-up. This would work in this way:
Save a plain text file to e.g. "X:/team_folder/R_options.R" and fill it with preferred settings.
For each user, open the .Rprofile file using utils::file.edit("~/.Rprofile") and put in there:
source ( "X:/team_folder/R_options.R" )
Reload R/RStudio and check the settings with getOption() , e.g. getOption("AMR_locale") if you have set that value.
diff --git a/reference/AMR-options.md b/reference/AMR-options.md
index fefe51e94..6b20bfefb 100644
--- a/reference/AMR-options.md
+++ b/reference/AMR-options.md
@@ -1,10 +1,12 @@
# Options for the AMR package
-This is an overview of all the package-specific
-[`options()`](https://rdrr.io/r/base/options.html) you can set in the
-`AMR` package.
+This is an overview of all the package-specific options you can set in
+the `AMR` package. Set them using the
+[`options()`](https://rdrr.io/r/base/options.html) function, e.g.:
-## Options
+`options(AMR_guideline = "CLSI")`
+
+## Options (alphabetical order)
- `AMR_antibiogram_formatting_type`
A [numeric](https://rdrr.io/r/base/numeric.html) (1-22) to use in
@@ -52,6 +54,46 @@ This is an overview of all the package-specific
`"other"`, `"custom"`, `"all"`, and defaults to
`c("breakpoints", "expert")`.
+- `AMR_guideline`
+ A [character](https://rdrr.io/r/base/character.html) to set the
+ default guideline used throughout the `AMR` package wherever a
+ `guideline` argument is available. This option is used as the default
+ in e.g. [`as.sir()`](https://amr-for-r.org/reference/as.sir.md),
+ [`resistance()`](https://amr-for-r.org/reference/proportion.md),
+ [`susceptibility()`](https://amr-for-r.org/reference/proportion.md),
+ [`interpretive_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
+ and many plotting functions. **While unset**, the AMR package uses the
+ latest implemented EUCAST guideline (currently EUCAST 2025).
+
+ - For [`as.sir()`](https://amr-for-r.org/reference/as.sir.md), this
+ determines which clinical breakpoint guideline is used to interpret
+ MIC values and disk diffusion diameters. It can be either the
+ guideline name (e.g., `"CLSI"` or `"EUCAST"`) or the name including
+ a year (e.g., `"CLSI 2019"`). Supported guidelines are EUCAST 2011
+ to 2025, and CLSI 2011 to 2025.
+
+ - For [`resistance()`](https://amr-for-r.org/reference/proportion.md)
+ and
+ [`susceptibility()`](https://amr-for-r.org/reference/proportion.md),
+ this setting determines how the `"I"` (Intermediate / Increased
+ exposure) category is handled in calculations. Under CLSI, `"I"` is
+ considered *resistant* in susceptibility calculations; under EUCAST,
+ `"I"` is considered *susceptible* in susceptibility calculations.
+ Explicitly setting this option ensures reproducible AMR proportion
+ estimates.
+
+ - For
+ [`interpretive_rules()`](https://amr-for-r.org/reference/interpretive_rules.md),
+ this determines which guideline-specific interpretive (expert) rules
+ are applied to antimicrobial test results, either EUCAST or CLSI.
+
+ - For many plotting functions (e.g., for MIC or disk diffusion
+ values), supplying `mo` and `ab` enables automatic SIR-based
+ interpretative colouring. These colours are derived from
+ [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) in the
+ background and therefore depend on the active `guideline` setting,
+ which again uses EUCAST 2025 if not set explicitly.
+
- `AMR_guideline`
A [character](https://rdrr.io/r/base/character.html) to set the
default guideline for interpreting MIC values and disk diffusion
@@ -132,10 +174,10 @@ rules when interpreting MIC values with
### Share Options Within Team
-For a more global approach, e.g. within a (data) team, save an options
-file to a remote file location, such as a shared network drive, and have
-each user read in this file automatically at start-up. This would work
-in this way:
+For a more collaborative approach, e.g. within a (data) team, save an
+options file to a remote file location, such as a shared network drive,
+and have each user read in this file automatically at start-up. This
+would work in this way:
1. Save a plain text file to e.g. "X:/team_folder/R_options.R" and fill
it with preferred settings.
diff --git a/reference/AMR.html b/reference/AMR.html
index ba06b276f..c73acdad1 100644
--- a/reference/AMR.html
+++ b/reference/AMR.html
@@ -21,7 +21,7 @@ The AMR package is available in English, Arabic, Bengali, Chinese, Czech, Danish
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/WHOCC.html b/reference/WHOCC.html
index cc0c461a3..3bd4c3d61 100644
--- a/reference/WHOCC.html
+++ b/reference/WHOCC.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/WHONET.html b/reference/WHONET.html
index 27a8bce29..c209b41ba 100644
--- a/reference/WHONET.html
+++ b/reference/WHONET.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/ab_from_text.html b/reference/ab_from_text.html
index b05d13c54..2f87cb109 100644
--- a/reference/ab_from_text.html
+++ b/reference/ab_from_text.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/ab_property.html b/reference/ab_property.html
index c2968a82b..f8b8e8919 100644
--- a/reference/ab_property.html
+++ b/reference/ab_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/add_custom_antimicrobials.html b/reference/add_custom_antimicrobials.html
index 911da88d8..34265352c 100644
--- a/reference/add_custom_antimicrobials.html
+++ b/reference/add_custom_antimicrobials.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/add_custom_microorganisms.html b/reference/add_custom_microorganisms.html
index d4d05e5a5..d445256c8 100644
--- a/reference/add_custom_microorganisms.html
+++ b/reference/add_custom_microorganisms.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/age.html b/reference/age.html
index 84846c011..a6670075c 100644
--- a/reference/age.html
+++ b/reference/age.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
@@ -112,16 +112,16 @@
df
#> birth_date age age_exact age_at_y2k
-#> 1 1980-02-27 45 45.95068 19
-#> 2 1953-07-26 72 72.54247 46
-#> 3 1949-09-02 76 76.43836 50
-#> 4 1986-08-03 39 39.52055 13
-#> 5 1932-11-19 93 93.22466 67
-#> 6 1949-03-30 76 76.86575 50
-#> 7 1996-06-23 29 29.63288 3
-#> 8 1963-09-16 62 62.40000 36
-#> 9 1952-05-16 73 73.73699 47
-#> 10 1952-11-14 73 73.23836 47
+#> 1 1980-02-27 45 45.95890 19
+#> 2 1953-07-26 72 72.55068 46
+#> 3 1949-09-02 76 76.44658 50
+#> 4 1986-08-03 39 39.52877 13
+#> 5 1932-11-19 93 93.23288 67
+#> 6 1949-03-30 76 76.87397 50
+#> 7 1996-06-23 29 29.64110 3
+#> 8 1963-09-16 62 62.40822 36
+#> 9 1952-05-16 73 73.74521 47
+#> 10 1952-11-14 73 73.24658 47
On this page
diff --git a/reference/age.md b/reference/age.md
index ee729e4fd..4b0094257 100644
--- a/reference/age.md
+++ b/reference/age.md
@@ -81,14 +81,14 @@ df$age_at_y2k <- age(df$birth_date, "2000-01-01")
df
#> birth_date age age_exact age_at_y2k
-#> 1 1980-02-27 45 45.95068 19
-#> 2 1953-07-26 72 72.54247 46
-#> 3 1949-09-02 76 76.43836 50
-#> 4 1986-08-03 39 39.52055 13
-#> 5 1932-11-19 93 93.22466 67
-#> 6 1949-03-30 76 76.86575 50
-#> 7 1996-06-23 29 29.63288 3
-#> 8 1963-09-16 62 62.40000 36
-#> 9 1952-05-16 73 73.73699 47
-#> 10 1952-11-14 73 73.23836 47
+#> 1 1980-02-27 45 45.95890 19
+#> 2 1953-07-26 72 72.55068 46
+#> 3 1949-09-02 76 76.44658 50
+#> 4 1986-08-03 39 39.52877 13
+#> 5 1932-11-19 93 93.23288 67
+#> 6 1949-03-30 76 76.87397 50
+#> 7 1996-06-23 29 29.64110 3
+#> 8 1963-09-16 62 62.40822 36
+#> 9 1952-05-16 73 73.74521 47
+#> 10 1952-11-14 73 73.24658 47
```
diff --git a/reference/age_groups.html b/reference/age_groups.html
index bd583ddcd..4faeae8d3 100644
--- a/reference/age_groups.html
+++ b/reference/age_groups.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/amr-tidymodels.html b/reference/amr-tidymodels.html
index 722ef7887..fed5e1e78 100644
--- a/reference/amr-tidymodels.html
+++ b/reference/amr-tidymodels.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/antibiogram.html b/reference/antibiogram.html
index 5bad80e62..86289a49c 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)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/antimicrobial_selectors.html b/reference/antimicrobial_selectors.html
index 290c9f942..a6ad4e17b 100644
--- a/reference/antimicrobial_selectors.html
+++ b/reference/antimicrobial_selectors.html
@@ -17,7 +17,7 @@ my_data_with_all_these_columns %>%
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/antimicrobials.html b/reference/antimicrobials.html
index 17bfc4efb..ec8b09b73 100644
--- a/reference/antimicrobials.html
+++ b/reference/antimicrobials.html
@@ -9,7 +9,7 @@ The antibiotics data set has been renamed to antimicrobials. The old name will b
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/as.ab.html b/reference/as.ab.html
index 217924682..9490433ac 100644
--- a/reference/as.ab.html
+++ b/reference/as.ab.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/as.av.html b/reference/as.av.html
index bbe4a84ad..758144a58 100644
--- a/reference/as.av.html
+++ b/reference/as.av.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/as.disk.html b/reference/as.disk.html
index b8f58794f..fda99ab74 100644
--- a/reference/as.disk.html
+++ b/reference/as.disk.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/as.mic.html b/reference/as.mic.html
index 679c51225..1f5f06b70 100644
--- a/reference/as.mic.html
+++ b/reference/as.mic.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/as.mo.html b/reference/as.mo.html
index ad9f7a200..4c32622a2 100644
--- a/reference/as.mo.html
+++ b/reference/as.mo.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/as.sir.html b/reference/as.sir.html
index 8e18a3fc5..9dfded260 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)
- 3.0.1.9020
+ 3.0.1.9021
@@ -310,8 +310,8 @@ Breakpoints are currently implemented from EUCAST 2011-2025 and CLSI 2011-2025,
After Interpretation
-After using as.sir(), you can use the eucast_rules() defined by EUCAST to (1) apply inferred susceptibility and resistance based on results of other antimicrobials and (2) apply intrinsic resistance based on taxonomic properties of a microorganism.
-To determine which isolates are multi-drug resistant, be sure to run mdro() (which applies the MDR/PDR/XDR guideline from 2012 at default) on a data set that contains S/I/R values. Read more about interpreting multidrug-resistant organisms here .
+After using as.sir(), you can use the interpretive_rules() to (1) apply inferred susceptibility and resistance based on results of other antimicrobials and (2) apply intrinsic resistance based on taxonomic properties of a microorganism.
+To determine which isolates are multi-drug resistant, be sure to run mdro() (which applies the MDR/PDR/XDR guideline from 2012 at default) on a data set that contains S/I/R values. Read more about detecting multidrug-resistant organisms here .
@@ -424,10 +424,10 @@ Breakpoints are currently implemented from EUCAST 2011-2025 and CLSI 2011-2025,
#> # A tibble: 4 × 18
#> datetime index method ab_given mo_given host_given input_given
#> <dttm> <int> <chr> <chr> <chr> <chr> <chr>
-
#> 1 2026-02-09 12:50:16 1 MIC amoxicillin Escherich… human 8
-
#> 2 2026-02-09 12:50:17 1 MIC cipro Escherich… human 0.256
-
#> 3 2026-02-09 12:50:17 1 DISK tobra Escherich… human 16
-
#> 4 2026-02-09 12:50:17 1 DISK genta Escherich… human 18
+
#> 1 2026-02-12 19:41:27 1 MIC amoxicillin Escherich… human 8
+
#> 2 2026-02-12 19:41:27 1 MIC cipro Escherich… human 0.256
+
#> 3 2026-02-12 19:41:28 1 DISK tobra Escherich… human 16
+
#> 4 2026-02-12 19:41:28 1 DISK genta Escherich… human 18
#> # ℹ 11 more variables: ab <ab>, mo <mo>, host <chr>, input <chr>,
#> # outcome <sir>, notes <chr>, guideline <chr>, ref_table <chr>, uti <lgl>,
#> # breakpoint_S_R <chr>, site <chr>
diff --git a/reference/as.sir.md b/reference/as.sir.md
index 993d03adc..57d13e6da 100644
--- a/reference/as.sir.md
+++ b/reference/as.sir.md
@@ -504,16 +504,16 @@ options to set before analysis:
### After Interpretation
After using `as.sir()`, you can use the
-[`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
-defined by EUCAST to (1) apply inferred susceptibility and resistance
-based on results of other antimicrobials and (2) apply intrinsic
-resistance based on taxonomic properties of a microorganism.
+[`interpretive_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
+to (1) apply inferred susceptibility and resistance based on results of
+other antimicrobials and (2) apply intrinsic resistance based on
+taxonomic properties of a microorganism.
To determine which isolates are multi-drug resistant, be sure to run
[`mdro()`](https://amr-for-r.org/reference/mdro.md) (which applies the
MDR/PDR/XDR guideline from 2012 at default) on a data set that contains
-S/I/R values. Read more about [interpreting multidrug-resistant
-organisms here](https://amr-for-r.org/reference/mdro.md).
+S/I/R values. Read more about [detecting multidrug-resistant organisms
+here](https://amr-for-r.org/reference/mdro.md).
### Other
@@ -660,10 +660,10 @@ sir_interpretation_history()
#> # A tibble: 4 × 18
#> datetime index method ab_given mo_given host_given input_given
#>
-#> 1 2026-02-09 12:50:16 1 MIC amoxicillin Escherich… human 8
-#> 2 2026-02-09 12:50:17 1 MIC cipro Escherich… human 0.256
-#> 3 2026-02-09 12:50:17 1 DISK tobra Escherich… human 16
-#> 4 2026-02-09 12:50:17 1 DISK genta Escherich… human 18
+#> 1 2026-02-12 19:41:27 1 MIC amoxicillin Escherich… human 8
+#> 2 2026-02-12 19:41:27 1 MIC cipro Escherich… human 0.256
+#> 3 2026-02-12 19:41:28 1 DISK tobra Escherich… human 16
+#> 4 2026-02-12 19:41:28 1 DISK genta Escherich… human 18
#> # ℹ 11 more variables: ab , mo , host , input ,
#> # outcome , notes , guideline , ref_table , uti ,
#> # breakpoint_S_R , site
diff --git a/reference/atc_online.html b/reference/atc_online.html
index b339f4ccd..273e4d860 100644
--- a/reference/atc_online.html
+++ b/reference/atc_online.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/av_from_text.html b/reference/av_from_text.html
index d7f199704..21f0c37e8 100644
--- a/reference/av_from_text.html
+++ b/reference/av_from_text.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/av_property.html b/reference/av_property.html
index 130cdf61d..76451e7a3 100644
--- a/reference/av_property.html
+++ b/reference/av_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/availability.html b/reference/availability.html
index b726d8b55..0708ae3eb 100644
--- a/reference/availability.html
+++ b/reference/availability.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
@@ -82,6 +82,10 @@
Examples
availability ( example_isolates )
+#> ℹ `resistance()` assumes the EUCAST guideline and thus considers the 'I'
+#> category susceptible. Set the `guideline` argument or the `AMR_guideline`
+#> option to either "CLSI" or "EUCAST", see `?AMR-options` .
+#> ℹ This message will be shown once per session.
#> count available visual_availabilty resistant visual_resistance
#> date 2000 100.0% |####################|
#> patient 2000 100.0% |####################|
diff --git a/reference/availability.md b/reference/availability.md
index 06195c840..7514d1305 100644
--- a/reference/availability.md
+++ b/reference/availability.md
@@ -41,6 +41,10 @@ calculated with
``` r
availability(example_isolates)
+#> ℹ `resistance()` assumes the EUCAST guideline and thus considers the 'I'
+#> category susceptible. Set the `guideline` argument or the `AMR_guideline`
+#> option to either "CLSI" or "EUCAST", see `?AMR-options`.
+#> ℹ This message will be shown once per session.
#> count available visual_availabilty resistant visual_resistance
#> date 2000 100.0% |####################|
#> patient 2000 100.0% |####################|
diff --git a/reference/bug_drug_combinations.html b/reference/bug_drug_combinations.html
index 8aea66ebe..a51ad16e8 100644
--- a/reference/bug_drug_combinations.html
+++ b/reference/bug_drug_combinations.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/clinical_breakpoints.html b/reference/clinical_breakpoints.html
index 85cf9d272..fa1399cc1 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)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/count.html b/reference/count.html
index bda626315..797cf9bf3 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)
- 3.0.1.9020
+ 3.0.1.9021
@@ -58,9 +58,11 @@ count_resistant() should be used to count resistant isolates, count_susceptible(
Usage
-
count_resistant ( ... , only_all_tested = FALSE )
+ count_resistant ( ... , only_all_tested = FALSE ,
+ guideline = getOption ( "AMR_guideline" , "EUCAST" ) )
-count_susceptible ( ... , only_all_tested = FALSE )
+count_susceptible ( ... , only_all_tested = FALSE ,
+ guideline = getOption ( "AMR_guideline" , "EUCAST" ) )
count_S ( ... , only_all_tested = FALSE )
@@ -92,6 +94,12 @@ count_resistant() should be used to count resistant isolates, count_susceptible(
(for combination therapies, i.e. using more than one variable for ...): a logical to indicate that isolates must be tested for all antimicrobials, see section Combination Therapy below.
+guideline
+Either "EUCAST" (default) or "CLSI". With EUCAST, the 'I' category will be considered as susceptible (see EUCAST website ), but with with CLSI, it will be considered resistant. Therefore:
EUCAST: count_susceptible() \(= N_{S} + N_{I}\), count_resistant() \(= N_{R}\)
+CLSI: count_susceptible() \(= N_{S} + N_{SDD}\), count_resistant() \(= N_{I} + N_{R}\)
+You can also use e.g. count_R() or count_S() instead, to be explicit.
+
+
data
A data.frame containing columns with class sir (see as.sir() ).
@@ -115,8 +123,7 @@ count_resistant() should be used to count resistant isolates, count_susceptible(
Details
These functions are meant to count isolates. Use the resistance() /susceptibility() functions to calculate microbial resistance/susceptibility.
-
The function count_resistant() is equal to the function count_R(). The function count_susceptible() is equal to the function count_SI().
-
The function n_sir() is an alias of count_all(). They can be used to count all available isolates, i.e. where all input antimicrobials have an available result (S, I or R). Their use is equal to n_distinct() . Their function is equal to count_susceptible(...) + count_resistant(...).
+
The function n_sir() is an alias of count_all(). They can be used to count all available isolates, i.e. where all input antimicrobials have an available result (S, I or R). Their use is equal to dplyr's n_distinct() . Their function is equal to count_susceptible(...) + count_resistant(...).
The function count_df() takes any variable from data that has an sir class (created with as.sir() ) and counts the number of S's, I's and R's. It also supports grouped variables. The function sir_df() works exactly like count_df(), but adds the percentage of S, I and R.
@@ -167,8 +174,16 @@ count_resistant() should be used to count resistant isolates, count_susceptible(
# base R ------------------------------------------------------------
count_resistant ( example_isolates $ AMX ) # counts "R"
+
#> ℹ `count_resistant()` assumes the EUCAST guideline and thus considers the
+
#> 'I' category susceptible. Set the `guideline` argument or the
+
#> `AMR_guideline` option to either "CLSI" or "EUCAST", see `?AMR-options` .
+
#> ℹ This message will be shown once per session.
#> [1] 804
count_susceptible ( example_isolates $ AMX ) # counts "S" and "I"
+
#> ℹ `count_susceptible()` assumes the EUCAST guideline and thus considers the
+
#> 'I' category susceptible. Set the `guideline` argument or the
+
#> `AMR_guideline` option to either "CLSI" or "EUCAST", see `?AMR-options` .
+
#> ℹ This message will be shown once per session.
#> [1] 546
count_all ( example_isolates $ AMX ) # counts "S", "I" and "R"
#> [1] 1350
@@ -198,6 +213,10 @@ count_resistant() should be used to count resistant isolates, count_susceptible(
count_susceptible ( example_isolates $ AMX )
#> [1] 546
susceptibility ( example_isolates $ AMX ) * n_sir ( example_isolates $ AMX )
+
#> ℹ `susceptibility()` assumes the EUCAST guideline and thus considers the
+
#> 'I' category susceptible. Set the `guideline` argument or the
+
#> `AMR_guideline` option to either "CLSI" or "EUCAST", see `?AMR-options` .
+
#> ℹ This message will be shown once per session.
#> [1] 546
# dplyr -------------------------------------------------------------
diff --git a/reference/count.md b/reference/count.md
index a32ad963c..de3b911d3 100644
--- a/reference/count.md
+++ b/reference/count.md
@@ -12,9 +12,11 @@ from the `dplyr` package and also support grouped variables, see
## Usage
``` r
-count_resistant(..., only_all_tested = FALSE)
+count_resistant(..., only_all_tested = FALSE,
+ guideline = getOption("AMR_guideline", "EUCAST"))
-count_susceptible(..., only_all_tested = FALSE)
+count_susceptible(..., only_all_tested = FALSE,
+ guideline = getOption("AMR_guideline", "EUCAST"))
count_S(..., only_all_tested = FALSE)
@@ -49,6 +51,22 @@ count_df(data, translate_ab = "name", language = get_AMR_locale(),
that isolates must be tested for all antimicrobials, see section
*Combination Therapy* below.
+- guideline:
+
+ Either `"EUCAST"` (default) or `"CLSI"`. With EUCAST, the 'I' category
+ will be considered as susceptible (see [EUCAST
+ website](https://www.eucast.org/bacteria/clinical-breakpoints-and-interpretation/definition-of-s-i-and-r/)),
+ but with with CLSI, it will be considered resistant. Therefore:
+
+ - EUCAST: `count_susceptible()` \\= N\_{S} + N\_{I}\\,
+ `count_resistant()` \\= N\_{R}\\
+
+ - CLSI: `count_susceptible()` \\= N\_{S} + N\_{SDD}\\,
+ `count_resistant()` \\= N\_{I} + N\_{R}\\
+
+ You can also use e.g. `count_R()` or `count_S()` instead, to be
+ explicit.
+
- data:
A [data.frame](https://rdrr.io/r/base/data.frame.html) containing
@@ -88,13 +106,9 @@ These functions are meant to count isolates. Use the
[`resistance()`](https://amr-for-r.org/reference/proportion.md)/[`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
functions to calculate microbial resistance/susceptibility.
-The function `count_resistant()` is equal to the function `count_R()`.
-The function `count_susceptible()` is equal to the function
-`count_SI()`.
-
The function `n_sir()` is an alias of `count_all()`. They can be used to
count all available isolates, i.e. where all input antimicrobials have
-an available result (S, I or R). Their use is equal to
+an available result (S, I or R). Their use is equal to `dplyr`'s
[`n_distinct()`](https://dplyr.tidyverse.org/reference/n_distinct.html).
Their function is equal to
`count_susceptible(...) + count_resistant(...)`.
@@ -174,8 +188,16 @@ calculate microbial resistance and susceptibility.
# base R ------------------------------------------------------------
count_resistant(example_isolates$AMX) # counts "R"
+#> ℹ `count_resistant()` assumes the EUCAST guideline and thus considers the
+#> 'I' category susceptible. Set the `guideline` argument or the
+#> `AMR_guideline` option to either "CLSI" or "EUCAST", see `?AMR-options`.
+#> ℹ This message will be shown once per session.
#> [1] 804
count_susceptible(example_isolates$AMX) # counts "S" and "I"
+#> ℹ `count_susceptible()` assumes the EUCAST guideline and thus considers the
+#> 'I' category susceptible. Set the `guideline` argument or the
+#> `AMR_guideline` option to either "CLSI" or "EUCAST", see `?AMR-options`.
+#> ℹ This message will be shown once per session.
#> [1] 546
count_all(example_isolates$AMX) # counts "S", "I" and "R"
#> [1] 1350
@@ -205,6 +227,10 @@ n_sir(example_isolates$AMX)
count_susceptible(example_isolates$AMX)
#> [1] 546
susceptibility(example_isolates$AMX) * n_sir(example_isolates$AMX)
+#> ℹ `susceptibility()` assumes the EUCAST guideline and thus considers the
+#> 'I' category susceptible. Set the `guideline` argument or the
+#> `AMR_guideline` option to either "CLSI" or "EUCAST", see `?AMR-options`.
+#> ℹ This message will be shown once per session.
#> [1] 546
# dplyr -------------------------------------------------------------
diff --git a/reference/custom_eucast_rules.html b/reference/custom_eucast_rules.html
index 2a676c352..c114f3d29 100644
--- a/reference/custom_eucast_rules.html
+++ b/reference/custom_eucast_rules.html
@@ -7,7 +7,7 @@
AMR (for R)
-
3.0.1.9020
+
3.0.1.9021
diff --git a/reference/custom_mdro_guideline.html b/reference/custom_mdro_guideline.html
index 2978f24cc..a4c218e25 100644
--- a/reference/custom_mdro_guideline.html
+++ b/reference/custom_mdro_guideline.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/dosage.html b/reference/dosage.html
index 6f6fc4460..48559ec5c 100644
--- a/reference/dosage.html
+++ b/reference/dosage.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/esbl_isolates.html b/reference/esbl_isolates.html
index 39ed26318..a2de68382 100644
--- a/reference/esbl_isolates.html
+++ b/reference/esbl_isolates.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/example_isolates.html b/reference/example_isolates.html
index 54c214d75..f9b3538c3 100644
--- a/reference/example_isolates.html
+++ b/reference/example_isolates.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/example_isolates_unclean.html b/reference/example_isolates_unclean.html
index 551366f46..389c79fbe 100644
--- a/reference/example_isolates_unclean.html
+++ b/reference/example_isolates_unclean.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/export_ncbi_biosample.html b/reference/export_ncbi_biosample.html
index ec8c71230..d90288adc 100644
--- a/reference/export_ncbi_biosample.html
+++ b/reference/export_ncbi_biosample.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/first_isolate.html b/reference/first_isolate.html
index 728ff5cb4..4fdd7acd0 100644
--- a/reference/first_isolate.html
+++ b/reference/first_isolate.html
@@ -9,7 +9,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/g.test.html b/reference/g.test.html
index 9dfbbf4b2..6fc94d3d3 100644
--- a/reference/g.test.html
+++ b/reference/g.test.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/get_episode.html b/reference/get_episode.html
index ad35edce4..64f3fe1a1 100644
--- a/reference/get_episode.html
+++ b/reference/get_episode.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/ggplot_pca.html b/reference/ggplot_pca.html
index 01d88076f..75524ef1d 100644
--- a/reference/ggplot_pca.html
+++ b/reference/ggplot_pca.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
@@ -220,7 +220,7 @@
#> Warning: There were 73 warnings in `summarise()`.
#> The first warning was:
#> ℹ In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE,
-#> only_all_tested = FALSE) ...`.
+#> only_all_tested = FALSE, ...`.
#> ℹ In group 5: `order = "Lactobacillales"`, `genus = "Enterococcus"`.
#> Caused by warning:
#> ! Introducing NA: only 14 results available for PEN in group: order =
diff --git a/reference/ggplot_pca.md b/reference/ggplot_pca.md
index 9de218bd2..97907b5e1 100644
--- a/reference/ggplot_pca.md
+++ b/reference/ggplot_pca.md
@@ -211,7 +211,7 @@ if (require("dplyr")) {
#> Warning: There were 73 warnings in `summarise()`.
#> The first warning was:
#> ℹ In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE,
-#> only_all_tested = FALSE) ...`.
+#> only_all_tested = FALSE, ...`.
#> ℹ In group 5: `order = "Lactobacillales"`, `genus = "Enterococcus"`.
#> Caused by warning:
#> ! Introducing NA: only 14 results available for PEN in group: order =
diff --git a/reference/ggplot_sir.html b/reference/ggplot_sir.html
index d7932d785..927180a9f 100644
--- a/reference/ggplot_sir.html
+++ b/reference/ggplot_sir.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/guess_ab_col.html b/reference/guess_ab_col.html
index 31a9d8cce..51de29393 100644
--- a/reference/guess_ab_col.html
+++ b/reference/guess_ab_col.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/index.html b/reference/index.html
index 57fd89e25..3cfb8bb16 100644
--- a/reference/index.html
+++ b/reference/index.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/interpretive_rules.html b/reference/interpretive_rules.html
index a645ce78b..a88dfb384 100644
--- a/reference/interpretive_rules.html
+++ b/reference/interpretive_rules.html
@@ -13,7 +13,7 @@ To improve the interpretation of the antibiogram before CLSI/EUCAST interpretive
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/intrinsic_resistant.html b/reference/intrinsic_resistant.html
index d8f59053c..f9776a5be 100644
--- a/reference/intrinsic_resistant.html
+++ b/reference/intrinsic_resistant.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/italicise_taxonomy.html b/reference/italicise_taxonomy.html
index 2f7c881cc..f10c0d447 100644
--- a/reference/italicise_taxonomy.html
+++ b/reference/italicise_taxonomy.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/join.html b/reference/join.html
index 165ef4f24..b32dbef81 100644
--- a/reference/join.html
+++ b/reference/join.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/key_antimicrobials.html b/reference/key_antimicrobials.html
index 1baf025be..b071bae44 100644
--- a/reference/key_antimicrobials.html
+++ b/reference/key_antimicrobials.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/kurtosis.html b/reference/kurtosis.html
index 4a54ae01c..9b65400d1 100644
--- a/reference/kurtosis.html
+++ b/reference/kurtosis.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/like.html b/reference/like.html
index 1acdd16fa..a7a540e39 100644
--- a/reference/like.html
+++ b/reference/like.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/mdro.html b/reference/mdro.html
index 5ee48f984..c39cd6143 100644
--- a/reference/mdro.html
+++ b/reference/mdro.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/mean_amr_distance.html b/reference/mean_amr_distance.html
index 8a003ecf0..ddc69042f 100644
--- a/reference/mean_amr_distance.html
+++ b/reference/mean_amr_distance.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/microorganisms.codes.html b/reference/microorganisms.codes.html
index d7ffd089f..0f2398478 100644
--- a/reference/microorganisms.codes.html
+++ b/reference/microorganisms.codes.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/microorganisms.groups.html b/reference/microorganisms.groups.html
index 9efbc9148..5a6603c22 100644
--- a/reference/microorganisms.groups.html
+++ b/reference/microorganisms.groups.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/microorganisms.html b/reference/microorganisms.html
index 00d283708..b7b033dc8 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)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/mo_matching_score.html b/reference/mo_matching_score.html
index 638935f45..85d3888b7 100644
--- a/reference/mo_matching_score.html
+++ b/reference/mo_matching_score.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/mo_property.html b/reference/mo_property.html
index 303e86182..1027aa1ab 100644
--- a/reference/mo_property.html
+++ b/reference/mo_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/mo_source.html b/reference/mo_source.html
index 648528e25..842e37401 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)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/pca.html b/reference/pca.html
index 3678cc5d3..9d5774583 100644
--- a/reference/pca.html
+++ b/reference/pca.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
@@ -148,7 +148,7 @@
#> Warning: There were 73 warnings in `summarise()`.
#> The first warning was:
#> ℹ In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE,
-#> only_all_tested = FALSE) ...`.
+#> only_all_tested = FALSE, ...`.
#> ℹ In group 5: `order = "Lactobacillales"`, `genus = "Enterococcus"`.
#> Caused by warning:
#> ! Introducing NA: only 14 results available for PEN in group: order =
diff --git a/reference/pca.md b/reference/pca.md
index 607d3c52c..b362d1a96 100644
--- a/reference/pca.md
+++ b/reference/pca.md
@@ -110,7 +110,7 @@ if (require("dplyr")) {
#> Warning: There were 73 warnings in `summarise()`.
#> The first warning was:
#> ℹ In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE,
-#> only_all_tested = FALSE) ...`.
+#> only_all_tested = FALSE, ...`.
#> ℹ In group 5: `order = "Lactobacillales"`, `genus = "Enterococcus"`.
#> Caused by warning:
#> ! Introducing NA: only 14 results available for PEN in group: order =
diff --git a/reference/plot.html b/reference/plot.html
index 9edce6a18..ff78ef146 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)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/proportion.html b/reference/proportion.html
index 7054bac9a..230eb3ef0 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)
- 3.0.1.9020
+ 3.0.1.9021
@@ -59,10 +59,12 @@ resistance() should be used to calculate resistance, susceptibility() should be
Usage
resistance ( ... , minimum = 30 , as_percent = FALSE ,
- only_all_tested = FALSE )
+ only_all_tested = FALSE , guideline = getOption ( "AMR_guideline" ,
+ "EUCAST" ) )
susceptibility ( ... , minimum = 30 , as_percent = FALSE ,
- only_all_tested = FALSE )
+ only_all_tested = FALSE , guideline = getOption ( "AMR_guideline" ,
+ "EUCAST" ) )
sir_confidence_interval ( ... , ab_result = "R" , minimum = 30 ,
as_percent = FALSE , only_all_tested = FALSE , confidence_level = 0.95 ,
@@ -116,6 +118,12 @@ resistance() should be used to calculate resistance, susceptibility() should be
(for combination therapies, i.e. using more than one variable for ...): a logical to indicate that isolates must be tested for all antimicrobials, see section Combination Therapy below.
+guideline
+Either "EUCAST" (default) or "CLSI". With EUCAST, the 'I' category will be considered as susceptible (see EUCAST website ), but with with CLSI, it will be considered resistant. Therefore:
EUCAST: susceptibility() \(= \%S + \%I\), resistance() \(= \%R\)
+CLSI: susceptibility() \(= \%S + \%SDD\), resistance() \(= \%I + \%R\)
+You can also use e.g. proportion_R() or proportion_S() instead, to be explicit.
+
+
ab_result
Antibiotic results to test against, must be one or more values of "S", "SDD", "I", or "R".
@@ -311,7 +319,7 @@ resistance() should be used to calculate resistance, susceptibility() should be
#> ℹ For `carbapenems()` using columns ' IPM ' (imipenem) and ' MEM ' (meropenem)
#> Warning: There was 1 warning in `summarise()`.
#> ℹ In argument: `KAN = (function (..., minimum = 30, as_percent = FALSE,
-#> only_all_tested = FALSE) ...`.
+#> only_all_tested = FALSE, ...`.
#> ℹ In group 3: `ward = "Outpatient"`.
#> Caused by warning:
#> ! Introducing NA: only 23 results available for KAN in group: ward =
diff --git a/reference/proportion.md b/reference/proportion.md
index 4101c0a59..ebff3e087 100644
--- a/reference/proportion.md
+++ b/reference/proportion.md
@@ -14,10 +14,12 @@ from the `dplyr` package and also support grouped variables, see
``` r
resistance(..., minimum = 30, as_percent = FALSE,
- only_all_tested = FALSE)
+ only_all_tested = FALSE, guideline = getOption("AMR_guideline",
+ "EUCAST"))
susceptibility(..., minimum = 30, as_percent = FALSE,
- only_all_tested = FALSE)
+ only_all_tested = FALSE, guideline = getOption("AMR_guideline",
+ "EUCAST"))
sir_confidence_interval(..., ab_result = "R", minimum = 30,
as_percent = FALSE, only_all_tested = FALSE, confidence_level = 0.95,
@@ -85,6 +87,21 @@ Standards Institute (CLSI)*.
that isolates must be tested for all antimicrobials, see section
*Combination Therapy* below.
+- guideline:
+
+ Either `"EUCAST"` (default) or `"CLSI"`. With EUCAST, the 'I' category
+ will be considered as susceptible (see [EUCAST
+ website](https://www.eucast.org/bacteria/clinical-breakpoints-and-interpretation/definition-of-s-i-and-r/)),
+ but with with CLSI, it will be considered resistant. Therefore:
+
+ - EUCAST: `susceptibility()` \\= \\S + \\I\\, `resistance()` \\= \\R\\
+
+ - CLSI: `susceptibility()` \\= \\S + \\SDD\\, `resistance()` \\= \\I +
+ \\R\\
+
+ You can also use e.g. `proportion_R()` or `proportion_S()` instead, to
+ be explicit.
+
- ab_result:
Antibiotic results to test against, must be one or more values of "S",
@@ -360,7 +377,7 @@ if (require("dplyr")) {
#> ℹ For `carbapenems()` using columns 'IPM' (imipenem) and 'MEM' (meropenem)
#> Warning: There was 1 warning in `summarise()`.
#> ℹ In argument: `KAN = (function (..., minimum = 30, as_percent = FALSE,
-#> only_all_tested = FALSE) ...`.
+#> only_all_tested = FALSE, ...`.
#> ℹ In group 3: `ward = "Outpatient"`.
#> Caused by warning:
#> ! Introducing NA: only 23 results available for KAN in group: ward =
diff --git a/reference/random.html b/reference/random.html
index 1a9c89b89..12cba680d 100644
--- a/reference/random.html
+++ b/reference/random.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/resistance_predict.html b/reference/resistance_predict.html
index af20f1ab4..5b625720c 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)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/skewness.html b/reference/skewness.html
index 5f1f79cb4..6b1dc508d 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)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/top_n_microorganisms.html b/reference/top_n_microorganisms.html
index e64de898e..2044790d4 100644
--- a/reference/top_n_microorganisms.html
+++ b/reference/top_n_microorganisms.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/reference/translate.html b/reference/translate.html
index 6289555dc..651abae74 100644
--- a/reference/translate.html
+++ b/reference/translate.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9020
+ 3.0.1.9021
diff --git a/search.json b/search.json
index 9075c6053..ff9b7c27f 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":"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 drugs, 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":"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":"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":"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":"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":"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 730 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`. #> ℹ Column 'first' is SIR eligible (despite only having empty values), since #> it seems to be cefozopran (ZOP) #> ℹ 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,730 'phenotype-based' first isolates (91.0% 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,730 × 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,720 more rows"},{"path":"https://amr-for-r.org/articles/AMR.html","id":"analysing-the-data","dir":"Articles","previous_headings":"","what":"Analysing the data","title":"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:2730 Length:2730 Min. :2011-01-01 #> Class :character Class :character 1st Qu.:2013-04-06 #> Mode :character Mode :character Median :2015-06-04 #> Mean :2015-06-09 #> 3rd Qu.:2017-08-14 #> Max. :2019-12-27 #> bacteria AMX AMC #> Class :mo Class:sir Class:sir #> :0 %S :40.1% (n=1071) %S :51.1% (n=1354) #> Unique:4 %SDD : 0.0% (n=0) %SDD : 0.0% (n=0) #> #1 :B_ESCHR_COLI %I :17.0% (n=453) %I :12.7% (n=335) #> #2 :B_STPHY_AURS %R :42.9% (n=1147) %R :36.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.2% (n=1426) %S :60.7% (n=1656) TRUE:2730 #> %SDD : 0.0% (n=0) %SDD : 0.0% (n=0) #> %I : 6.5% (n=178) %I : 3.0% (n=83) #> %R :41.2% (n=1126) %R :36.3% (n=991) #> %NI : 0.0% (n=0) %NI : 0.0% (n=0) glimpse(our_data_1st) #> Rows: 2,730 #> 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 4 4 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":"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 1326 #> 2 Staphylococcus aureus 684 #> 3 Streptococcus pneumoniae 401 #> 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":"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,730 × 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,720 more rows our_data_1st %>% select(bacteria, betalactams()) #> ℹ For `betalactams()` using columns 'AMX' (amoxicillin) and 'AMC' #> (amoxicillin/clavulanic acid) #> # A tibble: 2,730 × 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,720 more rows our_data_1st %>% select(bacteria, where(is.sir)) #> # A tibble: 2,730 × 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,720 more rows # filtering using AB selectors is also possible: our_data_1st %>% filter(any(aminoglycosides() == \"R\")) #> ℹ For `aminoglycosides()` using column 'GEN' (gentamicin) #> # A tibble: 991 × 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 #> # ℹ 981 more rows our_data_1st %>% filter(all(betalactams() == \"R\")) #> ℹ For `betalactams()` using columns 'AMX' (amoxicillin) and 'AMC' #> (amoxicillin/clavulanic acid) #> # A tibble: 461 × 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 #> # ℹ 451 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: 461 × 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 #> # ℹ 451 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":"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":"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, Arabic, Bengali, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Hindi, Indonesian, Italian, Japanese, Korean, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swahili, Swedish, Turkish, Ukrainian, Urdu, Vietnamese. 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":"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":"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":"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":"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":"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.4294272 our_data_1st %>% group_by(hospital) %>% summarise(amoxicillin = resistance(AMX)) #> # A tibble: 3 × 2 #> hospital amoxicillin #> #> 1 A 0.341 #> 2 B 0.586 #> 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":"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\") my_data <- tibble(MIC = mic_values, SIR = sir_values) my_data #> # A tibble: 100 × 2 #> MIC SIR #> #> 1 <=0.0001 S #> 2 0.0160 S #> 3 >=8.0000 R #> 4 0.0320 S #> 5 0.0080 S #> 6 64.0000 R #> 7 0.0080 S #> 8 0.1250 S #> 9 0.0320 S #> 10 0.0002 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":"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