@@ -200,7 +200,7 @@ function:
#> [1] "Caryophanales" "Enterobacterales" "Lactobacillales" "Pseudomonadales"
#> Importance of components:
#> PC1 PC2 PC3 PC4 PC5 PC6 PC7
-#> Standard deviation 2.1539 1.6807 0.6138 0.33879 0.20808 0.03140 1.232e-16
+#> Standard deviation 2.1539 1.6807 0.6138 0.33879 0.20808 0.03140 9.577e-17
#> Proportion of Variance 0.5799 0.3531 0.0471 0.01435 0.00541 0.00012 0.000e+00
#> Cumulative Proportion 0.5799 0.9330 0.9801 0.99446 0.99988 1.00000 1.000e+00
#> Groups (n=4, named as 'order'):
diff --git a/articles/PCA.md b/articles/PCA.md
index 879ba066a..79cec35ca 100644
--- a/articles/PCA.md
+++ b/articles/PCA.md
@@ -123,7 +123,7 @@ summary(pca_result)
#> [1] "Caryophanales" "Enterobacterales" "Lactobacillales" "Pseudomonadales"
#> Importance of components:
#> PC1 PC2 PC3 PC4 PC5 PC6 PC7
-#> Standard deviation 2.1539 1.6807 0.6138 0.33879 0.20808 0.03140 1.232e-16
+#> Standard deviation 2.1539 1.6807 0.6138 0.33879 0.20808 0.03140 9.577e-17
#> Proportion of Variance 0.5799 0.3531 0.0471 0.01435 0.00541 0.00012 0.000e+00
#> Cumulative Proportion 0.5799 0.9330 0.9801 0.99446 0.99988 1.00000 1.000e+00
```
diff --git a/articles/WHONET.html b/articles/WHONET.html
index 29566860c..deb9deb19 100644
--- a/articles/WHONET.html
+++ b/articles/WHONET.html
@@ -30,7 +30,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/articles/WISCA.html b/articles/WISCA.html
index 4947bee0c..1e3795b8b 100644
--- a/articles/WISCA.html
+++ b/articles/WISCA.html
@@ -30,7 +30,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/articles/datasets.html b/articles/datasets.html
index 2037a11a2..b7bca639e 100644
--- a/articles/datasets.html
+++ b/articles/datasets.html
@@ -30,7 +30,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -80,7 +80,7 @@
-
AMR 3.0.1.9055
-
This will become release v3.1.0, intended for launch end of May.
+
AMR 3.0.1.9057
+
Planned as v3.1.0, May 2026.
-
New
-
Support for clinical breakpoints of 2026 of both CLSI and EUCAST, by adding all of their over 5,700 new clinical breakpoints to the clinical_breakpoints data set for usage in as.sir() . EUCAST 2026 is now the new default guideline for all MIC and disk diffusion interpretations.
-Support for the future package and its framework, as the previous implementation of parallel computing was slow
-
-Breaking change : as.sir() with parallel = TRUE now requires a non-sequential future::plan() to be active before the call — e.g., future::plan(future::multisession) — and throws an informative error if none is set.
-New all-core usage setup: when the number of AB columns is smaller than the number of available cores, rows are now split into batches so all cores stay active (row-batch mode). Previously, a 6-column dataset on a 16-core machine would only use 6 cores; now all 16 are used, with each worker processing a smaller row slice (lower per-worker memory pressure and processing time)
+New
+EUCAST 2026 and CLSI 2026 breakpoints: over 5,700 new breakpoints added to the clinical_breakpoints data set; EUCAST 2026 is now the default for all MIC and disk diffusion interpretations
+Wildtype/Non-wildtype (WT/NWT) output when using ECOFF-based interpretation, by setting breakpoint_type = "ECOFF" in as.sir() ; WT/NWT results are fully supported in all resistance/susceptibility functions and plots (#254 )
+Faster parallel computing via the future package; breaking change : a non-sequential plan (e.g. future::plan(future::multisession)) must be active before using parallel = TRUE; antibiogram() and wisca() now also support parallel = TRUE (#281 )
-antibiogram() and wisca() gained a parallel argument using the same future/future.apply pattern: for WISCA, Monte Carlo simulations are split into (group, chunk) job pairs distributed across workers; for grouped antibiograms, each group is processed by a separate worker (#281 )
-
-Integration with the tidymodels framework to allow seamless use of SIR, MIC and disk data in modelling pipelines via recipes
-
-step_mic_log2() to transform <mic> columns with log2, and step_sir_numeric() to convert <sir> columns to numeric
-New tidyselect helpers:
-
-all_sir() , all_sir_predictors()
+tidymodels integration for using SIR, MIC and disk data in modelling pipelines: step_mic_log2() , step_sir_numeric() , and new column selectors all_sir() , all_mic() , all_disk()
-
-all_mic() , all_mic_predictors()
+ New esbl_isolates data set for practising AMR modelling
+New antimicrobial selectors: ionophores() , peptides() , phosphonics() , spiropyrimidinetriones()
-
-all_disk() , all_disk_predictors()
-
-
-
-Data set esbl_isolates to practise with AMR modelling
-AMR selectors ionophores() , peptides() , phosphonics() and spiropyrimidinetriones()
-
-Support for Wildtype (WT) / Non-wildtype (NWT) in as.sir() , all plotting functions, and all susceptibility/resistance functions.
-
-as.sir() gained an argument as_wt_nwt, which defaults to TRUE only when breakpoint_type = "ECOFF" (#254 )
-This transforms the output from S/R to WT/NWT
-Functions such as susceptibility() count WT as S and NWT as R
-
-Function interpretive_rules() , which allows future implementation of CLSI interpretive rules (#235 )
-
-eucast_rules() has become a wrapper around that function
-Gained argument add_if_missing (default: TRUE). When set to FALSE, rules are only applied to cells that already contain an SIR value; NA cells are left untouched. This is useful with overwrite = TRUE to update reported results without imputing values for drugs that were not tested (#259 )
-
-Function amr_course() , which allows for automated download and unpacking of a GitHub repository for e.g. webinar use
-Two new NA objects, NA_ab_ and NA_mo_, analogous to base R’s NA_character_ and NA_integer_, for use in pipelines that require typed missing values
+New interpretive_rules() , a unified function for EUCAST and CLSI interpretive rules; eucast_rules() is now a wrapper around it (#235 , #259 )
+New amr_course() to download and unpack course or webinar materials from GitHub in one call
+Typed missing value constants NA_ab_ and NA_mo_, for use in pipelines that need missing values of a specific class
-
Fixes
-
Fixed a bug in as.sir() where values that were purely numeric (e.g., "1") and matched the broad SIR-matching regex would be incorrectly stripped of all content by the Unicode letter filter
-Fixed a bug in as.mic() where MIC values in scientific notation (e.g., "1e-3") were incorrectly handled because the letter e was removed along with other Unicode letters; scientific notation e is now preserved
-Fixed a bug in as.ab() where certain AB codes containing “PH” or “TH” (such as ETH, MTH, PHE, PHN, STH, THA, THI1) would incorrectly return NA when combined in a vector with any untranslatable value (#245 )
-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 plotting MIC values when keep_operators = "all"
-
-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 )
-Fixed SIR and MIC coercion of combined values, e.g. as.sir("<= 0.002; S") or as.mic("S; 0.002") (#252 )
-Fixed translation of foreign languages in sir_df() (#272 )
-Fixed BRMO classification by including bacterial complexes (#275 )
-Fixed as.sir() for data frames silently deleting columns whose AB class was already <sir> when called a second time (re-running on already-converted data) (#278 )
-Fixed as.sir() for data frames incorrectly treating metadata columns (e.g. patient, ward) as antibiotic columns when their names coincidentally matched an antibiotic code; column content is now validated against AMR data patterns before inclusion
-Fixed as.sir() ignoring info = FALSE for columns with no breakpoints (e.g. cefoxitin against E. coli )
+Fixes
+
+as.sir() on data frames: already-converted SIR columns no longer dropped on re-run (#278 ); metadata columns (e.g. patient, ward) no longer misidentified as antibiotic columns; info = FALSE now suppresses all messages, including for columns without breakpoints
+
+as.mic() : values in scientific notation (e.g. 1e-3) now handled correctly
+
+as.ab() : codes containing “PH” or “TH” (e.g. ETH, PHE) no longer return NA when mixed with unrecognised input (#245 )
+Combined MIC/SIR input values (e.g. "<= 0.002; S" or "S; 0.002") now parsed correctly (#252 )
+BRMO classification now includes bacterial complexes (#275 )
+Translation fixes for Italian CoNS/CoPS names (#256 ), Dutch antimicrobials, and sir_df() foreign-language output (#272 )
-
Updates
+
Updates
-as.sir() with reference_data: custom guideline names now correctly classify values as R using EUCAST convention (> breakpoint_R for MIC, < breakpoint_R for disk); custom breakpoints with host = NA now serve as a host-agnostic fallback when no host-specific row matches (#239 )
-Extensive cli integration for better message handling and clickable links in messages and warnings (#191 , #265 )
+custom_eucast_rules() renamed to custom_interpretive_rules() ; old name deprecated but still works (#268 )
-mdro() now infers resistance for a missing base drug column from an available corresponding drug+inhibitor combination showing resistance (e.g., piperacillin is absent but required, while piperacillin/tazobactam available and resistant). Can be set with the new argument infer_from_combinations, which defaults to TRUE (#209 ). Note that this can yield a higher MDRO detection (which is a good thing as it has become more reliable).
+mdro() can now infer resistance from a drug+inhibitor combination when the base drug column is absent (e.g. piperacillin inferred from piperacillin/tazobactam); controlled via new infer_from_combinations argument (default TRUE) (#209 )
-susceptibility() and resistance() gained the argument guideline, which defaults to EUCAST, for interpreting the ‘I’ category correctly.
-Added to the antimicrobials data set: cefepime/taniborbactam (FTA), ceftibuten/avibactam (CTA), clorobiocin (CLB), kasugamycin (KAS), ostreogrycin (OST), taniborbactam (TAN), thiostrepton (THS), xeruborbactam (XER), and zorbamycin (ZOR)
+susceptibility() / resistance() : new guideline argument (default EUCAST) to ensure the ‘I’ category is interpreted correctly per guideline
+Capped MIC handling in as.sir() reworked into four clearly defined options: "none", "conservative" (new default), "standard", "lenient" (#243 )
-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 )
+as.mic() / rescale_mic() : new round_to_next_log2 argument to round values up to the nearest log2 dilution level (#255 )
-antimicrobials$group is now a list instead of a character, to contain any group the drug is in (#246 )
-
-ab_group() gained an argument all_groups to return all groups the antimicrobial drug is in (#246 )
-Added explaining message to as.sir() when interpreting numeric values (e.g., 1 for S, 2 for I, 3 for R) (#244 )
-Updated handling of capped MIC values (<, <=, >, >=) in as.sir() in the argument capped_mic_handling: (#243 )
-Introduced four clearly defined options: "none", "conservative" (default), "standard", and "lenient"
-
-Interpretation of capped MIC values now consistently returns "NI" (non-interpretable) when the true MIC could be at either side of a breakpoint, depending on the selected handling mode
-This results in more reliable behaviour compared to previous versions for capped MIC values
-Removed the "inverse" option, which has now become redundant
-
-
-ab_group() now returns values consist with the AMR selectors (#246 )
+antimicrobials$group now a list, so drugs belonging to multiple groups are fully represented; use ab_group(all_groups = TRUE) to retrieve all groups for a drug (#246 )
+New antimicrobials added: cefepime/taniborbactam (FTA), ceftibuten/avibactam (CTA), clorobiocin (CLB), kasugamycin (KAS), ostreogrycin (OST), taniborbactam (TAN), thiostrepton (THS), xeruborbactam (XER), zorbamycin (ZOR)
+Improved console messages with clickable links throughout, powered by cli (#191 , #265 )
@@ -300,7 +254,7 @@
Disks of 0 to 5 mm are now allowed, the newly allowed range for disk diffusion (as.disk() ) is now between 0 and 50 mm
Updated italicise_taxonomy() to support HTML output
-custom_eucast_rules() now supports multiple antimicrobials and antimicrobial groups to be affected by a single rule
+
custom_eucast_rules() now supports multiple antimicrobials and antimicrobial groups to be affected by a single rule
mo_info() now contains an extra element rank and group_members (with the contents of the new mo_group_members() function)
Updated all ATC codes from WHOCC
diff --git a/news/index.md b/news/index.md
index dcaefc859..a787e0995 100644
--- a/news/index.md
+++ b/news/index.md
@@ -1,201 +1,116 @@
# Changelog
-## AMR 3.0.1.9055
+## AMR 3.0.1.9057
-This will become release v3.1.0, intended for launch end of May.
+Planned as v3.1.0, May 2026.
#### New
-- Support for clinical breakpoints of 2026 of both CLSI and EUCAST, by
- adding all of their over 5,700 new clinical breakpoints to the
- `clinical_breakpoints` data set for usage in
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md). EUCAST 2026
- is now the new default guideline for all MIC and disk diffusion
- interpretations.
-- Support for the [`future`](https://future.futureverse.org) package and
- its framework, as the previous implementation of parallel computing
- was slow
- - **Breaking change**:
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) with
- `parallel = TRUE` now requires a non-sequential
- [`future::plan()`](https://future.futureverse.org/reference/plan.html)
- to be active before the call — e.g.,
- `future::plan(future::multisession)` — and throws an informative
- error if none is set.
- - New all-core usage setup: when the number of AB columns is smaller
- than the number of available cores, rows are now split into batches
- so all cores stay active (row-batch mode). Previously, a 6-column
- dataset on a 16-core machine would only use 6 cores; now all 16 are
- used, with each worker processing a smaller row slice (lower
- per-worker memory pressure and processing time)
- - [`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md)
- and [`wisca()`](https://amr-for-r.org/reference/antibiogram.md)
- gained a `parallel` argument using the same `future`/`future.apply`
- pattern: for WISCA, Monte Carlo simulations are split into
- `(group, chunk)` job pairs distributed across workers; for grouped
- antibiograms, each group is processed by a separate worker
- ([\#281](https://github.com/msberends/AMR/issues/281))
-- Integration with the *tidymodels* framework to allow seamless use of
- SIR, MIC and disk data in modelling pipelines via `recipes`
- - [`step_mic_log2()`](https://amr-for-r.org/reference/amr-tidymodels.md)
- to transform `
` columns with log2, and
- [`step_sir_numeric()`](https://amr-for-r.org/reference/amr-tidymodels.md)
- to convert `` columns to numeric
- - New `tidyselect` helpers:
- - [`all_sir()`](https://amr-for-r.org/reference/amr-tidymodels.md),
- [`all_sir_predictors()`](https://amr-for-r.org/reference/amr-tidymodels.md)
- - [`all_mic()`](https://amr-for-r.org/reference/amr-tidymodels.md),
- [`all_mic_predictors()`](https://amr-for-r.org/reference/amr-tidymodels.md)
- - [`all_disk()`](https://amr-for-r.org/reference/amr-tidymodels.md),
- [`all_disk_predictors()`](https://amr-for-r.org/reference/amr-tidymodels.md)
-- Data set `esbl_isolates` to practise with AMR modelling
-- AMR selectors
+- EUCAST 2026 and CLSI 2026 breakpoints: over 5,700 new breakpoints
+ added to the `clinical_breakpoints` data set; EUCAST 2026 is now the
+ default for all MIC and disk diffusion interpretations
+- Wildtype/Non-wildtype (WT/NWT) output when using ECOFF-based
+ interpretation, by setting `breakpoint_type = "ECOFF"` in
+ [`as.sir()`](https://amr-for-r.org/reference/as.sir.md); WT/NWT
+ results are fully supported in all resistance/susceptibility functions
+ and plots ([\#254](https://github.com/msberends/AMR/issues/254))
+- Faster parallel computing via the `future` package; **breaking
+ change**: a non-sequential plan
+ (e.g. `future::plan(future::multisession)`) must be active before
+ using `parallel = TRUE`;
+ [`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md) and
+ [`wisca()`](https://amr-for-r.org/reference/antibiogram.md) now also
+ support `parallel = TRUE`
+ ([\#281](https://github.com/msberends/AMR/issues/281))
+- *tidymodels* integration for using SIR, MIC and disk data in modelling
+ pipelines:
+ [`step_mic_log2()`](https://amr-for-r.org/reference/amr-tidymodels.md),
+ [`step_sir_numeric()`](https://amr-for-r.org/reference/amr-tidymodels.md),
+ and new column selectors
+ [`all_sir()`](https://amr-for-r.org/reference/amr-tidymodels.md),
+ [`all_mic()`](https://amr-for-r.org/reference/amr-tidymodels.md),
+ [`all_disk()`](https://amr-for-r.org/reference/amr-tidymodels.md)
+- New `esbl_isolates` data set for practising AMR modelling
+- New antimicrobial selectors:
[`ionophores()`](https://amr-for-r.org/reference/antimicrobial_selectors.md),
[`peptides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md),
- [`phosphonics()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
- and
+ [`phosphonics()`](https://amr-for-r.org/reference/antimicrobial_selectors.md),
[`spiropyrimidinetriones()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
-- Support for Wildtype (WT) / Non-wildtype (NWT) in
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md), all plotting
- functions, and all susceptibility/resistance functions.
- - [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) gained an
- argument `as_wt_nwt`, which defaults to `TRUE` only when
- `breakpoint_type = "ECOFF"`
- ([\#254](https://github.com/msberends/AMR/issues/254))
- - This transforms the output from S/R to WT/NWT
- - Functions such as
- [`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
- count WT as S and NWT as R
-- Function
+- New
[`interpretive_rules()`](https://amr-for-r.org/reference/interpretive_rules.md),
- which allows future implementation of CLSI interpretive rules
- ([\#235](https://github.com/msberends/AMR/issues/235))
- - [`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
- has become a wrapper around that function
- - Gained argument `add_if_missing` (default: `TRUE`). When set to
- `FALSE`, rules are only applied to cells that already contain an SIR
- value; `NA` cells are left untouched. This is useful with
- `overwrite = TRUE` to update reported results without imputing
- values for drugs that were not tested
- ([\#259](https://github.com/msberends/AMR/issues/259))
-- Function
- [`amr_course()`](https://amr-for-r.org/reference/amr_course.md), which
- allows for automated download and unpacking of a GitHub repository for
- e.g. webinar use
-- Two new `NA` objects, `NA_ab_` and `NA_mo_`, analogous to base R’s
- `NA_character_` and `NA_integer_`, for use in pipelines that require
- typed missing values
+ a unified function for EUCAST and CLSI interpretive rules;
+ [`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
+ is now a wrapper around it
+ ([\#235](https://github.com/msberends/AMR/issues/235),
+ [\#259](https://github.com/msberends/AMR/issues/259))
+- New [`amr_course()`](https://amr-for-r.org/reference/amr_course.md) to
+ download and unpack course or webinar materials from GitHub in one
+ call
+- Typed missing value constants `NA_ab_` and `NA_mo_`, for use in
+ pipelines that need missing values of a specific class
#### Fixes
-- Fixed a bug in [`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
- where values that were purely numeric (e.g., `"1"`) and matched the
- broad SIR-matching regex would be incorrectly stripped of all content
- by the Unicode letter filter
-- Fixed a bug in [`as.mic()`](https://amr-for-r.org/reference/as.mic.md)
- where MIC values in scientific notation (e.g., `"1e-3"`) were
- incorrectly handled because the letter `e` was removed along with
- other Unicode letters; scientific notation `e` is now preserved
-- Fixed a bug in [`as.ab()`](https://amr-for-r.org/reference/as.ab.md)
- where certain AB codes containing “PH” or “TH” (such as `ETH`, `MTH`,
- `PHE`, `PHN`, `STH`, `THA`, `THI1`) would incorrectly return `NA` when
- combined in a vector with any untranslatable value
+- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) on data
+ frames: already-converted SIR columns no longer dropped on re-run
+ ([\#278](https://github.com/msberends/AMR/issues/278)); metadata
+ columns (e.g. `patient`, `ward`) no longer misidentified as antibiotic
+ columns; `info = FALSE` now suppresses all messages, including for
+ columns without breakpoints
+- [`as.mic()`](https://amr-for-r.org/reference/as.mic.md): values in
+ scientific notation (e.g. `1e-3`) now handled correctly
+- [`as.ab()`](https://amr-for-r.org/reference/as.ab.md): codes
+ containing “PH” or “TH” (e.g. `ETH`, `PHE`) no longer return `NA` when
+ mixed with unrecognised input
([\#245](https://github.com/msberends/AMR/issues/245))
-- Fixed a bug in
- [`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
- considered ([\#244](https://github.com/msberends/AMR/issues/244))
-- Fixed a bug in plotting MIC values when `keep_operators = "all"`
-- 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](https://github.com/msberends/AMR/issues/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](https://github.com/msberends/AMR/issues/256))
-- Fixed SIR and MIC coercion of combined values,
- e.g. `as.sir("<= 0.002; S")` or `as.mic("S; 0.002")`
+- Combined MIC/SIR input values (e.g. `"<= 0.002; S"` or `"S; 0.002"`)
+ now parsed correctly
([\#252](https://github.com/msberends/AMR/issues/252))
-- Fixed translation of foreign languages in
- [`sir_df()`](https://amr-for-r.org/reference/proportion.md)
- ([\#272](https://github.com/msberends/AMR/issues/272))
-- Fixed BRMO classification by including bacterial complexes
+- BRMO classification now includes bacterial complexes
([\#275](https://github.com/msberends/AMR/issues/275))
-- Fixed [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) for data
- frames silently deleting columns whose AB class was already ``
- when called a second time (re-running on already-converted data)
- ([\#278](https://github.com/msberends/AMR/issues/278))
-- Fixed [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) for data
- frames incorrectly treating metadata columns (e.g. `patient`, `ward`)
- as antibiotic columns when their names coincidentally matched an
- antibiotic code; column content is now validated against AMR data
- patterns before inclusion
-- Fixed [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) ignoring
- `info = FALSE` for columns with no breakpoints (e.g. cefoxitin against
- *E. coli*)
+- Translation fixes for Italian CoNS/CoPS names
+ ([\#256](https://github.com/msberends/AMR/issues/256)), Dutch
+ antimicrobials, and
+ [`sir_df()`](https://amr-for-r.org/reference/proportion.md)
+ foreign-language output
+ ([\#272](https://github.com/msberends/AMR/issues/272))
#### Updates
-- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) with
- `reference_data`: custom guideline names now correctly classify values
- as R using EUCAST convention (`> breakpoint_R` for MIC,
- `< breakpoint_R` for disk); custom breakpoints with `host = NA` now
- serve as a host-agnostic fallback when no host-specific row matches
- ([\#239](https://github.com/msberends/AMR/issues/239))
-- Extensive `cli` integration for better message handling and clickable
- links in messages and warnings
- ([\#191](https://github.com/msberends/AMR/issues/191),
- [\#265](https://github.com/msberends/AMR/issues/265))
-- [`mdro()`](https://amr-for-r.org/reference/mdro.md) now infers
- resistance for a *missing* base drug column from an *available*
- corresponding drug+inhibitor combination showing resistance (e.g.,
- piperacillin is absent but required, while piperacillin/tazobactam
- available and resistant). Can be set with the new argument
- `infer_from_combinations`, which defaults to `TRUE`
- ([\#209](https://github.com/msberends/AMR/issues/209)). Note that this
- can yield a higher MDRO detection (which is a good thing as it has
- become more reliable).
-- [`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.
-- Added to the `antimicrobials` data set: cefepime/taniborbactam
- (`FTA`), ceftibuten/avibactam (`CTA`), clorobiocin (`CLB`),
- kasugamycin (`KAS`), ostreogrycin (`OST`), taniborbactam (`TAN`),
- thiostrepton (`THS`), xeruborbactam (`XER`), and zorbamycin (`ZOR`)
-- [`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
- all values up to the nearest next log2 level
- ([\#255](https://github.com/msberends/AMR/issues/255))
-- `antimicrobials$group` is now a `list` instead of a `character`, to
- contain any group the drug is in
- ([\#246](https://github.com/msberends/AMR/issues/246))
-- [`ab_group()`](https://amr-for-r.org/reference/ab_property.md) gained
- an argument `all_groups` to return all groups the antimicrobial drug
- is in ([\#246](https://github.com/msberends/AMR/issues/246))
-- Added explaining message to
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) when
- interpreting numeric values (e.g., 1 for S, 2 for I, 3 for R)
- ([\#244](https://github.com/msberends/AMR/issues/244))
-- Updated handling of capped MIC values (`<`, `<=`, `>`, `>=`) in
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) in the
- argument `capped_mic_handling`:
+- [`custom_eucast_rules()`](https://amr-for-r.org/reference/AMR-deprecated.md)
+ renamed to
+ [`custom_interpretive_rules()`](https://amr-for-r.org/reference/custom_interpretive_rules.md);
+ old name deprecated but still works
+ ([\#268](https://github.com/msberends/AMR/issues/268))
+- [`mdro()`](https://amr-for-r.org/reference/mdro.md) can now infer
+ resistance from a drug+inhibitor combination when the base drug column
+ is absent (e.g. piperacillin inferred from piperacillin/tazobactam);
+ controlled via new `infer_from_combinations` argument (default `TRUE`)
+ ([\#209](https://github.com/msberends/AMR/issues/209))
+- [`susceptibility()`](https://amr-for-r.org/reference/proportion.md) /
+ [`resistance()`](https://amr-for-r.org/reference/proportion.md): new
+ `guideline` argument (default EUCAST) to ensure the ‘I’ category is
+ interpreted correctly per guideline
+- Capped MIC handling in
+ [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) reworked into
+ four clearly defined options: `"none"`, `"conservative"` (new
+ default), `"standard"`, `"lenient"`
([\#243](https://github.com/msberends/AMR/issues/243))
- - Introduced four clearly defined options: `"none"`, `"conservative"`
- (default), `"standard"`, and `"lenient"`
- - Interpretation of capped MIC values now consistently returns `"NI"`
- (non-interpretable) when the true MIC could be at either side of a
- breakpoint, depending on the selected handling mode
- - This results in more reliable behaviour compared to previous
- versions for capped MIC values
- - Removed the `"inverse"` option, which has now become redundant
-- [`ab_group()`](https://amr-for-r.org/reference/ab_property.md) now
- returns values consist with the AMR selectors
+- [`as.mic()`](https://amr-for-r.org/reference/as.mic.md) /
+ [`rescale_mic()`](https://amr-for-r.org/reference/as.mic.md): new
+ `round_to_next_log2` argument to round values up to the nearest log2
+ dilution level ([\#255](https://github.com/msberends/AMR/issues/255))
+- `antimicrobials$group` now a `list`, so drugs belonging to multiple
+ groups are fully represented; use `ab_group(all_groups = TRUE)` to
+ retrieve all groups for a drug
([\#246](https://github.com/msberends/AMR/issues/246))
+- New antimicrobials added: cefepime/taniborbactam (`FTA`),
+ ceftibuten/avibactam (`CTA`), clorobiocin (`CLB`), kasugamycin
+ (`KAS`), ostreogrycin (`OST`), taniborbactam (`TAN`), thiostrepton
+ (`THS`), xeruborbactam (`XER`), zorbamycin (`ZOR`)
+- Improved console messages with clickable links throughout, powered by
+ `cli` ([\#191](https://github.com/msberends/AMR/issues/191),
+ [\#265](https://github.com/msberends/AMR/issues/265))
## AMR 3.0.1
@@ -581,7 +496,7 @@ this change.
- Updated
[`italicise_taxonomy()`](https://amr-for-r.org/reference/italicise_taxonomy.md)
to support HTML output
-- [`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md)
+- [`custom_eucast_rules()`](https://amr-for-r.org/reference/AMR-deprecated.md)
now supports multiple antimicrobials and antimicrobial groups to be
affected by a single rule
- [`mo_info()`](https://amr-for-r.org/reference/mo_property.md) now
diff --git a/pkgdown.yml b/pkgdown.yml
index 349afd8cc..f0f618ec4 100644
--- a/pkgdown.yml
+++ b/pkgdown.yml
@@ -10,7 +10,7 @@ articles:
PCA: PCA.html
WHONET: WHONET.html
WISCA: WISCA.html
-last_built: 2026-04-30T17:47Z
+last_built: 2026-05-02T13:01Z
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 9c4ddc908..d16e50ae6 100644
--- a/reference/AMR-deprecated.html
+++ b/reference/AMR-deprecated.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -55,7 +55,9 @@
Usage
-
ab_class ( ... )
+ custom_eucast_rules ( ... )
+
+ab_class ( ... )
ab_selector ( ... )
diff --git a/reference/AMR-deprecated.md b/reference/AMR-deprecated.md
index 5356fbea6..44090ab1f 100644
--- a/reference/AMR-deprecated.md
+++ b/reference/AMR-deprecated.md
@@ -9,6 +9,8 @@ warning with the name of the alternative object it has been replaced by
## Usage
``` r
+custom_eucast_rules(...)
+
ab_class(...)
ab_selector(...)
diff --git a/reference/AMR-options.html b/reference/AMR-options.html
index e4c65da2c..c2a27e34d 100644
--- a/reference/AMR-options.html
+++ b/reference/AMR-options.html
@@ -9,7 +9,7 @@ options(AMR_guideline = "CLSI")'>
AMR (for R)
-
3.0.1.9055
+
3.0.1.9057
diff --git a/reference/AMR.html b/reference/AMR.html
index 71d2624f4..8bd92ef45 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.9055
+ 3.0.1.9057
diff --git a/reference/WHOCC.html b/reference/WHOCC.html
index 4f949f454..9eba8e75d 100644
--- a/reference/WHOCC.html
+++ b/reference/WHOCC.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/WHONET.html b/reference/WHONET.html
index c49a25997..b068db3b4 100644
--- a/reference/WHONET.html
+++ b/reference/WHONET.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/ab_from_text.html b/reference/ab_from_text.html
index af64b3da4..e4923049b 100644
--- a/reference/ab_from_text.html
+++ b/reference/ab_from_text.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/ab_property.html b/reference/ab_property.html
index 5cb09a1c0..71aaa694c 100644
--- a/reference/ab_property.html
+++ b/reference/ab_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/add_custom_antimicrobials.html b/reference/add_custom_antimicrobials.html
index 69cf4b81e..9d033e08c 100644
--- a/reference/add_custom_antimicrobials.html
+++ b/reference/add_custom_antimicrobials.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/add_custom_microorganisms.html b/reference/add_custom_microorganisms.html
index 4af2b76fe..a03a3847c 100644
--- a/reference/add_custom_microorganisms.html
+++ b/reference/add_custom_microorganisms.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/age.html b/reference/age.html
index 252ac559b..6638460d5 100644
--- a/reference/age.html
+++ b/reference/age.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -112,16 +112,16 @@
df
#> birth_date age age_exact age_at_y2k
-#> 1 1999-06-30 26 26.83288 0
-#> 2 1968-01-29 58 58.24932 31
-#> 3 1965-12-05 60 60.40000 34
-#> 4 1980-03-01 46 46.16438 19
-#> 5 1949-11-01 76 76.49315 50
-#> 6 1947-02-14 79 79.20548 52
-#> 7 1940-02-19 86 86.19178 59
-#> 8 1988-01-10 38 38.30137 11
-#> 9 1997-08-27 28 28.67397 2
-#> 10 1978-01-26 48 48.25753 21
+#> 1 1999-06-30 26 26.83836 0
+#> 2 1968-01-29 58 58.25479 31
+#> 3 1965-12-05 60 60.40548 34
+#> 4 1980-03-01 46 46.16986 19
+#> 5 1949-11-01 76 76.49863 50
+#> 6 1947-02-14 79 79.21096 52
+#> 7 1940-02-19 86 86.19726 59
+#> 8 1988-01-10 38 38.30685 11
+#> 9 1997-08-27 28 28.67945 2
+#> 10 1978-01-26 48 48.26301 21
On this page
diff --git a/reference/age.md b/reference/age.md
index 45aa7f4a9..d61328546 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 1999-06-30 26 26.83288 0
-#> 2 1968-01-29 58 58.24932 31
-#> 3 1965-12-05 60 60.40000 34
-#> 4 1980-03-01 46 46.16438 19
-#> 5 1949-11-01 76 76.49315 50
-#> 6 1947-02-14 79 79.20548 52
-#> 7 1940-02-19 86 86.19178 59
-#> 8 1988-01-10 38 38.30137 11
-#> 9 1997-08-27 28 28.67397 2
-#> 10 1978-01-26 48 48.25753 21
+#> 1 1999-06-30 26 26.83836 0
+#> 2 1968-01-29 58 58.25479 31
+#> 3 1965-12-05 60 60.40548 34
+#> 4 1980-03-01 46 46.16986 19
+#> 5 1949-11-01 76 76.49863 50
+#> 6 1947-02-14 79 79.21096 52
+#> 7 1940-02-19 86 86.19726 59
+#> 8 1988-01-10 38 38.30685 11
+#> 9 1997-08-27 28 28.67945 2
+#> 10 1978-01-26 48 48.26301 21
```
diff --git a/reference/age_groups.html b/reference/age_groups.html
index 689a4f15a..a0413c463 100644
--- a/reference/age_groups.html
+++ b/reference/age_groups.html
@@ -1,5 +1,5 @@
-Split Ages into Age Groups — age_groups • AMR (for R)
+Split Ages into Age Groups — age_groups • AMR (for R)
Skip to contents
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -50,7 +50,7 @@
-
Split ages into age groups defined by the split argument. This allows for easier demographic (antimicrobial resistance) analysis. The function returns an ordered factor .
+
Split ages into age groups defined by the `split` argument. This allows for easier demographic (antimicrobial resistance) analysis. The function returns an ordered [factor].
@@ -81,7 +81,7 @@
Value
-
Ordered factor
+
Ordered [factor]
Details
diff --git a/reference/age_groups.md b/reference/age_groups.md
index 6fbbe68d1..ca0ad568e 100644
--- a/reference/age_groups.md
+++ b/reference/age_groups.md
@@ -1,8 +1,8 @@
# Split Ages into Age Groups
-Split ages into age groups defined by the `split` argument. This allows
-for easier demographic (antimicrobial resistance) analysis. The function
-returns an ordered [factor](https://rdrr.io/r/base/factor.html).
+Split ages into age groups defined by the \`split\` argument. This
+allows for easier demographic (antimicrobial resistance) analysis. The
+function returns an ordered \[factor\].
## Usage
@@ -34,7 +34,7 @@ age_groups(x, split_at = c(0, 12, 25, 55, 75), names = NULL,
## Value
-Ordered [factor](https://rdrr.io/r/base/factor.html)
+Ordered \[factor\]
## Details
diff --git a/reference/amr-tidymodels.html b/reference/amr-tidymodels.html
index b93d118ed..731b1d5c0 100644
--- a/reference/amr-tidymodels.html
+++ b/reference/amr-tidymodels.html
@@ -7,7 +7,7 @@
AMR (for R)
-
3.0.1.9055
+
3.0.1.9057
@@ -74,41 +74,6 @@
skip = FALSE , id = recipes :: rand_id ( "sir_numeric" ) )
-
-
Arguments
-
-
-
recipe
-A recipe object. The step will be added to the sequence of
-operations for this recipe.
-
-
-...
-One or more selector functions to choose variables for this step.
-See selections() for more details.
-
-
-role
-Not used by this step since no new variables are created.
-
-
-trained
-A logical to indicate if the quantities for preprocessing have
-been estimated.
-
-
-skip
-A logical. Should the step be skipped when the recipe is baked by
-bake() ? While all operations are baked when prep() is run, some
-operations may not be able to be conducted on new data (e.g. processing the
-outcome variable(s)). Care should be taken when using skip = TRUE as it
-may affect the computations for subsequent operations.
-
-
-id
-A character string that is unique to this step to identify it.
-
-
Details
You can read more in our online AMR with tidymodels introduction .
diff --git a/reference/amr-tidymodels.md b/reference/amr-tidymodels.md
index fe22bae05..7a7245323 100644
--- a/reference/amr-tidymodels.md
+++ b/reference/amr-tidymodels.md
@@ -25,43 +25,6 @@ step_sir_numeric(recipe, ..., role = NA, trained = FALSE, columns = NULL,
skip = FALSE, id = recipes::rand_id("sir_numeric"))
```
-## Arguments
-
-- recipe:
-
- A recipe object. The step will be added to the sequence of operations
- for this recipe.
-
-- ...:
-
- One or more selector functions to choose variables for this step. See
- [`selections()`](https://recipes.tidymodels.org/reference/selections.html)
- for more details.
-
-- role:
-
- Not used by this step since no new variables are created.
-
-- trained:
-
- A logical to indicate if the quantities for preprocessing have been
- estimated.
-
-- skip:
-
- A logical. Should the step be skipped when the recipe is baked by
- [`bake()`](https://recipes.tidymodels.org/reference/bake.html)? While
- all operations are baked when
- [`prep()`](https://recipes.tidymodels.org/reference/prep.html) is run,
- some operations may not be able to be conducted on new data (e.g.
- processing the outcome variable(s)). Care should be taken when using
- `skip = TRUE` as it may affect the computations for subsequent
- operations.
-
-- id:
-
- A character string that is unique to this step to identify it.
-
## Details
You can read more in our online [AMR with tidymodels
diff --git a/reference/amr_course.html b/reference/amr_course.html
index 820d22e90..e248d2922 100644
--- a/reference/amr_course.html
+++ b/reference/amr_course.html
@@ -7,7 +7,7 @@
AMR (for R)
-
3.0.1.9055
+
3.0.1.9057
diff --git a/reference/antibiogram.html b/reference/antibiogram.html
index 3e478bc1c..935774f0f 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.9055
+ 3.0.1.9057
@@ -132,7 +132,7 @@ Adhering to previously described approaches (see Source) and especially the Baye
syndromic_group
-A column name of x, or values calculated to split rows of x, e.g. by using ifelse() or case_when() . See Examples .
+A column name of `x`, or values calculated to split rows of `x`, e.g. by using [ifelse()] or [`case_when()`][dplyr::case_when()]. See *Examples*.
add_total_n
diff --git a/reference/antibiogram.md b/reference/antibiogram.md
index f4e21b65b..deef815df 100644
--- a/reference/antibiogram.md
+++ b/reference/antibiogram.md
@@ -154,10 +154,9 @@ knit_print(x, italicise = TRUE,
- syndromic_group:
- A column name of `x`, or values calculated to split rows of `x`, e.g.
- by using [`ifelse()`](https://rdrr.io/r/base/ifelse.html) or
- [`case_when()`](https://dplyr.tidyverse.org/reference/case-and-replace-when.html).
- See *Examples*.
+ A column name of \`x\`, or values calculated to split rows of \`x\`,
+ e.g. by using \[ifelse()\] or
+ \[\`case_when()\`\]\[dplyr::case_when()\]. See \*Examples\*.
- add_total_n:
diff --git a/reference/antimicrobial_selectors.html b/reference/antimicrobial_selectors.html
index 8dacb35f2..4311b8a2a 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.9055
+ 3.0.1.9057
diff --git a/reference/antimicrobials.html b/reference/antimicrobials.html
index b5acd59a4..7f3093cc3 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.9055
+ 3.0.1.9057
diff --git a/reference/as.ab.html b/reference/as.ab.html
index b9be3dd2b..4a5d113ab 100644
--- a/reference/as.ab.html
+++ b/reference/as.ab.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/as.av.html b/reference/as.av.html
index 63eff723e..e3477459c 100644
--- a/reference/as.av.html
+++ b/reference/as.av.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/as.disk.html b/reference/as.disk.html
index 0dbfad312..80bbabe48 100644
--- a/reference/as.disk.html
+++ b/reference/as.disk.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/as.mic.html b/reference/as.mic.html
index f3b39f75d..6ff1f0efc 100644
--- a/reference/as.mic.html
+++ b/reference/as.mic.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -98,7 +98,7 @@
as.mic
-A logical to indicate whether the mic class should be kept - the default is TRUE for rescale_mic() and FALSE for droplevels() . When setting this to FALSE in rescale_mic(), the output will have factor levels that acknowledge mic_range.
+A [logical] to indicate whether the `mic` class should be kept - the default is `TRUE` for [rescale_mic()] and `FALSE` for [droplevels()]. When setting this to `FALSE` in [rescale_mic()], the output will have factor levels that acknowledge `mic_range`.
...
@@ -107,45 +107,45 @@
Value
-
Ordered factor with additional class mic, that in mathematical operations acts as a numeric vector. Bear in mind that the outcome of any mathematical operation on MICs will return a numeric value.
+
Ordered [factor] with additional class [`mic`], that in mathematical operations acts as a [numeric] vector. Bear in mind that the outcome of any mathematical operation on MICs will return a [numeric] value.
Details
-
To interpret MIC values as SIR values, use as.sir() on MIC values. It supports guidelines from EUCAST (2011-2026) and CLSI (2011-2026).
-
This class for MIC values is a quite a special data type: formally it is an ordered factor with valid MIC values as factor levels (to make sure only valid MIC values are retained), but for any mathematical operation it acts as decimal numbers:
-
x <- random_mic (10 )
- x
-#> Class <mic>
-#> [1] 16 1 8 8 64 >=128 0.0625 32 32 16
-
-is.factor (x)
-#> [1] TRUE
-
- x[1 ] * 2
-#> [1] 32
-
-median (x)
-#> [1] 26
-
This makes it possible to maintain operators that often come with MIC values, such ">=" and "<=", even when filtering using numeric values in data analysis, e.g.:
-
x[x > 4 ]
-#> Class <mic>
-#> [1] 16 8 8 64 >=128 32 32 16
-
- df <- data.frame (x, hospital = "A" )
-subset (df, x > 4 ) # or with dplyr: df %>% filter(x > 4)
-#> x hospital
-#> 1 16 A
-#> 5 64 A
-#> 6 >=128 A
-#> 8 32 A
-#> 9 32 A
-#> 10 16 A
-
All so-called group generic functions are implemented for the MIC class (such as !, !=, <, >=, exp() , log2() ). Some mathematical functions are also implemented (such as quantile() , median() , fivenum() ). Since sd() and var() are non-generic functions, these could not be extended. Use mad() as an alternative, or use e.g. sd(as.numeric(x)) where x is your vector of MIC values.
-
Using as.double() or as.numeric() on MIC values will remove the operators and return a numeric vector. Do not use as.integer() on MIC values as by the R convention on factor s, it will return the index of the factor levels (which is often useless for regular users).
-
The function is.mic() detects if the input contains class mic. If the input is a data.frame or list , it iterates over all columns/items and returns a logical vector.
-
Use droplevels() to drop unused levels. At default, it will return a plain factor. Use droplevels(..., as.mic = TRUE) to maintain the mic class.
-
With rescale_mic(), existing MIC ranges can be limited to a defined range of MIC values. This can be useful to better compare MIC distributions.
-
For ggplot2, use one of the scale_*_mic() functions to plot MIC values. They allows custom MIC ranges and to plot intermediate log2 levels for missing MIC values.
+
To interpret MIC values as SIR values, use [as.sir()] on MIC values. It supports guidelines from EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline
+
This class for MIC values is a quite a special data type: formally it is an ordered [factor] with valid MIC values as [factor] levels (to make sure only valid MIC values are retained), but for any mathematical operation it acts as decimal numbers:
+
“`
+x <- random_mic(10)
+x
+#> Class <mic>
+#> [1] 16 1 8 8 64 >=128 0.0625 32 32 16
+
is.factor(x)
+#> [1] TRUE
+
x[1] * 2
+#> [1] 32
+
median(x)
+#> [1] 26
+“`
+
This makes it possible to maintain operators that often come with MIC values, such ">=" and "<=", even when filtering using [numeric] values in data analysis, e.g.:
+
“`
+x[x > 4]
+#> Class <mic>
+#> [1] 16 8 8 64 >=128 32 32 16
+
df <- data.frame(x, hospital = "A")
+subset(df, x > 4) # or with dplyr: df
+#> x hospital
+#> 1 16 A
+#> 5 64 A
+#> 6 >=128 A
+#> 8 32 A
+#> 9 32 A
+#> 10 16 A
+“`
+
All so-called [group generic functions][groupGeneric()] are implemented for the MIC class (such as `!`, `!=`, `<`, `>=`, [exp()], [log2()]). Some mathematical functions are also implemented (such as [quantile()], [median()], [fivenum()]). Since [sd()] and [var()] are non-generic functions, these could not be extended. Use [mad()] as an alternative, or use e.g. `sd(as.numeric(x))` where `x` is your vector of MIC values.
+
Using [as.double()] or [as.numeric()] on MIC values will remove the operators and return a numeric vector. Do **not** use [as.integer()] on MIC values as by the R convention on [factor]s, it will return the index of the factor levels (which is often useless for regular users).
+
The function [is.mic()] detects if the input contains class `mic`. If the input is a [data.frame] or [list], it iterates over all columns/items and returns a [logical] vector.
+
Use [droplevels()] to drop unused levels. At default, it will return a plain factor. Use `droplevels(..., as.mic = TRUE)` to maintain the `mic` class.
+
With [rescale_mic()], existing MIC ranges can be limited to a defined range of MIC values. This can be useful to better compare MIC distributions.
+
For `ggplot2`, use one of the [`scale_*_mic()`][scale_x_mic()] functions to plot MIC values. They allows custom MIC ranges and to plot intermediate log2 levels for missing MIC values.
NA_mic_ is a missing value of the new mic class, analogous to e.g. base R 's NA_character_ .
Use mic_p50() and mic_p90() to get the 50th and 90th percentile of MIC values. They return 'normal' numeric values.
diff --git a/reference/as.mic.md b/reference/as.mic.md
index fa6d42b6d..8f2f1f625 100644
--- a/reference/as.mic.md
+++ b/reference/as.mic.md
@@ -62,12 +62,10 @@ droplevels(x, as.mic = FALSE, ...)
- as.mic:
- A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
- the `mic` class should be kept - the default is `TRUE` for
- `rescale_mic()` and `FALSE` for
- [`droplevels()`](https://rdrr.io/pkg/data.table/man/fdroplevels.html).
- When setting this to `FALSE` in `rescale_mic()`, the output will have
- factor levels that acknowledge `mic_range`.
+ A \[logical\] to indicate whether the \`mic\` class should be kept -
+ the default is \`TRUE\` for \[rescale_mic()\] and \`FALSE\` for
+ \[droplevels()\]. When setting this to \`FALSE\` in \[rescale_mic()\],
+ the output will have factor levels that acknowledge \`mic_range\`.
- ...:
@@ -75,101 +73,71 @@ droplevels(x, as.mic = FALSE, ...)
## Value
-Ordered [factor](https://rdrr.io/pkg/data.table/man/fctr.html) with
-additional class `mic`, that in mathematical operations acts as a
-[numeric](https://rdrr.io/r/base/numeric.html) vector. Bear in mind that
+Ordered \[factor\] with additional class \[\`mic\`\], that in
+mathematical operations acts as a \[numeric\] vector. Bear in mind that
the outcome of any mathematical operation on MICs will return a
-[numeric](https://rdrr.io/r/base/numeric.html) value.
+\[numeric\] value.
## Details
-To interpret MIC values as SIR values, use
-[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) on MIC values.
-It supports guidelines from EUCAST (2011-2026) and CLSI (2011-2026).
+To interpret MIC values as SIR values, use \[as.sir()\] on MIC values.
+It supports guidelines from EUCAST (\`r min(as.integer(gsub("\[^0-9\]",
+"", subset(clinical_breakpoints, guideline
This class for MIC values is a quite a special data type: formally it is
-an ordered [factor](https://rdrr.io/pkg/data.table/man/fctr.html) with
-valid MIC values as
-[factor](https://rdrr.io/pkg/data.table/man/fctr.html) levels (to make
-sure only valid MIC values are retained), but for any mathematical
+an ordered \[factor\] with valid MIC values as \[factor\] levels (to
+make sure only valid MIC values are retained), but for any mathematical
operation it acts as decimal numbers:
- x <- random_mic(10)
- x
- #> Class
- #> [1] 16 1 8 8 64 >=128 0.0625 32 32 16
+“\` x \<- random_mic(10) x \#\> Class \ \#\> \[1\] 16 1 8 8 64
+\>=128 0.0625 32 32 16
- is.factor(x)
- #> [1] TRUE
+is.factor(x) \#\> \[1\] TRUE
- x[1] * 2
- #> [1] 32
+x\[1\] \* 2 \#\> \[1\] 32
- median(x)
- #> [1] 26
+median(x) \#\> \[1\] 26 “\`
This makes it possible to maintain operators that often come with MIC
-values, such "\>=" and "\<=", even when filtering using
-[numeric](https://rdrr.io/r/base/numeric.html) values in data analysis,
-e.g.:
+values, such "\>=" and "\<=", even when filtering using \[numeric\]
+values in data analysis, e.g.:
- x[x > 4]
- #> Class
- #> [1] 16 8 8 64 >=128 32 32 16
+“\` x\[x \> 4\] \#\> Class \ \#\> \[1\] 16 8 8 64 \>=128 32 32 16
- df <- data.frame(x, hospital = "A")
- subset(df, x > 4) # or with dplyr: df %>% filter(x > 4)
- #> x hospital
- #> 1 16 A
- #> 5 64 A
- #> 6 >=128 A
- #> 8 32 A
- #> 9 32 A
- #> 10 16 A
+df \<- data.frame(x, hospital = "A") subset(df, x \> 4) \# or with
+dplyr: df \#\> x hospital \#\> 1 16 A \#\> 5 64 A \#\> 6 \>=128 A \#\> 8
+32 A \#\> 9 32 A \#\> 10 16 A “\`
-All so-called [group generic
-functions](https://rdrr.io/r/base/groupGeneric.html) are implemented for
-the MIC class (such as `!`, `!=`, `<`, `>=`,
-[`exp()`](https://rdrr.io/r/base/Log.html),
-[`log2()`](https://rdrr.io/r/base/Log.html)). Some mathematical
-functions are also implemented (such as
-[`quantile()`](https://rdrr.io/r/stats/quantile.html),
-[`median()`](https://rdrr.io/r/stats/median.html),
-[`fivenum()`](https://rdrr.io/r/stats/fivenum.html)). Since
-[`sd()`](https://rdrr.io/r/stats/sd.html) and
-[`var()`](https://rdrr.io/r/stats/cor.html) are non-generic functions,
-these could not be extended. Use
-[`mad()`](https://rdrr.io/r/stats/mad.html) as an alternative, or use
-e.g. `sd(as.numeric(x))` where `x` is your vector of MIC values.
+All so-called \[group generic functions\]\[groupGeneric()\] are
+implemented for the MIC class (such as \`!\`, \`!=\`, \`\<\`, \`\>=\`,
+\[exp()\], \[log2()\]). Some mathematical functions are also implemented
+(such as \[quantile()\], \[median()\], \[fivenum()\]). Since \[sd()\]
+and \[var()\] are non-generic functions, these could not be extended.
+Use \[mad()\] as an alternative, or use e.g. \`sd(as.numeric(x))\` where
+\`x\` is your vector of MIC values.
-Using [`as.double()`](https://rdrr.io/r/base/double.html) or
-[`as.numeric()`](https://rdrr.io/r/base/numeric.html) on MIC values will
-remove the operators and return a numeric vector. Do **not** use
-[`as.integer()`](https://rdrr.io/r/base/integer.html) on MIC values as
-by the R convention on
-[factor](https://rdrr.io/pkg/data.table/man/fctr.html)s, it will return
-the index of the factor levels (which is often useless for regular
-users).
+Using \[as.double()\] or \[as.numeric()\] on MIC values will remove the
+operators and return a numeric vector. Do \*\*not\*\* use
+\[as.integer()\] on MIC values as by the R convention on \[factor\]s, it
+will return the index of the factor levels (which is often useless for
+regular users).
-The function `is.mic()` detects if the input contains class `mic`. If
-the input is a [data.frame](https://rdrr.io/r/base/data.frame.html) or
-[list](https://rdrr.io/r/base/list.html), it iterates over all
-columns/items and returns a
-[logical](https://rdrr.io/r/base/logical.html) vector.
+The function \[is.mic()\] detects if the input contains class \`mic\`.
+If the input is a \[data.frame\] or \[list\], it iterates over all
+columns/items and returns a \[logical\] vector.
-Use
-[`droplevels()`](https://rdrr.io/pkg/data.table/man/fdroplevels.html) to
-drop unused levels. At default, it will return a plain factor. Use
-`droplevels(..., as.mic = TRUE)` to maintain the `mic` class.
+Use \[droplevels()\] to drop unused levels. At default, it will return a
+plain factor. Use \`droplevels(..., as.mic = TRUE)\` to maintain the
+\`mic\` class.
-With `rescale_mic()`, existing MIC ranges can be limited to a defined
+With \[rescale_mic()\], existing MIC ranges can be limited to a defined
range of MIC values. This can be useful to better compare MIC
distributions.
-For `ggplot2`, use one of the
-[`scale_*_mic()`](https://amr-for-r.org/reference/plot.md) functions to
-plot MIC values. They allows custom MIC ranges and to plot intermediate
-log2 levels for missing MIC values.
+For \`ggplot2\`, use one of the
+\[\`scale\_\*\_mic()\`\]\[scale_x_mic()\] functions to plot MIC values.
+They allows custom MIC ranges and to plot intermediate log2 levels for
+missing MIC values.
`NA_mic_` is a missing value of the new `mic` class, analogous to e.g.
base R's [`NA_character_`](https://rdrr.io/r/base/NA.html).
diff --git a/reference/as.mo.html b/reference/as.mo.html
index ac21b5235..5940c984c 100644
--- a/reference/as.mo.html
+++ b/reference/as.mo.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/as.sir.html b/reference/as.sir.html
index 13c9fb796..fbbb2a1ef 100644
--- a/reference/as.sir.html
+++ b/reference/as.sir.html
@@ -1,7 +1,7 @@
-Interpret MIC and Disk Diffusion as SIR, or Clean Existing SIR Data — as.sir • AMR (for R)
+Interpret MIC and Disk Diffusion as SIR, or Clean Existing SIR Data — as.sir • AMR (for R)
Skip to contents
@@ -9,7 +9,7 @@ Breakpoints are currently implemented from EUCAST 2011-2026 and CLSI 2011-2026,
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -52,8 +52,8 @@ Breakpoints are currently implemented from EUCAST 2011-2026 and CLSI 2011-2026,
-
Clean up existing SIR values, or interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI. as.sir() transforms the input to a new class sir, which is an ordered factor containing the levels S, SDD, I, R, NI.
-
Breakpoints are currently implemented from EUCAST 2011-2026 and CLSI 2011-2026, see Details . All breakpoints used for interpretation are available in our clinical_breakpoints data set.
+
Clean up existing SIR values, or interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI. [as.sir()] transforms the input to a new class [`sir`], which is an ordered [factor] containing the levels `S`, `SDD`, `I`, `R`, `NI`.
+
Breakpoints are currently implemented from EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline
@@ -236,7 +236,7 @@ Breakpoints are currently implemented from EUCAST 2011-2026 and CLSI 2011-2026,
Value
-
Ordered factor with new class sir
+
Ordered [factor] with new class `sir`
Details
@@ -420,10 +420,10 @@ Breakpoints are currently implemented from EUCAST 2011-2026 and CLSI 2011-2026,
#> # A tibble: 4 × 18
#> datetime index method ab_given mo_given host_given input_given
#> <dttm> <int> <chr> <chr> <chr> <chr> <chr>
-
#> 1 2026-04-30 17:47:55 1 MIC amoxicillin Escherich… human 8
-
#> 2 2026-04-30 17:47:55 1 MIC cipro Escherich… human 0.256
-
#> 3 2026-04-30 17:47:55 1 DISK tobra Escherich… human 16
-
#> 4 2026-04-30 17:47:55 1 DISK genta Escherich… human 18
+
#> 1 2026-05-02 13:02:42 1 MIC amoxicillin Escherich… human 8
+
#> 2 2026-05-02 13:02:42 1 MIC cipro Escherich… human 0.256
+
#> 3 2026-05-02 13:02:42 1 DISK tobra Escherich… human 16
+
#> 4 2026-05-02 13:02:43 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 187ae9ff7..1362b4c1a 100644
--- a/reference/as.sir.md
+++ b/reference/as.sir.md
@@ -2,16 +2,13 @@
Clean up existing SIR values, or interpret minimum inhibitory
concentration (MIC) values and disk diffusion diameters according to
-EUCAST or CLSI. `as.sir()` transforms the input to a new class `sir`,
-which is an ordered
-[factor](https://rdrr.io/pkg/data.table/man/fctr.html) containing the
-levels `S`, `SDD`, `I`, `R`, `NI`.
+EUCAST or CLSI. \[as.sir()\] transforms the input to a new class
+\[\`sir\`\], which is an ordered \[factor\] containing the levels \`S\`,
+\`SDD\`, \`I\`, \`R\`, \`NI\`.
-Breakpoints are currently implemented from EUCAST 2011-2026 and CLSI
-2011-2026, see *Details*. All breakpoints used for interpretation are
-available in our
-[clinical_breakpoints](https://amr-for-r.org/reference/clinical_breakpoints.md)
-data set.
+Breakpoints are currently implemented from EUCAST \`r
+min(as.integer(gsub("\[^0-9\]", "", subset(AMR::clinical_breakpoints,
+guideline
## Usage
@@ -367,8 +364,7 @@ disk diffusion diameters:
## Value
-Ordered [factor](https://rdrr.io/pkg/data.table/man/fctr.html) with new
-class `sir`
+Ordered \[factor\] with new class \`sir\`
## Details
@@ -667,10 +663,10 @@ sir_interpretation_history()
#> # A tibble: 4 × 18
#> datetime index method ab_given mo_given host_given input_given
#>
-#> 1 2026-04-30 17:47:55 1 MIC amoxicillin Escherich… human 8
-#> 2 2026-04-30 17:47:55 1 MIC cipro Escherich… human 0.256
-#> 3 2026-04-30 17:47:55 1 DISK tobra Escherich… human 16
-#> 4 2026-04-30 17:47:55 1 DISK genta Escherich… human 18
+#> 1 2026-05-02 13:02:42 1 MIC amoxicillin Escherich… human 8
+#> 2 2026-05-02 13:02:42 1 MIC cipro Escherich… human 0.256
+#> 3 2026-05-02 13:02:42 1 DISK tobra Escherich… human 16
+#> 4 2026-05-02 13:02:43 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 b3c6b65e5..11ad311ff 100644
--- a/reference/atc_online.html
+++ b/reference/atc_online.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/av_from_text.html b/reference/av_from_text.html
index fafab166e..dc2c552aa 100644
--- a/reference/av_from_text.html
+++ b/reference/av_from_text.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/av_property.html b/reference/av_property.html
index 18a57920f..5adc334de 100644
--- a/reference/av_property.html
+++ b/reference/av_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/availability.html b/reference/availability.html
index fbec28a64..c219872f2 100644
--- a/reference/availability.html
+++ b/reference/availability.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/bug_drug_combinations.html b/reference/bug_drug_combinations.html
index bc18cd012..ac573d77b 100644
--- a/reference/bug_drug_combinations.html
+++ b/reference/bug_drug_combinations.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/clinical_breakpoints.html b/reference/clinical_breakpoints.html
index 7ba070571..af75813f3 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.9055
+ 3.0.1.9057
diff --git a/reference/count.html b/reference/count.html
index d340e24f3..7473bf04b 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.9055
+ 3.0.1.9057
diff --git a/reference/custom_eucast_rules.html b/reference/custom_eucast_rules.html
index 9910ba62b..20234010d 100644
--- a/reference/custom_eucast_rules.html
+++ b/reference/custom_eucast_rules.html
@@ -1,269 +1,8 @@
-
-Define Custom EUCAST Rules — custom_eucast_rules • AMR (for R)
- Skip to contents
-
-
-
-
-
-
-
-
-
Define custom EUCAST rules for your organisation or specific analysis and use the output of this function in eucast_rules() .
-
-
-
-
-
-
Arguments
-
-
-
...
-Rules in formula notation, see below for instructions, and in Examples .
-
-
-
-
Value
-
A list containing the custom rules
-
-
-
Details
-
Some organisations have their own adoption of EUCAST rules. This function can be used to define custom EUCAST rules to be used in the eucast_rules() function.
-
Basics
-
-
-
If you are familiar with the case_when() function of the dplyr package, you will recognise the input method to set your own rules. Rules must be set using what R considers to be the 'formula notation'. The rule itself is written before the tilde (~) and the consequence of the rule is written after the tilde:
-
x <- custom_eucast_rules ( TZP == "S" ~ aminopenicillins == "S" ,
- TZP == "R" ~ aminopenicillins == "R" )
-
These are two custom EUCAST rules: if TZP (piperacillin/tazobactam) is "S", all aminopenicillins (ampicillin and amoxicillin) must be made "S", and if TZP is "R", aminopenicillins must be made "R". These rules can also be printed to the console, so it is immediately clear how they work:
-
x
-#> A set of custom EUCAST rules:
-#>
-#> 1. If TZP is "S" then set to S :
-#> amoxicillin (AMX), ampicillin (AMP)
-#>
-#> 2. If TZP is "R" then set to R :
-#> amoxicillin (AMX), ampicillin (AMP)
-
The rules (the part before the tilde, in above example TZP == "S" and TZP == "R") must be evaluable in your data set: it should be able to run as a filter in your data set without errors. This means for the above example that the column TZP must exist. We will create a sample data set and test the rules set:
-
df <- data.frame ( mo = c ( "Escherichia coli" , "Klebsiella pneumoniae" ) ,
- TZP = as.sir ( "R" ) ,
- ampi = as.sir ( "S" ) ,
- cipro = as.sir ( "S" ) )
-df
-#> mo TZP ampi cipro
-#> 1 Escherichia coli R S S
-#> 2 Klebsiella pneumoniae R S S
-
-eucast_rules ( df ,
- rules = "custom" ,
- custom_rules = x ,
- info = FALSE ,
- overwrite = TRUE )
-#> mo TZP ampi cipro
-#> 1 Escherichia coli R R S
-#> 2 Klebsiella pneumoniae R R S
-
-
-
-
Using taxonomic properties in rules
-
-
-
There is one exception in columns used for the rules: all column names of the microorganisms data set can also be used, but do not have to exist in the data set. These column names are: "mo", "fullname", "status", "kingdom", "phylum", "class", "order", "family", "genus", "species", "subspecies", "rank", "ref", "oxygen_tolerance", "source", "lpsn", "lpsn_parent", "lpsn_renamed_to", "mycobank", "mycobank_parent", "mycobank_renamed_to", "gbif", "gbif_parent", "gbif_renamed_to", "prevalence", and "snomed". Thus, this next example will work as well, despite the fact that the df data set does not contain a column genus:
-
y <- custom_eucast_rules (
- TZP == "S" & genus == "Klebsiella" ~ aminopenicillins == "S" ,
- TZP == "R" & genus == "Klebsiella" ~ aminopenicillins == "R"
-)
-
-eucast_rules ( df ,
- rules = "custom" ,
- custom_rules = y ,
- info = FALSE ,
- overwrite = TRUE )
-#> mo TZP ampi cipro
-#> 1 Escherichia coli R S S
-#> 2 Klebsiella pneumoniae R R S
-
-
-
-
Sharing rules among multiple users
-
-
-
The rules set (the y object in this case) could be exported to a shared file location using saveRDS() if you collaborate with multiple users. The custom rules set could then be imported using readRDS() .
-
-
-
-
Usage of multiple antimicrobials and antimicrobial group names
-
-
-
You can define antimicrobial groups instead of single antimicrobials for the rule consequence, which is the part after the tilde (~). In the examples above, the antimicrobial group aminopenicillins includes both ampicillin and amoxicillin.
-
Rules can also be applied to multiple antimicrobials and antimicrobial groups simultaneously. Use the c() function to combine multiple antimicrobials. For instance, the following example sets all aminopenicillins and ureidopenicillins to "R" if column TZP (piperacillin/tazobactam) is "R":
-
x <- custom_eucast_rules ( TZP == "R" ~ c ( aminopenicillins , ureidopenicillins ) == "R" )
-x
-#> A set of custom EUCAST rules:
-#>
-#> 1. If TZP is "R" then set to "R":
-#> amoxicillin (AMX), ampicillin (AMP), azlocillin (AZL), mezlocillin (MEZ), piperacillin (PIP), piperacillin/tazobactam (TZP)
-
These 43 antimicrobial groups are allowed in the rules (case-insensitive) and can be used in any combination:
aminocoumarins (clorobiocin, novobiocin, and penicillin/novobiocin)
-aminoglycosides (amikacin, amikacin/fosfomycin, apramycin, arbekacin, astromicin, bekanamycin, dibekacin, framycetin, gentamicin, gentamicin-high, habekacin, hygromycin, isepamicin, kanamycin, kanamycin-high, kanamycin/cephalexin, kasugamycin, micronomicin, neomycin, netilmicin, pentisomicin, plazomicin, propikacin, ribostamycin, sisomicin, streptoduocin, streptomycin, streptomycin-high, tobramycin, and tobramycin-high)
-aminopenicillins (amoxicillin, amoxicillin/clavulanic acid, and ampicillin)
-antifungals (amorolfine, amphotericin B, amphotericin B-high, anidulafungin, butoconazole, caspofungin, ciclopirox, clotrimazole, econazole, fluconazole, flucytosine, fosfluconazole, griseofulvin, hachimycin, ibrexafungerp, isavuconazole, isoconazole, itraconazole, ketoconazole, manogepix, micafungin, miconazole, nystatin, oteseconazole, pimaricin, posaconazole, rezafungin, ribociclib, sulconazole, terbinafine, terconazole, and voriconazole)
-antimycobacterials (4-aminosalicylic acid, calcium aminosalicylate, capreomycin, clofazimine, delamanid, enviomycin, ethambutol, ethambutol/isoniazid, ethionamide, isoniazid, isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, morinamide, p-aminosalicylic acid, pretomanid, protionamide, pyrazinamide, rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine, sodium aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone, thioacetazone/isoniazid, tiocarlide, and viomycin)
-betalactamase_inhibitors (amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, avibactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/sulbactam, ceftaroline/avibactam, ceftazidime/avibactam, ceftibuten/avibactam, ceftolozane/tazobactam, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, nacubactam, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, sulbactam, sultamicillin, taniborbactam, tazobactam, ticarcillin/clavulanic acid, xeruborbactam, and zidebactam)
-betalactams (amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, aztreonam, aztreonam/avibactam, aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, biapenem, carbenicillin, carindacillin, carumonam, cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, ciclacillin, clometocillin, cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem, flucloxacillin, hetacillin, imipenem, imipenem/EDTA, imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, panipenem, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, razupenem, ritipenem, ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, taniborbactam, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, and tigemonam)
-betalactams_with_inhibitor (amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftibuten/avibactam, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, and ticarcillin/clavulanic acid)
-carbapenems (biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, taniborbactam, and tebipenem)
-cephalosporins (cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef)
-cephalosporins_1st (cefacetrile, cefadroxil, cefalexin, cefaloridine, cefalotin, cefapirin, cefatrizine, cefazedone, cefazolin, cefroxadine, ceftezole, and cephradine)
-cephalosporins_2nd (cefaclor, cefamandole, cefmetazole, cefonicid, ceforanide, cefotetan, cefotiam, cefoxitin, cefoxitin screening test, cefprozil, cefuroxime, cefuroxime axetil, and loracarbef)
-cephalosporins_3rd (cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefetamet, cefetamet pivoxil, cefixime, cefmenoxime, cefodizime, cefoperazone, cefoperazone/sulbactam, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotiam hexetil, cefovecin, cefpimizole, cefpiramide, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefsulodin, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, and latamoxef)
-cephalosporins_4th (cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis, cefozopran, cefpirome, and cefquinome)
-cephalosporins_5th (ceftaroline, ceftaroline/avibactam, ceftobiprole, ceftobiprole medocaril, and ceftolozane/tazobactam)
-cephalosporins_except_caz (cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef)
-fluoroquinolones (besifloxacin, ciprofloxacin, ciprofloxacin/metronidazole, ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin, danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin, finafloxacin, fleroxacin, garenoxacin, gatifloxacin, gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin, levofloxacin/ornidazole, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nemonoxacin, nifuroquine, nitroxoline, norfloxacin, norfloxacin screening test, norfloxacin/metronidazole, norfloxacin/tinidazole, ofloxacin, ofloxacin/ornidazole, orbifloxacin, pazufloxacin, pefloxacin, pefloxacin screening test, pradofloxacin, premafloxacin, prulifloxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, and trovafloxacin)
-fusidanes (fusidic acid)
-glycopeptides (avoparcin, bleomycin, dalbavancin, norvancomycin, oritavancin, ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin, vancomycin, vancomycin-macromethod, and zorbamycin)
-glycopeptides_except_lipo (avoparcin, bleomycin, norvancomycin, ramoplanin, teicoplanin, teicoplanin-macromethod, vancomycin, vancomycin-macromethod, and zorbamycin)
-ionophores (lasalocid, monensin sodium, narasin, nystatin, and salinomycin)
-isoxazolylpenicillins (cloxacillin, dicloxacillin, flucloxacillin, meticillin, oxacillin, and oxacillin screening test)
-lincosamides (clindamycin, clindamycin inducible screening test, lincomycin, and pirlimycin)
-lipoglycopeptides (dalbavancin, oritavancin, and telavancin)
-macrolides (acetylmidecamycin, acetylspiramycin, azithromycin, clarithromycin, clindamycin inducible screening test, dirithromycin, erythromycin, flurithromycin, gamithromycin, josamycin, kitasamycin, meleumycin, midecamycin, miocamycin, nafithromycin, oleandomycin, pirlimycin, primycin, rokitamycin, roxithromycin, solithromycin, spiramycin, telithromycin, tildipirosin, tilmicosin, troleandomycin, tulathromycin, tylosin, and tylvalosin)
-monobactams (aztreonam, aztreonam/avibactam, aztreonam/nacubactam, carumonam, and tigemonam)
-nitrofurans (furazidin, furazolidone, nifurtoinol, nitrofurantoin, and nitrofurazone)
-oxazolidinones (cadazolid, cycloserine, linezolid, tedizolid, and thiacetazone)
-penicillins (amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, carbenicillin, carindacillin, ciclacillin, clometocillin, cloxacillin, dicloxacillin, epicillin, flucloxacillin, hetacillin, lenampicillin, mecillinam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, temocillin, ticarcillin, and ticarcillin/clavulanic acid)
-peptides (avoparcin, bacitracin, bleomycin, dalbavancin, daptomycin, norvancomycin, oritavancin, ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin, thiostrepton, vancomycin, vancomycin-macromethod, and zorbamycin)
-phenicols (chloramphenicol, florfenicol, and thiamphenicol)
-phosphonics (amikacin/fosfomycin and fosfomycin)
-pleuromutilins (retapamulin and tiamulin)
-polymyxins (colistin, polymyxin B, and polymyxin B/polysorbate 80)
-quinolones (besifloxacin, cinoxacin, ciprofloxacin, ciprofloxacin/metronidazole, ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin, danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin, finafloxacin, fleroxacin, flumequine, garenoxacin, gatifloxacin, gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin, levofloxacin/ornidazole, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nalidixic acid, nalidixic acid screening test, nemonoxacin, nifuroquine, nitroxoline, norfloxacin, norfloxacin screening test, norfloxacin/metronidazole, norfloxacin/tinidazole, ofloxacin, ofloxacin/ornidazole, orbifloxacin, oxolinic acid, ozenoxacin, pazufloxacin, pefloxacin, pefloxacin screening test, pipemidic acid, piromidic acid, pradofloxacin, premafloxacin, prulifloxacin, rosoxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, and trovafloxacin)
-rifamycins (rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, and rifapentine)
-spiropyrimidinetriones (zoliflodacin)
-streptogramins (ostreogrycin, pristinamycin, quinupristin/dalfopristin, and virginiamycine)
-sulfonamides (isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, ormetroprim/sulfamethoxazole, sulfachlorpyridazine, sulfadiazine, sulfadiazine/tetroxoprim, sulfadiazine/trimethoprim, sulfadimethoxine, sulfadimidine, sulfadimidine/trimethoprim, sulfafurazole, sulfaisodimidine, sulfalene, sulfamazone, sulfamerazine, sulfamerazine/trimethoprim, sulfamethazine, sulfamethizole, sulfamethoxazole, sulfamethoxypyridazine, sulfametomidine, sulfametoxydiazine, sulfametrole/trimethoprim, sulfamoxole, sulfamoxole/trimethoprim, sulfanilamide, sulfaperin, sulfaphenazole, sulfapyridine, sulfasuccinamide, sulfathiazole, sulfathiourea, sulfisoxazole, sulfonamide, and trimethoprim/sulfamethoxazole)
-tetracyclines (cetocycline, chlortetracycline, clomocycline, demeclocycline, doxycycline, eravacycline, lymecycline, metacycline, minocycline, omadacycline, oxytetracycline, penimepicycline, rolitetracycline, sarecycline, tetracycline, tetracycline screening test, tetracycline/oleandomycin, and tigecycline)
-tetracyclines_except_tgc (cetocycline, chlortetracycline, clomocycline, demeclocycline, doxycycline, eravacycline, lymecycline, metacycline, minocycline, omadacycline, oxytetracycline, penimepicycline, rolitetracycline, sarecycline, tetracycline, tetracycline screening test, and tetracycline/oleandomycin)
-trimethoprims (brodimoprim, iclaprim, isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, ormetroprim/sulfamethoxazole, sulfadiazine, sulfadiazine/tetroxoprim, sulfadiazine/trimethoprim, sulfadimethoxine, sulfadimidine, sulfadimidine/trimethoprim, sulfafurazole, sulfaisodimidine, sulfalene, sulfamazone, sulfamerazine, sulfamerazine/trimethoprim, sulfamethizole, sulfamethoxazole, sulfamethoxypyridazine, sulfametomidine, sulfametoxydiazine, sulfametrole/trimethoprim, sulfamoxole, sulfamoxole/trimethoprim, sulfanilamide, sulfaperin, sulfaphenazole, sulfapyridine, sulfathiazole, sulfathiourea, trimethoprim, and trimethoprim/sulfamethoxazole)
-ureidopenicillins (azlocillin, mezlocillin, piperacillin, and piperacillin/tazobactam)
-
-
-
-
-
-
Examples
-
x <- custom_eucast_rules (
- AMC == "R" & genus == "Klebsiella" ~ aminopenicillins == "R" ,
- AMC == "I" & genus == "Klebsiella" ~ aminopenicillins == "I"
-)
-x
-#> A set of custom EUCAST rules:
-#>
-#> 1. If AMC is R and genus is "Klebsiella" then set to R :
-#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
-#>
-#> 2. If AMC is I and genus is "Klebsiella" then set to I :
-#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
-
-# run the custom rule set (verbose = TRUE will return a logbook instead of the data set):
-eucast_rules ( example_isolates ,
- rules = "custom" ,
- custom_rules = x ,
- info = FALSE ,
- overwrite = TRUE ,
- verbose = TRUE
-)
-#> # A tibble: 8 × 9
-#> row col mo_fullname old new rule rule_group rule_name rule_source
-#> <int> <chr> <chr> <ord> <chr> <chr> <chr> <chr> <chr>
-#> 1 33 AMP Klebsiella pne… R I " rep… Custom EU… Custom E… Object 'x'…
-#> 2 33 AMX Klebsiella pne… R I " rep… Custom EU… Custom E… Object 'x'…
-#> 3 34 AMP Klebsiella pne… R I " rep… Custom EU… Custom E… Object 'x'…
-#> 4 34 AMX Klebsiella pne… R I " rep… Custom EU… Custom E… Object 'x'…
-#> 5 531 AMP Klebsiella pne… R I " rep… Custom EU… Custom E… Object 'x'…
-#> 6 531 AMX Klebsiella pne… R I " rep… Custom EU… Custom E… Object 'x'…
-#> 7 1 485 AMP Klebsiella oxy… R I " rep… Custom EU… Custom E… Object 'x'…
-#> 8 1 485 AMX Klebsiella oxy… R I " rep… Custom EU… Custom E… Object 'x'…
-
-# combine rule sets
-x2 <- c (
- x ,
- custom_eucast_rules ( TZP == "R" ~ carbapenems == "R" )
-)
-x2
-#> A set of custom EUCAST rules:
-#>
-#> 1. If AMC is R and genus is "Klebsiella" then set to R :
-#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
-#>
-#> 2. If AMC is I and genus is "Klebsiella" then set to I :
-#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
-#>
-#> 3. If TZP is R then set to R :
-#> biapenem (BIA), doripenem (DOR), ertapenem (ETP), imipenem (IPM), imipenem/EDTA (IPE), imipenem/relebactam (IMR), meropenem (MEM), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), panipenem (PAN), razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), taniborbactam (TAN), tebipenem (TBP)
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/reference/custom_interpretive_rules.html b/reference/custom_interpretive_rules.html
new file mode 100644
index 000000000..b866670ac
--- /dev/null
+++ b/reference/custom_interpretive_rules.html
@@ -0,0 +1,269 @@
+
+Define Custom Interpretive Rules — custom_interpretive_rules • AMR (for R)
+ Skip to contents
+
+
+
+
+
+
+
+
+
Define custom interpretive rules for your organisation or specific analysis and use the output of this function in interpretive_rules() .
+
+
+
+
Usage
+
custom_interpretive_rules ( ... )
+
+
+
+
Arguments
+
+
+
...
+Rules in formula notation, see below for instructions, and in Examples .
+
+
+
+
Value
+
A list containing the custom rules
+
+
+
Details
+
Some organisations have their own adoption of interpretive rules. This function can be used to define custom rules to be used in the interpretive_rules() function.
+
Basics
+
+
+
If you are familiar with the case_when() function of the dplyr package, you will recognise the input method to set your own rules. Rules must be set using what R considers to be the 'formula notation'. The rule itself is written before the tilde (~) and the consequence of the rule is written after the tilde:
+
+
These are two custom interpretive rules: if TZP (piperacillin/tazobactam) is "S", all aminopenicillins (ampicillin and amoxicillin) must be made "S", and if TZP is "R", aminopenicillins must be made "R". These rules can also be printed to the console, so it is immediately clear how they work:
+
x
+#> A set of custom interpretive rules:
+#>
+#> 1. If TZP is "S" then set to S :
+#> amoxicillin (AMX), ampicillin (AMP)
+#>
+#> 2. If TZP is "R" then set to R :
+#> amoxicillin (AMX), ampicillin (AMP)
+
The rules (the part before the tilde, in above example TZP == "S" and TZP == "R") must be evaluable in your data set: it should be able to run as a filter in your data set without errors. This means for the above example that the column TZP must exist. We will create a sample data set and test the rules set:
+
df <- data.frame ( mo = c ( "Escherichia coli" , "Klebsiella pneumoniae" ) ,
+ TZP = as.sir ( "R" ) ,
+ ampi = as.sir ( "S" ) ,
+ cipro = as.sir ( "S" ) )
+df
+#> mo TZP ampi cipro
+#> 1 Escherichia coli R S S
+#> 2 Klebsiella pneumoniae R S S
+
+interpretive_rules ( df ,
+ rules = "custom" ,
+ custom_rules = x ,
+ info = FALSE ,
+ overwrite = TRUE )
+#> mo TZP ampi cipro
+#> 1 Escherichia coli R R S
+#> 2 Klebsiella pneumoniae R R S
+
+
+
+
Using taxonomic properties in rules
+
+
+
There is one exception in columns used for the rules: all column names of the microorganisms data set can also be used, but do not have to exist in the data set. These column names are: "mo", "fullname", "status", "kingdom", "phylum", "class", "order", "family", "genus", "species", "subspecies", "rank", "ref", "oxygen_tolerance", "source", "lpsn", "lpsn_parent", "lpsn_renamed_to", "mycobank", "mycobank_parent", "mycobank_renamed_to", "gbif", "gbif_parent", "gbif_renamed_to", "prevalence", and "snomed". Thus, this next example will work as well, despite the fact that the df data set does not contain a column genus:
+
y <- custom_interpretive_rules (
+ TZP == "S" & genus == "Klebsiella" ~ aminopenicillins == "S" ,
+ TZP == "R" & genus == "Klebsiella" ~ aminopenicillins == "R"
+)
+
+interpretive_rules ( df ,
+ rules = "custom" ,
+ custom_rules = y ,
+ info = FALSE ,
+ overwrite = TRUE )
+#> mo TZP ampi cipro
+#> 1 Escherichia coli R S S
+#> 2 Klebsiella pneumoniae R R S
+
+
+
+
Sharing rules among multiple users
+
+
+
The rules set (the y object in this case) could be exported to a shared file location using saveRDS() if you collaborate with multiple users. The custom rules set could then be imported using readRDS() .
+
+
+
+
Usage of multiple antimicrobials and antimicrobial group names
+
+
+
You can define antimicrobial groups instead of single antimicrobials for the rule consequence, which is the part after the tilde (~). In the examples above, the antimicrobial group aminopenicillins includes both ampicillin and amoxicillin.
+
Rules can also be applied to multiple antimicrobials and antimicrobial groups simultaneously. Use the c() function to combine multiple antimicrobials. For instance, the following example sets all aminopenicillins and ureidopenicillins to "R" if column TZP (piperacillin/tazobactam) is "R":
+
x <- custom_interpretive_rules ( TZP == "R" ~ c ( aminopenicillins , ureidopenicillins ) == "R" )
+x
+#> A set of custom interpretive rules:
+#>
+#> 1. If TZP is "R" then set to "R":
+#> amoxicillin (AMX), ampicillin (AMP), azlocillin (AZL), mezlocillin (MEZ), piperacillin (PIP), piperacillin/tazobactam (TZP)
+
These 43 antimicrobial groups are allowed in the rules (case-insensitive) and can be used in any combination:
aminocoumarins (clorobiocin, novobiocin, and penicillin/novobiocin)
+aminoglycosides (amikacin, amikacin/fosfomycin, apramycin, arbekacin, astromicin, bekanamycin, dibekacin, framycetin, gentamicin, gentamicin-high, habekacin, hygromycin, isepamicin, kanamycin, kanamycin-high, kanamycin/cephalexin, kasugamycin, micronomicin, neomycin, netilmicin, pentisomicin, plazomicin, propikacin, ribostamycin, sisomicin, streptoduocin, streptomycin, streptomycin-high, tobramycin, and tobramycin-high)
+aminopenicillins (amoxicillin, amoxicillin/clavulanic acid, and ampicillin)
+antifungals (amorolfine, amphotericin B, amphotericin B-high, anidulafungin, butoconazole, caspofungin, ciclopirox, clotrimazole, econazole, fluconazole, flucytosine, fosfluconazole, griseofulvin, hachimycin, ibrexafungerp, isavuconazole, isoconazole, itraconazole, ketoconazole, manogepix, micafungin, miconazole, nystatin, oteseconazole, pimaricin, posaconazole, rezafungin, ribociclib, sulconazole, terbinafine, terconazole, and voriconazole)
+antimycobacterials (4-aminosalicylic acid, calcium aminosalicylate, capreomycin, clofazimine, delamanid, enviomycin, ethambutol, ethambutol/isoniazid, ethionamide, isoniazid, isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, morinamide, p-aminosalicylic acid, pretomanid, protionamide, pyrazinamide, rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine, sodium aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone, thioacetazone/isoniazid, tiocarlide, and viomycin)
+betalactamase_inhibitors (amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, avibactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/sulbactam, ceftaroline/avibactam, ceftazidime/avibactam, ceftibuten/avibactam, ceftolozane/tazobactam, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, nacubactam, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, sulbactam, sultamicillin, taniborbactam, tazobactam, ticarcillin/clavulanic acid, xeruborbactam, and zidebactam)
+betalactams (amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, aztreonam, aztreonam/avibactam, aztreonam/nacubactam, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, biapenem, carbenicillin, carindacillin, carumonam, cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, ciclacillin, clometocillin, cloxacillin, dicloxacillin, doripenem, epicillin, ertapenem, flucloxacillin, hetacillin, imipenem, imipenem/EDTA, imipenem/relebactam, latamoxef, lenampicillin, loracarbef, mecillinam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, panipenem, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, razupenem, ritipenem, ritipenem acoxil, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, taniborbactam, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, and tigemonam)
+betalactams_with_inhibitor (amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftibuten/avibactam, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, and ticarcillin/clavulanic acid)
+carbapenems (biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, taniborbactam, and tebipenem)
+cephalosporins (cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef)
+cephalosporins_1st (cefacetrile, cefadroxil, cefalexin, cefaloridine, cefalotin, cefapirin, cefatrizine, cefazedone, cefazolin, cefroxadine, ceftezole, and cephradine)
+cephalosporins_2nd (cefaclor, cefamandole, cefmetazole, cefonicid, ceforanide, cefotetan, cefotiam, cefoxitin, cefoxitin screening test, cefprozil, cefuroxime, cefuroxime axetil, and loracarbef)
+cephalosporins_3rd (cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefetamet, cefetamet pivoxil, cefixime, cefmenoxime, cefodizime, cefoperazone, cefoperazone/sulbactam, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotiam hexetil, cefovecin, cefpimizole, cefpiramide, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefsulodin, ceftazidime, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, and latamoxef)
+cephalosporins_4th (cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis, cefozopran, cefpirome, and cefquinome)
+cephalosporins_5th (ceftaroline, ceftaroline/avibactam, ceftobiprole, ceftobiprole medocaril, and ceftolozane/tazobactam)
+cephalosporins_except_caz (cefacetrile, cefaclor, cefadroxil, cefalexin, cefaloridine, cefalotin, cefamandole, cefapirin, cefatrizine, cefazedone, cefazolin, cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/enmetazobactam, cefepime/nacubactam, cefepime/taniborbactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime screening test, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening test, cefozopran, cefpimizole, cefpiramide, cefpirome, cefpodoxime, cefpodoxime proxetil, cefpodoxime/clavulanic acid, cefprozil, cefquinome, cefroxadine, cefsulodin, cefsumide, ceftaroline, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, cefteram, cefteram pivoxil, ceftezole, ceftibuten, ceftibuten/avibactam, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, and loracarbef)
+fluoroquinolones (besifloxacin, ciprofloxacin, ciprofloxacin/metronidazole, ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin, danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin, finafloxacin, fleroxacin, garenoxacin, gatifloxacin, gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin, levofloxacin/ornidazole, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nemonoxacin, nifuroquine, nitroxoline, norfloxacin, norfloxacin screening test, norfloxacin/metronidazole, norfloxacin/tinidazole, ofloxacin, ofloxacin/ornidazole, orbifloxacin, pazufloxacin, pefloxacin, pefloxacin screening test, pradofloxacin, premafloxacin, prulifloxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, and trovafloxacin)
+fusidanes (fusidic acid)
+glycopeptides (avoparcin, bleomycin, dalbavancin, norvancomycin, oritavancin, ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin, vancomycin, vancomycin-macromethod, and zorbamycin)
+glycopeptides_except_lipo (avoparcin, bleomycin, norvancomycin, ramoplanin, teicoplanin, teicoplanin-macromethod, vancomycin, vancomycin-macromethod, and zorbamycin)
+ionophores (lasalocid, monensin sodium, narasin, nystatin, and salinomycin)
+isoxazolylpenicillins (cloxacillin, dicloxacillin, flucloxacillin, meticillin, oxacillin, and oxacillin screening test)
+lincosamides (clindamycin, clindamycin inducible screening test, lincomycin, and pirlimycin)
+lipoglycopeptides (dalbavancin, oritavancin, and telavancin)
+macrolides (acetylmidecamycin, acetylspiramycin, azithromycin, clarithromycin, clindamycin inducible screening test, dirithromycin, erythromycin, flurithromycin, gamithromycin, josamycin, kitasamycin, meleumycin, midecamycin, miocamycin, nafithromycin, oleandomycin, pirlimycin, primycin, rokitamycin, roxithromycin, solithromycin, spiramycin, telithromycin, tildipirosin, tilmicosin, troleandomycin, tulathromycin, tylosin, and tylvalosin)
+monobactams (aztreonam, aztreonam/avibactam, aztreonam/nacubactam, carumonam, and tigemonam)
+nitrofurans (furazidin, furazolidone, nifurtoinol, nitrofurantoin, and nitrofurazone)
+oxazolidinones (cadazolid, cycloserine, linezolid, tedizolid, and thiacetazone)
+penicillins (amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, benzylpenicillin screening test, carbenicillin, carindacillin, ciclacillin, clometocillin, cloxacillin, dicloxacillin, epicillin, flucloxacillin, hetacillin, lenampicillin, mecillinam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, oxacillin screening test, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, temocillin, ticarcillin, and ticarcillin/clavulanic acid)
+peptides (avoparcin, bacitracin, bleomycin, dalbavancin, daptomycin, norvancomycin, oritavancin, ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin, thiostrepton, vancomycin, vancomycin-macromethod, and zorbamycin)
+phenicols (chloramphenicol, florfenicol, and thiamphenicol)
+phosphonics (amikacin/fosfomycin and fosfomycin)
+pleuromutilins (retapamulin and tiamulin)
+polymyxins (colistin, polymyxin B, and polymyxin B/polysorbate 80)
+quinolones (besifloxacin, cinoxacin, ciprofloxacin, ciprofloxacin/metronidazole, ciprofloxacin/ornidazole, ciprofloxacin/tinidazole, clinafloxacin, danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin, finafloxacin, fleroxacin, flumequine, garenoxacin, gatifloxacin, gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin, levofloxacin/ornidazole, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nalidixic acid, nalidixic acid screening test, nemonoxacin, nifuroquine, nitroxoline, norfloxacin, norfloxacin screening test, norfloxacin/metronidazole, norfloxacin/tinidazole, ofloxacin, ofloxacin/ornidazole, orbifloxacin, oxolinic acid, ozenoxacin, pazufloxacin, pefloxacin, pefloxacin screening test, pipemidic acid, piromidic acid, pradofloxacin, premafloxacin, prulifloxacin, rosoxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, and trovafloxacin)
+rifamycins (rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, and rifapentine)
+spiropyrimidinetriones (zoliflodacin)
+streptogramins (ostreogrycin, pristinamycin, quinupristin/dalfopristin, and virginiamycine)
+sulfonamides (isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, ormetroprim/sulfamethoxazole, sulfachlorpyridazine, sulfadiazine, sulfadiazine/tetroxoprim, sulfadiazine/trimethoprim, sulfadimethoxine, sulfadimidine, sulfadimidine/trimethoprim, sulfafurazole, sulfaisodimidine, sulfalene, sulfamazone, sulfamerazine, sulfamerazine/trimethoprim, sulfamethazine, sulfamethizole, sulfamethoxazole, sulfamethoxypyridazine, sulfametomidine, sulfametoxydiazine, sulfametrole/trimethoprim, sulfamoxole, sulfamoxole/trimethoprim, sulfanilamide, sulfaperin, sulfaphenazole, sulfapyridine, sulfasuccinamide, sulfathiazole, sulfathiourea, sulfisoxazole, sulfonamide, and trimethoprim/sulfamethoxazole)
+tetracyclines (cetocycline, chlortetracycline, clomocycline, demeclocycline, doxycycline, eravacycline, lymecycline, metacycline, minocycline, omadacycline, oxytetracycline, penimepicycline, rolitetracycline, sarecycline, tetracycline, tetracycline screening test, tetracycline/oleandomycin, and tigecycline)
+tetracyclines_except_tgc (cetocycline, chlortetracycline, clomocycline, demeclocycline, doxycycline, eravacycline, lymecycline, metacycline, minocycline, omadacycline, oxytetracycline, penimepicycline, rolitetracycline, sarecycline, tetracycline, tetracycline screening test, and tetracycline/oleandomycin)
+trimethoprims (brodimoprim, iclaprim, isoniazid/sulfamethoxazole/trimethoprim/pyridoxine, ormetroprim/sulfamethoxazole, sulfadiazine, sulfadiazine/tetroxoprim, sulfadiazine/trimethoprim, sulfadimethoxine, sulfadimidine, sulfadimidine/trimethoprim, sulfafurazole, sulfaisodimidine, sulfalene, sulfamazone, sulfamerazine, sulfamerazine/trimethoprim, sulfamethizole, sulfamethoxazole, sulfamethoxypyridazine, sulfametomidine, sulfametoxydiazine, sulfametrole/trimethoprim, sulfamoxole, sulfamoxole/trimethoprim, sulfanilamide, sulfaperin, sulfaphenazole, sulfapyridine, sulfathiazole, sulfathiourea, trimethoprim, and trimethoprim/sulfamethoxazole)
+ureidopenicillins (azlocillin, mezlocillin, piperacillin, and piperacillin/tazobactam)
+
+
+
+
+
+
Examples
+
x <- custom_interpretive_rules (
+ AMC == "R" & genus == "Klebsiella" ~ aminopenicillins == "R" ,
+ AMC == "I" & genus == "Klebsiella" ~ aminopenicillins == "I"
+)
+x
+#> A set of custom interpretive rules:
+#>
+#> 1. If AMC is R and genus is "Klebsiella" then set to R :
+#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
+#>
+#> 2. If AMC is I and genus is "Klebsiella" then set to I :
+#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
+
+# run the custom rule set (verbose = TRUE will return a logbook instead of the data set):
+eucast_rules ( example_isolates ,
+ rules = "custom" ,
+ custom_rules = x ,
+ info = FALSE ,
+ overwrite = TRUE ,
+ verbose = TRUE
+)
+#> # A tibble: 8 × 9
+#> row col mo_fullname old new rule rule_group rule_name rule_source
+#> <int> <chr> <chr> <ord> <chr> <chr> <chr> <chr> <chr>
+#> 1 33 AMP Klebsiella pne… R I " rep… Custom in… Custom i… Object 'x'…
+#> 2 33 AMX Klebsiella pne… R I " rep… Custom in… Custom i… Object 'x'…
+#> 3 34 AMP Klebsiella pne… R I " rep… Custom in… Custom i… Object 'x'…
+#> 4 34 AMX Klebsiella pne… R I " rep… Custom in… Custom i… Object 'x'…
+#> 5 531 AMP Klebsiella pne… R I " rep… Custom in… Custom i… Object 'x'…
+#> 6 531 AMX Klebsiella pne… R I " rep… Custom in… Custom i… Object 'x'…
+#> 7 1 485 AMP Klebsiella oxy… R I " rep… Custom in… Custom i… Object 'x'…
+#> 8 1 485 AMX Klebsiella oxy… R I " rep… Custom in… Custom i… Object 'x'…
+
+# combine rule sets
+x2 <- c (
+ x ,
+ custom_interpretive_rules ( TZP == "R" ~ carbapenems == "R" )
+)
+x2
+#> A set of custom interpretive rules:
+#>
+#> 1. If AMC is R and genus is "Klebsiella" then set to R :
+#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
+#>
+#> 2. If AMC is I and genus is "Klebsiella" then set to I :
+#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
+#>
+#> 3. If TZP is R then set to R :
+#> biapenem (BIA), doripenem (DOR), ertapenem (ETP), imipenem (IPM), imipenem/EDTA (IPE), imipenem/relebactam (IMR), meropenem (MEM), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), panipenem (PAN), razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), taniborbactam (TAN), tebipenem (TBP)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reference/custom_eucast_rules.md b/reference/custom_interpretive_rules.md
similarity index 90%
rename from reference/custom_eucast_rules.md
rename to reference/custom_interpretive_rules.md
index 7ccb880cc..459f7519a 100644
--- a/reference/custom_eucast_rules.md
+++ b/reference/custom_interpretive_rules.md
@@ -1,13 +1,13 @@
-# Define Custom EUCAST Rules
+# Define Custom Interpretive Rules
-Define custom EUCAST rules for your organisation or specific analysis
-and use the output of this function in
-[`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md).
+Define custom interpretive rules for your organisation or specific
+analysis and use the output of this function in
+[`interpretive_rules()`](https://amr-for-r.org/reference/interpretive_rules.md).
## Usage
``` r
-custom_eucast_rules(...)
+custom_interpretive_rules(...)
```
## Arguments
@@ -23,9 +23,9 @@ A [list](https://rdrr.io/r/base/list.html) containing the custom rules
## Details
-Some organisations have their own adoption of EUCAST rules. This
-function can be used to define custom EUCAST rules to be used in the
-[`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
+Some organisations have their own adoption of interpretive rules. This
+function can be used to define custom rules to be used in the
+[`interpretive_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
function.
### Basics
@@ -37,17 +37,17 @@ set your own rules. Rules must be set using what R considers to be the
'formula notation'. The rule itself is written *before* the tilde (`~`)
and the consequence of the rule is written *after* the tilde:
- x <- custom_eucast_rules(TZP == "S" ~ aminopenicillins == "S",
- TZP == "R" ~ aminopenicillins == "R")
+ x <- custom_interpretive_rules(TZP == "S" ~ aminopenicillins == "S",
+ TZP == "R" ~ aminopenicillins == "R")
-These are two custom EUCAST rules: if TZP (piperacillin/tazobactam) is
-"S", all aminopenicillins (ampicillin and amoxicillin) must be made "S",
-and if TZP is "R", aminopenicillins must be made "R". These rules can
-also be printed to the console, so it is immediately clear how they
-work:
+These are two custom interpretive rules: if TZP
+(piperacillin/tazobactam) is "S", all aminopenicillins (ampicillin and
+amoxicillin) must be made "S", and if TZP is "R", aminopenicillins must
+be made "R". These rules can also be printed to the console, so it is
+immediately clear how they work:
x
- #> A set of custom EUCAST rules:
+ #> A set of custom interpretive rules:
#>
#> 1. If TZP is "S" then set to S :
#> amoxicillin (AMX), ampicillin (AMP)
@@ -70,11 +70,11 @@ data set and test the rules set:
#> 1 Escherichia coli R S S
#> 2 Klebsiella pneumoniae R S S
- eucast_rules(df,
- rules = "custom",
- custom_rules = x,
- info = FALSE,
- overwrite = TRUE)
+ interpretive_rules(df,
+ rules = "custom",
+ custom_rules = x,
+ info = FALSE,
+ overwrite = TRUE)
#> mo TZP ampi cipro
#> 1 Escherichia coli R R S
#> 2 Klebsiella pneumoniae R R S
@@ -94,16 +94,16 @@ column names are: `"mo"`, `"fullname"`, `"status"`, `"kingdom"`,
example will work as well, despite the fact that the `df` data set does
not contain a column `genus`:
- y <- custom_eucast_rules(
+ y <- custom_interpretive_rules(
TZP == "S" & genus == "Klebsiella" ~ aminopenicillins == "S",
TZP == "R" & genus == "Klebsiella" ~ aminopenicillins == "R"
)
- eucast_rules(df,
- rules = "custom",
- custom_rules = y,
- info = FALSE,
- overwrite = TRUE)
+ interpretive_rules(df,
+ rules = "custom",
+ custom_rules = y,
+ info = FALSE,
+ overwrite = TRUE)
#> mo TZP ampi cipro
#> 1 Escherichia coli R S S
#> 2 Klebsiella pneumoniae R R S
@@ -129,9 +129,9 @@ function to combine multiple antimicrobials. For instance, the following
example sets all aminopenicillins and ureidopenicillins to "R" if column
TZP (piperacillin/tazobactam) is "R":
- x <- custom_eucast_rules(TZP == "R" ~ c(aminopenicillins, ureidopenicillins) == "R")
+ x <- custom_interpretive_rules(TZP == "R" ~ c(aminopenicillins, ureidopenicillins) == "R")
x
- #> A set of custom EUCAST rules:
+ #> A set of custom interpretive rules:
#>
#> 1. If TZP is "R" then set to "R":
#> amoxicillin (AMX), ampicillin (AMP), azlocillin (AZL), mezlocillin (MEZ), piperacillin (PIP), piperacillin/tazobactam (TZP)
@@ -499,12 +499,12 @@ These 43 antimicrobial groups are allowed in the rules
## Examples
``` r
-x <- custom_eucast_rules(
+x <- custom_interpretive_rules(
AMC == "R" & genus == "Klebsiella" ~ aminopenicillins == "R",
AMC == "I" & genus == "Klebsiella" ~ aminopenicillins == "I"
)
x
-#> A set of custom EUCAST rules:
+#> A set of custom interpretive rules:
#>
#> 1. If AMC is R and genus is "Klebsiella" then set to R :
#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
@@ -523,22 +523,22 @@ eucast_rules(example_isolates,
#> # A tibble: 8 × 9
#> row col mo_fullname old new rule rule_group rule_name rule_source
#>
-#> 1 33 AMP Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
-#> 2 33 AMX Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
-#> 3 34 AMP Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
-#> 4 34 AMX Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
-#> 5 531 AMP Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
-#> 6 531 AMX Klebsiella pne… R I "rep… Custom EU… Custom E… Object 'x'…
-#> 7 1485 AMP Klebsiella oxy… R I "rep… Custom EU… Custom E… Object 'x'…
-#> 8 1485 AMX Klebsiella oxy… R I "rep… Custom EU… Custom E… Object 'x'…
+#> 1 33 AMP Klebsiella pne… R I "rep… Custom in… Custom i… Object 'x'…
+#> 2 33 AMX Klebsiella pne… R I "rep… Custom in… Custom i… Object 'x'…
+#> 3 34 AMP Klebsiella pne… R I "rep… Custom in… Custom i… Object 'x'…
+#> 4 34 AMX Klebsiella pne… R I "rep… Custom in… Custom i… Object 'x'…
+#> 5 531 AMP Klebsiella pne… R I "rep… Custom in… Custom i… Object 'x'…
+#> 6 531 AMX Klebsiella pne… R I "rep… Custom in… Custom i… Object 'x'…
+#> 7 1485 AMP Klebsiella oxy… R I "rep… Custom in… Custom i… Object 'x'…
+#> 8 1485 AMX Klebsiella oxy… R I "rep… Custom in… Custom i… Object 'x'…
# combine rule sets
x2 <- c(
x,
- custom_eucast_rules(TZP == "R" ~ carbapenems == "R")
+ custom_interpretive_rules(TZP == "R" ~ carbapenems == "R")
)
x2
-#> A set of custom EUCAST rules:
+#> A set of custom interpretive rules:
#>
#> 1. If AMC is R and genus is "Klebsiella" then set to R :
#> amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), ampicillin (AMP)
diff --git a/reference/custom_mdro_guideline.html b/reference/custom_mdro_guideline.html
index df6451cf4..5964f64ab 100644
--- a/reference/custom_mdro_guideline.html
+++ b/reference/custom_mdro_guideline.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -70,7 +70,7 @@
as_factor
-A logical to indicate whether the returned value should be an ordered factor (TRUE, default), or otherwise a character vector. For combining rules sets (using c() ) this value will be inherited from the first set at default.
+A [logical] to indicate whether the returned value should be an ordered [factor] (`TRUE`, default), or otherwise a [character] vector. For combining rules sets (using [c()]) this value will be inherited from the first set at default.
x
diff --git a/reference/custom_mdro_guideline.md b/reference/custom_mdro_guideline.md
index be83b2236..ea611b42f 100644
--- a/reference/custom_mdro_guideline.md
+++ b/reference/custom_mdro_guideline.md
@@ -22,13 +22,10 @@ c(x, ..., as_factor = NULL)
- as_factor:
- A [logical](https://rdrr.io/r/base/logical.html) to indicate whether
- the returned value should be an ordered
- [factor](https://rdrr.io/pkg/data.table/man/fctr.html) (`TRUE`,
- default), or otherwise a
- [character](https://rdrr.io/r/base/character.html) vector. For
- combining rules sets (using [`c()`](https://rdrr.io/r/base/c.html))
- this value will be inherited from the first set at default.
+ A \[logical\] to indicate whether the returned value should be an
+ ordered \[factor\] (\`TRUE\`, default), or otherwise a \[character\]
+ vector. For combining rules sets (using \[c()\]) this value will be
+ inherited from the first set at default.
- x:
diff --git a/reference/dosage.html b/reference/dosage.html
index b72776b9b..863465f59 100644
--- a/reference/dosage.html
+++ b/reference/dosage.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/esbl_isolates.html b/reference/esbl_isolates.html
index 03ad334d2..bbe6afc1a 100644
--- a/reference/esbl_isolates.html
+++ b/reference/esbl_isolates.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/example_isolates.html b/reference/example_isolates.html
index 3f8bd969a..c39e6404e 100644
--- a/reference/example_isolates.html
+++ b/reference/example_isolates.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/example_isolates_unclean.html b/reference/example_isolates_unclean.html
index 98be5001a..6a3407af8 100644
--- a/reference/example_isolates_unclean.html
+++ b/reference/example_isolates_unclean.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/export_ncbi_biosample.html b/reference/export_ncbi_biosample.html
index 613b1fee1..6bb3dbc17 100644
--- a/reference/export_ncbi_biosample.html
+++ b/reference/export_ncbi_biosample.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/first_isolate.html b/reference/first_isolate.html
index 68e10e0ff..b009377a2 100644
--- a/reference/first_isolate.html
+++ b/reference/first_isolate.html
@@ -9,7 +9,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/g.test.html b/reference/g.test.html
index bd5cfc74a..046692dbb 100644
--- a/reference/g.test.html
+++ b/reference/g.test.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -124,8 +124,9 @@
stdres
standardized residuals,
- (observed - expected) / sqrt(V), where V is the residual cell variance (Agresti, 2007,
- section 2.4.5 for the case where x is a matrix, n * p * (1 - p) otherwise).
+ (observed - expected) / sqrt(V), where V is the
+ residual cell variance (Agresti 2007 , section 2.4.5)
+ for the case where x is a matrix, n * p * (1 - p) otherwise).
diff --git a/reference/g.test.md b/reference/g.test.md
index 642260f7d..83fb2f848 100644
--- a/reference/g.test.md
+++ b/reference/g.test.md
@@ -93,8 +93,9 @@ A list with class `"htest"` containing the following components:
- stdres:
standardized residuals, `(observed - expected) / sqrt(V)`, where `V`
- is the residual cell variance (Agresti, 2007, section 2.4.5 for the
- case where `x` is a matrix, `n * p * (1 - p)` otherwise).
+ is the residual cell variance ([Agresti
+ 2007](#reference+chisq.test.Rd+R+3AAgresti+3A2007), section 2.4.5) for
+ the case where `x` is a matrix, `n * p * (1 - p)` otherwise).
## Details
diff --git a/reference/get_episode.html b/reference/get_episode.html
index bd7b7ec36..e76fbe258 100644
--- a/reference/get_episode.html
+++ b/reference/get_episode.html
@@ -7,7 +7,7 @@
AMR (for R)
-
3.0.1.9055
+
3.0.1.9057
diff --git a/reference/ggplot_pca.html b/reference/ggplot_pca.html
index 3ac81e6db..0dd2affab 100644
--- a/reference/ggplot_pca.html
+++ b/reference/ggplot_pca.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -96,8 +96,9 @@
pc.biplot
-If true, use what Gabriel (1971) refers to as a "principal component
- biplot", with lambda = 1 and observations scaled up by sqrt(n) and
+
If true, use what Gabriel (1971) refers to as a
+ “principal component biplot”,
+ with lambda = 1 and observations scaled up by sqrt(n) and
variables scaled down by sqrt(n). Then inner products between
variables approximate covariances and distances between observations
approximate Mahalanobis distance.
diff --git a/reference/ggplot_pca.md b/reference/ggplot_pca.md
index 28cd2541f..93b14363b 100644
--- a/reference/ggplot_pca.md
+++ b/reference/ggplot_pca.md
@@ -68,11 +68,12 @@ the changes made based on the source code were:
- pc.biplot:
- If true, use what Gabriel (1971) refers to as a "principal component
- biplot", with `lambda = 1` and observations scaled up by sqrt(n) and
- variables scaled down by sqrt(n). Then inner products between
- variables approximate covariances and distances between observations
- approximate Mahalanobis distance.
+ If true, use what [Gabriel
+ (1971)](#reference+biplot.princomp.Rd+R+3AGabriel+3A1971) refers to as
+ a “principal component biplot”, with `lambda = 1` and observations
+ scaled up by sqrt(n) and variables scaled down by sqrt(n). Then inner
+ products between variables approximate covariances and distances
+ between observations approximate Mahalanobis distance.
- labels:
diff --git a/reference/ggplot_sir.html b/reference/ggplot_sir.html
index 43249a5a6..4457c600a 100644
--- a/reference/ggplot_sir.html
+++ b/reference/ggplot_sir.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/guess_ab_col.html b/reference/guess_ab_col.html
index 8ddb35126..e2f5ea19e 100644
--- a/reference/guess_ab_col.html
+++ b/reference/guess_ab_col.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/index.html b/reference/index.html
index a7194889d..6357e4d43 100644
--- a/reference/index.html
+++ b/reference/index.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -145,9 +145,9 @@
Add Custom Antimicrobials
-
Preparing data: antimicrobial results
+
Interpreting data: antimicrobial results
-
With as.mic() and as.disk() you can transform your raw input to valid MIC or disk diffusion values. Use as.sir() for cleaning raw data to let it only contain “R”, “I” and “S”, or to interpret MIC or disk diffusion values as SIR based on the lastest EUCAST and CLSI guidelines. Afterwards, you can extend antibiotic interpretations by applying EUCAST rules with eucast_rules() .
+
With as.mic() and as.disk() you can transform your raw input to valid MIC or disk diffusion values. Use as.sir() for cleaning raw data to let it only contain “R”, “I” and “S”, or to interpret MIC or disk diffusion values as SIR based on the lastest EUCAST and CLSI guidelines. Afterwards, you can extend antibiotic interpretations by applying interpretive rules, for example from EUCAST with interpretive_rules() .
Analysing data
@@ -560,7 +560,7 @@
Other: statistical tests
-
Some statistical tests or methods are not part of base R and were added to this package for convenience.
+
Some statistical tests or methods usable for AMR analyses are not part of base R and were added to this package for convenience.
@@ -599,7 +599,7 @@
- ab_class() ab_selector()
+ custom_eucast_rules() ab_class() ab_selector()
Deprecated Functions, Arguments, or Datasets
diff --git a/reference/index.md b/reference/index.md
index a7da32a9a..c0c02153b 100644
--- a/reference/index.md
+++ b/reference/index.md
@@ -116,7 +116,7 @@ from clinical text records, using
[`clear_custom_antimicrobials()`](https://amr-for-r.org/reference/add_custom_antimicrobials.md)
: Add Custom Antimicrobials
-## Preparing data: antimicrobial results
+## Interpreting data: antimicrobial results
With [`as.mic()`](https://amr-for-r.org/reference/as.mic.md) and
[`as.disk()`](https://amr-for-r.org/reference/as.disk.md) you can
@@ -125,10 +125,10 @@ transform your raw input to valid MIC or disk diffusion values. Use
data to let it only contain “R”, “I” and “S”, or to interpret MIC or
disk diffusion values as SIR based on the lastest EUCAST and CLSI
guidelines. Afterwards, you can extend antibiotic interpretations by
-applying [EUCAST
-rules](https://www.eucast.org/expert_rules_and_intrinsic_resistance/)
+applying interpretive rules, for example [from
+EUCAST](https://www.eucast.org/expert_rules_and_intrinsic_resistance/)
with
-[`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md).
+[`interpretive_rules()`](https://amr-for-r.org/reference/interpretive_rules.md).
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
[`NA_sir_`](https://amr-for-r.org/reference/as.sir.md)
@@ -153,8 +153,8 @@ with
[`clsi_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
[`eucast_dosage()`](https://amr-for-r.org/reference/interpretive_rules.md)
: Apply Interpretive Rules
-- [`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md)
- : Define Custom EUCAST Rules
+- [`custom_interpretive_rules()`](https://amr-for-r.org/reference/custom_interpretive_rules.md)
+ : Define Custom Interpretive Rules
## Analysing data
@@ -465,8 +465,8 @@ and other utilities. Especially the ‘like’ function can be useful:
## Other: statistical tests
-Some statistical tests or methods are not part of base R and were added
-to this package for convenience.
+Some statistical tests or methods usable for AMR analyses are not part
+of base R and were added to this package for convenience.
- [`g.test()`](https://amr-for-r.org/reference/g.test.md) :
@@ -483,6 +483,7 @@ to this package for convenience.
These objects are deprecated, meaning that they will still work but show
a warning that they will be removed in a future version.
-- [`ab_class()`](https://amr-for-r.org/reference/AMR-deprecated.md)
+- [`custom_eucast_rules()`](https://amr-for-r.org/reference/AMR-deprecated.md)
+ [`ab_class()`](https://amr-for-r.org/reference/AMR-deprecated.md)
[`ab_selector()`](https://amr-for-r.org/reference/AMR-deprecated.md) :
Deprecated Functions, Arguments, or Datasets
diff --git a/reference/interpretive_rules.html b/reference/interpretive_rules.html
index a8d815bb8..03e84d270 100644
--- a/reference/interpretive_rules.html
+++ b/reference/interpretive_rules.html
@@ -9,7 +9,7 @@ To improve the interpretation of the antibiogram before CLSI/EUCAST interpretive
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -107,7 +107,7 @@ Leclercq et al. EUCAST expert rules in antimicrobial susceptibility test
rules
-A character vector that specifies which rules should be applied. Must be one or more of "breakpoints", "expected_phenotypes", "expert", "other", "custom", "all", and defaults to c("breakpoints", "expected_phenotypes"). The default value can be set to another value using the package option AMR_interpretive_rules : options(AMR_interpretive_rules = "all"). If using "custom", be sure to fill in argument custom_rules too. Custom rules can be created with custom_eucast_rules() .
+A character vector that specifies which rules should be applied. Must be one or more of "breakpoints", "expected_phenotypes", "expert", "other", "custom", "all", and defaults to c("breakpoints", "expected_phenotypes"). The default value can be set to another value using the package option AMR_interpretive_rules : options(AMR_interpretive_rules = "all"). If using "custom", be sure to fill in argument custom_rules too. Custom rules can be created with custom_interpretive_rules() .
guideline
@@ -139,7 +139,7 @@ Leclercq et al. EUCAST expert rules in antimicrobial susceptibility test
custom_rules
-Custom rules to apply, created with custom_eucast_rules() .
+Custom rules to apply, created with custom_interpretive_rules() .
overwrite
@@ -169,15 +169,15 @@ Leclercq et al. EUCAST expert rules in antimicrobial susceptibility test
Details
Note: This function does not translate MIC or disk values to SIR values. Use as.sir() for that. Note: When ampicillin (AMP, J01CA01) is not available but amoxicillin (AMX, J01CA04) is, the latter will be used for all rules where there is a dependency on ampicillin. These drugs are interchangeable when it comes to expression of antimicrobial resistance.
-
The file containing all EUCAST rules is located here: https://github.com/msberends/AMR/blob/main/data-raw/eucast_rules.tsv . Note: Old taxonomic names are replaced with the current taxonomy where applicable. For example, Ochrobactrum anthropi was renamed to Brucella anthropi in 2020; the original EUCAST rules v3.1 and v3.2 did not yet contain this new taxonomic name. The AMR package contains the full microbial taxonomy updated until June 24th, 2024, see microorganisms .
+
The file containing all interpretive rules is located here: https://github.com/msberends/AMR/blob/main/data-raw/interpretive_rules.tsv . Note: Old taxonomic names are replaced with the current taxonomy where applicable. For example, Ochrobactrum anthropi was renamed to Brucella anthropi in 2020; the original EUCAST rules v3.1 and v3.2 did not yet contain this new taxonomic name. The AMR package contains the full microbial taxonomy updated until June 24th, 2024, see microorganisms .
@@ -187,7 +187,7 @@ Leclercq et al.
EUCAST expert rules in antimicrobial susceptibility test
Before further processing, two non-EUCAST rules about drug combinations can be applied to improve the efficacy of the EUCAST rules, and the reliability of your data (analysis). These rules are:
A drug with enzyme inhibitor will be set to S if the same drug without enzyme inhibitor is S
A drug without enzyme inhibitor will be set to R if the same drug with enzyme inhibitor is R
Important examples include amoxicillin and amoxicillin/clavulanic acid, and trimethoprim and trimethoprim/sulfamethoxazole. Needless to say, for these rules to work, both drugs must be available in the data set.
-Since these rules are not officially approved by EUCAST, they are not applied at default. To use these rules, include "other" to the rules argument, or use eucast_rules(..., rules = "all"). You can also set the package option AMR_interpretive_rules , i.e. run options(AMR_interpretive_rules = "all").
+Since these rules are not officially approved by EUCAST, they are not applied at default. To use these rules, include "other" to the rules argument, or use interpretive_rules(..., rules = "all"). You can also set the package option AMR_interpretive_rules , i.e. run options(AMR_interpretive_rules = "all").
@@ -232,8 +232,8 @@ Leclercq et al.
EUCAST expert rules in antimicrobial susceptibility test
# apply EUCAST rules: some results wil be changed
b <- eucast_rules ( a , overwrite = TRUE )
-#> Warning: in `eucast_rules()`: not all columns with antimicrobial results are of class
-#> <sir> . Transform them on beforehand, e.g.:
+#> Warning: in `interpretive_rules()`: not all columns with antimicrobial results are of
+#> class <sir> . Transform them on beforehand, e.g.:
#>
#> • x |> as.sir ( CXM: AMX)
#>
@@ -253,8 +253,8 @@ Leclercq et al. EUCAST expert rules in antimicrobial susceptibility test
# do not apply EUCAST rules, but rather get a data.frame
# containing all details about the transformations:
c <- eucast_rules ( a , overwrite = TRUE , verbose = TRUE )
-#> Warning: in `eucast_rules()`: not all columns with antimicrobial results are of class
-#> <sir> . Transform them on beforehand, e.g.:
+#> Warning: in `interpretive_rules()`: not all columns with antimicrobial results are of
+#> class <sir> . Transform them on beforehand, e.g.:
#>
#> • x |> as.sir ( CXM: AMX)
#>
diff --git a/reference/interpretive_rules.md b/reference/interpretive_rules.md
index 8e9ecfcae..ade87e2d5 100644
--- a/reference/interpretive_rules.md
+++ b/reference/interpretive_rules.md
@@ -100,7 +100,7 @@ eucast_dosage(ab, administration = "iv", version_breakpoints = 15)
`options(AMR_interpretive_rules = "all")`. If using `"custom"`, be
sure to fill in argument `custom_rules` too. Custom rules can be
created with
- [`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md).
+ [`custom_interpretive_rules()`](https://amr-for-r.org/reference/custom_interpretive_rules.md).
- guideline:
@@ -166,7 +166,7 @@ eucast_dosage(ab, administration = "iv", version_breakpoints = 15)
- custom_rules:
Custom rules to apply, created with
- [`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md).
+ [`custom_interpretive_rules()`](https://amr-for-r.org/reference/custom_interpretive_rules.md).
- overwrite:
@@ -226,8 +226,8 @@ where there is a dependency on ampicillin. These drugs are
interchangeable when it comes to expression of antimicrobial
resistance.
-The file containing all EUCAST rules is located here:
-.
+The file containing all interpretive rules is located here:
+.
**Note:** Old taxonomic names are replaced with the current taxonomy
where applicable. For example, *Ochrobactrum anthropi* was renamed to
*Brucella anthropi* in 2020; the original EUCAST rules v3.1 and v3.2 did
@@ -238,13 +238,13 @@ full microbial taxonomy updated until June 24th, 2024, see
### Custom Rules
Custom rules can be created using
-[`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md),
+[`custom_interpretive_rules()`](https://amr-for-r.org/reference/custom_interpretive_rules.md),
e.g.:
- x <- custom_eucast_rules(AMC == "R" & genus == "Klebsiella" ~ aminopenicillins == "R",
- AMC == "I" & genus == "Klebsiella" ~ aminopenicillins == "I")
+ x <- custom_interpretive_rules(AMC == "R" & genus == "Klebsiella" ~ aminopenicillins == "R",
+ AMC == "I" & genus == "Klebsiella" ~ aminopenicillins == "I")
- eucast_rules(example_isolates, rules = "custom", custom_rules = x)
+ interpretive_rules(example_isolates, rules = "custom", custom_rules = x)
### 'Other' Rules
@@ -264,8 +264,8 @@ these rules to work, both drugs must be available in the data set.
Since these rules are not officially approved by EUCAST, they are not
applied at default. To use these rules, include `"other"` to the `rules`
-argument, or use `eucast_rules(..., rules = "all")`. You can also set
-the package option
+argument, or use `interpretive_rules(..., rules = "all")`. You can also
+set the package option
[`AMR_interpretive_rules`](https://amr-for-r.org/reference/AMR-options.md),
i.e. run `options(AMR_interpretive_rules = "all")`.
@@ -318,8 +318,8 @@ head(a)
# apply EUCAST rules: some results wil be changed
b <- eucast_rules(a, overwrite = TRUE)
-#> Warning: in `eucast_rules()`: not all columns with antimicrobial results are of class
-#> . Transform them on beforehand, e.g.:
+#> Warning: in `interpretive_rules()`: not all columns with antimicrobial results are of
+#> class . Transform them on beforehand, e.g.:
#>
#> • x |> as.sir(CXM:AMX)
#>
@@ -339,8 +339,8 @@ head(b)
# do not apply EUCAST rules, but rather get a data.frame
# containing all details about the transformations:
c <- eucast_rules(a, overwrite = TRUE, verbose = TRUE)
-#> Warning: in `eucast_rules()`: not all columns with antimicrobial results are of class
-#> . Transform them on beforehand, e.g.:
+#> Warning: in `interpretive_rules()`: not all columns with antimicrobial results are of
+#> class . Transform them on beforehand, e.g.:
#>
#> • x |> as.sir(CXM:AMX)
#>
diff --git a/reference/intrinsic_resistant.html b/reference/intrinsic_resistant.html
index c98aaa80d..4d9f4caa1 100644
--- a/reference/intrinsic_resistant.html
+++ b/reference/intrinsic_resistant.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/italicise_taxonomy.html b/reference/italicise_taxonomy.html
index 96ae0b043..0e7ebd8d8 100644
--- a/reference/italicise_taxonomy.html
+++ b/reference/italicise_taxonomy.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/join.html b/reference/join.html
index 6593ed8c0..abffc0eb3 100644
--- a/reference/join.html
+++ b/reference/join.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -94,8 +94,8 @@
Details
-
Note: As opposed to the join() functions of dplyr, character vectors are supported and at default existing columns will get a suffix "2" and the newly joined columns will not get a suffix.
-
If the dplyr package is installed, their join functions will be used. Otherwise, the much slower merge() and interaction() functions from base R will be used.
+
**Note:** As opposed to the `join()` functions of `dplyr`, [character] vectors are supported and at default existing columns will get a suffix `"2"` and the newly joined columns will not get a suffix.
+
If the `dplyr` package is installed, their join functions will be used. Otherwise, the much slower [merge()] and [interaction()] functions from base R will be used.
diff --git a/reference/join.md b/reference/join.md
index e502722af..a780415dd 100644
--- a/reference/join.md
+++ b/reference/join.md
@@ -59,16 +59,13 @@ a [data.frame](https://rdrr.io/r/base/data.frame.html)
## Details
-**Note:** As opposed to the `join()` functions of `dplyr`,
-[character](https://rdrr.io/r/base/character.html) vectors are supported
-and at default existing columns will get a suffix `"2"` and the newly
-joined columns will not get a suffix.
+\*\*Note:\*\* As opposed to the \`join()\` functions of \`dplyr\`,
+\[character\] vectors are supported and at default existing columns will
+get a suffix \`"2"\` and the newly joined columns will not get a suffix.
-If the `dplyr` package is installed, their join functions will be used.
-Otherwise, the much slower
-[`merge()`](https://rdrr.io/pkg/data.table/man/merge.html) and
-[`interaction()`](https://rdrr.io/r/base/interaction.html) functions
-from base R will be used.
+If the \`dplyr\` package is installed, their join functions will be
+used. Otherwise, the much slower \[merge()\] and \[interaction()\]
+functions from base R will be used.
## Examples
diff --git a/reference/key_antimicrobials.html b/reference/key_antimicrobials.html
index cc4d8fe26..6172f42a8 100644
--- a/reference/key_antimicrobials.html
+++ b/reference/key_antimicrobials.html
@@ -7,7 +7,7 @@
AMR (for R)
-
3.0.1.9055
+
3.0.1.9057
diff --git a/reference/kurtosis.html b/reference/kurtosis.html
index 85281b629..e071612fc 100644
--- a/reference/kurtosis.html
+++ b/reference/kurtosis.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/like.html b/reference/like.html
index 75ca346af..c48f2a67b 100644
--- a/reference/like.html
+++ b/reference/like.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/mdro.html b/reference/mdro.html
index e411f605e..b47c456f5 100644
--- a/reference/mdro.html
+++ b/reference/mdro.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -144,18 +144,17 @@
Value
-
-
If verbose is set to TRUE:
-A data.frame containing columns row_number, microorganism, MDRO, reason, all_nonsusceptible_columns, guideline
-CMI 2012 paper - function mdr_cmi2012() or mdro():
-Ordered factor with levels Negative < Multi-drug-resistant (MDR) < Extensively drug-resistant (XDR) < Pandrug-resistant (PDR)
-TB guideline - function mdr_tb() or mdro(..., guideline = "TB"):
-Ordered factor with levels Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant < Extensively drug-resistant
-German guideline - function mrgn() or mdro(..., guideline = "MRGN"):
-Ordered factor with levels Negative < 3MRGN < 4MRGN
-Everything else, except for custom guidelines:
-Ordered factor with levels Negative < Positive, unconfirmed < Positive. The value "Positive, unconfirmed" means that, according to the guideline, it is not entirely sure if the isolate is multi-drug resistant and this should be confirmed with additional (e.g. genotypic) tests
-
+ - If `verbose` is set to `TRUE`:
+ A [data.frame] containing columns `row_number`, `microorganism`, `MDRO`, `reason`, `all_nonsusceptible_columns`, `guideline`
+- CMI 2012 paper - function [mdr_cmi2012()] or [mdro()]:
+ Ordered [factor] with levels `Negative` < `Multi-drug-resistant (MDR)` < `Extensively drug-resistant (XDR)` < `Pandrug-resistant (PDR)`
+- TB guideline - function [mdr_tb()] or [`mdro(..., guideline = "TB")`][mdro()]:
+ Ordered [factor] with levels `Negative` < `Mono-resistant` < `Poly-resistant` < `Multi-drug-resistant` < `Extensively drug-resistant`
+- German guideline - function [mrgn()] or [`mdro(..., guideline = "MRGN")`][mdro()]:
+ Ordered [factor] with levels `Negative` < `3MRGN` < `4MRGN`
+- Everything else, except for custom guidelines:
+ Ordered [factor] with levels `Negative` < `Positive, unconfirmed` < `Positive`. The value `"Positive, unconfirmed"` means that, according to the guideline, it is not entirely sure if the isolate is multi-drug resistant and this should be confirmed with additional (e.g. genotypic) tests
+
Details
These functions are context-aware. This means that the x argument can be left blank if used inside a data.frame call, see Examples .
diff --git a/reference/mdro.md b/reference/mdro.md
index 68b213144..612168980 100644
--- a/reference/mdro.md
+++ b/reference/mdro.md
@@ -152,32 +152,25 @@ eucast_exceptional_phenotypes(x = NULL, only_sir_columns = any(is.sir(x)),
## Value
-- If `verbose` is set to `TRUE`:
- A [data.frame](https://rdrr.io/r/base/data.frame.html) containing
- columns `row_number`, `microorganism`, `MDRO`, `reason`,
- `all_nonsusceptible_columns`, `guideline`
-
-- CMI 2012 paper - function `mdr_cmi2012()` or `mdro()`:
- Ordered [factor](https://rdrr.io/pkg/data.table/man/fctr.html) with
- levels `Negative` \< `Multi-drug-resistant (MDR)` \<
- `Extensively drug-resistant (XDR)` \< `Pandrug-resistant (PDR)`
-
-- TB guideline - function `mdr_tb()` or `mdro(..., guideline = "TB")`:
- Ordered [factor](https://rdrr.io/pkg/data.table/man/fctr.html) with
- levels `Negative` \< `Mono-resistant` \< `Poly-resistant` \<
- `Multi-drug-resistant` \< `Extensively drug-resistant`
-
-- German guideline - function `mrgn()` or
- `mdro(..., guideline = "MRGN")`:
- Ordered [factor](https://rdrr.io/pkg/data.table/man/fctr.html) with
- levels `Negative` \< `3MRGN` \< `4MRGN`
-
-- Everything else, except for custom guidelines:
- Ordered [factor](https://rdrr.io/pkg/data.table/man/fctr.html) with
- levels `Negative` \< `Positive, unconfirmed` \< `Positive`. The value
- `"Positive, unconfirmed"` means that, according to the guideline, it
- is not entirely sure if the isolate is multi-drug resistant and this
- should be confirmed with additional (e.g. genotypic) tests
+\- If \`verbose\` is set to \`TRUE\`:
+A \[data.frame\] containing columns \`row_number\`, \`microorganism\`,
+\`MDRO\`, \`reason\`, \`all_nonsusceptible_columns\`, \`guideline\` -
+CMI 2012 paper - function \[mdr_cmi2012()\] or \[mdro()\]:
+Ordered \[factor\] with levels \`Negative\` \< \`Multi-drug-resistant
+(MDR)\` \< \`Extensively drug-resistant (XDR)\` \< \`Pandrug-resistant
+(PDR)\` - TB guideline - function \[mdr_tb()\] or \[\`mdro(...,
+guideline = "TB")\`\]\[mdro()\]:
+Ordered \[factor\] with levels \`Negative\` \< \`Mono-resistant\` \<
+\`Poly-resistant\` \< \`Multi-drug-resistant\` \< \`Extensively
+drug-resistant\` - German guideline - function \[mrgn()\] or
+\[\`mdro(..., guideline = "MRGN")\`\]\[mdro()\]:
+Ordered \[factor\] with levels \`Negative\` \< \`3MRGN\` \< \`4MRGN\` -
+Everything else, except for custom guidelines:
+Ordered \[factor\] with levels \`Negative\` \< \`Positive, unconfirmed\`
+\< \`Positive\`. The value \`"Positive, unconfirmed"\` means that,
+according to the guideline, it is not entirely sure if the isolate is
+multi-drug resistant and this should be confirmed with additional (e.g.
+genotypic) tests
## Details
diff --git a/reference/mean_amr_distance.html b/reference/mean_amr_distance.html
index b8f1a4927..a934c950e 100644
--- a/reference/mean_amr_distance.html
+++ b/reference/mean_amr_distance.html
@@ -7,7 +7,7 @@
AMR (for R)
-
3.0.1.9055
+
3.0.1.9057
diff --git a/reference/microorganisms.codes.html b/reference/microorganisms.codes.html
index 0da3a5890..f6e4caf2c 100644
--- a/reference/microorganisms.codes.html
+++ b/reference/microorganisms.codes.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/microorganisms.groups.html b/reference/microorganisms.groups.html
index 4aef3e329..e1fdbd218 100644
--- a/reference/microorganisms.groups.html
+++ b/reference/microorganisms.groups.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/microorganisms.html b/reference/microorganisms.html
index 8d74b616a..6cd80c3bc 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.9055
+ 3.0.1.9057
diff --git a/reference/mo_matching_score.html b/reference/mo_matching_score.html
index 69cdafebb..37cc81f46 100644
--- a/reference/mo_matching_score.html
+++ b/reference/mo_matching_score.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/mo_property.html b/reference/mo_property.html
index 1b1e4c0c9..427fbbe94 100644
--- a/reference/mo_property.html
+++ b/reference/mo_property.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -201,32 +201,32 @@
Value
-
-
An integer in case of mo_year()
-An ordered factor in case of mo_pathogenicity()
-A list in case of mo_taxonomy(), mo_synonyms(), mo_snomed(), and mo_info()
-A logical in case of mo_is_anaerobic(), mo_is_gram_negative(), mo_is_gram_positive(), mo_is_intrinsic_resistant(), and mo_is_yeast()
-A named character in case of mo_synonyms() and mo_url()
-A character in all other cases
-
+ - An [integer] in case of [mo_year()]
+- An [ordered factor][factor] in case of [mo_pathogenicity()]
+- A [list] in case of [mo_taxonomy()], [mo_synonyms()], [mo_snomed()], and [mo_info()]
+- A [logical] in case of [mo_is_anaerobic()], [mo_is_gram_negative()], [mo_is_gram_positive()], [mo_is_intrinsic_resistant()], and [mo_is_yeast()]
+- A named [character] in case of [mo_synonyms()] and [mo_url()]
+- A [character] in all other cases
+
Details
-
All functions will, at default, not keep old taxonomic properties, as synonyms are automatically replaced with the current taxonomy. Take for example Enterobacter aerogenes , which was initially named in 1960 but renamed to Klebsiella aerogenes in 2017:
mo_genus("Enterobacter aerogenes") will return "Klebsiella" (with a note about the renaming)
-mo_genus("Enterobacter aerogenes", keep_synonyms = TRUE) will return "Enterobacter" (with a once-per-session warning that the name is outdated)
-mo_ref("Enterobacter aerogenes") will return "Tindall et al., 2017" (with a note about the renaming)
-mo_ref("Enterobacter aerogenes", keep_synonyms = TRUE) will return "Hormaeche et al., 1960" (with a once-per-session warning that the name is outdated)
-The short name (mo_shortname()) returns the first character of the genus and the full species, such as "E. coli", for species and subspecies. Exceptions are abbreviations of staphylococci (such as "CoNS" , Coagulase-Negative Staphylococci) and beta-haemolytic streptococci (such as "GBS" , Group B Streptococci). Please bear in mind that e.g. E. coli could mean Escherichia coli (kingdom of Bacteria) as well as Entamoeba coli (kingdom of Protozoa). Returning to the full name will be done using as.mo() internally, giving priority to bacteria and human pathogens, i.e. "E. coli" will be considered Escherichia coli . As a result, mo_fullname(mo_shortname("Entamoeba coli")) returns "Escherichia coli".
-
Since the top-level of the taxonomy is sometimes referred to as 'kingdom' and sometimes as 'domain', the functions mo_kingdom() and mo_domain() return the exact same results.
-
Determination of human pathogenicity (mo_pathogenicity()) is strongly based on Bartlett et al. (2022, doi:10.1099/mic.0.001269
-). This function returns a factor with the levels Pathogenic , Potentially pathogenic , Non-pathogenic , and Unknown .
-
Determination of the Gram stain (mo_gramstain()) will be based on the taxonomic kingdom and phylum. Originally, Cavalier-Smith defined the so-called subkingdoms Negibacteria and Posibacteria (2002, PMID 11837318 ), and only considered these phyla as Posibacteria: Actinobacteria, Chloroflexi, Firmicutes, and Tenericutes. These phyla were later renamed to Actinomycetota, Chloroflexota, Bacillota, and Mycoplasmatota (2021, PMID 34694987 ). Bacteria in these phyla are considered Gram-positive in this AMR package, except for members of the class Negativicutes (within phylum Bacillota) which are Gram-negative. All other bacteria are considered Gram-negative. Species outside the kingdom of Bacteria will return a value NA. Functions mo_is_gram_negative() and mo_is_gram_positive() always return TRUE or FALSE (or NA when the input is NA or the MO code is UNKNOWN), thus always return FALSE for species outside the taxonomic kingdom of Bacteria.
-
Determination of yeasts (mo_is_yeast()) will be based on the taxonomic kingdom and class. Budding yeasts are yeasts that reproduce asexually through a process called budding, where a new cell develops from a small protrusion on the parent cell. Taxonomically, these are members of the phylum Ascomycota, class Saccharomycetes (also called Hemiascomycetes) or Pichiomycetes. True yeasts quite specifically refers to yeasts in the underlying order Saccharomycetales (such as Saccharomyces cerevisiae ). Thus, for all microorganisms that are member of the taxonomic class Saccharomycetes or Pichiomycetes, the function will return TRUE. It returns FALSE otherwise (or NA when the input is NA or the MO code is UNKNOWN).
-
Determination of intrinsic resistance (mo_is_intrinsic_resistant()) will be based on the intrinsic_resistant data set, which is based on 'EUCAST Expected Resistant Phenotypes' v1.2 (2023). The mo_is_intrinsic_resistant() function can be vectorised over both argument x (input for microorganisms) and ab (input for antimicrobials).
-
Determination of bacterial oxygen tolerance (mo_oxygen_tolerance()) will be based on BacDive, see Source . The function mo_is_anaerobic() only returns TRUE if the oxygen tolerance is "anaerobe", indicting an obligate anaerobic species or genus. It always returns FALSE for species outside the taxonomic kingdom of Bacteria.
-
The function mo_url() will return the direct URL to the online database entry, which also shows the scientific reference of the concerned species. This MycoBank URL will be used for fungi wherever available , this LPSN URL for bacteria wherever available, and this GBIF link otherwise.
-
SNOMED codes (mo_snomed()) was last updated on July 16th, 2024. See Source and the microorganisms data set for more info.
-
Old taxonomic names (so-called 'synonyms') can be retrieved with mo_synonyms() (which will have the scientific reference as name ), the current taxonomic name can be retrieved with mo_current(). Both functions return full names.
-
All output will be translated where possible.
+
All functions will, at default, **not** keep old taxonomic properties, as synonyms are automatically replaced with the current taxonomy. Take for example *Enterobacter aerogenes*, which was initially named in 1960 but renamed to *Klebsiella aerogenes* in 2017:
+- `mo_genus("Enterobacter aerogenes")` will return `"Klebsiella"` (with a note about the renaming)
+- `mo_genus("Enterobacter aerogenes", keep_synonyms = TRUE)` will return `"Enterobacter"` (with a once-per-session warning that the name is outdated)
+- `mo_ref("Enterobacter aerogenes")` will return `"Tindall et al., 2017"` (with a note about the renaming)
+- `mo_ref("Enterobacter aerogenes", keep_synonyms = TRUE)` will return `"Hormaeche et al., 1960"` (with a once-per-session warning that the name is outdated)
+
The short name ([mo_shortname()]) returns the first character of the genus and the full species, such as `"E. coli"`, for species and subspecies. Exceptions are abbreviations of staphylococci (such as *"CoNS"*, Coagulase-Negative Staphylococci) and beta-haemolytic streptococci (such as *"GBS"*, Group B Streptococci). Please bear in mind that e.g. *E. coli* could mean *Escherichia coli* (kingdom of Bacteria) as well as *Entamoeba coli* (kingdom of Protozoa). Returning to the full name will be done using [as.mo()] internally, giving priority to bacteria and human pathogens, i.e. `"E. coli"` will be considered *Escherichia coli*. As a result, `mo_fullname(mo_shortname("Entamoeba coli"))` returns `"Escherichia coli"`.
+
Since the top-level of the taxonomy is sometimes referred to as 'kingdom' and sometimes as 'domain', the functions [mo_kingdom()] and [mo_domain()] return the exact same results.
+
Determination of human pathogenicity ([mo_pathogenicity()]) is strongly based on Bartlett *et al.* (2022, doi:10.1099/mic.0.001269
+). This function returns a [factor] with the levels *Pathogenic*, *Potentially pathogenic*, *Non-pathogenic*, and *Unknown*.
+
Determination of the Gram stain ([mo_gramstain()]) will be based on the taxonomic kingdom and phylum. Originally, Cavalier-Smith defined the so-called subkingdoms Negibacteria and Posibacteria (2002, [PMID 11837318](https://pubmed.ncbi.nlm.nih.gov/11837318/)), and only considered these phyla as Posibacteria: Actinobacteria, Chloroflexi, Firmicutes, and Tenericutes. These phyla were later renamed to Actinomycetota, Chloroflexota, Bacillota, and Mycoplasmatota (2021, [PMID 34694987](https://pubmed.ncbi.nlm.nih.gov/34694987/)). Bacteria in these phyla are considered Gram-positive in this `AMR` package, except for members of the class Negativicutes (within phylum Bacillota) which are Gram-negative. All other bacteria are considered Gram-negative. Species outside the kingdom of Bacteria will return a value `NA`. Functions [mo_is_gram_negative()] and [mo_is_gram_positive()] always return `TRUE` or `FALSE` (or `NA` when the input is `NA` or the MO code is `UNKNOWN`), thus always return `FALSE` for species outside the taxonomic kingdom of Bacteria.
+
Determination of yeasts ([mo_is_yeast()]) will be based on the taxonomic kingdom and class. *Budding yeasts* are yeasts that reproduce asexually through a process called budding, where a new cell develops from a small protrusion on the parent cell. Taxonomically, these are members of the phylum Ascomycota, class Saccharomycetes (also called Hemiascomycetes) or Pichiomycetes. *True yeasts* quite specifically refers to yeasts in the underlying order Saccharomycetales (such as *Saccharomyces cerevisiae*). Thus, for all microorganisms that are member of the taxonomic class Saccharomycetes or Pichiomycetes, the function will return `TRUE`. It returns `FALSE` otherwise (or `NA` when the input is `NA` or the MO code is `UNKNOWN`).
+
Determination of intrinsic resistance ([mo_is_intrinsic_resistant()]) will be based on the [intrinsic_resistant] data set, which is based on `r format_eucast_version_nr(names(EUCAST_VERSION_EXPECTED_PHENOTYPES[1]))`. The [mo_is_intrinsic_resistant()] function can be vectorised over both argument `x` (input for microorganisms) and `ab` (input for antimicrobials).
+
Determination of bacterial oxygen tolerance ([mo_oxygen_tolerance()]) will be based on BacDive, see *Source*. The function [mo_is_anaerobic()] only returns `TRUE` if the oxygen tolerance is `"anaerobe"`, indicting an obligate anaerobic species or genus. It always returns `FALSE` for species outside the taxonomic kingdom of Bacteria.
+
The function [mo_url()] will return the direct URL to the online database entry, which also shows the scientific reference of the concerned species. [This MycoBank URL](`r TAXONOMY_VERSION$MycoBank$url`) will be used for fungi wherever available , [this LPSN URL](`r TAXONOMY_VERSION$MycoBank$url`) for bacteria wherever available, and [this GBIF link](`r TAXONOMY_VERSION$GBIF$url`) otherwise.
+
SNOMED codes ([mo_snomed()]) was last updated on `r documentation_date(TAXONOMY_VERSION$SNOMED$accessed_date)`. See *Source* and the [microorganisms] data set for more info.
+
Old taxonomic names (so-called 'synonyms') can be retrieved with [mo_synonyms()] (which will have the scientific reference as [name][base::names()]), the current taxonomic name can be retrieved with [mo_current()]. Both functions return full names.
+
All output [will be translated][translate] where possible.
Matching Score for Microorganisms
diff --git a/reference/mo_property.md b/reference/mo_property.md
index 7a29ab63f..1575aa87e 100644
--- a/reference/mo_property.md
+++ b/reference/mo_property.md
@@ -184,135 +184,116 @@ mo_property(x, property = "fullname", language = get_AMR_locale(),
## Value
-- An [integer](https://rdrr.io/r/base/integer.html) in case of
- `mo_year()`
-
-- An [ordered factor](https://rdrr.io/pkg/data.table/man/fctr.html) in
- case of `mo_pathogenicity()`
-
-- A [list](https://rdrr.io/r/base/list.html) in case of `mo_taxonomy()`,
- `mo_synonyms()`, `mo_snomed()`, and `mo_info()`
-
-- A [logical](https://rdrr.io/r/base/logical.html) in case of
- `mo_is_anaerobic()`, `mo_is_gram_negative()`, `mo_is_gram_positive()`,
- `mo_is_intrinsic_resistant()`, and `mo_is_yeast()`
-
-- A named [character](https://rdrr.io/r/base/character.html) in case of
- `mo_synonyms()` and `mo_url()`
-
-- A [character](https://rdrr.io/r/base/character.html) in all other
- cases
+\- An \[integer\] in case of \[mo_year()\] - An \[ordered
+factor\]\[factor\] in case of \[mo_pathogenicity()\] - A \[list\] in
+case of \[mo_taxonomy()\], \[mo_synonyms()\], \[mo_snomed()\], and
+\[mo_info()\] - A \[logical\] in case of \[mo_is_anaerobic()\],
+\[mo_is_gram_negative()\], \[mo_is_gram_positive()\],
+\[mo_is_intrinsic_resistant()\], and \[mo_is_yeast()\] - A named
+\[character\] in case of \[mo_synonyms()\] and \[mo_url()\] - A
+\[character\] in all other cases
## Details
-All functions will, at default, **not** keep old taxonomic properties,
-as synonyms are automatically replaced with the current taxonomy. Take
-for example *Enterobacter aerogenes*, which was initially named in 1960
-but renamed to *Klebsiella aerogenes* in 2017:
+All functions will, at default, \*\*not\*\* keep old taxonomic
+properties, as synonyms are automatically replaced with the current
+taxonomy. Take for example \*Enterobacter aerogenes\*, which was
+initially named in 1960 but renamed to \*Klebsiella aerogenes\* in
+2017: - \`mo_genus("Enterobacter aerogenes")\` will return
+\`"Klebsiella"\` (with a note about the renaming) -
+\`mo_genus("Enterobacter aerogenes", keep_synonyms = TRUE)\` will return
+\`"Enterobacter"\` (with a once-per-session warning that the name is
+outdated) - \`mo_ref("Enterobacter aerogenes")\` will return \`"Tindall
+et al., 2017"\` (with a note about the renaming) -
+\`mo_ref("Enterobacter aerogenes", keep_synonyms = TRUE)\` will return
+\`"Hormaeche et al., 1960"\` (with a once-per-session warning that the
+name is outdated)
-- `mo_genus("Enterobacter aerogenes")` will return `"Klebsiella"` (with
- a note about the renaming)
-
-- `mo_genus("Enterobacter aerogenes", keep_synonyms = TRUE)` will return
- `"Enterobacter"` (with a once-per-session warning that the name is
- outdated)
-
-- `mo_ref("Enterobacter aerogenes")` will return
- `"Tindall et al., 2017"` (with a note about the renaming)
-
-- `mo_ref("Enterobacter aerogenes", keep_synonyms = TRUE)` will return
- `"Hormaeche et al., 1960"` (with a once-per-session warning that the
- name is outdated)
-
-The short name (`mo_shortname()`) returns the first character of the
-genus and the full species, such as `"E. coli"`, for species and
+The short name (\[mo_shortname()\]) returns the first character of the
+genus and the full species, such as \`"E. coli"\`, for species and
subspecies. Exceptions are abbreviations of staphylococci (such as
-*"CoNS"*, Coagulase-Negative Staphylococci) and beta-haemolytic
-streptococci (such as *"GBS"*, Group B Streptococci). Please bear in
-mind that e.g. *E. coli* could mean *Escherichia coli* (kingdom of
-Bacteria) as well as *Entamoeba coli* (kingdom of Protozoa). Returning
-to the full name will be done using
-[`as.mo()`](https://amr-for-r.org/reference/as.mo.md) internally, giving
-priority to bacteria and human pathogens, i.e. `"E. coli"` will be
-considered *Escherichia coli*. As a result,
-`mo_fullname(mo_shortname("Entamoeba coli"))` returns
-`"Escherichia coli"`.
+\*"CoNS"\*, Coagulase-Negative Staphylococci) and beta-haemolytic
+streptococci (such as \*"GBS"\*, Group B Streptococci). Please bear in
+mind that e.g. \*E. coli\* could mean \*Escherichia coli\* (kingdom of
+Bacteria) as well as \*Entamoeba coli\* (kingdom of Protozoa). Returning
+to the full name will be done using \[as.mo()\] internally, giving
+priority to bacteria and human pathogens, i.e. \`"E. coli"\` will be
+considered \*Escherichia coli\*. As a result,
+\`mo_fullname(mo_shortname("Entamoeba coli"))\` returns \`"Escherichia
+coli"\`.
Since the top-level of the taxonomy is sometimes referred to as
-'kingdom' and sometimes as 'domain', the functions `mo_kingdom()` and
-`mo_domain()` return the exact same results.
+'kingdom' and sometimes as 'domain', the functions \[mo_kingdom()\] and
+\[mo_domain()\] return the exact same results.
-Determination of human pathogenicity (`mo_pathogenicity()`) is strongly
-based on Bartlett *et al.* (2022,
+Determination of human pathogenicity (\[mo_pathogenicity()\]) is
+strongly based on Bartlett \*et al.\* (2022,
[doi:10.1099/mic.0.001269](https://doi.org/10.1099/mic.0.001269) ). This
-function returns a
-[factor](https://rdrr.io/pkg/data.table/man/fctr.html) with the levels
-*Pathogenic*, *Potentially pathogenic*, *Non-pathogenic*, and *Unknown*.
+function returns a \[factor\] with the levels \*Pathogenic\*,
+\*Potentially pathogenic\*, \*Non-pathogenic\*, and \*Unknown\*.
-Determination of the Gram stain (`mo_gramstain()`) will be based on the
-taxonomic kingdom and phylum. Originally, Cavalier-Smith defined the
-so-called subkingdoms Negibacteria and Posibacteria (2002, [PMID
-11837318](https://pubmed.ncbi.nlm.nih.gov/11837318/)), and only
+Determination of the Gram stain (\[mo_gramstain()\]) will be based on
+the taxonomic kingdom and phylum. Originally, Cavalier-Smith defined the
+so-called subkingdoms Negibacteria and Posibacteria (2002, \[PMID
+11837318\](https://pubmed.ncbi.nlm.nih.gov/11837318/)), and only
considered these phyla as Posibacteria: Actinobacteria, Chloroflexi,
Firmicutes, and Tenericutes. These phyla were later renamed to
Actinomycetota, Chloroflexota, Bacillota, and Mycoplasmatota (2021,
-[PMID 34694987](https://pubmed.ncbi.nlm.nih.gov/34694987/)). Bacteria in
-these phyla are considered Gram-positive in this `AMR` package, except
-for members of the class Negativicutes (within phylum Bacillota) which
-are Gram-negative. All other bacteria are considered Gram-negative.
-Species outside the kingdom of Bacteria will return a value `NA`.
-Functions `mo_is_gram_negative()` and `mo_is_gram_positive()` always
-return `TRUE` or `FALSE` (or `NA` when the input is `NA` or the MO code
-is `UNKNOWN`), thus always return `FALSE` for species outside the
-taxonomic kingdom of Bacteria.
+\[PMID 34694987\](https://pubmed.ncbi.nlm.nih.gov/34694987/)). Bacteria
+in these phyla are considered Gram-positive in this \`AMR\` package,
+except for members of the class Negativicutes (within phylum Bacillota)
+which are Gram-negative. All other bacteria are considered
+Gram-negative. Species outside the kingdom of Bacteria will return a
+value \`NA\`. Functions \[mo_is_gram_negative()\] and
+\[mo_is_gram_positive()\] always return \`TRUE\` or \`FALSE\` (or \`NA\`
+when the input is \`NA\` or the MO code is \`UNKNOWN\`), thus always
+return \`FALSE\` for species outside the taxonomic kingdom of Bacteria.
-Determination of yeasts (`mo_is_yeast()`) will be based on the taxonomic
-kingdom and class. *Budding yeasts* are yeasts that reproduce asexually
-through a process called budding, where a new cell develops from a small
-protrusion on the parent cell. Taxonomically, these are members of the
-phylum Ascomycota, class Saccharomycetes (also called Hemiascomycetes)
-or Pichiomycetes. *True yeasts* quite specifically refers to yeasts in
-the underlying order Saccharomycetales (such as *Saccharomyces
-cerevisiae*). Thus, for all microorganisms that are member of the
-taxonomic class Saccharomycetes or Pichiomycetes, the function will
-return `TRUE`. It returns `FALSE` otherwise (or `NA` when the input is
-`NA` or the MO code is `UNKNOWN`).
+Determination of yeasts (\[mo_is_yeast()\]) will be based on the
+taxonomic kingdom and class. \*Budding yeasts\* are yeasts that
+reproduce asexually through a process called budding, where a new cell
+develops from a small protrusion on the parent cell. Taxonomically,
+these are members of the phylum Ascomycota, class Saccharomycetes (also
+called Hemiascomycetes) or Pichiomycetes. \*True yeasts\* quite
+specifically refers to yeasts in the underlying order Saccharomycetales
+(such as \*Saccharomyces cerevisiae\*). Thus, for all microorganisms
+that are member of the taxonomic class Saccharomycetes or Pichiomycetes,
+the function will return \`TRUE\`. It returns \`FALSE\` otherwise (or
+\`NA\` when the input is \`NA\` or the MO code is \`UNKNOWN\`).
-Determination of intrinsic resistance (`mo_is_intrinsic_resistant()`)
-will be based on the
-[intrinsic_resistant](https://amr-for-r.org/reference/intrinsic_resistant.md)
-data set, which is based on ['EUCAST Expected Resistant Phenotypes'
-v1.2](https://www.eucast.org/bacteria/important-additional-information/expert-rules/)
-(2023). The `mo_is_intrinsic_resistant()` function can be vectorised
-over both argument `x` (input for microorganisms) and `ab` (input for
+Determination of intrinsic resistance (\[mo_is_intrinsic_resistant()\])
+will be based on the \[intrinsic_resistant\] data set, which is based on
+\`r
+format_eucast_version_nr(names(EUCAST_VERSION_EXPECTED_PHENOTYPES\[1\]))\`.
+The \[mo_is_intrinsic_resistant()\] function can be vectorised over both
+argument \`x\` (input for microorganisms) and \`ab\` (input for
antimicrobials).
-Determination of bacterial oxygen tolerance (`mo_oxygen_tolerance()`)
-will be based on BacDive, see *Source*. The function `mo_is_anaerobic()`
-only returns `TRUE` if the oxygen tolerance is `"anaerobe"`, indicting
-an obligate anaerobic species or genus. It always returns `FALSE` for
-species outside the taxonomic kingdom of Bacteria.
+Determination of bacterial oxygen tolerance (\[mo_oxygen_tolerance()\])
+will be based on BacDive, see \*Source\*. The function
+\[mo_is_anaerobic()\] only returns \`TRUE\` if the oxygen tolerance is
+\`"anaerobe"\`, indicting an obligate anaerobic species or genus. It
+always returns \`FALSE\` for species outside the taxonomic kingdom of
+Bacteria.
-The function `mo_url()` will return the direct URL to the online
+The function \[mo_url()\] will return the direct URL to the online
database entry, which also shows the scientific reference of the
-concerned species. [This MycoBank URL](https://www.mycobank.org) will be
-used for fungi wherever available , [this LPSN
-URL](https://www.mycobank.org) for bacteria wherever available, and
-[this GBIF link](https://www.gbif.org) otherwise.
+concerned species. \[This MycoBank URL\](\`r
+TAXONOMY_VERSION\$MycoBank\$url\`) will be used for fungi wherever
+available , \[this LPSN URL\](\`r TAXONOMY_VERSION\$MycoBank\$url\`) for
+bacteria wherever available, and \[this GBIF link\](\`r
+TAXONOMY_VERSION\$GBIF\$url\`) otherwise.
-SNOMED codes (`mo_snomed()`) was last updated on July 16th, 2024. See
-*Source* and the
-[microorganisms](https://amr-for-r.org/reference/microorganisms.md) data
-set for more info.
+SNOMED codes (\[mo_snomed()\]) was last updated on \`r
+documentation_date(TAXONOMY_VERSION\$SNOMED\$accessed_date)\`. See
+\*Source\* and the \[microorganisms\] data set for more info.
Old taxonomic names (so-called 'synonyms') can be retrieved with
-`mo_synonyms()` (which will have the scientific reference as
-[name](https://rdrr.io/r/base/names.html)), the current taxonomic name
-can be retrieved with `mo_current()`. Both functions return full names.
+\[mo_synonyms()\] (which will have the scientific reference as
+\[name\]\[base::names()\]), the current taxonomic name can be retrieved
+with \[mo_current()\]. Both functions return full names.
-All output [will be
-translated](https://amr-for-r.org/reference/translate.md) where
-possible.
+All output \[will be translated\]\[translate\] where possible.
## Matching Score for Microorganisms
diff --git a/reference/mo_source.html b/reference/mo_source.html
index 63ec193ea..de548e230 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.9055
+
3.0.1.9057
diff --git a/reference/pca.html b/reference/pca.html
index 35f5ecf92..4e9365bbd 100644
--- a/reference/pca.html
+++ b/reference/pca.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
@@ -98,7 +98,7 @@
standard deviations are less than or equal to tol times the
standard deviation of the first component.) With the default null
setting, no components are omitted (unless rank. is specified
- less than min(dim(x)).). Other settings for tol could be
+ less than min(dim(x)).). Other settings for tol could be
tol = 0 or tol = sqrt(.Machine$double.eps), which
would omit essentially constant components.
diff --git a/reference/pca.md b/reference/pca.md
index 5326f203c..c73dc8591 100644
--- a/reference/pca.md
+++ b/reference/pca.md
@@ -51,8 +51,8 @@ pca(x, ..., retx = TRUE, center = TRUE, scale. = TRUE, tol = NULL,
than or equal to `tol` times the standard deviation of the first
component.) With the default null setting, no components are omitted
(unless `rank.` is specified less than `min(dim(x))`.). Other settings
- for tol could be `tol = 0` or `tol = sqrt(.Machine$double.eps)`, which
- would omit essentially constant components.
+ for `tol` could be `tol = 0` or `tol = sqrt(.Machine$double.eps)`,
+ which would omit essentially constant components.
- rank.:
diff --git a/reference/plot.html b/reference/plot.html
index 2c0df56e0..42fc93276 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.9055
+ 3.0.1.9057
diff --git a/reference/proportion.html b/reference/proportion.html
index ae61c5cf5..1a6f08630 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.9055
+ 3.0.1.9057
diff --git a/reference/random.html b/reference/random.html
index 9ad466c6e..01af8c4ac 100644
--- a/reference/random.html
+++ b/reference/random.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/resistance_predict.html b/reference/resistance_predict.html
index 09984b070..01bec3f95 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.9055
+ 3.0.1.9057
diff --git a/reference/skewness.html b/reference/skewness.html
index e60ebe4fe..4d2084875 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.9055
+ 3.0.1.9057
diff --git a/reference/top_n_microorganisms.html b/reference/top_n_microorganisms.html
index 0ff9fee03..099a178de 100644
--- a/reference/top_n_microorganisms.html
+++ b/reference/top_n_microorganisms.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/reference/translate.html b/reference/translate.html
index fcf5765fa..511fb275f 100644
--- a/reference/translate.html
+++ b/reference/translate.html
@@ -7,7 +7,7 @@
AMR (for R)
- 3.0.1.9055
+ 3.0.1.9057
diff --git a/search.json b/search.json
index e744ab0df..6bb6a561b 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"path":"https://amr-for-r.org/CLAUDE.html","id":null,"dir":"","previous_headings":"","what":"CLAUDE.md — AMR R Package","title":"CLAUDE.md — AMR R Package","text":"file provides context Claude Code working repository.","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"project-overview","dir":"","previous_headings":"","what":"Project Overview","title":"CLAUDE.md — AMR R Package","text":"AMR zero-dependency R package antimicrobial resistance (AMR) data analysis using One Health approach. peer-reviewed, used 175+ countries, supports 28 languages. Key capabilities: - SIR (Susceptible/Intermediate/Resistant) classification using EUCAST 2011–2025 CLSI 2011–2025 breakpoints - Antibiogram generation: traditional, combined, syndromic, WISCA - Microorganism taxonomy database (~79,000 species) - Antimicrobial drug database (~620 drugs) - Multi-drug resistant organism (MDRO) classification - First-isolate identification - Minimum Inhibitory Concentration (MIC) disk diffusion handling - Multilingual output (28 languages)","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"common-commands","dir":"","previous_headings":"","what":"Common Commands","title":"CLAUDE.md — AMR R Package","text":"commands run inside R session: shell:","code":"# Rebuild documentation (roxygen2 → .Rd files + NAMESPACE) devtools::document() # Run all tests devtools::test() # Full package check (CRAN-level: docs + tests + checks) devtools::check() # Build pkgdown website locally pkgdown::build_site() # Code coverage report covr::package_coverage() # CRAN check from parent directory R CMD check AMR"},{"path":"https://amr-for-r.org/CLAUDE.html","id":"repository-structure","dir":"","previous_headings":"","what":"Repository Structure","title":"CLAUDE.md — AMR R Package","text":"","code":"R/ # All R source files (62 files, ~28,000 lines) man/ # Auto-generated .Rd documentation (do not edit manually) tests/testthat/ # testthat test files (test-*.R) and helper-functions.R data/ # Pre-compiled .rda datasets data-raw/ # Scripts used to generate data/ files vignettes/ # Rmd vignette articles inst/ # Installed files (translations, etc.) _pkgdown.yml # pkgdown website configuration"},{"path":"https://amr-for-r.org/CLAUDE.html","id":"r-source-file-conventions","dir":"","previous_headings":"","what":"R Source File Conventions","title":"CLAUDE.md — AMR R Package","text":"Naming conventions R/: Key source files: aa_helper_functions.R / aa_helper_pm_functions.R — internal utility functions (large; ~63 KB ~37 KB) aa_globals.R — global constants breakpoint lookup structures aa_options.R — amr_options() / get_AMR_option() system mo.R / mo_property.R — microorganism lookup properties ab.R / ab_property.R — antimicrobial drug functions av.R / av_property.R — antiviral drug functions sir.R / sir_calc.R / sir_df.R — SIR classification engine mic.R / disk.R — MIC disk diffusion classes antibiogram.R — antibiogram generation (traditional, combined, syndromic, WISCA) first_isolate.R — first-isolate identification algorithms mdro.R — MDRO classification (EUCAST, CLSI, CDC, custom guidelines) amr_selectors.R — tidyselect helpers selecting AMR columns interpretive_rules.R / custom_eucast_rules.R — clinical interpretation rules translate.R — 28-language translation system ggplot_sir.R / ggplot_pca.R / plotting.R — visualisation functions","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"custom-s3-classes","dir":"","previous_headings":"","what":"Custom S3 Classes","title":"CLAUDE.md — AMR R Package","text":"package defines five S3 classes full print/format/plot/vctrs support:","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"data-files","dir":"","previous_headings":"","what":"Data Files","title":"CLAUDE.md — AMR R Package","text":"Pre-compiled data/ (edit directly; regenerate via data-raw/ scripts):","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"zero-dependency-design","dir":"","previous_headings":"","what":"Zero-Dependency Design","title":"CLAUDE.md — AMR R Package","text":"package Imports DESCRIPTION. optional integrations (ggplot2, dplyr, data.table, tidymodels, cli, crayon, etc.) listed Suggests guarded : Never add packages Imports. new functionality requires external package, add Suggests guard usage appropriately.","code":"if (requireNamespace(\"pkg\", quietly = TRUE)) { ... }"},{"path":"https://amr-for-r.org/CLAUDE.html","id":"testing","dir":"","previous_headings":"","what":"Testing","title":"CLAUDE.md — AMR R Package","text":"Framework: testthat (R ≥ 3.1); legacy tinytest used R 3.0–3.6 CI Test files: tests/testthat/test-*.R Helpers: tests/testthat/helper-functions.R CI matrix: GitHub Actions across Windows / macOS / Linux × R devel / release / oldrel-1 oldrel-4 Coverage: covr (files excluded: atc_online.R, mo_source.R, translate.R, resistance_predict.R, zz_deprecated.R, helper files, zzz.R)","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"documentation","dir":"","previous_headings":"","what":"Documentation","title":"CLAUDE.md — AMR R Package","text":"exported functions use roxygen2 blocks (RoxygenNote: 7.3.3, markdown enabled) Run devtools::document() change roxygen comments Never edit files man/ directly — auto-generated Vignettes live vignettes/ .Rmd files pkgdown website configured _pkgdown.yml","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"versioning","dir":"","previous_headings":"","what":"Versioning","title":"CLAUDE.md — AMR R Package","text":"Version format: major.minor.patch.dev (e.g., 3.0.1.9021) Development versions use .9xxx suffix Stable CRAN releases drop dev suffix (e.g., 3.0.1) NEWS.md uses sections New, Fixes, Updates GitHub issue references (#NNN)","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"version-and-date-bump-required-for-every-pr","dir":"","previous_headings":"Versioning","what":"Version and date bump required for every PR","title":"CLAUDE.md — AMR R Package","text":"PRs squash-merged, PR lands exactly one commit default branch. Version numbers kept sync cumulative commit count since last released tag. Therefore exactly one version bump allowed per PR, regardless many intermediate commits made branch.","code":""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"computing-the-correct-version-number","dir":"","previous_headings":"Versioning > Version and date bump required for every PR","what":"Computing the correct version number","title":"CLAUDE.md — AMR R Package","text":"First, ensure git gh installed — required version computation pushing changes. Install missing anything else: run following repo root determine version string use: + 1 accounts fact PR’s squash commit yet default branch. Set files resulting version string (per PR, even across multiple commits): DESCRIPTION — Version: field NEWS.md — replace line 1 (# AMR heading) new version number; create new section. NEWS.md continuous log entire current x.y.z.9nnn development series: changes since last stable release accumulate single heading. updating line 1, append new change bullet appropriate sub-heading (### New, ### Fixes, ### Updates). Style rules NEWS.md entries: extremely concise — one short line per item end full stop (period) verbose explanations; just essential fact git describe fails (e.g. tags exist environment), fall back reading current version DESCRIPTION adding 1 last numeric component — bump already made PR.","code":"which git || apt-get install -y git which gh || apt-get install -y gh # Also ensure all tags are fetched so git describe works git fetch --tags currenttag=$(git describe --tags --abbrev=0 | sed 's/v//') currenttagfull=$(git describe --tags --abbrev=0) defaultbranch=$(git branch | cut -c 3- | grep -E '^master$|^main$') git fetch origin ${defaultbranch} --quiet currentcommit=$(git rev-list --count ${currenttagfull}..origin/${defaultbranch}) currentversion=\"${currenttag}.$((currentcommit + 9001 + 1))\" echo \"$currentversion\""},{"path":"https://amr-for-r.org/CLAUDE.html","id":"date-field","dir":"","previous_headings":"Versioning > Version and date bump required for every PR","what":"Date field","title":"CLAUDE.md — AMR R Package","text":"Date: field DESCRIPTION must reflect date last commit PR (first), ISO format. Update every commit always current:","code":"Date: 2026-03-07"},{"path":"https://amr-for-r.org/CLAUDE.html","id":"internal-state","dir":"","previous_headings":"","what":"Internal State","title":"CLAUDE.md — AMR R Package","text":"package uses private AMR_env environment (created aa_globals.R) caching expensive lookups (e.g., microorganism matching scores, breakpoint tables). avoids re-computation within session.","code":""},{"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 #> [1] B_KLBSL_PNMN as.mo(\"K. pneumoniae\") #> Class #> [1] B_KLBSL_PNMN as.mo(\"KLEPNE\") #> Class #> [1] B_KLBSL_PNMN as.mo(\"KLPN\") #> Class #> [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 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`. #> ℹ 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,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":"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 bacteria #> Length :2724 Length :2724 Min. :2011-01-01 Class :mo #> N.unique : 260 N.unique : 3 1st Qu.:2013-04-07 :0 #> N.blank : 0 N.blank : 0 Median :2015-06-03 Unique:4 #> Min.nchar: 2 Min.nchar: 1 Mean :2015-06-09 #1 :B_ESCHR_COLI #> Max.nchar: 3 Max.nchar: 1 3rd Qu.:2017-08-11 #2 :B_STPHY_AURS #> Max. :2019-12-27 #3 :B_STRPT_PNMN #> AMX AMC CIP #> Class:sir Class:sir Class:sir #> %S :41.6% (n=1133) %S :52.6% (n=1432) %S :52.5% (n=1431) #> %SDD : 0.0% (n=0) %SDD : 0.0% (n=0) %SDD : 0.0% (n=0) #> %I :16.4% (n=446) %I :12.2% (n=333) %I : 6.5% (n=176) #> %R :42.0% (n=1145) %R :35.2% (n=959) %R :41.0% (n=1117) #> %NI : 0.0% (n=0) %NI : 0.0% (n=0) %NI : 0.0% (n=0) #> GEN first #> Class:sir Mode:logical #> %S :61.0% (n=1661) TRUE:2724 #> %SDD : 0.0% (n=0) #> %I : 3.0% (n=82) #> %R :36.0% (n=981) #> %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":"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":"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":"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) #> ℹ `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. #> [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":"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 , 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.93 e- 1 Gram-p… 5 5 #> 2 Gram-positive 3.17e- 8 1.000e+ 0 Gram-p… 5 1 #> 3 Gram-negative 9.99e- 1 1.42 e- 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.42 e- 2 Gram-n… 5 5 #> 6 Gram-positive 1.07e- 1 8.93 e- 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.22 e-16 Gram-n… 1 1 #> 10 Gram-positive 6.05e-11 1.000e+ 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":"example, 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-esbl-presence-using-raw-mics","dir":"Articles","previous_headings":"","what":"Example 2: Predicting ESBL Presence Using Raw MICs","title":"AMR with tidymodels","text":"second example, demonstrate use columns directly tidymodels workflows using AMR-specific recipe steps. includes transformation log2 scale using step_mic_log2(), prepares MIC values use classification models. approach idea formed basis publication DOI: 10.3389/fmicb.2025.1582703 model presence extended-spectrum beta-lactamases (ESBL) based MIC values.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"objective-1","dir":"Articles","previous_headings":"Example 2: Predicting ESBL Presence Using Raw MICs","what":"Objective","title":"AMR with tidymodels","text":"goal : Use raw MIC values predict whether bacterial isolate produces ESBL. Apply AMR-aware preprocessing tidymodels recipe. Train classification model evaluate predictive performance.","code":""},{"path":"https://amr-for-r.org/articles/AMR_with_tidymodels.html","id":"data-preparation-1","dir":"Articles","previous_headings":"Example 2: Predicting ESBL Presence Using Raw MICs","what":"Data Preparation","title":"AMR with tidymodels","text":"use esbl_isolates dataset comes AMR package. Explanation: esbl_isolates: Contains MIC test results ESBL status isolate. mutate(esbl = ...): Converts target column ordered factor classification.","code":"# Load required libraries library(AMR) library(tidymodels) # View the esbl_isolates data set esbl_isolates #> # A tibble: 500 × 19 #> esbl genus AMC AMP TZP CXM FOX CTX CAZ GEN TOB TMP SXT #> #> 1 FALSE Esch… 32 32 4 64 64 8.00 8.00 1 1 16.0 20 #> 2 FALSE Esch… 32 32 4 64 64 4.00 8.00 1 1 16.0 320 #> 3 FALSE Esch… 4 2 64 8 4 8.00 0.12 16 16 0.5 20 #> 4 FALSE Kleb… 32 32 16 64 64 8.00 8.00 1 1 0.5 20 #> 5 FALSE Esch… 32 32 4 4 4 0.25 2.00 1 1 16.0 320 #> 6 FALSE Citr… 32 32 16 64 64 64.00 32.00 1 1 0.5 20 #> 7 FALSE Morg… 32 32 4 64 64 16.00 2.00 1 1 0.5 20 #> 8 FALSE Prot… 16 32 4 1 4 8.00 0.12 1 1 16.0 320 #> 9 FALSE Ente… 32 32 8 64 64 32.00 4.00 1 1 0.5 20 #> 10 FALSE Citr… 32 32 32 64 64 8.00 64.00 1 1 16.0 320 #> # ℹ 490 more rows #> # ℹ 6 more variables: NIT , FOS , CIP , IPM , MEM , #> # COL