From bc6e17ff98de44ef477439c7cbca559323c6f60e Mon Sep 17 00:00:00 2001
From: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Date: Tue, 11 Feb 2025 07:56:27 +0000
Subject: [PATCH] Built site for AMR@2.1.1.9144: 07757c9

---
 404.html                                     |   2 +-
 LICENSE-text.html                            |   2 +-
 articles/AMR.html                            |  10 +-
 articles/AMR_for_Python.html                 |   2 +-
 articles/AMR_with_tidymodels.html            |   4 +-
 articles/EUCAST.html                         |   2 +-
 articles/MDR.html                            |   2 +-
 articles/PCA.html                            |   2 +-
 articles/WHONET.html                         |   2 +-
 articles/datasets.html                       |   4 +-
 articles/index.html                          |   2 +-
 articles/resistance_predict.html             |   2 +-
 articles/welcome_to_AMR.html                 |   2 +-
 authors.html                                 |   2 +-
 index.html                                   |   2 +-
 news/index.html                              |  16 +--
 pkgdown.yml                                  |   2 +-
 reference/AMR-deprecated.html                |   2 +-
 reference/AMR-options.html                   |   2 +-
 reference/AMR.html                           |   2 +-
 reference/WHOCC.html                         |   2 +-
 reference/WHONET.html                        |   2 +-
 reference/ab_from_text.html                  |   2 +-
 reference/ab_property.html                   |   2 +-
 reference/add_custom_antimicrobials.html     |   2 +-
 reference/add_custom_microorganisms.html     |   2 +-
 reference/age.html                           |  22 ++--
 reference/age_groups.html                    |   2 +-
 reference/antibiogram.html                   |   2 +-
 reference/antibiotics.html                   |   2 +-
 reference/antimicrobial_class_selectors.html |   2 +-
 reference/as.ab.html                         |   2 +-
 reference/as.av.html                         |   2 +-
 reference/as.disk.html                       |   2 +-
 reference/as.mic.html                        |   6 +-
 reference/as.mo.html                         |   2 +-
 reference/as.sir.html                        |  22 ++--
 reference/atc_online.html                    |   2 +-
 reference/av_from_text.html                  |   2 +-
 reference/av_property.html                   |   2 +-
 reference/availability.html                  |   2 +-
 reference/bug_drug_combinations.html         |   2 +-
 reference/clinical_breakpoints.html          |   2 +-
 reference/count.html                         |   2 +-
 reference/custom_eucast_rules.html           |   2 +-
 reference/dosage.html                        |   2 +-
 reference/eucast_rules.html                  |   2 +-
 reference/example_isolates.html              |   2 +-
 reference/example_isolates_unclean.html      |   2 +-
 reference/export_ncbi_biosample.html         |   2 +-
 reference/first_isolate.html                 |   2 +-
 reference/g.test.html                        |   2 +-
 reference/get_episode.html                   |   2 +-
 reference/ggplot_pca.html                    |   2 +-
 reference/ggplot_sir.html                    |   2 +-
 reference/guess_ab_col.html                  |   2 +-
 reference/index.html                         |   4 +-
 reference/intrinsic_resistant.html           |   2 +-
 reference/italicise_taxonomy.html            |   2 +-
 reference/join.html                          |   2 +-
 reference/key_antimicrobials.html            |   2 +-
 reference/kurtosis.html                      |   2 +-
 reference/like.html                          |   2 +-
 reference/mdro.html                          |   2 +-
 reference/mean_amr_distance.html             |   2 +-
 reference/microorganisms.codes.html          |   2 +-
 reference/microorganisms.groups.html         |   2 +-
 reference/microorganisms.html                |   2 +-
 reference/mo_matching_score.html             |   2 +-
 reference/mo_property.html                   |   2 +-
 reference/mo_source.html                     |   2 +-
 reference/pca.html                           |   2 +-
 reference/plot-1.png                         | Bin 27548 -> 0 bytes
 reference/plot-10.png                        | Bin 25812 -> 0 bytes
 reference/plot-11.png                        | Bin 31245 -> 0 bytes
 reference/plot-12.png                        | Bin 36353 -> 0 bytes
 reference/plot-13.png                        | Bin 53905 -> 0 bytes
 reference/plot-14.png                        | Bin 24287 -> 0 bytes
 reference/plot-15.png                        | Bin 28723 -> 0 bytes
 reference/plot-16.png                        | Bin 19541 -> 0 bytes
 reference/plot-17.png                        | Bin 29791 -> 0 bytes
 reference/plot-2.png                         | Bin 27150 -> 0 bytes
 reference/plot-3.png                         | Bin 27930 -> 0 bytes
 reference/plot-4.png                         | Bin 41319 -> 0 bytes
 reference/plot-5.png                         | Bin 40810 -> 0 bytes
 reference/plot-6.png                         | Bin 40161 -> 0 bytes
 reference/plot-7.png                         | Bin 24961 -> 0 bytes
 reference/plot-8.png                         | Bin 26216 -> 0 bytes
 reference/plot-9.png                         | Bin 29217 -> 0 bytes
 reference/plot.html                          | 115 ++-----------------
 reference/proportion.html                    |   2 +-
 reference/random.html                        |  35 +++---
 reference/resistance_predict.html            |   2 +-
 reference/scale_color_mic.html               |   8 ++
 reference/skewness.html                      |   4 +-
 reference/top_n_microorganisms.html          |   2 +-
 reference/translate.html                     |   2 +-
 search.json                                  |   2 +-
 98 files changed, 150 insertions(+), 238 deletions(-)
 delete mode 100644 reference/plot-1.png
 delete mode 100644 reference/plot-10.png
 delete mode 100644 reference/plot-11.png
 delete mode 100644 reference/plot-12.png
 delete mode 100644 reference/plot-13.png
 delete mode 100644 reference/plot-14.png
 delete mode 100644 reference/plot-15.png
 delete mode 100644 reference/plot-16.png
 delete mode 100644 reference/plot-17.png
 delete mode 100644 reference/plot-2.png
 delete mode 100644 reference/plot-3.png
 delete mode 100644 reference/plot-4.png
 delete mode 100644 reference/plot-5.png
 delete mode 100644 reference/plot-6.png
 delete mode 100644 reference/plot-7.png
 delete mode 100644 reference/plot-8.png
 delete mode 100644 reference/plot-9.png
 create mode 100644 reference/scale_color_mic.html

diff --git a/404.html b/404.html
index 9c3a22be0..6e7a39632 100644
--- a/404.html
+++ b/404.html
@@ -32,7 +32,7 @@
 
     <a class="navbar-brand me-2" href="https://msberends.github.io/AMR/index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/LICENSE-text.html b/LICENSE-text.html
index 34b4047bd..b3712a2d8 100644
--- a/LICENSE-text.html
+++ b/LICENSE-text.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/articles/AMR.html b/articles/AMR.html
index f7572e09c..d82a5d05a 100644
--- a/articles/AMR.html
+++ b/articles/AMR.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -90,7 +90,7 @@
 website update since they are based on randomly created values and the
 page was written in <a href="https://rmarkdown.rstudio.com/" class="external-link">R
 Markdown</a>. However, the methodology remains unchanged. This page was
-generated on 07 February 2025.</p>
+generated on 11 February 2025.</p>
 <div class="section level2">
 <h2 id="introduction">Introduction<a class="anchor" aria-label="anchor" href="#introduction"></a>
 </h2>
@@ -146,21 +146,21 @@ make the structure of your data generally look like this:</p>
 </tr></thead>
 <tbody>
 <tr class="odd">
-<td align="center">2025-02-07</td>
+<td align="center">2025-02-11</td>
 <td align="center">abcd</td>
 <td align="center">Escherichia coli</td>
 <td align="center">S</td>
 <td align="center">S</td>
 </tr>
 <tr class="even">
-<td align="center">2025-02-07</td>
+<td align="center">2025-02-11</td>
 <td align="center">abcd</td>
 <td align="center">Escherichia coli</td>
 <td align="center">S</td>
 <td align="center">R</td>
 </tr>
 <tr class="odd">
-<td align="center">2025-02-07</td>
+<td align="center">2025-02-11</td>
 <td align="center">efgh</td>
 <td align="center">Escherichia coli</td>
 <td align="center">R</td>
diff --git a/articles/AMR_for_Python.html b/articles/AMR_for_Python.html
index e43d9d734..31b91ad84 100644
--- a/articles/AMR_for_Python.html
+++ b/articles/AMR_for_Python.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/articles/AMR_with_tidymodels.html b/articles/AMR_with_tidymodels.html
index b471eeb06..636b16286 100644
--- a/articles/AMR_with_tidymodels.html
+++ b/articles/AMR_with_tidymodels.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -142,7 +142,7 @@ package.</p>
 <span><span class="co">#&gt; <span style="color: #BB0000;">✖</span> <span style="color: #0000BB;">dplyr</span>::<span style="color: #00BB00;">filter()</span>  masks <span style="color: #0000BB;">stats</span>::filter()</span></span>
 <span><span class="co">#&gt; <span style="color: #BB0000;">✖</span> <span style="color: #0000BB;">dplyr</span>::<span style="color: #00BB00;">lag()</span>     masks <span style="color: #0000BB;">stats</span>::lag()</span></span>
 <span><span class="co">#&gt; <span style="color: #BB0000;">✖</span> <span style="color: #0000BB;">recipes</span>::<span style="color: #00BB00;">step()</span>  masks <span style="color: #0000BB;">stats</span>::step()</span></span>
-<span><span class="co">#&gt; <span style="color: #0000BB;">•</span> Dig deeper into tidy modeling with R at <span style="color: #00BB00;">https://www.tmwr.org</span></span></span>
+<span><span class="co">#&gt; <span style="color: #0000BB;">•</span> Use <span style="color: #00BB00;">tidymodels_prefer()</span> to resolve common conflicts.</span></span>
 <span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">library</a></span><span class="op">(</span><span class="va"><a href="https://msberends.github.io/AMR/">AMR</a></span><span class="op">)</span>          <span class="co"># For AMR data analysis</span></span>
 <span></span>
 <span><span class="co"># Load the example_isolates dataset</span></span>
diff --git a/articles/EUCAST.html b/articles/EUCAST.html
index b69e24da9..711d31889 100644
--- a/articles/EUCAST.html
+++ b/articles/EUCAST.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/articles/MDR.html b/articles/MDR.html
index dc4a0ad5b..f5c89764c 100644
--- a/articles/MDR.html
+++ b/articles/MDR.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/articles/PCA.html b/articles/PCA.html
index 33baf207c..065a2fbc5 100644
--- a/articles/PCA.html
+++ b/articles/PCA.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/articles/WHONET.html b/articles/WHONET.html
index 5bb9ab68b..1fe5f806f 100644
--- a/articles/WHONET.html
+++ b/articles/WHONET.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/articles/datasets.html b/articles/datasets.html
index d6a751571..6fba9ce4f 100644
--- a/articles/datasets.html
+++ b/articles/datasets.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -79,7 +79,7 @@
   <main id="main" class="col-md-9"><div class="page-header">
       <img src="../logo.svg" class="logo" alt=""><h1>Data sets for download / own use</h1>
             
-            <h4 data-toc-skip class="date">07 February 2025</h4>
+            <h4 data-toc-skip class="date">11 February 2025</h4>
       
       <small class="dont-index">Source: <a href="https://github.com/msberends/AMR/blob/main/vignettes/datasets.Rmd" class="external-link"><code>vignettes/datasets.Rmd</code></a></small>
       <div class="d-none name"><code>datasets.Rmd</code></div>
diff --git a/articles/index.html b/articles/index.html
index 94bec97bf..1873fac99 100644
--- a/articles/index.html
+++ b/articles/index.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/articles/resistance_predict.html b/articles/resistance_predict.html
index 5601b364e..ae5abc3e9 100644
--- a/articles/resistance_predict.html
+++ b/articles/resistance_predict.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/articles/welcome_to_AMR.html b/articles/welcome_to_AMR.html
index 3eb90b4ef..fe0774776 100644
--- a/articles/welcome_to_AMR.html
+++ b/articles/welcome_to_AMR.html
@@ -31,7 +31,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/authors.html b/authors.html
index 70bd1b328..854f58aae 100644
--- a/authors.html
+++ b/authors.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/index.html b/index.html
index c8129fd89..448e423ae 100644
--- a/index.html
+++ b/index.html
@@ -34,7 +34,7 @@
 
     <a class="navbar-brand me-2" href="index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/news/index.html b/news/index.html
index 543362de6..546edb96b 100644
--- a/news/index.html
+++ b/news/index.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -48,18 +48,18 @@
     </div>
 
     <div class="section level2">
-<h2 class="pkg-version" data-toc-text="2.1.1.9143" id="amr-2119143">AMR 2.1.1.9143<a class="anchor" aria-label="anchor" href="#amr-2119143"></a></h2>
+<h2 class="pkg-version" data-toc-text="2.1.1.9144" id="amr-2119144">AMR 2.1.1.9144<a class="anchor" aria-label="anchor" href="#amr-2119144"></a></h2>
 <p><em>(this beta version will eventually become v3.0. We’re happy to reach a new major milestone soon, which will be all about the new One Health support! Install this beta using <a href="https://msberends.github.io/AMR/#latest-development-version">the instructions here</a>.)</em></p>
 <div class="section level5">
-<h5 id="a-new-milestone-amr-v30-with-one-health-support--human--veterinary--environmental-2-1-1-9143">A New Milestone: AMR v3.0 with One Health Support (= Human + Veterinary + Environmental)<a class="anchor" aria-label="anchor" href="#a-new-milestone-amr-v30-with-one-health-support--human--veterinary--environmental-2-1-1-9143"></a></h5>
+<h5 id="a-new-milestone-amr-v30-with-one-health-support--human--veterinary--environmental-2-1-1-9144">A New Milestone: AMR v3.0 with One Health Support (= Human + Veterinary + Environmental)<a class="anchor" aria-label="anchor" href="#a-new-milestone-amr-v30-with-one-health-support--human--veterinary--environmental-2-1-1-9144"></a></h5>
 <p>This package now supports not only tools for AMR data analysis in clinical settings, but also for veterinary and environmental microbiology. This was made possible through a collaboration with the <a href="https://www.upei.ca/avc" class="external-link">University of Prince Edward Island’s Atlantic Veterinary College</a>, Canada. To celebrate this great improvement of the package, we also updated the package logo to reflect this change.</p>
 </div>
 <div class="section level3">
-<h3 id="breaking-2-1-1-9143">Breaking<a class="anchor" aria-label="anchor" href="#breaking-2-1-1-9143"></a></h3>
+<h3 id="breaking-2-1-1-9144">Breaking<a class="anchor" aria-label="anchor" href="#breaking-2-1-1-9144"></a></h3>
 <ul><li>Removed all functions and references that used the deprecated <code>rsi</code> class, which were all replaced with their <code>sir</code> equivalents two years ago</li>
 </ul></div>
 <div class="section level3">
-<h3 id="new-2-1-1-9143">New<a class="anchor" aria-label="anchor" href="#new-2-1-1-9143"></a></h3>
+<h3 id="new-2-1-1-9144">New<a class="anchor" aria-label="anchor" href="#new-2-1-1-9144"></a></h3>
 <ul><li>
 <strong>One Health implementation</strong>
 <ul><li>Function <code><a href="../reference/as.sir.html">as.sir()</a></code> now has extensive support for veterinary breakpoints from CLSI. Use <code>breakpoint_type = "animal"</code> and set the <code>host</code> argument to a variable that contains animal species names.</li>
@@ -109,7 +109,7 @@
 </ul></li>
 </ul></div>
 <div class="section level3">
-<h3 id="changed-2-1-1-9143">Changed<a class="anchor" aria-label="anchor" href="#changed-2-1-1-9143"></a></h3>
+<h3 id="changed-2-1-1-9144">Changed<a class="anchor" aria-label="anchor" href="#changed-2-1-1-9144"></a></h3>
 <ul><li>SIR interpretation
 <ul><li>It is now possible to use column names for argument <code>ab</code>, <code>mo</code>, and <code>uti</code>: <code>as.sir(..., ab = "column1", mo = "column2", uti = "column3")</code>. This greatly improves the flexibility for users.</li>
 <li>Users can now set their own criteria (using regular expressions) as to what should be considered S, I, R, SDD, and NI.</li>
@@ -177,7 +177,7 @@
 <li>Added console colours support of <code>sir</code> class for Positron</li>
 </ul></div>
 <div class="section level3">
-<h3 id="other-2-1-1-9143">Other<a class="anchor" aria-label="anchor" href="#other-2-1-1-9143"></a></h3>
+<h3 id="other-2-1-1-9144">Other<a class="anchor" aria-label="anchor" href="#other-2-1-1-9144"></a></h3>
 <ul><li>Added Dr. Larisse Bolton as contributor for her fantastic implementation of WISCA in a mathematically solid way</li>
 <li>Added Matthew Saab, Dr. Jordan Stull, and Prof. Javier Sanchez as contributors for their tremendous input on veterinary breakpoints and interpretations</li>
 <li>Greatly improved <code>vctrs</code> integration, a Tidyverse package working in the background for many Tidyverse functions. For users, this means that functions such as <code>dplyr</code>’s <code><a href="https://dplyr.tidyverse.org/reference/bind_rows.html" class="external-link">bind_rows()</a></code>, <code><a href="https://dplyr.tidyverse.org/reference/rowwise.html" class="external-link">rowwise()</a></code> and <code><a href="https://dplyr.tidyverse.org/reference/c_across.html" class="external-link">c_across()</a></code> are now supported for e.g. columns of class <code>mic</code>. Despite this, this <code>AMR</code> package is still zero-dependent on any other package, including <code>dplyr</code> and <code>vctrs</code>.</li>
@@ -185,7 +185,7 @@
 <li>Stopped support for SAS (<code>.xpt</code>) files, since their file structure and extremely inefficient and requires more disk space than GitHub allows in a single commit.</li>
 </ul></div>
 <div class="section level3">
-<h3 id="older-versions-2-1-1-9143">Older Versions<a class="anchor" aria-label="anchor" href="#older-versions-2-1-1-9143"></a></h3>
+<h3 id="older-versions-2-1-1-9144">Older Versions<a class="anchor" aria-label="anchor" href="#older-versions-2-1-1-9144"></a></h3>
 <p>This changelog only contains changes from AMR v3.0 (February 2025) and later.</p>
 <ul><li>For prior v2 versions, please see <a href="https://github.com/msberends/AMR/blob/v2.1.1/NEWS.md" class="external-link">our v2 archive</a>.</li>
 <li>For prior v1 versions, please see <a href="https://github.com/msberends/AMR/blob/v1.8.2/NEWS.md" class="external-link">our v1 archive</a>.</li>
diff --git a/pkgdown.yml b/pkgdown.yml
index ccd11f0a1..f4307ed83 100644
--- a/pkgdown.yml
+++ b/pkgdown.yml
@@ -12,7 +12,7 @@ articles:
   resistance_predict: resistance_predict.html
   welcome_to_AMR: welcome_to_AMR.html
   WHONET: WHONET.html
-last_built: 2025-02-07T18:55Z
+last_built: 2025-02-11T07:53Z
 urls:
   reference: https://msberends.github.io/AMR/reference
   article: https://msberends.github.io/AMR/articles
diff --git a/reference/AMR-deprecated.html b/reference/AMR-deprecated.html
index c38e143ff..dcf07f210 100644
--- a/reference/AMR-deprecated.html
+++ b/reference/AMR-deprecated.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/AMR-options.html b/reference/AMR-options.html
index 5f38fb2c0..19547dc51 100644
--- a/reference/AMR-options.html
+++ b/reference/AMR-options.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/AMR.html b/reference/AMR.html
index 3029af3fb..5e0ff0a2c 100644
--- a/reference/AMR.html
+++ b/reference/AMR.html
@@ -21,7 +21,7 @@ The AMR package is available in English, Chinese, Czech, Danish, Dutch, Finnish,
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/WHOCC.html b/reference/WHOCC.html
index 0c4566656..b60a6f1fc 100644
--- a/reference/WHOCC.html
+++ b/reference/WHOCC.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/WHONET.html b/reference/WHONET.html
index d4f83c546..8a8987102 100644
--- a/reference/WHONET.html
+++ b/reference/WHONET.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/ab_from_text.html b/reference/ab_from_text.html
index 5a1d3a66f..5c968d9b6 100644
--- a/reference/ab_from_text.html
+++ b/reference/ab_from_text.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/ab_property.html b/reference/ab_property.html
index e05baecef..f7de341d1 100644
--- a/reference/ab_property.html
+++ b/reference/ab_property.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/add_custom_antimicrobials.html b/reference/add_custom_antimicrobials.html
index 8932de9e7..c17d95dcb 100644
--- a/reference/add_custom_antimicrobials.html
+++ b/reference/add_custom_antimicrobials.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/add_custom_microorganisms.html b/reference/add_custom_microorganisms.html
index 734288992..f04d02c46 100644
--- a/reference/add_custom_microorganisms.html
+++ b/reference/add_custom_microorganisms.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/age.html b/reference/age.html
index 48b043aff..0eb774a06 100644
--- a/reference/age.html
+++ b/reference/age.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -111,16 +111,16 @@
 <span class="r-in"><span></span></span>
 <span class="r-in"><span><span class="va">df</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span>    birth_date age age_exact age_at_y2k</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 1  1965-12-05  59  59.17534         34</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 2  1980-03-01  44  44.93973         19</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 3  1949-11-01  75  75.26849         50</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 4  1947-02-14  77  77.98082         52</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 5  1940-02-19  84  84.96712         59</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 6  1988-01-10  37  37.07671         11</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 7  1997-08-27  27  27.44932          2</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 8  1978-01-26  47  47.03288         21</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 9  1972-06-17  52  52.64384         27</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> 10 1986-08-10  38  38.49589         13</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 1  1965-12-05  59  59.18630         34</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 2  1980-03-01  44  44.95068         19</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 3  1949-11-01  75  75.27945         50</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 4  1947-02-14  77  77.99178         52</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 5  1940-02-19  84  84.97808         59</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 6  1988-01-10  37  37.08767         11</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 7  1997-08-27  27  27.46027          2</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 8  1978-01-26  47  47.04384         21</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 9  1972-06-17  52  52.65479         27</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> 10 1986-08-10  38  38.50685         13</span>
 </code></pre></div>
     </div>
   </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
diff --git a/reference/age_groups.html b/reference/age_groups.html
index 603492a39..4acec8840 100644
--- a/reference/age_groups.html
+++ b/reference/age_groups.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/antibiogram.html b/reference/antibiogram.html
index 6b4458fac..1c39670a2 100644
--- a/reference/antibiogram.html
+++ b/reference/antibiogram.html
@@ -9,7 +9,7 @@ Adhering to previously described approaches (see Source) and especially the Baye
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/antibiotics.html b/reference/antibiotics.html
index 7aa849d7c..98bd7554c 100644
--- a/reference/antibiotics.html
+++ b/reference/antibiotics.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/antimicrobial_class_selectors.html b/reference/antimicrobial_class_selectors.html
index f2897a9c7..889524269 100644
--- a/reference/antimicrobial_class_selectors.html
+++ b/reference/antimicrobial_class_selectors.html
@@ -17,7 +17,7 @@ my_data_with_all_these_columns %&amp;gt;%
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/as.ab.html b/reference/as.ab.html
index f91dfe3c9..827cb9c36 100644
--- a/reference/as.ab.html
+++ b/reference/as.ab.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/as.av.html b/reference/as.av.html
index 54f2a44e2..af0c6edc6 100644
--- a/reference/as.av.html
+++ b/reference/as.av.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/as.disk.html b/reference/as.disk.html
index 062881349..7e47d275c 100644
--- a/reference/as.disk.html
+++ b/reference/as.disk.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/as.mic.html b/reference/as.mic.html
index 362e0f9a4..9f37b7cf4 100644
--- a/reference/as.mic.html
+++ b/reference/as.mic.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -83,11 +83,11 @@
 
 
 <dt id="arg-mic-range">mic_range<a class="anchor" aria-label="anchor" href="#arg-mic-range"></a></dt>
-<dd><p>a manual range to limit the MIC values, e.g., <code>mic_range = c(0.001, 32)</code>. Use <code>NA</code> to set no limit on one side, e.g., <code>mic_range = c(NA, 32)</code>.</p></dd>
+<dd><p>a manual range to limit the MIC values, e.g., <code>mic_range = c(0.001, 32)</code>. Use <code>NA</code> to prevent a limit on one side, e.g., <code>mic_range = c(NA, 32)</code>.</p></dd>
 
 
 <dt id="arg-as-mic">as.mic<a class="anchor" aria-label="anchor" href="#arg-as-mic"></a></dt>
-<dd><p>a <a href="https://rdrr.io/r/base/logical.html" class="external-link">logical</a> to indicate whether the <code>mic</code> class should be kept - the default is <code>FALSE</code></p></dd>
+<dd><p>a <a href="https://rdrr.io/r/base/logical.html" class="external-link">logical</a> to indicate whether the <code>mic</code> class should be kept - the default is <code>TRUE</code> for <code>rescale_mic()</code> and <code>FALSE</code> for <code><a href="https://rdrr.io/pkg/data.table/man/fdroplevels.html" class="external-link">droplevels()</a></code>. When setting this to <code>FALSE</code> in <code>rescale_mic()</code>, the output will have factor levels that acknowledge <code>mic_range</code>.</p></dd>
 
 
 <dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt>
diff --git a/reference/as.mo.html b/reference/as.mo.html
index 63b3818a7..51b9f48ed 100644
--- a/reference/as.mo.html
+++ b/reference/as.mo.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/as.sir.html b/reference/as.sir.html
index 957574447..775d2c72c 100644
--- a/reference/as.sir.html
+++ b/reference/as.sir.html
@@ -21,7 +21,7 @@ All breakpoints used for interpretation are available in our clinical_breakpoint
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -782,16 +782,16 @@ A microorganism is categorised as "Resistant" when there is a high likelihood of
 <span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># A tibble: 57 × 16</span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span>    datetime            index ab_given mo_given host_given ab   mo              </span>
 <span class="r-out co"><span class="r-pr">#&gt;</span>  <span style="color: #BCBCBC;">*</span> <span style="color: #949494; font-style: italic;">&lt;dttm&gt;</span>              <span style="color: #949494; font-style: italic;">&lt;int&gt;</span> <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span>    <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span>    <span style="color: #949494; font-style: italic;">&lt;chr&gt;</span>      <span style="color: #949494; font-style: italic;">&lt;ab&gt;</span> <span style="color: #949494; font-style: italic;">&lt;mo&gt;</span>            </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 1</span> 2025-02-07 <span style="color: #949494;">18:56:26</span>     4 AMX      B_STRPT… human      AMX  <span style="color: #949494;">B_</span>STRPT<span style="color: #949494;">_</span>PNMN    </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 2</span> 2025-02-07 <span style="color: #949494;">18:56:33</span>     4 genta    Escheri… human      GEN  <span style="color: #949494;">B_</span>[ORD]<span style="color: #949494;">_</span>ENTRBCTR</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 3</span> 2025-02-07 <span style="color: #949494;">18:56:33</span>     4 genta    Escheri… human      GEN  <span style="color: #949494;">B_</span>[ORD]<span style="color: #949494;">_</span>ENTRBCTR</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 4</span> 2025-02-07 <span style="color: #949494;">18:56:34</span>     4 genta    Escheri… cattle     GEN  <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI    </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 5</span> 2025-02-07 <span style="color: #949494;">18:56:35</span>     4 genta    Escheri… cattle     GEN  <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI    </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 6</span> 2025-02-07 <span style="color: #949494;">18:56:26</span>     3 AMX      B_STRPT… human      AMX  <span style="color: #949494;">B_</span>STRPT<span style="color: #949494;">_</span>PNMN    </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 7</span> 2025-02-07 <span style="color: #949494;">18:56:33</span>     3 tobra    Escheri… human      TOB  <span style="color: #949494;">B_</span>[ORD]<span style="color: #949494;">_</span>ENTRBCTR</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 8</span> 2025-02-07 <span style="color: #949494;">18:56:33</span>     3 tobra    Escheri… human      TOB  <span style="color: #949494;">B_</span>[ORD]<span style="color: #949494;">_</span>ENTRBCTR</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 9</span> 2025-02-07 <span style="color: #949494;">18:56:34</span>     3 tobra    Escheri… horses     TOB  <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI    </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">10</span> 2025-02-07 <span style="color: #949494;">18:56:35</span>     3 tobra    Escheri… horses     TOB  <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI    </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 1</span> 2025-02-11 <span style="color: #949494;">07:53:48</span>     4 AMX      B_STRPT… human      AMX  <span style="color: #949494;">B_</span>STRPT<span style="color: #949494;">_</span>PNMN    </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 2</span> 2025-02-11 <span style="color: #949494;">07:53:55</span>     4 genta    Escheri… human      GEN  <span style="color: #949494;">B_</span>[ORD]<span style="color: #949494;">_</span>ENTRBCTR</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 3</span> 2025-02-11 <span style="color: #949494;">07:53:55</span>     4 genta    Escheri… human      GEN  <span style="color: #949494;">B_</span>[ORD]<span style="color: #949494;">_</span>ENTRBCTR</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 4</span> 2025-02-11 <span style="color: #949494;">07:53:56</span>     4 genta    Escheri… cattle     GEN  <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI    </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 5</span> 2025-02-11 <span style="color: #949494;">07:53:56</span>     4 genta    Escheri… cattle     GEN  <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI    </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 6</span> 2025-02-11 <span style="color: #949494;">07:53:48</span>     3 AMX      B_STRPT… human      AMX  <span style="color: #949494;">B_</span>STRPT<span style="color: #949494;">_</span>PNMN    </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 7</span> 2025-02-11 <span style="color: #949494;">07:53:55</span>     3 tobra    Escheri… human      TOB  <span style="color: #949494;">B_</span>[ORD]<span style="color: #949494;">_</span>ENTRBCTR</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 8</span> 2025-02-11 <span style="color: #949494;">07:53:55</span>     3 tobra    Escheri… human      TOB  <span style="color: #949494;">B_</span>[ORD]<span style="color: #949494;">_</span>ENTRBCTR</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;"> 9</span> 2025-02-11 <span style="color: #949494;">07:53:56</span>     3 tobra    Escheri… horses     TOB  <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI    </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #BCBCBC;">10</span> 2025-02-11 <span style="color: #949494;">07:53:56</span>     3 tobra    Escheri… horses     TOB  <span style="color: #949494;">B_</span>ESCHR<span style="color: #949494;">_</span>COLI    </span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># ℹ 47 more rows</span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;"># ℹ 9 more variables: host &lt;chr&gt;, method &lt;chr&gt;, input &lt;dbl&gt;, outcome &lt;sir&gt;,</span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> <span style="color: #949494;">#   notes &lt;chr&gt;, guideline &lt;chr&gt;, ref_table &lt;chr&gt;, uti &lt;lgl&gt;,</span></span>
diff --git a/reference/atc_online.html b/reference/atc_online.html
index 36905b2e2..3453447a6 100644
--- a/reference/atc_online.html
+++ b/reference/atc_online.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/av_from_text.html b/reference/av_from_text.html
index b3f4efcbe..35df9946b 100644
--- a/reference/av_from_text.html
+++ b/reference/av_from_text.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/av_property.html b/reference/av_property.html
index d441cbea2..0f1d803a3 100644
--- a/reference/av_property.html
+++ b/reference/av_property.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/availability.html b/reference/availability.html
index cf48ca69d..c17707db4 100644
--- a/reference/availability.html
+++ b/reference/availability.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/bug_drug_combinations.html b/reference/bug_drug_combinations.html
index ee22d8365..9d5a722c2 100644
--- a/reference/bug_drug_combinations.html
+++ b/reference/bug_drug_combinations.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/clinical_breakpoints.html b/reference/clinical_breakpoints.html
index 578aaa525..fda529ab2 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."><meta prope
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/count.html b/reference/count.html
index a4ea41b90..d515db3f6 100644
--- a/reference/count.html
+++ b/reference/count.html
@@ -9,7 +9,7 @@ count_resistant() should be used to count resistant isolates, count_susceptible(
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/custom_eucast_rules.html b/reference/custom_eucast_rules.html
index 40848615e..6874b0861 100644
--- a/reference/custom_eucast_rules.html
+++ b/reference/custom_eucast_rules.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/dosage.html b/reference/dosage.html
index 1c021db49..c0aea5f79 100644
--- a/reference/dosage.html
+++ b/reference/dosage.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/eucast_rules.html b/reference/eucast_rules.html
index 6a6ba1463..7a4a31736 100644
--- a/reference/eucast_rules.html
+++ b/reference/eucast_rules.html
@@ -9,7 +9,7 @@ To improve the interpretation of the antibiogram before EUCAST rules are applied
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/example_isolates.html b/reference/example_isolates.html
index 0ff92d9ef..1439a9327 100644
--- a/reference/example_isolates.html
+++ b/reference/example_isolates.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/example_isolates_unclean.html b/reference/example_isolates_unclean.html
index 411700680..889db162e 100644
--- a/reference/example_isolates_unclean.html
+++ b/reference/example_isolates_unclean.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/export_ncbi_biosample.html b/reference/export_ncbi_biosample.html
index 78f29a5a4..6a2885a3c 100644
--- a/reference/export_ncbi_biosample.html
+++ b/reference/export_ncbi_biosample.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/first_isolate.html b/reference/first_isolate.html
index 1d8f227ff..f76f9ff33 100644
--- a/reference/first_isolate.html
+++ b/reference/first_isolate.html
@@ -9,7 +9,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/g.test.html b/reference/g.test.html
index 527f32eac..8e12a793d 100644
--- a/reference/g.test.html
+++ b/reference/g.test.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/get_episode.html b/reference/get_episode.html
index 9dc1e08a4..87a5ba2f8 100644
--- a/reference/get_episode.html
+++ b/reference/get_episode.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/ggplot_pca.html b/reference/ggplot_pca.html
index 079f05efe..4649f386b 100644
--- a/reference/ggplot_pca.html
+++ b/reference/ggplot_pca.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/ggplot_sir.html b/reference/ggplot_sir.html
index b4c7633ad..2cb24ee4e 100644
--- a/reference/ggplot_sir.html
+++ b/reference/ggplot_sir.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/guess_ab_col.html b/reference/guess_ab_col.html
index c17f8fa70..1311fe689 100644
--- a/reference/guess_ab_col.html
+++ b/reference/guess_ab_col.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/index.html b/reference/index.html
index 2b831a203..3e6f40d71 100644
--- a/reference/index.html
+++ b/reference/index.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -282,7 +282,7 @@
 
       <dl><dt>
 
-          <code><a href="plot.html">scale_x_mic()</a></code> <code><a href="plot.html">scale_y_mic()</a></code> <code><a href="plot.html">scale_colour_mic()</a></code> <code><a href="plot.html">scale_fill_mic()</a></code> <code><a href="plot.html">plot(<i>&lt;mic&gt;</i>)</a></code> <code><a href="plot.html">autoplot(<i>&lt;mic&gt;</i>)</a></code> <code><a href="plot.html">fortify(<i>&lt;mic&gt;</i>)</a></code> <code><a href="plot.html">plot(<i>&lt;disk&gt;</i>)</a></code> <code><a href="plot.html">autoplot(<i>&lt;disk&gt;</i>)</a></code> <code><a href="plot.html">fortify(<i>&lt;disk&gt;</i>)</a></code> <code><a href="plot.html">plot(<i>&lt;sir&gt;</i>)</a></code> <code><a href="plot.html">autoplot(<i>&lt;sir&gt;</i>)</a></code> <code><a href="plot.html">fortify(<i>&lt;sir&gt;</i>)</a></code> <code><a href="plot.html">facet_sir()</a></code> <code><a href="plot.html">scale_y_percent()</a></code> <code><a href="plot.html">scale_sir_colours()</a></code> <code><a href="plot.html">theme_sir()</a></code> <code><a href="plot.html">labels_sir_count()</a></code>
+          <code><a href="plot.html">scale_x_mic()</a></code> <code><a href="plot.html">scale_y_mic()</a></code> <code><a href="plot.html">scale_colour_mic()</a></code> <code><a href="plot.html">scale_color_mic()</a></code> <code><a href="plot.html">scale_fill_mic()</a></code> <code><a href="plot.html">plot(<i>&lt;mic&gt;</i>)</a></code> <code><a href="plot.html">autoplot(<i>&lt;mic&gt;</i>)</a></code> <code><a href="plot.html">fortify(<i>&lt;mic&gt;</i>)</a></code> <code><a href="plot.html">plot(<i>&lt;disk&gt;</i>)</a></code> <code><a href="plot.html">autoplot(<i>&lt;disk&gt;</i>)</a></code> <code><a href="plot.html">fortify(<i>&lt;disk&gt;</i>)</a></code> <code><a href="plot.html">plot(<i>&lt;sir&gt;</i>)</a></code> <code><a href="plot.html">autoplot(<i>&lt;sir&gt;</i>)</a></code> <code><a href="plot.html">fortify(<i>&lt;sir&gt;</i>)</a></code> <code><a href="plot.html">facet_sir()</a></code> <code><a href="plot.html">scale_y_percent()</a></code> <code><a href="plot.html">scale_sir_colours()</a></code> <code><a href="plot.html">theme_sir()</a></code> <code><a href="plot.html">labels_sir_count()</a></code>
 
         </dt>
         <dd>Plotting Helpers for AMR Data Analysis</dd>
diff --git a/reference/intrinsic_resistant.html b/reference/intrinsic_resistant.html
index 2cbee41cd..784ba558b 100644
--- a/reference/intrinsic_resistant.html
+++ b/reference/intrinsic_resistant.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/italicise_taxonomy.html b/reference/italicise_taxonomy.html
index dcaf59389..168d7a48d 100644
--- a/reference/italicise_taxonomy.html
+++ b/reference/italicise_taxonomy.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/join.html b/reference/join.html
index 17e9bdd5b..8cec17519 100644
--- a/reference/join.html
+++ b/reference/join.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/key_antimicrobials.html b/reference/key_antimicrobials.html
index 992767413..a63436960 100644
--- a/reference/key_antimicrobials.html
+++ b/reference/key_antimicrobials.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/kurtosis.html b/reference/kurtosis.html
index 92a2ab8e7..b24af1a23 100644
--- a/reference/kurtosis.html
+++ b/reference/kurtosis.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/like.html b/reference/like.html
index ad99e30db..d5a9f62e9 100644
--- a/reference/like.html
+++ b/reference/like.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/mdro.html b/reference/mdro.html
index 6551a3ee6..5f9bfdbef 100644
--- a/reference/mdro.html
+++ b/reference/mdro.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/mean_amr_distance.html b/reference/mean_amr_distance.html
index 7285c2824..80ad76c68 100644
--- a/reference/mean_amr_distance.html
+++ b/reference/mean_amr_distance.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/microorganisms.codes.html b/reference/microorganisms.codes.html
index 30fd259da..10f728cef 100644
--- a/reference/microorganisms.codes.html
+++ b/reference/microorganisms.codes.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/microorganisms.groups.html b/reference/microorganisms.groups.html
index b8982befb..20adf1136 100644
--- a/reference/microorganisms.groups.html
+++ b/reference/microorganisms.groups.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/microorganisms.html b/reference/microorganisms.html
index 6a91fdeab..ffb7389f8 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
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/mo_matching_score.html b/reference/mo_matching_score.html
index ef034550e..d0b4ab5e2 100644
--- a/reference/mo_matching_score.html
+++ b/reference/mo_matching_score.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/mo_property.html b/reference/mo_property.html
index 3ad82b7e2..68f74e222 100644
--- a/reference/mo_property.html
+++ b/reference/mo_property.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/mo_source.html b/reference/mo_source.html
index 05b6b651e..c055fbe58 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
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/pca.html b/reference/pca.html
index a3c758ee0..d57763f1b 100644
--- a/reference/pca.html
+++ b/reference/pca.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/plot-1.png b/reference/plot-1.png
deleted file mode 100644
index a230853bed4691aebecafa0188a1a4df7f6a01ff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27548
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
O#o%+$vvp@eZvO|yq+(3~

diff --git a/reference/plot-10.png b/reference/plot-10.png
deleted file mode 100644
index a923afaa9ca7828d9dc115e1df67d498fb7b4470..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 25812
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
NN}rR8{q4%{{|&{EsYCz(

diff --git a/reference/plot-11.png b/reference/plot-11.png
deleted file mode 100644
index fdecdad6d09875de62579b8295f18caf9f988233..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 31245
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

diff --git a/reference/plot-12.png b/reference/plot-12.png
deleted file mode 100644
index 4da34f2ca594762e59c52676b01981d027068223..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 36353
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

diff --git a/reference/plot-13.png b/reference/plot-13.png
deleted file mode 100644
index 4b437815c556993da297d1890ddc80ac39cdc456..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 53905
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
DluPPW

diff --git a/reference/plot-14.png b/reference/plot-14.png
deleted file mode 100644
index 879422043c82e19cd5606d324b615e401f97f10d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 24287
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

diff --git a/reference/plot-15.png b/reference/plot-15.png
deleted file mode 100644
index 757b104c2d0eaa75e4a4c6788f0efd5f3df499fd..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 28723
zcmeFa2UwKn)-{YFYN8@(Rs@c5Y@lF7KtMo4)C>yPDAGowfYecX2V>MED(E1hR6Ej(
zbcUiB5s)HP+JH(QVCXQ^Z`}_jG3UJR`=9SR=l`$wzpj%j=Rk0nd7kIK@4eSvYwhhX
z2Q>EzEm*lgKtMo<{{44{1O(<f3kV4Q@X0*<r2fX8K75(?!@j-W;Vb^(t7UrO%crNm
zKWZl+AbOGfZ;o$kzlngr-vsF2?K<Kd+}-GQ^M*r+YTu}g%$8MO&0GESnf>`4SDnAx
z_Uih!;@I!c6w7T^y7kasC)0fL(dn8)ao_G!O4GfOaqDel(OZ6bmeh`Qzn*gSH?auJ
z6cc#$=C-%Y%N;qYm-Bb6xOvvhJ?&x*H;&gZIy%h>+so%%=CyN2rTmLpZK=!K5S*dE
zjQTG3!smS-k?+2`?oIvV_U(_^)St{<+dP+ivth#=Y4UaFu1}rkkZ%^K=Po2)4;=W&
zn0)pA@r!@@Eo3V*1TvTfthMIW)-et%hT?afoA-d(luc)~wY4QBCs(C?{d!1f#a7zz
z@GzaV`_j^?w3V-i{M8>U5>?zrPqe6t++@s7d%on!!?-(lR%>Wz&{;JMFXf^eo1@O`
zj_<UzvU+*Lz~&b1Xtuk{4QYn)yI+r0$e(V`9pW{q(i81F%af9lD$~Apt&2aNCpV@q
z`LEy6zu}?$8{Z=GPW4=?=-)0aGi!T!D}82qqN1T8_|?6=?RnzUrxz=B+^(#tVU{`j
zs*Il!bM3e@$uITNw6n9DCoC46a3a60FHg8sDzm%1GkLVZPD?7S`9}vIFOEyQNqC53
zm!lC`Z2_ishxcfIzIbVB&QwoQYO1b}^2qBGF5L<FwiO!ktqpdi8YfPi2*@|cus7G-
z{^qAtQLoMi0bAWhx?hGWE4|D2Exo?+aP>;DfTC6`c+8+!t8IGGF!k2a`;H58Op0!p
z6kgwG&SaK;lfTOEgs-yPl`B_{#vj{NqR<|^W4Q8gdh?G9x8gNYzDFhew;q4`)BfP?
z-`v}CMg8#M!(Cln<>lopm%%oZ@uALJN=`Ph+2dWSye9iYeC!H0hPV8@#^=%V{Ex}!
zbsRZ9+MM;~f=GFF^$kJc9b481pZ<1ym>X~?;`--n_O!4EOZItqc;HF;onN@j(dFgl
z)P}8Qp)RJ+eZ|A>s9k)RovrfV&_-O{tu4pD%^nQl(de=1ZGjH4l`&D0-Ksj|LvHU}
zaO=ApMXfIbWhLphcuLtlliqU#B_vPr(%VBL8=ZWWM;<kJ)h3!~i%<vfnA%rcn~m7c
zXN<k3hG_*auC1x5Gi&k~)nM)D%N5klWaejiW<E}xJ(F4+TEy7WIg_@mldt2CTYA(U
zWm#nnSJPSHVV)TlqaKs}`F`xrB}REoITfC%jgAI3_|qL&TyqPH!ilDt=~dVTwGK5#
zhb8<Yb%e<U$Gb?L%+176p)oI{Sw2?uwl+7X8yFab?>eoUoRoADkCo1<&{VPx@d$J6
zicoiZ^Yr}DwA06X)86@97FCj~c&M?jDchsQW$Nv3mj<u-y5FxDT*h!eGlHFAb42SE
zPWS!lwL9M|5|N9>*E`#`ZM!L7rh%t8U8>UYaE{=-leyk=lBEO}n3Ub#l`M5u!*I1A
zr@FeD#^tQLbK-VAhm(D94%5xejqHbQ^73Zo_vy7R?IAUFO#C9hOE)L*%)93gA|f_o
zaf$+@OV0_b+zgxQHsj+ETpcV`RXzN0|52W@Zj65NlVJqEc$<7tC&QS1-eOKw+Pc~f
zI|eTl?@DejR=RU_4pS{p#3YV$(aE~5u1=ySBSWakBF#|B3{Syj?9D|P?7m><x4(pp
zh|1eE)cXjn+P-DJxclinzG5MVwUlM;+Flk+@&{#pc=oeqeneDMksD_)RI{|ErY5eR
z-w}e{Dq-L{HY#LP(O<M<a9)P#FneP_ktLfcpqF_l;s~F&aB$x1N`A=lj5wV^(-TX>
zmu_tq-Qj$ib#i)=A2M<@;fLKU`KQf7Q}d5V1=u~AyR3!d#w#A{e>WJz^sqcPS|+Ms
zd-C}ekpLWsRvcP}S+3HlvfB-(^Mpb|8Hp$9fk8p?j~4%W0*~6iXU7dGqb_OFjvrU6
zT{sfT5A}=p#3NL@xL9N0xpd;CWzw-!kUe$kdz>_ue99Sv6sx0GBtPm1Zu;fUgoP|q
z&NMSgh*77n7B!>R@*u#tYuk`M4le8DMN!Asx80%_JMl8Ov6n^UrLY9GkNk7#TP-Rd
z(F!Ev*og<<k=-Xin=9lT6c{KWDZ+4mb3S>59AVbUoT(A+$e3teqw;8j%;9j&#*Tob
zwFNSzJN#(=%t<OO$?d^5!O5ljty@cv%^Imo4PoH%*ktqDXa#fTuPTd4K>90DotbRF
zey{ZyZ5+(vdBjP)>BRy`-mx>2HWwrp(Bbp#JT~37^5EVFM<iNHlz1;MuaF@zg?2RQ
z)WL_EA%WUaIwlQiXDl1Jjw9W*w|2PLKGX<GdEQ_3rnk|lDTD;l=*J~pwrQCs3s{D(
zoe%i+P17mQi<)#|4R0yfwY3aYXlb#!lWUB*?q^q$&)liIWMHjjfrzyJ#Pn!RSj6FQ
z)9060-1_Fk^OfzX^){KoXP&RH%u311Qnt3XKALP%wK6}<YntDHo1n8)r~7>s+HRgu
z%$nJ~%;>sxYGcZPUAkdO^wGy#Evut7<H+HVLA)IHlp`PJ9lOCQH;8s3->29l!05&;
z88g$8U<H>}f8DLFLmjIeUmsU!xvC~-VR_y*y`ghqgH9Ol5e`$%WUI7{SxNBA5GDE2
z9fSMH%^*sitTA#be)h|kGNvzYURQr06#FUpjNA7P@nh&~gV<~L-MF8eoLp^EmN!pm
z<q?-#$L#C|6?0AtaJHO$akVhO?b6cCk!NJ%J0<<qS18(_Vx6pt)IN&ncSZ6?4ThSU
zTI+*?xSVO%8=DPu-u?Re01}Ztby8pLUiQaH)zB3Zk+V7%x4Bzv7P|x~{TngMzcD@k
z3&`m|SMiTPl%Sn54`dE=E30UNCNEr&4{t|yJtP%isVDT6no(m=lYvdbZ%bvPKmIj5
zJDbBkE7dXPq@kvE&PC9we8;`p6Tfa}e$1YGgu%#pE`4K2^TDBr^4{emABAwYGZEtt
z=c(Vm`BFqL$H%Ltva0HqeD1npnFSefKM(G)II<JTMa$CCGN$PEMWL13Hh4^oXs|XJ
zWo*MCm5u#G&O`0OB02yB>wbEA`tz#XhjB+FOghT$&{-)dDgS_DZ``=C$si^A`I0&I
zCA?>49?607c^8E0n=LmB{`+zGe|FP9?xz18hx6Zq;0JtaD2N*`cYd+6IMA>AM17Mc
zFjMPm0O}k0Vs4w{8|@F5Af0ZLlXG-oKiC)0_S2V|&h`BP#;zM5o0XPy*FKi<oE+PK
zYwLrG+bMOjRFbuS7(a)XXi`MrH?V*E%@aNa3Hf3{&!0cvq!<6U_Fy~BP=G?i(@*B!
z+G?U6kiW@aoq*$Yn!z^@-rGY!nS+Caxw&}(+huU8$M_J*Cb|p{2OrhxF{k_MsQgs&
zm7_36#3pSu&XEEzuiev6*WYL4cy2_B_~wW2kdoObV~~mz2<{BXZ?G-eY}a<n%ye?B
zpX87(E*EgN{PpXbpMJTnMX8Ce$!ZC-j0K3TS32}1`G}on3s&^~BPh3h_W52Kz4z~M
zdC+$n<acu0qOQ*25llPIjayIO<FhKgT4ka)lgVm1J74Tkorh9y)I_z1y`?tw5%GM9
zlerTEMbhi(7lcHrJBvzEIIdh;L4}s8QSyY!^w>K(=abVDqr4n?CACym*$eorWURwF
z7nv<aK~;0C_U+pT(5Wb7lo|Qp!P<&&fQDelI&)?Hih<T5J6xutV#%lLgRhQek7gOg
zhWuc0%Gu6!F%T#!stZ*+zp1Rs;%Bv@9zKdF=8UIOEYk5KP^I~3XGK1Hj+}Yu!7`8C
z!Sd%9IRoGOu|0x*@=?4H-qX_~vZOBss~c=rLPvGDP9yMoh!ZD$ucZYRE+&;z*SUSK
zxW|wpPmNcR%52gP5IFx%;nT*)<G&^Dtf~4-n0$EEU|Y0tZJKLoeX_ZwWmJ+<Y)4nD
zZF+ELMR@z0i{d3eefp*C+h5jKvuD@-{%uL;`KU%|w^Y46!##AO^{%yCX?9T4<zczV
zwn`u6xRHJ7&NXP#f9F-u6%m;7`iD!CZSpytLz5`$6P^3t#=3vJz^Xa-EIvdFI8~r?
zjHP<4hX4@%N5ytuR3i{;dtSu#6k#u07=CUwu4rRMFkWj>Kuy}$-X-r5_rr(?bHIv|
zxk~mOWwe5Q(pi<A#wiPzZu*|p9iO*Y#NHQ}&&a9K9|Z>~TDgV}2E~CZSFYR&G^AN7
zeKhfY;@Xe1bn}&+>g(#N_2w*&Hp+K-3>ssl&PTtM^<U!Jrdx4#$|J8lESb$K53f#q
zyiHbCdxYlk=KQkiI<ww}bUJHlq&}|xozo&Gly0T_LlhmdqP*QQW*=E9HkttnVe|6)
zv;u(2iIhP}o#+?E@=d`sg=TNT3|U8@L4JE!SY~gAWF{}$4f}=XV1DUhXfy@Zj#=Y0
ztSdOUSJWT)8K+AIVD5YDKGw-scX!`Xbg<Bg(Wh?l+0UOdGyg}>TRoj6a(MQPIW4gj
z=CoW12=thlXezCYI4pDG`Q?{4zd3Pbu--b=sAT)Q%gM&5=0cGTQ+p!%CkIR0doy{O
ztjT^~ua~I(D>|p7Gdk{CW%i_KN6o^@%mpI2($@(m>}pK{Oi-Bvy=oc*yIvMkRz#7Z
zw;0&fCMMe>$~K){5}@zkeyvn#_CW63`@q%=kTm-5A?X>$Um)o+^S_6r@|>k?Y^s&I
z9|vV$xNrfhvzAVZ^VxKra7R<ACkbajx%ciRsmLzpHld(%7NtS4E9I<S&tn+8R-Pr9
z<edKR>9YT%>HocHdi^|WP*gM1yqUIFd&P_I`Kknh8(Oz;nbdyPB5{=+^~@X(NANb?
zDfKqBo)bNXb=R8_vRI%aHgYbz)mDL!a8l_lRE2mn-PR-^mRq07RGFwPZM*NMS%^YD
z1i?CnMSe%XHTjCMA~`Im1~+5B9VT?j<lALAdX{NQ$8x<FE#J~?oo}G8Z(Fc7;AEJ`
zNI}P|dv=4x^5I!o9w&+@inn7}&Ur2qu>c`F&`(Q6p;UR)uyqXiG+4`PyrR}?X6i8l
zjoDb=n-$wnH?ORbVr1_?uzT^iR3!+RPFmO4#bkOYT(z|`Jgg*NWhBAsaj{(b*xO5k
z3BDdLf8``Uii?YL_>?WEI9<y;bt>NfQ~O={E{MTlB-|k<zeED^$+?6a@d1*42<oCp
z#P-du`J&emos{TXQ5jCw=S&$8W)Y9l{oDdlddDJsxsPTx72n-`iA571%bjnF$7@~Y
zoORT|Am}Q{vtw&kIW?R~mYU<*psj19UDf|mL~edns66i{A>$`X01Tkt#Q1N7y>1G7
zbf}4lZeJ`Sw}~-55MWnMUr&|#E6jqgp+dK+yqQ&nBugT-e!wo_`X4TBmS|eJ`2%c!
zZoY7Av?J5TCiZ>x3Pw$R;Q6u_`vRn52u%_d7gu_F*EtqDp|Qa-E(_JGfMUDT4;|V1
z#X;a#too8gR`qePF%&v(pNq^s|E-ack;>2=;npYf#a|+)Xjdh;T^bp2Jl<q_``z2|
zloYv{k~<4IicD_@?wFflx}hBN_QIDUx4(a1#mH@MRvv3U7p3>S9(=i2&U~_Mc3yL_
zoQ=kRu=f_{Qct~JUaB%-Wy9`&{xVEel`sMMU=cu)=PZ3deof#johm^Nl41J^@d-T^
zRpWzONP5n1njT5zzcf>M{5%2Fee1QoVg;&`d8$V;SCL=yHje5t*hY9>tixWy2zF!d
zSOy!UoqkjQw2^icobX7K*G#m2a%5dA`3->~eQjZ9Cay$%;+*(o^U8M5;V8yhIzgs*
zmBhXqn+np-ykpS@+e=HaZ}od-6%5yy$oXu$_L7*Srm0@1xHG-Dfiv?KuevEyvV9H2
zgB9CO9auZ0!Lp1^fB4}ig?Wy5s%Iu7B$RvdTLT`SdUe-*dN522g<@)>d3cCK5B7Q7
zhrgg3YnWdB&TERx@S}<IU+k^k&WU5>s82AxCJd5`C{Wyy94XdkgQMU-LKfN_H#kLS
zfxL-+m18KSTX$}rP^6;*b+=jMxq`JxE%yZIk>~;OwUwUOlTsi1YQ|sJI3h_H9KA&V
zMMRZZYAZJ@gV>Sik@oDr<T6rgX4jKkV+uf^@aCs4%gf5*_smpDy7{&Eg-xFP<62f$
zH$8A8knK(0MKf@-E-lygCgND@mV~&p-C}aRs*jqjbvYr;Dezmb`{%MrI!}!B1YH#O
z+|F}rn&7bMMn;~4K}~GynMSwX^!0;n#rs&n;G8Vkr-jI^csoRmFF<-<7Bkf<?NtC;
zHH_>RP-;B=yn4^6@m8<tb}ts~%k`Swzd$a-Kdv!ipE~>9M-kle;u@FijESMj9_kUg
zW<@ezQ7_6>y4NM?T&l>8hB|<Kpfb@dmPy6UV|Kd3-lGJQqUL7BUQ8CTrLH8mtz;?n
zjlkTh6VgYyK2=dp6DZx^sS9{(Ji(&saKE^{*U0|WZf)@j_MKGjFD`-tS-XmL`{d;1
zb?eCOTIf;mVrPO?<pNH4sH;S)t;>}YQH&cmXkPpx#v$F*kwxiX-=wpK4tb8{iR<`)
z&pa-2crm%;TvL;KA91kUM^be4f(TGHc<0e7$*8?KyH({RWt;A<c3JaDHi537*z^Oa
zaC~67Nb--PI6*G;OND@O4C?CZ{b(dB0IJuxT1Oly1eLKB$kQsl^@hk{>LKKsn%_%3
z<s3CWKCYgdiDY2?l1PsN0?~PU=CUmZ@l<u(zNdateYa~4uiAiV)U%p;#(I}D-mbNz
z{>VP;cd;)rdv~4%>a6s^5+ysL-w;fGNjm!`@Dqm{>ON2qDlrSabUUwkkN&bg^abKm
zFbMsG^%tlR^Ec(s`lOB~(%gEIb&c_Vg$Y@s93?kimeWcRkth!(@`2vPWZ#F)Ot$-<
zb^=U$!Sfu=yuAFIyLGA5rM>Rfo?2@;!w;J|YR+(Kba+ZhP2OUMu;BQ}M@jiUq6R&0
zsMn5V;^eQ{>l2;C<#MBxcThLvMYaZt(TJn~5QQJU602$Pzyp9&+YN#({+W)&V?j<1
zI{MgjEnQQw^FDj1d|y>IMY0IcS4Ju~ll$*~m)|~Lb!-<Qd`W@Df930WU2U-f4S`=X
z;)s6xumLm6A$i|yX7wi#0Qw4%H7D7&t%dGAmJIH|Fe<USwbW$~scSdgrM~la+Eb<5
zH{I)$6E$*`x}@mcBr1&5hS#Z4Zx_Eb<rMV?|A>AfyWILh?aS$?UFw^;BrNGBP!zH^
zCkpq~8o&sJR3emZJgd=`$s)QsAx)BqTQP{z&IMIPBEnu_0(R_uNUv2=)SchfjdIPM
zXg(+G7}50f{K7&1IQO-nc8whI=nT*Nw#59@BiG+!Sg~=Uocmaxp<S`8!cdu--Efs|
z`-?Tc`_m0$wP#;*{_taOdAj<8LsIO%r?dhHXDksWJK@G`%>PPVLy$wOJ(Djg*;6E)
z!*)DR-R)QViv>A86TKuUg0Le$yRBy-)`tk3Se`O}R`IHljn3Iu+LgxZou1$|^>CL-
z8waBZXv2SLp;jfri?G*N9!aW)7>uT#{=!z<rFhNyF!!y(Dr3h`VPtOtu0c>UBXv;B
zU>%8X%TQY?P6Rt~Txt<9GK?rGF4q7N7$}c-C=BwnAt1j3zr{~7UnwQ??e7YxY%d>_
zN-Kaxk%oNZb-Pk!c@UC~EA2RJ7ln!L$2Izc<JV`U&QwZY+bMfQxw$7V{6OOGUVxf7
zhQ5J8rbi>Gg@<14bxNQ4=P8!dE`Y95{AMCAd%`rp$dND%A-IfGgA>8Fg&P&#{=6o`
zfr^hiovPf0IT;xl`-9{*lLXz>m0?^WB;Rlq71%20=Cf2<L3RU=kHh(Odx(=ULJ=YT
zHyNhI8w?Z4LSgWwj9uT8`R$E7Pp5f{mX|g9R>qW48$13^WcH7vtbI~Pd2(|}4&Hk5
z`;;cniSEQADN>22_8yc9kbxvYBb*V+RKa<RUVOfH)wLj-jEzKap6(Z)NicXvWxua>
z;Y^fzjy$ds8?Yt|NOXSsR@;^r$s@Jc(NwSk@$%WM_aN&KUhec1yD6BqLe5H$gwQ%O
zZcM5sYsb`31y9c?su5c`eYo0S5XhMjQ9Q4i3A>Iv7frFvHE^PN!<#p6CYrgDa?U#+
zC7ZJ9&%fH2AEN>qxS})6p;<#TECCd6%<;7X+_n{S8_hU7M{mjh&Y%QH83nc!f97O8
zKFSMgxe}ig6VoFqluy{O|4Je?;E7)+`7)?!(loqX8f8E?XeaHc0F9=l237}=u}%}Z
zg8PMlV(VW&i>H@sAQkW!F@_ew{>)k}IVEKs9idjKr{bG3Y*w$mA8{a}wnQ<eEQs>=
z@Zm$OC)x63`{RLzwc>!N5h09ld-;~s+PUV42{|)7hN}!6s<d%6`v%|zK<$uaYs1SL
zEkO{z`Oa5W#lR-rB=x!VDd&6LRTF)&8u`nz93~l!Zsove97jUAC;)?!Bo~YuC&hVN
zX;>I!B6~$mxB^rLZ<X4+diFIxA<Ct;g=s|<_@lyQUrOr6lITHjGk0w6-F901#=*-!
z_R27CPoQQXkhv=JbE}`l7CM_12l{JybRG7G5<Xm}Cfs`GqF5p7k<cbkK>U{Vs<o{N
z9}-A2MW;@kdQBUV`bQ<SKF4b&7<h122_?BJbc3J9_h9T>OM8D^B3V6F{*hj$596}4
z=0`zWOE+|=K%p&VpY4sRV%N5O#6bcv8E7f6Ts6_LS2Yldqa@T)-yH+r6U`CqXgFBA
znIWy2>olXqE*BSz2GU&Mgivf`I6e7sE}can#0eF3?JFx~B>=CAfCUe6DWv3Wd>gU6
z{J}mu6f8QP(+%w^0bwY-m~Qk+R3(GbGXv73?DC`Ki+i~*R-NnvClNC$20u(EN=SWu
z{eh<orB5Pqdl-bJ+qJKwkDwa8!r!hv{8FZrMh{R~LxOAW_z@4gx~SNU$bm1CAe*+9
z@00d0NDE^3f1AiaZRuZ?31q<UVS3d+aKj$jAGmEJ-4+lO76v>XTU3|p>5I2Fdkc-P
zs*>}Xo>cFEWkRVYjY>$j<sTuTG|fyk`H$cPNlIsSzJw5|YhD_x@VIDHq3hATLlXYB
z2r@+L1SL#oZPHKL0CBfCQafs^O+#98uY(e7Bl|;lD8N*}9hj;%gL5by*?JJ(6YDDh
zIWdOmTOqMWbVp>?7`wG9^IWv5dMR^~RW?C3UD}cKnvtBIw5)IQEo;oM@A&_mzFJ>G
z-a2f&GQ7GYh$f6DymDfJ7x3^)gd9D7IvfDi(MNB|TIz($@^I6H?5<Jy8}(FO5#Non
zSaJpW49^iA2M4Cq*TyLCQ+s6{yI&hR)|x;AHYKJKl+$bP?e#4=eo^!Wkj4Fdql_R#
z;$bmqSO9`8;n0u<`h0myW<3g>Vj_0?OX`|}gCm9wnKN&nL6|npk_@B{a7HAy49K;u
zOb(mIv<m2pb;_~~nL>IrH1`!%N~s?e0X3dI^gz0GA7lJbKpd615&mL_4RbuFZ1aTV
z?K6F7gkWE%70Q0D&LB7A9eQY3*_qtG`h;%Ic$MpflY4^x`<S7Z3M9rDd%8@bXJ&L}
znnAoJniCx49)4X-c1rbZWT9TA)E%#u-G7C7#B-XQ6;gh~C}T;2O#5igj0dUhSDktG
zIlp<ns$Qp4S46leJQ>k{R!yVL8Z7atj=kgrNz_X>06U~3NGtZt{G#Rl^)h4U<674#
z?1ZYxV=j{gfuQ|Y$=DYtBmJNP*w^s{#m9E`VyOsfF+bIDEqVpH!P_-muZ|3R3od>E
z)EWdOLROmH_w7<CLjd4lQb7e-rxYL}zw%3^&~8T+=bFi51FMAHj!2+x-PC6uIp}LO
zTfOWo<z8FD2L1Xd3DiC#Ih%Zj06PLD4H4|Y()^7iy>^w+^x+Xzc$p-pz}3`#Sn*{|
zk8>q^K+m{jP34UJCaqJ41pL915aa|gv(w8t&~d8ky?{BRl9;FuK75O*DV`U@Tv%*}
zbJkQU)DiUwR2dO}K1@Ll;EeqIID?tK2ZzjKYGy&F4WQyhVR2*g99#jnr>U+^-&`I{
z^q)2293GIFuDNRevoE<lGc`HW$>ki>x=}_{9keq}8z8*no^NatD!Xpn9|Q!6o;AKZ
z5<e`c*P}E=c?gdN)_k(tOm$znp|NGtKB;t?uHl*8tovGFD*R{bRStew>63>>C>=iE
zk};uA{8yxM7FHfQAm%yt2Bh+uiJnvj0rToPMN*lY{!((QX)RK88EBbAawxz>!&C+F
zX`oZfE2Cmsb@Gj{9b8hQ-)*Fp3I)1uU##PJXLx(T`Y^*2TAWnH@s4|g0XdUvo5rhC
zT_YEf*MaERtJ4=NheS77<29vA%n<EiUMkYrV?O|J?zz1D8u4Ky>QbOppt0uO9G=D0
z_;AsqgZGH##p$gh^>IPx#p>Tz1)=}ox3oT;J8^~SzNWaixGLI22>zQABs$KC_W-GJ
z-h8&|48Qbom5xE{^~0L8($bHi$Y><_67(en`aJRq6%fnntxo5<!69@%HdczTmZ8w&
zOrHMqDG6dXHXSYRNr3w&kjQSJVdl%=A`RX9e<PkHEzbczq0JO{y<KDZx@;i=L0lWi
zogx^p{D`4yw9$!yr~&Au>}v0`{q4`h2u2F)#A3O6BHhth2wiRGml?nKQftRG;#i@O
zSc{)l>^CFwIs9U18nOn~$yIyYw^7fRV||X42o_N>L?xtXKXMtkGS%-<{u5X=2_~|q
zS`U9*aLX+87NHw74<D|0ex0gk;*Y*=-n>$ACCpNA=iESg*i2MS0%Sm3#f)YUGhf(5
zL%S_@PJ5Luqqx>AY;yzkyB&A0=s%gzA@59_Er_&}0|7bvQC@_iRv<!W9D6{WC9gA;
zJ<-T3fkjUSlqE8x#SLmz<7*#T<klZV0k30VZ6f}AG3&pXN{j-|?f<~*E2qq7vUcEH
zrE_C52f|gSHWHBu2ZJXIEvBP@MZK@<6%Z)PHtAi(nc6D6qi<(w+>%-NYp((LOQILf
zl;zUR`bQMx;Cdy%n^+@8dZ=HQGr$S=ntUg&`?T@en!Rl(f^k;5Szwua45%bxRgF59
z$SM9K!!?XB!f8w_rGA$d5jEmHGwL;?Yfg&iDlswgWA7XkjhT28wt}-!)kP{oHuEAw
zbHz|z_&ef(CI9h5u|Cf?3mM<T8t6xZbCmgE>7EKWPVR@8FXK?u5;h{rgW9(OtZhTj
zZo73S>?Lcy3T)P`?Pq>itTNWT%I@ViE;X4Ph*n7@ma6@~XbpWwr!F>2)AwUGYTfkC
zhd~3+zSM%Ii@+}x*RnaFNcrFw<TX3v4i9^$g3|F@r%{NlaH!`F^#nQy@<N%DxhKsH
zm9i=D-Fr#-FH{Bvk4CU-LddTCgFNU0d7vh&e8ikQ<+zbqW@gd|YlBpxTZaG;_2Cci
z`6xz~8^fynm!|~6DK?4t<Sc}#Gnd<hDzp&^Z%}-uU!2Y=^_m_u2k$(xnY!8U%MbL-
zVc@6|E9WgaYyIhA#*8dsh8}8#g~I!|9l=oje`YKu>n!6)2<iMg#zNS+(?xLp;{AZc
z#N^^&*u$x;JOVX&yJATY9I(~#UwAuw2-LqW2?8d_!KsK;rZHdD)dj-VLKt*7v!g%e
z6DJo~E=!`gqE2Fb>Y^L1ckrDBnDGya95`PP?_W1tMv3+Hf+egHW2K%lH$QqpWRYt)
z1UL|1Km7LV?{0C2$sbPg2U=xg=iRm=f_9sbeVB`2qi&ST<8S6Ljh1k!r_?M;Yo^Zj
ze?_TCA64qS?<dz~asb&OE=q5<TIP{-1_2)yAMQMc^z5&91mgaPh6+ivs*^u5G6I5Q
zA(1CqUju!WqnxprrT5CBuxuWvlrt-tpkeuiy4froZYjd_#iqUeb=$ThS-+F!rqV}6
zRNS43d6=wX`gm8A9cbH!hEg?=v#)s?aTK0C)E5Nmuv#GM7hI9&=oQ&gcemid!#PY=
zH$t-i2q+-q%x`CZ{IG2fGvC9B3Hu}z81l0Nn`DKZ!D$~guRk~I_veCPacppMnwc7n
zLupI?`K>&DTB@;v!{IzoLGnol9<UoISg-5jWJT5H@dPSN;H-jbvSG->1G~y&=v9>z
zb^dSHMDmvk!R0~rB9Q>#n_|DeiASJ}Nuozt!R<cGV9d<aW{z%%Djf7|ZbBD?;D%$X
zKbH7T;*s+c+OL7X?x}G8WgCs9UtaxeTf#aa^SYZ=%YVtyd8{u@XUm%(K2fzUVq4%L
z_MxC7(Wef4cOtNS!|FX1KmWWze#M0qrX@V#qR*c$dU?ELOLza^QAx|JU<d`OFLtcA
z%YNM6Sc_+}6*dC$xL0gBwlk)Py7P`vJPps5HR2J&vmw|1Y3L`^pZw7d@hFh_s!Wtf
zXT3P1(I^xA)@zkaa7MEit=#rVTAd0b8=?c}v+?L$kOYHhgoCl28m?hFO~MK4r~=Hv
z9IY$6qc(^H*e37!PTt}@gv!w#+`O_kXJ(ot86v$w27la`0LN+1XT9qR5FZIxF+;yY
z^82UV6zP)d1_nd>InTXaDOJhw-4*$Dbg7)l0jt`?wcP5MBG~O&G!)n`;d8b8^K-nN
z`rrQM-wy(!t;fd*pqK&-u>2Em4P0veW%6_zY*zjEY6P=tN3#c9HWKe(_9-00HY@3>
ziW&qhy3N5MjxlmoZE?h9ufB8Ql^L_E?HPsL2Nywj+zdf^EOxsxueNs>d_>_Ga&3&m
zELAwA1J-Y9v?*sRC+*A$lSvSXH2Pu`3_WdV5h!%VrTpby0sXa~lZKDWGo4}68|kD{
z>}ksxD3tW?r>_q=!ks-5<1ttPvk(Uz6L&ae+CZ)p^`th1qBVlDwWz7(IS!_BYJ+G5
z?fmgrs^YmDt8S@yxbC^K(jQN~6(H~>?9`I^DnMGiEi+)Z=mT}eY-Hs}f8GGES#<m9
zW1%pDud*-O700+AD@EuCr`KLi#2pWxHLE2uDz>iotR=OXx($nY%^JpTWp#wCBfydD
zl_CR9xw&(FW#x5<C~kC?Qx?}K>mX@464;qjC5aPGh&fRu$8b9z7=Ae!J7)i==HBL&
z6qp7e(jXkHGW8+$hkZZdlzQ~q5lUvzGH1k+Kd3r0xC7l9#EGMAO}(o7JG^QXYeQ!x
zTh_GUDhr9Bi->!|)6K$LQP#5&j$}7dY13PDctdj*vh!o}iic#6iqDMYSKx{f2uY!e
zI=v`+qBrPE&F!nn6CgB|eia3oce*a`TStd+TvLVLGC9>W;~{6$aC2rnZl-V<>KxRv
z>*!QHxJI1+Js1H$(viVH*c^aex;}L_SY32o1)g2c$cUiLoXMh`mmnerE-@y*mTx$%
z=A$y+K`S8nkusodGd~3D)eQnr!OHyX;YJ-zM>UYo3|Z_N!uFE2sg5-YQtC}xLtHN`
ztJm?X0T!)22j#tFK&X&ny%)C>&B)1?f6w;IyUI2<R>NyF00vo_6z6TlL4$;hstB95
zzp!Wp%g4v30ksm@N#qg;bq2p(MW_UoT5ew*(aX(@IV(8dw5u|LgxANYh$c&CCbh`H
zU3EHl4%PhB3Z}B>QaQCw3+`!s#OYb^D5?mASKvZv_7)=H5`PppxwV7`VgyhMQM@j9
z(0f$(3Z5s?E6F1rb(k$~+>$S3r*)t{4**P*Bq5=tz;BS;10X`zr9-nHM2;<x8wVk6
z9i4!ALVVYY&WxnyP}F*TmK-#x9bm%wSDMDI{23qIFI|}6<*1Ud_2b-ywy^M6Ia$HZ
zt@KkSJrOrZx^U3vvM=VnY?_K#%K??)-w%&oNsmvX^Sdi_7AV{u=qo75aNrV`A+4a$
zUs49U@XycLLAA%25X+ZK=7}0ZI}P&47fPl5jgZb@If(EJ02EW*O5M?r0dig##LvPs
z2)|n?;n#Jz%YEpcxQ0<9H$WM7cZqi-4tyAB>fs0L<f_7s!J_e8O5IZ2vLYfPwt7N_
z{Ucmx4|-F1^D>%0^j4@2yjVkL<t<jS%H%`%*(!!h`S4yTP}~n{U*etDc(|833ylyq
znS4@9n7G4%Q1wCJ<Q+8&(OwaTa>E7Ti_|D)2-m2$?1=8$I2q$KvaSI7)RR9Ri)^>6
zx&wiHq^`qLcR|J`M!CWSav+pm=77{?u~U}uaMC_VH%iX)p_;D`b^dz3sC^lCSwvJ3
zsmDY|nv7tsL}AFHrFTU}rMNZE7B5P=gG$bRHDXC4IF{{jl@Zm2GjJo-ekDgvR<;#I
zpE0Y&i07)yd{4+Qht+4H3w#ERoxvx36dvZ+9L;pJZYv21g8E5=B0%aaJFq^)`JxWA
zS;a-KVzg1Foa$7k)*umBh!%%tl|k%6WiNh!SMB=W9jP@Rag^UggohTQyu68nS7-?f
zMloSeQI@t700-t-+mdLMUc<Ux$$8v*;}cr5{@Aix$PxjDwsfMs-mkcwq|;6U04hbz
zy?ghTK!tu8tRMqH$EE+bWt8U(P?Nwj84#0^U9h_lW1AgvQY(%>#nBN#OUsf1TOCBu
zB6I}s4n0G>y0=6DA;%1#We4@Y4N`UlTLlyX(btGpMC=H}^nhNrF2||8q7FxV6uTZ3
zh5@hD_Sm^ats~pnyQFg1VNT{fP>_(A=q!-zy{FwlZ7RIGEW@I~f8?H5O^IhiOt;;+
znZvz}kOS;3r|Xg}AEOP3);X|?YItI`z_%2$>-=xCF2IhaaU872rWz*hWxM7(aDxLF
zo(h!U0zlxTXa<sn&Vs|~;l(A6r5ruVRZ^BSd`g)3M8XZFfM}{OK3Gf1PZ=2{GA&pN
zqO9^!Ivcw5Bvoi~s~sS9g|!UlCdrVRgq4(%@(>b3QCYH%#nB2}pNw@~l2i?04{xMq
z^;j!Ey7Bb}e|7)<zBhRj@n3B4v7R9Gr-$CBxg{>XKX!GBJPOS|+qEQt>H1Zl80d8W
zo+XMh@IgjaPgI7hRK>U$#MQoj{kk>SI<EqkV=U}!X>=HHUNbJ$`sZCU?M)();Y{zW
zTcaDOH^TcFe?IYW?;K_f;kxBH&L?18ejURX5{mQBawx4Yv2t5~M%U@{nnRl{Bf*To
zW0kqXn866cn>RjUeGP}Qzx<LJPMLCjc50W%F=m_c0(`=4*YSCgHM$-Zev^rN=kUPo
zrROab!qz|8s`|{=bLgHF@6cwLo558O=7{)1BDutyL{CKilxnxCOWIgq`NWdhlx4sT
zyZ|Ku6-Z{$JA&>=>r{~cp|8-TRh)ZP(2qUB%<d8X#JdD&$J2jQm*<zudFl4m5v``3
z!$U$x;^M|l;l9Z9u<=bjHKtw9F>*zrF>;bGW!<>&9ckIJm9B@n{|()?`Rx1=b)nsl
zDEYsm$s*h72}vDGBy~>y_Un>l<BT6*6!TXS$;>E$E8367bIw<Cjq%CKqPFR6uPB#X
zCD>pKXI%Gz34sLQN5dseEY6p=uDeb&SGp~X-9!4KZf+W6WAB`)p3oBKt|c9oP>#hQ
zND@d96B9#cRYmEx!(Ca3HXxD|G{tosQLmT*CJ-HDG%%37fk0%{J!NMnY$;_zCXlR6
zC>5f3J39Z(z|3>JBFxcp>UiFT);Qn}JG2m)z(kG%RN|N~3>|}@hLF(uSFf%C&Hz4}
zTs#3ukPoaf)zh}FfKXRp+>aO&JR5}nN-&*`K}Vu=KO%jrt$_0-NX=y;MY=?_kZ*Fg
zBS8**%;>H%rh;6Zd3Y<4PQ!&2xjy(9qil}0UZcV68%;(c9FbKeUfe4p@;b&!ARq0Z
z35O$dRR<LP{P`MN^y9XI&ftzHga_NIYbvx}*YuS|<b{u~;oa{S)Ha7#lRc8Gp5}&S
zY=fyIrF|25L_4J)@zttHuj-NK#5r|7ll)X5>pp&g%1m$t)wsG)Kb+P=_(C_E&U3L1
z6tpOFL&gqus6Oi74^(53Md43@nQ;6rn$0BM5${xW5mh4gdEuo#X!N6uL++qMO5vV9
z!re!`^VR!zsuyOXa8>{qwF9N!Mi$oqX~Z4InSxAQ8QMcPft(I+_gx|Lu=>4+VjmJY
zSt!*0+S3j2YZKpMqY7MBH5oMW&fcC8Z3YyBC=hQ}Ik}hvLsMGyENm<L1rIlWmEHcB
zfLU+Bm;bHH;*VAkS+5s$#2N=Rk2k`f=@XtgkY_>N!gw6s4dgnp=sQlhzwb92twfOo
zXL{gfgA{ug_Pu*+h!q=kl4Kl_`&OVzh}kzwG}Yh%so?e-1NkS!&;0HMNQL9jz3XsT
zp%X|H!gleiQ?vaqTnPNV3LCCft0u(>@Xcnj{?q)h83iI`AC?N3_?;~1eDA&>RROJl
zC>!`DN_rM|ZMd!?<m}f1t4Hi*q8wyP&OVM~i2sd_O^sfl`FMHi)Ls7ipj40p3a9Y3
z7@PV*V@*5UGZVdHz;cMg<Yzk*wh`!|sHm7B3w2hO=rRLPW$q4)r<|aE$uSm?638Eq
zDpG|B$ji^2uX5mzLQSRV?j4ZQq)B)w$jyul73o<fVT*<5e4adXBl7s|HGvC=j(J&J
zRpp|X>nWHI4sf?pA26PU#UN<cB8%Dv0wMA1sSNz*(1J+p3;PF#Qbd%cm!o0<YZxv?
z!SOQb;Vw~jT=uwyP1>6agjO^^b?Qa)lXEi8ea&Dmh_jzRUXv4wF2f;H>YfFrbmHc+
ziE10f8G7jc_RFvrthM{fU%g6bgfYZxM;OEg8F&>?k~ek6yuZj8<J!B&k+Vr(r(>K3
zOc*4^Bh(R_6`;OyXGaGiw>^2Ip3?MzC&Hfb@`baTB><ZxmXV`Eq@YQ@Fg7B}lR<fu
z(H<#5HR$n2VW(Q!G}YKNYndam_6jgcG5hXbn1%$M6t~aY*Z~wojk|`2npcg82TtkE
z(Mmve*qCGqK4FoLjE6xsb*mdRSWnK)Z)eVoFeROMq!EO$79S$nX>QK6rHMO&+QTCf
zJ@(T}bPW%#C=F3c{Sa{z>2ZZPqIhPoDyl8bQi^{&){a|&%Bk}lU_DdncJJ^P(5pWH
zq~4?Gtcbd-8)uwV#J8-8jk&yDE7b6h&4PtSZ@a6BJ9v&>+vyZxo%#{OKXw_9xRMLU
z7Ba@Zh4G-NwE>O$ZKNm*Z>RP{yd8-kXrw1rMt@Z;tU=DOK@N4Aw087=N6dX~2tPKY
zJAsWT8T~Q{`Us(${{-4Y&+k%oDdckP6owueoUv`oS|`clFGf96Bl3W{Ak-Z>=j7?I
zqL6NENg%VA0E?Nyqd__RAQ!}CTPXAo?%dH$G$pV1_Kea!TtzBpqH7t$ixI7t@O6|<
zj5;ja(2WvdO~HDPbQaHs*da@|mXunkhwIUC9<S_3?G%egy6>af?a|>vQFf4=b>!vw
zaFRSur>=<|+ve1#GBY_yzy=xnK-{|xt&{LFXt$}tg!5qu<OU7)$n&tVXX_mmX0SnH
zF1MG27<{-C#I<8GnUb1i9WaO*`$gdxZ0mnvcEqRqF8cSQR(4eIf)6d`au_!IAI}n;
z5+G+W_fk!dEB{bLW#{Zwf*%p&ppMag9wg7?v`%8b6gmTKe0XsaK2Gd=Ta8n!YNgsq
zLXNuZiypE+-dVQN^@*^1vtT;RwJZww`x8fg_@H!VcVgif6jHC4qRs#qXDWaYYfN_L
z5Y=+X;nM@#0oLAQHu7b6cM$d*>Ape)Bi0IJZ+XU4m+oMMmWM@VmSgJpbNTFROoV+p
zix_X5yhfcYjWl!6Q`!_Wb>(cA(DE&}asHmZl0TsAAy`#0`$h7HCL{~e%ujT4T&ei?
zEO#K364mK<s%<i1{Qbnli-sI*cSYjF69dOu=t3|B5THKScKiWU+@2Asc^3J3Vs{9{
z{NSoRs^sC3Z0NDG6hp%dN<QM-px%{*ru4P^vWqH}t&_xGKnf4HdtbfZfi<3`Go{nr
zr2{xLNw({mW-5JWg<FW<pJ>(`2`ahYZtC(^a!w6|5HsD%m|hEz<TA}~AB5@TKFX4z
zj#n$>Z43hg16>CPs9iUuA2*L}0FXinj$4jD4NY4`{vcQ6+c@j@$~o_!pCa=Q^4Whn
zYyOp?JpabW8F?peVMhdrMB-AXoad&+fn+=jvEdSV9<?OzmBTXlE284EUBkJ?r1S;<
z;+QE#?ZB7?qJ1i4#tXn<#j95bU93CHACR^Ig60iD-9XQ5IKf3TAcYBfY|{-LX6eq5
zjaIpt!1kp3KvYyzfgAmpc!SX1+V<Nr#!E8lfEez&qT)zv>*!bp$<cPtSC|bA#ZeT0
z{NeMB=SG2|_oGi%6O{w%a|P1Xf$D`c)BLtX_dX`RpgXJ(2Bnd)3<rnvQ>7F=`_=cW
z{a(N@g7SJT9n%!j^ZJoNb$f3U4kavZA-T0O5p>zbg3>@p(`13hO{q{Ib4RE$yl2pX
z3g513t4EtX(3#*z!|^4$TeuzJLTO;H%<z#!XeW+3(zHVIJMn(~?(&42D#K`2F)Se?
zWO6(`ST%XoC6FaH(90pkq1uoVtmo)Cfy40c$30N<ltAJV0Rzt{7=&bRk`JPad*?nz
z*TC3C^rNs_H#2KHSLXH-)8$0Q#~W7t8Nv|Bvc4YCz}yW4Xd0c2{jp0CGFAc-T+%mU
z-$+n|)^v*&DcML%6yz(ybHmg&P!;DXOKbpkn7CqsDH=*K_mY!kNjeG0$8?F8A=RIB
zt7OgnJy`x3GjV6IAI5aYOtd-@@?dLh6qlour)=Z|l&17j9IgjKFq1up#8QY}AyPx5
zJuu^ajb;A;ZM?`wlqS+`TLO0gi@mhYvAwsEV<_*^bH^I9Nf09U4OAZ1>e<%Zh@6WC
z<5YW>$zrCb9mwMP9!tT-@Kma*|7*z2yC~e$W4CZcpAYP_^Z@__hjigyVkf7OM&=3k
z#+Y^cZ(c<QVhifQ+D<mqOk#U75@V#=7?~)2dOHRAth@%}aXMzXjXx=lj8vy5#-^m?
zp6?%{mvFa20frDw7W<tjuVc_5bsVFdjMHb0I9f}#HiJ(f>@%wckh$s2817O+c%u^f
zM#kM6TavBCQ!eB|`i|_Pu#-30Fd8ga%w(`eq<AL&G%|Ci0JRHMC_`}}Cbw|6Mh+}L
zfUtX{vd7*A#$?(wW;EDWXpr`lRJZR9Ao#$4a9wrcF(jW=4wVP_kfVnKr<}+c5a6UO
zNT1Ifs1tlO4dP#MnUVcL@=2uS%4w3gu;wl^EbC0i`NjMvp1szUMx)eOqU)AC(>Op@
z3$zT#x!w{6wb73SQ2n4_u}P~NX_X~PEHN-pF$c3kIH+-*#;+!E^quhN(lP9bnBOsc
zVLP$TRG@?;)3GoV>P04JIF<}Q0f(bJWl7~Z+D2zEmuvQ1egWfR0922-`gZEHK`Xb&
z?nO{|-_m-ozMZ<g?%1cjPpH%0w`cu-r#JsmT>d9({V&N{|H6vM4mr#@5|^Ew4S?rq
ziTP6=Mjw6U15)z+!JVZP_v9Mv1mpR|z_-%GoX$YQ{JmLL@O}KyeU|-s-_ir1(y8-L
z&?pjTw$z*jduMsO59m9H`Sm?^bJ=q%XNjt8DZ%lz|5d1TenC<8f7ZbN!hQZ5F~WbY
z;{Tl$5%MtFsTBi&K?F%S#8|SH)hFLR`$Yk8iZr-Bz%JFQ?unV@N>j)fzyAl-<eivN
zYN`cQIFD(cZ@de1C3H*K%@I_OExHI>iGfViso@$i4U)lrWGn@GfdKIS&?>%?qvT?E
zNkT!GegpkV6LkTg3Yj%UbdLx~C?rXP_fk%=VOCLGRM{=e;6jTuMIJ(dvAg&VZC53v
zJC}x;A8*8t{(fB@>Oda^Z{nqN7RX9R#ddg3_OW(=ICVSO$cd!*n%k1+-Cxwrc86dh
z8cK4d5XikZX=H}j<Gs}}CK}*Cl!VT%M|wtgZnwSAvC&1Vw#WaMb=x24O0eRu=t`|d
zKgOUakO<qQ?rkzgv4h0FiB{2irvdpnjy14+{8JE0>pg@b*Kf|WLmSJ;UklTFW(0kV
zXkv7S$Vy{LH*RQZ2r_2eWo}nSYSn2iazij~y#ztj*xHYEGl4R1Bo^+q91LXZMFCW7
zm^0^L_<8r#>~gT4P0;Kss++cSb#%P$9Q`KOlFX))cOY#HnBV0q`C}FXXtY%~6oV{4
z6yH#Z{ba-wHmye|H4MDI44$^;j<#mr`zy4n79J525^BsooU)!<o%oQzK@54|4FEcG
z6EQMF%C|xl1%Yn1rkr(MOYy3V<MrZ~ox^@I!Z5J<x$N<Ijxl%c-1(x<rZ#bR(@uFn
zd7EXVX>$~PBBLTedTX08oUmW;H+k>SkJ*ix$qv$F(%$T#4wH`Ix0j^X(HDd5QBM40
zXZd4i0j9-G4l$u(gp`n3W2_cYh!=misZe=?5nE5ULA(|9VM2l-=#<rhDLJp#a7T0~
z%|gIv<4Hh-ze*P2iOc>THlZyoD=&St$;%6y?iv7L+C%P0%PjV?@P}hKJ?_$LBMJ~h
zm2hzFCRj)}d%z!!9X+SJCz@tFV`0lCq5|ggm={;~bfz~Z1A2i8A3h~C;tBaD#%dzL
zw0NcP(Q`Jh;ck);K5CHV>L9Kw=#~SAr;AT6#FIqFo;qsfur8#2V4cLdsf|CbCa(Lj
zTMmpp-B6auFjiCYHp}sdTkjZfYvM+)Cd+%nGuk_nE+iX$!Z!#*??{&m8Q((+BB)TT
zU%p)529>Xfu=j-*CzaEGf98Er3q0oYL_irdEpK?Tu*z<}^pSi~_5o$5zHf(Tf4~#b
z(&}ygV}2Xc{{QdTh!n!dM&Z}VmO5)(JzIRy=;?+d%*BoIC==D=I#zUqf&*SlM>HK0
zvR8v~XQ&uUM84m<_hR;037k9a=h<2(bk(sx8ftb6D2)^032fgM`T*$xBGX;QF)?={
zYi5d9N?Ned+(!nB#TA{+G6s`OrYg}2$Y2E^>>+Y$CJMAXS)@S{Gd#6amC0tJmY(W?
z1Od-FiM|&8>wJ~!{3TB~Jd8RjC3XN>0qT`oM7U%w{2|Wt5+w)y-wghJzsCg}lc1|X
zELummh3;sIv6EB~A`G|{hpm9>1GA~D7y*KAS<qC8SBcIdUL?4}x-ra`mx{142^+E#
z>m-z5Vg;rypA4-cLkU?YyI&`eK^7C_u}on;#tZ0iS81djbbwf(@M&%`zYhnjoweTo
z4<nBWyenf6Bf@{5R6SFxCrEQJ;r&(l1zL$fZbZEzRW)f$gCRJn$nH<dgYlm7h>Tsx
zIfbX~2j*WM$qqc6R`zfVbJ&4?z%IMwcn!jW7>v*E@DP$YMI>TgMz0t~FWD1IJ5+=r
zhhO6NCWD|~uga&BCP~Up1xpl6B3H@qs}P>M8KGTBDyy(_8#p@OIYi}T)FCu5jXHdO
zz+Ovv_y}pywYRtLK5YfCkUlw3L<rHI;c7_rq)$gFgmj^qqDBw7kWX3&W7z|RA)zzq
z`d2^&+2yFww+9nE2G2{ouZHnLgGCzqiMxLyP2$mJMti&^GAn<woth8eq|oj=Gv-Tl
zer3HSLopc7unvBqj)5^`UE4;78k5RL2kWyq6{U)~+@aM5>F1WYp86~5AX9%p0=*<v
zHSt!E39rP6UHjO~$*mYs8`Cq}i2sCC+OS=RLt27{OpIRS%1P-r1FKaqt}?U8K?Mue
zc3Gz6(Qk||Iaf*F51E99F1eTJ5gE@|)v<)E1gTL$9#IWsPnTt1#gcAA1U(9hh44~D
z<)J!DNWDv1AQ%A)-JTI;Xc8T*XE^8^Y13f39)@Cd6(kI4CU{A@sW3oj6Y=v-zY(8a
zjmd+y#xW{ff$^&~wYcq$f0l{L$ZEqi1QC}HkyA+qL{beuBJm(0;TzIUH#6ZiBTc8o
z1`sAi4qaVI+q+{)w*WD^5doR>i+C6<9$LU?FH^>p0?agf95!X;14f^;Ea6mQ4T=CJ
zLh^)FchCo5$Qd@d6~7nTL%cA_yn>P@(EN$onMh|aOcGJ|A)b7cZd?fhQ%<8x@_4jh
zhnn&Fsk34m0*d@IL;jv8D~_FjkPu@#1(~hV%II}HX8X32VJI*<r{%|akl7bx!0%YT
zYIdVm<{j03hsBvXQUPSdHH{3JgDny^K3d#V*~j05*Ox)N9jyQ@uu+ONW}+kO(8YF|
z^2Xzudbx)p9|||=eatQsgvLbtdw%x^p7WzpJo9GI!c^UzQQtdkP|V3b@G-Wp3rx3m
z7_8GW3T@67vR7L>=mW8sH)I|H83~tO>LCTQpxaPgeE68+#a=uJ!j`b?`7?VVOE|O0
z-09aR9G-BZu@`Ogo6#>DIeS@@?ub<C-hD#62$69B(nQXdv*9Z4ClcmM59R&=S_4FU
znI3ls09X${<`RySZoJSR(oSV7n+)e615yZ|Plz_C-p*uQ3AfZ+`9mCp$!lb;HiiZh
z-6?UHA4c>F8FaX?5pjBk*hKWD^h0frEYe*<8XT0AtHF;*dvxw|!Sq05{!ZbkD{*#@
zO5mjpBEgP0@21~MPZQ_Z0YGZ95d6XR_Pwg(2jQF1tBst)d4wQljOGL~ahQzs=1rFH
zPQt9D9rLQOR55-%)v2WF=}y}68xXgN8PbnNt{;Z#(N^@Hx@oI!;9V(|&QTZ7{^nEX
zJM&3kY8n14RmPxc5$4troBF%;2f#qK0fy{nO~Mu2so8Ebalah~UgCr!v%`sB6cJ-P
zKymlM&1GLA-je3J0n$=IM#@znMbk(+DFOM2zG#zxrk~Na-&psh1(+`*u?eF8LI`(9
z|8$J2(FUB910irNs}c)<O-AQK;vK0MC7=}NmW>Yk;z40&HCHmU1=0xoQM$e3B1(={
z*`%e<vp6#|k{>PTMuz^7k!7oFU#upLSe~3hBNG7u;W+Yl1Pu6vQRAF(=7PywKsuR4
z0pD#a1k(D}_9@QTB&$OWTX+q&DBW>da$$Y;6DNE7p$*MF9UU(S<4sCH^snE76*hd3
zlKc36ss(U_Z^irupc8V$$mjwRjV5uhO3-BIk4VaM+#H`troIud0f-nid6i^Vs`(#g
zHxmpSZ#3q@0a%I*XZ*O1^yZM|<HL5Ptu1<hhNwA8;#~KTd?G1_2=$IAU3Hj!e9Gb&
zCKyMON$v`heR-K4hv`nL+?@;(Il$z}pj8jXur{)bC<_l>Lq=_*T_6l&$2Sut0inID
zlUZCnK3J48^hPAedztI)J8zPg)@2AY%~Cx4dJ2q0vBG3t6)|O#<}$CLy<U~A4JDq9
zjxVmRCUYD}Ul*CmPVg)7n4%zUjQuonn4G@>OAYYvFUd|P!<gZi@-VEmRE;Oi$9B1M
z=C=?#8`t)>E)IL69dylB(w9hl8RQ6(V1yxn<v0)X#hm{}&Q=)l09_EVc|ojf8HTU#
zksd}eYOlaDjGA(YrcPkAmjy^I*ST>y*#=Isj-!tkcMFlBM(|9oBhD3KfE;`0+m1N*
z0&ad{izO+C^y`o4DUW}aqxP|K{IJv&G}}2Un4#oDh&bmo+S>?i0(y%g5thkNE%#o#
zu=*Zl`+SU5`P4hLH%id0FePYM7=Q5sLJ80KvH1*UEd@Got6L$Z|EL_<nd%;*HcZsd
z<T#Jb^nnM`9veyL6q&V)TAmE-8ez^js*Jz#eF%dEnJp@=yU-&Fdda)zSBe;uzcGm6
zq=Xum1_N_lr$X{%w4evdJ5<|?3Q!nJ#`ToQElR#C+;kH)f%29=3c1$l4ANG~YRMH8
zZiun8^0+qzr*tU}=~_Ys_fOk=xo$tPU!VmbZs?TgqiWC^fopuWe@&doWI7|JGRe`&
ze8l}>D#`>tX$uQHYE@f6)c$pJz_sMO$(ScYctU~jcg+s*hsz|p%TkRo;IOy~;J6*u
zSz%r^Z_2ZZjNBxvMX(U2D7cIN>XL_om1^}M51EXtLL)+DCz~@yjyTjLv?flkhn-^P
z2K)%?Tza_Esh-@_fzVMl(e6)&xA**VG1~gU`-Ft@v=ml85|W77t|4uvi8GadM0@7U
zDlem0PCfgO9P{gKenv?L&#a{{?P5hZ$=2`GliY1!mt1?f;j7fiylVXti*GE-rR@&a
zG?cX_ZQ`pPk}1A+zv1kqA3jh0?A)&glLyj%Zk(9PJCm~^V4=LHp{9zsS4a^**p3qr
zV&_!K^(<+ZxyK0l_16XTLwok@c{ahD*rnvuYiJEq+-tuiIxGL(HJaG!XE$YT?N|T)
z`!c8mIMWhUH8oMu(fdtIOe8jKx=wrW@S%jH<UVZc7501TUfsNZEPiVDV2$&!`=>(%
z)oPU5zfCJkaWZOJukCHnc&sMxR3lg5-fz57E+p@A*iR$i7@k|&pOm!C#LTRy)7}CA
z_4w#F`hL;pqg>)$(-zN&eByle_?BDy3kwU&K`%G}gLpo^=H%cIk(6|#d^l9}+9w}>
zBq1SDj#GR+Fffutgzr>N1qB72yCWm`a82O;b$%=sE6Ju&5zLtm6zV4{%%dVBX>_F1
z8i4L0Y`UK&6SuMaz8V@?x40F_zOb}3pxCq`+hbx+i}TKHxRq<%kht3k2?vqdS9|?U
z)voO_%^Z+%h%?uI%J`wvj<W05uV3ZveP=v>x%t_hJH>qW=KG4*KzMK%?$V~0Bk5oF
z^Sg(taQD#1Z%=6^I?BZ687!P5y=A|Gf`X!b$5qYH9T8(=&dP8zChBd%6xLS=5wQR+
z=CBj3UN56`=Iu{pteB^-!O+xg2gMLq&~O(gchy%{KLl}R0XgeeUteJ#X4fFU#WC}o
z{3zxvVBMCVoe|jLZu(eZ`x<K}r_=_U)WzZ|(E|gv{s95xdDo{{AB>6{H4O=JoD4V<
zDtM>1$5CO`Vl1;Ik^&~%2VB2-bHn4>O<|?sa7f^Sj9B*(pd|{cK05J^mouYdZXU5!
zMrO&fW$Q2f_I0PL?<h(HbG$4vF0KY0(hm_98{>OU_d0kd=;-JyU3F1eN=g&svhmjj
zJV|q2d4v0z$E}af?)+QbZh<}MrJ0KjxV9w&md(ic_$@8>+7Q7GpE+|Tr!Nv<ce~2n
zf|CoBrZvu-=@(K{Ll)^mXYi*6Ok3N;6fCjLy3~*60Snzh+=zq)iO=UBjJh`(7`($J
zQC(gAuFm`|f!j;Zp2bKN(yVP^X(<w~VQTtt!GZ;2*FH}D>Bfzv%Ba$g*T1%sgJ;8F
z>Oz7@N!H>m)tVuS*z4;|OieFzCoR!1yx4I`jGg<*X~mGb$7a5ZMHTPknZkX=2$Z$F
z0UyUfOcJ!$%lS!2Zck}(&MSnn-8fxGTwKzzS6lj>TL$^tJjU%G+`oScuKx@ef71Eh
ztDm9os@1lj)pmF0R|2`4tsr>TWx1tlhN;8=M5?3ZuB*Gd5^%i5UNKMek>KPqELYF#
z1U0yBV^AU}x$F?bi#p*7EQbW1eEQ9|CMQpxdiqn}HMRSrin)53>Fr$Srw%`7cg%`d
z(6r{so))*Fv@N(b()P?wl_Edi{r}asm)D@u!mh`^k+HEp)D(l|?d!gqHLlJq`{d)w
zii$6Lh{x{OXG6218@@lcbuRWz(xvy;F7Tbtdj}(4cHsSAarDQxxdPbwo0eX}zfwjS
zG&;Q9NS;A0r?+o&892FFKk0i+a|meS<s7fa97fXrq^_lfAaEEP3v**+9qjFYQZ~ik
zR?v47<ByNmJK`xLf)^GQ9sc2myU{vPUwrWeh>xvsV!AyEWL8&H+|yE>!g{;dZeNwC
zACm#g<Tiv?5`)mndma<7zIftAtOc*0E@$IQt^fil8FxcxNg1;rp^sJ{Z(#o-1%G?Y
zP4#{IOyq*Jjf`S|oAp$};ux6-cU_p`MGk#>7{hBy`<GvSVcn06lqiOy`ebIQ>Wm>i
z9NT5lgczoLZVD=1>fTscc^{!xR$l&MqYc{D#@m9JPg7t^*g5oy>J?r7V~CQ|;^n>S
z<p^EF@DxWzM36WsyrNf~Rm0WR(W#ENaDgv7*_}VIE3YwV?niULYVFD+4e-n7Q>@FD
zj}207{2Og*KqlJr2Tb@=)6JiK`pq{rIXW0za<sO#78iBo;K6ItlY?4Qs2saGJFnIE
zRAY|E8oHv_G}{xUn3wj&{CBSa=a;*O1O*{nOJG|UAa9_BV8As?5z!C>8C>#G;5NWD
zUZW|5XyVc}AuA6|Og$MLL``*y$H@{LSp_01ckJnB#0Q!yFuwTJ7V~nN?6z&EU{al`
zBi*}*_QKgJo|9=eFe4$(2=m=oetv6>c;_eJb{evjdHtCXEWTwJFZMOv6>U1nU};w8
zfQVBp4plZ_4dE7w-ke_KVt`M$tTnqoFEnE~^CCR8awsO}iU3nSA^(Bh5e1K$5o-vA
z#a=@-Cnu*Z4dfb<LE!(Kf_D51FHIlQBJSS(`Yo9OacpumwcRfqgGWX%mMbzDtC#RY
zuH!mC`o@hLS@%Kyt$Di=ZD^^@11N({w%+=>j$@H*fjej2XR~)a2oJZ!&__kLk!ZFt
z^BMU&nEp2Y37J;xz53@XS42-6@s_h$CsXV5dh;!k)mf9CUe9DFF=*{cE9Z{b*T@m!
zfq^Syjy~Sw@9&SlQS02+ty}SGlhpcT>-rQCA6%k${}pP|;PM~ujNG`Aq-#wZ*9`k6
z_+10cBqTJ(8fQuP=HDwXKNQ2rF;)rFlFpe-L=#giDVk~OWOX*Ip>A@~*HThaX@&*{
zO5IbpicQz9Th|4rt?rpK323L$*3;WS*MDq!WrtX4yf3+dSF`bH`7`{DETV=SBx@mM
z*S+8F-+vjw{Kq&|gz?WCRdL6A#Hf9F>@%GxZ7mi4eOhNjx*fD5->>Vk6B7@?d%8$u
zk&~n2ya0fP8KXP+mE|&2{O~@Dsih)MT7i<yhr6oAaUc+h)^v_<&%*2hMW6soi%>91
zw_W=>J1ffwZVeq**9@Ok3U^UQ9(!Hi*cj8*Wq|{7Y@)KV@*7uOy!BY>?}1G%;QICZ
zSZOe2|7V_)LV|)80h=j|x5dT9zyH1s>|_H&T=bg-a8tmklP4wPHiBGL3Q1f%%N8tf
z07mO&;Fc=oTkn7;zg+B-wKf5^emA@YmT79+Z`)>o4rO$ahj`opxDRm3_19P5-Q7KP
z?p)p7clChvIgp%wdMVI)V3lz*XWIj_w9S#gLSxUKxb@%O-(P>{PRw24l8CO(&WVQ~
zUI4BnD*5pt(bUXL3z+V@-h&pQIHz*;e7OQCqk++3=*SPgD-I}QpaB`%A3n?#{~0U%
VYBt?jb^*LKz|+;wWt~$(6957zeW?Hd

diff --git a/reference/plot-16.png b/reference/plot-16.png
deleted file mode 100644
index 231b81794fc81297088edc9e1db6be87f0f1fc78..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 19541
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
R`Ga(J_@wQLqJMc_`#<$tZ;Ai_

diff --git a/reference/plot-17.png b/reference/plot-17.png
deleted file mode 100644
index 8c67ffa28f6163d933041f4ae892d70cc4de752d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 29791
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

diff --git a/reference/plot-2.png b/reference/plot-2.png
deleted file mode 100644
index babfa78902b6338461d31fdf7259356f555aed16..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27150
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

diff --git a/reference/plot-3.png b/reference/plot-3.png
deleted file mode 100644
index c1d59d47dfa54da56c3a9a28d04d124a6af55459..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 27930
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
MXZlCk@6HeY6|w&!CIA2c

diff --git a/reference/plot-4.png b/reference/plot-4.png
deleted file mode 100644
index 88cbc6652ac3c2136af0fca4f01a1730225942aa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 41319
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%0AHzmD?-{`#UgM1
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
Ta^sDidSpycL}2^L`0M`xjR3z$

diff --git a/reference/plot-5.png b/reference/plot-5.png
deleted file mode 100644
index f0d9422b3e9ffafa8109313a25a22d4678f379b5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 40810
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

diff --git a/reference/plot-6.png b/reference/plot-6.png
deleted file mode 100644
index 161e1fc1f3233cae12e6608fcb035512fd275661..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 40161
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
JF6*2UngEPDrlkM?

diff --git a/reference/plot-7.png b/reference/plot-7.png
deleted file mode 100644
index 1611fd3e5de59fd7a8e44ac4c8e3586020636377..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 24961
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
D=YN7!

diff --git a/reference/plot-8.png b/reference/plot-8.png
deleted file mode 100644
index b12dff2451ba12aab96415bd97ec7df09c53533c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 26216
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
VS!%tROsaVjVplK5oxlD2{{U~G`@aAH

diff --git a/reference/plot-9.png b/reference/plot-9.png
deleted file mode 100644
index 61078253070c7827804b0d5613bc4ecded22d416..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 29217
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
C+Q*{+

diff --git a/reference/plot.html b/reference/plot.html
index 1b1a97efb..6ef3a7f65 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
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -57,17 +57,15 @@ Especially the scale_*_mic() functions are relevant wrappers to plot MIC values
 
     <div class="section level2">
     <h2 id="ref-usage">Usage<a class="anchor" aria-label="anchor" href="#ref-usage"></a></h2>
-    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">scale_x_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>, drop <span class="op">=</span> <span class="cn">FALSE</span>,</span>
-<span>  <span class="va">...</span><span class="op">)</span></span>
+    <div class="sourceCode"><pre class="sourceCode r"><code><span><span class="fu">scale_x_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>, <span class="va">...</span><span class="op">)</span></span>
 <span></span>
-<span><span class="fu">scale_y_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>, drop <span class="op">=</span> <span class="cn">FALSE</span>,</span>
-<span>  <span class="va">...</span><span class="op">)</span></span>
+<span><span class="fu">scale_y_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>, <span class="va">...</span><span class="op">)</span></span>
 <span></span>
-<span><span class="fu">scale_colour_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>,</span>
-<span>  drop <span class="op">=</span> <span class="cn">FALSE</span>, <span class="va">...</span><span class="op">)</span></span>
+<span><span class="fu">scale_colour_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>, <span class="va">...</span><span class="op">)</span></span>
 <span></span>
-<span><span class="fu">scale_fill_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>, drop <span class="op">=</span> <span class="cn">FALSE</span>,</span>
-<span>  <span class="va">...</span><span class="op">)</span></span>
+<span><span class="fu">scale_color_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>, <span class="va">...</span><span class="op">)</span></span>
+<span></span>
+<span><span class="fu">scale_fill_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"edges"</span>, mic_range <span class="op">=</span> <span class="cn">NULL</span>, <span class="va">...</span><span class="op">)</span></span>
 <span></span>
 <span><span class="co"># S3 method for class 'mic'</span></span>
 <span><span class="fu">plot</span><span class="op">(</span><span class="va">x</span>, mo <span class="op">=</span> <span class="cn">NULL</span>, ab <span class="op">=</span> <span class="cn">NULL</span>, guideline <span class="op">=</span> <span class="st">"EUCAST"</span>,</span>
@@ -154,11 +152,7 @@ Especially the scale_*_mic() functions are relevant wrappers to plot MIC values
 
 
 <dt id="arg-mic-range">mic_range<a class="anchor" aria-label="anchor" href="#arg-mic-range"></a></dt>
-<dd><p>a manual range to limit the MIC values, e.g., <code>mic_range = c(0.001, 32)</code>. Use <code>NA</code> to set no limit on one side, e.g., <code>mic_range = c(NA, 32)</code>.</p></dd>
-
-
-<dt id="arg-drop">drop<a class="anchor" aria-label="anchor" href="#arg-drop"></a></dt>
-<dd><p>a <a href="https://rdrr.io/r/base/logical.html" class="external-link">logical</a> to remove intermediate MIC values, defaults to <code>FALSE</code></p></dd>
+<dd><p>a manual range to limit the MIC values, e.g., <code>mic_range = c(0.001, 32)</code>. Use <code>NA</code> to prevent a limit on one side, e.g., <code>mic_range = c(NA, 32)</code>.</p></dd>
 
 
 <dt id="arg--">...<a class="anchor" aria-label="anchor" href="#arg--"></a></dt>
@@ -277,98 +271,7 @@ Especially the scale_*_mic() functions are relevant wrappers to plot MIC values
 
     <div class="section level2">
     <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
-    <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="va">some_mic_values</span> <span class="op">&lt;-</span> <span class="fu"><a href="random.html">random_mic</a></span><span class="op">(</span>size <span class="op">=</span> <span class="fl">100</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="va">some_disk_values</span> <span class="op">&lt;-</span> <span class="fu"><a href="random.html">random_disk</a></span><span class="op">(</span>size <span class="op">=</span> <span class="fl">100</span>, mo <span class="op">=</span> <span class="st">"Escherichia coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="va">some_sir_values</span> <span class="op">&lt;-</span> <span class="fu"><a href="random.html">random_sir</a></span><span class="op">(</span><span class="fl">50</span>, prob_SIR <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.55</span>, <span class="fl">0.05</span>, <span class="fl">0.30</span><span class="op">)</span><span class="op">)</span></span></span>
-<span class="r-in"><span></span></span>
-<span class="r-in"><span><span class="fu">plot</span><span class="op">(</span><span class="va">some_mic_values</span><span class="op">)</span></span></span>
-<span class="r-plt img"><img src="plot-1.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="fu">plot</span><span class="op">(</span><span class="va">some_disk_values</span><span class="op">)</span></span></span>
-<span class="r-plt img"><img src="plot-2.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="fu">plot</span><span class="op">(</span><span class="va">some_sir_values</span><span class="op">)</span></span></span>
-<span class="r-plt img"><img src="plot-3.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span></span></span>
-<span class="r-in"><span><span class="co"># when providing the microorganism and antibiotic, colours will show interpretations:</span></span></span>
-<span class="r-in"><span><span class="fu">plot</span><span class="op">(</span><span class="va">some_mic_values</span>, mo <span class="op">=</span> <span class="st">"S. aureus"</span>, ab <span class="op">=</span> <span class="st">"ampicillin"</span><span class="op">)</span></span></span>
-<span class="r-plt img"><img src="plot-4.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="fu">plot</span><span class="op">(</span><span class="va">some_disk_values</span>, mo <span class="op">=</span> <span class="st">"Escherichia coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span><span class="op">)</span></span></span>
-<span class="r-plt img"><img src="plot-5.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="fu">plot</span><span class="op">(</span><span class="va">some_disk_values</span>, mo <span class="op">=</span> <span class="st">"Escherichia coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span>, language <span class="op">=</span> <span class="st">"nl"</span><span class="op">)</span></span></span>
-<span class="r-plt img"><img src="plot-6.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span></span></span>
-<span class="r-in"><span></span></span>
-<span class="r-in"><span><span class="co"># Plotting using scale_x_mic() ---------------------------------------------</span></span></span>
-<span class="r-in"><span><span class="co"># \donttest{</span></span></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="va">mic_plot</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>mics <span class="op">=</span> <span class="fu"><a href="as.mic.html">as.mic</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.25</span>, <span class="st">"&lt;=4"</span>, <span class="fl">4</span>, <span class="fl">8</span>, <span class="fl">32</span>, <span class="st">"&gt;=32"</span><span class="op">)</span><span class="op">)</span>,</span></span>
-<span class="r-in"><span>                                counts <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fl">1</span>, <span class="fl">2</span>, <span class="fl">2</span>, <span class="fl">3</span>, <span class="fl">3</span><span class="op">)</span><span class="op">)</span>,</span></span>
-<span class="r-in"><span>                     <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span><span class="va">mics</span>, <span class="va">counts</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_bar.html" class="external-link">geom_col</a></span><span class="op">(</span><span class="op">)</span></span></span>
-<span class="r-in"><span>  <span class="va">mic_plot</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"without scale_x_mic()"</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-7.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="va">mic_plot</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu">scale_x_mic</span><span class="op">(</span><span class="op">)</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"with scale_x_mic()"</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-8.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="va">mic_plot</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu">scale_x_mic</span><span class="op">(</span>keep_operators <span class="op">=</span> <span class="st">"all"</span><span class="op">)</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"with scale_x_mic() keeping all operators"</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-9.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="va">mic_plot</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu">scale_x_mic</span><span class="op">(</span>mic_range <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fl">16</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"with scale_x_mic() using a manual 'within' range"</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-10.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="va">mic_plot</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu">scale_x_mic</span><span class="op">(</span>mic_range <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.032</span>, <span class="fl">256</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/labs.html" class="external-link">labs</a></span><span class="op">(</span>title <span class="op">=</span> <span class="st">"with scale_x_mic() using a manual 'outside' range"</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-11.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span></span></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot</a></span><span class="op">(</span><span class="va">some_mic_values</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-12.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot</a></span><span class="op">(</span><span class="va">some_disk_values</span>, mo <span class="op">=</span> <span class="st">"Escherichia coli"</span>, ab <span class="op">=</span> <span class="st">"cipro"</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-13.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/autoplot.html" class="external-link">autoplot</a></span><span class="op">(</span><span class="va">some_sir_values</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-14.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span></span></span>
-<span class="r-in"><span><span class="co"># Plotting using scale_y_percent() -----------------------------------------</span></span></span>
-<span class="r-in"><span><span class="kw">if</span> <span class="op">(</span><span class="kw"><a href="https://rdrr.io/r/base/library.html" class="external-link">require</a></span><span class="op">(</span><span class="st"><a href="https://ggplot2.tidyverse.org" class="external-link">"ggplot2"</a></span><span class="op">)</span><span class="op">)</span> <span class="op">{</span></span></span>
-<span class="r-in"><span>  <span class="va">p</span> <span class="op">&lt;-</span> <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/ggplot.html" class="external-link">ggplot</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/data.frame.html" class="external-link">data.frame</a></span><span class="op">(</span>mics <span class="op">=</span> <span class="fu"><a href="as.mic.html">as.mic</a></span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0.25</span>, <span class="st">"&lt;=4"</span>, <span class="fl">4</span>, <span class="fl">8</span>, <span class="fl">32</span>, <span class="st">"&gt;=32"</span><span class="op">)</span><span class="op">)</span>,</span></span>
-<span class="r-in"><span>                               counts <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">1</span>, <span class="fl">1</span>, <span class="fl">2</span>, <span class="fl">2</span>, <span class="fl">3</span>, <span class="fl">3</span><span class="op">)</span><span class="op">)</span>,</span></span>
-<span class="r-in"><span>                         <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/aes.html" class="external-link">aes</a></span><span class="op">(</span><span class="va">mics</span>, <span class="va">counts</span> <span class="op">/</span> <span class="fu"><a href="https://rdrr.io/r/base/sum.html" class="external-link">sum</a></span><span class="op">(</span><span class="va">counts</span><span class="op">)</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu"><a href="https://ggplot2.tidyverse.org/reference/geom_bar.html" class="external-link">geom_col</a></span><span class="op">(</span><span class="op">)</span></span></span>
-<span class="r-in"><span>  <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p</span><span class="op">)</span></span></span>
-<span class="r-in"><span>  </span></span>
-<span class="r-in"><span>  <span class="va">p2</span> <span class="op">&lt;-</span> <span class="va">p</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu">scale_y_percent</span><span class="op">(</span><span class="op">)</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu">theme_sir</span><span class="op">(</span><span class="op">)</span></span></span>
-<span class="r-in"><span>  <span class="fu"><a href="https://rdrr.io/r/base/print.html" class="external-link">print</a></span><span class="op">(</span><span class="va">p2</span><span class="op">)</span></span></span>
-<span class="r-in"><span>  </span></span>
-<span class="r-in"><span>  <span class="va">p</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu">scale_y_percent</span><span class="op">(</span>breaks <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/seq.html" class="external-link">seq</a></span><span class="op">(</span>from <span class="op">=</span> <span class="fl">0</span>, to <span class="op">=</span> <span class="fl">1</span>, by <span class="op">=</span> <span class="fl">0.1</span><span class="op">)</span>,</span></span>
-<span class="r-in"><span>                    limits <span class="op">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html" class="external-link">c</a></span><span class="op">(</span><span class="fl">0</span>, <span class="fl">1</span><span class="op">)</span><span class="op">)</span> <span class="op">+</span></span></span>
-<span class="r-in"><span>    <span class="fu">theme_sir</span><span class="op">(</span><span class="op">)</span></span></span>
-<span class="r-in"><span><span class="op">}</span></span></span>
-<span class="r-plt img"><img src="plot-15.png" alt="" width="700" height="433"></span>
-<span class="r-plt img"><img src="plot-16.png" alt="" width="700" height="433"></span>
-<span class="r-plt img"><img src="plot-17.png" alt="" width="700" height="433"></span>
-<span class="r-in"><span><span class="co"># }</span></span></span>
-</code></pre></div>
+
     </div>
   </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
     </nav></aside></div>
diff --git a/reference/proportion.html b/reference/proportion.html
index c1b2c0ad6..8a9ddb0a9 100644
--- a/reference/proportion.html
+++ b/reference/proportion.html
@@ -9,7 +9,7 @@ resistance() should be used to calculate resistance, susceptibility() should be
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/random.html b/reference/random.html
index 0fcee21a1..da5e9cd2d 100644
--- a/reference/random.html
+++ b/reference/random.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -99,42 +99,43 @@
     <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
     <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu">random_mic</span><span class="op">(</span><span class="fl">25</span><span class="op">)</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'mic'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 64     4      0.25   0.125  0.125  4      0.001  0.0625 32     0.025 </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> [11] 16     2      2      4      16     0.0625 0.001  0.5    0.25   &gt;=256 </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> [21] 32     0.25   2      2      0.125 </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 64    0.001 &gt;=256 0.001 0.005 8     8     1     16    0.002 &gt;=256 16   </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> [13] 4     64    0.002 0.001 0.25  64    0.025 64    0.025 1     0.001 16   </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> [25] 0.5  </span>
 <span class="r-in"><span><span class="fu">random_disk</span><span class="op">(</span><span class="fl">25</span><span class="op">)</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'disk'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1]  6 44 14 31  8 38 41 16 35 39 22 46 25 47 11 44 26 20 17 35 37 22 32 43 14</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 10 42 50 49 46 44 48 49 32 49 20 30 44 13 10 34 26 26 26 47 19 38 23 41 41</span>
 <span class="r-in"><span><span class="fu">random_sir</span><span class="op">(</span><span class="fl">25</span><span class="op">)</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'sir'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] I R I I S S S R R I I S S R R I I I I I I S R I R</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] R S S I I I I S S I S S R S S R S S R S R R R I I</span>
 <span class="r-in"><span></span></span>
 <span class="r-in"><span><span class="co"># \donttest{</span></span></span>
 <span class="r-in"><span><span class="co"># make the random generation more realistic by setting a bug and/or drug:</span></span></span>
 <span class="r-in"><span><span class="fu">random_mic</span><span class="op">(</span><span class="fl">25</span>, <span class="st">"Klebsiella pneumoniae"</span><span class="op">)</span> <span class="co"># range 0.0625-64</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'mic'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 16      0.25    &gt;=64    32      2       4       0.01    1       1      </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> [10] 0.0625  32      0.0625  0.025   &lt;=0.001 1       4       &gt;=64    0.25   </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> [19] 0.5     4       0.005   8       1       4       0.002  </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 0.125  0.5    128    64     8      0.0625 0.125  &gt;=256  4      8     </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> [11] 0.125  2      32     2      0.0625 0.125  64     0.025  64     8     </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> [21] 0.002  8      0.025  1      4     </span>
 <span class="r-in"><span><span class="fu">random_mic</span><span class="op">(</span><span class="fl">25</span>, <span class="st">"Klebsiella pneumoniae"</span>, <span class="st">"meropenem"</span><span class="op">)</span> <span class="co"># range 0.0625-16</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'mic'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 4    16   8    8    2    32   4    8    16   4    16   &lt;=1  16   &gt;=64 16  </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> [16] &gt;=64 8    &gt;=64 4    &gt;=64 &lt;=1  4    4    &gt;=64 4   </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 8    16   4    8    2    16   16   2    0.5  1    8    8    16   1    1   </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> [16] 4    2    8    8    2    8    0.25 2    0.5  0.5 </span>
 <span class="r-in"><span><span class="fu">random_mic</span><span class="op">(</span><span class="fl">25</span>, <span class="st">"Streptococcus pneumoniae"</span>, <span class="st">"meropenem"</span><span class="op">)</span> <span class="co"># range 0.0625-4</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'mic'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 0.25    1       4       1       1       0.25    0.0625  0.25    0.0625 </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> [10] 0.5     &lt;=0.025 &lt;=0.025 0.5     1       &lt;=0.025 0.25    4       0.5    </span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> [19] 1       0.125   0.5     1       1       1       &lt;=0.025</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] &lt;=0.0625 0.25     8        2        0.25     1        4        2       </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [9] 0.25     &lt;=0.0625 0.5      8        0.25     0.5      4        0.125   </span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> [17] 2        0.25     4        4        0.25     &lt;=0.0625 8        &lt;=0.0625</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> [25] &lt;=0.0625</span>
 <span class="r-in"><span></span></span>
 <span class="r-in"><span><span class="fu">random_disk</span><span class="op">(</span><span class="fl">25</span>, <span class="st">"Klebsiella pneumoniae"</span><span class="op">)</span> <span class="co"># range 8-50</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'disk'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 46 48 26 34 22 36 47 21 21 45 46  8 11 39 17 17 45 19 44 37 21 25 16 48 44</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 40 43 38 39 15 49 39 10 47 43 30 38 15 26 16 24 32 16 36 47 35 11 45 42 41</span>
 <span class="r-in"><span><span class="fu">random_disk</span><span class="op">(</span><span class="fl">25</span>, <span class="st">"Klebsiella pneumoniae"</span>, <span class="st">"ampicillin"</span><span class="op">)</span> <span class="co"># range 11-17</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'disk'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 13 13 14 14 12 12 12 15 17 11 11 15 17 16 15 15 16 12 11 12 15 17 13 14 11</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 11 16 14 13 11 11 16 17 14 11 15 16 17 12 17 16 11 11 12 13 14 12 13 11 11</span>
 <span class="r-in"><span><span class="fu">random_disk</span><span class="op">(</span><span class="fl">25</span>, <span class="st">"Streptococcus pneumoniae"</span>, <span class="st">"ampicillin"</span><span class="op">)</span> <span class="co"># range 12-27</span></span></span>
 <span class="r-out co"><span class="r-pr">#&gt;</span> Class 'disk'</span>
-<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 20 25 26 15 23 20 26 22 20 16 26 17 21 17 23 17 22 26 27 15 17 25 21 18 15</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span>  [1] 19 25 18 20 25 16 15 25 19 25 27 19 25 20 23 21 17 19 25 25 22 24 17 22 21</span>
 <span class="r-in"><span><span class="co"># }</span></span></span>
 </code></pre></div>
     </div>
diff --git a/reference/resistance_predict.html b/reference/resistance_predict.html
index ae7ed225c..600c4de1c 100644
--- a/reference/resistance_predict.html
+++ b/reference/resistance_predict.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/scale_color_mic.html b/reference/scale_color_mic.html
new file mode 100644
index 000000000..934dc99fb
--- /dev/null
+++ b/reference/scale_color_mic.html
@@ -0,0 +1,8 @@
+<html>
+  <head>
+    <meta http-equiv="refresh" content="0;URL=https://msberends.github.io/AMR/reference/plot.html" />
+    <meta name="robots" content="noindex">
+    <link rel="canonical" href="https://msberends.github.io/AMR/reference/plot.html">
+  </head>
+</html>
+
diff --git a/reference/skewness.html b/reference/skewness.html
index 1af5b8d5e..5d6af1c90 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
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
@@ -89,7 +89,7 @@ When negative ('left-skewed'): the left tail is longer; the mass of the distribu
     <div class="section level2">
     <h2 id="ref-examples">Examples<a class="anchor" aria-label="anchor" href="#ref-examples"></a></h2>
     <div class="sourceCode"><pre class="sourceCode r"><code><span class="r-in"><span><span class="fu">skewness</span><span class="op">(</span><span class="fu"><a href="https://rdrr.io/r/stats/Uniform.html" class="external-link">runif</a></span><span class="op">(</span><span class="fl">1000</span><span class="op">)</span><span class="op">)</span></span></span>
-<span class="r-out co"><span class="r-pr">#&gt;</span> [1] -0.005078444</span>
+<span class="r-out co"><span class="r-pr">#&gt;</span> [1] 0.03714722</span>
 </code></pre></div>
     </div>
   </main><aside class="col-md-3"><nav id="toc" aria-label="Table of contents"><h2>On this page</h2>
diff --git a/reference/top_n_microorganisms.html b/reference/top_n_microorganisms.html
index ce918531c..7aeb5790c 100644
--- a/reference/top_n_microorganisms.html
+++ b/reference/top_n_microorganisms.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/reference/translate.html b/reference/translate.html
index cb33cf108..ca68e7656 100644
--- a/reference/translate.html
+++ b/reference/translate.html
@@ -7,7 +7,7 @@
 
     <a class="navbar-brand me-2" href="../index.html">AMR (for R)</a>
 
-    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9143</small>
+    <small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">2.1.1.9144</small>
 
 
     <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
diff --git a/search.json b/search.json
index c48b76851..c2d66a46e 100644
--- a/search.json
+++ b/search.json
@@ -1 +1 @@
-[{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"How to conduct AMR data analysis","text":"Conducting AMR data analysis unfortunately requires -depth knowledge different scientific fields, makes hard right. least, requires: Good questions (always start !) reliable data thorough understanding (clinical) epidemiology, understand clinical epidemiological relevance possible bias results thorough understanding (clinical) microbiology/infectious diseases, understand microorganisms causal infections implications pharmaceutical treatment, well understanding intrinsic acquired microbial resistance Experience data analysis microbiological tests results, understand determination limitations MIC values interpretations SIR values Availability biological taxonomy microorganisms probably normalisation factors pharmaceuticals, defined daily doses (DDD) Available (inter-)national guidelines, profound methods apply course, instantly provide knowledge experience. AMR package, aimed providing (1) tools simplify antimicrobial resistance data cleaning, transformation analysis, (2) methods easily incorporate international guidelines (3) scientifically reliable reference data, including requirements mentioned . AMR package enables standardised reproducible AMR data analysis, application evidence-based rules, determination first isolates, translation various codes microorganisms antimicrobial agents, determination (multi-drug) resistant microorganisms, calculation antimicrobial resistance, prevalence future trends.","code":""},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"preparation","dir":"Articles","previous_headings":"","what":"Preparation","title":"How to conduct AMR data analysis","text":"tutorial, create fake demonstration data work . can skip Cleaning data already data ready. start analysis, try make structure data generally look like :","code":""},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"needed-r-packages","dir":"Articles","previous_headings":"Preparation","what":"Needed R packages","title":"How to conduct AMR data analysis","text":"many uses R, need additional packages AMR data analysis. package works closely together tidyverse packages dplyr ggplot2 RStudio. tidyverse tremendously improves way conduct data science - allows natural way writing syntaxes creating beautiful plots R. also use cleaner package, can used cleaning data creating frequency tables. AMR package contains data set example_isolates_unclean, might look data users extracted laboratory systems: AMR data analysis, like microorganism column contain valid, --date taxonomy, antibiotic columns cleaned SIR values well.","code":"library(dplyr) library(ggplot2) library(AMR)  # (if not yet installed, install with:) # install.packages(c(\"dplyr\", \"ggplot2\", \"AMR\")) example_isolates_unclean #> # A tibble: 3,000 × 8 #>    patient_id hospital date       bacteria      AMX   AMC   CIP   GEN   #>    <chr>      <chr>    <date>     <chr>         <chr> <chr> <chr> <chr> #>  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://msberends.github.io/AMR/articles/AMR.html","id":"taxonomy-of-microorganisms","dir":"Articles","previous_headings":"Preparation","what":"Taxonomy of microorganisms","title":"How to conduct AMR data analysis","text":".mo(), users can transform arbitrary microorganism names codes current taxonomy. AMR package contains --date taxonomic data. specific, currently included data retrieved 24 Jun 2024. codes AMR packages come .mo() short, still human readable. importantly, .mo() supports kinds input: first character codes denote taxonomic kingdom, Bacteria (B), Fungi (F), Protozoa (P). AMR package also contain functions directly retrieve taxonomic properties, name, genus, species, family, order, even Gram-stain. start mo_ use .mo() internally, still arbitrary user input can used: Now can thus clean data: Apparently, uncertainty translation taxonomic codes. Let’s check : ’s good.","code":"as.mo(\"Klebsiella pneumoniae\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"K. pneumoniae\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"KLEPNE\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"KLPN\") #> Class 'mo' #> [1] B_KLBSL_PNMN mo_family(\"K. pneumoniae\") #> [1] \"Enterobacteriaceae\" mo_genus(\"K. pneumoniae\") #> [1] \"Klebsiella\" mo_species(\"K. pneumoniae\") #> [1] \"pneumoniae\"  mo_gramstain(\"Klebsiella pneumoniae\") #> [1] \"Gram-negative\"  mo_ref(\"K. pneumoniae\") #> [1] \"Trevisan, 1887\"  mo_snomed(\"K. pneumoniae\") #> [[1]] #> [1] \"1098101000112102\" \"446870005\"        \"1098201000112108\" \"409801009\"        #> [5] \"56415008\"         \"714315002\"        \"713926009\" our_data$bacteria <- as.mo(our_data$bacteria, info = TRUE) #> ℹ 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 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), Kosakonia pseudosacchari #>               (0.361), and Kluyveromyces pseudotropicalis pseudotropicalis (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://msberends.github.io/AMR/articles/AMR.html","id":"antibiotic-results","dir":"Articles","previous_headings":"Preparation","what":"Antibiotic results","title":"How to conduct AMR data analysis","text":"column antibiotic test results must also cleaned. AMR package comes three new data types work test results: mic minimal inhibitory concentrations (MIC), disk disk diffusion diameters, sir SIR data interpreted already. package can also determine SIR values based MIC disk diffusion values, read .sir() page. now, just clean SIR columns data using dplyr: basically cleaning, time start data inclusion.","code":"# method 1, be explicit about the columns: our_data <- our_data %>%   mutate_at(vars(AMX:GEN), as.sir)  # method 2, let the AMR package determine the eligible columns our_data <- our_data %>%   mutate_if(is_sir_eligible, as.sir)  # result: our_data #> # A tibble: 3,000 × 8 #>    patient_id hospital date       bacteria     AMX   AMC   CIP   GEN   #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> #>  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://msberends.github.io/AMR/articles/AMR.html","id":"first-isolates","dir":"Articles","previous_headings":"Preparation","what":"First isolates","title":"How to conduct AMR data analysis","text":"need know isolates can actually use analysis without repetition bias. conduct analysis antimicrobial resistance, must include first isolate every patient per episode (Hindler et al., Clin Infect Dis. 2007). , easily get overestimate underestimate resistance antibiotic. Imagine patient admitted MRSA found 5 different blood cultures following weeks (yes, countries like Netherlands blood drawing policies). resistance percentage oxacillin isolates overestimated, included MRSA . clearly selection bias. Clinical Laboratory Standards Institute (CLSI) appoints follows: (…) preparing cumulative antibiogram guide clinical decisions empirical antimicrobial therapy initial infections, first isolate given species per patient, per analysis period (eg, one year) included, irrespective body site, antimicrobial susceptibility profile, phenotypical characteristics (eg, biotype). first isolate easily identified, cumulative antimicrobial susceptibility test data prepared using first isolate generally comparable cumulative antimicrobial susceptibility test data calculated methods, providing duplicate isolates excluded. M39-A4 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 4th Edition. CLSI, 2014. Chapter 6.4 AMR package includes methodology first_isolate() function able apply four different methods defined Hindler et al. 2007: phenotype-based, episode-based, patient-based, isolate-based. right method depends goals analysis, default phenotype-based method case method properly correct duplicate isolates. Read methods first_isolate() page. outcome function can easily added data: 91% suitable resistance analysis! can now filter filter() function, also dplyr package: future use, two syntaxes can shortened: end 2 724 isolates analysis. Now data looks like: Time analysis.","code":"our_data <- our_data %>%   mutate(first = first_isolate(info = TRUE)) #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Using column 'bacteria' as input for col_mo. #> ℹ Using column 'date' as input for col_date. #> ℹ Using column 'patient_id' as input for col_patient_id. #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #>   of 2 #> => Found 2,724 'phenotype-based' first isolates (90.8% of total where a #>    microbial ID was available) our_data_1st <- our_data %>%   filter(first == TRUE) our_data_1st <- our_data %>%   filter_first_isolate() our_data_1st #> # A tibble: 2,724 × 9 #>    patient_id hospital date       bacteria     AMX   AMC   CIP   GEN   first #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> <lgl> #>  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://msberends.github.io/AMR/articles/AMR.html","id":"analysing-the-data","dir":"Articles","previous_headings":"","what":"Analysing the data","title":"How to conduct AMR data analysis","text":"base R summary() function gives good first impression, comes support new mo sir classes now data set:","code":"summary(our_data_1st) #>   patient_id          hospital              date            #>  Length:2724        Length:2724        Min.   :2011-01-01   #>  Class :character   Class :character   1st Qu.:2013-04-07   #>  Mode  :character   Mode  :character   Median :2015-06-03   #>                                        Mean   :2015-06-09   #>                                        3rd Qu.:2017-08-11   #>                                        Max.   :2019-12-27   #>    bacteria               AMX                    AMC                 #>  Class :mo             Class:sir              Class:sir              #>  <NA>  :0              %S   :41.6% (n=1133)   %S   :52.6% (n=1432)   #>  Unique:4              %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)      #>  #1    :B_ESCHR_COLI   %I   :16.4% (n=446)    %I   :12.2% (n=333)    #>  #2    :B_STPHY_AURS   %R   :42.0% (n=1145)   %R   :35.2% (n=959)    #>  #3    :B_STRPT_PNMN   %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)      #>     CIP                    GEN                  first         #>  Class:sir              Class:sir              Mode:logical   #>  %S   :52.5% (n=1431)   %S   :61.0% (n=1661)   TRUE:2724      #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)                     #>  %I   : 6.5% (n=176)    %I   : 3.0% (n=82)                    #>  %R   :41.0% (n=1117)   %R   :36.0% (n=981)                   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)  glimpse(our_data_1st) #> Rows: 2,724 #> Columns: 9 #> $ patient_id <chr> \"J3\", \"R7\", \"P3\", \"P10\", \"B7\", \"W3\", \"M3\", \"J3\", \"G6\", \"P4\"… #> $ hospital   <chr> \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\",… #> $ date       <date> 2012-11-21, 2018-04-03, 2014-09-19, 2015-12-10, 2015-03-02… #> $ bacteria   <mo> \"B_ESCHR_COLI\", \"B_KLBSL_PNMN\", \"B_ESCHR_COLI\", \"B_ESCHR_COL… #> $ AMX        <sir> R, R, R, S, S, R, R, S, S, S, S, R, S, S, R, R, R, R, S, R,… #> $ AMC        <sir> I, I, S, I, S, S, S, S, S, S, S, S, S, S, S, S, S, R, S, S,… #> $ CIP        <sir> S, S, S, S, S, R, S, S, S, S, S, S, S, S, S, S, S, S, S, S,… #> $ GEN        <sir> S, S, S, S, S, S, S, S, S, S, S, R, S, S, S, S, S, S, S, S,… #> $ first      <lgl> 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://msberends.github.io/AMR/articles/AMR.html","id":"availability-of-species","dir":"Articles","previous_headings":"Analysing the data","what":"Availability of species","title":"How to conduct AMR data analysis","text":"just get idea species distributed, create frequency table count() based name microorganisms:","code":"our_data %>%   count(mo_name(bacteria), sort = TRUE) #> # A tibble: 4 × 2 #>   `mo_name(bacteria)`          n #>   <chr>                    <int> #> 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 #>   <chr>                    <int> #> 1 Escherichia coli          1321 #> 2 Staphylococcus aureus      682 #> 3 Streptococcus pneumoniae   402 #> 4 Klebsiella pneumoniae      319"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"select-and-filter-with-antibiotic-selectors","dir":"Articles","previous_headings":"Analysing the data","what":"Select and filter with antibiotic selectors","title":"How to conduct AMR data analysis","text":"Using -called antibiotic class selectors, can select filter columns based antibiotic class antibiotic results :","code":"our_data_1st %>%   select(date, aminoglycosides()) #> ℹ For aminoglycosides() using column 'GEN' (gentamicin) #> # A tibble: 2,724 × 2 #>    date       GEN   #>    <date>     <sir> #>  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   #>    <mo>         <sir> <sir> #>  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   #>    <mo>         <sir> <sir> <sir> <sir> #>  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 #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> <lgl> #>  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 #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> <lgl> #>  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 #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> <lgl> #>  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://msberends.github.io/AMR/articles/AMR.html","id":"generate-antibiograms","dir":"Articles","previous_headings":"Analysing the data","what":"Generate antibiograms","title":"How to conduct AMR data analysis","text":"Since AMR v2.0 (March 2023), easy create different types antibiograms, support 20 different languages. four antibiogram types, proposed Klinker et al. (2021, DOI 10.1177/20499361211011373), supported new antibiogram() function: Traditional Antibiogram (TA) e.g, susceptibility Pseudomonas aeruginosa piperacillin/tazobactam (TZP) Combination Antibiogram (CA) e.g, sdditional susceptibility Pseudomonas aeruginosa TZP + tobramycin versus TZP alone Syndromic Antibiogram (SA) e.g, susceptibility Pseudomonas aeruginosa TZP among respiratory specimens (obtained among ICU patients ) Weighted-Incidence Syndromic Combination Antibiogram (WISCA) e.g, susceptibility Pseudomonas aeruginosa TZP among respiratory specimens (obtained among ICU patients ) male patients age >=65 years heart failure section, show use antibiogram() function create antibiogram types. starters, included example_isolates data set looks like:","code":"example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"traditional-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Traditional Antibiogram","title":"How to conduct AMR data analysis","text":"create traditional antibiogram, simply state antibiotics used. antibiotics argument antibiogram() function supports (combination) previously mentioned antibiotic class selectors: Notice antibiogram() function automatically prints right format using Quarto R Markdown (page), even applies italics taxonomic names (using italicise_taxonomy() internally). also uses language OS either English, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Italian, Japanese, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian. next example, force language Spanish using language argument:","code":"antibiogram(example_isolates,             antibiotics = c(aminoglycosides(), carbapenems())) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) antibiogram(example_isolates,             mo_transform = \"gramstain\",             antibiotics = aminoglycosides(),             ab_transform = \"name\",             language = \"es\") #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin)"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"combined-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Combined Antibiogram","title":"How to conduct AMR data analysis","text":"create combined antibiogram, use antibiotic codes names plus + character like :","code":"antibiogram(example_isolates,             antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"))"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"syndromic-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Syndromic Antibiogram","title":"How to conduct AMR data analysis","text":"create syndromic antibiogram, syndromic_group argument must used. can column data, e.g. ifelse() calculations based certain columns:","code":"antibiogram(example_isolates,             antibiotics = c(aminoglycosides(), carbapenems()),             syndromic_group = \"ward\") #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem)"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"weighted-incidence-syndromic-combination-antibiogram-wisca","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Weighted-Incidence Syndromic Combination Antibiogram (WISCA)","title":"How to conduct AMR data analysis","text":"create WISCA, must state combination therapy antibiotics argument (similar Combination Antibiogram), define syndromic group syndromic_group argument (similar Syndromic Antibiogram) cases predefined based clinical demographic characteristics (e.g., endocarditis 75+ females). next example simplification without clinical characteristics, just gives idea WISCA can created:","code":"wisca <- antibiogram(example_isolates,                      antibiotics = c(\"AMC\", \"AMC+CIP\", \"TZP\", \"TZP+TOB\"),                      mo_transform = \"gramstain\",                      minimum = 10, # this should be >= 30, but now just as example                      syndromic_group = ifelse(example_isolates$age >= 65 &                                                 example_isolates$gender == \"M\",                                               \"WISCA Group 1\", \"WISCA Group 2\")) wisca"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"plotting-antibiograms","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Plotting antibiograms","title":"How to conduct AMR data analysis","text":"Antibiograms can plotted using autoplot() ggplot2 packages, since AMR package provides extension function:  calculate antimicrobial resistance sensible way, also correcting results, use resistance() susceptibility() functions.","code":"autoplot(wisca)"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"resistance-percentages","dir":"Articles","previous_headings":"Analysing the data","what":"Resistance percentages","title":"How to conduct AMR data analysis","text":"functions resistance() susceptibility() can used calculate antimicrobial resistance susceptibility. specific analyses, functions proportion_S(), proportion_SI(), proportion_I(), proportion_IR() proportion_R() can used determine proportion specific antimicrobial outcome. functions contain minimum argument, denoting minimum required number test results returning value. functions otherwise return NA. default minimum = 30, following CLSI M39-A4 guideline applying microbial epidemiology. per EUCAST guideline 2019, calculate resistance proportion R (proportion_R(), equal resistance()) susceptibility proportion S (proportion_SI(), equal susceptibility()). functions can used : can used conjunction group_by() summarise(), dplyr package: Author: Dr. Matthijs Berends, 26th Feb 2023","code":"our_data_1st %>% resistance(AMX) #> [1] 0.4203377 our_data_1st %>%   group_by(hospital) %>%   summarise(amoxicillin = resistance(AMX)) #> # A tibble: 3 × 2 #>   hospital amoxicillin #>   <chr>          <dbl> #> 1 A              0.340 #> 2 B              0.551 #> 3 C              0.370"},{"path":"https://msberends.github.io/AMR/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 Index. Python package wrapper round 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://msberends.github.io/AMR/articles/AMR_for_Python.html","id":"install","dir":"Articles","previous_headings":"","what":"Install","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://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/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, antibiotics, clinical_breakpoints, example_isolates, now available regular Python data frames:","code":"AMR.microorganisms AMR.antibiotics"},{"path":"https://msberends.github.io/AMR/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://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"objective","dir":"Articles","previous_headings":"","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://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"data-preparation","dir":"Articles","previous_headings":"","what":"Data Preparation","title":"AMR with tidymodels","text":"begin loading required libraries preparing example_isolates dataset AMR package. Explanation: aminoglycosides() betalactams() dynamically select columns antibiotics classes. drop_na() ensures model receives complete cases training.","code":"# Load required libraries library(tidymodels)   # For machine learning workflows, and data manipulation (dplyr, tidyr, ...) #> ── Attaching packages ────────────────────────────────────── tidymodels 1.2.0 ── #> ✔ broom        1.0.7     ✔ recipes      1.1.0 #> ✔ dials        1.3.0     ✔ rsample      1.2.1 #> ✔ dplyr        1.1.4     ✔ tibble       3.2.1 #> ✔ ggplot2      3.5.1     ✔ tidyr        1.3.1 #> ✔ infer        1.0.7     ✔ tune         1.2.1 #> ✔ modeldata    1.4.0     ✔ workflows    1.1.4 #> ✔ parsnip      1.2.1     ✔ workflowsets 1.1.0 #> ✔ purrr        1.0.4     ✔ yardstick    1.3.2 #> ── Conflicts ───────────────────────────────────────── tidymodels_conflicts() ── #> ✖ purrr::discard() masks scales::discard() #> ✖ dplyr::filter()  masks stats::filter() #> ✖ dplyr::lag()     masks stats::lag() #> ✖ recipes::step()  masks stats::step() #> • Dig deeper into tidy modeling with R at https://www.tmwr.org library(AMR)          # For AMR data analysis  # Load the example_isolates dataset data(\"example_isolates\")  # Preloaded dataset with AMR results  # 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://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"defining-the-workflow","dir":"Articles","previous_headings":"","what":"Defining the Workflow","title":"AMR with tidymodels","text":"now define tidymodels workflow, consists three steps: preprocessing, model specification, fitting.","code":""},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"preprocessing-with-a-recipe","dir":"Articles","previous_headings":"Defining the Workflow","what":"1. Preprocessing with a Recipe","title":"AMR with tidymodels","text":"create recipe preprocess data modelling. 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 antibiotic selector functions - need define columns specifically.","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())"},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"specifying-the-model","dir":"Articles","previous_headings":"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 Generalized Linear Model engine logistic_model #> Logistic Regression Model Specification (classification) #>  #> Computational engine: glm"},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"building-the-workflow","dir":"Articles","previous_headings":"Defining the Workflow","what":"3. Building the Workflow","title":"AMR with tidymodels","text":"bundle recipe model together workflow, organizes entire modeling 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"},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"training-and-evaluating-the-model","dir":"Articles","previous_headings":"","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(), antibiotic 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 based AMR results 0.995 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 #> ℹ 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) # 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 #>    <fct>                         <dbl>                 <dbl> <fct>   <int> <int> #>  1 Gram-positive              1.07e- 1              8.93e- 1 Gram-p…     5     5 #>  2 Gram-positive              3.17e- 8              1.00e+ 0 Gram-p…     5     1 #>  3 Gram-negative              9.99e- 1              1.42e- 3 Gram-n…     5     5 #>  4 Gram-positive              2.22e-16              1   e+ 0 Gram-p…     5     5 #>  5 Gram-negative              9.46e- 1              5.42e- 2 Gram-n…     5     5 #>  6 Gram-positive              1.07e- 1              8.93e- 1 Gram-p…     5     5 #>  7 Gram-positive              2.22e-16              1   e+ 0 Gram-p…     1     5 #>  8 Gram-positive              2.22e-16              1   e+ 0 Gram-p…     4     4 #>  9 Gram-negative              1   e+ 0              2.22e-16 Gram-n…     1     1 #> 10 Gram-positive              6.05e-11              1.00e+ 0 Gram-p…     4     4 #> # ℹ 384 more rows #> # ℹ 18 more variables: AMK <int>, KAN <int>, PEN <int>, OXA <int>, FLC <int>, #> #   AMX <int>, AMC <int>, AMP <int>, TZP <int>, CZO <int>, FEP <int>, #> #   CXM <int>, FOX <int>, CTX <int>, CAZ <int>, CRO <int>, IPM <int>, MEM <int>  # Evaluate model performance metrics <- predictions %>%   metrics(truth = mo, estimate = .pred_class) # Calculate performance metrics  metrics #> # A tibble: 2 × 3 #>   .metric  .estimator .estimate #>   <chr>    <chr>          <dbl> #> 1 accuracy binary         0.995 #> 2 kap      binary         0.989 predictions %>%   roc_curve(mo, `.pred_Gram-negative`) %>%   autoplot()"},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"conclusion","dir":"Articles","previous_headings":"","what":"Conclusion","title":"AMR with tidymodels","text":"post, demonstrated build machine learning pipeline tidymodels framework AMR package. combining selector functions like aminoglycosides() betalactams() tidymodels, efficiently prepared data, trained model, evaluated performance. workflow extensible antibiotic classes resistance patterns, empowering users analyse AMR data systematically reproducibly.","code":""},{"path":"https://msberends.github.io/AMR/articles/EUCAST.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"How to apply EUCAST rules","text":"EUCAST rules? European Committee Antimicrobial Susceptibility Testing (EUCAST) states website: EUCAST expert rules tabulated collection expert knowledge intrinsic resistances, exceptional resistance phenotypes interpretive rules may applied antimicrobial susceptibility testing order reduce errors make appropriate recommendations reporting particular resistances. Europe, lot medical microbiological laboratories already apply rules (Brown et al., 2015). package features latest insights intrinsic resistance unusual phenotypes (v3.1, 2016). Moreover, eucast_rules() function use purpose can also apply additional rules, like forcing ampicillin = R isolates amoxicillin/clavulanic acid = R.","code":""},{"path":"https://msberends.github.io/AMR/articles/EUCAST.html","id":"examples","dir":"Articles","previous_headings":"","what":"Examples","title":"How to apply EUCAST rules","text":"rules can used discard impossible bug-drug combinations data. example, Klebsiella produces beta-lactamase prevents ampicillin (amoxicillin) working . words, practically every strain Klebsiella resistant ampicillin. Sometimes, laboratory data can still contain strains ampicillin susceptible ampicillin. antibiogram available identification available, antibiogram re-interpreted based identification (namely, Klebsiella). EUCAST expert rules solve , can applied using eucast_rules(): convenient function mo_is_intrinsic_resistant() uses guideline, allows check one specific microorganisms antibiotics: EUCAST rules can used correction, can also used filling known resistance susceptibility based results antimicrobials drugs. process called interpretive reading, basically form imputation, part eucast_rules() function well:","code":"oops <- data.frame(   mo = c(     \"Klebsiella\",     \"Escherichia\"   ),   ampicillin = \"S\" ) oops #>            mo ampicillin #> 1  Klebsiella          S #> 2 Escherichia          S  eucast_rules(oops, info = FALSE) #>            mo ampicillin #> 1  Klebsiella          R #> 2 Escherichia          S mo_is_intrinsic_resistant(   c(\"Klebsiella\", \"Escherichia\"),   \"ampicillin\" ) #> [1]  TRUE FALSE  mo_is_intrinsic_resistant(   \"Klebsiella\",   c(\"ampicillin\", \"kanamycin\") ) #> [1]  TRUE FALSE data <- data.frame(   mo = c(     \"Staphylococcus aureus\",     \"Enterococcus faecalis\",     \"Escherichia coli\",     \"Klebsiella pneumoniae\",     \"Pseudomonas aeruginosa\"   ),   VAN = \"-\", # Vancomycin   AMX = \"-\", # Amoxicillin   COL = \"-\", # Colistin   CAZ = \"-\", # Ceftazidime   CXM = \"-\", # Cefuroxime   PEN = \"S\", # Benzylenicillin   FOX = \"S\", # Cefoxitin   stringsAsFactors = FALSE ) data eucast_rules(data)"},{"path":"https://msberends.github.io/AMR/articles/MDR.html","id":"type-of-input","dir":"Articles","previous_headings":"","what":"Type of input","title":"How to determine multi-drug resistance (MDR)","text":"mdro() function takes data set input, regular data.frame. tries automatically determine right columns info isolates, name species columns results antimicrobial agents. See help page info set right settings data command ?mdro. WHONET data (data), settings automatically set correctly.","code":""},{"path":"https://msberends.github.io/AMR/articles/MDR.html","id":"guidelines","dir":"Articles","previous_headings":"","what":"Guidelines","title":"How to determine multi-drug resistance (MDR)","text":"mdro() function support multiple guidelines. can select guideline guideline parameter. Currently supported guidelines (case-insensitive): guideline = \"CMI2012\" (default) Magiorakos AP, Srinivasan et al. “Multidrug-resistant, extensively drug-resistant pandrug-resistant bacteria: international expert proposal interim standard definitions acquired resistance.” Clinical Microbiology Infection (2012) (link) guideline = \"EUCAST3.2\" (simply guideline = \"EUCAST\") European international guideline - EUCAST Expert Rules Version 3.2 “Intrinsic Resistance Unusual Phenotypes” (link) guideline = \"EUCAST3.1\" European international guideline - EUCAST Expert Rules Version 3.1 “Intrinsic Resistance Exceptional Phenotypes Tables” (link) guideline = \"TB\" international guideline multi-drug resistant tuberculosis - World Health Organization “Companion handbook guidelines programmatic management drug-resistant tuberculosis” (link) guideline = \"MRGN\" German national guideline - Mueller et al. (2015) Antimicrobial Resistance Infection Control 4:7. DOI: 10.1186/s13756-015-0047-6 guideline = \"BRMO\" Dutch national guideline - Rijksinstituut voor Volksgezondheid en Milieu “WIP-richtlijn BRMO (Bijzonder Resistente Micro-Organismen) (ZKH)” (link) Please suggest (country-specific) guidelines letting us know: https://github.com/msberends/AMR/issues/new.","code":""},{"path":"https://msberends.github.io/AMR/articles/MDR.html","id":"custom-guidelines","dir":"Articles","previous_headings":"Guidelines","what":"Custom Guidelines","title":"How to determine multi-drug resistance (MDR)","text":"can also use custom guideline. Custom guidelines can set custom_mdro_guideline() function. great importance custom rules determine MDROs hospital, e.g., rules dependent ward, state contact isolation variables data. familiar case_when() dplyr package, recognise input method set rules. Rules must set using R considers ‘formula notation’: row/isolate matches first rule, value first ~ (case ‘Elderly Type ’) set MDRO value. Otherwise, second rule tried . maximum number rules unlimited. can print rules set console overview. Colours help reading console supports colours. outcome function can used guideline argument mdro() function: rules set (custom object case) exported shared file location using saveRDS() collaborate multiple users. custom rules set imported using readRDS().","code":"custom <- custom_mdro_guideline(   CIP == \"R\" & age > 60 ~ \"Elderly Type A\",   ERY == \"R\" & age > 60 ~ \"Elderly Type B\" ) custom #> A set of custom MDRO rules: #>   1. If CIP is  R  and age is higher than 60 then: Elderly Type A #>   2. If ERY is  R  and age is higher than 60 then: Elderly Type B #>   3. Otherwise: Negative #>  #> Unmatched rows will return NA. #> Results will be of class 'factor', with ordered levels: Negative < Elderly Type A < Elderly Type B x <- mdro(example_isolates, guideline = custom) table(x) #> x #>       Negative Elderly Type A Elderly Type B  #>           1070            198            732"},{"path":"https://msberends.github.io/AMR/articles/MDR.html","id":"examples","dir":"Articles","previous_headings":"","what":"Examples","title":"How to determine multi-drug resistance (MDR)","text":"mdro() function always returns ordered factor predefined guidelines. example, output default guideline Magiorakos et al. returns factor levels ‘Negative’, ‘MDR’, ‘XDR’ ‘PDR’ order. next example uses example_isolates data set. data set included package contains full antibiograms 2,000 microbial isolates. reflects reality can used practise AMR data analysis. test MDR/XDR/PDR guideline data set, get: Frequency table Class: factor > ordered (numeric) Length: 2,000 Levels: 4: Negative < Multi-drug-resistant (MDR) < Extensively drug-resistant … Available: 1,745 (87.25%, NA: 255 = 12.75%) Unique: 2 another example, create data set determine multi-drug resistant TB: column names automatically verified valid drug names codes, worked exactly way: data set now looks like : can now add interpretation MDR-TB data set. can use: shortcut mdr_tb(): Create frequency table results: Frequency table Class: factor > ordered (numeric) Length: 5,000 Levels: 5: Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant <… Available: 5,000 (100%, NA: 0 = 0%) Unique: 5","code":"library(dplyr) # to support pipes: %>% library(cleaner) # to create frequency tables example_isolates %>%   mdro() %>%   freq() # show frequency table of the result #> Warning: in mdro(): NA introduced for isolates where the available percentage of #> antimicrobial classes was below 50% (set with pct_required_classes) # random_sir() is a helper function to generate # a random vector with values S, I and R my_TB_data <- data.frame(   rifampicin = random_sir(5000),   isoniazid = random_sir(5000),   gatifloxacin = random_sir(5000),   ethambutol = random_sir(5000),   pyrazinamide = random_sir(5000),   moxifloxacin = random_sir(5000),   kanamycin = random_sir(5000) ) my_TB_data <- data.frame(   RIF = random_sir(5000),   INH = random_sir(5000),   GAT = random_sir(5000),   ETH = random_sir(5000),   PZA = random_sir(5000),   MFX = random_sir(5000),   KAN = random_sir(5000) ) head(my_TB_data) #>   rifampicin isoniazid gatifloxacin ethambutol pyrazinamide moxifloxacin #> 1          I         R            S          S            S            S #> 2          S         S            I          R            R            S #> 3          R         I            I          I            R            I #> 4          I         S            S          S            S            S #> 5          I         I            I          S            I            S #> 6          R         S            R          S            I            I #>   kanamycin #> 1         R #> 2         I #> 3         S #> 4         I #> 5         I #> 6         I mdro(my_TB_data, guideline = \"TB\") my_TB_data$mdr <- mdr_tb(my_TB_data) #> ℹ No column found as input for col_mo, assuming all rows contain #>   Mycobacterium tuberculosis. freq(my_TB_data$mdr)"},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/PCA.html","id":"transforming","dir":"Articles","previous_headings":"","what":"Transforming","title":"How to conduct principal component analysis (PCA) for AMR","text":"PCA, need transform AMR data first. example_isolates data set package looks like: Now transform data set resistance percentages per taxonomic order genus:","code":"library(AMR) library(dplyr) glimpse(example_isolates) #> Rows: 2,000 #> Columns: 46 #> $ date    <date> 2002-01-02, 2002-01-03, 2002-01-07, 2002-01-07, 2002-01-13, 2… #> $ patient <chr> \"A77334\", \"A77334\", \"067927\", \"067927\", \"067927\", \"067927\", \"4… #> $ age     <dbl> 65, 65, 45, 45, 45, 45, 78, 78, 45, 79, 67, 67, 71, 71, 75, 50… #> $ gender  <chr> \"F\", \"F\", \"F\", \"F\", \"F\", \"F\", \"M\", \"M\", \"F\", \"F\", \"M\", \"M\", \"M… #> $ ward    <chr> \"Clinical\", \"Clinical\", \"ICU\", \"ICU\", \"ICU\", \"ICU\", \"Clinical\"… #> $ mo      <mo> \"B_ESCHR_COLI\", \"B_ESCHR_COLI\", \"B_STPHY_EPDR\", \"B_STPHY_EPDR\",… #> $ PEN     <sir> R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, S,… #> $ OXA     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ FLC     <sir> NA, NA, R, R, R, R, S, S, R, S, S, S, NA, NA, NA, NA, NA, R, R… #> $ AMX     <sir> NA, NA, NA, NA, NA, NA, R, R, NA, NA, NA, NA, NA, NA, R, NA, N… #> $ AMC     <sir> I, I, NA, NA, NA, NA, S, S, NA, NA, S, S, I, I, R, I, I, NA, N… #> $ AMP     <sir> NA, NA, NA, NA, NA, NA, R, R, NA, NA, NA, NA, NA, NA, R, NA, N… #> $ TZP     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ CZO     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, NA,… #> $ FEP     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ CXM     <sir> I, I, R, R, R, R, S, S, R, S, S, S, S, S, NA, S, S, R, R, S, S… #> $ FOX     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, NA,… #> $ CTX     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S… #> $ CAZ     <sir> NA, NA, R, R, R, R, R, R, R, R, R, R, NA, NA, NA, S, S, R, R, … #> $ CRO     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S… #> $ GEN     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ TOB     <sir> NA, NA, NA, NA, NA, NA, S, S, NA, NA, NA, NA, S, S, NA, NA, NA… #> $ AMK     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ KAN     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ TMP     <sir> R, R, S, S, R, R, R, R, S, S, NA, NA, S, S, S, S, S, R, R, R, … #> $ SXT     <sir> R, R, S, S, NA, NA, NA, NA, S, S, NA, NA, S, S, S, S, S, NA, N… #> $ NIT     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R,… #> $ FOS     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ LNZ     <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N… #> $ CIP     <sir> NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, NA, NA, NA, NA, S, S… #> $ MFX     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ VAN     <sir> R, R, S, S, S, S, S, S, S, S, NA, NA, R, R, R, R, R, S, S, S, … #> $ TEC     <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N… #> $ TCY     <sir> R, R, S, S, S, S, S, S, S, I, S, S, NA, NA, I, R, R, S, I, R, … #> $ TGC     <sir> NA, NA, S, S, S, S, S, S, S, NA, S, S, NA, NA, NA, R, R, S, NA… #> $ DOX     <sir> NA, NA, S, S, S, S, S, S, S, NA, S, S, NA, NA, NA, R, R, S, NA… #> $ ERY     <sir> R, R, R, R, R, R, S, S, R, S, S, S, R, R, R, R, R, R, R, R, S,… #> $ CLI     <sir> R, R, NA, NA, NA, R, NA, NA, NA, NA, NA, NA, R, R, R, R, R, NA… #> $ AZM     <sir> R, R, R, R, R, R, S, S, R, S, S, S, R, R, R, R, R, R, R, R, S,… #> $ IPM     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S… #> $ MEM     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ MTR     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ CHL     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ COL     <sir> NA, NA, R, R, R, R, R, R, R, R, R, R, NA, NA, NA, R, R, R, R, … #> $ MUP     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ RIF     <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N… resistance_data <- example_isolates %>%   group_by(     order = mo_order(mo), # group on anything, like order     genus = mo_genus(mo)   ) %>% #  and genus as we do here   summarise_if(is.sir, resistance) %>% # then get resistance of all drugs   select(     order, genus, AMC, CXM, CTX,     CAZ, GEN, TOB, TMP, SXT   ) # and select only relevant columns  head(resistance_data) #> # A tibble: 6 × 10 #> # Groups:   order [5] #>   order             genus          AMC   CXM   CTX   CAZ   GEN   TOB   TMP   SXT #>   <chr>             <chr>        <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 (unknown order)   (unknown ge…    NA    NA    NA    NA    NA    NA    NA    NA #> 2 Actinomycetales   Schaalia        NA    NA    NA    NA    NA    NA    NA    NA #> 3 Bacteroidales     Bacteroides     NA    NA    NA    NA    NA    NA    NA    NA #> 4 Campylobacterales Campylobact…    NA    NA    NA    NA    NA    NA    NA    NA #> 5 Caryophanales     Gemella         NA    NA    NA    NA    NA    NA    NA    NA #> 6 Caryophanales     Listeria        NA    NA    NA    NA    NA    NA    NA    NA"},{"path":"https://msberends.github.io/AMR/articles/PCA.html","id":"perform-principal-component-analysis","dir":"Articles","previous_headings":"","what":"Perform principal component analysis","title":"How to conduct principal component analysis (PCA) for AMR","text":"new pca() function automatically filter rows contain numeric values selected variables, now need : result can reviewed good old summary() function: Good news. first two components explain total 93.3% variance (see PC1 PC2 values Proportion Variance. can create -called biplot base R biplot() function, see antimicrobial resistance per drug explain difference per microorganism.","code":"pca_result <- pca(resistance_data) #> ℹ Columns selected for PCA: \"AMC\", \"CAZ\", \"CTX\", \"CXM\", \"GEN\", \"SXT\", #>   \"TMP\", and \"TOB\". Total observations available: 7. summary(pca_result) #> Groups (n=4, named as 'order'): #> [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 #> 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'): #> [1] \"Caryophanales\"    \"Enterobacterales\" \"Lactobacillales\"  \"Pseudomonadales\""},{"path":"https://msberends.github.io/AMR/articles/PCA.html","id":"plotting-the-results","dir":"Articles","previous_headings":"","what":"Plotting the results","title":"How to conduct principal component analysis (PCA) for AMR","text":"can’t see explanation points. Perhaps works better new ggplot_pca() function, automatically adds right labels even groups:  can also print ellipse per group, edit appearance:","code":"biplot(pca_result) ggplot_pca(pca_result) ggplot_pca(pca_result, ellipse = TRUE) +   ggplot2::labs(title = \"An AMR/PCA biplot!\")"},{"path":"https://msberends.github.io/AMR/articles/WHONET.html","id":"import-of-data","dir":"Articles","previous_headings":"","what":"Import of data","title":"How to work with WHONET data","text":"tutorial assumes already imported WHONET data e.g. readxl package. RStudio, can done using menu button ‘Import Dataset’ tab ‘Environment’. Choose option ‘Excel’ select exported file. Make sure date fields imported correctly. example syntax look like : package comes example data set WHONET. use analysis.","code":"library(readxl) data <- read_excel(path = \"path/to/your/file.xlsx\")"},{"path":"https://msberends.github.io/AMR/articles/WHONET.html","id":"preparation","dir":"Articles","previous_headings":"","what":"Preparation","title":"How to work with WHONET data","text":"First, load relevant packages yet . use tidyverse analyses. . don’t know yet, suggest read website: https://www.tidyverse.org/. transform variables simplify automate analysis: Microorganisms transformed microorganism codes (called mo) using Catalogue Life reference data set, contains ~70,000 microorganisms taxonomic kingdoms Bacteria, Fungi Protozoa. tranformation .mo(). function also recognises almost WHONET abbreviations microorganisms. Antimicrobial results interpretations clean valid. words, contain values \"S\", \"\" \"R\". exactly .sir() function . errors warnings, values transformed succesfully. also created package dedicated data cleaning checking, called cleaner package. freq() function can used create frequency tables. let’s check data, couple frequency tables: Frequency table Class: character Length: 500 Available: 500 (100%, NA: 0 = 0%) Unique: 38 Shortest: 11 Longest: 40 (omitted 28 entries, n = 57 [11.4%]) Frequency table Class: factor > ordered > sir (numeric) Length: 500 Levels: 5: S < SDD < < R < NI Available: 481 (96.2%, NA: 19 = 3.8%) Unique: 3 Drug: Amoxicillin/clavulanic acid (AMC, J01CR02) Drug group: Beta-lactams/penicillins %SI: 78.59%","code":"library(dplyr) # part of tidyverse library(ggplot2) # part of tidyverse library(AMR) # this package library(cleaner) # to create frequency tables # transform variables data <- WHONET %>%   # get microbial ID based on given organism   mutate(mo = as.mo(Organism)) %>%   # transform everything from \"AMP_ND10\" to \"CIP_EE\" to the new `sir` class   mutate_at(vars(AMP_ND10:CIP_EE), as.sir) # our newly created `mo` variable, put in the mo_name() function data %>% freq(mo_name(mo), nmax = 10) # our transformed antibiotic columns # amoxicillin/clavulanic acid (J01CR02) as an example data %>% freq(AMC_ND2)"},{"path":"https://msberends.github.io/AMR/articles/WHONET.html","id":"a-first-glimpse-at-results","dir":"Articles","previous_headings":"","what":"A first glimpse at results","title":"How to work with WHONET data","text":"easy ggplot already give lot information, using included ggplot_sir() function:","code":"data %>%   group_by(Country) %>%   select(Country, AMP_ND2, AMC_ED20, CAZ_ED10, CIP_ED5) %>%   ggplot_sir(translate_ab = \"ab\", facet = \"Country\", datalabels = FALSE)"},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"microorganisms-full-microbial-taxonomy","dir":"Articles","previous_headings":"","what":"microorganisms: Full Microbial Taxonomy","title":"Data sets for download / own use","text":"data set 78 678 rows 26 columns, containing following column names: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, snomed. data set R available microorganisms, load AMR package. last updated 4 October 2024 13:28:44 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (1.8 MB) Download tab-separated text file (17.7 MB) Download Microsoft Excel workbook (8.7 MB) Download Apache Feather file (8.3 MB) Download Apache Parquet file (3.8 MB) Download IBM SPSS Statistics data file (29 MB) Download Stata DTA file (92.5 MB) NOTE: exported files SPSS Stata contain first 50 SNOMED codes per record, file size otherwise exceed 100 MB; file size limit GitHub. file structures compression techniques inefficient. Advice? Use R instead. ’s free much better many ways. tab-separated text file Microsoft Excel workbook contain SNOMED codes comma separated values.","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source","dir":"Articles","previous_headings":"microorganisms: Full Microbial Taxonomy","what":"Source","title":"Data sets for download / own use","text":"data set contains full microbial taxonomy six kingdoms List Prokaryotic names Standing Nomenclature (LPSN), MycoBank, Global Biodiversity Information Facility (GBIF): Parte, AC et al. (2020). List Prokaryotic names Standing Nomenclature (LPSN) moves DSMZ. International Journal Systematic Evolutionary Microbiology, 70, 5607-5612; . Accessed https://lpsn.dsmz.de June 24th, 2024. Vincent, R et al (2013). MycoBank gearing new horizons. IMA Fungus, 4(2), 371-9; . Accessed https://www.mycobank.org June 24th, 2024. GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset . Accessed https://www.gbif.org June 24th, 2024. Reimer, LC et al. (2022). BacDive 2022: knowledge base standardized bacterial archaeal data. Nucleic Acids Res., 50(D1):D741-D74; . Accessed https://bacdive.dsmz.de July 16th, 2024. Public Health Information Network Vocabulary Access Distribution System (PHIN VADS). US Edition SNOMED CT 1 September 2020. Value Set Name ‘Microorganism’, OID 2.16.840.1.114222.4.11.1009 (v12). URL: https://www.cdc.gov/phin/php/phinvads/","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"example-content","dir":"Articles","previous_headings":"microorganisms: Full Microbial Taxonomy","what":"Example content","title":"Data sets for download / own use","text":"Included (sub)species per taxonomic kingdom: Example rows filtering genus Escherichia:","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"antibiotics-antibiotic-antifungal-drugs","dir":"Articles","previous_headings":"","what":"antibiotics: Antibiotic (+Antifungal) Drugs","title":"Data sets for download / own use","text":"data set 487 rows 14 columns, containing following column names:ab, cid, name, group, atc, atc_group1, atc_group2, abbreviations, synonyms, oral_ddd, oral_units, iv_ddd, iv_units, loinc. data set R available antibiotics, load AMR package. last updated 7 February 2025 17:01:22 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (42 kB) Download tab-separated text file (0.1 MB) Download Microsoft Excel workbook (74 kB) Download Apache Feather file (0.1 MB) Download Apache Parquet file (0.1 MB) Download IBM SPSS Statistics data file (0.4 MB) Download Stata DTA file (0.4 MB) tab-separated text, Microsoft Excel, SPSS, Stata files contain ATC codes, common abbreviations, trade names LOINC codes comma separated values.","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-1","dir":"Articles","previous_headings":"antibiotics: Antibiotic (+Antifungal) Drugs","what":"Source","title":"Data sets for download / own use","text":"data set contains EARS-Net ATC codes gathered WHONET, compound IDs PubChem. also contains brand names (synonyms) found PubChem Defined Daily Doses (DDDs) oral parenteral administration. ATC/DDD index Collaborating Centre Drug Statistics Methodology (note: may used commercial purposes, freely available CC website personal use) PubChem US National Library Medicine WHONET software 2019 LOINC (Logical Observation Identifiers Names Codes)","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"antivirals-antiviral-drugs","dir":"Articles","previous_headings":"","what":"antivirals: Antiviral Drugs","title":"Data sets for download / own use","text":"data set 120 rows 11 columns, containing following column names:av, name, atc, cid, atc_group, synonyms, oral_ddd, oral_units, iv_ddd, iv_units, loinc. data set R available antivirals, load AMR package. last updated 20 October 2023 12:51:48 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (6 kB) Download tab-separated text file (17 kB) Download Microsoft Excel workbook (16 kB) Download Apache Feather file (16 kB) Download Apache Parquet file (13 kB) Download IBM SPSS Statistics data file (32 kB) Download Stata DTA file (78 kB) tab-separated text, Microsoft Excel, SPSS, Stata files contain trade names LOINC codes comma separated values.","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-2","dir":"Articles","previous_headings":"antivirals: Antiviral Drugs","what":"Source","title":"Data sets for download / own use","text":"data set contains ATC codes gathered compound IDs PubChem. also contains brand names (synonyms) found PubChem Defined Daily Doses (DDDs) oral parenteral administration. ATC/DDD index Collaborating Centre Drug Statistics Methodology (note: may used commercial purposes, freely available CC website personal use) PubChem US National Library Medicine LOINC (Logical Observation Identifiers Names Codes)","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"clinical_breakpoints-interpretation-from-mic-values-disk-diameters-to-sir","dir":"Articles","previous_headings":"","what":"clinical_breakpoints: Interpretation from MIC values & disk diameters to SIR","title":"Data sets for download / own use","text":"data set 34 063 rows 14 columns, containing following column names:guideline, type, host, method, site, mo, rank_index, ab, ref_tbl, disk_dose, breakpoint_S, breakpoint_R, uti, is_SDD. data set R available clinical_breakpoints, load AMR package. last updated 29 September 2024 20:17:56 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (70 kB) Download tab-separated text file (3.1 MB) Download Microsoft Excel workbook (2 MB) Download Apache Feather file (1.5 MB) Download Apache Parquet file (0.1 MB) Download IBM SPSS Statistics data file (5.6 MB) Download Stata DTA file (9.3 MB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-3","dir":"Articles","previous_headings":"clinical_breakpoints: Interpretation from MIC values & disk diameters to SIR","what":"Source","title":"Data sets for download / own use","text":"data set contains interpretation rules MIC values disk diffusion diameters. Included guidelines CLSI (2011-2024) EUCAST (2011-2024). Clinical breakpoints package validated imported WHONET, free desktop Windows application developed supported Collaborating Centre Surveillance Antimicrobial Resistance. can read website. developers WHONET AMR package contact sharing work. highly appreciate development WHONET software. CEO CLSI chairman EUCAST endorsed work public use AMR package (consequently use breakpoints) June 2023, future development distributing clinical breakpoints discussed meeting CLSI, EUCAST, , developers WHONET AMR package. NOTE: AMR package (WHONET software well) contains internal methods apply guidelines, rather complex. example, breakpoints must applied certain species groups (case package available microorganisms.groups data set). important considered using breakpoints use.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"intrinsic_resistant-intrinsic-bacterial-resistance","dir":"Articles","previous_headings":"","what":"intrinsic_resistant: Intrinsic Bacterial Resistance","title":"Data sets for download / own use","text":"data set 301 583 rows 2 columns, containing following column names:mo ab. data set R available intrinsic_resistant, load AMR package. last updated 29 September 2024 20:17:56 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (0.1 MB) Download tab-separated text file (10.9 MB) Download Microsoft Excel workbook (3 MB) Download Apache Feather file (2.5 MB) Download Apache Parquet file (0.3 MB) Download IBM SPSS Statistics data file (16.2 MB) Download Stata DTA file (25 MB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-4","dir":"Articles","previous_headings":"intrinsic_resistant: Intrinsic Bacterial Resistance","what":"Source","title":"Data sets for download / own use","text":"data set contains defined intrinsic resistance EUCAST bug-drug combinations, based ‘EUCAST Expert Rules’ ‘EUCAST Intrinsic Resistance Unusual Phenotypes’ v3.3 (2021).","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"example-content-4","dir":"Articles","previous_headings":"intrinsic_resistant: Intrinsic Bacterial Resistance","what":"Example content","title":"Data sets for download / own use","text":"Example rows filtering Enterobacter cloacae:","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"dosage-dosage-guidelines-from-eucast","dir":"Articles","previous_headings":"","what":"dosage: Dosage Guidelines from EUCAST","title":"Data sets for download / own use","text":"data set 503 rows 9 columns, containing following column names:ab, name, type, dose, dose_times, administration, notes, original_txt, eucast_version. data set R available dosage, load AMR package. last updated 22 June 2023 13:10:59 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (3 kB) Download tab-separated text file (43 kB) Download Microsoft Excel workbook (25 kB) Download Apache Feather file (21 kB) Download Apache Parquet file (9 kB) Download IBM SPSS Statistics data file (64 kB) Download Stata DTA file (0.1 MB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-5","dir":"Articles","previous_headings":"dosage: Dosage Guidelines from EUCAST","what":"Source","title":"Data sets for download / own use","text":"EUCAST breakpoints used package based dosages data set. Currently included dosages data set meant :  (), ‘EUCAST Clinical Breakpoint Tables’ v11.0 (2021), ‘EUCAST Clinical Breakpoint Tables’ v12.0 (2022).","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"example_isolates-example-data-for-practice","dir":"Articles","previous_headings":"","what":"example_isolates: Example Data for Practice","title":"Data sets for download / own use","text":"data set 2 000 rows 46 columns, containing following column names:date, patient, age, gender, ward, mo, PEN, OXA, FLC, AMX, 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, RIF. data set R available example_isolates, load AMR package. last updated 15 June 2024 13:33:49 UTC. Find info structure data set .","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-6","dir":"Articles","previous_headings":"example_isolates: Example Data for Practice","what":"Source","title":"Data sets for download / own use","text":"data set contains randomised fictitious data, reflects reality can used practise AMR data analysis.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"example_isolates_unclean-example-data-for-practice","dir":"Articles","previous_headings":"","what":"example_isolates_unclean: Example Data for Practice","title":"Data sets for download / own use","text":"data set 3 000 rows 8 columns, containing following column names:patient_id, hospital, date, bacteria, AMX, AMC, CIP, GEN. data set R available example_isolates_unclean, load AMR package. last updated 27 August 2022 18:49:37 UTC. Find info structure data set .","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-7","dir":"Articles","previous_headings":"example_isolates_unclean: Example Data for Practice","what":"Source","title":"Data sets for download / own use","text":"data set contains randomised fictitious data, reflects reality can used practise AMR data analysis.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"microorganisms-groups-species-groups-and-microbiological-complexes","dir":"Articles","previous_headings":"","what":"microorganisms.groups: Species Groups and Microbiological Complexes","title":"Data sets for download / own use","text":"data set 521 rows 4 columns, containing following column names:mo_group, mo, mo_group_name, mo_name. data set R available microorganisms.groups, load AMR package. last updated 29 September 2024 20:17:56 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (5 kB) Download tab-separated text file (49 kB) Download Microsoft Excel workbook (19 kB) Download Apache Feather file (19 kB) Download Apache Parquet file (13 kB) Download IBM SPSS Statistics data file (63 kB) Download Stata DTA file (81 kB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-8","dir":"Articles","previous_headings":"microorganisms.groups: Species Groups and Microbiological Complexes","what":"Source","title":"Data sets for download / own use","text":"data set contains species groups microbiological complexes, used clinical_breakpoints data set.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"microorganisms-codes-common-laboratory-codes","dir":"Articles","previous_headings":"","what":"microorganisms.codes: Common Laboratory Codes","title":"Data sets for download / own use","text":"data set 4 971 rows 2 columns, containing following column names:code mo. data set R available microorganisms.codes, load AMR package. last updated 29 September 2024 20:17:56 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (22 kB) Download tab-separated text file (0.1 MB) Download Microsoft Excel workbook (82 kB) Download Apache Feather file (85 kB) Download Apache Parquet file (56 kB) Download IBM SPSS Statistics data file (0.1 MB) Download Stata DTA file (0.1 MB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-9","dir":"Articles","previous_headings":"microorganisms.codes: Common Laboratory Codes","what":"Source","title":"Data sets for download / own use","text":"data set contains commonly used codes microorganisms, laboratory systems WHONET.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/resistance_predict.html","id":"needed-r-packages","dir":"Articles","previous_headings":"","what":"Needed R packages","title":"How to predict antimicrobial resistance","text":"many uses R, need additional packages AMR data analysis. package works closely together tidyverse packages dplyr ggplot2. tidyverse tremendously improves way conduct data science - allows natural way writing syntaxes creating beautiful plots R. AMR package depends packages even extends use functions.","code":"library(dplyr) library(ggplot2) library(AMR)  # (if not yet installed, install with:) # install.packages(c(\"tidyverse\", \"AMR\"))"},{"path":"https://msberends.github.io/AMR/articles/resistance_predict.html","id":"prediction-analysis","dir":"Articles","previous_headings":"","what":"Prediction analysis","title":"How to predict antimicrobial resistance","text":"package contains function resistance_predict(), takes input functions AMR data analysis. Based date column, calculates cases per year uses regression model predict antimicrobial resistance. basically easy : function look date column col_date set. running commands, summary regression model printed unless using resistance_predict(..., info = FALSE). text printed summary - actual result (output) function data.frame containing year: number observations, actual observed resistance, estimated resistance standard error estimation: function plot available base R, can extended packages depend output based type input. extended function cope resistance predictions:  fastest way plot result. automatically adds right axes, error bars, titles, number available observations type model. also support ggplot2 package custom function ggplot_sir_predict() create appealing plots:","code":"# resistance prediction of piperacillin/tazobactam (TZP): resistance_predict(tbl = example_isolates, col_date = \"date\", col_ab = \"TZP\", model = \"binomial\")  # or: example_isolates %>%   resistance_predict(     col_ab = \"TZP\",     model = \"binomial\"   )  # to bind it to object 'predict_TZP' for example: predict_TZP <- example_isolates %>%   resistance_predict(     col_ab = \"TZP\",     model = \"binomial\"   ) predict_TZP #> # A tibble: 34 × 7 #>     year  value se_min se_max observations observed estimated #>  * <dbl>  <dbl>  <dbl>  <dbl>        <int>    <dbl>     <dbl> #>  1  2002 0.2        NA     NA           15   0.2       0.0562 #>  2  2003 0.0625     NA     NA           32   0.0625    0.0616 #>  3  2004 0.0854     NA     NA           82   0.0854    0.0676 #>  4  2005 0.05       NA     NA           60   0.05      0.0741 #>  5  2006 0.0508     NA     NA           59   0.0508    0.0812 #>  6  2007 0.121      NA     NA           66   0.121     0.0889 #>  7  2008 0.0417     NA     NA           72   0.0417    0.0972 #>  8  2009 0.0164     NA     NA           61   0.0164    0.106  #>  9  2010 0.0566     NA     NA           53   0.0566    0.116  #> 10  2011 0.183      NA     NA           93   0.183     0.127  #> # ℹ 24 more rows plot(predict_TZP) ggplot_sir_predict(predict_TZP) # choose for error bars instead of a ribbon ggplot_sir_predict(predict_TZP, ribbon = FALSE)"},{"path":"https://msberends.github.io/AMR/articles/resistance_predict.html","id":"choosing-the-right-model","dir":"Articles","previous_headings":"Prediction analysis","what":"Choosing the right model","title":"How to predict antimicrobial resistance","text":"Resistance easily predicted; look vancomycin resistance Gram-positive bacteria, spread (.e. standard error) enormous:  Vancomycin resistance 100% ten years, might remain low. can define model model parameter. model chosen generalised linear regression model using binomial distribution, assuming period zero resistance followed period increasing resistance leading slowly resistance. Valid values : vancomycin resistance Gram-positive bacteria, linear model might appropriate:  model also available object, attribute:","code":"example_isolates %>%   filter(mo_gramstain(mo, language = NULL) == \"Gram-positive\") %>%   resistance_predict(col_ab = \"VAN\", year_min = 2010, info = FALSE, model = \"binomial\") %>%   ggplot_sir_predict() example_isolates %>%   filter(mo_gramstain(mo, language = NULL) == \"Gram-positive\") %>%   resistance_predict(col_ab = \"VAN\", year_min = 2010, info = FALSE, model = \"linear\") %>%   ggplot_sir_predict() model <- attributes(predict_TZP)$model  summary(model)$family #>  #> Family: binomial  #> Link function: logit  summary(model)$coefficients #>                  Estimate  Std. Error   z value     Pr(>|z|) #> (Intercept) -200.67944891 46.17315349 -4.346237 1.384932e-05 #> year           0.09883005  0.02295317  4.305725 1.664395e-05"},{"path":"https://msberends.github.io/AMR/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Matthijs S. Berends. Author, maintainer. Dennis Souverein. Author, contributor. Erwin E. . Hassing. Author, contributor. Andrew P. Norgan. Contributor. Anita Williams. Contributor. Annick Lenglet. Contributor. Anthony Underwood. Contributor. Anton Mymrikov. Contributor. Bart C. Meijer. Contributor. Christian F. Luz. Contributor. Dmytro Mykhailenko. Contributor. Eric H. L. C. M. Hazenberg. Contributor. Gwen Knight. Contributor. Jason Stull. Contributor. Javier Sanchez. Contributor. Jonas Salm. Contributor. Judith M. Fonville. Contributor. Larisse Bolton. Contributor. Matthew Saab. Contributor. Peter Dutey-Magni. Contributor. Rogier P. Schade. Contributor. Sofia Ny. Contributor. Alex W. Friedrich. Thesis advisor. Bhanu N. M. Sinha. Thesis advisor. Casper J. Albers. Thesis advisor. Corinna Glasner. Thesis advisor.","code":""},{"path":"https://msberends.github.io/AMR/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C (2022). “AMR: R Package Working Antimicrobial Resistance Data.” Journal Statistical Software, 104(3), 1–31. doi:10.18637/jss.v104.i03.","code":"@Article{,   title = {{AMR}: An {R} Package for Working with Antimicrobial Resistance Data},   author = {Matthijs S. Berends and Christian F. Luz and Alexander W. Friedrich and Bhanu N. M. Sinha and Casper J. Albers and Corinna Glasner},   journal = {Journal of Statistical Software},   year = {2022},   volume = {104},   number = {3},   pages = {1--31},   doi = {10.18637/jss.v104.i03}, }"},{"path":"https://msberends.github.io/AMR/index.html","id":"the-amr-package-for-r-","dir":"","previous_headings":"","what":"Antimicrobial Resistance Data Analysis","title":"Antimicrobial Resistance Data Analysis","text":"Provides --one solution antimicrobial resistance (AMR) data analysis One Health approach Used 175 countries, available 20 languages Generates antibiograms - traditional, combined, syndromic, even WISCA Provides full microbiological taxonomy extensive info antimicrobial drugs Applies recent CLSI EUCAST clinical veterinary breakpoints MICs, disk zones ECOFFs Corrects duplicate isolates, calculates predicts AMR per antimicrobial class Integrates WHONET, ATC, EARS-Net, PubChem, LOINC, SNOMED CT, NCBI 100% free costs dependencies, highly suitable places limited resources Now available Python ! Click read . https://msberends.github.io/AMR https://doi.org/10.18637/jss.v104.i03","code":""},{"path":"https://msberends.github.io/AMR/index.html","id":"introduction","dir":"","previous_headings":"","what":"Introduction","title":"Antimicrobial Resistance Data Analysis","text":"AMR package free open-source R package zero dependencies simplify analysis prediction Antimicrobial Resistance (AMR) work microbial antimicrobial data properties, using evidence-based methods. aim provide standard clean reproducible AMR data analysis, can therefore empower epidemiological analyses continuously enable surveillance treatment evaluation setting. Many different researchers around globe continually helping us make successful durable project! work published Journal Statistical Software (Volume 104(3); DOI 10.18637/jss.v104.i03) formed basis two PhD theses (DOI 10.33612/diss.177417131 DOI 10.33612/diss.192486375). installing package, R knows ~52,000 distinct microbial species (updated December 2022) ~600 antibiotic, antimycotic antiviral drugs name code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC SNOMED CT), knows valid SIR MIC values. integral clinical breakpoint guidelines CLSI EUCAST included, even epidemiological cut-(ECOFF) values. supports can read data format, including WHONET data. package works Windows, macOS Linux versions R since R-3.0 (April 2013). designed work setting, including limited resources. created routine data analysis academic research Faculty Medical Sciences University Groningen, collaboration non-profit organisations Certe Medical Diagnostics Advice Foundation University Medical Center Groningen.","code":""},{"path":"https://msberends.github.io/AMR/index.html","id":"used-in-over-175-countries-available-in-20-languages","dir":"","previous_headings":"Introduction","what":"Used in over 175 countries, available in 20 languages","title":"Antimicrobial Resistance Data Analysis","text":"Since first public release early 2018, R package used almost countries world. Click map enlarge see country names. help contributors corners world, AMR package available  English,  Czech,  Chinese,  Danish,  Dutch,  Finnish,  French,  German,  Greek,  Italian,  Japanese,  Norwegian,  Polish,  Portuguese,  Romanian,  Russian,  Spanish,  Swedish,  Turkish,  Ukrainian. Antimicrobial drug (group) names colloquial microorganism names provided languages.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/index.html","id":"filtering-and-selecting-data","dir":"","previous_headings":"Practical examples","what":"Filtering and selecting data","title":"Antimicrobial Resistance Data Analysis","text":"One powerful functions package, aside calculating plotting AMR, selecting filtering based antimicrobial columns. can done using -called antimicrobial class selectors, work base R, dplyr data.table: defined row filter Gram-negative bacteria intrinsic resistance cefotaxime (mo_is_gram_negative() mo_is_intrinsic_resistant()) column selection two antibiotic groups (aminoglycosides() carbapenems()), reference data microorganisms antibiotics AMR package make sure get meant: base R equivalent : base R code work version R since April 2013 (R-3.0). Moreover, code works identically data.table package, starting :","code":"# AMR works great with dplyr, but it's not required or neccesary library(AMR) library(dplyr)  example_isolates %>%   mutate(bacteria = mo_fullname()) %>%   # filtering functions for microorganisms:   filter(mo_is_gram_negative(),          mo_is_intrinsic_resistant(ab = \"cefotax\")) %>%   # antimicrobial selectors:   select(bacteria,          aminoglycosides(),          carbapenems()) library(AMR) example_isolates$bacteria <- mo_fullname(example_isolates$mo) example_isolates[which(mo_is_gram_negative() &                          mo_is_intrinsic_resistant(ab = \"cefotax\")),                  c(\"bacteria\", aminoglycosides(), carbapenems())] example_isolates <- data.table::as.data.table(example_isolates)"},{"path":"https://msberends.github.io/AMR/index.html","id":"generating-antibiograms","dir":"","previous_headings":"Practical examples","what":"Generating antibiograms","title":"Antimicrobial Resistance Data Analysis","text":"AMR package supports generating traditional, combined, syndromic, even weighted-incidence syndromic combination antibiograms (WISCA). used inside R Markdown Quarto, table printed right output format automatically (markdown, LaTeX, HTML, etc.). combination antibiograms, clear combined antibiotics yield higher empiric coverage: Like many functions package, antibiogram() comes support 20 languages often detected automatically based system language:","code":"antibiogram(example_isolates,             antibiotics = c(aminoglycosides(), carbapenems())) antibiogram(example_isolates,             antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"),             mo_transform = \"gramstain\") antibiogram(example_isolates,             antibiotics = c(\"cipro\", \"tobra\", \"genta\"), # any arbitrary name or code will work             mo_transform = \"gramstain\",             ab_transform = \"name\",             language = \"uk\") # Ukrainian"},{"path":"https://msberends.github.io/AMR/index.html","id":"calculating-resistance-per-group","dir":"","previous_headings":"Practical examples","what":"Calculating resistance per group","title":"Antimicrobial Resistance Data Analysis","text":"manual approach, can use resistance susceptibility() function: use antimicrobial class selectors select series antibiotic columns:","code":"example_isolates %>%   # group by ward:   group_by(ward) %>%   # calculate AMR using resistance() for gentamicin and tobramycin   # and get their 95% confidence intervals using sir_confidence_interval():   summarise(across(c(GEN, TOB),                    list(total_R = resistance,                         conf_int = function(x) sir_confidence_interval(x, collapse = \"-\")))) library(AMR) library(dplyr)  out <- example_isolates %>%   # group by ward:   group_by(ward) %>%   # calculate AMR using resistance(), over all aminoglycosides and polymyxins:   summarise(across(c(aminoglycosides(), polymyxins()),             resistance)) out # transform the antibiotic columns to names: out %>% set_ab_names() # transform the antibiotic column to ATC codes: out %>% set_ab_names(property = \"atc\")"},{"path":"https://msberends.github.io/AMR/index.html","id":"what-else-can-you-do-with-this-package","dir":"","previous_headings":"","what":"What else can you do with this package?","title":"Antimicrobial Resistance Data Analysis","text":"package intended comprehensive toolbox integrated AMR data analysis. package can used : Reference taxonomy microorganisms, since package contains microbial (sub)species List Prokaryotic names Standing Nomenclature (LPSN) Global Biodiversity Information Facility (GBIF) (manual) Interpreting raw MIC disk diffusion values, based CLSI EUCAST guideline (manual) Retrieving antimicrobial drug names, doses forms administration clinical health care records (manual) Determining first isolates used AMR data analysis (manual) Calculating antimicrobial resistance (tutorial) Determining multi-drug resistance (MDR) / multi-drug resistant organisms (MDRO) (tutorial) Calculating (empirical) susceptibility mono therapy combination therapies (tutorial) Predicting future antimicrobial resistance using regression models (tutorial) Getting properties microorganism (like Gram stain, species, genus family) (manual) Getting properties antimicrobial (like name, code EARS-Net/ATC/LOINC/PubChem, defined daily dose trade name) (manual) Plotting antimicrobial resistance (tutorial) Applying EUCAST expert rules (manual) Getting SNOMED codes microorganism, getting properties microorganism based SNOMED code (manual) Getting LOINC codes antibiotic, getting properties antibiotic based LOINC code (manual) Machine reading EUCAST CLSI guidelines 2011-2021 translate MIC values disk diffusion diameters SIR (link) Principal component analysis AMR (tutorial)","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/index.html","id":"latest-official-version","dir":"","previous_headings":"Get this package","what":"Latest official version","title":"Antimicrobial Resistance Data Analysis","text":"package available official R network (CRAN). Install package R CRAN using command: downloaded installed automatically. RStudio, click menu Tools > Install Packages… type “AMR” press Install. Note: functions website may available latest release. use functions data sets mentioned website, install latest development version.","code":"install.packages(\"AMR\")"},{"path":"https://msberends.github.io/AMR/index.html","id":"latest-development-version","dir":"","previous_headings":"Get this package","what":"Latest development version","title":"Antimicrobial Resistance Data Analysis","text":"Please read Developer Guideline . latest unpublished development version can installed GitHub two ways: Manually, using: Automatically, using rOpenSci R-universe platform, adding R-universe address list repositories (‘repos’): , can install update AMR package like official release (e.g., using install.packages(\"AMR\") RStudio via Tools > Check Package Updates…).","code":"install.packages(\"remotes\") # if you haven't already remotes::install_github(\"msberends/AMR\") options(repos = c(getOption(\"repos\"),                   msberends = \"https://msberends.r-universe.dev\"))"},{"path":"https://msberends.github.io/AMR/index.html","id":"get-started","dir":"","previous_headings":"","what":"Get started","title":"Antimicrobial Resistance Data Analysis","text":"find conduct AMR data analysis, please continue reading get started click link ‘’ menu.","code":""},{"path":"https://msberends.github.io/AMR/index.html","id":"partners","dir":"","previous_headings":"","what":"Partners","title":"Antimicrobial Resistance Data Analysis","text":"development package part , related , made possible following non-profit organisations initiatives:","code":""},{"path":"https://msberends.github.io/AMR/index.html","id":"copyright","dir":"","previous_headings":"","what":"Copyright","title":"Antimicrobial Resistance Data Analysis","text":"R package free, open-source software licensed GNU General Public License v2.0 (GPL-2). nutshell, means package: May used commercial purposes May used private purposes May used patent purposes May modified, although: Modifications must released license distributing package Changes made code must documented May distributed, although: Source code must made available package distributed copy license copyright notice must included package. Comes LIMITATION liability Comes warranty","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR-deprecated.html","id":null,"dir":"Reference","previous_headings":"","what":"Deprecated Functions — AMR-deprecated","title":"Deprecated Functions — AMR-deprecated","text":"functions -called 'Deprecated'. removed future version package. Using functions give warning name function replaced (one).","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR-deprecated.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deprecated Functions — AMR-deprecated","text":"","code":"ab_class(...)  ab_selector(...)"},{"path":"https://msberends.github.io/AMR/reference/AMR-options.html","id":null,"dir":"Reference","previous_headings":"","what":"Options for the AMR package — AMR-options","title":"Options for the AMR package — AMR-options","text":"overview package-specific options() can set AMR package.","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR-options.html","id":"options","dir":"Reference","previous_headings":"","what":"Options","title":"Options for the AMR package — AMR-options","text":"AMR_antibiogram_formatting_type  numeric (1-12) use antibiogram(), indicate formatting type use. AMR_breakpoint_type  character use .sir(), indicate breakpoint type use. must either \"ECOFF\", \"animal\", \"human\". AMR_cleaning_regex  regular expression (case-insensitive) use .mo() mo_* functions, clean user input. default outcome mo_cleaning_regex(), removes texts brackets texts \"species\" \"serovar\". AMR_custom_ab  file location RDS file, use custom antimicrobial drugs package. explained add_custom_antimicrobials(). AMR_custom_mo  file location RDS file, use custom microorganisms package. explained add_custom_microorganisms(). AMR_eucastrules  character set default types rules eucast_rules() function, must one : \"breakpoints\", \"expert\", \"\", \"custom\", \"\", defaults c(\"breakpoints\", \"expert\"). AMR_guideline  character set default guideline interpreting MIC values disk diffusion diameters .sir(). Can guideline name (e.g., \"CLSI\") name year (e.g. \"CLSI 2019\"). default latest implemented EUCAST guideline, currently \"EUCAST 2024\". Supported guideline currently EUCAST (2011-2024) CLSI (2011-2024). AMR_ignore_pattern  regular expression ignore (.e., make NA) match given .mo() mo_* functions. AMR_include_PKPD  logical use .sir(), indicate PK/PD clinical breakpoints must applied last resort - default TRUE. AMR_include_screening  logical use .sir(), indicate clinical breakpoints screening allowed - default FALSE. AMR_keep_synonyms  logical use .mo() mo_* functions, indicate old, previously valid taxonomic names must preserved corrected currently accepted names. default FALSE. AMR_locale  character set language AMR package, can one supported language names ISO-639-1 codes: English (en), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek (el), Italian (), Japanese (ja), Norwegian (), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv), Turkish (tr), Ukrainian (uk). default current system language (supported, English otherwise). AMR_mo_source  file location manual code list used .mo() mo_* functions. explained set_mo_source().","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR-options.html","id":"saving-settings-between-sessions","dir":"Reference","previous_headings":"","what":"Saving Settings Between Sessions","title":"Options for the AMR package — AMR-options","text":"Settings R saved globally thus lost R exited. can save options .Rprofile file, user-specific file. can edit using:   file, can set options ...   ...add Portuguese language support antibiotics, allow PK/PD rules interpreting MIC values .sir().","code":"utils::file.edit(\"~/.Rprofile\") options(AMR_locale = \"pt\")  options(AMR_include_PKPD = TRUE)"},{"path":"https://msberends.github.io/AMR/reference/AMR-options.html","id":"share-options-within-team","dir":"Reference","previous_headings":"","what":"Share Options Within Team","title":"Options for the AMR package — AMR-options","text":"global approach, e.g. within (data) team, save options file remote file location, shared network drive, user read file automatically start-. work way: Save plain text file e.g. \"X:/team_folder/R_options.R\" fill preferred settings. user, open .Rprofile file using utils::file.edit(\"~/.Rprofile\") put :   Reload R/RStudio check settings getOption(), e.g. getOption(\"AMR_locale\") set value. Now team settings configured one place, can maintained .","code":"source(\"X:/team_folder/R_options.R\")"},{"path":"https://msberends.github.io/AMR/reference/AMR.html","id":null,"dir":"Reference","previous_headings":"","what":"The AMR Package — AMR","title":"The AMR Package — AMR","text":"Welcome AMR package. AMR package free open-source R package zero dependencies simplify analysis prediction Antimicrobial Resistance (AMR) work microbial antimicrobial data properties, using evidence-based methods. aim provide standard clean reproducible AMR data analysis, can therefore empower epidemiological analyses continuously enable surveillance treatment evaluation setting. Many different researchers around globe continually helping us make successful durable project! work published Journal Statistical Software (Volume 104(3); doi:10.18637/jss.v104.i03 ) formed basis two PhD theses (doi:10.33612/diss.177417131  doi:10.33612/diss.192486375 ). installing package, R knows ~79 000 microorganisms (updated June 2024) ~610 antibiotic, antimycotic antiviral drugs name code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC SNOMED CT), knows valid SIR MIC values. integral clinical breakpoint guidelines CLSI EUCAST included, even epidemiological cut-(ECOFF) values. supports can read data format, including WHONET data. package works Windows, macOS Linux versions R since R-3.0 (April 2013). designed work setting, including limited resources. created routine data analysis academic research Faculty Medical Sciences public University Groningen, collaboration non-profit organisations Certe Medical Diagnostics Advice Foundation University Medical Center Groningen. AMR package available English, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Italian, Japanese, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian. Antimicrobial drug (group) names colloquial microorganism names provided languages.","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"The AMR Package — AMR","text":"cite AMR publications use: Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C (2022). \"AMR: R Package Working Antimicrobial Resistance Data.\" Journal Statistical Software, 104(3), 1-31. doi:10.18637/jss.v104.i03 BibTeX entry LaTeX users :","code":"@Article{,   title = {{AMR}: An {R} Package for Working with Antimicrobial Resistance Data},   author = {Matthijs S. Berends and Christian F. Luz and Alexander W. Friedrich and Bhanu N. M. Sinha and Casper J. Albers and Corinna Glasner},   journal = {Journal of Statistical Software},   year = {2022},   volume = {104},   number = {3},   pages = {1--31},   doi = {10.18637/jss.v104.i03}, }"},{"path":"https://msberends.github.io/AMR/reference/AMR.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"The AMR Package — AMR","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/AMR.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"The AMR Package — AMR","text":"Maintainer: Matthijs S. Berends m.s.berends@umcg.nl (ORCID) Authors: Dennis Souverein (ORCID) [contributor] Erwin E. . Hassing [contributor] contributors: Andrew P. Norgan (ORCID) [contributor] Anita Williams (ORCID) [contributor] Annick Lenglet (ORCID) [contributor] Anthony Underwood (ORCID) [contributor] Anton Mymrikov [contributor] Bart C. Meijer [contributor] Christian F. Luz (ORCID) [contributor] Dmytro Mykhailenko [contributor] Eric H. L. C. M. Hazenberg [contributor] Gwen Knight (ORCID) [contributor] Jason Stull (ORCID) [contributor] Javier Sanchez (ORCID) [contributor] Jonas Salm [contributor] Judith M. Fonville [contributor] Larisse Bolton (ORCID) [contributor] Matthew Saab [contributor] Peter Dutey-Magni (ORCID) [contributor] Rogier P. Schade [contributor] Sofia Ny (ORCID) [contributor] Alex W. Friedrich (ORCID) [thesis advisor] Bhanu N. M. Sinha (ORCID) [thesis advisor] Casper J. Albers (ORCID) [thesis advisor] Corinna Glasner (ORCID) [thesis advisor]","code":""},{"path":"https://msberends.github.io/AMR/reference/WHOCC.html","id":null,"dir":"Reference","previous_headings":"","what":"WHOCC: WHO Collaborating Centre for Drug Statistics Methodology — WHOCC","title":"WHOCC: WHO Collaborating Centre for Drug Statistics Methodology — WHOCC","text":"antimicrobial drugs official names, ATC codes, ATC groups defined daily dose (DDD) included package, using Collaborating Centre Drug Statistics Methodology.","code":""},{"path":"https://msberends.github.io/AMR/reference/WHOCC.html","id":"whocc","dir":"Reference","previous_headings":"","what":"WHOCC","title":"WHOCC: WHO Collaborating Centre for Drug Statistics Methodology — WHOCC","text":"package contains ~550 antibiotic, antimycotic antiviral drugs Anatomical Therapeutic Chemical (ATC) codes, ATC groups Defined Daily Dose (DDD) World Health Organization Collaborating Centre Drug Statistics Methodology (WHOCC, https://atcddd.fhi.) Pharmaceuticals Community Register European Commission (https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm). become gold standard international drug utilisation monitoring research. WHOCC located Oslo Norwegian Institute Public Health funded Norwegian government. European Commission executive European Union promotes general interest. NOTE: WHOCC copyright allow use commercial purposes, unlike info package. See https://atcddd.fhi./copyright_disclaimer/.","code":""},{"path":"https://msberends.github.io/AMR/reference/WHOCC.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"WHOCC: WHO Collaborating Centre for Drug Statistics Methodology — WHOCC","text":"","code":"as.ab(\"meropenem\") #> Class 'ab' #> [1] MEM ab_name(\"J01DH02\") #> [1] \"Meropenem\"  ab_tradenames(\"flucloxacillin\") #>  [1] \"culpen\"               \"floxacillin\"          \"floxacillinsodium\"    #>  [4] \"floxapen\"             \"floxapensodiumsalt\"   \"fluclox\"              #>  [7] \"flucloxacilina\"       \"flucloxacilline\"      \"flucloxacillinum\"     #> [10] \"fluorochloroxacillin\" \"staphylex\""},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 500 Isolates - WHONET Example — WHONET","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"example data set exact structure export file WHONET. files can used package, example data set shows. antibiotic results example_isolates data set. patient names created using online surname generators place practice purposes.","code":""},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"","code":"WHONET"},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"tibble 500 observations 53 variables: Identification number ID sample Specimen number ID specimen Organism Name microorganism. analysis, transform valid microbial class, using .mo(). Country Country origin Laboratory Name laboratory Last name Fictitious last name patient First name Fictitious initial patient Sex Fictitious gender patient Age Fictitious age patient Age category Age group, can also looked using age_groups() Date admissionDate hospital admission Specimen dateDate specimen received laboratory Specimen type Specimen type group Specimen type (Numeric) Translation \"Specimen type\" Reason Reason request Differential Diagnosis Isolate number ID isolate Organism type Type microorganism, can also looked using mo_type() Serotype Serotype microorganism Beta-lactamase Microorganism produces beta-lactamase? ESBL Microorganism produces extended spectrum beta-lactamase? Carbapenemase Microorganism produces carbapenemase? MRSA screening test Microorganism possible MRSA? Inducible clindamycin resistance Clindamycin can induced? Comment comments Date data entryDate data entered WHONET AMP_ND10:CIP_EE 28 different antibiotics. can lookup abbreviations antibiotics data set, use e.g. ab_name(\"AMP\") get official name immediately. analysis, transform valid antibiotic class, using .sir().","code":""},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"","code":"WHONET #> # A tibble: 500 × 53 #>    `Identification number` `Specimen number` Organism Country         Laboratory #>    <chr>                               <int> <chr>    <chr>           <chr>      #>  1 fe41d7bafa                           1748 SPN      Belgium         National … #>  2 91f175ec37                           1767 eco      The Netherlands National … #>  3 cc4015056e                           1343 eco      The Netherlands National … #>  4 e864b692f5                           1894 MAP      Denmark         National … #>  5 3d051fe345                           1739 PVU      Belgium         National … #>  6 c80762a08d                           1846 103      The Netherlands National … #>  7 8022d3727c                           1628 103      Denmark         National … #>  8 f3dc5f553d                           1493 eco      The Netherlands National … #>  9 15add38f6c                           1847 eco      France          National … #> 10 fd41248def                           1458 eco      Germany         National … #> # ℹ 490 more rows #> # ℹ 48 more variables: `Last name` <chr>, `First name` <chr>, Sex <chr>, #> #   Age <dbl>, `Age category` <chr>, `Date of admission` <date>, #> #   `Specimen date` <date>, `Specimen type` <chr>, #> #   `Specimen type (Numeric)` <dbl>, Reason <chr>, `Isolate number` <int>, #> #   `Organism type` <chr>, Serotype <chr>, `Beta-lactamase` <lgl>, ESBL <lgl>, #> #   Carbapenemase <lgl>, `MRSA screening test` <lgl>, …"},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"Use function e.g. clinical texts health care records. returns list antimicrobial drugs, doses forms administration found texts.","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"","code":"ab_from_text(text, type = c(\"drug\", \"dose\", \"administration\"),   collapse = NULL, translate_ab = FALSE, thorough_search = NULL,   info = interactive(), ...)"},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"text text analyse type type property search , either \"drug\", \"dose\" \"administration\", see Examples collapse character pass paste(, collapse = ...) return one character per element text, see Examples translate_ab type = \"drug\": column name antibiotics data set translate antibiotic abbreviations , using ab_property(). default FALSE. Using TRUE equal using \"name\". thorough_search logical indicate whether input must extensively searched misspelling faulty input values. Setting TRUE take considerably time using FALSE. default, turn TRUE input elements contain maximum three words. info logical indicate whether progress bar printed - default TRUE interactive mode ... arguments passed .ab()","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"list,  character collapse NULL","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"function also internally used .ab(), although searches first drug name throw note drug names returned. Note: .ab() function may use long regular expression match brand names antimicrobial drugs. may fail systems.","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"argument-type","dir":"Reference","previous_headings":"","what":"Argument type","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"default, function search antimicrobial drug names. text elements searched official names, ATC codes brand names. uses .ab() internally, correct misspelling. type = \"dose\" (similar, like \"dosing\", \"doses\"), text elements searched numeric values higher 100 resemble years. output numeric. supports unit (g, mg, IE, etc.) multiple values one clinical text, see Examples. type = \"administration\" (abbreviations, like \"admin\", \"adm\"), text elements searched form drug administration. supports following forms (including common abbreviations): buccal, implant, inhalation, instillation, intravenous, nasal, oral, parenteral, rectal, sublingual, transdermal vaginal. Abbreviations oral ('po', 'per os') become \"oral\", values intravenous ('iv', 'intraven') become \"iv\". supports multiple values one clinical text, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"argument-collapse","dir":"Reference","previous_headings":"","what":"Argument collapse","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"Without using collapse, function return list. can convenient use e.g. inside mutate()):df %>% mutate(abx = ab_from_text(clinical_text)) returned AB codes can transformed official names, groups, etc. ab_* functions ab_name() ab_group(), using translate_ab argument. using collapse, function return character:df %>% mutate(abx = ab_from_text(clinical_text, collapse = \"|\"))","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"","code":"# mind the bad spelling of amoxicillin in this line, # straight from a true health care record: ab_from_text(\"28/03/2020 regular amoxicilliin 500mg po tid\") #> [[1]] #> Class 'ab' #> [1] AMX #>   ab_from_text(\"500 mg amoxi po and 400mg cipro iv\") #> [[1]] #> Class 'ab' #> [1] AMX CIP #>  ab_from_text(\"500 mg amoxi po and 400mg cipro iv\", type = \"dose\") #> [[1]] #> [1] 500 400 #>  ab_from_text(\"500 mg amoxi po and 400mg cipro iv\", type = \"admin\") #> [[1]] #> [1] \"oral\" \"iv\"   #>   ab_from_text(\"500 mg amoxi po and 400mg cipro iv\", collapse = \", \") #> [1] \"AMX, CIP\" # \\donttest{ # if you want to know which antibiotic groups were administered, do e.g.: abx <- ab_from_text(\"500 mg amoxi po and 400mg cipro iv\") ab_group(abx[[1]]) #> [1] \"Beta-lactams/penicillins\" \"Quinolones\"                if (require(\"dplyr\")) {   tibble(clinical_text = c(     \"given 400mg cipro and 500 mg amox\",     \"started on doxy iv today\"   )) %>%     mutate(       abx_codes = ab_from_text(clinical_text),       abx_doses = ab_from_text(clinical_text, type = \"doses\"),       abx_admin = ab_from_text(clinical_text, type = \"admin\"),       abx_coll = ab_from_text(clinical_text, collapse = \"|\"),       abx_coll_names = ab_from_text(clinical_text,         collapse = \"|\",         translate_ab = \"name\"       ),       abx_coll_doses = ab_from_text(clinical_text,         type = \"doses\",         collapse = \"|\"       ),       abx_coll_admin = ab_from_text(clinical_text,         type = \"admin\",         collapse = \"|\"       )     ) } #> Loading required package: dplyr #>  #> Attaching package: ‘dplyr’ #> The following objects are masked from ‘package:stats’: #>  #>     filter, lag #> The following objects are masked from ‘package:base’: #>  #>     intersect, setdiff, setequal, union #> # A tibble: 2 × 8 #>   clinical_text            abx_codes abx_doses abx_admin abx_coll abx_coll_names #>   <chr>                    <list>    <list>    <list>    <chr>    <chr>          #> 1 given 400mg cipro and 5… <ab [2]>  <dbl [2]> <chr [1]> CIP|AMX  Ciprofloxacin… #> 2 started on doxy iv today <ab [1]>  <dbl [1]> <chr [1]> DOX      Doxycycline    #> # ℹ 2 more variables: abx_coll_doses <chr>, abx_coll_admin <chr> # }"},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Properties of an Antibiotic — ab_property","title":"Get Properties of an Antibiotic — ab_property","text":"Use functions return specific property antibiotic antibiotics data set. input values evaluated internally .ab().","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Properties of an Antibiotic — ab_property","text":"","code":"ab_name(x, language = get_AMR_locale(), tolower = FALSE, ...)  ab_cid(x, ...)  ab_synonyms(x, ...)  ab_tradenames(x, ...)  ab_group(x, language = get_AMR_locale(), ...)  ab_atc(x, only_first = FALSE, ...)  ab_atc_group1(x, language = get_AMR_locale(), ...)  ab_atc_group2(x, language = get_AMR_locale(), ...)  ab_loinc(x, ...)  ab_ddd(x, administration = \"oral\", ...)  ab_ddd_units(x, administration = \"oral\", ...)  ab_info(x, language = get_AMR_locale(), ...)  ab_url(x, open = FALSE, ...)  ab_property(x, property = \"name\", language = get_AMR_locale(), ...)  set_ab_names(data, ..., property = \"name\", language = get_AMR_locale(),   snake_case = NULL)"},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Properties of an Antibiotic — ab_property","text":"x (vector ) text can coerced valid antibiotic drug code .ab() language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. tolower logical indicate whether first character every output transformed lower case character. lead e.g. \"polymyxin B\" \"polymyxin b\". ... case set_ab_names() data data.frame: columns select (supports tidy selection column1:column4), otherwise arguments passed .ab() only_first logical indicate whether first ATC code must returned, giving preference J0-codes (.e., antimicrobial drug group) administration way administration, either \"oral\" \"iv\" open browse URL using utils::browseURL() property one column names one antibiotics data set: vector_or(colnames(antibiotics), sort = FALSE). data data.frame columns need renamed, character vector column names snake_case logical indicate whether names -called snake case: lower case spaces/slashes replaced underscore (_)","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Properties of an Antibiotic — ab_property","text":"integer case ab_cid() named list case ab_info() multiple ab_atc()/ab_synonyms()/ab_tradenames() double case ab_ddd() data.frame case set_ab_names() character cases","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Properties of an Antibiotic — ab_property","text":"output translated possible. function ab_url() return direct URL official website. warning returned required ATC code available. function set_ab_names() special column renaming function data.frames. renames columns names resemble antimicrobial drugs. always makes sure new column names unique. property = \"atc\" set, preference given ATC codes J-group.","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Get Properties of an Antibiotic — ab_property","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology: https://atcddd.fhi./atc_ddd_index/ European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Get Properties of an Antibiotic — ab_property","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Properties of an Antibiotic — ab_property","text":"","code":"# all properties: ab_name(\"AMX\") #> [1] \"Amoxicillin\" ab_atc(\"AMX\") #> [1] \"J01CA04\" ab_cid(\"AMX\") #> [1] 33613 ab_synonyms(\"AMX\") #>  [1] \"actimoxi\"           \"amoclen\"            \"amolin\"             #>  [4] \"amopen\"             \"amopenixin\"         \"amoxibiotic\"        #>  [7] \"amoxicaps\"          \"amoxicilina\"        \"amoxicilline\"       #> [10] \"amoxicillinhydrate\" \"amoxicillinum\"      \"amoxiden\"           #> [13] \"amoxil\"             \"amoxivet\"           \"amoxy\"              #> [16] \"amoxycillin\"        \"amoxyke\"            \"anemolin\"           #> [19] \"aspenil\"            \"atoksilin\"          \"biomox\"             #> [22] \"bristamox\"          \"cemoxin\"            \"clamoxyl\"           #> [25] \"damoxy\"             \"delacillin\"         \"demoksil\"           #> [28] \"dispermox\"          \"efpenix\"            \"flemoxin\"           #> [31] \"hiconcil\"           \"histocillin\"        \"hydroxyampicillin\"  #> [34] \"ibiamox\"            \"imacillin\"          \"lamoxy\"             #> [37] \"largopen\"           \"metafarmacapsules\"  \"metifarmacapsules\"  #> [40] \"moksilin\"           \"moxacin\"            \"moxatag\"            #> [43] \"ospamox\"            \"pamoxicillin\"       \"piramox\"            #> [46] \"promoxil\"           \"remoxil\"            \"robamox\"            #> [49] \"sawamoxpm\"          \"tolodina\"           \"topramoxin\"         #> [52] \"unicillin\"          \"utimox\"             \"vetramox\"           ab_tradenames(\"AMX\") #>  [1] \"actimoxi\"           \"amoclen\"            \"amolin\"             #>  [4] \"amopen\"             \"amopenixin\"         \"amoxibiotic\"        #>  [7] \"amoxicaps\"          \"amoxicilina\"        \"amoxicilline\"       #> [10] \"amoxicillinhydrate\" \"amoxicillinum\"      \"amoxiden\"           #> [13] \"amoxil\"             \"amoxivet\"           \"amoxy\"              #> [16] \"amoxycillin\"        \"amoxyke\"            \"anemolin\"           #> [19] \"aspenil\"            \"atoksilin\"          \"biomox\"             #> [22] \"bristamox\"          \"cemoxin\"            \"clamoxyl\"           #> [25] \"damoxy\"             \"delacillin\"         \"demoksil\"           #> [28] \"dispermox\"          \"efpenix\"            \"flemoxin\"           #> [31] \"hiconcil\"           \"histocillin\"        \"hydroxyampicillin\"  #> [34] \"ibiamox\"            \"imacillin\"          \"lamoxy\"             #> [37] \"largopen\"           \"metafarmacapsules\"  \"metifarmacapsules\"  #> [40] \"moksilin\"           \"moxacin\"            \"moxatag\"            #> [43] \"ospamox\"            \"pamoxicillin\"       \"piramox\"            #> [46] \"promoxil\"           \"remoxil\"            \"robamox\"            #> [49] \"sawamoxpm\"          \"tolodina\"           \"topramoxin\"         #> [52] \"unicillin\"          \"utimox\"             \"vetramox\"           ab_group(\"AMX\") #> [1] \"Beta-lactams/penicillins\" ab_atc_group1(\"AMX\") #> [1] \"Beta-lactam antibacterials, penicillins\" ab_atc_group2(\"AMX\") #> [1] \"Penicillins with extended spectrum\" ab_url(\"AMX\") #>                                                             Amoxicillin  #> \"https://atcddd.fhi.no/atc_ddd_index//?code=J01CA04&showdescription=no\"   # smart lowercase transformation ab_name(x = c(\"AMC\", \"PLB\")) #> [1] \"Amoxicillin/clavulanic acid\" \"Polymyxin B\"                 ab_name(x = c(\"AMC\", \"PLB\"), tolower = TRUE) #> [1] \"amoxicillin/clavulanic acid\" \"polymyxin B\"                  # defined daily doses (DDD) ab_ddd(\"AMX\", \"oral\") #> [1] 1.5 ab_ddd_units(\"AMX\", \"oral\") #> [1] \"g\" ab_ddd(\"AMX\", \"iv\") #> [1] 3 ab_ddd_units(\"AMX\", \"iv\") #> [1] \"g\"  ab_info(\"AMX\") # all properties as a list #> $ab #> [1] \"AMX\" #>  #> $cid #> [1] 33613 #>  #> $name #> [1] \"Amoxicillin\" #>  #> $group #> [1] \"Beta-lactams/penicillins\" #>  #> $atc #> [1] \"J01CA04\" #>  #> $atc_group1 #> [1] \"Beta-lactam antibacterials, penicillins\" #>  #> $atc_group2 #> [1] \"Penicillins with extended spectrum\" #>  #> $tradenames #>  [1] \"actimoxi\"           \"amoclen\"            \"amolin\"             #>  [4] \"amopen\"             \"amopenixin\"         \"amoxibiotic\"        #>  [7] \"amoxicaps\"          \"amoxicilina\"        \"amoxicilline\"       #> [10] \"amoxicillinhydrate\" \"amoxicillinum\"      \"amoxiden\"           #> [13] \"amoxil\"             \"amoxivet\"           \"amoxy\"              #> [16] \"amoxycillin\"        \"amoxyke\"            \"anemolin\"           #> [19] \"aspenil\"            \"atoksilin\"          \"biomox\"             #> [22] \"bristamox\"          \"cemoxin\"            \"clamoxyl\"           #> [25] \"damoxy\"             \"delacillin\"         \"demoksil\"           #> [28] \"dispermox\"          \"efpenix\"            \"flemoxin\"           #> [31] \"hiconcil\"           \"histocillin\"        \"hydroxyampicillin\"  #> [34] \"ibiamox\"            \"imacillin\"          \"lamoxy\"             #> [37] \"largopen\"           \"metafarmacapsules\"  \"metifarmacapsules\"  #> [40] \"moksilin\"           \"moxacin\"            \"moxatag\"            #> [43] \"ospamox\"            \"pamoxicillin\"       \"piramox\"            #> [46] \"promoxil\"           \"remoxil\"            \"robamox\"            #> [49] \"sawamoxpm\"          \"tolodina\"           \"topramoxin\"         #> [52] \"unicillin\"          \"utimox\"             \"vetramox\"           #>  #> $loinc #>  [1] \"101498-4\" \"15-8\"     \"16-6\"     \"16365-9\"  \"17-4\"     \"18-2\"     #>  [7] \"18861-5\"  \"18862-3\"  \"19-0\"     \"20-8\"     \"21-6\"     \"22-4\"     #> [13] \"25274-2\"  \"25310-4\"  \"3344-9\"   \"55614-2\"  \"55615-9\"  \"55616-7\"  #> [19] \"6976-5\"   \"6977-3\"   \"80133-2\"  #>  #> $ddd #> $ddd$oral #> $ddd$oral$amount #> [1] 1.5 #>  #> $ddd$oral$units #> [1] \"g\" #>  #>  #> $ddd$iv #> $ddd$iv$amount #> [1] 3 #>  #> $ddd$iv$units #> [1] \"g\" #>  #>  #>   # all ab_* functions use as.ab() internally, so you can go from 'any' to 'any': ab_atc(\"AMP\") #> [1] \"J01CA01\" \"S01AA19\" ab_group(\"J01CA01\") #> [1] \"Beta-lactams/penicillins\" ab_loinc(\"ampicillin\") #>  [1] \"101477-8\" \"101478-6\" \"18864-9\"  \"18865-6\"  \"20374-5\"  \"21066-6\"  #>  [7] \"23618-2\"  \"27-3\"     \"28-1\"     \"29-9\"     \"30-7\"     \"31-5\"     #> [13] \"32-3\"     \"33-1\"     \"3355-5\"   \"33562-0\"  \"33919-2\"  \"34-9\"     #> [19] \"43883-8\"  \"43884-6\"  \"6979-9\"   \"6980-7\"   \"87604-5\"  ab_name(\"21066-6\") #> [1] \"Ampicillin\" ab_name(6249) #> [1] \"Ampicillin\" ab_name(\"J01CA01\") #> [1] \"Ampicillin\"  # spelling from different languages and dyslexia are no problem ab_atc(\"ceftriaxon\") #> [1] \"J01DD04\" ab_atc(\"cephtriaxone\") #> [1] \"J01DD04\" ab_atc(\"cephthriaxone\") #> [1] \"J01DD04\" ab_atc(\"seephthriaaksone\") #> [1] \"J01DD04\"  # use set_ab_names() for renaming columns colnames(example_isolates) #>  [1] \"date\"    \"patient\" \"age\"     \"gender\"  \"ward\"    \"mo\"      \"PEN\"     #>  [8] \"OXA\"     \"FLC\"     \"AMX\"     \"AMC\"     \"AMP\"     \"TZP\"     \"CZO\"     #> [15] \"FEP\"     \"CXM\"     \"FOX\"     \"CTX\"     \"CAZ\"     \"CRO\"     \"GEN\"     #> [22] \"TOB\"     \"AMK\"     \"KAN\"     \"TMP\"     \"SXT\"     \"NIT\"     \"FOS\"     #> [29] \"LNZ\"     \"CIP\"     \"MFX\"     \"VAN\"     \"TEC\"     \"TCY\"     \"TGC\"     #> [36] \"DOX\"     \"ERY\"     \"CLI\"     \"AZM\"     \"IPM\"     \"MEM\"     \"MTR\"     #> [43] \"CHL\"     \"COL\"     \"MUP\"     \"RIF\"     colnames(set_ab_names(example_isolates)) #>  [1] \"date\"                          \"patient\"                       #>  [3] \"age\"                           \"gender\"                        #>  [5] \"ward\"                          \"mo\"                            #>  [7] \"benzylpenicillin\"              \"oxacillin\"                     #>  [9] \"flucloxacillin\"                \"amoxicillin\"                   #> [11] \"amoxicillin_clavulanic_acid\"   \"ampicillin\"                    #> [13] \"piperacillin_tazobactam\"       \"cefazolin\"                     #> [15] \"cefepime\"                      \"cefuroxime\"                    #> [17] \"cefoxitin\"                     \"cefotaxime\"                    #> [19] \"ceftazidime\"                   \"ceftriaxone\"                   #> [21] \"gentamicin\"                    \"tobramycin\"                    #> [23] \"amikacin\"                      \"kanamycin\"                     #> [25] \"trimethoprim\"                  \"trimethoprim_sulfamethoxazole\" #> [27] \"nitrofurantoin\"                \"fosfomycin\"                    #> [29] \"linezolid\"                     \"ciprofloxacin\"                 #> [31] \"moxifloxacin\"                  \"vancomycin\"                    #> [33] \"teicoplanin\"                   \"tetracycline\"                  #> [35] \"tigecycline\"                   \"doxycycline\"                   #> [37] \"erythromycin\"                  \"clindamycin\"                   #> [39] \"azithromycin\"                  \"imipenem\"                      #> [41] \"meropenem\"                     \"metronidazole\"                 #> [43] \"chloramphenicol\"               \"colistin\"                      #> [45] \"mupirocin\"                     \"rifampicin\"                    colnames(set_ab_names(example_isolates, NIT:VAN)) #>  [1] \"date\"           \"patient\"        \"age\"            \"gender\"         #>  [5] \"ward\"           \"mo\"             \"PEN\"            \"OXA\"            #>  [9] \"FLC\"            \"AMX\"            \"AMC\"            \"AMP\"            #> [13] \"TZP\"            \"CZO\"            \"FEP\"            \"CXM\"            #> [17] \"FOX\"            \"CTX\"            \"CAZ\"            \"CRO\"            #> [21] \"GEN\"            \"TOB\"            \"AMK\"            \"KAN\"            #> [25] \"TMP\"            \"SXT\"            \"nitrofurantoin\" \"fosfomycin\"     #> [29] \"linezolid\"      \"ciprofloxacin\"  \"moxifloxacin\"   \"vancomycin\"     #> [33] \"TEC\"            \"TCY\"            \"TGC\"            \"DOX\"            #> [37] \"ERY\"            \"CLI\"            \"AZM\"            \"IPM\"            #> [41] \"MEM\"            \"MTR\"            \"CHL\"            \"COL\"            #> [45] \"MUP\"            \"RIF\"            # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     set_ab_names()    # this does the same:   example_isolates %>%     rename_with(set_ab_names)    # set_ab_names() works with any AB property:   example_isolates %>%     set_ab_names(property = \"atc\")    example_isolates %>%     set_ab_names(where(is.sir)) %>%     colnames()    example_isolates %>%     set_ab_names(NIT:VAN) %>%     colnames() } #>  [1] \"date\"           \"patient\"        \"age\"            \"gender\"         #>  [5] \"ward\"           \"mo\"             \"PEN\"            \"OXA\"            #>  [9] \"FLC\"            \"AMX\"            \"AMC\"            \"AMP\"            #> [13] \"TZP\"            \"CZO\"            \"FEP\"            \"CXM\"            #> [17] \"FOX\"            \"CTX\"            \"CAZ\"            \"CRO\"            #> [21] \"GEN\"            \"TOB\"            \"AMK\"            \"KAN\"            #> [25] \"TMP\"            \"SXT\"            \"nitrofurantoin\" \"fosfomycin\"     #> [29] \"linezolid\"      \"ciprofloxacin\"  \"moxifloxacin\"   \"vancomycin\"     #> [33] \"TEC\"            \"TCY\"            \"TGC\"            \"DOX\"            #> [37] \"ERY\"            \"CLI\"            \"AZM\"            \"IPM\"            #> [41] \"MEM\"            \"MTR\"            \"CHL\"            \"COL\"            #> [45] \"MUP\"            \"RIF\"            # }"},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":null,"dir":"Reference","previous_headings":"","what":"Add Custom Antimicrobials — add_custom_antimicrobials","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"add_custom_antimicrobials() can add custom antimicrobial drug names codes.","code":""},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"","code":"add_custom_antimicrobials(x)  clear_custom_antimicrobials()"},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"x data.frame resembling antibiotics data set, least containing columns \"ab\" \"name\"","code":""},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"Important: Due R works, add_custom_antimicrobials() function run every R session - added antimicrobials stored sessions thus lost R exited. two ways circumvent automate process adding antimicrobials: Method 1: Using package option AMR_custom_ab, preferred method. use method: Create data set structure antibiotics data set (containing least columns \"ab\" \"name\") save saveRDS() location choice, e.g. \"~/my_custom_ab.rds\", remote location. Set file location package option AMR_custom_ab: options(AMR_custom_ab = \"~/my_custom_ab.rds\"). can even remote file location, https URL. Since options saved R sessions, best save option .Rprofile file loaded start-R. , open .Rprofile file using e.g. utils::file.edit(\"~/.Rprofile\"), add text save file:   Upon package load, file loaded run add_custom_antimicrobials() function. Method 2: Loading antimicrobial additions directly .Rprofile file. Note definitions stored user-specific R file, suboptimal workflow. use method: Edit .Rprofile file using e.g. utils::file.edit(\"~/.Rprofile\"). Add text like save file:   Use clear_custom_antimicrobials() clear previously added antimicrobials.","code":"# Add custom antimicrobial codes: options(AMR_custom_ab = \"~/my_custom_ab.rds\") # Add custom antibiotic drug codes:  AMR::add_custom_antimicrobials(    data.frame(ab = \"TESTAB\",               name = \"Test Antibiotic\",               group = \"Test Group\")  )"},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"","code":"# \\donttest{  # returns NA and throws a warning (which is suppressed here): suppressWarnings(   as.ab(\"testab\") ) #> Class 'ab' #> [1] <NA>  # now add a custom entry - it will be considered by as.ab() and # all ab_*() functions add_custom_antimicrobials(   data.frame(     ab = \"TESTAB\",     name = \"Test Antibiotic\",     # you can add any property present in the     # 'antibiotics' data set, such as 'group':     group = \"Test Group\"   ) ) #> ℹ Added one record to the internal antibiotics data set.  # \"testab\" is now a new antibiotic: as.ab(\"testab\") #> Class 'ab' #> [1] TESTAB ab_name(\"testab\") #> [1] \"Test Antibiotic\" ab_group(\"testab\") #> [1] \"Test Group\"  ab_info(\"testab\") #> $ab #> [1] \"TESTAB\" #>  #> $cid #> [1] NA #>  #> $name #> [1] \"Test Antibiotic\" #>  #> $group #> [1] \"Test Group\" #>  #> $atc #> [1] NA #>  #> $atc_group1 #> [1] NA #>  #> $atc_group2 #> [1] NA #>  #> $tradenames #> [1] NA #>  #> $loinc #> [1] NA #>  #> $ddd #> $ddd$oral #> $ddd$oral$amount #> [1] NA #>  #> $ddd$oral$units #> [1] NA #>  #>  #> $ddd$iv #> $ddd$iv$amount #> [1] NA #>  #> $ddd$iv$units #> [1] NA #>  #>  #>    # Add Co-fluampicil, which is one of the many J01CR50 codes, see # https://atcddd.fhi.no/ddd/list_of_ddds_combined_products/ add_custom_antimicrobials(   data.frame(     ab = \"COFLU\",     name = \"Co-fluampicil\",     atc = \"J01CR50\",     group = \"Beta-lactams/penicillins\"   ) ) #> ℹ Added one record to the internal antibiotics data set. ab_atc(\"Co-fluampicil\") #> [1] \"J01CR50\" ab_name(\"J01CR50\") #> [1] \"Co-fluampicil\"  # even antimicrobial selectors work x <- data.frame(   random_column = \"some value\",   coflu = as.sir(\"S\"),   ampicillin = as.sir(\"R\") ) x #>   random_column coflu ampicillin #> 1    some value     S          R x[, betalactams()] #> ℹ For betalactams() using columns 'coflu' (co-fluampicil) and #>   'ampicillin' #>   coflu ampicillin #> 1     S          R # }"},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":null,"dir":"Reference","previous_headings":"","what":"Add Custom Microorganisms — add_custom_microorganisms","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"add_custom_microorganisms() can add custom microorganisms, non-taxonomic outcome laboratory analysis.","code":""},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"","code":"add_custom_microorganisms(x)  clear_custom_microorganisms()"},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"x data.frame resembling microorganisms data set, least containing column \"genus\" (case-insensitive)","code":""},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"function fill missing taxonomy , specific taxonomic columns missing, see Examples. Important: Due R works, add_custom_microorganisms() function run every R session - added microorganisms stored sessions thus lost R exited. two ways circumvent automate process adding microorganisms: Method 1: Using package option AMR_custom_mo, preferred method. use method: Create data set structure microorganisms data set (containing least column \"genus\") save saveRDS() location choice, e.g. \"~/my_custom_mo.rds\", remote location. Set file location package option AMR_custom_mo: options(AMR_custom_mo = \"~/my_custom_mo.rds\"). can even remote file location, https URL. Since options saved R sessions, best save option .Rprofile file loaded start-R. , open .Rprofile file using e.g. utils::file.edit(\"~/.Rprofile\"), add text save file:   Upon package load, file loaded run add_custom_microorganisms() function. Method 2: Loading microorganism directly .Rprofile file. Note definitions stored user-specific R file, suboptimal workflow. use method: Edit .Rprofile file using e.g. utils::file.edit(\"~/.Rprofile\"). Add text like save file:   Use clear_custom_microorganisms() clear previously added microorganisms.","code":"# Add custom microorganism codes: options(AMR_custom_mo = \"~/my_custom_mo.rds\") # Add custom antibiotic drug codes:  AMR::add_custom_microorganisms(    data.frame(genus = \"Enterobacter\",               species = \"asburiae/cloacae\")  )"},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"","code":"# \\donttest{ # a combination of species is not formal taxonomy, so # this will result in \"Enterobacter cloacae cloacae\", # since it resembles the input best: mo_name(\"Enterobacter asburiae/cloacae\") #> [1] \"Enterobacter asburiae\"  # now add a custom entry - it will be considered by as.mo() and # all mo_*() functions add_custom_microorganisms(   data.frame(     genus = \"Enterobacter\",     species = \"asburiae/cloacae\"   ) ) #> ℹ Added Enterobacter asburiae/cloacae to the internal microorganisms data #>   set.  # E. asburiae/cloacae is now a new microorganism: mo_name(\"Enterobacter asburiae/cloacae\") #> [1] \"Enterobacter asburiae/cloacae\"  # its code: as.mo(\"Enterobacter asburiae/cloacae\") #> Class 'mo' #> [1] CUSTOM1_ENTRB_ASB/  # all internal algorithms will work as well: mo_name(\"Ent asburia cloacae\") #> [1] \"Enterobacter asburiae/cloacae\"  # and even the taxonomy was added based on the genus! mo_family(\"E. asburiae/cloacae\") #> [1] \"Enterobacteriaceae\" mo_gramstain(\"Enterobacter asburiae/cloacae\") #> [1] \"Gram-negative\"  mo_info(\"Enterobacter asburiae/cloacae\") #> $mo #> [1] \"CUSTOM1_ENTRB_ASB/\" #>  #> $rank #> [1] \"species\" #>  #> $kingdom #> [1] \"Bacteria\" #>  #> $phylum #> [1] \"Pseudomonadota\" #>  #> $class #> [1] \"Gammaproteobacteria\" #>  #> $order #> [1] \"Enterobacterales\" #>  #> $family #> [1] \"Enterobacteriaceae\" #>  #> $genus #> [1] \"Enterobacter\" #>  #> $species #> [1] \"asburiae/cloacae\" #>  #> $subspecies #> [1] \"\" #>  #> $status #> [1] \"accepted\" #>  #> $synonyms #> NULL #>  #> $gramstain #> [1] \"Gram-negative\" #>  #> $oxygen_tolerance #> [1] NA #>  #> $url #> [1] \"\" #>  #> $ref #> [1] \"Self-added, 2025\" #>  #> $snomed #> [1] NA #>  #> $lpsn #> [1] NA #>  #> $mycobank #> [1] NA #>  #> $gbif #> [1] NA #>  #> $group_members #> character(0) #>    # the function tries to be forgiving: add_custom_microorganisms(   data.frame(     GENUS = \"BACTEROIDES / PARABACTEROIDES SLASHLINE\",     SPECIES = \"SPECIES\"   ) ) #> ℹ Added Bacteroides/Parabacteroides to the internal microorganisms data #>   set. mo_name(\"BACTEROIDES / PARABACTEROIDES\") #> [1] \"Bacteroides/Parabacteroides\" mo_rank(\"BACTEROIDES / PARABACTEROIDES\") #> [1] \"genus\"  # taxonomy still works, even though a slashline genus was given as input: mo_family(\"Bacteroides/Parabacteroides\") #> [1] \"Bacteroidaceae\"   # for groups and complexes, set them as species or subspecies: add_custom_microorganisms(   data.frame(     genus = \"Citrobacter\",     species = c(\"freundii\", \"braakii complex\"),     subspecies = c(\"complex\", \"\")   ) ) #> ℹ Added Citrobacter braakii complex and Citrobacter freundii complex to the #>   internal microorganisms data set. mo_name(c(\"C. freundii complex\", \"C. braakii complex\")) #> [1] \"Citrobacter freundii complex\" \"Citrobacter braakii complex\"  mo_species(c(\"C. freundii complex\", \"C. braakii complex\")) #> [1] \"freundii complex\" \"braakii complex\"  mo_gramstain(c(\"C. freundii complex\", \"C. braakii complex\")) #> [1] \"Gram-negative\" \"Gram-negative\" # }"},{"path":"https://msberends.github.io/AMR/reference/age.html","id":null,"dir":"Reference","previous_headings":"","what":"Age in Years of Individuals — age","title":"Age in Years of Individuals — age","text":"Calculates age years based reference date, system date default.","code":""},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Age in Years of Individuals — age","text":"","code":"age(x, reference = Sys.Date(), exact = FALSE, na.rm = FALSE, ...)"},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Age in Years of Individuals — age","text":"x date(s), character (vectors) coerced .POSIXlt() reference reference date(s) (default today), character (vectors) coerced .POSIXlt() exact logical indicate whether age calculation exact, .e. decimals. divides number days year--date (YTD) x number days year reference (either 365 366). na.rm logical indicate whether missing values removed ... arguments passed .POSIXlt(), origin","code":""},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Age in Years of Individuals — age","text":"integer (decimals) exact = FALSE, double (decimals) otherwise","code":""},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Age in Years of Individuals — age","text":"Ages 0 returned NA warning. Ages 120 give warning. function vectorises x reference, meaning either can length 1 argument larger length.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Age in Years of Individuals — age","text":"","code":"# 10 random pre-Y2K birth dates df <- data.frame(birth_date = as.Date(\"2000-01-01\") - runif(10) * 25000)  # add ages df$age <- age(df$birth_date)  # add exact ages df$age_exact <- age(df$birth_date, exact = TRUE)  # add age at millenium switch df$age_at_y2k <- age(df$birth_date, \"2000-01-01\")  df #>    birth_date age age_exact age_at_y2k #> 1  1965-12-05  59  59.17534         34 #> 2  1980-03-01  44  44.93973         19 #> 3  1949-11-01  75  75.26849         50 #> 4  1947-02-14  77  77.98082         52 #> 5  1940-02-19  84  84.96712         59 #> 6  1988-01-10  37  37.07671         11 #> 7  1997-08-27  27  27.44932          2 #> 8  1978-01-26  47  47.03288         21 #> 9  1972-06-17  52  52.64384         27 #> 10 1986-08-10  38  38.49589         13"},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":null,"dir":"Reference","previous_headings":"","what":"Split Ages into Age Groups — age_groups","title":"Split Ages into Age Groups — age_groups","text":"Split ages age groups defined split argument. allows easier demographic (antimicrobial resistance) analysis.","code":""},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Split Ages into Age Groups — age_groups","text":"","code":"age_groups(x, split_at = c(12, 25, 55, 75), na.rm = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Split Ages into Age Groups — age_groups","text":"x age, e.g. calculated age() split_at values split x - default age groups 0-11, 12-24, 25-54, 55-74 75+. See Details. na.rm logical indicate whether missing values removed","code":""},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Split Ages into Age Groups — age_groups","text":"Ordered factor","code":""},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Split Ages into Age Groups — age_groups","text":"split ages, input split_at argument can : numeric vector. value e.g. c(10, 20) split x 0-9, 10-19 20+. value 50 split x 0-49 50+. default split young children (0-11), youth (12-24), young adults (25-54), middle-aged adults (55-74) elderly (75+). character: \"children\" \"kids\", equivalent : c(0, 1, 2, 4, 6, 13, 18). split 0, 1, 2-3, 4-5, 6-12, 13-17 18+. \"elderly\" \"seniors\", equivalent : c(65, 75, 85). split 0-64, 65-74, 75-84, 85+. \"fives\", equivalent : 1:20 * 5. split 0-4, 5-9, ..., 95-99, 100+. \"tens\", equivalent : 1:10 * 10. split 0-9, 10-19, ..., 90-99, 100+.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Split Ages into Age Groups — age_groups","text":"","code":"ages <- c(3, 8, 16, 54, 31, 76, 101, 43, 21)  # split into 0-49 and 50+ age_groups(ages, 50) #> [1] 0-49 0-49 0-49 50+  0-49 50+  50+  0-49 0-49 #> Levels: 0-49 < 50+  # split into 0-19, 20-49 and 50+ age_groups(ages, c(20, 50)) #> [1] 0-19  0-19  0-19  50+   20-49 50+   50+   20-49 20-49 #> Levels: 0-19 < 20-49 < 50+  # split into groups of ten years age_groups(ages, 1:10 * 10) #> [1] 0-9   0-9   10-19 50-59 30-39 70-79 100+  40-49 20-29 #> 11 Levels: 0-9 < 10-19 < 20-29 < 30-39 < 40-49 < 50-59 < 60-69 < ... < 100+ age_groups(ages, split_at = \"tens\") #> [1] 0-9   0-9   10-19 50-59 30-39 70-79 100+  40-49 20-29 #> 11 Levels: 0-9 < 10-19 < 20-29 < 30-39 < 40-49 < 50-59 < 60-69 < ... < 100+  # split into groups of five years age_groups(ages, 1:20 * 5) #> [1] 0-4   5-9   15-19 50-54 30-34 75-79 100+  40-44 20-24 #> 21 Levels: 0-4 < 5-9 < 10-14 < 15-19 < 20-24 < 25-29 < 30-34 < ... < 100+ age_groups(ages, split_at = \"fives\") #> [1] 0-4   5-9   15-19 50-54 30-34 75-79 100+  40-44 20-24 #> 21 Levels: 0-4 < 5-9 < 10-14 < 15-19 < 20-24 < 25-29 < 30-34 < ... < 100+  # split specifically for children age_groups(ages, c(1, 2, 4, 6, 13, 18)) #> [1] 2-3   6-12  13-17 18+   18+   18+   18+   18+   18+   #> Levels: 0 < 1 < 2-3 < 4-5 < 6-12 < 13-17 < 18+ age_groups(ages, \"children\") #> [1] 2-3   6-12  13-17 18+   18+   18+   18+   18+   18+   #> Levels: 0 < 1 < 2-3 < 4-5 < 6-12 < 13-17 < 18+  # \\donttest{ # resistance of ciprofloxacin per age group if (require(\"dplyr\") && require(\"ggplot2\")) {   example_isolates %>%     filter_first_isolate() %>%     filter(mo == as.mo(\"Escherichia coli\")) %>%     group_by(age_group = age_groups(age)) %>%     select(age_group, CIP) %>%     ggplot_sir(       x = \"age_group\",       minimum = 0,       x.title = \"Age Group\",       title = \"Ciprofloxacin resistance per age group\"     ) } #> Loading required package: ggplot2  # }"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"Create detailed antibiograms options traditional, combination, syndromic, Bayesian WISCA methods. Adhering previously described approaches (see Source) especially Bayesian WISCA model (Weighted-Incidence Syndromic Combination Antibiogram) Bielicki et al., functions provide flexible output formats including plots tables, ideal integration R Markdown Quarto reports.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"","code":"antibiogram(x, antibiotics = where(is.sir), mo_transform = \"shortname\",   ab_transform = \"name\", syndromic_group = NULL, add_total_n = FALSE,   only_all_tested = FALSE, digits = ifelse(wisca, 1, 0),   formatting_type = getOption(\"AMR_antibiogram_formatting_type\",   ifelse(wisca, 14, 10)), col_mo = NULL, language = get_AMR_locale(),   minimum = 30, combine_SI = TRUE, sep = \" + \", wisca = FALSE,   simulations = 1000, conf_interval = 0.95, interval_side = \"two-tailed\",   info = interactive())  wisca(x, antibiotics = where(is.sir), mo_transform = \"shortname\",   ab_transform = \"name\", syndromic_group = NULL, add_total_n = FALSE,   only_all_tested = FALSE, digits = 1,   formatting_type = getOption(\"AMR_antibiogram_formatting_type\", 14),   col_mo = NULL, language = get_AMR_locale(), minimum = 30,   combine_SI = TRUE, sep = \" + \", simulations = 1000,   info = interactive())  retrieve_wisca_parameters(wisca_model, ...)  # S3 method for class 'antibiogram' plot(x, ...)  # S3 method for class 'antibiogram' autoplot(object, ...)  # S3 method for class 'antibiogram' knit_print(x, italicise = TRUE,   na = getOption(\"knitr.kable.NA\", default = \"\"), ...)"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"Bielicki JA et al. (2016). Selecting appropriate empirical antibiotic regimens paediatric bloodstream infections: application Bayesian decision model local pooled antimicrobial resistance surveillance data Journal Antimicrobial Chemotherapy 71(3); doi:10.1093/jac/dkv397 Bielicki JA et al. (2020). Evaluation coverage 3 antibiotic regimens neonatal sepsis hospital setting across Asian countries JAMA Netw Open. 3(2):e1921124; doi:10.1001.jamanetworkopen.2019.21124 Klinker KP et al. (2021). Antimicrobial stewardship antibiograms: importance moving beyond traditional antibiograms. Therapeutic Advances Infectious Disease, May 5;8:20499361211011373; doi:10.1177/20499361211011373 Barbieri E et al. (2021). Development Weighted-Incidence Syndromic Combination Antibiogram (WISCA) guide choice empiric antibiotic treatment urinary tract infection paediatric patients: Bayesian approach Antimicrobial Resistance & Infection Control May 1;10(1):74; doi:10.1186/s13756-021-00939-2 M39 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 5th Edition, 2022, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m39/.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"x data.frame containing least column microorganisms columns antimicrobial results (class 'sir', see .sir()) antibiotics vector antimicrobial name code (evaluated .ab(), column name x, (combinations ) antimicrobial selectors aminoglycosides() carbapenems(). combination antibiograms, can also set values separated \"+\", \"TZP+TOB\" \"cipro + genta\", given columns resembling antimicrobials exist x. See Examples. mo_transform character transform microorganism input - must \"name\", \"shortname\" (default), \"gramstain\", one column names microorganisms data set: \"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\", \"snomed\". Can also NULL transform input NA consider microorganisms 'unknown'. ab_transform character transform antimicrobial input - must one column names antibiotics data set (defaults \"name\"): \"ab\", \"cid\", \"name\", \"group\", \"atc\", \"atc_group1\", \"atc_group2\", \"abbreviations\", \"synonyms\", \"oral_ddd\", \"oral_units\", \"iv_ddd\", \"iv_units\", \"loinc\". Can also NULL transform input. syndromic_group column name x, values calculated split rows x, e.g. using ifelse() case_when(). See Examples. add_total_n logical indicate whether total available numbers per pathogen added table (default TRUE). add lowest highest number available isolates per antimicrobial (e.g, E. coli 200 isolates available ciprofloxacin 150 amoxicillin, returned number \"150-200\"). only_all_tested (combination antibiograms): logical indicate isolates must tested antimicrobials, see Details digits number digits use rounding antimicrobial coverage, defaults 1 WISCA 0 otherwise formatting_type numeric value (1–22 WISCA, 1-12 non-WISCA) indicating 'cells' antibiogram table formatted. See Details > Formatting Type list options. col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). language language translate text, defaults system language (see get_AMR_locale()) minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. combine_SI logical indicate whether susceptibility determined results either S, SDD, , instead S (default TRUE) sep separating character antimicrobial columns combination antibiograms wisca logical indicate whether Weighted-Incidence Syndromic Combination Antibiogram (WISCA) must generated (default FALSE). use Bayesian decision model estimate regimen coverage probabilities using Monte Carlo simulations. Set simulations adjust. simulations (WISCA) numerical value set number Monte Carlo simulations conf_interval (WISCA) numerical value set confidence interval (default 0.95) interval_side (WISCA) side confidence interval, either \"two-tailed\" (default), \"left\" \"right\" info logical indicate info printed - default TRUE interactive mode wisca_model outcome wisca() antibiogram(..., wisca = TRUE) ... used R Markdown Quarto: arguments passed knitr::kable() (otherwise, use) object antibiogram() object italicise logical indicate whether microorganism names knitr table made italic, using italicise_taxonomy(). na character use showing NA values","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"functions return table values 0 100 susceptibility, resistance. Remember filter data let contain first isolates! needed exclude duplicates reduce selection bias. Use first_isolate() determine one four available algorithms: isolate-based, patient-based, episode-based, phenotype-based. estimating antimicrobial coverage, especially creating WISCA, outcome might become reliable including top n species encountered data. can filter top n using top_n_microorganisms(). example, use top_n_microorganisms(your_data, n = 10) pre-processing step include top 10 species data. numeric values antibiogram stored long format attribute long_numeric. can retrieve using attributes(x)$long_numeric, x outcome antibiogram() wisca(). ideal e.g. advanced plotting.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"formatting-type","dir":"Reference","previous_headings":"","what":"Formatting Type","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"formatting 'cells' table can set argument formatting_type. examples, 5 antimicrobial coverage (WISCA: 4-6 indicates confidence level), 15 numerator, 300 denominator: 5 15 300 15/300 5 (300) 5% (300) 5 (N=300) 5% (N=300) 5 (15/300) 5% (15/300) - default non-WISCA 5 (N=15/300) 5% (N=15/300) Additional options WISCA (using antibiogram(..., wisca = TRUE) wisca()): 5 (4-6) 5% (4-6%) - default WISCA 5 (4-6,300) 5% (4-6%,300) 5 (4-6,N=300) 5% (4-6%,N=300) 5 (4-6,15/300) 5% (4-6%,15/300) 5 (4-6,N=15/300) 5% (4-6%,N=15/300) default 14 WISCA 10 non-WISCA, can set globally package option AMR_antibiogram_formatting_type, e.g. options(AMR_antibiogram_formatting_type = 5). note WISCA, numerator denominator less useful report, since included Bayesian model apparent susceptibility confidence level. Set digits (defaults 0) alter rounding susceptibility percentages.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"antibiogram-types","dir":"Reference","previous_headings":"","what":"Antibiogram Types","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"various antibiogram types, summarised Klinker et al. (2021, doi:10.1177/20499361211011373 ), supported antibiogram(). Use WISCA whenever possible, since provides precise coverage estimates accounting pathogen incidence antimicrobial susceptibility, shown Bielicki et al. (2020, doi:10.1001.jamanetworkopen.2019.21124 ). See section Explaining WISCA page. Traditional Antibiogram Case example: Susceptibility Pseudomonas aeruginosa piperacillin/tazobactam (TZP) Code example:   Combination Antibiogram Case example: Additional susceptibility Pseudomonas aeruginosa TZP + tobramycin versus TZP alone Code example:   Syndromic Antibiogram Case example: Susceptibility Pseudomonas aeruginosa TZP among respiratory specimens (obtained among ICU patients ) Code example:   Weighted-Incidence Syndromic Combination Antibiogram (WISCA) WISCA can applied antibiogram, see section Explaining WISCA page information. Code example:   WISCA uses sophisticated Bayesian decision model combine local pooled antimicrobial resistance data. approach evaluates local patterns can also draw multi-centre datasets improve regimen accuracy, even low-incidence infections like paediatric bloodstream infections (BSIs).","code":"antibiogram(your_data,             antibiotics = \"TZP\") antibiogram(your_data,             antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\")) antibiogram(your_data,             antibiotics = penicillins(),             syndromic_group = \"ward\") antibiogram(your_data,             antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"),             wisca = TRUE)  # this is equal to: wisca(your_data,       antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"))"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"grouped-tibbles","dir":"Reference","previous_headings":"","what":"Grouped tibbles","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"type antibiogram, grouped tibbles can also used calculate susceptibilities various groups. Code example:","code":"library(dplyr) your_data %>%   group_by(has_sepsis, is_neonate, sex) %>%   wisca(antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"))"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"stepped-approach-for-clinical-insight","dir":"Reference","previous_headings":"","what":"Stepped Approach for Clinical Insight","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"clinical practice, antimicrobial coverage decisions evolve microbiological data becomes available. theoretical stepped approach ensures empirical coverage can continuously assessed improve patient outcomes: Initial Empirical Therapy (Admission / Pre-Culture Data) admission, pathogen information available. Action: broad-spectrum coverage based local resistance patterns syndromic antibiograms. Code example:   Refinement Gram Stain Results blood culture becomes positive, Gram stain provides initial crucial first stratification (Gram-positive vs. Gram-negative). Action: narrow coverage based Gram stain-specific resistance patterns. Code example:   Definitive Therapy Based Species Identification cultivation pathogen, full pathogen identification allows precise targeting therapy. Action: adjust treatment pathogen-specific antibiograms, minimizing resistance risks. Code example:   structuring antibiograms around stepped approach, clinicians can make data-driven adjustments stage, ensuring optimal empirical targeted therapy reducing unnecessary broad-spectrum antimicrobial use.","code":"antibiogram(your_data,             antibiotics = selected_regimens,             wisca = TRUE,             mo_transform = NA) # all pathogens set to `NA` antibiogram(your_data,             antibiotics = selected_regimens,             wisca = TRUE,             mo_transform = \"gramstain\") # all pathogens set to Gram-pos/Gram-neg antibiogram(your_data,             antibiotics = selected_regimens,             wisca = TRUE,             mo_transform = \"shortname\") # all pathogens set to 'G. species', e.g., E. coli"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"inclusion-in-combination-antibiograms","dir":"Reference","previous_headings":"","what":"Inclusion in Combination Antibiograms","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"Note combination antibiograms, important realise susceptibility can calculated two ways, can set only_all_tested argument (default FALSE). See example two antimicrobials, Drug Drug B, antibiogram() works calculate %SI:","code":"--------------------------------------------------------------------                     only_all_tested = FALSE  only_all_tested = TRUE                     -----------------------  -----------------------  Drug A    Drug B   considered   considered  considered   considered                     susceptible    tested    susceptible    tested --------  --------  -----------  ----------  -----------  ----------  S or I    S or I        X            X           X            X    R       S or I        X            X           X            X   <NA>     S or I        X            X           -            -  S or I      R           X            X           X            X    R         R           -            X           -            X   <NA>       R           -            -           -            -  S or I     <NA>         X            X           -            -    R        <NA>         -            -           -            -   <NA>      <NA>         -            -           -            - --------------------------------------------------------------------"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"plotting","dir":"Reference","previous_headings":"","what":"Plotting","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"types antibiograms listed can plotted (using ggplot2::autoplot() base R's plot() barplot()). mentioned , numeric values antibiogram stored long format attribute long_numeric. can retrieve using attributes(x)$long_numeric, x outcome antibiogram() wisca(). outcome antibiogram() can also used directly R Markdown / Quarto (.e., knitr) reports. case, knitr::kable() applied automatically microorganism names even printed italics default (see argument italicise). can also use functions specific 'table reporting' packages transform output antibiogram() needs, e.g. flextable::as_flextable() gt::gt().","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"explaining-wisca","dir":"Reference","previous_headings":"","what":"Explaining WISCA","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"WISCA, outlined Bielicki et al. (doi:10.1093/jac/dkv397 ), stands Weighted-Incidence Syndromic Combination Antibiogram, estimates probability adequate empirical antimicrobial regimen coverage specific infection syndromes. method leverages Bayesian hierarchical logistic regression framework random effects pathogens regimens, enabling robust estimates presence sparse data. Bayesian model assumes conjugate priors parameter estimation. example, coverage probability \\(\\theta\\) given antimicrobial regimen modelled using Beta distribution prior: $$\\theta \\sim \\text{Beta}(\\alpha_0, \\beta_0)$$ \\(\\alpha_0\\) \\(\\beta_0\\) represent prior successes failures, respectively, informed expert knowledge weakly informative priors (e.g., \\(\\alpha_0 = 1, \\beta_0 = 1\\)). likelihood function constructed based observed data, number covered cases regimen follows binomial distribution: $$y \\sim \\text{Binomial}(n, \\theta)$$ Posterior parameter estimates obtained combining prior likelihood using Bayes' theorem. posterior distribution \\(\\theta\\) also Beta distribution: $$\\theta | y \\sim \\text{Beta}(\\alpha_0 + y, \\beta_0 + n - y)$$ Pathogen incidence, representing proportion infections caused different pathogens, modelled using Dirichlet distribution, natural conjugate prior multinomial outcomes. Dirichlet distribution parameterised vector concentration parameters \\(\\alpha\\), \\(\\alpha_i\\) corresponds specific pathogen. prior typically chosen uniform (\\(\\alpha_i = 1\\)), reflecting assumption equal prior probability across pathogens. posterior distribution pathogen incidence given : $$\\text{Dirichlet}(\\alpha_1 + n_1, \\alpha_2 + n_2, \\dots, \\alpha_K + n_K)$$ \\(n_i\\) number infections caused pathogen \\(\\) observed data. practical implementation, pathogen incidences sampled posterior using normalised Gamma-distributed random variables: $$x_i \\sim \\text{Gamma}(\\alpha_i + n_i, 1)$$ $$p_i = \\frac{x_i}{\\sum_{j=1}^K x_j}$$ \\(x_i\\) represents unnormalised pathogen counts, \\(p_i\\) normalised proportion pathogen \\(\\). hierarchical modelling, pathogen-level effects (e.g., differences resistance patterns) regimen-level effects modelled using Gaussian priors log-odds. hierarchical structure ensures partial pooling estimates across groups, improving stability strata small sample sizes. model implemented using Hamiltonian Monte Carlo (HMC) sampling. Stratified results can provided based covariates age, sex, clinical complexity (e.g., prior antimicrobial treatments renal/urological comorbidities) using dplyr's group_by() pre-processing step running wisca(). Posterior odds ratios (ORs) derived quantify effect covariates coverage probabilities: $$\\text{}_{\\text{covariate}} = \\frac{\\exp(\\beta_{\\text{covariate}})}{\\exp(\\beta_0)}$$ combining empirical data prior knowledge, WISCA overcomes limitations traditional combination antibiograms, offering disease-specific, patient-stratified estimates robust uncertainty quantification. tool invaluable antimicrobial stewardship programs empirical treatment guideline refinement.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"Implementation: Dr. Larisse Bolton Dr. Matthijs Berends","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"","code":"# example_isolates is a data set available in the AMR package. # run ?example_isolates for more info. example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # \\donttest{ # Traditional antibiogram ----------------------------------------------  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) #> # An Antibiogram (non-WISCA): 10 × 7 #>    Pathogen       Amikacin    Gentamicin Imipenem Kanamycin Meropenem Tobramycin #>  * <chr>          <chr>       <chr>      <chr>    <chr>     <chr>     <chr>      #>  1 CoNS           0% (0/43)   86% (267/… 52% (25… 0% (0/43) 52% (25/… 22% (12/5… #>  2 E. coli        100% (171/… 98% (451/… 100% (4… NA        100% (41… 97% (450/… #>  3 E. faecalis    0% (0/39)   0% (0/39)  100% (3… 0% (0/39) NA        0% (0/39)  #>  4 K. pneumoniae  NA          90% (52/5… 100% (5… NA        100% (53… 90% (52/5… #>  5 P. aeruginosa  NA          100% (30/… NA       0% (0/30) NA        100% (30/… #>  6 P. mirabilis   NA          94% (32/3… 94% (30… NA        NA        94% (32/3… #>  7 S. aureus      NA          99% (231/… NA       NA        NA        98% (84/8… #>  8 S. epidermidis 0% (0/44)   79% (128/… NA       0% (0/44) NA        51% (45/8… #>  9 S. hominis     NA          92% (74/8… NA       NA        NA        85% (53/6… #> 10 S. pneumoniae  0% (0/117)  0% (0/117) NA       0% (0/11… NA        0% (0/117) #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram  antibiogram(example_isolates,   antibiotics = aminoglycosides(),   ab_transform = \"atc\",   mo_transform = \"gramstain\" ) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # An Antibiogram (non-WISCA): 2 × 5 #>   Pathogen      J01GB01       J01GB03        J01GB04    J01GB06       #> * <chr>         <chr>         <chr>          <chr>      <chr>         #> 1 Gram-negative 96% (658/686) 96% (659/684)  0% (0/35)  98% (251/256) #> 2 Gram-positive 34% (228/665) 63% (740/1170) 0% (0/436) 0% (0/436)    #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram  antibiogram(example_isolates,   antibiotics = carbapenems(),   ab_transform = \"name\",   mo_transform = \"name\" ) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> # An Antibiogram (non-WISCA): 5 × 3 #>   Pathogen                                 Imipenem       Meropenem      #> * <chr>                                    <chr>          <chr>          #> 1 Coagulase-negative Staphylococcus (CoNS) 52% (25/48)    52% (25/48)    #> 2 Enterococcus faecalis                    100% (38/38)   NA             #> 3 Escherichia coli                         100% (422/422) 100% (418/418) #> 4 Klebsiella pneumoniae                    100% (51/51)   100% (53/53)   #> 5 Proteus mirabilis                        94% (30/32)    NA             #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram   # Combined antibiogram -------------------------------------------------  # combined antibiotics yield higher empiric coverage antibiogram(example_isolates,   antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"),   mo_transform = \"gramstain\" ) #> # An Antibiogram (non-WISCA): 2 × 4 #>   Pathogen  Piperacillin/tazobac…¹ Piperacillin/tazobac…² Piperacillin/tazobac…³ #> * <chr>     <chr>                  <chr>                  <chr>                  #> 1 Gram-neg… 88% (565/641)          99% (681/691)          98% (679/693)          #> 2 Gram-pos… 86% (296/345)          98% (1018/1044)        95% (524/550)          #> # ℹ abbreviated names: ¹​`Piperacillin/tazobactam`, #> #   ²​`Piperacillin/tazobactam + Gentamicin`, #> #   ³​`Piperacillin/tazobactam + Tobramycin` #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram  # names of antibiotics do not need to resemble columns exactly: antibiogram(example_isolates,   antibiotics = c(\"Cipro\", \"cipro + genta\"),   mo_transform = \"gramstain\",   ab_transform = \"name\",   sep = \" & \" ) #> # An Antibiogram (non-WISCA): 2 × 3 #>   Pathogen      Ciprofloxacin `Ciprofloxacin & Gentamicin` #> * <chr>         <chr>         <chr>                        #> 1 Gram-negative 91% (621/684) 99% (684/694)                #> 2 Gram-positive 77% (560/724) 93% (784/847)                #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram   # Syndromic antibiogram ------------------------------------------------  # the data set could contain a filter for e.g. respiratory specimens 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) #> # An Antibiogram (non-WISCA): 14 × 8 #>    `Syndromic Group` Pathogen   Amikacin Gentamicin Imipenem Kanamycin Meropenem #>  * <chr>             <chr>      <chr>    <chr>      <chr>    <chr>     <chr>     #>  1 Clinical          CoNS       NA       89% (183/… 57% (20… NA        57% (20/… #>  2 ICU               CoNS       NA       79% (58/7… NA       NA        NA        #>  3 Outpatient        CoNS       NA       84% (26/3… NA       NA        NA        #>  4 Clinical          E. coli    100% (1… 98% (291/… 100% (2… NA        100% (27… #>  5 ICU               E. coli    100% (5… 99% (135/… 100% (1… NA        100% (11… #>  6 Clinical          K. pneumo… NA       92% (47/5… 100% (4… NA        100% (46… #>  7 Clinical          P. mirabi… NA       100% (30/… NA       NA        NA        #>  8 Clinical          S. aureus  NA       99% (148/… NA       NA        NA        #>  9 ICU               S. aureus  NA       100% (66/… NA       NA        NA        #> 10 Clinical          S. epider… NA       82% (65/7… NA       NA        NA        #> 11 ICU               S. epider… NA       72% (54/7… NA       NA        NA        #> 12 Clinical          S. hominis NA       96% (43/4… NA       NA        NA        #> 13 Clinical          S. pneumo… 0% (0/7… 0% (0/78)  NA       0% (0/78) NA        #> 14 ICU               S. pneumo… 0% (0/3… 0% (0/30)  NA       0% (0/30) NA        #> # ℹ 1 more variable: Tobramycin <chr> #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram  # now define a data set with only E. coli ex1 <- example_isolates[which(mo_genus() == \"Escherichia\"), ] #> ℹ Using column 'mo' as input for mo_genus()  # with a custom language, though this will be determined automatically # (i.e., this table will be in Spanish on Spanish systems) antibiogram(ex1,   antibiotics = aminoglycosides(),   ab_transform = \"name\",   syndromic_group = ifelse(ex1$ward == \"ICU\",     \"UCI\", \"No UCI\"   ),   language = \"es\" ) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # An Antibiogram (non-WISCA): 2 × 5 #>   `Grupo sindrómico` Patógeno Amikacina      Gentamicina   Tobramicina   #> * <chr>              <chr>    <chr>          <chr>         <chr>         #> 1 No UCI             E. coli  100% (119/119) 98% (316/323) 98% (318/325) #> 2 UCI                E. coli  100% (52/52)   99% (135/137) 96% (132/137) #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram   # WISCA antibiogram ----------------------------------------------------  # can be used for any of the above types - just add `wisca = TRUE` antibiogram(example_isolates,   antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"),   mo_transform = \"gramstain\",   wisca = TRUE ) #> # An Antibiogram (WISCA / 95% CI): 2 × 4 #>   Pathogen  Piperacillin/tazobac…¹ Piperacillin/tazobac…² Piperacillin/tazobac…³ #> * <chr>     <chr>                  <chr>                  <chr>                  #> 1 Gram-neg… 88% (85.2-90.5%)       98.4% (97.3-99.2%)     97.9% (96.6-98.7%)     #> 2 Gram-pos… 85.6% (81.9-89.1%)     97.4% (96.4-98.3%)     95.1% (93.2-96.7%)     #> # ℹ abbreviated names: ¹​`Piperacillin/tazobactam`, #> #   ²​`Piperacillin/tazobactam + Gentamicin`, #> #   ³​`Piperacillin/tazobactam + Tobramycin` #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram   # Print the output for R Markdown / Quarto -----------------------------  ureido <- antibiogram(example_isolates,   antibiotics = ureidopenicillins(),   ab_transform = \"name\",   wisca = TRUE ) #> ℹ For ureidopenicillins() using column 'TZP' (piperacillin/tazobactam)  # in an Rmd file, you would just need to return `ureido` in a chunk, # but to be explicit here: if (requireNamespace(\"knitr\")) {   cat(knitr::knit_print(ureido)) } #>  #>  #> |Pathogen        |Piperacillin/tazobactam | #> |:---------------|:-----------------------| #> |*B. fragilis*   |4.4% (0.1-15.3%)        | #> |CoNS            |31.4% (17.4-47.1%)      | #> |*E. cloacae*    |73.1% (52.1-88.2%)      | #> |*E. coli*       |94.3% (91.9-96.3%)      | #> |*E. faecalis*   |94.8% (81.5-99.9%)      | #> |*E. faecium*    |9.7% (1.4-25.6%)        | #> |GBS             |94.9% (82.5-99.9%)      | #> |*K. pneumoniae* |87% (77.8-94.3%)        | #> |*P. aeruginosa* |96.4% (86.8-99.9%)      | #> |*P. mirabilis*  |96.6% (86.9-100%)       | #> |*S. anginosus*  |94.1% (79.6-99.8%)      | #> |*S. marcescens* |49.9% (30.8-67.8%)      | #> |*S. pneumoniae* |99.1% (96.9-100%)       | #> |*S. pyogenes*   |94.2% (81.1-99.8%)      |   # Generate plots with ggplot2 or base R --------------------------------  ab1 <- antibiogram(example_isolates,   antibiotics = c(\"AMC\", \"CIP\", \"TZP\", \"TZP+TOB\"),   mo_transform = \"gramstain\",   wisca = TRUE ) ab2 <- antibiogram(example_isolates,   antibiotics = c(\"AMC\", \"CIP\", \"TZP\", \"TZP+TOB\"),   mo_transform = \"gramstain\",   syndromic_group = \"ward\" )  if (requireNamespace(\"ggplot2\")) {   ggplot2::autoplot(ab1) }  if (requireNamespace(\"ggplot2\")) {   ggplot2::autoplot(ab2) }   plot(ab1)  plot(ab2)  # }"},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Sets with 607 Antimicrobial Drugs — antibiotics","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"Two data sets containing antibiotics/antimycotics antivirals. Use .ab() one ab_* functions retrieve values antibiotics data set. Three identifiers included data set: antibiotic ID (ab, primarily used package) defined WHONET/EARS-Net, ATC code (atc) defined , Compound ID (cid) found PubChem. properties data set derived one codes. Note drugs multiple ATC codes.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"","code":"antibiotics  antivirals"},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"object class tbl_df (inherits tbl, data.frame) 120 rows 11 columns.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"for-the-antibiotics-data-set-a-tibble-with-observations-and-variables-","dir":"Reference","previous_headings":"","what":"For the antibiotics data set: a tibble with 487 observations and 14 variables:","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"ab Antibiotic ID used package (AMC), using official EARS-Net (European Antimicrobial Resistance Surveillance Network) codes available. unique identifier. cid Compound ID found PubChem. unique identifier. name Official name used WHONET/EARS-Net . unique identifier. group short concise group name, based WHONET WHOCC definitions atc ATC codes (Anatomical Therapeutic Chemical) defined WHOCC, like J01CR02 atc_group1 Official pharmacological subgroup (3rd level ATC code) defined WHOCC, like \"Macrolides, lincosamides streptogramins\" atc_group2 Official chemical subgroup (4th level ATC code) defined WHOCC, like \"Macrolides\" abbr List abbreviations used many countries, also antibiotic susceptibility testing (AST) synonyms Synonyms (often trade names) drug, found PubChem based compound ID oral_ddd Defined Daily Dose (DDD), oral treatment, currently available 179 drugs oral_units Units oral_ddd iv_ddd Defined Daily Dose (DDD), parenteral (intravenous) treatment, currently available 153 drugs iv_units Units iv_ddd loinc codes associated name antimicrobial drug Logical Observation Identifiers Names Codes (LOINC), Version 2.76 (18 September, 2023). Use ab_loinc() retrieve quickly, see ab_property().","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"for-the-antivirals-data-set-a-tibble-with-observations-and-variables-","dir":"Reference","previous_headings":"","what":"For the antivirals data set: a tibble with 120 observations and 11 variables:","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"av Antiviral ID used package (ACI), using official EARS-Net (European Antimicrobial Resistance Surveillance Network) codes available. unique identifier. Combinations codes contain + indicate , ATA+COBI atazanavir/cobicistat. name Official name used WHONET/EARS-Net . unique identifier. atc ATC codes (Anatomical Therapeutic Chemical) defined WHOCC cid Compound ID found PubChem. unique identifier. atc_group Official pharmacological subgroup (3rd level ATC code) defined WHOCC synonyms Synonyms (often trade names) drug, found PubChem based compound ID oral_ddd Defined Daily Dose (DDD), oral treatment oral_units Units oral_ddd iv_ddd Defined Daily Dose (DDD), parenteral treatment iv_units Units iv_ddd loinc codes associated name antiviral drug Logical Observation Identifiers Names Codes (LOINC), Version 2.76 (18 September, 2023). Use av_loinc() retrieve quickly, see av_property().","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology (WHOCC): https://atcddd.fhi./atc_ddd_index/ Logical Observation Identifiers Names Codes (LOINC), Version 2.76 (18 September, 2023). Accessed https://loinc.org October 19th, 2023. European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"Properties based ATC code available ATC available. properties : atc_group1, atc_group2, oral_ddd, oral_units, iv_ddd iv_units. Synonyms (.e. trade names) derived PubChem Compound ID (column cid) consequently available CID available.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"direct-download","dir":"Reference","previous_headings":"","what":"Direct download","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"Like data sets package, data sets publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"whocc","dir":"Reference","previous_headings":"","what":"WHOCC","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"package contains ~550 antibiotic, antimycotic antiviral drugs Anatomical Therapeutic Chemical (ATC) codes, ATC groups Defined Daily Dose (DDD) World Health Organization Collaborating Centre Drug Statistics Methodology (WHOCC, https://atcddd.fhi.) Pharmaceuticals Community Register European Commission (https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm). become gold standard international drug utilisation monitoring research. WHOCC located Oslo Norwegian Institute Public Health funded Norwegian government. European Commission executive European Union promotes general interest. NOTE: WHOCC copyright allow use commercial purposes, unlike info package. See https://atcddd.fhi./copyright_disclaimer/.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"","code":"antibiotics #> # A tibble: 487 × 14 #>    ab        cid name   group atc   atc_group1 atc_group2 abbreviations synonyms #>    <ab>    <dbl> <chr>  <chr> <lis> <chr>      <chr>      <list>        <named > #>  1 AMA      4649 4-ami… Anti… <chr> Drugs for… Aminosali… <chr [1]>     <chr>    #>  2 ACM   6450012 Acety… Macr… <chr> NA         NA         <chr [1]>     <chr>    #>  3 ASP  49787020 Acety… Macr… <chr> NA         NA         <chr [1]>     <chr>    #>  4 ALS      8954 Aldes… Othe… <chr> Drugs for… Drugs for… <chr [1]>     <chr>    #>  5 AMK     37768 Amika… Amin… <chr> Aminoglyc… Other ami… <chr [5]>     <chr>    #>  6 AKF        NA Amika… Amin… <chr> NA         NA         <chr [1]>     <chr>    #>  7 AMO     54260 Amoro… Anti… <chr> Antifunga… Other ant… <chr [1]>     <chr>    #>  8 AMX     33613 Amoxi… Beta… <chr> Beta-lact… Penicilli… <chr [3]>     <chr>    #>  9 AMC  23665637 Amoxi… Beta… <chr> Beta-lact… Combinati… <chr [5]>     <chr>    #> 10 AXS    465441 Amoxi… Beta… <chr> NA         NA         <chr [1]>     <chr>    #> # ℹ 477 more rows #> # ℹ 5 more variables: oral_ddd <dbl>, oral_units <chr>, iv_ddd <dbl>, #> #   iv_units <chr>, loinc <list> antivirals #> # A tibble: 120 × 11 #>    av       name      atc      cid atc_group synonyms oral_ddd oral_units iv_ddd #>    <av>     <chr>     <chr>  <dbl> <chr>     <list>      <dbl> <chr>       <dbl> #>  1 ABA      Abacavir  J05A… 4.41e5 Nucleosi… <chr>         0.6 g              NA #>  2 ACI      Aciclovir J05A… 1.35e8 Nucleosi… <chr>         4   g               4 #>  3 ADD      Adefovir… J05A… 6.09e4 Nucleosi… <chr>        10   mg             NA #>  4 AME      Amenamev… J05A… 1.14e7 Other an… <chr>         0.4 g              NA #>  5 AMP      Amprenav… J05A… 6.50e4 Protease… <chr>         1.2 g              NA #>  6 ASU      Asunapre… J05A… 1.61e7 Antivira… <chr>         0.2 g              NA #>  7 ATA      Atazanav… J05A… 1.48e5 Protease… <chr>         0.3 g              NA #>  8 ATA+COBI Atazanav… J05A… 8.66e7 Antivira… <chr>        NA   NA             NA #>  9 ATA+RIT  Atazanav… J05A… 2.51e7 Antivira… <chr>         0.3 g              NA #> 10 BAM      Baloxavi… J05A… 1.24e8 Other an… <chr>        40   mg             NA #> # ℹ 110 more rows #> # ℹ 2 more variables: iv_units <chr>, loinc <list>"},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":null,"dir":"Reference","previous_headings":"","what":"Antimicrobial Selectors — antimicrobial_class_selectors","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"functions allow filtering rows selecting columns based antimicrobial test results specific antimicrobial class group, without need define columns antimicrobial abbreviations. short, column name resembles antimicrobial drug, picked functions matches pharmaceutical class: \"cefazolin\", \"kefzol\", \"CZO\" \"J01DB04\" picked using:","code":"library(dplyr) my_data_with_all_these_columns %>%   select(cephalosporins())"},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"","code":"amr_class(amr_class, only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  amr_selector(filter, only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  aminoglycosides(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  aminopenicillins(only_sir_columns = FALSE, return_all = TRUE, ...)  antifungals(only_sir_columns = FALSE, return_all = TRUE, ...)  antimycobacterials(only_sir_columns = FALSE, return_all = TRUE, ...)  betalactams(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  betalactams_with_inhibitor(only_sir_columns = FALSE, return_all = TRUE,   ...)  carbapenems(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  cephalosporins(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_1st(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_2nd(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_3rd(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_4th(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_5th(only_sir_columns = FALSE, return_all = TRUE, ...)  fluoroquinolones(only_sir_columns = FALSE, return_all = TRUE, ...)  glycopeptides(only_sir_columns = FALSE, return_all = TRUE, ...)  isoxazolylpenicillins(only_sir_columns = FALSE, return_all = TRUE, ...)  lincosamides(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  lipoglycopeptides(only_sir_columns = FALSE, return_all = TRUE, ...)  macrolides(only_sir_columns = FALSE, return_all = TRUE, ...)  monobactams(only_sir_columns = FALSE, return_all = TRUE, ...)  nitrofurans(only_sir_columns = FALSE, return_all = TRUE, ...)  oxazolidinones(only_sir_columns = FALSE, return_all = TRUE, ...)  penicillins(only_sir_columns = FALSE, return_all = TRUE, ...)  phenicols(only_sir_columns = FALSE, return_all = TRUE, ...)  polymyxins(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  quinolones(only_sir_columns = FALSE, return_all = TRUE, ...)  rifamycins(only_sir_columns = FALSE, return_all = TRUE, ...)  streptogramins(only_sir_columns = FALSE, return_all = TRUE, ...)  tetracyclines(only_sir_columns = FALSE, return_all = TRUE, ...)  trimethoprims(only_sir_columns = FALSE, return_all = TRUE, ...)  ureidopenicillins(only_sir_columns = FALSE, return_all = TRUE, ...)  administrable_per_os(only_sir_columns = FALSE, return_all = TRUE, ...)  administrable_iv(only_sir_columns = FALSE, return_all = TRUE, ...)  not_intrinsic_resistant(only_sir_columns = FALSE, col_mo = NULL,   version_expertrules = 3.3, ...)"},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"amr_class antimicrobial class part , \"carba\" \"carbapenems\". columns group, atc_group1 atc_group2 antibiotics data set searched (case-insensitive) value. only_sir_columns logical indicate whether columns class sir must selected (default FALSE), see .sir() only_treatable logical indicate whether antimicrobial drugs excluded laboratory tests (default TRUE), gentamicin-high (GEH) imipenem/EDTA (IPE) return_all logical indicate whether matched columns must returned (default TRUE). FALSE, first unique antimicrobial returned, e.g. columns \"genta\" \"gentamicin\" exist data, first hit gentamicin returned. ... ignored, place allow future extensions filter expression evaluated antibiotics data set, name %like% \"trim\" col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). version_expertrules version number use EUCAST Expert Rules Intrinsic Resistance guideline. Can \"3.3\", \"3.2\", \"3.1\".","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"used inside selecting filtering, returns character vector column names, additional class \"amr_selector\". used individually, returns 'ab' vector possible antimicrobials function able select filter.","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"functions can used data set calls selecting columns filtering rows. work base R, Tidyverse, data.table. heavily inspired Tidyverse selection helpers everything(), limited dplyr verbs. Nonetheless, convenient use dplyr functions select(), filter() summarise(), see Examples. selectors can also used tidymodels packages recipe parsnip. See info tutorial using AMR functions predictive modelling. columns data functions called searched known antimicrobial names, abbreviations, brand names, codes (ATC, EARS-Net, , etc.) according antibiotics data set. means selector aminoglycosides() pick column names like 'gen', 'genta', 'J01GB03', 'tobra', 'Tobracin', etc. amr_class() function can used filter/select manually defined antimicrobial class. searches results antibiotics data set within columns group, atc_group1 atc_group2. amr_selector() function can used internally filter antibiotics data set results, see Examples. allows filtering (part ) certain name, /group name even minimum DDDs oral treatment. function yields highest flexibility, also least user-friendly, since requires hard-coded filter set. administrable_per_os() administrable_iv() functions also rely antibiotics data set - antimicrobials matched DDD (defined daily dose) resp. oral IV treatment available antibiotics data set. not_intrinsic_resistant() function can used select antimicrobials pose intrinsic resistance microorganisms data set. example, data set contains microorganism codes names E. coli K. pneumoniae contains column \"vancomycin\", column removed (rather, unselected) using function. currently applies 'EUCAST Expert Rules' 'EUCAST Intrinsic Resistance Unusual Phenotypes' v3.3 (2021) determine intrinsic resistance, using eucast_rules() function internally. determination, function quite slow terms performance.","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"full-list-of-supported-antimicrobial-classes","dir":"Reference","previous_headings":"","what":"Full list of supported (antimicrobial) classes","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"aminoglycosides() can select:  amikacin (AMK), amikacin/fosfomycin (AKF), apramycin (APR), arbekacin (ARB), astromicin (AST), bekanamycin (BEK), dibekacin (DKB), framycetin (FRM), gentamicin (GEN), gentamicin-high (GEH), habekacin (HAB), hygromycin (HYG), isepamicin (ISE), kanamycin (KAN), kanamycin-high (KAH), kanamycin/cephalexin (KAC), micronomicin (MCR), neomycin (NEO), netilmicin (NET), pentisomicin (PIM), plazomicin (PLZ), propikacin (PKA), ribostamycin (RST), sisomicin (SIS), streptoduocin (STR), streptomycin (STR1), streptomycin-high (STH), tobramycin (TOB), tobramycin-high (TOH) aminopenicillins() can select:  amoxicillin (AMX) ampicillin (AMP) antifungals() can select:  amorolfine (AMO), amphotericin B (AMB), amphotericin B-high (AMH), anidulafungin (ANI), butoconazole (), caspofungin (CAS), ciclopirox (CIX), clotrimazole (CTR), econazole (ECO), fluconazole (FLU), flucytosine (FCT), fosfluconazole (FFL), griseofulvin (GRI), hachimycin (HCH), ibrexafungerp (IBX), isavuconazole (ISV), isoconazole (ISO), itraconazole (ITR), ketoconazole (KET), manogepix (MGX), micafungin (MIF), miconazole (MCZ), nystatin (NYS), oteseconazole (OTE), pimaricin (PMR), posaconazole (POS), rezafungin (RZF), ribociclib (RBC), sulconazole (SUC), terbinafine (TRB), terconazole (TRC), voriconazole (VOR) antimycobacterials() can select:  4-aminosalicylic acid (AMA), calcium aminosalicylate (CLA), capreomycin (CAP), clofazimine (CLF), delamanid (DLM), enviomycin (ENV), ethambutol (ETH), ethambutol/isoniazid (ETI), ethionamide (ETI1), isoniazid (INH), isoniazid/sulfamethoxazole/trimethoprim/pyridoxine (IST), morinamide (MRN), p-aminosalicylic acid (PAS), pretomanid (PMD), protionamide (PTH), pyrazinamide (PZA), rifabutin (RIB), rifampicin (RIF), rifampicin/ethambutol/isoniazid (REI), rifampicin/isoniazid (RFI), rifampicin/pyrazinamide/ethambutol/isoniazid (RPEI), rifampicin/pyrazinamide/isoniazid (RPI), rifamycin (RFM), rifapentine (RFP), simvastatin/fenofibrate (SMF), sodium aminosalicylate (SDA), streptomycin/isoniazid (STI), terizidone (TRZ), thioacetazone (TAT), thioacetazone/isoniazid (THI1), tiocarlide (TCR), viomycin (VIO) betalactams() can select:  amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin (AMP), ampicillin/sulbactam (SAM), apalcillin (APL), aspoxicillin (APX), azidocillin (AZD), azlocillin (AZL), aztreonam (ATM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), bacampicillin (BAM), benzathine benzylpenicillin (BNB), benzathine phenoxymethylpenicillin (BNP), benzylpenicillin (PEN), biapenem (BIA), carbenicillin (CRB), carindacillin (CRN), carumonam (CAR), cefacetrile (CAC), cefaclor (CEC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefamandole (MAN), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetamet (CAT), cefetamet pivoxil (CPI), cefetecol (CCL), cefetrizole (CZL), cefiderocol (FDC), cefixime (CFM), cefmenoxime (CMX), cefmetazole (CMZ), cefodizime (DIZ), cefonicid (CID), cefoperazone (CFP), cefoperazone/sulbactam (CSL), ceforanide (CND), cefoselis (CSE), cefotaxime (CTX), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotetan (CTT), cefotiam (CTF), cefotiam hexetil (CHE), cefovecin (FOV), cefoxitin (FOX), cefoxitin screening (FOX1), cefozopran (ZOP), cefpimizole (CFZ), cefpiramide (CPM), cefpirome (CPO), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefprozil (CPR), cefquinome (CEQ), cefroxadine (CRD), cefsulodin (CFS), cefsumide (CSU), ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftezole (CTL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), cefuroxime (CXM), cefuroxime axetil (CXA), cephradine (CED), ciclacillin (CIC), clometocillin (CLM), cloxacillin (CLO), dicloxacillin (DIC), doripenem (DOR), epicillin (EPC), ertapenem (ETP), flucloxacillin (FLC), hetacillin (HET), imipenem (IPM), imipenem/EDTA (IPE), imipenem/relebactam (IMR), latamoxef (LTM), lenampicillin (LEN), loracarbef (LOR), mecillinam (MEC), meropenem (MEM), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), metampicillin (MTM), meticillin (MET), mezlocillin (MEZ), mezlocillin/sulbactam (MSU), nafcillin (NAF), oxacillin (OXA), panipenem (PAN), penamecillin (PNM), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), pheneticillin (PHE), phenoxymethylpenicillin (PHN), piperacillin (PIP), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), piridicillin (PRC), pivampicillin (PVM), pivmecillinam (PME), procaine benzylpenicillin (PRB), propicillin (PRP), razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), sarmoxicillin (SRX), sulbenicillin (SBC), sultamicillin (SLT6), talampicillin (TAL), tebipenem (TBP), temocillin (TEM), ticarcillin (TIC), ticarcillin/clavulanic acid (TCC), tigemonam (TMN) betalactams_with_inhibitor() can select:  amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin/sulbactam (SAM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefoperazone/sulbactam (CSL), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefpodoxime/clavulanic acid (CDC), ceftaroline/avibactam (CPA), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), ceftolozane/tazobactam (CZT), ceftriaxone/beta-lactamase inhibitor (CEB), imipenem/relebactam (IMR), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), mezlocillin/sulbactam (MSU), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), ticarcillin/clavulanic acid (TCC) carbapenems() can select:  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), tebipenem (TBP) cephalosporins() can select:  cefacetrile (CAC), cefaclor (CEC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefamandole (MAN), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetamet (CAT), cefetamet pivoxil (CPI), cefetecol (CCL), cefetrizole (CZL), cefiderocol (FDC), cefixime (CFM), cefmenoxime (CMX), cefmetazole (CMZ), cefodizime (DIZ), cefonicid (CID), cefoperazone (CFP), cefoperazone/sulbactam (CSL), ceforanide (CND), cefoselis (CSE), cefotaxime (CTX), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotetan (CTT), cefotiam (CTF), cefotiam hexetil (CHE), cefovecin (FOV), cefoxitin (FOX), cefoxitin screening (FOX1), cefozopran (ZOP), cefpimizole (CFZ), cefpiramide (CPM), cefpirome (CPO), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefprozil (CPR), cefquinome (CEQ), cefroxadine (CRD), cefsulodin (CFS), cefsumide (CSU), ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftezole (CTL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), cefuroxime (CXM), cefuroxime axetil (CXA), cephradine (CED), latamoxef (LTM), loracarbef (LOR) cephalosporins_1st() can select:  cefacetrile (CAC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefroxadine (CRD), ceftezole (CTL), cephradine (CED) cephalosporins_2nd() can select:  cefaclor (CEC), cefamandole (MAN), cefmetazole (CMZ), cefonicid (CID), ceforanide (CND), cefotetan (CTT), cefotiam (CTF), cefoxitin (FOX), cefoxitin screening (FOX1), cefprozil (CPR), cefuroxime (CXM), cefuroxime axetil (CXA), loracarbef (LOR) cephalosporins_3rd() can select:  cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefetamet (CAT), cefetamet pivoxil (CPI), cefixime (CFM), cefmenoxime (CMX), cefodizime (DIZ), cefoperazone (CFP), cefoperazone/sulbactam (CSL), cefotaxime (CTX), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotiam hexetil (CHE), cefovecin (FOV), cefpimizole (CFZ), cefpiramide (CPM), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefsulodin (CFS), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), latamoxef (LTM) cephalosporins_4th() can select:  cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetecol (CCL), cefoselis (CSE), cefozopran (ZOP), cefpirome (CPO), cefquinome (CEQ) cephalosporins_5th() can select:  ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT) fluoroquinolones() can select:  besifloxacin (BES), ciprofloxacin (CIP), clinafloxacin (CLX), danofloxacin (DAN), delafloxacin (DFX), difloxacin (DIF), enoxacin (ENX), enrofloxacin (ENR), finafloxacin (FIN), fleroxacin (FLE), garenoxacin (GRN), gatifloxacin (GAT), gemifloxacin (GEM), grepafloxacin (GRX), lascufloxacin (LSC), levofloxacin (LVX), levonadifloxacin (LND), lomefloxacin (LOM), marbofloxacin (MAR), metioxate (MXT), miloxacin (MIL), moxifloxacin (MFX), nadifloxacin (NAD), nifuroquine (NIF), norfloxacin (), ofloxacin (OFX), orbifloxacin (ORB), pazufloxacin (PAZ), pefloxacin (PEF), pradofloxacin (PRA), premafloxacin (PRX), prulifloxacin (PRU), rufloxacin (RFL), sarafloxacin (SAR), sitafloxacin (SIT), sparfloxacin (SPX), temafloxacin (TMX), tilbroquinol (TBQ), tioxacin (TXC), tosufloxacin (TFX), trovafloxacin (TVA) glycopeptides() can select:  avoparcin (AVO), dalbavancin (DAL), norvancomycin (NVA), oritavancin (ORI), ramoplanin (RAM), teicoplanin (TEC), teicoplanin-macromethod (TCM), telavancin (TLV), vancomycin (VAN), vancomycin-macromethod (VAM) isoxazolylpenicillins() can select:  cloxacillin (CLO), dicloxacillin (DIC), flucloxacillin (FLC), meticillin (MET), oxacillin (OXA) lincosamides() can select:  clindamycin (CLI), lincomycin (LIN), pirlimycin (PRL) lipoglycopeptides() can select:  dalbavancin (DAL), oritavancin (ORI), telavancin (TLV) macrolides() can select:  acetylmidecamycin (ACM), acetylspiramycin (ASP), azithromycin (AZM), clarithromycin (CLR), dirithromycin (DIR), erythromycin (ERY), flurithromycin (FLR1), gamithromycin (GAM), josamycin (JOS), kitasamycin (KIT), meleumycin (MEL), midecamycin (MID), miocamycin (MCM), nafithromycin (ZWK), oleandomycin (OLE), rokitamycin (ROK), roxithromycin (RXT), solithromycin (SOL), spiramycin (SPI), telithromycin (TLT), tildipirosin (TIP), tilmicosin (TIL), troleandomycin (TRL), tulathromycin (TUL), tylosin (TYL), tylvalosin (TYL1) monobactams() can select:  aztreonam (ATM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), carumonam (CAR), tigemonam (TMN) nitrofurans() can select:  furazidin (FUR), furazolidone (FRZ), nifurtoinol (NFR), nitrofurantoin (NIT), nitrofurazone (NIZ) oxazolidinones() can select:  cadazolid (CDZ), cycloserine (CYC), linezolid (LNZ), tedizolid (TZD), thiacetazone (THA) penicillins() can select:  amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin (AMP), ampicillin/sulbactam (SAM), apalcillin (APL), aspoxicillin (APX), azidocillin (AZD), azlocillin (AZL), bacampicillin (BAM), benzathine benzylpenicillin (BNB), benzathine phenoxymethylpenicillin (BNP), benzylpenicillin (PEN), carbenicillin (CRB), carindacillin (CRN), ciclacillin (CIC), clometocillin (CLM), cloxacillin (CLO), dicloxacillin (DIC), epicillin (EPC), flucloxacillin (FLC), hetacillin (HET), lenampicillin (LEN), mecillinam (MEC), metampicillin (MTM), meticillin (MET), mezlocillin (MEZ), mezlocillin/sulbactam (MSU), nafcillin (NAF), oxacillin (OXA), penamecillin (PNM), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), pheneticillin (PHE), phenoxymethylpenicillin (PHN), piperacillin (PIP), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), piridicillin (PRC), pivampicillin (PVM), pivmecillinam (PME), procaine benzylpenicillin (PRB), propicillin (PRP), sarmoxicillin (SRX), sulbenicillin (SBC), sultamicillin (SLT6), talampicillin (TAL), temocillin (TEM), ticarcillin (TIC), ticarcillin/clavulanic acid (TCC) phenicols() can select:  chloramphenicol (CHL), florfenicol (FLR), thiamphenicol (THI) polymyxins() can select:  colistin (COL), polymyxin B (PLB), polymyxin B/polysorbate 80 (POP) quinolones() can select:  besifloxacin (BES), cinoxacin (CIN), ciprofloxacin (CIP), ciprofloxacin/metronidazole (CIM), ciprofloxacin/ornidazole (CIO), ciprofloxacin/tinidazole (CIT), clinafloxacin (CLX), danofloxacin (DAN), delafloxacin (DFX), difloxacin (DIF), enoxacin (ENX), enrofloxacin (ENR), finafloxacin (FIN), fleroxacin (FLE), flumequine (FLM), garenoxacin (GRN), gatifloxacin (GAT), gemifloxacin (GEM), grepafloxacin (GRX), lascufloxacin (LSC), levofloxacin (LVX), levonadifloxacin (LND), lomefloxacin (LOM), marbofloxacin (MAR), metioxate (MXT), miloxacin (MIL), moxifloxacin (MFX), nadifloxacin (NAD), nalidixic acid (NAL), nemonoxacin (NEM), nifuroquine (NIF), nitroxoline (NTR), norfloxacin (), ofloxacin (OFX), orbifloxacin (ORB), oxolinic acid (OXO), pazufloxacin (PAZ), pefloxacin (PEF), pipemidic acid (PPA), piromidic acid (PIR), pradofloxacin (PRA), premafloxacin (PRX), prulifloxacin (PRU), rosoxacin (ROS), rufloxacin (RFL), sarafloxacin (SAR), sitafloxacin (SIT), sparfloxacin (SPX), temafloxacin (TMX), tilbroquinol (TBQ), tioxacin (TXC), tosufloxacin (TFX), trovafloxacin (TVA) rifamycins() can select:  rifabutin (RIB), rifampicin (RIF), rifampicin/ethambutol/isoniazid (REI), rifampicin/isoniazid (RFI), rifampicin/pyrazinamide/ethambutol/isoniazid (RPEI), rifampicin/pyrazinamide/isoniazid (RPI), rifamycin (RFM), rifapentine (RFP) streptogramins() can select:  pristinamycin (PRI) quinupristin/dalfopristin (QDA) tetracyclines() can select:  cetocycline (CTO), chlortetracycline (CTE), clomocycline (CLM1), demeclocycline (DEM), doxycycline (DOX), eravacycline (ERV), lymecycline (LYM), metacycline (MTC), minocycline (MNO), omadacycline (OMC), oxytetracycline (OXY), penimepicycline (PNM1), rolitetracycline (RLT), sarecycline (SRC), tetracycline (TCY), tigecycline (TGC) trimethoprims() can select:  brodimoprim (BDP), sulfadiazine (SDI), sulfadiazine/tetroxoprim (SLT), sulfadiazine/trimethoprim (SLT1), sulfadimethoxine (SUD), sulfadimidine (SDM), sulfadimidine/trimethoprim (SLT2), sulfafurazole (SLF), sulfaisodimidine (SLF1), sulfalene (SLF2), sulfamazone (SZO), sulfamerazine (SLF3), sulfamerazine/trimethoprim (SLT3), sulfamethizole (SLF4), sulfamethoxazole (SMX), sulfamethoxypyridazine (SLF5), sulfametomidine (SLF6), sulfametoxydiazine (SLF7), sulfametrole/trimethoprim (SLT4), sulfamoxole (SLF8), sulfamoxole/trimethoprim (SLT5), sulfanilamide (SLF9), sulfaperin (SLF10), sulfaphenazole (SLF11), sulfapyridine (SLF12), sulfathiazole (SUT), sulfathiourea (SLF13), trimethoprim (TMP), trimethoprim/sulfamethoxazole (SXT) ureidopenicillins() can select:  azlocillin (AZL), mezlocillin (MEZ), piperacillin (PIP), piperacillin/tazobactam (TZP)","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates. example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …   # you can use the selectors separately to retrieve all possible antimicrobials: carbapenems() #> ℹ The function carbapenems() should be used inside a dplyr verb or #>   data.frame call, e.g.: #>   • your_data %>% select(carbapenems()) #>   • your_data %>% select(column_a, column_b, carbapenems()) #>   • your_data %>% filter(any(carbapenems() == \"R\")) #>   • your_data[, carbapenems()] #>   • your_data[, c(\"column_a\", \"column_b\", carbapenems())] #>  #> Now returning a vector of all possible antimicrobials that carbapenems() #> can select. #> Class 'ab' #>  [1] BIA DOR ETP IMR IPE IPM MEM MEV MNC PAN RIA RIT RZM TBP   # Though they are primarily intended to use for selections and filters. # Examples sections below are split into 'dplyr', 'base R', and 'data.table':  # \\donttest{ if (FALSE) { # \\dontrun{ # dplyr -------------------------------------------------------------------  library(dplyr, warn.conflicts = FALSE)  example_isolates %>% select(carbapenems())  # select columns 'mo', 'AMK', 'GEN', 'KAN' and 'TOB' example_isolates %>% select(mo, aminoglycosides())  # you can combine selectors like you are used with tidyverse # e.g., for betalactams, but not the ones with an enzyme inhibitor: example_isolates %>% select(betalactams(), -betalactams_with_inhibitor())  # select only antimicrobials with DDDs for oral treatment example_isolates %>% select(administrable_per_os())  # get AMR for all aminoglycosides e.g., per ward: example_isolates %>%   group_by(ward) %>%   summarise(across(aminoglycosides(),                    resistance))  # You can combine selectors with '&' to be more specific: example_isolates %>%   select(penicillins() & administrable_per_os())  # get AMR for only drugs that matter - no intrinsic resistance: example_isolates %>%   filter(mo_genus() %in% c(\"Escherichia\", \"Klebsiella\")) %>%   group_by(ward) %>%   summarise_at(not_intrinsic_resistant(),                resistance)  # get susceptibility for antimicrobials whose name contains \"trim\": example_isolates %>%   filter(first_isolate()) %>%   group_by(ward) %>%   summarise(across(amr_selector(name %like% \"trim\"), susceptibility))  # this will select columns 'IPM' (imipenem) and 'MEM' (meropenem): example_isolates %>%   select(carbapenems())  # this will select columns 'mo', 'AMK', 'GEN', 'KAN' and 'TOB': example_isolates %>%   select(mo, aminoglycosides())  # any() and all() work in dplyr's filter() too: example_isolates %>%   filter(     any(aminoglycosides() == \"R\"),     all(cephalosporins_2nd() == \"R\")   )  # also works with c(): example_isolates %>%   filter(any(c(carbapenems(), aminoglycosides()) == \"R\"))  # not setting any/all will automatically apply all(): example_isolates %>%   filter(aminoglycosides() == \"R\")  # this will select columns 'mo' and all antimycobacterial drugs ('RIF'): example_isolates %>%   select(mo, amr_class(\"mycobact\"))  # get bug/drug combinations for only glycopeptides in Gram-positives: example_isolates %>%   filter(mo_is_gram_positive()) %>%   select(mo, glycopeptides()) %>%   bug_drug_combinations() %>%   format()  data.frame(   some_column = \"some_value\",   J01CA01 = \"S\" ) %>% # ATC code of ampicillin   select(penicillins()) # only the 'J01CA01' column will be selected  # with recent versions of dplyr, this is all equal: x <- example_isolates[carbapenems() == \"R\", ] y <- example_isolates %>% filter(carbapenems() == \"R\") z <- example_isolates %>% filter(if_all(carbapenems(), ~ .x == \"R\")) identical(x, y) && identical(y, z)  } # } # base R ------------------------------------------------------------------  # select columns 'IPM' (imipenem) and 'MEM' (meropenem) example_isolates[, carbapenems()] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> # A tibble: 2,000 × 2 #>    IPM   MEM   #>    <sir> <sir> #>  1   NA    NA  #>  2   NA    NA  #>  3   NA    NA  #>  4   NA    NA  #>  5   NA    NA  #>  6   NA    NA  #>  7   NA    NA  #>  8   NA    NA  #>  9   NA    NA  #> 10   NA    NA  #> # ℹ 1,990 more rows  # select columns 'mo', 'AMK', 'GEN', 'KAN' and 'TOB' example_isolates[, c(\"mo\", aminoglycosides())] #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # A tibble: 2,000 × 5 #>    mo           GEN   TOB   AMK   KAN   #>    <mo>         <sir> <sir> <sir> <sir> #>  1 B_ESCHR_COLI   NA    NA    NA    NA  #>  2 B_ESCHR_COLI   NA    NA    NA    NA  #>  3 B_STPHY_EPDR   NA    NA    NA    NA  #>  4 B_STPHY_EPDR   NA    NA    NA    NA  #>  5 B_STPHY_EPDR   NA    NA    NA    NA  #>  6 B_STPHY_EPDR   NA    NA    NA    NA  #>  7 B_STPHY_AURS   NA    S     NA    NA  #>  8 B_STPHY_AURS   NA    S     NA    NA  #>  9 B_STPHY_EPDR   NA    NA    NA    NA  #> 10 B_STPHY_EPDR   NA    NA    NA    NA  #> # ℹ 1,990 more rows  # select only antimicrobials with DDDs for oral treatment example_isolates[, administrable_per_os()] #> ℹ For administrable_per_os() using columns 'OXA' (oxacillin), 'FLC' #>   (flucloxacillin), 'AMX' (amoxicillin), 'AMC' (amoxicillin/clavulanic acid), #>   'AMP' (ampicillin), 'CXM' (cefuroxime), 'KAN' (kanamycin), 'TMP' #>   (trimethoprim), 'NIT' (nitrofurantoin), 'FOS' (fosfomycin), 'LNZ' #>   (linezolid), 'CIP' (ciprofloxacin), 'MFX' (moxifloxacin), 'VAN' #>   (vancomycin), 'TCY' (tetracycline), 'DOX' (doxycycline), 'ERY' #>   (erythromycin), 'CLI' (clindamycin), 'AZM' (azithromycin), 'MTR' #>   (metronidazole), 'CHL' (chloramphenicol), 'COL' (colistin), and 'RIF' #>   (rifampicin) #> # A tibble: 2,000 × 23 #>    OXA   FLC   AMX   AMC   AMP   CXM   KAN   TMP   NIT   FOS   LNZ   CIP   MFX   #>    <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>  1   NA    NA    NA    I     NA    I     NA    R     NA    NA    R     NA    NA  #>  2   NA    NA    NA    I     NA    I     NA    R     NA    NA    R     NA    NA  #>  3   NA    R     NA    NA    NA    R     NA    S     NA    NA    NA    NA    NA  #>  4   NA    R     NA    NA    NA    R     NA    S     NA    NA    NA    NA    NA  #>  5   NA    R     NA    NA    NA    R     NA    R     NA    NA    NA    NA    NA  #>  6   NA    R     NA    NA    NA    R     NA    R     NA    NA    NA    NA    NA  #>  7   NA    S     R     S     R     S     NA    R     NA    NA    NA    NA    NA  #>  8   NA    S     R     S     R     S     NA    R     NA    NA    NA    NA    NA  #>  9   NA    R     NA    NA    NA    R     NA    S     NA    NA    NA    S     NA  #> 10   NA    S     NA    NA    NA    S     NA    S     NA    NA    NA    S     NA  #> # ℹ 1,990 more rows #> # ℹ 10 more variables: VAN <sir>, TCY <sir>, DOX <sir>, ERY <sir>, CLI <sir>, #> #   AZM <sir>, MTR <sir>, CHL <sir>, COL <sir>, RIF <sir>  # filter using any() or all() example_isolates[any(carbapenems() == \"R\"), ] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> # A tibble: 55 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2004-06-09 529296     69 M      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  2 2004-06-09 529296     69 M      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  3 2004-11-03 D65308     80 F      ICU      B_STNTR_MLTP   R     NA    NA    R   #>  4 2005-04-21 452212     82 F      ICU      B_ENTRC        NA    NA    NA    NA  #>  5 2005-04-22 452212     82 F      ICU      B_ENTRC        NA    NA    NA    NA  #>  6 2005-04-22 452212     82 F      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  7 2007-02-21 8BBC46     61 F      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  8 2007-12-15 401043     72 M      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  9 2008-01-22 1710B8     82 M      Clinical B_PROTS_MRBL   R     NA    NA    NA  #> 10 2008-01-22 1710B8     82 M      Clinical B_PROTS_MRBL   R     NA    NA    NA  #> # ℹ 45 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … subset(example_isolates, any(carbapenems() == \"R\")) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> # A tibble: 55 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2004-06-09 529296     69 M      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  2 2004-06-09 529296     69 M      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  3 2004-11-03 D65308     80 F      ICU      B_STNTR_MLTP   R     NA    NA    R   #>  4 2005-04-21 452212     82 F      ICU      B_ENTRC        NA    NA    NA    NA  #>  5 2005-04-22 452212     82 F      ICU      B_ENTRC        NA    NA    NA    NA  #>  6 2005-04-22 452212     82 F      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  7 2007-02-21 8BBC46     61 F      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  8 2007-12-15 401043     72 M      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  9 2008-01-22 1710B8     82 M      Clinical B_PROTS_MRBL   R     NA    NA    NA  #> 10 2008-01-22 1710B8     82 M      Clinical B_PROTS_MRBL   R     NA    NA    NA  #> # ℹ 45 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter on any or all results in the carbapenem columns (i.e., IPM, MEM): example_isolates[any(carbapenems()), ] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ Filtering any of columns 'IPM' and 'MEM' to contain value \"S\", \"I\" or \"R\" #> # A tibble: 962 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  3 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #>  4 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #>  5 2002-02-05 067927     45 F      ICU      B_SERRT_MRCS   R     NA    NA    R   #>  6 2002-02-05 067927     45 F      ICU      B_SERRT_MRCS   R     NA    NA    R   #>  7 2002-02-05 067927     45 F      ICU      B_SERRT_MRCS   R     NA    NA    R   #>  8 2002-02-27 066895     85 F      Clinical B_KLBSL_PNMN   R     NA    NA    R   #>  9 2002-02-27 066895     85 F      Clinical B_KLBSL_PNMN   R     NA    NA    R   #> 10 2002-03-08 4FC193     69 M      Clinical B_ESCHR_COLI   R     NA    NA    R   #> # ℹ 952 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … example_isolates[all(carbapenems()), ] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ Filtering all of columns 'IPM' and 'MEM' to contain value \"S\", \"I\" or \"R\" #> # A tibble: 756 × 46 #>    date       patient   age gender ward    mo            PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>   <mo>          <sir> <sir> <sir> <sir> #>  1 2002-04-14 F30196     73 M      Outpat… B_STRPT_GRPB    S     NA    S     S   #>  2 2003-04-08 114570     74 M      ICU     B_STRPT_PYGN    S     NA    S     S   #>  3 2003-04-08 114570     74 M      ICU     B_STRPT_GRPA    S     NA    S     S   #>  4 2003-04-08 114570     74 M      ICU     B_STRPT_GRPA    S     NA    S     S   #>  5 2003-08-14 F71508      0 F      Clinic… B_STRPT_GRPB    S     NA    S     S   #>  6 2003-10-16 650870     63 F      ICU     B_ESCHR_COLI    R     NA    NA    R   #>  7 2003-10-20 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #>  8 2003-10-20 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #>  9 2003-11-04 2FC253     87 F      ICU     B_ESCHR_COLI    R     NA    NA    NA  #> 10 2003-11-04 2FC253     87 F      ICU     B_ESCHR_COLI    R     NA    NA    NA  #> # ℹ 746 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter with multiple antimicrobial selectors using c() example_isolates[all(c(carbapenems(), aminoglycosides()) == \"R\"), ] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # A tibble: 26 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2004-11-03 D65308     80 F      ICU      B_STNTR_MLTP   R     NA    NA    R   #>  2 2005-04-22 452212     82 F      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  3 2007-02-21 8BBC46     61 F      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  4 2007-12-15 401043     72 M      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  5 2008-12-06 501361     43 F      Clinical B_STNTR_MLTP   R     NA    NA    R   #>  6 2011-05-09 207325     82 F      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  7 2012-03-12 582258     80 M      ICU      B_STPHY_CONS   R     R     R     R   #>  8 2012-05-19 C25552     89 F      Outpati… B_STPHY_CONS   R     R     R     R   #>  9 2012-07-17 F05015     83 M      ICU      B_STPHY_CONS   R     R     R     R   #> 10 2012-07-20 404299     66 F      Clinical B_STPHY_CONS   R     R     R     R   #> # ℹ 16 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter + select in one go: get penicillins in carbapenem-resistant strains example_isolates[any(carbapenems() == \"R\"), penicillins()] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ For penicillins() using columns 'PEN' (benzylpenicillin), 'OXA' #>   (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #>   (amoxicillin/clavulanic acid), 'AMP' (ampicillin), and 'TZP' #>   (piperacillin/tazobactam) #> # A tibble: 55 × 7 #>    PEN   OXA   FLC   AMX   AMC   AMP   TZP   #>    <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>  1   NA    NA    NA    NA    NA    NA    NA  #>  2   NA    NA    NA    NA    NA    NA    NA  #>  3   R     NA    NA    R     R     R     R   #>  4   NA    NA    NA    NA    NA    NA    R   #>  5   NA    NA    NA    NA    NA    NA    R   #>  6   NA    NA    NA    NA    NA    NA    R   #>  7   NA    NA    NA    NA    NA    NA    R   #>  8   NA    NA    NA    NA    NA    NA    R   #>  9   R     NA    NA    NA    S     NA    S   #> 10   R     NA    NA    NA    S     NA    S   #> # ℹ 45 more rows  # You can combine selectors with '&' to be more specific. For example, # penicillins() would select benzylpenicillin ('peni G') and # administrable_per_os() would select erythromycin. Yet, when combined these # drugs are both omitted since benzylpenicillin is not administrable per os # and erythromycin is not a penicillin: example_isolates[, penicillins() & administrable_per_os()] #> ℹ For penicillins() using columns 'PEN' (benzylpenicillin), 'OXA' #>   (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #>   (amoxicillin/clavulanic acid), 'AMP' (ampicillin), and 'TZP' #>   (piperacillin/tazobactam) #> ℹ For administrable_per_os() using columns 'OXA' (oxacillin), 'FLC' #>   (flucloxacillin), 'AMX' (amoxicillin), 'AMC' (amoxicillin/clavulanic acid), #>   'AMP' (ampicillin), 'CXM' (cefuroxime), 'KAN' (kanamycin), 'TMP' #>   (trimethoprim), 'NIT' (nitrofurantoin), 'FOS' (fosfomycin), 'LNZ' #>   (linezolid), 'CIP' (ciprofloxacin), 'MFX' (moxifloxacin), 'VAN' #>   (vancomycin), 'TCY' (tetracycline), 'DOX' (doxycycline), 'ERY' #>   (erythromycin), 'CLI' (clindamycin), 'AZM' (azithromycin), 'MTR' #>   (metronidazole), 'CHL' (chloramphenicol), 'COL' (colistin), and 'RIF' #>   (rifampicin) #> # A tibble: 2,000 × 5 #>    OXA   FLC   AMX   AMC   AMP   #>    <sir> <sir> <sir> <sir> <sir> #>  1   NA    NA    NA    I     NA  #>  2   NA    NA    NA    I     NA  #>  3   NA    R     NA    NA    NA  #>  4   NA    R     NA    NA    NA  #>  5   NA    R     NA    NA    NA  #>  6   NA    R     NA    NA    NA  #>  7   NA    S     R     S     R   #>  8   NA    S     R     S     R   #>  9   NA    R     NA    NA    NA  #> 10   NA    S     NA    NA    NA  #> # ℹ 1,990 more rows  # amr_selector() applies a filter in the `antibiotics` data set and is thus # very flexible. For instance, to select antimicrobials with an oral DDD # of at least 1 gram: example_isolates[, amr_selector(oral_ddd > 1 & oral_units == \"g\")] #> ℹ For amr_selector(oral_ddd > 1 & oral_units == \"g\") using columns 'OXA' #>   (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #>   (amoxicillin/clavulanic acid), 'AMP' (ampicillin), 'KAN' (kanamycin), 'FOS' #>   (fosfomycin), 'LNZ' (linezolid), 'VAN' (vancomycin), 'ERY' (erythromycin), #>   'CLI' (clindamycin), 'MTR' (metronidazole), and 'CHL' (chloramphenicol) #> # A tibble: 2,000 × 13 #>    OXA   FLC   AMX   AMC   AMP   KAN   FOS   LNZ   VAN   ERY   CLI   MTR   CHL   #>    <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>  1   NA    NA    NA    I     NA    NA    NA    R     R     R     R     NA    NA  #>  2   NA    NA    NA    I     NA    NA    NA    R     R     R     R     NA    NA  #>  3   NA    R     NA    NA    NA    NA    NA    NA    S     R     NA    NA    NA  #>  4   NA    R     NA    NA    NA    NA    NA    NA    S     R     NA    NA    NA  #>  5   NA    R     NA    NA    NA    NA    NA    NA    S     R     NA    NA    NA  #>  6   NA    R     NA    NA    NA    NA    NA    NA    S     R     R     NA    NA  #>  7   NA    S     R     S     R     NA    NA    NA    S     S     NA    NA    NA  #>  8   NA    S     R     S     R     NA    NA    NA    S     S     NA    NA    NA  #>  9   NA    R     NA    NA    NA    NA    NA    NA    S     R     NA    NA    NA  #> 10   NA    S     NA    NA    NA    NA    NA    NA    S     S     NA    NA    NA  #> # ℹ 1,990 more rows   # data.table --------------------------------------------------------------  # data.table is supported as well, just use it in the same way as with # base R, but add `with = FALSE` if using a single AB selector.  if (require(\"data.table\")) {   dt <- as.data.table(example_isolates)    # this does not work, it returns column *names*   dt[, carbapenems()] } #> Loading required package: data.table #>  #> Attaching package: ‘data.table’ #> The following objects are masked from ‘package:dplyr’: #>  #>     between, first, last #> The following objects are masked from ‘package:AMR’: #>  #>     %like%, like #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> Warning: It should never be needed to print an antimicrobial selector class. Are you #> using data.table? Then add the argument with = FALSE, see our examples at #> ?amr_selector. #> Class 'amr_selector' #> [1] IPM MEM if (require(\"data.table\")) {   # so `with = FALSE` is required   dt[, carbapenems(), with = FALSE] } #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #>         IPM   MEM #>       <sir> <sir> #>    1:  <NA>  <NA> #>    2:  <NA>  <NA> #>    3:  <NA>  <NA> #>    4:  <NA>  <NA> #>    5:  <NA>  <NA> #>   ---             #> 1996:  <NA>  <NA> #> 1997:     S     S #> 1998:     S     S #> 1999:     S     S #> 2000:     S     S  # for multiple selections or AB selectors, `with = FALSE` is not needed: if (require(\"data.table\")) {   dt[, c(\"mo\", aminoglycosides())] } #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #>                 mo   GEN   TOB   AMK   KAN #>               <mo> <sir> <sir> <sir> <sir> #>    1: B_ESCHR_COLI  <NA>  <NA>  <NA>  <NA> #>    2: B_ESCHR_COLI  <NA>  <NA>  <NA>  <NA> #>    3: B_STPHY_EPDR  <NA>  <NA>  <NA>  <NA> #>    4: B_STPHY_EPDR  <NA>  <NA>  <NA>  <NA> #>    5: B_STPHY_EPDR  <NA>  <NA>  <NA>  <NA> #>   ---                                      #> 1996: B_STRPT_PNMN     R     R     R     R #> 1997: B_ESCHR_COLI     S     S     S  <NA> #> 1998: B_STPHY_CONS     S  <NA>  <NA>  <NA> #> 1999: B_ESCHR_COLI     S     S  <NA>  <NA> #> 2000: B_KLBSL_PNMN     S     S  <NA>  <NA> if (require(\"data.table\")) {   dt[, c(carbapenems(), aminoglycosides())] } #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #>         IPM   MEM   GEN   TOB   AMK   KAN #>       <sir> <sir> <sir> <sir> <sir> <sir> #>    1:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>    2:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>    3:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>    4:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>    5:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>   ---                                     #> 1996:  <NA>  <NA>     R     R     R     R #> 1997:     S     S     S     S     S  <NA> #> 1998:     S     S     S  <NA>  <NA>  <NA> #> 1999:     S     S     S     S  <NA>  <NA> #> 2000:     S     S     S     S  <NA>  <NA>  # row filters are also supported: if (require(\"data.table\")) {   dt[any(carbapenems() == \"S\"), ] } #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #>            date patient   age gender       ward           mo   PEN   OXA   FLC #>          <Date>  <char> <num> <char>     <char>         <mo> <sir> <sir> <sir> #>   1: 2002-01-19  738003    71      M   Clinical B_ESCHR_COLI     R  <NA>  <NA> #>   2: 2002-01-19  738003    71      M   Clinical B_ESCHR_COLI     R  <NA>  <NA> #>   3: 2002-01-22  F35553    50      M        ICU B_PROTS_MRBL     R  <NA>  <NA> #>   4: 2002-01-22  F35553    50      M        ICU B_PROTS_MRBL     R  <NA>  <NA> #>   5: 2002-02-05  067927    45      F        ICU B_SERRT_MRCS     R  <NA>  <NA> #>  ---                                                                           #> 905: 2005-04-12  D71461    70      M        ICU B_ESCHR_COLI     R  <NA>  <NA> #> 906: 2009-11-12  650870    69      F Outpatient B_ESCHR_COLI     R  <NA>  <NA> #> 907: 2012-06-14  8CBCF2    41      F   Clinical B_STPHY_CONS     R     S     S #> 908: 2012-10-11  175532    78      M   Clinical B_ESCHR_COLI     R  <NA>  <NA> #> 909: 2013-11-23  A97263    77      M   Clinical B_KLBSL_PNMN     R  <NA>  <NA> #>        AMX   AMC   AMP   TZP   CZO   FEP   CXM   FOX   CTX   CAZ   CRO   GEN #>      <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>   1:  <NA>     I  <NA>  <NA>  <NA>  <NA>     S  <NA>     S  <NA>     S  <NA> #>   2:  <NA>     I  <NA>  <NA>  <NA>  <NA>     S  <NA>     S  <NA>     S  <NA> #>   3:  <NA>     I  <NA>  <NA>  <NA>  <NA>     S  <NA>     S     S     S  <NA> #>   4:  <NA>     I  <NA>  <NA>  <NA>  <NA>     S  <NA>     S     S     S  <NA> #>   5:     R     R     R  <NA>     R  <NA>     R     R  <NA>  <NA>  <NA>  <NA> #>  ---                                                                         #> 905:     S     S     S     S  <NA>     S     S     S     S     S     S     S #> 906:     S     S     S     S     S     S     S     S     S     S     S     S #> 907:  <NA>     S  <NA>  <NA>     S     S     S     S     S     R     S     S #> 908:     R     S     R     S  <NA>     S     R     R     S     S     S     S #> 909:     R     S     R     S  <NA>     S     S     S     S     S     S     S #>        TOB   AMK   KAN   TMP   SXT   NIT   FOS   LNZ   CIP   MFX   VAN   TEC #>      <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>   1:     S  <NA>  <NA>     S     S  <NA>  <NA>     R  <NA>  <NA>     R     R #>   2:     S  <NA>  <NA>     S     S  <NA>  <NA>     R  <NA>  <NA>     R     R #>   3:  <NA>  <NA>  <NA>     S     S     R  <NA>     R     S  <NA>     R     R #>   4:  <NA>  <NA>  <NA>     S     S     R  <NA>     R     S  <NA>     R     R #>   5:  <NA>  <NA>  <NA>     S     S     R  <NA>     R     S  <NA>     R     R #>  ---                                                                         #> 905:     S     S  <NA>  <NA>     S     S  <NA>     R     S  <NA>     R     R #> 906:     S     S  <NA>     S     S     S  <NA>     R     S  <NA>     R     R #> 907:  <NA>  <NA>  <NA>     S     S  <NA>  <NA>  <NA>     S  <NA>     S  <NA> #> 908:     S  <NA>  <NA>     R     R     R  <NA>     R     R     R     R     R #> 909:     S  <NA>  <NA>     S     S     S  <NA>     R     S  <NA>     R     R #>        TCY   TGC   DOX   ERY   CLI   AZM   IPM   MEM   MTR   CHL   COL   MUP #>      <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>   1:  <NA>  <NA>  <NA>     R     R     R     S  <NA>  <NA>  <NA>  <NA>  <NA> #>   2:  <NA>  <NA>  <NA>     R     R     R     S  <NA>  <NA>  <NA>  <NA>  <NA> #>   3:     R     R     R     R     R     R     S  <NA>  <NA>  <NA>     R  <NA> #>   4:     R     R     R     R     R     R     S  <NA>  <NA>  <NA>     R  <NA> #>   5:     R     R     R     R     R     R     S  <NA>  <NA>  <NA>     R  <NA> #>  ---                                                                         #> 905:  <NA>  <NA>  <NA>     R     R     R     S     S  <NA>  <NA>  <NA>  <NA> #> 906:  <NA>  <NA>  <NA>     R     R     R     S     S  <NA>  <NA>  <NA>  <NA> #> 907:  <NA>  <NA>  <NA>     S     S     S     S     S  <NA>  <NA>     R  <NA> #> 908:  <NA>  <NA>  <NA>     R     R     R     S     S  <NA>  <NA>     S  <NA> #> 909:  <NA>  <NA>  <NA>     R     R     R     S     S  <NA>  <NA>     S  <NA> #>        RIF #>      <sir> #>   1:     R #>   2:     R #>   3:     R #>   4:     R #>   5:     R #>  ---       #> 905:     R #> 906:     R #> 907:  <NA> #> 908:     R #> 909:     R if (require(\"data.table\")) {   dt[any(carbapenems() == \"S\"), penicillins(), with = FALSE] } #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ For penicillins() using columns 'PEN' (benzylpenicillin), 'OXA' #>   (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #>   (amoxicillin/clavulanic acid), 'AMP' (ampicillin), and 'TZP' #>   (piperacillin/tazobactam) #>        PEN   OXA   FLC   AMX   AMC   AMP   TZP #>      <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>   1:     R  <NA>  <NA>  <NA>     I  <NA>  <NA> #>   2:     R  <NA>  <NA>  <NA>     I  <NA>  <NA> #>   3:     R  <NA>  <NA>  <NA>     I  <NA>  <NA> #>   4:     R  <NA>  <NA>  <NA>     I  <NA>  <NA> #>   5:     R  <NA>  <NA>     R     R     R  <NA> #>  ---                                           #> 905:     R  <NA>  <NA>     S     S     S     S #> 906:     R  <NA>  <NA>     S     S     S     S #> 907:     R     S     S  <NA>     S  <NA>  <NA> #> 908:     R  <NA>  <NA>     R     S     R     S #> 909:     R  <NA>  <NA>     R     S     R     S # }"},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Input to an Antibiotic ID — as.ab","title":"Transform Input to an Antibiotic ID — as.ab","text":"Use function determine antibiotic drug code one antibiotics. data set antibiotics searched abbreviations, official names synonyms (brand names).","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Input to an Antibiotic ID — as.ab","text":"","code":"as.ab(x, flag_multiple_results = TRUE, info = interactive(), ...)  is.ab(x)"},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Input to an Antibiotic ID — as.ab","text":"x character vector determine antibiotic ID flag_multiple_results logical indicate whether note printed console probably one antibiotic drug code name can retrieved single input value. info logical indicate whether progress bar printed - default TRUE interactive mode ... arguments passed internal functions","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Input to an Antibiotic ID — as.ab","text":"character vector additional class ab","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Input to an Antibiotic ID — as.ab","text":"entries antibiotics data set three different identifiers: human readable EARS-Net code (column ab, used ECDC WHONET), ATC code (column atc, used ), CID code (column cid, Compound ID, used PubChem). data set contains 5,000 official brand names many different countries, found PubChem. drugs contain multiple ATC codes. properties searched user input. .ab() can correct different forms misspelling: Wrong spelling drug names (\"tobramicin\" \"gentamycin\"), corrects audible similarities f/ph, x/ks, c/z/s, t/th, etc. many vowels consonants Switching two characters (\"mreopenem\", often case clinical data, doctors typed fast) Digitalised paper records, leaving artefacts like 0/o/O (zero O's), B/8, n/r, etc. Use ab_* functions get properties based returned antibiotic ID, see Examples. Note: .ab() ab_* functions may use long regular expression match brand names antimicrobial drugs. may fail systems. can add manual codes considered .ab() ab_* functions, see add_custom_antimicrobials().","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Transform Input to an Antibiotic ID — as.ab","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology: https://atcddd.fhi./atc_ddd_index/ European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"whocc","dir":"Reference","previous_headings":"","what":"WHOCC","title":"Transform Input to an Antibiotic ID — as.ab","text":"package contains ~550 antibiotic, antimycotic antiviral drugs Anatomical Therapeutic Chemical (ATC) codes, ATC groups Defined Daily Dose (DDD) World Health Organization Collaborating Centre Drug Statistics Methodology (WHOCC, https://atcddd.fhi.) Pharmaceuticals Community Register European Commission (https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm). become gold standard international drug utilisation monitoring research. WHOCC located Oslo Norwegian Institute Public Health funded Norwegian government. European Commission executive European Union promotes general interest. NOTE: WHOCC copyright allow use commercial purposes, unlike info package. See https://atcddd.fhi./copyright_disclaimer/.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Transform Input to an Antibiotic ID — as.ab","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Input to an Antibiotic ID — as.ab","text":"","code":"# these examples all return \"ERY\", the ID of erythromycin: as.ab(\"J01FA01\") #> Class 'ab' #> [1] ERY as.ab(\"J 01 FA 01\") #> Class 'ab' #> [1] ERY as.ab(\"Erythromycin\") #> Class 'ab' #> [1] ERY as.ab(\"eryt\") #> Class 'ab' #> [1] ERY as.ab(\"   eryt 123\") #> Class 'ab' #> [1] ERY as.ab(\"ERYT\") #> Class 'ab' #> [1] ERY as.ab(\"ERY\") #> Class 'ab' #> [1] ERY as.ab(\"eritromicine\") # spelled wrong, yet works #> Class 'ab' #> [1] ERY as.ab(\"Erythrocin\") # trade name #> Class 'ab' #> [1] ERY as.ab(\"Romycin\") # trade name #> Class 'ab' #> [1] ERY  # spelling from different languages and dyslexia are no problem ab_atc(\"ceftriaxon\") #> [1] \"J01DD04\" ab_atc(\"cephtriaxone\") # small spelling error #> [1] \"J01DD04\" ab_atc(\"cephthriaxone\") # or a bit more severe #> [1] \"J01DD04\" ab_atc(\"seephthriaaksone\") # and even this works #> [1] \"J01DD04\"  # use ab_* functions to get a specific properties (see ?ab_property); # they use as.ab() internally: ab_name(\"J01FA01\") #> [1] \"Erythromycin\" ab_name(\"eryt\") #> [1] \"Erythromycin\"  # \\donttest{ if (require(\"dplyr\")) {   # you can quickly rename 'sir' columns using set_ab_names() with dplyr:   example_isolates %>%     set_ab_names(where(is.sir), property = \"atc\") } #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           J01CE01 J01CF04 J01CF05 #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir>   <sir>   <sir>   #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R       NA      NA    #>  2 2002-01-03 A77334     65 F      Clinical B_ESCHR_COLI   R       NA      NA    #>  3 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #>  4 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #>  5 2002-01-13 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #>  6 2002-01-13 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #>  7 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R       NA      S     #>  8 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R       NA      S     #>  9 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #> 10 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR   R       NA      S     #> # ℹ 1,990 more rows #> # ℹ 37 more variables: J01CA04 <sir>, J01CR02 <sir>, J01CA01 <sir>, #> #   J01CR05 <sir>, J01DB04 <sir>, J01DE01 <sir>, J01DC02 <sir>, J01DC01 <sir>, #> #   J01DD01 <sir>, J01DD02 <sir>, J01DD04 <sir>, J01GB03 <sir>, J01GB01 <sir>, #> #   J01GB06 <sir>, J01GB04 <sir>, J01EA01 <sir>, J01EE01 <sir>, J01XE01 <sir>, #> #   J01XX01 <sir>, J01XX08 <sir>, J01MA02 <sir>, J01MA14 <sir>, J01XA01 <sir>, #> #   J01XA02 <sir>, J01AA07 <sir>, J01AA12 <sir>, J01AA02 <sir>, … # }"},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Input to an Antiviral Drug ID — as.av","title":"Transform Input to an Antiviral Drug ID — as.av","text":"Use function determine antiviral drug code one antiviral drugs. data set antivirals searched abbreviations, official names synonyms (brand names).","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Input to an Antiviral Drug ID — as.av","text":"","code":"as.av(x, flag_multiple_results = TRUE, info = interactive(), ...)  is.av(x)"},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Input to an Antiviral Drug ID — as.av","text":"x character vector determine antiviral drug ID flag_multiple_results logical indicate whether note printed console probably one antiviral drug code name can retrieved single input value. info logical indicate whether progress bar printed - default TRUE interactive mode ... arguments passed internal functions","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Input to an Antiviral Drug ID — as.av","text":"character vector additional class ab","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Input to an Antiviral Drug ID — as.av","text":"entries antivirals data set three different identifiers: human readable EARS-Net code (column ab, used ECDC WHONET), ATC code (column atc, used ), CID code (column cid, Compound ID, used PubChem). data set contains 5,000 official brand names many different countries, found PubChem. drugs contain multiple ATC codes. properties searched user input. .av() can correct different forms misspelling: Wrong spelling drug names (\"acyclovir\"), corrects audible similarities f/ph, x/ks, c/z/s, t/th, etc. many vowels consonants Switching two characters (\"aycclovir\", often case clinical data, doctors typed fast) Digitalised paper records, leaving artefacts like 0/o/O (zero O's), B/8, n/r, etc. Use av_* functions get properties based returned antiviral drug ID, see Examples. Note: .av() av_* functions may use long regular expression match brand names antimicrobial drugs. may fail systems.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Transform Input to an Antiviral Drug ID — as.av","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology: https://atcddd.fhi./atc_ddd_index/ European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"whocc","dir":"Reference","previous_headings":"","what":"WHOCC","title":"Transform Input to an Antiviral Drug ID — as.av","text":"package contains ~550 antibiotic, antimycotic antiviral drugs Anatomical Therapeutic Chemical (ATC) codes, ATC groups Defined Daily Dose (DDD) World Health Organization Collaborating Centre Drug Statistics Methodology (WHOCC, https://atcddd.fhi.) Pharmaceuticals Community Register European Commission (https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm). become gold standard international drug utilisation monitoring research. WHOCC located Oslo Norwegian Institute Public Health funded Norwegian government. European Commission executive European Union promotes general interest. NOTE: WHOCC copyright allow use commercial purposes, unlike info package. See https://atcddd.fhi./copyright_disclaimer/.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Transform Input to an Antiviral Drug ID — as.av","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Input to an Antiviral Drug ID — as.av","text":"","code":"# these examples all return \"ACI\", the ID of aciclovir: as.av(\"J05AB01\") #> Class 'av' #> [1] ACI as.av(\"J 05 AB 01\") #> Class 'av' #> [1] ACI as.av(\"Aciclovir\") #> Class 'av' #> [1] ACI as.av(\"aciclo\") #> Class 'av' #> [1] ACI as.av(\"   aciclo 123\") #> Class 'av' #> [1] ACI as.av(\"ACICL\") #> Class 'av' #> [1] ACI as.av(\"ACI\") #> Class 'av' #> [1] ACI as.av(\"Virorax\") # trade name #> Class 'av' #> [1] ACI as.av(\"Zovirax\") # trade name #> Class 'av' #> [1] ACI  as.av(\"acyklofir\") # severe spelling error, yet works #> Class 'av' #> [1] ACI  # use av_* functions to get a specific properties (see ?av_property); # they use as.av() internally: av_name(\"J05AB01\") #> [1] \"Aciclovir\" av_name(\"acicl\") #> [1] \"Aciclovir\""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Input to Disk Diffusion Diameters — as.disk","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"transforms vector new class disk, disk diffusion growth zone size (around antibiotic disk) millimetres 0 50.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"","code":"as.disk(x, na.rm = FALSE)  NA_disk_  is.disk(x)"},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"object class disk (inherits integer) length 1.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"x vector na.rm logical indicating whether missing values removed","code":""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"integer additional class disk","code":""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"Interpret disk values SIR values .sir(). supports guidelines EUCAST CLSI. Disk diffusion growth zone sizes must 0 50 millimetres. Values higher 50 lower 100 maximised 50. others input values outside 0-50 range return NA. NA_disk_ missing value new disk class.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"","code":"# transform existing disk zones to the `disk` class (using base R) df <- data.frame(   microorganism = \"Escherichia coli\",   AMP = 20,   CIP = 14,   GEN = 18,   TOB = 16 ) df[, 2:5] <- lapply(df[, 2:5], as.disk) str(df) #> 'data.frame':\t1 obs. of  5 variables: #>  $ microorganism: chr \"Escherichia coli\" #>  $ AMP          : 'disk' int 20 #>  $ CIP          : 'disk' int 14 #>  $ GEN          : 'disk' int 18 #>  $ TOB          : 'disk' int 16  # \\donttest{ # transforming is easier with dplyr: if (require(\"dplyr\")) {   df %>% mutate(across(AMP:TOB, as.disk)) } #>      microorganism AMP CIP GEN TOB #> 1 Escherichia coli  20  14  18  16 # }  # interpret disk values, see ?as.sir as.sir(   x = as.disk(18),   mo = \"Strep pneu\", # `mo` will be coerced with as.mo()   ab = \"ampicillin\", # and `ab` with as.ab()   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: 'ampicillin' (AMP), EUCAST 2024... #>  OK  #> Class 'sir' #> [1] R  # interpret whole data set, pretend to be all from urinary tract infections: as.sir(df, uti = TRUE) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: column 'AMP' (ampicillin), EUCAST #> 2024... #>  OK  #> Interpreting disk diffusion zones: column 'CIP' (ciprofloxacin), EUCAST #> 2024... #>  OK  #> Interpreting disk diffusion zones: column 'GEN' (gentamicin), EUCAST #> 2024... #>  OK  #> Interpreting disk diffusion zones: column 'TOB' (tobramycin), EUCAST #> 2024... #>  OK  #>      microorganism AMP  CIP GEN TOB #> 1 Escherichia coli   S <NA>   S   S"},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"transforms vectors new class mic, treats input decimal numbers, maintaining operators (\">=\") allowing valid MIC values known field (medical) microbiology.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"","code":"as.mic(x, na.rm = FALSE, keep_operators = \"all\")  is.mic(x)  NA_mic_  rescale_mic(x, mic_range, keep_operators = \"edges\", as.mic = TRUE)  # S3 method for class 'mic' droplevels(x, as.mic = FALSE, ...)"},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"x character numeric vector na.rm logical indicating whether missing values removed keep_operators character specifying handle operators (> <=) input. Accepts one three values: \"\" (TRUE) keep operators, \"none\" (FALSE) remove operators, \"edges\" keep operators ends range. mic_range manual range limit MIC values, e.g., mic_range = c(0.001, 32). Use NA set limit one side, e.g., mic_range = c(NA, 32). .mic logical indicate whether mic class kept - default FALSE ... arguments passed methods","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"Ordered factor additional class mic, mathematical operations acts numeric vector. Bear mind outcome mathematical operation MICs return numeric value.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"interpret MIC values SIR values, use .sir() MIC values. supports guidelines EUCAST (2011-2024) CLSI (2011-2024). class MIC values quite special data type: formally ordered factor valid MIC values factor levels (make sure valid MIC values retained), mathematical operation acts decimal numbers:   makes possible maintain operators often come MIC values, \">=\" \"<=\", even filtering using numeric values data analysis, e.g.:   -called group generic functions implemented MIC class (!, !=, <, >=, exp(), log2()). functions stats package also implemented (quantile(), median(), fivenum()). Since sd() var() non-generic functions, extended. Use mad() alternative, use e.g. sd(.numeric(x)) x vector MIC values. Using .double() .numeric() MIC values remove operators return numeric vector. use .integer() MIC values R convention factors, return index factor levels (often useless regular users). Use droplevels() drop unused levels. default, return plain factor. Use droplevels(..., .mic = TRUE) maintain mic class. rescale_mic(), existing MIC ranges can limited defined range MIC values. can useful better compare MIC distributions. ggplot2, use one scale_*_mic() functions plot MIC values. allows custom MIC ranges plot intermediate log2 levels missing MIC values. NA_mic_ missing value new mic class, analogous e.g. base R's NA_character_.","code":"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 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"},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"","code":"mic_data <- as.mic(c(\">=32\", \"1.0\", \"1\", \"1.00\", 8, \"<=0.128\", \"8\", \"16\", \"16\")) mic_data #> Class 'mic' #> [1] >=32    1       1       1       8       <=0.128 8       16      16      is.mic(mic_data) #> [1] TRUE  # this can also coerce combined MIC/SIR values: as.mic(\"<=0.002; S\") #> Class 'mic' #> [1] <=0.002  # mathematical processing treats MICs as numeric values fivenum(mic_data) #> [1]  0.128  1.000  8.000 16.000 32.000 quantile(mic_data) #>     0%    25%    50%    75%   100%  #>  0.128  1.000  8.000 16.000 32.000  all(mic_data < 512) #> [1] TRUE  # rescale MICs using rescale_mic() rescale_mic(mic_data, mic_range = c(4, 16)) #> Class 'mic' #> [1] >=16 <=4  <=4  <=4  8    <=4  8    >=16 >=16  # interpret MIC values as.sir(   x = as.mic(2),   mo = as.mo(\"Streptococcus pneumoniae\"),   ab = \"AMX\",   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'AMX' (amoxicillin), EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for amoxicillin (AMX) in Streptococcus pneumoniae - assuming body site 'Meningitis'. #> Class 'sir' #> [1] R as.sir(   x = as.mic(c(0.01, 2, 4, 8)),   mo = as.mo(\"Streptococcus pneumoniae\"),   ab = \"AMX\",   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'AMX' (amoxicillin), EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for amoxicillin (AMX) in Streptococcus pneumoniae - assuming body site 'Meningitis'. #> Class 'sir' #> [1] S R R R  # plot MIC values, see ?plot plot(mic_data)  plot(mic_data, mo = \"E. coli\", ab = \"cipro\")   if (require(\"ggplot2\")) {   autoplot(mic_data, mo = \"E. coli\", ab = \"cipro\") }  if (require(\"ggplot2\")) {   autoplot(mic_data, mo = \"E. coli\", ab = \"cipro\", language = \"nl\") # Dutch }"},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Use function get valid microorganism code (mo) based arbitrary user input. Determination done using intelligent rules complete taxonomic tree kingdoms Animalia, Archaea, Bacteria, Chromista, Protozoa, microbial species kingdom Fungi (see Source). input can almost anything: full name (like \"Staphylococcus aureus\"), abbreviated name (\"S. aureus\"), abbreviation known field (\"MRSA\"), just genus. See Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"","code":"as.mo(x, Becker = FALSE, Lancefield = FALSE,   minimum_matching_score = NULL,   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE),   reference_df = get_mo_source(),   ignore_pattern = getOption(\"AMR_ignore_pattern\", NULL),   cleaning_regex = getOption(\"AMR_cleaning_regex\", mo_cleaning_regex()),   only_fungi = getOption(\"AMR_only_fungi\", FALSE),   language = get_AMR_locale(), info = interactive(), ...)  is.mo(x)  mo_uncertainties()  mo_renamed()  mo_failures()  mo_reset_session()  mo_cleaning_regex()"},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"x character vector data.frame one two columns Becker logical indicate whether staphylococci categorised coagulase-negative staphylococci (\"CoNS\") coagulase-positive staphylococci (\"CoPS\") instead species, according Karsten Becker et al. (see Source). Please see Details full list staphylococcal species converted. excludes Staphylococcus aureus default, use Becker = \"\" also categorise S. aureus \"CoPS\". Lancefield logical indicate whether beta-haemolytic Streptococcus categorised Lancefield groups instead species, according Rebecca C. Lancefield (see Source). streptococci categorised first group, e.g. Streptococcus dysgalactiae group C, although officially also categorised groups G L. . Please see Details full list streptococcal species converted. excludes enterococci default (group D), use Lancefield = \"\" also categorise enterococci group D. minimum_matching_score numeric value set lower limit MO matching score. left blank, determined automatically based character length x, taxonomic kingdom human pathogenicity. keep_synonyms logical indicate old, previously valid taxonomic names must preserved corrected currently accepted names. default FALSE, return note old taxonomic names processed. default can set package option AMR_keep_synonyms, .e. options(AMR_keep_synonyms = TRUE) options(AMR_keep_synonyms = FALSE). reference_df data.frame used extra reference translating x valid mo. See set_mo_source() get_mo_source() automate usage codes (e.g. used analysis organisation). ignore_pattern Perl-compatible regular expression (case-insensitive) matches x must return NA. can convenient exclude known non-relevant input can also set package option AMR_ignore_pattern, e.g. options(AMR_ignore_pattern = \"(reported|contaminated flora)\"). cleaning_regex Perl-compatible regular expression (case-insensitive) clean input x. Every matched part x removed. default, outcome mo_cleaning_regex(), removes texts brackets texts \"species\" \"serovar\". default can set package option AMR_cleaning_regex. only_fungi logical indicate fungi must found, making sure e.g. misspellings always return records kingdom Fungi. can set globally microorganism functions package option AMR_only_fungi, .e. options(AMR_only_fungi = TRUE). language language translate text like \"growth\", defaults system language (see get_AMR_locale()) info logical indicate info must printed, e.g. progress bar 25 items coerced, list old taxonomic names. default TRUE interactive mode. ... arguments passed functions","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"character vector additional class mo","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"microorganism (MO) code package (class: mo) human-readable typically looks like examples:   Values coerced considered 'unknown' return MO code UNKNOWN warning. Use mo_* functions get properties based returned code, see Examples. .mo() function uses novel scientifically validated (doi:10.18637/jss.v104.i03 ) matching score algorithm (see Matching Score Microorganisms ) match input available microbial taxonomy package. implicates e.g. \"E. coli\" (microorganism highly prevalent humans) return microbial ID Escherichia coli Entamoeba coli (microorganism less prevalent humans), although latter alphabetically come first.","code":"Code               Full name   ---------------    --------------------------------------   B_KLBSL            Klebsiella   B_KLBSL_PNMN       Klebsiella pneumoniae   B_KLBSL_PNMN_RHNS  Klebsiella pneumoniae rhinoscleromatis   |   |    |    |   |   |    |    |   |   |    |    \\---> subspecies, a 3-5 letter acronym   |   |    \\----> species, a 3-6 letter acronym   |   \\----> genus, a 4-8 letter acronym   \\----> kingdom: A (Archaea), AN (Animalia), B (Bacteria),                   C (Chromista), F (Fungi), PL (Plantae),                   P (Protozoa)"},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"coping-with-uncertain-results","dir":"Reference","previous_headings":"","what":"Coping with Uncertain Results","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Results non-exact taxonomic input based matching score. lowest allowed score can set minimum_matching_score argument. default determined based character length input, taxonomic kingdom, human pathogenicity taxonomic outcome. values matched uncertainty, message shown suggest user inspect results mo_uncertainties(), returns data.frame specifications. increase quality matching, cleaning_regex argument used clean input. must regular expression matches parts input removed input matched available microbial taxonomy. matched Perl-compatible case-insensitive. default value cleaning_regex outcome helper function mo_cleaning_regex(). three helper functions can run using .mo() function: Use mo_uncertainties() get data.frame prints pretty format taxonomic names guessed. output contains matching score matches (see Matching Score Microorganisms ). Use mo_failures() get character vector values coerced valid value. Use mo_renamed() get data.frame values coerced based old, previously accepted taxonomic names.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"for-mycologists","dir":"Reference","previous_headings":"","what":"For Mycologists","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"matching score algorithm gives precedence bacteria fungi. analysing fungi, sure use only_fungi = TRUE, better yet, add code run every session:   make sure bacteria 'non-fungi' returned .mo(), mo_* functions.","code":"options(AMR_only_fungi = TRUE)"},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"coagulase-negative-and-coagulase-positive-staphylococci","dir":"Reference","previous_headings":"","what":"Coagulase-negative and Coagulase-positive Staphylococci","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Becker = TRUE, following staphylococci converted corresponding coagulase group: Coagulase-negative: S. americanisciuri, S. argensis, S. arlettae, S. auricularis, S. borealis, S. brunensis, S. caeli, S. caledonicus, S. canis, S. capitis, S. capitis capitis, S. capitis urealyticus, S. capitis ureolyticus, S. caprae, S. carnosus, S. carnosus carnosus, S. carnosus utilis, S. casei, S. caseolyticus, S. chromogenes, S. cohnii, S. cohnii cohnii, S. cohnii urealyticum, S. cohnii urealyticus, S. condimenti, S. croceilyticus, S. debuckii, S. devriesei, S. durrellii, S. edaphicus, S. epidermidis, S. equorum, S. equorum equorum, S. equorum linens, S. felis, S. fleurettii, S. gallinarum, S. haemolyticus, S. hominis, S. hominis hominis, S. hominis novobiosepticus, S. jettensis, S. kloosii, S. lentus, S. lloydii, S. lugdunensis, S. marylandisciuri, S. massiliensis, S. microti, S. muscae, S. nepalensis, S. pasteuri, S. petrasii, S. petrasii croceilyticus, S. petrasii jettensis, S. petrasii petrasii, S. petrasii pragensis, S. pettenkoferi, S. piscifermentans, S. pragensis, S. pseudoxylosus, S. pulvereri, S. ratti, S. rostri, S. saccharolyticus, S. saprophyticus, S. saprophyticus bovis, S. saprophyticus saprophyticus, S. schleiferi, S. schleiferi schleiferi, S. sciuri, S. sciuri carnaticus, S. sciuri lentus, S. sciuri rodentium, S. sciuri sciuri, S. shinii, S. simulans, S. stepanovicii, S. succinus, S. succinus casei, S. succinus succinus, S. taiwanensis, S. urealyticus, S. ureilyticus, S. veratri, S. vitulinus, S. vitulus, S. warneri, S. xylosus Coagulase-positive: S. agnetis, S. argenteus, S. coagulans, S. cornubiensis, S. delphini, S. hyicus, S. hyicus chromogenes, S. hyicus hyicus, S. intermedius, S. lutrae, S. pseudintermedius, S. roterodami, S. schleiferi coagulans, S. schweitzeri, S. simiae, S. singaporensis based : Becker K et al. (2014). Coagulase-Negative Staphylococci. Clin Microbiol Rev. 27(4): 870-926; doi:10.1128/CMR.00109-13 Becker K et al. (2019). Implications identifying recently defined members S. aureus complex, S. argenteus S. schweitzeri: position paper members ESCMID Study Group staphylococci Staphylococcal Diseases (ESGS). Clin Microbiol Infect; doi:10.1016/j.cmi.2019.02.028 Becker K et al. (2020). Emergence coagulase-negative staphylococci. Expert Rev Anti Infect Ther. 18(4):349-366; doi:10.1080/14787210.2020.1730813 newly named staphylococcal species, S. brunensis (2024) S. shinii (2023), looked scientific reference make sure species considered correct coagulase group.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"lancefield-groups-in-streptococci","dir":"Reference","previous_headings":"","what":"Lancefield Groups in Streptococci","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Lancefield = TRUE, following streptococci converted corresponding Lancefield group: Streptococcus Group : S. pyogenes Streptococcus Group B: S. agalactiae Streptococcus Group C: S. dysgalactiae, S. dysgalactiae dysgalactiae, S. dysgalactiae equisimilis, S. equi, S. equi equi, S. equi ruminatorum, S. equi zooepidemicus Streptococcus Group F: S. anginosus, S. anginosus anginosus, S. anginosus whileyi, S. constellatus, S. constellatus constellatus, S. constellatus pharyngis, S. constellatus viborgensis, S. intermedius Streptococcus Group G: S. canis, S. dysgalactiae, S. dysgalactiae dysgalactiae, S. dysgalactiae equisimilis Streptococcus Group H: S. sanguinis Streptococcus Group K: S. salivarius, S. salivarius salivarius, S. salivarius thermophilus Streptococcus Group L: S. dysgalactiae, S. dysgalactiae dysgalactiae, S. dysgalactiae equisimilis based : Lancefield RC (1933). serological differentiation human groups hemolytic streptococci. J Exp Med. 57(4): 571-95; doi:10.1084/jem.57.4.571","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Berends MS et al. (2022). AMR: R Package Working Antimicrobial Resistance Data. Journal Statistical Software, 104(3), 1-31; doi:10.18637/jss.v104.i03 Parte, AC et al. (2020). List Prokaryotic names Standing Nomenclature (LPSN) moves DSMZ. International Journal Systematic Evolutionary Microbiology, 70, 5607-5612; doi:10.1099/ijsem.0.004332 . Accessed https://lpsn.dsmz.de June 24th, 2024. Vincent, R et al (2013). MycoBank gearing new horizons. IMA Fungus, 4(2), 371-9; doi:10.5598/imafungus.2013.04.02.16 . Accessed https://www.mycobank.org June 24th, 2024. GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset doi:10.15468/39omei . Accessed https://www.gbif.org June 24th, 2024. Reimer, LC et al. (2022). BacDive 2022: knowledge base standardized bacterial archaeal data. Nucleic Acids Res., 50(D1):D741-D74; doi:10.1093/nar/gkab961 . Accessed https://bacdive.dsmz.de July 16th, 2024. Public Health Information Network Vocabulary Access Distribution System (PHIN VADS). US Edition SNOMED CT 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: https://www.cdc.gov/phin/php/phinvads/ Bartlett et al. (2022). comprehensive list bacterial pathogens infecting humans Microbiology 168:001269; doi:10.1099/mic.0.001269","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"matching-score-for-microorganisms","dir":"Reference","previous_headings":"","what":"Matching Score for Microorganisms","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"ambiguous user input .mo() mo_* functions, returned results chosen based matching score using mo_matching_score(). matching score \\(m\\), calculated : $$m_{(x, n)} = \\frac{l_{n} - 0.5 \\cdot \\min \\begin{cases}l_{n} \\\\ \\textrm{lev}(x, n)\\end{cases}}{l_{n} \\cdot p_{n} \\cdot k_{n}}$$ : \\(x\\) user input; \\(n\\) taxonomic name (genus, species, subspecies); \\(l_n\\) length \\(n\\); \\(lev\\) Levenshtein distance function (counting insertion 1, deletion substitution 2) needed change \\(x\\) \\(n\\); \\(p_n\\) human pathogenic prevalence group \\(n\\), described ; \\(k_n\\) taxonomic kingdom \\(n\\), set Bacteria = 1, Fungi = 1.25, Protozoa = 1.5, Chromista = 1.75, Archaea = 2, others = 3. grouping human pathogenic prevalence \\(p\\) based recent work Bartlett et al. (2022, doi:10.1099/mic.0.001269 ) extensively studied medical-scientific literature categorise bacterial species groups: Established, taxonomic species infected least three persons three references. records prevalence = 1.15 microorganisms data set; Putative, taxonomic species fewer three known cases. records prevalence = 1.25 microorganisms data set. Furthermore, Genera World Health Organization's () Priority Pathogen List prevalence = 1.0 microorganisms data set; genus present established list also prevalence = 1.15 microorganisms data set; genus present putative list prevalence = 1.25 microorganisms data set; species subspecies genus present two aforementioned groups, prevalence = 1.5 microorganisms data set; non-bacterial genus, species subspecies genus present following list, prevalence = 1.25 microorganisms data set: Absidia, Acanthamoeba, Acremonium, Actinomucor, Aedes, Alternaria, Amoeba, Ancylostoma, Angiostrongylus, Anisakis, Anopheles, Apophysomyces, Arthroderma, Aspergillus, Aureobasidium, Basidiobolus, Beauveria, Bipolaris, Blastobotrys, Blastocystis, Blastomyces, Candida, Capillaria, Chaetomium, Chilomastix, Chrysonilia, Chrysosporium, Cladophialophora, Cladosporium, Clavispora, Coccidioides, Cokeromyces, Conidiobolus, Coniochaeta, Contracaecum, Cordylobia, Cryptococcus, Cryptosporidium, Cunninghamella, Curvularia, Cyberlindnera, Debaryozyma, Demodex, Dermatobia, Dientamoeba, Diphyllobothrium, Dirofilaria, Echinostoma, Entamoeba, Enterobius, Epidermophyton, Exidia, Exophiala, Exserohilum, Fasciola, Fonsecaea, Fusarium, Geotrichum, Giardia, Graphium, Haloarcula, Halobacterium, Halococcus, Hansenula, Hendersonula, Heterophyes, Histomonas, Histoplasma, Hortaea, Hymenolepis, Hypomyces, Hysterothylacium, Kloeckera, Kluyveromyces, Kodamaea, Lacazia, Leishmania, Lichtheimia, Lodderomyces, Lomentospora, Madurella, Malassezia, Malbranchea, Metagonimus, Meyerozyma, Microsporidium, Microsporum, Millerozyma, Mortierella, Mucor, Mycocentrospora, Nannizzia, Necator, Nectria, Ochroconis, Oesophagostomum, Oidiodendron, Opisthorchis, Paecilomyces, Paracoccidioides, Pediculus, Penicillium, Phaeoacremonium, Phaeomoniella, Phialophora, Phlebotomus, Phoma, Pichia, Piedraia, Pithomyces, Pityrosporum, Pneumocystis, Pseudallescheria, Pseudoscopulariopsis, Pseudoterranova, Pulex, Purpureocillium, Quambalaria, Rhinocladiella, Rhizomucor, Rhizopus, Rhodotorula, Saccharomyces, Saksenaea, Saprochaete, Sarcoptes, Scedosporium, Schistosoma, Schizosaccharomyces, Scolecobasidium, Scopulariopsis, Scytalidium, Spirometra, Sporobolomyces, Sporopachydermia, Sporothrix, Sporotrichum, Stachybotrys, Strongyloides, Syncephalastrum, Syngamus, Taenia, Talaromyces, Teleomorph, Toxocara, Trichinella, Trichobilharzia, Trichoderma, Trichomonas, Trichophyton, Trichosporon, Trichostrongylus, Trichuris, Tritirachium, Trombicula, Trypanosoma, Tunga, Ulocladium, Ustilago, Verticillium, Wallemia, Wangiella, Wickerhamomyces, Wuchereria, Yarrowia, Zygosaccharomyces; records prevalence = 2.0 microorganisms data set. calculating matching score, characters \\(x\\) \\(n\\) ignored -Z, -z, 0-9, spaces parentheses. matches sorted descending matching score user input values, top match returned. lead effect e.g., \"E. coli\" return microbial ID Escherichia coli (\\(m = 0.688\\), highly prevalent microorganism found humans) Entamoeba coli (\\(m = 0.381\\), less prevalent microorganism humans), although latter alphabetically come first.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"","code":"# \\donttest{ # These examples all return \"B_STPHY_AURS\", the ID of S. aureus: as.mo(c(   \"sau\", # WHONET code   \"stau\",   \"STAU\",   \"staaur\",   \"S. aureus\",   \"S aureus\",   \"Sthafilokkockus aureus\", # handles incorrect spelling   \"Staphylococcus aureus (MRSA)\",   \"MRSA\", # Methicillin Resistant S. aureus   \"VISA\", # Vancomycin Intermediate S. aureus   \"VRSA\", # Vancomycin Resistant S. aureus   115329001 # SNOMED CT code )) #> Class 'mo' #>  [1] B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS #>  [6] B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS #> [11] B_STPHY_AURS B_STPHY_AURS  # Dyslexia is no problem - these all work: as.mo(c(   \"Ureaplasma urealyticum\",   \"Ureaplasma urealyticus\",   \"Ureaplasmium urealytica\",   \"Ureaplazma urealitycium\" )) #> Class 'mo' #> [1] B_URPLS_URLY B_URPLS_URLY B_URPLS_URLY B_URPLS_URLY  # input will get cleaned up with the input given in the `cleaning_regex` argument, # which defaults to `mo_cleaning_regex()`: cat(mo_cleaning_regex(), \"\\n\") #> ([^A-Za-z- \\(\\)\\[\\]{}]+|([({]|\\[).+([})]|\\])|(^| )( ?[a-z-]+[-](resistant|susceptible) ?|e?spp([^a-z]+|$)|e?ssp([^a-z]+|$)|serogr.?up[a-z]*|e?ss([^a-z]+|$)|e?sp([^a-z]+|$)|var([^a-z]+|$)|serovar[a-z]*|sube?species|biovar[a-z]*|e?species|Ig[ADEGM]|e?subsp|biotype|titer|dummy))   as.mo(\"Streptococcus group A\") #> Class 'mo' #> [1] B_STRPT_GRPA  as.mo(\"S. epidermidis\") # will remain species: B_STPHY_EPDR #> Class 'mo' #> [1] B_STPHY_EPDR as.mo(\"S. epidermidis\", Becker = TRUE) # will not remain species: B_STPHY_CONS #> Class 'mo' #> [1] B_STPHY_CONS  as.mo(\"S. pyogenes\") # will remain species: B_STRPT_PYGN #> Class 'mo' #> [1] B_STRPT_PYGN as.mo(\"S. pyogenes\", Lancefield = TRUE) # will not remain species: B_STRPT_GRPA #> Class 'mo' #> [1] B_STRPT_GRPA  # All mo_* functions use as.mo() internally too (see ?mo_property): mo_genus(\"E. coli\") #> [1] \"Escherichia\" mo_gramstain(\"ESCO\") #> [1] \"Gram-negative\" mo_is_intrinsic_resistant(\"ESCCOL\", ab = \"vanco\") #> ℹ Determining intrinsic resistance based on 'EUCAST Expert Rules' and #>   'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3 (2021). This note #>   will be shown once per session. #> [1] TRUE # }"},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":null,"dir":"Reference","previous_headings":"","what":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"Clean existing SIR values, interpret minimum inhibitory concentration (MIC) values disk diffusion diameters according EUCAST CLSI. .sir() transforms input new class sir, ordered factor containing levels S, SDD, , R, NI. breakpoints currently implemented: clinical microbiology: EUCAST 2011-2024 CLSI 2011-2024; veterinary microbiology: EUCAST 2021-2024 CLSI 2019-2024; ECOFFs (Epidemiological Cut-Values): EUCAST 2020-2024 CLSI 2022-2024. breakpoints used interpretation available clinical_breakpoints data set.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"","code":"as.sir(x, ...)  NA_sir_  is.sir(x)  is_sir_eligible(x, threshold = 0.05)  # Default S3 method as.sir(x, S = \"^(S|U)+$\", I = \"^(I)+$\", R = \"^(R)+$\",   NI = \"^(N|NI|V)+$\", SDD = \"^(SDD|D|H)+$\", ...)  # S3 method for class 'mic' as.sir(x, mo = NULL, ab = deparse(substitute(x)),   guideline = getOption(\"AMR_guideline\", \"EUCAST\"), uti = NULL,   conserve_capped_values = FALSE, add_intrinsic_resistance = FALSE,   reference_data = AMR::clinical_breakpoints,   include_screening = getOption(\"AMR_include_screening\", FALSE),   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), host = NULL,   verbose = FALSE, ...)  # S3 method for class 'disk' as.sir(x, mo = NULL, ab = deparse(substitute(x)),   guideline = getOption(\"AMR_guideline\", \"EUCAST\"), uti = NULL,   add_intrinsic_resistance = FALSE,   reference_data = AMR::clinical_breakpoints,   include_screening = getOption(\"AMR_include_screening\", FALSE),   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), host = NULL,   verbose = FALSE, ...)  # S3 method for class 'data.frame' as.sir(x, ..., col_mo = NULL,   guideline = getOption(\"AMR_guideline\", \"EUCAST\"), uti = NULL,   conserve_capped_values = FALSE, add_intrinsic_resistance = FALSE,   reference_data = AMR::clinical_breakpoints,   include_screening = getOption(\"AMR_include_screening\", FALSE),   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), host = NULL,   verbose = FALSE)  sir_interpretation_history(clean = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"interpretations minimum inhibitory concentration (MIC) values disk diffusion diameters: CLSI M39: Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 2011-2024, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m39/. CLSI M100: Performance Standard Antimicrobial Susceptibility Testing, 2011-2024, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m100/. CLSI VET01: Performance Standards Antimicrobial Disk Dilution Susceptibility Tests Bacteria Isolated Animals, 2019-2024, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/veterinary-medicine/documents/vet01/. CLSI VET09: Understanding Susceptibility Test Data Component Antimicrobial Stewardship Veterinary Settings, 2019-2024, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/veterinary-medicine/documents/vet09/. EUCAST Breakpoint tables interpretation MICs zone diameters, 2011-2024, European Committee Antimicrobial Susceptibility Testing (EUCAST). https://www.eucast.org/clinical_breakpoints. WHONET source machine-reading clinical breakpoints (read ), 1989-2024, Collaborating Centre Surveillance Antimicrobial Resistance. https://whonet.org/.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"x vector values (class mic: MIC values mg/L, class disk: disk diffusion radius millimetres) ... using data.frame: names columns apply .sir() (supports tidy selection column1:column4). Otherwise: arguments passed methods. threshold maximum fraction invalid antimicrobial interpretations x, see Examples S, , R, NI, SDD case-independent regular expression translate input result. regular expression run non-letters whitespaces removed input. mo vector (column name) characters can coerced valid microorganism codes .mo(), can left empty determine automatically ab vector (column name) characters can coerced valid antimicrobial drug code .ab() guideline defaults EUCAST 2024 (latest implemented EUCAST guideline clinical_breakpoints data set), can set package option AMR_guideline. Currently supports EUCAST (2011-2024) CLSI (2011-2024), see Details. uti (Urinary Tract Infection) vector (column name) logicals (TRUE FALSE) specify whether UTI specific interpretation guideline chosen. using .sir() data.frame, can also column containing logicals left blank, data set searched column 'specimen', rows within column containing 'urin' ('urine', 'urina') regarded isolates UTI. See Examples. conserve_capped_values logical indicate MIC values starting \">\" (\">=\") must always return \"R\" , MIC values starting \"<\" (\"<=\") must always return \"S\" add_intrinsic_resistance (useful using EUCAST guideline) logical indicate whether intrinsic antibiotic resistance must also considered applicable bug-drug combinations, meaning e.g. ampicillin always return \"R\" Klebsiella species. Determination based intrinsic_resistant data set, based 'EUCAST Expert Rules' 'EUCAST Intrinsic Resistance Unusual Phenotypes' v3.3 (2021). reference_data data.frame used interpretation, defaults clinical_breakpoints data set. Changing argument allows using interpretation guidelines. argument must contain data set equal structure clinical_breakpoints data set (column names column types). Please note guideline argument ignored reference_data manually set. include_screening logical indicate clinical breakpoints screening allowed - default FALSE. Can also set package option AMR_include_screening. include_PKPD logical indicate PK/PD clinical breakpoints must applied last resort - default TRUE. Can also set package option AMR_include_PKPD. breakpoint_type type breakpoints use, either \"ECOFF\", \"animal\", \"human\". ECOFF stands Epidemiological Cut-values. default \"human\", can also set package option AMR_breakpoint_type. host set values veterinary species, automatically set \"animal\". host vector (column name) characters indicate host. useful veterinary breakpoints, requires breakpoint_type = \"animal\". values can text resembling animal species, even 20 supported languages package. foreign languages, sure set language set_AMR_locale() (though automatically guessed based system language). verbose logical indicate notes printed interpretation MIC values disk diffusion values. col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). clean logical indicate whether previously stored results forgotten returning 'logbook' results","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"Ordered factor new class sir","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"Note: clinical breakpoints package validated , imported , WHONET. public use AMR package endorsed CLSI EUCAST. See clinical_breakpoints information. NA_sir_ missing value new sir class, analogous e.g. base R's NA_character_.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"how-it-works","dir":"Reference","previous_headings":"","what":"How it Works","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":".sir() function can work four ways: cleaning raw / untransformed data. data cleaned contain valid values, namely: S susceptible, intermediate 'susceptible, increased exposure', R resistant, NI non-interpretable, SDD susceptible dose-dependent. can set using regular expression. Furthermore, .sir() try best clean intelligence. example, mixed values SIR interpretations MIC values \"<0.25; S\" coerced \"S\". Combined interpretations multiple test methods (seen laboratory records) \"S; S\" coerced \"S\", value like \"S; \" return NA warning input invalid. interpreting minimum inhibitory concentration (MIC) values according EUCAST CLSI. must clean MIC values first using .mic(), also gives columns new data class mic. Also, sure column microorganism names codes. found automatically, can set manually using mo argument. Using dplyr, SIR interpretation can done easily either:   Operators like \"<=\" stripped interpretation. using conserve_capped_values = TRUE, MIC value e.g. \">2\" always return \"R\", even breakpoint according chosen guideline \">=4\". prevent capped values raw laboratory data treated conservatively. default behaviour (conserve_capped_values = FALSE) considers \">2\" lower \">=4\" might case return \"S\" \"\". interpreting disk diffusion diameters according EUCAST CLSI. must clean disk zones first using .disk(), also gives columns new data class disk. Also, sure column microorganism names codes. found automatically, can set manually using mo argument. Using dplyr, SIR interpretation can done easily either:   interpreting complete data set, automatic determination MIC values, disk diffusion diameters, microorganism names codes, antimicrobial test results. done simply running .sir(your_data). points 2, 3 4: Use sir_interpretation_history() retrieve data.frame (tibble tibble package installed) results last .sir() call.","code":"your_data %>% mutate_if(is.mic, as.sir) your_data %>% mutate(across(where(is.mic), as.sir)) your_data %>% mutate_if(is.mic, as.sir, ab = \"column_with_antibiotics\", mo = \"column_with_microorganisms\") your_data %>% mutate_if(is.mic, as.sir, ab = c(\"cipro\", \"ampicillin\", ...), mo = c(\"E. coli\", \"K. pneumoniae\", ...))  # for veterinary breakpoints, also set `host`: your_data %>% mutate_if(is.mic, as.sir, host = \"column_with_animal_species\", guideline = \"CLSI\") your_data %>% mutate_if(is.disk, as.sir) your_data %>% mutate(across(where(is.disk), as.sir)) your_data %>% mutate_if(is.disk, as.sir, ab = \"column_with_antibiotics\", mo = \"column_with_microorganisms\") your_data %>% mutate_if(is.disk, as.sir, ab = c(\"cipro\", \"ampicillin\", ...), mo = c(\"E. coli\", \"K. pneumoniae\", ...))  # for veterinary breakpoints, also set `host`: your_data %>% mutate_if(is.disk, as.sir, host = \"column_with_animal_species\", guideline = \"CLSI\")"},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"supported-guidelines","dir":"Reference","previous_headings":"","what":"Supported Guidelines","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"interpreting MIC values well disk diffusion diameters, currently implemented guidelines clinical microbiology: EUCAST 2011-2024 CLSI 2011-2024, veterinary microbiology: EUCAST 2021-2024 CLSI 2019-2024. Thus, guideline argument must set e.g., \"EUCAST 2024\" \"CLSI 2024\". simply using \"EUCAST\" (default) \"CLSI\" input, latest included version guideline automatically selected. can set data set using reference_data argument. guideline argument ignored. can set default guideline package option AMR_guideline (e.g. .Rprofile file), :   veterinary guidelines, might best options:   applying veterinary breakpoints (setting host setting breakpoint_type = \"animal\"), CLSI VET09 guideline applied cope missing animal species-specific breakpoints.","code":"options(AMR_guideline = \"CLSI\")   options(AMR_guideline = \"CLSI 2018\")   options(AMR_guideline = \"EUCAST 2020\")   # or to reset:   options(AMR_guideline = NULL) options(AMR_guideline = \"CLSI\")   options(AMR_breakpoint_type = \"animal\")"},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"after-interpretation","dir":"Reference","previous_headings":"","what":"After Interpretation","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"using .sir(), can use eucast_rules() defined EUCAST (1) apply inferred susceptibility resistance based results antimicrobials (2) apply intrinsic resistance based taxonomic properties microorganism. determine isolates multi-drug resistant, sure run mdro() (applies MDR/PDR/XDR guideline 2012 default) data set contains S//R values. Read interpreting multidrug-resistant organisms .","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"machine-readable-clinical-breakpoints","dir":"Reference","previous_headings":"","what":"Machine-Readable Clinical Breakpoints","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"repository package contains machine-readable version guidelines. CSV file consisting 34 063 rows 14 columns. file machine-readable, since contains one row every unique combination test method (MIC disk diffusion), antimicrobial drug microorganism. allows easy implementation rules laboratory information systems (LIS). Note contains interpretation guidelines humans - interpretation guidelines CLSI animals removed.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"other","dir":"Reference","previous_headings":"","what":"Other","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"function .sir() detects input contains class sir. input data.frame, iterates columns returns logical vector. base R function .double() can used retrieve quantitative values sir object: \"S\" = 1, \"\"/\"SDD\" = 2, \"R\" = 3. values rendered NA . Note: use .integer(), since (R works internally) return factor level indices, aforementioned quantitative values. function is_sir_eligible() returns TRUE column contains 5% invalid antimicrobial interpretations (S //R /NI /SDD), FALSE otherwise. threshold 5% can set threshold argument. input data.frame, iterates columns returns logical vector.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"","code":"example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … summary(example_isolates) # see all SIR results at a glance #>       date              patient               age           gender          #>  Min.   :2002-01-02   Length:2000        Min.   : 0.00   Length:2000        #>  1st Qu.:2005-07-31   Class :character   1st Qu.:63.00   Class :character   #>  Median :2009-07-31   Mode  :character   Median :74.00   Mode  :character   #>  Mean   :2009-11-20                      Mean   :70.69                      #>  3rd Qu.:2014-05-30                      3rd Qu.:82.00                      #>  Max.   :2017-12-28                      Max.   :97.00                      #>      ward                mo                  PEN                 #>  Length:2000        Class :mo             Class:sir              #>  Class :character   <NA>  :0              %S   :25.6% (n=417)    #>  Mode  :character   Unique:90             %SDD : 0.0% (n=0)      #>                     #1    :B_ESCHR_COLI   %I   : 0.7% (n=11)     #>                     #2    :B_STPHY_CONS   %R   :73.7% (n=1201)   #>                     #3    :B_STPHY_AURS   %NI  : 0.0% (n=0)      #>     OXA                   FLC                   AMX                #>  Class:sir             Class:sir             Class:sir             #>  %S   :68.8% (n=251)   %S   :70.5% (n=665)   %S   :40.2% (n=543)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)     %I   : 0.0% (n=0)     %I   : 0.2% (n=3)     #>  %R   :31.2% (n=114)   %R   :29.5% (n=278)   %R   :59.6% (n=804)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     #>     AMC                    AMP                   TZP                #>  Class:sir              Class:sir             Class:sir             #>  %S   :71.4% (n=1342)   %S   :40.2% (n=543)   %S   :86.1% (n=862)   #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 4.8% (n=91)     %I   : 0.2% (n=3)     %I   : 1.3% (n=13)    #>  %R   :23.7% (n=446)    %R   :59.6% (n=804)   %R   :12.6% (n=126)   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     #>     CZO                   FEP                   CXM                 #>  Class:sir             Class:sir             Class:sir              #>  %S   :54.9% (n=245)   %S   :85.6% (n=620)   %S   :72.5% (n=1297)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      #>  %I   : 0.4% (n=2)     %I   : 0.1% (n=1)     %I   : 1.2% (n=22)     #>  %R   :44.6% (n=199)   %R   :14.2% (n=103)   %R   :26.3% (n=470)    #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      #>     FOX                   CTX                   CAZ                 #>  Class:sir             Class:sir             Class:sir              #>  %S   :71.6% (n=586)   %S   :84.4% (n=796)   %S   :33.5% (n=607)    #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      #>  %I   : 1.0% (n=8)     %I   : 0.1% (n=1)     %I   : 0.0% (n=0)      #>  %R   :27.4% (n=224)   %R   :15.5% (n=146)   %R   :66.5% (n=1204)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      #>     CRO                   GEN                    TOB                #>  Class:sir             Class:sir              Class:sir             #>  %S   :84.4% (n=796)   %S   :74.0% (n=1372)   %S   :65.1% (n=879)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     #>  %I   : 0.1% (n=1)     %I   : 1.5% (n=27)     %I   : 0.5% (n=7)     #>  %R   :15.5% (n=146)   %R   :24.6% (n=456)    %R   :34.4% (n=465)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     #>     AMK                   KAN                    TMP                #>  Class:sir             Class:sir              Class:sir             #>  %S   :36.3% (n=251)   %S   : 0.0% (n=0)      %S   :61.2% (n=918)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)     %I   : 0.0% (n=0)      %I   : 0.7% (n=10)    #>  %R   :63.7% (n=441)   %R   :100.0% (n=471)   %R   :38.1% (n=571)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     #>     SXT                    NIT                   FOS                #>  Class:sir              Class:sir             Class:sir             #>  %S   :79.1% (n=1392)   %S   :76.0% (n=565)   %S   :57.8% (n=203)   #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 0.3% (n=6)      %I   : 6.9% (n=51)    %I   : 0.0% (n=0)     #>  %R   :20.5% (n=361)    %R   :17.1% (n=127)   %R   :42.2% (n=148)   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     #>     LNZ                   CIP                    MFX                #>  Class:sir             Class:sir              Class:sir             #>  %S   :30.7% (n=314)   %S   :78.9% (n=1112)   %S   :64.5% (n=136)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)     %I   : 4.9% (n=69)     %I   : 1.9% (n=4)     #>  %R   :69.3% (n=709)   %R   :16.2% (n=228)    %R   :33.6% (n=71)    #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     #>     VAN                    TEC                   TCY                #>  Class:sir              Class:sir             Class:sir             #>  %S   :61.7% (n=1149)   %S   :24.3% (n=237)   %S   :68.3% (n=820)   #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)      %I   : 0.0% (n=0)     %I   : 1.9% (n=23)    #>  %R   :38.3% (n=712)    %R   :75.7% (n=739)   %R   :29.8% (n=357)   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     #>     TGC                   DOX                   ERY                 #>  Class:sir             Class:sir             Class:sir              #>  %S   :87.3% (n=697)   %S   :71.7% (n=814)   %S   :42.3% (n=801)    #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      #>  %I   : 0.0% (n=0)     %I   : 0.6% (n=7)     %I   : 0.5% (n=9)      #>  %R   :12.7% (n=101)   %R   :27.7% (n=315)   %R   :57.2% (n=1084)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      #>     CLI                   AZM                    IPM                #>  Class:sir             Class:sir              Class:sir             #>  %S   :38.6% (n=586)   %S   :42.3% (n=801)    %S   :92.7% (n=824)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     #>  %I   : 0.3% (n=4)     %I   : 0.5% (n=9)      %I   : 1.1% (n=10)    #>  %R   :61.2% (n=930)   %R   :57.2% (n=1084)   %R   : 6.2% (n=55)    #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     #>     MEM                   MTR                  CHL                #>  Class:sir             Class:sir            Class:sir             #>  %S   :94.1% (n=780)   %S   :85.3% (n=29)   %S   :78.6% (n=121)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)    %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)     %I   : 0.0% (n=0)    %I   : 0.0% (n=0)     #>  %R   : 5.9% (n=49)    %R   :14.7% (n=5)    %R   :21.4% (n=33)    #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)    %NI  : 0.0% (n=0)     #>     COL                    MUP                   RIF                #>  Class:sir              Class:sir             Class:sir             #>  %S   :18.8% (n=309)    %S   :93.0% (n=251)   %S   :30.2% (n=303)   #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)      %I   : 1.1% (n=3)     %I   : 0.2% (n=2)     #>  %R   :81.2% (n=1331)   %R   : 5.9% (n=16)    %R   :69.6% (n=698)   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      # For INTERPRETING disk diffusion and MIC values -----------------------  # example data sets, with combined MIC values and disk zones df_wide <- data.frame(   microorganism = \"Escherichia coli\",   amoxicillin = as.mic(8),   cipro = as.mic(0.256),   tobra = as.disk(16),   genta = as.disk(18),   ERY = \"R\" ) df_long <- data.frame(   bacteria = rep(\"Escherichia coli\", 4),   antibiotic = c(\"amoxicillin\", \"cipro\", \"tobra\", \"genta\"),   mics = as.mic(c(0.01, 1, 4, 8)),   disks = as.disk(c(6, 10, 14, 18)) )  # \\donttest{ ## Using dplyr ------------------------------------------------- if (require(\"dplyr\")) {   # approaches that all work without additional arguments:   df_wide %>% mutate_if(is.mic, as.sir)   df_wide %>% mutate_if(function(x) is.mic(x) | is.disk(x), as.sir)   df_wide %>% mutate(across(where(is.mic), as.sir))   df_wide %>% mutate_at(vars(amoxicillin:tobra), as.sir)   df_wide %>% mutate(across(amoxicillin:tobra, as.sir))      # approaches that all work with additional arguments:   df_long %>%     # given a certain data type, e.g. MIC values     mutate_if(is.mic, as.sir,               mo = \"bacteria\",               ab = \"antibiotic\",               guideline = \"CLSI\")   df_long %>%     mutate(across(where(is.mic),                   function(x) as.sir(x,                                      mo = \"bacteria\",                                      ab = \"antibiotic\",                                      guideline = \"CLSI\")))   df_wide %>%     # given certain columns, e.g. from 'cipro' to 'genta'     mutate_at(vars(cipro:genta), as.sir,               mo = \"bacteria\",               guideline = \"CLSI\")   df_wide %>%     mutate(across(cipro:genta,                        function(x) as.sir(x,                                           mo = \"bacteria\",                                           guideline = \"CLSI\")))                           # for veterinary breakpoints, add 'host':   df_long$animal_species <- c(\"cats\", \"dogs\", \"horses\", \"cattle\")   df_long %>%     # given a certain data type, e.g. MIC values     mutate_if(is.mic, as.sir,               mo = \"bacteria\",               ab = \"antibiotic\",               host = \"animal_species\",               guideline = \"CLSI\")   df_long %>%     mutate(across(where(is.mic),                   function(x) as.sir(x,                                      mo = \"bacteria\",                                      ab = \"antibiotic\",                                      host = \"animal_species\",                                      guideline = \"CLSI\")))   df_wide %>%     mutate_at(vars(cipro:genta), as.sir,               mo = \"bacteria\",               ab = \"antibiotic\",               host = \"animal_species\",               guideline = \"CLSI\")   df_wide %>%     mutate(across(cipro:genta,                        function(x) as.sir(x,                                           mo = \"bacteria\",                                           host = \"animal_species\",                                           guideline = \"CLSI\")))      # to include information about urinary tract infections (UTI)   data.frame(mo = \"E. coli\",              nitrofuratoin = c(\"<= 2\", 32),              from_the_bladder = c(TRUE, FALSE)) %>%     as.sir(uti = \"from_the_bladder\")    data.frame(mo = \"E. coli\",              nitrofuratoin = c(\"<= 2\", 32),              specimen = c(\"urine\", \"blood\")) %>%     as.sir() # automatically determines urine isolates    df_wide %>%     mutate_at(vars(cipro:genta), as.sir, mo = \"E. coli\", uti = TRUE) } #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin) based on #> column 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for tobramycin (TOB) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin) based on #> column 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for gentamicin (GEN) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin) based on #> column 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for tobramycin (TOB) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin) based on #> column 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for tobramycin (TOB) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX), 'cipro' (CIP, ciprofloxacin), #> 'tobra' (TOB, tobramycin), and 'genta' (GEN, gentamicin) based on column #> 'bacteria', CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX), 'cipro' (CIP, ciprofloxacin), #> 'tobra' (TOB, tobramycin), and 'genta' (GEN, gentamicin) based on column #> 'bacteria', CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin), CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin), CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> ℹ Assuming breakpoint_type = \"animal\", since host is set. #>  #> ℹ Please note that in the absence of specific veterinary breakpoints for #>   certain animal hosts, the CLSI guideline VET09 will be applied where #>   possible. #>  #> Interpreting MIC values: 'amoxicillin' (AMX), 'cipro' (CIP, ciprofloxacin), #> 'tobra' (TOB, tobramycin), and 'genta' (GEN, gentamicin) based on column #> 'bacteria', CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> ℹ Assuming breakpoint_type = \"animal\", since host is set. #>  #> ℹ Please note that in the absence of specific veterinary breakpoints for #>   certain animal hosts, the CLSI guideline VET09 will be applied where #>   possible. #>  #> Interpreting MIC values: 'amoxicillin' (AMX), 'cipro' (CIP, ciprofloxacin), #> 'tobra' (TOB, tobramycin), and 'genta' (GEN, gentamicin) based on column #> 'bacteria', CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> ℹ Assuming breakpoint_type = \"animal\", since host is set. #>  #>  #> ℹ Please note that in the absence of specific veterinary breakpoints for #>   certain animal hosts, the CLSI guideline VET09 will be applied where #>   possible. #>  #> Interpreting MIC values: 'antibiotic' (TESTAB, test Antibiotic), CLSI #> 2024... #>  WARNING  #>   • No CLSI 2024 MIC breakpoints available for test Antibiotic (TESTAB). #> Interpreting disk diffusion zones: 'antibiotic' (TESTAB, test Antibiotic), #> CLSI 2024... #>  WARNING  #>   • No CLSI 2024 DISK breakpoints available for test Antibiotic (TESTAB). #> Interpreting disk diffusion zones: 'antibiotic' (TESTAB, test Antibiotic), #> CLSI 2024... #>  WARNING  #>   • No CLSI 2024 DISK breakpoints available for test Antibiotic (TESTAB). #> Warning: There was 1 warning in `mutate()`. #> ℹ In argument: `cipro = (function (x, ...) ...`. #> Caused by warning: #> ! The following animal host(s) could not be coerced: \"animal_species\" #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> ℹ Assuming breakpoint_type = \"animal\", since host is set. #>  #>  #> ℹ Please note that in the absence of specific veterinary breakpoints for #>   certain animal hosts, the CLSI guideline VET09 will be applied where #>   possible. #>  #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin), CLSI 2024... #>  OK  #> Warning: There was 1 warning in `mutate()`. #> ℹ In argument: `across(...)`. #> Caused by warning: #> ! The following animal host(s) could not be coerced: \"animal_species\" #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: column 'nitrofuratoin' (NIT, #> nitrofurantoin), EUCAST 2024... #>  OK  #> ℹ Assuming value \"urine\" in column 'specimen' reflects a urinary tract #>   infection. #>   Use as.sir(uti = FALSE) to prevent this. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: column 'nitrofuratoin' (NIT, #> nitrofurantoin), EUCAST 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), EUCAST 2024... #>  OK  #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin), EUCAST #> 2024... #>  OK  #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin), EUCAST #> 2024... #>  OK  #>      microorganism amoxicillin cipro tobra genta ERY #> 1 Escherichia coli           8  <NA>     S     S   R   ## Using base R ------------------------------------------------  as.sir(df_wide) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: column 'amoxicillin' (AMX), EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: column 'cipro' (CIP, ciprofloxacin), EUCAST #> 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #> Interpreting disk diffusion zones: column 'tobra' (TOB, tobramycin), EUCAST #> 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for tobramycin (TOB) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting disk diffusion zones: column 'genta' (GEN, gentamicin), EUCAST #> 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for gentamicin (GEN) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #> Assigning class 'sir' to already clean column 'ERY' (erythromycin)... #>  OK  #>      microorganism amoxicillin cipro tobra genta ERY #> 1 Escherichia coli           S     I     S     S   R  # return a 'logbook' about the results: sir_interpretation_history() #> # A tibble: 57 × 16 #>    datetime            index ab_given mo_given host_given ab   mo               #>  * <dttm>              <int> <chr>    <chr>    <chr>      <ab> <mo>             #>  1 2025-02-07 18:56:26     4 AMX      B_STRPT… human      AMX  B_STRPT_PNMN     #>  2 2025-02-07 18:56:33     4 genta    Escheri… human      GEN  B_[ORD]_ENTRBCTR #>  3 2025-02-07 18:56:33     4 genta    Escheri… human      GEN  B_[ORD]_ENTRBCTR #>  4 2025-02-07 18:56:34     4 genta    Escheri… cattle     GEN  B_ESCHR_COLI     #>  5 2025-02-07 18:56:35     4 genta    Escheri… cattle     GEN  B_ESCHR_COLI     #>  6 2025-02-07 18:56:26     3 AMX      B_STRPT… human      AMX  B_STRPT_PNMN     #>  7 2025-02-07 18:56:33     3 tobra    Escheri… human      TOB  B_[ORD]_ENTRBCTR #>  8 2025-02-07 18:56:33     3 tobra    Escheri… human      TOB  B_[ORD]_ENTRBCTR #>  9 2025-02-07 18:56:34     3 tobra    Escheri… horses     TOB  B_ESCHR_COLI     #> 10 2025-02-07 18:56:35     3 tobra    Escheri… horses     TOB  B_ESCHR_COLI     #> # ℹ 47 more rows #> # ℹ 9 more variables: host <chr>, method <chr>, input <dbl>, outcome <sir>, #> #   notes <chr>, guideline <chr>, ref_table <chr>, uti <lgl>, #> #   breakpoint_S_R <chr>  # for single values as.sir(   x = as.mic(2),   mo = as.mo(\"S. pneumoniae\"),   ab = \"AMP\",   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'AMP' (ampicillin), EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ampicillin (AMP) in Streptococcus pneumoniae - assuming body site 'Non-meningitis'. #> Class 'sir' #> [1] R  as.sir(   x = as.disk(18),   mo = \"Strep pneu\", # `mo` will be coerced with as.mo()   ab = \"ampicillin\", # and `ab` with as.ab()   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: 'ampicillin' (AMP), EUCAST 2024... #>  OK  #> Class 'sir' #> [1] R   # For CLEANING existing SIR values ------------------------------------  as.sir(c(\"S\", \"SDD\", \"I\", \"R\", \"NI\", \"A\", \"B\", \"C\")) #> Warning: in as.sir(): 3 results in column '20' truncated (38%) that were invalid #> antimicrobial interpretations: \"A\", \"B\", and \"C\" as.sir(\"<= 0.002; S\") # will return \"S\" sir_data <- as.sir(c(rep(\"S\", 474), rep(\"I\", 36), rep(\"R\", 370))) is.sir(sir_data) #> [1] TRUE plot(sir_data) # for percentages  barplot(sir_data) # for frequencies   # as common in R, you can use as.integer() to return factor indices: as.integer(as.sir(c(\"S\", \"SDD\", \"I\", \"R\", \"NI\", NA))) #> [1]  1  2  3  4  5 NA # but for computational use, as.double() will return 1 for S, 2 for I/SDD, and 3 for R: as.double(as.sir(c(\"S\", \"SDD\", \"I\", \"R\", \"NI\", NA))) #> [1]  1  2  2  3 NA NA  # the dplyr way if (require(\"dplyr\")) {   example_isolates %>%     mutate_at(vars(PEN:RIF), as.sir)   # same:   example_isolates %>%     as.sir(PEN:RIF)    # fastest way to transform all columns with already valid AMR results to class `sir`:   example_isolates %>%     mutate_if(is_sir_eligible, as.sir)    # since dplyr 1.0.0, this can also be:   # example_isolates %>%   #   mutate(across(where(is_sir_eligible), as.sir)) } #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … # }"},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":null,"dir":"Reference","previous_headings":"","what":"Get ATC Properties from WHOCC Website — atc_online_property","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"Gets data WHOCC website determine properties Anatomical Therapeutic Chemical (ATC) (e.g. antibiotic), name, defined daily dose (DDD) standard unit.","code":""},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"","code":"atc_online_property(atc_code, property, administration = \"O\",   url = \"https://atcddd.fhi.no/atc_ddd_index/?code=%s&showdescription=no\",   url_vet = \"https://atcddd.fhi.no/atcvet/atcvet_index/?code=%s&showdescription=no\")  atc_online_groups(atc_code, ...)  atc_online_ddd(atc_code, ...)  atc_online_ddd_units(atc_code, ...)"},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"https://atcddd.fhi./atc_ddd_alterations__cumulative/ddd_alterations/abbrevations/","code":""},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"atc_code character (vector) ATC code(s) antibiotics, coerced .ab() ab_atc() internally valid ATC code property property ATC code. Valid values \"ATC\", \"Name\", \"DDD\", \"U\" (\"unit\"), \"Adm.R\", \"Note\" groups. last option, hierarchical groups ATC code returned, see Examples. administration type administration using property = \"Adm.R\", see Details url url website WHOCC. sign %s can used placeholder ATC codes. url_vet url website WHOCC veterinary medicine. sign %s can used placeholder ATC_vet codes (start \"Q\"). ... arguments pass atc_property","code":""},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"Options argument administration: \"Implant\" = Implant \"Inhal\" = Inhalation \"Instill\" = Instillation \"N\" = nasal \"O\" = oral \"P\" = parenteral \"R\" = rectal \"SL\" = sublingual/buccal \"TD\" = transdermal \"V\" = vaginal Abbreviations return values using property = \"U\" (unit): \"g\" = gram \"mg\" = milligram \"mcg\" = microgram \"U\" = unit \"TU\" = thousand units \"MU\" = million units \"mmol\" = millimole \"ml\" = millilitre (e.g. eyedrops) N.B. function requires internet connection works following packages installed: curl, rvest, xml2.","code":""},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"","code":"# \\donttest{ if (requireNamespace(\"curl\") && requireNamespace(\"rvest\") && requireNamespace(\"xml2\")) {   # oral DDD (Defined Daily Dose) of amoxicillin   atc_online_property(\"J01CA04\", \"DDD\", \"O\")   atc_online_ddd(ab_atc(\"amox\"))    # parenteral DDD (Defined Daily Dose) of amoxicillin   atc_online_property(\"J01CA04\", \"DDD\", \"P\")    atc_online_property(\"J01CA04\", property = \"groups\") # search hierarchical groups of amoxicillin } #> Loading required namespace: rvest #> [1] \"ANTIINFECTIVES FOR SYSTEMIC USE\"         #> [2] \"ANTIBACTERIALS FOR SYSTEMIC USE\"         #> [3] \"BETA-LACTAM ANTIBACTERIALS, PENICILLINS\" #> [4] \"Penicillins with extended spectrum\"      # }"},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"Use function e.g. clinical texts health care records. returns list antiviral drugs, doses forms administration found texts.","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"","code":"av_from_text(text, type = c(\"drug\", \"dose\", \"administration\"),   collapse = NULL, translate_av = FALSE, thorough_search = NULL,   info = interactive(), ...)"},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"text text analyse type type property search , either \"drug\", \"dose\" \"administration\", see Examples collapse character pass paste(, collapse = ...) return one character per element text, see Examples translate_av type = \"drug\": column name antivirals data set translate antibiotic abbreviations , using av_property(). default FALSE. Using TRUE equal using \"name\". thorough_search logical indicate whether input must extensively searched misspelling faulty input values. Setting TRUE take considerably time using FALSE. default, turn TRUE input elements contain maximum three words. info logical indicate whether progress bar printed - default TRUE interactive mode ... arguments passed .av()","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"list,  character collapse NULL","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"function also internally used .av(), although searches first drug name throw note drug names returned. Note: .av() function may use long regular expression match brand names antiviral drugs. may fail systems.","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"argument-type","dir":"Reference","previous_headings":"","what":"Argument type","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"default, function search antiviral drug names. text elements searched official names, ATC codes brand names. uses .av() internally, correct misspelling. type = \"dose\" (similar, like \"dosing\", \"doses\"), text elements searched numeric values higher 100 resemble years. output numeric. supports unit (g, mg, IE, etc.) multiple values one clinical text, see Examples. type = \"administration\" (abbreviations, like \"admin\", \"adm\"), text elements searched form drug administration. supports following forms (including common abbreviations): buccal, implant, inhalation, instillation, intravenous, nasal, oral, parenteral, rectal, sublingual, transdermal vaginal. Abbreviations oral ('po', 'per os') become \"oral\", values intravenous ('iv', 'intraven') become \"iv\". supports multiple values one clinical text, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"argument-collapse","dir":"Reference","previous_headings":"","what":"Argument collapse","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"Without using collapse, function return list. can convenient use e.g. inside mutate()):df %>% mutate(avx = av_from_text(clinical_text)) returned AV codes can transformed official names, groups, etc. av_* functions av_name() av_group(), using translate_av argument. using collapse, function return character:df %>% mutate(avx = av_from_text(clinical_text, collapse = \"|\"))","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"","code":"av_from_text(\"28/03/2020 valaciclovir po tid\") #> [[1]] #> Class 'av' #> [1] VALA #>  av_from_text(\"28/03/2020 valaciclovir po tid\", type = \"admin\") #> [[1]] #> [1] \"oral\" #>"},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Properties of an Antiviral Drug — av_property","title":"Get Properties of an Antiviral Drug — av_property","text":"Use functions return specific property antiviral drug antivirals data set. input values evaluated internally .av().","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Properties of an Antiviral Drug — av_property","text":"","code":"av_name(x, language = get_AMR_locale(), tolower = FALSE, ...)  av_cid(x, ...)  av_synonyms(x, ...)  av_tradenames(x, ...)  av_group(x, language = get_AMR_locale(), ...)  av_atc(x, ...)  av_loinc(x, ...)  av_ddd(x, administration = \"oral\", ...)  av_ddd_units(x, administration = \"oral\", ...)  av_info(x, language = get_AMR_locale(), ...)  av_url(x, open = FALSE, ...)  av_property(x, property = \"name\", language = get_AMR_locale(), ...)"},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Properties of an Antiviral Drug — av_property","text":"x (vector ) text can coerced valid antiviral drug code .av() language language returned text - default system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. tolower logical indicate whether first character every output transformed lower case character. ... arguments passed .av() administration way administration, either \"oral\" \"iv\" open browse URL using utils::browseURL() property one column names one antivirals data set: vector_or(colnames(antivirals), sort = FALSE).","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Properties of an Antiviral Drug — av_property","text":"integer case av_cid() named list case av_info() multiple av_atc()/av_synonyms()/av_tradenames() double case av_ddd() character cases","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Properties of an Antiviral Drug — av_property","text":"output translated possible. function av_url() return direct URL official website. warning returned required ATC code available.","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Get Properties of an Antiviral Drug — av_property","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology: https://atcddd.fhi./atc_ddd_index/ European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Get Properties of an Antiviral Drug — av_property","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Properties of an Antiviral Drug — av_property","text":"","code":"# all properties: av_name(\"ACI\") #> [1] \"Aciclovir\" av_atc(\"ACI\") #> [1] \"J05AB01\" av_cid(\"ACI\") #> [1] 135398513 av_synonyms(\"ACI\") #>  [1] \"acicloftal\"        \"aciclovier\"        \"aciclovirum\"       #>  [4] \"activir\"           \"acyclofoam\"        \"acycloguanosine\"   #>  [7] \"acyclovir\"         \"acyclovir lauriad\" \"avaclyr\"           #> [10] \"cargosil\"          \"cyclovir\"          \"genvir\"            #> [13] \"gerpevir\"          \"hascovir\"          \"maynar\"            #> [16] \"novirus\"           \"poviral\"           \"sitavig\"           #> [19] \"sitavir\"           \"vipral\"            \"viropump\"          #> [22] \"virorax\"           \"zovirax\"           \"zyclir\"            av_tradenames(\"ACI\") #>  [1] \"acicloftal\"        \"aciclovier\"        \"aciclovirum\"       #>  [4] \"activir\"           \"acyclofoam\"        \"acycloguanosine\"   #>  [7] \"acyclovir\"         \"acyclovir lauriad\" \"avaclyr\"           #> [10] \"cargosil\"          \"cyclovir\"          \"genvir\"            #> [13] \"gerpevir\"          \"hascovir\"          \"maynar\"            #> [16] \"novirus\"           \"poviral\"           \"sitavig\"           #> [19] \"sitavir\"           \"vipral\"            \"viropump\"          #> [22] \"virorax\"           \"zovirax\"           \"zyclir\"            av_group(\"ACI\") #> [1] \"Nucleosides and nucleotides excl. reverse transcriptase inhibitors\" av_url(\"ACI\") #>                                                              Aciclovir  #> \"https://atcddd.fhi.no/atc_ddd_index/?code=J05AB01&showdescription=no\"   # lowercase transformation av_name(x = c(\"ACI\", \"VALA\")) #> [1] \"Aciclovir\"    \"Valaciclovir\" av_name(x = c(\"ACI\", \"VALA\"), tolower = TRUE) #> [1] \"aciclovir\"    \"valaciclovir\"  # defined daily doses (DDD) av_ddd(\"ACI\", \"oral\") #> [1] 4 av_ddd_units(\"ACI\", \"oral\") #> [1] \"g\" av_ddd(\"ACI\", \"iv\") #> [1] 4 av_ddd_units(\"ACI\", \"iv\") #> [1] \"g\"  av_info(\"ACI\") # all properties as a list #> $av #> [1] \"ACI\" #>  #> $cid #> [1] 135398513 #>  #> $name #> [1] \"Aciclovir\" #>  #> $group #> [1] \"Nucleosides and nucleotides excl. reverse transcriptase inhibitors\" #>  #> $atc #> [1] \"J05AB01\" #>  #> $tradenames #>  [1] \"acicloftal\"        \"aciclovier\"        \"aciclovirum\"       #>  [4] \"activir\"           \"acyclofoam\"        \"acycloguanosine\"   #>  [7] \"acyclovir\"         \"acyclovir lauriad\" \"avaclyr\"           #> [10] \"cargosil\"          \"cyclovir\"          \"genvir\"            #> [13] \"gerpevir\"          \"hascovir\"          \"maynar\"            #> [16] \"novirus\"           \"poviral\"           \"sitavig\"           #> [19] \"sitavir\"           \"vipral\"            \"viropump\"          #> [22] \"virorax\"           \"zovirax\"           \"zyclir\"            #>  #> $loinc #> [1] \"\" #>  #> $ddd #> $ddd$oral #> $ddd$oral$amount #> [1] 4 #>  #> $ddd$oral$units #> [1] \"g\" #>  #>  #> $ddd$iv #> $ddd$iv$amount #> [1] 4 #>  #> $ddd$iv$units #> [1] \"g\" #>  #>  #>   # all av_* functions use as.av() internally, so you can go from 'any' to 'any': av_atc(\"ACI\") #> [1] \"J05AB01\" av_group(\"J05AB01\") #> [1] \"Nucleosides and nucleotides excl. reverse transcriptase inhibitors\" av_loinc(\"abacavir\") #> [1] \"29113-8\" \"30273-7\" \"30287-7\" \"30303-2\" \"78772-1\" \"78773-9\" \"79134-3\" #> [8] \"80118-3\" av_name(\"29113-8\") #> [1] \"Abacavir\" av_name(135398513) #> [1] \"Aciclovir\" av_name(\"J05AB01\") #> [1] \"Aciclovir\""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":null,"dir":"Reference","previous_headings":"","what":"Check Availability of Columns — availability","title":"Check Availability of Columns — availability","text":"Easy check data availability columns data set. makes easy get idea antimicrobial combinations can used calculation e.g. susceptibility() resistance().","code":""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check Availability of Columns — availability","text":"","code":"availability(tbl, width = NULL)"},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check Availability of Columns — availability","text":"tbl data.frame list width number characters present visual availability - default filling width console","code":""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check Availability of Columns — availability","text":"data.frame column names tbl row names","code":""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Check Availability of Columns — availability","text":"function returns data.frame columns \"resistant\" \"visual_resistance\". values columns calculated resistance().","code":""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check Availability of Columns — availability","text":"","code":"availability(example_isolates) #>         count available     visual_availabilty resistant      visual_resistance #> date     2000    100.0% |####################|                                  #> patient  2000    100.0% |####################|                                  #> age      2000    100.0% |####################|                                  #> gender   2000    100.0% |####################|                                  #> ward     2000    100.0% |####################|                                  #> mo       2000    100.0% |####################|                                  #> PEN      1629     81.5% |################----|     73.7% |##############------| #> OXA       365     18.3% |###-----------------|     31.2% |######--------------| #> FLC       943     47.2% |#########-----------|     29.5% |#####---------------| #> AMX      1350     67.5% |#############-------|     59.6% |###########---------| #> AMC      1879     94.0% |##################--|     23.7% |####----------------| #> AMP      1350     67.5% |#############-------|     59.6% |###########---------| #> TZP      1001     50.0% |##########----------|     12.6% |##------------------| #> CZO       446     22.3% |####----------------|     44.6% |########------------| #> FEP       724     36.2% |#######-------------|     14.2% |##------------------| #> CXM      1789     89.5% |#################---|     26.3% |#####---------------| #> FOX       818     40.9% |########------------|     27.4% |#####---------------| #> CTX       943     47.2% |#########-----------|     15.5% |###-----------------| #> CAZ      1811     90.6% |##################--|     66.5% |#############-------| #> CRO       943     47.2% |#########-----------|     15.5% |###-----------------| #> GEN      1855     92.8% |##################--|     24.6% |####----------------| #> TOB      1351     67.6% |#############-------|     34.4% |######--------------| #> AMK       692     34.6% |######--------------|     63.7% |############--------| #> KAN       471     23.6% |####----------------|    100.0% |####################| #> TMP      1499     75.0% |###############-----|     38.1% |#######-------------| #> SXT      1759     88.0% |#################---|     20.5% |####----------------| #> NIT       743     37.2% |#######-------------|     17.1% |###-----------------| #> FOS       351     17.6% |###-----------------|     42.2% |########------------| #> LNZ      1023     51.2% |##########----------|     69.3% |#############-------| #> CIP      1409     70.5% |#############-------|     16.2% |###-----------------| #> MFX       211     10.6% |##------------------|     33.6% |######--------------| #> VAN      1861     93.1% |##################--|     38.3% |#######-------------| #> TEC       976     48.8% |#########-----------|     75.7% |###############-----| #> TCY      1200     60.0% |###########---------|     29.8% |#####---------------| #> TGC       798     39.9% |########------------|     12.7% |##------------------| #> DOX      1136     56.8% |###########---------|     27.7% |#####---------------| #> ERY      1894     94.7% |##################--|     57.2% |###########---------| #> CLI      1520     76.0% |###############-----|     61.2% |############--------| #> AZM      1894     94.7% |##################--|     57.2% |###########---------| #> IPM       889     44.5% |########------------|      6.2% |#-------------------| #> MEM       829     41.5% |########------------|      5.9% |#-------------------| #> MTR        34      1.7% |--------------------|     14.7% |##------------------| #> CHL       154      7.7% |#-------------------|     21.4% |####----------------| #> COL      1640     82.0% |################----|     81.2% |################----| #> MUP       270     13.5% |##------------------|      5.9% |#-------------------| #> RIF      1003     50.2% |##########----------|     69.6% |#############-------| # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     filter(mo == as.mo(\"Escherichia coli\")) %>%     select_if(is.sir) %>%     availability() } #>     count available       visual_availabilty resistant        visual_resistance #> PEN   467    100.0% |######################|    100.0% |######################| #> OXA     0      0.0% |----------------------|                                    #> FLC     0      0.0% |----------------------|                                    #> AMX   392     83.9% |##################----|     50.0% |###########-----------| #> AMC   467    100.0% |######################|     13.1% |##--------------------| #> AMP   392     83.9% |##################----|     50.0% |###########-----------| #> TZP   416     89.1% |###################---|      5.5% |#---------------------| #> CZO    82     17.6% |###-------------------|      2.4% |----------------------| #> FEP   317     67.9% |##############--------|      2.8% |----------------------| #> CXM   465     99.6% |######################|      5.4% |#---------------------| #> FOX   377     80.7% |#################-----|      6.9% |#---------------------| #> CTX   459     98.3% |#####################-|      2.4% |----------------------| #> CAZ   460     98.5% |#####################-|      2.4% |----------------------| #> CRO   459     98.3% |#####################-|      2.4% |----------------------| #> GEN   460     98.5% |#####################-|      2.0% |----------------------| #> TOB   462     98.9% |#####################-|      2.6% |----------------------| #> AMK   171     36.6% |########--------------|      0.0% |----------------------| #> KAN     0      0.0% |----------------------|                                    #> TMP   396     84.8% |##################----|     39.1% |########--------------| #> SXT   465     99.6% |######################|     31.6% |######----------------| #> NIT   458     98.1% |#####################-|      2.8% |----------------------| #> FOS    61     13.1% |##--------------------|      0.0% |----------------------| #> LNZ   467    100.0% |######################|    100.0% |######################| #> CIP   456     97.6% |#####################-|     12.5% |##--------------------| #> MFX    57     12.2% |##--------------------|    100.0% |######################| #> VAN   467    100.0% |######################|    100.0% |######################| #> TEC   467    100.0% |######################|    100.0% |######################| #> TCY     3      0.6% |----------------------|     66.7% |##############--------| #> TGC    68     14.6% |###-------------------|      0.0% |----------------------| #> DOX     0      0.0% |----------------------|                                    #> ERY   467    100.0% |######################|    100.0% |######################| #> CLI   467    100.0% |######################|    100.0% |######################| #> AZM   467    100.0% |######################|    100.0% |######################| #> IPM   422     90.4% |###################---|      0.0% |----------------------| #> MEM   418     89.5% |###################---|      0.0% |----------------------| #> MTR     2      0.4% |----------------------|      0.0% |----------------------| #> CHL     0      0.0% |----------------------|                                    #> COL   240     51.4% |###########-----------|      0.0% |----------------------| #> MUP     0      0.0% |----------------------|                                    #> RIF   467    100.0% |######################|    100.0% |######################| # }"},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine Bug-Drug Combinations — bug_drug_combinations","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"Determine antimicrobial resistance (AMR) bug-drug combinations data set least 30 (default) isolates available per species. Use format() result prettify publishable/printable format, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"","code":"bug_drug_combinations(x, col_mo = NULL, FUN = mo_shortname,   include_n_rows = FALSE, ...)  # S3 method for class 'bug_drug_combinations' format(x, translate_ab = \"name (ab, atc)\",   language = get_AMR_locale(), minimum = 30, combine_SI = TRUE,   add_ab_group = TRUE, remove_intrinsic_resistant = FALSE,   decimal.mark = getOption(\"OutDec\"), big.mark = ifelse(decimal.mark ==   \",\", \".\", \",\"), ...)"},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"x data set antibiotic columns, amox, AMX AMC col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). FUN function call mo column transform microorganism codes - default mo_shortname() include_n_rows logical indicate total number rows must included output ... arguments passed FUN translate_ab character length 1 containing column names antibiotics data set language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. combine_SI logical indicate whether values S, SDD, summed, resistance based R - default TRUE add_ab_group logical indicate group antimicrobials must included first column remove_intrinsic_resistant logical indicate rows columns 100% resistance tested antimicrobials must removed table decimal.mark character used indicate numeric     decimal point. big.mark character; empty used mark every     big.interval decimals (hence big)     decimal point.","code":""},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"function bug_drug_combinations() returns data.frame columns \"mo\", \"ab\", \"S\", \"SDD\", \"\", \"R\", \"total\".","code":""},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"function format() calculates resistance per bug-drug combination returns table ready reporting/publishing. Use combine_SI = TRUE (default) test R vs. S+combine_SI = FALSE test R+vs. S. table can also directly used R Markdown / Quarto without need e.g. knitr::kable().","code":""},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"","code":"# example_isolates is a data set available in the AMR package. # run ?example_isolates for more info. example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # \\donttest{ x <- bug_drug_combinations(example_isolates) head(x) #> # A tibble: 6 × 8 #>   mo                ab        S   SDD     I     R    NI total #>   <chr>             <chr> <int> <int> <int> <int> <int> <int> #> 1 (unknown species) AMC      15     0     0     0     0    15 #> 2 (unknown species) AMK       0     0     0     0     0     0 #> 3 (unknown species) AMP      15     0     0     1     0    16 #> 4 (unknown species) AMX      15     0     0     1     0    16 #> 5 (unknown species) AZM       3     0     0     3     0     6 #> 6 (unknown species) CAZ       0     0     0     0     0     0 #> Use 'format()' on this result to get a publishable/printable format. format(x, translate_ab = \"name (atc)\") #> # A tibble: 39 × 12 #>    Group     Drug  CoNS  `E. coli` `E. faecalis` `K. pneumoniae` `P. aeruginosa` #>    <chr>     <chr> <chr> <chr>     <chr>         <chr>           <chr>           #>  1 \"Aminogl… Amik… \"100… \"  0.0% … \"100.0% (39/… \"\"              \"\"              #>  2 \"\"        Gent… \" 13… \"  2.0% … \"100.0% (39/… \" 10.3% (6/58)\" \"  0.0% (0/30)\" #>  3 \"\"        Kana… \"100… \"\"        \"100.0% (39/… \"\"              \"100.0% (30/30… #>  4 \"\"        Tobr… \" 78… \"  2.6% … \"100.0% (39/… \" 10.3% (6/58)\" \"  0.0% (0/30)\" #>  5 \"Antimyc… Rifa… \"\"    \"100.0% … \"\"            \"100.0% (58/58… \"100.0% (30/30… #>  6 \"Beta-la… Amox… \" 93… \" 50.0% … \"\"            \"100.0% (58/58… \"100.0% (30/30… #>  7 \"\"        Amox… \" 42… \" 13.1% … \"\"            \" 10.3% (6/58)\" \"100.0% (30/30… #>  8 \"\"        Ampi… \" 93… \" 50.0% … \"\"            \"100.0% (58/58… \"100.0% (30/30… #>  9 \"\"        Benz… \" 77… \"100.0% … \"\"            \"100.0% (58/58… \"100.0% (30/30… #> 10 \"\"        Fluc… \" 42… \"\"        \"\"            \"\"              \"\"              #> # ℹ 29 more rows #> # ℹ 5 more variables: `P. mirabilis` <chr>, `S. aureus` <chr>, #> #   `S. epidermidis` <chr>, `S. hominis` <chr>, `S. pneumoniae` <chr>  # Use FUN to change to transformation of microorganism codes bug_drug_combinations(example_isolates,   FUN = mo_gramstain ) #> # A tibble: 80 × 8 #>    mo            ab        S   SDD     I     R    NI total #>  * <chr>         <chr> <int> <int> <int> <int> <int> <int> #>  1 Gram-negative AMC     463     0    89   174     0   726 #>  2 Gram-negative AMK     251     0     0     5     0   256 #>  3 Gram-negative AMP     226     0     0   405     0   631 #>  4 Gram-negative AMX     226     0     0   405     0   631 #>  5 Gram-negative AZM       1     0     2   696     0   699 #>  6 Gram-negative CAZ     607     0     0    27     0   634 #>  7 Gram-negative CHL       1     0     0    30     0    31 #>  8 Gram-negative CIP     610     0    11    63     0   684 #>  9 Gram-negative CLI      18     0     1   709     0   728 #> 10 Gram-negative COL     309     0     0    78     0   387 #> # ℹ 70 more rows #> Use 'format()' on this result to get a publishable/printable format.  bug_drug_combinations(example_isolates,   FUN = function(x) {     ifelse(x == as.mo(\"Escherichia coli\"),       \"E. coli\",       \"Others\"     )   } ) #> # A tibble: 80 × 8 #>    mo      ab        S   SDD     I     R    NI total #>  * <chr>   <chr> <int> <int> <int> <int> <int> <int> #>  1 E. coli AMC     332     0    74    61     0   467 #>  2 E. coli AMK     171     0     0     0     0   171 #>  3 E. coli AMP     196     0     0   196     0   392 #>  4 E. coli AMX     196     0     0   196     0   392 #>  5 E. coli AZM       0     0     0   467     0   467 #>  6 E. coli CAZ     449     0     0    11     0   460 #>  7 E. coli CHL       0     0     0     0     0     0 #>  8 E. coli CIP     398     0     1    57     0   456 #>  9 E. coli CLI       0     0     0   467     0   467 #> 10 E. coli COL     240     0     0     0     0   240 #> # ℹ 70 more rows #> Use 'format()' on this result to get a publishable/printable format. # }"},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"Data set containing clinical breakpoints interpret MIC disk diffusion SIR values, according international guidelines. dataset contain breakpoints humans, 7 different animal groups, ECOFFs. breakpoints currently implemented: clinical microbiology: EUCAST 2011-2024 CLSI 2011-2024; veterinary microbiology: EUCAST 2021-2024 CLSI 2019-2024; ECOFFs (Epidemiological Cut-Values): EUCAST 2020-2024 CLSI 2022-2024. Use .sir() transform MICs disks measurements SIR values.","code":""},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"","code":"clinical_breakpoints"},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"tibble 34 063 observations 14 variables: guideline Name guideline type Breakpoint type, either \"ECOFF\", \"animal\", \"human\" host Host infectious agent. mostly useful veterinary breakpoints either \"ECOFF\", \"aquatic\", \"cats\", \"cattle\", \"dogs\", \"horse\", \"human\", \"poultry\", \"swine\" method Testing method, either \"DISK\" \"MIC\" site Body site breakpoint must applied, e.g. \"Oral\" \"Respiratory\" mo Microbial ID, see .mo() rank_index Taxonomic rank index mo 1 (subspecies/infraspecies) 5 (unknown microorganism) ab Antibiotic code used package, EARS-Net WHONET, see .ab() ref_tbl Info guideline rule can found disk_dose Dose used disk diffusion method breakpoint_S Lowest MIC value highest number millimetres leads \"S\" breakpoint_R Highest MIC value lowest number millimetres leads \"R\" uti logical value (TRUE/FALSE) indicate whether rule applies urinary tract infection (UTI) is_SDD logical value (TRUE/FALSE) indicate whether intermediate range \"S\" \"R\" interpreted \"SDD\", instead \"\". currently applies 24 breakpoints.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"different-types-of-breakpoints","dir":"Reference","previous_headings":"","what":"Different types of breakpoints","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"Supported types breakpoints ECOFF, animal, human. ECOFF (Epidemiological cut-) values used antimicrobial susceptibility testing differentiate wild-type non-wild-type strains bacteria fungi. default \"human\", can also set package option AMR_breakpoint_type. Use .sir(..., breakpoint_type = ...) interpret raw data using specific breakpoint type, e.g. .sir(..., breakpoint_type = \"ECOFF\") use ECOFFs.","code":""},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"imported-from-whonet","dir":"Reference","previous_headings":"","what":"Imported from WHONET","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"Clinical breakpoints package validated imported WHONET, free desktop Windows application developed supported Collaborating Centre Surveillance Antimicrobial Resistance. can read website. developers WHONET AMR package contact sharing work. highly appreciate great development WHONET software.","code":""},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"response-from-clsi-and-eucast","dir":"Reference","previous_headings":"","what":"Response from CLSI and EUCAST","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"CEO CLSI chairman EUCAST endorsed work public use AMR package (consequently use breakpoints) June 2023, future development distributing clinical breakpoints discussed meeting CLSI, EUCAST, , developers WHONET software, developers AMR package.","code":""},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"download","dir":"Reference","previous_headings":"","what":"Download","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository. allow machine reading EUCAST CLSI guidelines, almost impossible MS Excel PDF files distributed EUCAST CLSI, though initiatives started overcome burdens. NOTE: AMR package (WHONET software well) contains rather complex internal methods apply guidelines. example, breakpoints must applied certain species groups (case package available microorganisms.groups data set). important considered using breakpoints use.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"","code":"clinical_breakpoints #> # A tibble: 34,063 × 14 #>    guideline   type  host  method site    mo            rank_index ab   ref_tbl  #>    <chr>       <chr> <chr> <chr>  <chr>   <mo>               <dbl> <ab> <chr>    #>  1 EUCAST 2024 human human DISK   NA      B_ACHRMB_XYLS          2 MEM  A. xylo… #>  2 EUCAST 2024 human human MIC    NA      B_ACHRMB_XYLS          2 MEM  A. xylo… #>  3 EUCAST 2024 human human DISK   NA      B_ACHRMB_XYLS          2 SXT  A. xylo… #>  4 EUCAST 2024 human human MIC    NA      B_ACHRMB_XYLS          2 SXT  A. xylo… #>  5 EUCAST 2024 human human DISK   NA      B_ACHRMB_XYLS          2 TZP  A. xylo… #>  6 EUCAST 2024 human human MIC    NA      B_ACHRMB_XYLS          2 TZP  A. xylo… #>  7 EUCAST 2024 human human DISK   NA      B_ACNTB                3 AMK  Acineto… #>  8 EUCAST 2024 human human DISK   Uncomp… B_ACNTB                3 AMK  Acineto… #>  9 EUCAST 2024 human human MIC    NA      B_ACNTB                3 AMK  Acineto… #> 10 EUCAST 2024 human human MIC    Uncomp… B_ACNTB                3 AMK  Acineto… #> # ℹ 34,053 more rows #> # ℹ 5 more variables: disk_dose <chr>, breakpoint_S <dbl>, breakpoint_R <dbl>, #> #   uti <lgl>, is_SDD <lgl>"},{"path":"https://msberends.github.io/AMR/reference/count.html","id":null,"dir":"Reference","previous_headings":"","what":"Count Available Isolates — count","title":"Count Available Isolates — count","text":"functions can used count resistant/susceptible microbial isolates. functions support quasiquotation pipes, can used summarise() dplyr package also support grouped variables, see Examples. count_resistant() used count resistant isolates, count_susceptible() used count susceptible isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Count Available Isolates — count","text":"","code":"count_resistant(..., only_all_tested = FALSE)  count_susceptible(..., only_all_tested = FALSE)  count_S(..., only_all_tested = FALSE)  count_SI(..., only_all_tested = FALSE)  count_I(..., only_all_tested = FALSE)  count_IR(..., only_all_tested = FALSE)  count_R(..., only_all_tested = FALSE)  count_all(..., only_all_tested = FALSE)  n_sir(..., only_all_tested = FALSE)  count_df(data, translate_ab = \"name\", language = get_AMR_locale(),   combine_SI = TRUE)"},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Count Available Isolates — count","text":"... one vectors (columns) antibiotic interpretations. transformed internally .sir() needed. only_all_tested (combination therapies, .e. using one variable ...): logical indicate isolates must tested antibiotics, see section Combination Therapy data data.frame containing columns class sir (see .sir()) translate_ab column name antibiotics data set translate antibiotic abbreviations , using ab_property() language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. combine_SI logical indicate whether values S, SDD, must merged one, output consists S+SDD+vs. R (susceptible vs. resistant) - default TRUE","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Count Available Isolates — count","text":"integer","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Count Available Isolates — count","text":"functions meant count isolates. Use resistance()/susceptibility() functions calculate microbial resistance/susceptibility. function count_resistant() equal function count_R(). function count_susceptible() equal function count_SI(). function n_sir() alias count_all(). can used count available isolates, .e. input antibiotics available result (S, R). use equal n_distinct(). function equal count_susceptible(...) + count_resistant(...). function count_df() takes variable data sir class (created .sir()) counts number S's, 's R's. also supports grouped variables. function sir_df() works exactly like count_df(), adds percentage S, R.","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Count Available Isolates — count","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"combination-therapy","dir":"Reference","previous_headings":"","what":"Combination Therapy","title":"Count Available Isolates — count","text":"using one variable ... (= combination therapy), use only_all_tested count isolates tested antibiotics/variables test . See example two antibiotics, Drug Drug B, susceptibility() works calculate %SI:   Please note , combination therapies, only_all_tested = TRUE applies :   , combination therapies, only_all_tested = FALSE applies :   Using only_all_tested impact using one antibiotic input.","code":"--------------------------------------------------------------------                     only_all_tested = FALSE  only_all_tested = TRUE                     -----------------------  -----------------------  Drug A    Drug B   considered   considered  considered   considered                     susceptible    tested    susceptible    tested --------  --------  -----------  ----------  -----------  ----------  S or I    S or I        X            X           X            X    R       S or I        X            X           X            X   <NA>     S or I        X            X           -            -  S or I      R           X            X           X            X    R         R           -            X           -            X   <NA>       R           -            -           -            -  S or I     <NA>         X            X           -            -    R        <NA>         -            -           -            -   <NA>      <NA>         -            -           -            - -------------------------------------------------------------------- count_S()    +   count_I()    +   count_R()    = count_all()   proportion_S() + proportion_I() + proportion_R() = 1 count_S()    +   count_I()    +   count_R()    >= count_all()   proportion_S() + proportion_I() + proportion_R() >= 1"},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Count Available Isolates — count","text":"","code":"# example_isolates is a data set available in the AMR package. # run ?example_isolates for more info.  # base R ------------------------------------------------------------ count_resistant(example_isolates$AMX) # counts \"R\" #> [1] 804 count_susceptible(example_isolates$AMX) # counts \"S\" and \"I\" #> [1] 546 count_all(example_isolates$AMX) # counts \"S\", \"I\" and \"R\" #> [1] 1350  # be more specific count_S(example_isolates$AMX) #> Using count_S() is discouraged; use count_susceptible() instead to also #> consider \"I\" and \"SDD\" being susceptible. This note will be shown once for #> this session. #> [1] 543 count_SI(example_isolates$AMX) #> Note that count_SI() will also count dose-dependent susceptibility, #> 'SDD'. This note will be shown once for this session. #> [1] 546 count_I(example_isolates$AMX) #> Note that count_I() will also count dose-dependent susceptibility, 'SDD'. #> This note will be shown once for this session. #> [1] 3 count_IR(example_isolates$AMX) #> Using count_IR() is discouraged; use count_resistant() instead to not #> consider \"I\" and \"SDD\" being resistant. This note will be shown once for #> this session. #> [1] 807 count_R(example_isolates$AMX) #> [1] 804  # Count all available isolates count_all(example_isolates$AMX) #> [1] 1350 n_sir(example_isolates$AMX) #> [1] 1350  # n_sir() is an alias of count_all(). # Since it counts all available isolates, you can # calculate back to count e.g. susceptible isolates. # These results are the same: count_susceptible(example_isolates$AMX) #> [1] 546 susceptibility(example_isolates$AMX) * n_sir(example_isolates$AMX) #> [1] 546  # dplyr ------------------------------------------------------------- # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     group_by(ward) %>%     summarise(       R = count_R(CIP),       I = count_I(CIP),       S = count_S(CIP),       n1 = count_all(CIP), # the actual total; sum of all three       n2 = n_sir(CIP), # same - analogous to n_distinct       total = n()     ) # NOT the number of tested isolates!    # Number of available isolates for a whole antibiotic class   # (i.e., in this data set columns GEN, TOB, AMK, KAN)   example_isolates %>%     group_by(ward) %>%     summarise(across(aminoglycosides(), n_sir))    # Count co-resistance between amoxicillin/clav acid and gentamicin,   # so we can see that combination therapy does a lot more than mono therapy.   # Please mind that `susceptibility()` calculates percentages right away instead.   example_isolates %>% count_susceptible(AMC) # 1433   example_isolates %>% count_all(AMC) # 1879    example_isolates %>% count_susceptible(GEN) # 1399   example_isolates %>% count_all(GEN) # 1855    example_isolates %>% count_susceptible(AMC, GEN) # 1764   example_isolates %>% count_all(AMC, GEN) # 1936    # Get number of S+I vs. R immediately of selected columns   example_isolates %>%     select(AMX, CIP) %>%     count_df(translate = FALSE)    # It also supports grouping variables   example_isolates %>%     select(ward, AMX, CIP) %>%     group_by(ward) %>%     count_df(translate = FALSE) } #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # A tibble: 12 × 4 #>    ward       antibiotic interpretation value #>  * <chr>      <chr>      <ord>          <int> #>  1 Clinical   AMX        SI               357 #>  2 Clinical   AMX        R                487 #>  3 Clinical   CIP        SI               741 #>  4 Clinical   CIP        R                128 #>  5 ICU        AMX        SI               158 #>  6 ICU        AMX        R                270 #>  7 ICU        CIP        SI               362 #>  8 ICU        CIP        R                 85 #>  9 Outpatient AMX        SI                31 #> 10 Outpatient AMX        R                 47 #> 11 Outpatient CIP        SI                78 #> 12 Outpatient CIP        R                 15 # }"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":null,"dir":"Reference","previous_headings":"","what":"Define Custom EUCAST Rules — custom_eucast_rules","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"Define custom EUCAST rules organisation specific analysis use output function eucast_rules().","code":""},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"","code":"custom_eucast_rules(...)"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"... rules formula notation, see instructions, Examples","code":""},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"list containing custom rules","code":""},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"organisations adoption EUCAST rules. function can used define custom EUCAST rules used eucast_rules() function.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"basics","dir":"Reference","previous_headings":"","what":"Basics","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"familiar case_when() function dplyr package, recognise input method set rules. Rules must set using R considers 'formula notation'. rule written tilde (~) consequence rule written tilde:   two custom EUCAST rules: TZP (piperacillin/tazobactam) \"S\", aminopenicillins (ampicillin amoxicillin) must made \"S\", TZP \"R\", aminopenicillins must made \"R\". rules can also printed console, immediately clear work:   rules (part tilde, example TZP == \"S\" TZP == \"R\") must evaluable data set: able run filter data set without errors. means example column TZP must exist. create sample data set test rules set:","code":"x <- custom_eucast_rules(TZP == \"S\" ~ aminopenicillins == \"S\",                          TZP == \"R\" ~ aminopenicillins == \"R\") 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) 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) #>                      mo TZP ampi cipro #> 1      Escherichia coli   R    R     S #> 2 Klebsiella pneumoniae   R    R     S"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"using-taxonomic-properties-in-rules","dir":"Reference","previous_headings":"","what":"Using taxonomic properties in rules","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"one exception columns used rules: column names microorganisms data set can also used, exist data set. column names : \"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\", \"snomed\". Thus, next example work well, despite fact df data set contain column genus:","code":"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) #>                      mo TZP ampi cipro #> 1      Escherichia coli   R    S     S #> 2 Klebsiella pneumoniae   R    R     S"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"usage-of-multiple-antibiotics-and-antibiotic-group-names","dir":"Reference","previous_headings":"","what":"Usage of multiple antibiotics and antibiotic group names","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"can define antibiotic groups instead single antibiotics rule consequence, part tilde (~). examples , antibiotic group aminopenicillins includes ampicillin amoxicillin. Rules can also applied multiple antibiotics antibiotic groups simultaneously. Use c() function combine multiple antibiotics. instance, following example sets aminopenicillins ureidopenicillins \"R\" column TZP (piperacillin/tazobactam) \"R\":   34 antibiotic groups allowed rules (case-insensitive) can used combination: aminoglycosides(amikacin, amikacin/fosfomycin, apramycin, arbekacin, astromicin, bekanamycin, dibekacin, framycetin, gentamicin, gentamicin-high, habekacin, hygromycin, isepamicin, kanamycin, kanamycin-high, kanamycin/cephalexin, micronomicin, neomycin, netilmicin, pentisomicin, plazomicin, propikacin, ribostamycin, sisomicin, streptoduocin, streptomycin, streptomycin-high, tobramycin, tobramycin-high) aminopenicillins(amoxicillin 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, 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, simvastatin/fenofibrate, sodium aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone, thioacetazone/isoniazid, tiocarlide, viomycin) 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, 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/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening, 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, 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, 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, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, tigemonam) betalactams_with_inhibitor(amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, ticarcillin/clavulanic acid) carbapenems(biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, 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/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening, 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, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, loracarbef) cephalosporins_1st(cefacetrile, cefadroxil, cefalexin, cefaloridine, cefalotin, cefapirin, cefatrizine, cefazedone, cefazolin, cefroxadine, ceftezole, cephradine) cephalosporins_2nd(cefaclor, cefamandole, cefmetazole, cefonicid, ceforanide, cefotetan, cefotiam, cefoxitin, cefoxitin screening, cefprozil, cefuroxime, cefuroxime axetil, loracarbef) cephalosporins_3rd(cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefetamet, cefetamet pivoxil, cefixime, cefmenoxime, cefodizime, cefoperazone, cefoperazone/sulbactam, cefotaxime, 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, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, latamoxef) cephalosporins_4th(cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis, cefozopran, cefpirome, cefquinome) cephalosporins_5th(ceftaroline, ceftaroline/avibactam, ceftobiprole, ceftobiprole medocaril, 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/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening, 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, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, loracarbef) fluoroquinolones(besifloxacin, ciprofloxacin, clinafloxacin, danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin, finafloxacin, fleroxacin, garenoxacin, gatifloxacin, gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nifuroquine, norfloxacin, ofloxacin, orbifloxacin, pazufloxacin, pefloxacin, pradofloxacin, premafloxacin, prulifloxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, trovafloxacin) glycopeptides(avoparcin, dalbavancin, norvancomycin, oritavancin, ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin, vancomycin, vancomycin-macromethod) glycopeptides_except_lipo(avoparcin, norvancomycin, ramoplanin, teicoplanin, teicoplanin-macromethod, vancomycin, vancomycin-macromethod) isoxazolylpenicillins(cloxacillin, dicloxacillin, flucloxacillin, meticillin, oxacillin) lincosamides(clindamycin, lincomycin, pirlimycin) lipoglycopeptides(dalbavancin, oritavancin, telavancin) macrolides(acetylmidecamycin, acetylspiramycin, azithromycin, clarithromycin, dirithromycin, erythromycin, flurithromycin, gamithromycin, josamycin, kitasamycin, meleumycin, midecamycin, miocamycin, nafithromycin, oleandomycin, rokitamycin, roxithromycin, solithromycin, spiramycin, telithromycin, tildipirosin, tilmicosin, troleandomycin, tulathromycin, tylosin, tylvalosin) monobactams(aztreonam, aztreonam/avibactam, aztreonam/nacubactam, carumonam, tigemonam) nitrofurans(furazidin, furazolidone, nifurtoinol, nitrofurantoin, nitrofurazone) oxazolidinones(cadazolid, cycloserine, linezolid, tedizolid, thiacetazone) penicillins(amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, carbenicillin, carindacillin, ciclacillin, clometocillin, cloxacillin, dicloxacillin, epicillin, flucloxacillin, hetacillin, lenampicillin, mecillinam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, temocillin, ticarcillin, ticarcillin/clavulanic acid) phenicols(chloramphenicol, florfenicol, thiamphenicol) polymyxins(colistin, polymyxin B, 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, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nalidixic acid, nemonoxacin, nifuroquine, nitroxoline, norfloxacin, ofloxacin, orbifloxacin, oxolinic acid, pazufloxacin, pefloxacin, pipemidic acid, piromidic acid, pradofloxacin, premafloxacin, prulifloxacin, rosoxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, trovafloxacin) rifamycins(rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine) streptogramins(pristinamycin quinupristin/dalfopristin) tetracyclines(cetocycline, chlortetracycline, clomocycline, demeclocycline, doxycycline, eravacycline, lymecycline, metacycline, minocycline, omadacycline, oxytetracycline, penimepicycline, rolitetracycline, sarecycline, tetracycline, tigecycline) tetracyclines_except_tgc(cetocycline, chlortetracycline, clomocycline, demeclocycline, doxycycline, eravacycline, lymecycline, metacycline, minocycline, omadacycline, oxytetracycline, penimepicycline, rolitetracycline, sarecycline, tetracycline) trimethoprims(brodimoprim, 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, trimethoprim/sulfamethoxazole) ureidopenicillins(azlocillin, mezlocillin, piperacillin, piperacillin/tazobactam)","code":"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)"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"","code":"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), ampicillin (AMP) #>  #>   2. If AMC is  I  and genus is \"Klebsiella\" then set to  I : #>      amoxicillin (AMX), 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,   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  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'…  # 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), ampicillin (AMP) #>  #>   2. If AMC is  I  and genus is \"Klebsiella\" then set to  I : #>      amoxicillin (AMX), 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), tebipenem (TBP)"},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"EUCAST breakpoints used package based dosages data set. can retrieved eucast_dosage().","code":""},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"","code":"dosage"},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"tibble 503 observations 9 variables: ab Antibiotic ID used package (AMC), using official EARS-Net (European Antimicrobial Resistance Surveillance Network) codes available name Official name antimicrobial drug used WHONET/EARS-Net type Type dosage, either \"high_dosage\", \"standard_dosage\", \"uncomplicated_uti\" dose Dose, \"2 g\" \"25 mg/kg\" dose_times Number times dose must administered administration Route administration, either \"im\", \"iv\", \"oral\" notes Additional dosage notes original_txt Original text PDF file EUCAST eucast_version Version number EUCAST Clinical Breakpoints guideline dosages apply, either 13, 12, 11","code":""},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"","code":"dosage #> # A tibble: 503 × 9 #>    ab   name            type  dose  dose_times administration notes original_txt #>    <ab> <chr>           <chr> <chr>      <int> <chr>          <chr> <chr>        #>  1 AMK  Amikacin        stan… 25-3…          1 iv             \"\"    25-30 mg/kg… #>  2 AMX  Amoxicillin     high… 2 g            6 iv             \"\"    2 g x 6 iv   #>  3 AMX  Amoxicillin     stan… 1 g            3 iv             \"\"    1 g x 3-4 iv #>  4 AMX  Amoxicillin     high… 0.75…          3 oral           \"\"    0.75-1 g x … #>  5 AMX  Amoxicillin     stan… 0.5 g          3 oral           \"\"    0.5 g x 3 o… #>  6 AMX  Amoxicillin     unco… 0.5 g          3 oral           \"\"    0.5 g x 3 o… #>  7 AMC  Amoxicillin/cl… high… 2 g …          3 iv             \"\"    (2 g amoxic… #>  8 AMC  Amoxicillin/cl… stan… 1 g …          3 iv             \"\"    (1 g amoxic… #>  9 AMC  Amoxicillin/cl… high… 0.87…          3 oral           \"\"    (0.875 g am… #> 10 AMC  Amoxicillin/cl… stan… 0.5 …          3 oral           \"\"    (0.5 g amox… #> # ℹ 493 more rows #> # ℹ 1 more variable: eucast_version <dbl>"},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":null,"dir":"Reference","previous_headings":"","what":"Apply EUCAST Rules — eucast_rules","title":"Apply EUCAST Rules — eucast_rules","text":"Apply rules clinical breakpoints notes expected resistant phenotypes defined European Committee Antimicrobial Susceptibility Testing (EUCAST, https://www.eucast.org), see Source. Use eucast_dosage() get data.frame advised dosages certain bug-drug combination, based dosage data set. improve interpretation antibiogram EUCAST rules applied, non-EUCAST rules can applied default, see Details.","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Apply EUCAST Rules — eucast_rules","text":"","code":"eucast_rules(x, col_mo = NULL, info = interactive(),   rules = getOption(\"AMR_eucastrules\", default = c(\"breakpoints\", \"expert\")),   verbose = FALSE, version_breakpoints = 12, version_expertrules = 3.3,   ampc_cephalosporin_resistance = NA, only_sir_columns = FALSE,   custom_rules = NULL, overwrite = TRUE, ...)  eucast_dosage(ab, administration = \"iv\", version_breakpoints = 12)"},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Apply EUCAST Rules — eucast_rules","text":"EUCAST Expert Rules. Version 2.0, 2012. Leclercq et al. EUCAST expert rules antimicrobial susceptibility testing. Clin Microbiol Infect. 2013;19(2):141-60; doi:10.1111/j.1469-0691.2011.03703.x EUCAST Expert Rules, Intrinsic Resistance Exceptional Phenotypes Tables. Version 3.1, 2016. (link) EUCAST Intrinsic Resistance Unusual Phenotypes. Version 3.2, 2020. (link) EUCAST Intrinsic Resistance Unusual Phenotypes. Version 3.3, 2021. (link) EUCAST Breakpoint tables interpretation MICs zone diameters. Version 9.0, 2019. (link) EUCAST Breakpoint tables interpretation MICs zone diameters. Version 10.0, 2020. (link) EUCAST Breakpoint tables interpretation MICs zone diameters. Version 11.0, 2021. (link) EUCAST Breakpoint tables interpretation MICs zone diameters. Version 12.0, 2022. (link)","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Apply EUCAST Rules — eucast_rules","text":"x data set antibiotic columns, amox, AMX AMC col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). info logical indicate whether progress printed console - default print interactive sessions rules character vector specifies rules applied. Must one \"breakpoints\", \"expert\", \"\", \"custom\", \"\", defaults c(\"breakpoints\", \"expert\"). default value can set another value using package option AMR_eucastrules: options(AMR_eucastrules = \"\"). using \"custom\", sure fill argument custom_rules . Custom rules can created custom_eucast_rules(). verbose logical turn Verbose mode (default ). Verbose mode, function apply rules data, instead returns data set logbook form extensive info rows columns effected way. Using Verbose mode takes lot time. version_breakpoints version number use EUCAST Clinical Breakpoints guideline. Can \"12.0\", \"11.0\", \"10.0\". version_expertrules version number use EUCAST Expert Rules Intrinsic Resistance guideline. Can \"3.3\", \"3.2\", \"3.1\". ampc_cephalosporin_resistance character value applied cefotaxime, ceftriaxone ceftazidime AmpC de-repressed cephalosporin-resistant mutants - default NA. Currently works version_expertrules 3.2 higher; version 'EUCAST Expert Rules Enterobacterales' state results cefotaxime, ceftriaxone ceftazidime reported note, results suppressed (emptied) three drugs. value NA (default) argument remove results three drugs, e.g. value \"R\" make results drugs resistant. Use NULL FALSE alter results three drugs AmpC de-repressed cephalosporin-resistant mutants. Using TRUE equal using \"R\".  EUCAST Expert Rules v3.2, rule applies : Citrobacter braakii, Citrobacter freundii, Citrobacter gillenii, Citrobacter murliniae, Citrobacter rodenticum, Citrobacter sedlakii, Citrobacter werkmanii, Citrobacter youngae, Enterobacter, Hafnia alvei, Klebsiella aerogenes, Morganella morganii, Providencia, Serratia. only_sir_columns logical indicate whether antibiotic columns must detected transformed class sir (see .sir()) beforehand (default FALSE) custom_rules custom rules apply, created custom_eucast_rules() overwrite logical indicate whether non-NA values must overwritten (defaults TRUE). FALSE, NA values changed. ... column name antibiotic, see section Antibiotics ab (vector ) text can coerced valid antibiotic drug code .ab() administration route administration, either \"im\", \"iv\", \"oral\"","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Apply EUCAST Rules — eucast_rules","text":"input x, possibly edited values antibiotics. , verbose = TRUE, data.frame original new values affected bug-drug combinations.","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Apply EUCAST Rules — eucast_rules","text":"Note: function translate MIC values SIR values. Use .sir() . Note: ampicillin (AMP, J01CA01) available amoxicillin (AMX, J01CA04) , latter used rules dependency ampicillin. drugs interchangeable comes expression antimicrobial resistance. file containing EUCAST rules located : https://github.com/msberends/AMR/blob/main/data-raw/eucast_rules.tsv.  Note: Old taxonomic names replaced current taxonomy applicable. example, Ochrobactrum anthropi renamed Brucella anthropi 2020; original EUCAST rules v3.1 v3.2 yet contain new taxonomic name. AMR package contains full microbial taxonomy updated June 24th, 2024, see microorganisms.","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"custom-rules","dir":"Reference","previous_headings":"","what":"Custom Rules","title":"Apply EUCAST Rules — eucast_rules","text":"Custom rules can created using custom_eucast_rules(), e.g.:","code":"x <- custom_eucast_rules(AMC == \"R\" & genus == \"Klebsiella\" ~ aminopenicillins == \"R\",                          AMC == \"I\" & genus == \"Klebsiella\" ~ aminopenicillins == \"I\")  eucast_rules(example_isolates, rules = \"custom\", custom_rules = x)"},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"-other-rules","dir":"Reference","previous_headings":"","what":"'Other' Rules","title":"Apply EUCAST Rules — eucast_rules","text":"processing, two non-EUCAST rules drug combinations can applied improve efficacy EUCAST rules, reliability data (analysis). rules : drug enzyme inhibitor set S drug without enzyme inhibitor S drug without enzyme inhibitor set R drug enzyme inhibitor R Important examples include amoxicillin amoxicillin/clavulanic acid, trimethoprim trimethoprim/sulfamethoxazole. Needless say, rules work, drugs must available data set. Since rules officially approved EUCAST, applied default. use rules, include \"\" rules argument, use eucast_rules(..., rules = \"\"). can also set package option AMR_eucastrules, .e. run options(AMR_eucastrules = \"\").","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"antibiotics","dir":"Reference","previous_headings":"","what":"Antibiotics","title":"Apply EUCAST Rules — eucast_rules","text":"define antibiotics column names, leave determine automatically guess_ab_col() input text (case-insensitive), use NULL skip column (e.g. TIC = NULL skip ticarcillin). Manually defined non-existing columns skipped warning. following antibiotics eligible functions eucast_rules() mdro(). shown format 'name (antimicrobial ID, ATC code)', sorted alphabetically: Amikacin (AMK, J01GB06), amoxicillin (AMX, J01CA04), amoxicillin/clavulanic acid (AMC, J01CR02), ampicillin (AMP, J01CA01), ampicillin/sulbactam (SAM, J01CR01), apramycin (APR, QA07AA92), arbekacin (ARB, J01GB12), aspoxicillin (APX, J01CA19), azidocillin (AZD, J01CE04), azithromycin (AZM, J01FA10), azlocillin (AZL, J01CA09), aztreonam (ATM, J01DF01), bacampicillin (BAM, J01CA06), bekanamycin (BEK, J01GB13), benzathine benzylpenicillin (BNB, J01CE08), benzathine phenoxymethylpenicillin (BNP, J01CE10), benzylpenicillin (PEN, J01CE01), besifloxacin (BES, S01AE08), biapenem (BIA, J01DH05), carbenicillin (CRB, J01CA03), carindacillin (CRN, J01CA05), carumonam (CAR, J01DF02), cefacetrile (CAC, J01DB10), cefaclor (CEC, J01DC04), cefadroxil (CFR, J01DB05), cefalexin (LEX, J01DB01), cefaloridine (RID, J01DB02), cefalotin (CEP, J01DB03), cefamandole (MAN, J01DC03), cefapirin (HAP, J01DB08), cefatrizine (CTZ, J01DB07), cefazedone (CZD, J01DB06), cefazolin (CZO, J01DB04), cefcapene (CCP, J01DD17), cefdinir (CDR, J01DD15), cefditoren (DIT, J01DD16), cefepime (FEP, J01DE01), cefepime/amikacin (CFA, J01RA06), cefetamet (CAT, J01DD10), cefiderocol (FDC, J01DI04), cefixime (CFM, J01DD08), cefmenoxime (CMX, J01DD05), cefmetazole (CMZ, J01DC09), cefodizime (DIZ, J01DD09), cefonicid (CID, J01DC06), cefoperazone (CFP, J01DD12), cefoperazone/sulbactam (CSL, J01DD62), ceforanide (CND, J01DC11), cefotaxime (CTX, J01DD01), cefotaxime/clavulanic acid (CTC, J01DD51), cefotetan (CTT, J01DC05), cefotiam (CTF, J01DC07), cefovecin (FOV, QJ01DD91), cefoxitin (FOX, J01DC01), cefozopran (ZOP, J01DE03), cefpiramide (CPM, J01DD11), cefpirome (CPO, J01DE02), cefpodoxime (CPD, J01DD13), cefprozil (CPR, J01DC10), cefquinome (CEQ, QG51AA07), cefroxadine (CRD, J01DB11), cefsulodin (CFS, J01DD03), ceftaroline (CPT, J01DI02), ceftazidime (CAZ, J01DD02), ceftazidime/clavulanic acid (CCV, J01DD52), cefteram (CEM, J01DD18), ceftezole (CTL, J01DB12), ceftibuten (CTB, J01DD14), ceftiofur (TIO, QJ01DD90), ceftizoxime (CZX, J01DD07), ceftobiprole medocaril (CFM1, J01DI01), ceftolozane/tazobactam (CZT, J01DI54), ceftriaxone (CRO, J01DD04), ceftriaxone/beta-lactamase inhibitor (CEB, J01DD63), cefuroxime (CXM, J01DC02), cephradine (CED, J01DB09), chloramphenicol (CHL, J01BA01), ciprofloxacin (CIP, J01MA02), clarithromycin (CLR, J01FA09), clindamycin (CLI, J01FF01), clometocillin (CLM, J01CE07), cloxacillin (CLO, J01CF02), colistin (COL, J01XB01), cycloserine (CYC, J04AB01), dalbavancin (DAL, J01XA04), danofloxacin (DAN, QJ01MA92), daptomycin (DAP, J01XX09), delafloxacin (DFX, J01MA23), dibekacin (DKB, J01GB09), dicloxacillin (DIC, J01CF01), difloxacin (DIF, QJ01MA94), dirithromycin (DIR, J01FA13), doripenem (DOR, J01DH04), doxycycline (DOX, J01AA02), enoxacin (ENX, J01MA04), enrofloxacin (ENR, QJ01MA90), epicillin (EPC, J01CA07), ertapenem (ETP, J01DH03), erythromycin (ERY, J01FA01), fleroxacin (FLE, J01MA08), flucloxacillin (FLC, J01CF05), flurithromycin (FLR1, J01FA14), fosfomycin (FOS, J01XX01), framycetin (FRM, D09AA01), fusidic acid (FUS, J01XC01), gamithromycin (GAM, QJ01FA95), garenoxacin (GRN, J01MA19), gatifloxacin (GAT, J01MA16), gemifloxacin (GEM, J01MA15), gentamicin (GEN, J01GB03), grepafloxacin (GRX, J01MA11), hetacillin (HET, J01CA18), imipenem (IPM, J01DH51), imipenem/relebactam (IMR, J01DH56), isepamicin (ISE, J01GB11), josamycin (JOS, J01FA07), kanamycin (KAN, J01GB04), kitasamycin (KIT, QJ01FA93), lascufloxacin (LSC, J01MA25), latamoxef (LTM, J01DD06), levofloxacin (LVX, J01MA12), levonadifloxacin (LND, J01MA24), lincomycin (LIN, J01FF02), linezolid (LNZ, J01XX08), lomefloxacin (LOM, J01MA07), loracarbef (LOR, J01DC08), marbofloxacin (MAR, QJ01MA93), mecillinam (MEC, J01CA11), meropenem (MEM, J01DH02), meropenem/vaborbactam (MEV, J01DH52), metampicillin (MTM, J01CA14), meticillin (MET, J01CF03), mezlocillin (MEZ, J01CA10), micronomicin (MCR, S01AA22), midecamycin (MID, J01FA03), minocycline (MNO, J01AA08), miocamycin (MCM, J01FA11), moxifloxacin (MFX, J01MA14), nadifloxacin (NAD, D10AF05), nafcillin (NAF, J01CF06), nalidixic acid (NAL, J01MB02), neomycin (NEO, J01GB05), netilmicin (NET, J01GB07), nitrofurantoin (NIT, J01XE01), norfloxacin (, J01MA06), novobiocin (NOV, QJ01XX95), ofloxacin (OFX, J01MA01), oleandomycin (OLE, J01FA05), orbifloxacin (ORB, QJ01MA95), oritavancin (ORI, J01XA05), oxacillin (OXA, J01CF04), panipenem (PAN, J01DH55), pazufloxacin (PAZ, J01MA18), pefloxacin (PEF, J01MA03), penamecillin (PNM, J01CE06), pheneticillin (PHE, J01CE05), phenoxymethylpenicillin (PHN, J01CE02), piperacillin (PIP, J01CA12), piperacillin/tazobactam (TZP, J01CR05), pirlimycin (PRL, QJ51FF90), pivampicillin (PVM, J01CA02), pivmecillinam (PME, J01CA08), plazomicin (PLZ, J01GB14), polymyxin B (PLB, J01XB02), pradofloxacin (PRA, QJ01MA97), pristinamycin (PRI, J01FG01), procaine benzylpenicillin (PRB, J01CE09), propicillin (PRP, J01CE03), prulifloxacin (PRU, J01MA17), quinupristin/dalfopristin (QDA, QJ01FG02), ribostamycin (RST, J01GB10), rifampicin (RIF, J04AB02), rokitamycin (ROK, J01FA12), roxithromycin (RXT, J01FA06), rufloxacin (RFL, J01MA10), sarafloxacin (SAR, QJ01MA98), sisomicin (SIS, J01GB08), sitafloxacin (SIT, J01MA21), solithromycin (SOL, J01FA16), sparfloxacin (SPX, J01MA09), spiramycin (SPI, J01FA02), streptoduocin (STR, J01GA02), streptomycin (STR1, J01GA01), sulbenicillin (SBC, J01CA16), sulfadiazine (SDI, J01EC02), sulfadiazine/trimethoprim (SLT1, J01EE02), sulfadimethoxine (SUD, J01ED01), sulfadimidine (SDM, J01EB03), sulfadimidine/trimethoprim (SLT2, J01EE05), sulfafurazole (SLF, J01EB05), sulfaisodimidine (SLF1, J01EB01), sulfalene (SLF2, J01ED02), sulfamazone (SZO, J01ED09), sulfamerazine (SLF3, J01ED07), sulfamerazine/trimethoprim (SLT3, J01EE07), sulfamethizole (SLF4, J01EB02), sulfamethoxazole (SMX, J01EC01), sulfamethoxypyridazine (SLF5, J01ED05), sulfametomidine (SLF6, J01ED03), sulfametoxydiazine (SLF7, J01ED04), sulfametrole/trimethoprim (SLT4, J01EE03), sulfamoxole (SLF8, J01EC03), sulfamoxole/trimethoprim (SLT5, J01EE04), sulfanilamide (SLF9, J01EB06), sulfaperin (SLF10, J01ED06), sulfaphenazole (SLF11, J01ED08), sulfapyridine (SLF12, J01EB04), sulfathiazole (SUT, J01EB07), sulfathiourea (SLF13, J01EB08), sultamicillin (SLT6, J01CR04), talampicillin (TAL, J01CA15), tebipenem (TBP, J01DH06), tedizolid (TZD, J01XX11), teicoplanin (TEC, J01XA02), telavancin (TLV, J01XA03), telithromycin (TLT, J01FA15), temafloxacin (TMX, J01MA05), temocillin (TEM, J01CA17), tetracycline (TCY, J01AA07), ticarcillin (TIC, J01CA13), ticarcillin/clavulanic acid (TCC, J01CR03), tigecycline (TGC, J01AA12), tilbroquinol (TBQ, P01AA05), tildipirosin (TIP, QJ01FA96), tilmicosin (TIL, QJ01FA91), tobramycin (TOB, J01GB01), tosufloxacin (TFX, J01MA22), trimethoprim (TMP, J01EA01), trimethoprim/sulfamethoxazole (SXT, J01EE01), troleandomycin (TRL, J01FA08), trovafloxacin (TVA, J01MA13), tulathromycin (TUL, QJ01FA94), tylosin (TYL, QJ01FA90), tylvalosin (TYL1, QJ01FA92), vancomycin (VAN, J01XA01)","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Apply EUCAST Rules — eucast_rules","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Apply EUCAST Rules — eucast_rules","text":"","code":"# \\donttest{ a <- data.frame(   mo = c(     \"Staphylococcus aureus\",     \"Enterococcus faecalis\",     \"Escherichia coli\",     \"Klebsiella pneumoniae\",     \"Pseudomonas aeruginosa\"   ),   VAN = \"-\", # Vancomycin   AMX = \"-\", # Amoxicillin   COL = \"-\", # Colistin   CAZ = \"-\", # Ceftazidime   CXM = \"-\", # Cefuroxime   PEN = \"S\", # Benzylpenicillin   FOX = \"S\", # Cefoxitin   stringsAsFactors = FALSE )  head(a) #>                       mo VAN AMX COL CAZ CXM PEN FOX #> 1  Staphylococcus aureus   -   -   -   -   -   S   S #> 2  Enterococcus faecalis   -   -   -   -   -   S   S #> 3       Escherichia coli   -   -   -   -   -   S   S #> 4  Klebsiella pneumoniae   -   -   -   -   -   S   S #> 5 Pseudomonas aeruginosa   -   -   -   -   -   S   S   # apply EUCAST rules: some results wil be changed b <- eucast_rules(a) #> Warning: in eucast_rules(): not all columns with antimicrobial results are of #> class 'sir'. Transform them on beforehand, with e.g.: #>   - a %>% as.sir(PEN:FOX) #>   - a %>% mutate_if(is_sir_eligible, as.sir) #>   - a %>% mutate(across(where(is_sir_eligible), as.sir))  head(b) #>                       mo VAN AMX COL CAZ CXM PEN FOX #> 1  Staphylococcus aureus   -   -   R   R   S   S   S #> 2  Enterococcus faecalis   -   -   R   R   R   S   R #> 3       Escherichia coli   R   -   -   -   -   R   S #> 4  Klebsiella pneumoniae   R   R   -   -   -   R   S #> 5 Pseudomonas aeruginosa   R   R   -   -   R   R   R   # do not apply EUCAST rules, but rather get a data.frame # containing all details about the transformations: c <- eucast_rules(a, verbose = TRUE) #> Warning: in eucast_rules(): not all columns with antimicrobial results are of #> class 'sir'. Transform them on beforehand, with e.g.: #>   - a %>% as.sir(PEN:FOX) #>   - a %>% mutate_if(is_sir_eligible, as.sir) #>   - a %>% mutate(across(where(is_sir_eligible), as.sir)) head(c) #>   row col           mo_fullname old new rule   rule_group #> 1   1 CXM Staphylococcus aureus   -   S       Breakpoints #> 2   1 CAZ Staphylococcus aureus   -   R      Expert Rules #> 3   1 COL Staphylococcus aureus   -   R      Expert Rules #> 4   2 CAZ Enterococcus faecalis   -   R      Expert Rules #> 5   2 COL Enterococcus faecalis   -   R      Expert Rules #> 6   2 CXM Enterococcus faecalis   -   R      Expert Rules #>                                                 rule_name #> 1                                          Staphylococcus #> 2 Table 4: Intrinsic resistance in gram-positive bacteria #> 3 Table 4: Intrinsic resistance in gram-positive bacteria #> 4 Table 4: Intrinsic resistance in gram-positive bacteria #> 5 Table 4: Intrinsic resistance in gram-positive bacteria #> 6 Table 4: Intrinsic resistance in gram-positive bacteria #>                                                                                 rule_source #> 1                                           'EUCAST Clinical Breakpoint Tables' v12.0, 2022 #> 2 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 #> 3 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 #> 4 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 #> 5 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 #> 6 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 # }  # Dosage guidelines:  eucast_dosage(c(\"tobra\", \"genta\", \"cipro\"), \"iv\") #> ℹ Dosages for antimicrobial drugs, as meant for 'EUCAST Clinical Breakpoint #>   Tables' v12.0 (2022). This note will be shown once per session. #> # A tibble: 3 × 4 #>   ab   name          standard_dosage  high_dosage  #>   <ab> <chr>         <chr>            <chr>        #> 1 TOB  Tobramycin    6-7 mg/kg x 1 iv NA           #> 2 GEN  Gentamicin    6-7 mg/kg x 1 iv NA           #> 3 CIP  Ciprofloxacin 0.4 g x 2 iv     0.4 g x 3 iv  eucast_dosage(c(\"tobra\", \"genta\", \"cipro\"), \"iv\", version_breakpoints = 10) #> ℹ Dosages for antimicrobial drugs, as meant for 'EUCAST Clinical Breakpoint #>   Tables' v10.0 (2020). This note will be shown once per session. #> # A tibble: 3 × 4 #>   ab   name          standard_dosage  high_dosage  #>   <ab> <chr>         <chr>            <chr>        #> 1 TOB  Tobramycin    6-7 mg/kg x 1 iv NA           #> 2 GEN  Gentamicin    6-7 mg/kg x 1 iv NA           #> 3 CIP  Ciprofloxacin 0.4 g x 2 iv     0.4 g x 3 iv"},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 2 000 Example Isolates — example_isolates","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"data set containing 2 000 microbial isolates full antibiograms. data set contains randomised fictitious data, reflects reality can used practise AMR data analysis. examples, please read tutorial website.","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"","code":"example_isolates"},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"tibble 2 000 observations 46 variables: date Date receipt laboratory patient ID patient age Age patient gender Gender patient, either \"F\" \"M\" ward Ward type patient admitted, either \"Clinical\", \"ICU\", \"Outpatient\" mo ID microorganism created .mo(), see also microorganisms data set PEN:RIF 40 different antibiotics class sir (see .sir()); column names occur antibiotics data set can translated set_ab_names() ab_name()","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"","code":"example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …"},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with Unclean Data — example_isolates_unclean","title":"Data Set with Unclean Data — example_isolates_unclean","text":"data set containing 3 000 microbial isolates cleaned consequently ready AMR data analysis. data set can used practice.","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with Unclean Data — example_isolates_unclean","text":"","code":"example_isolates_unclean"},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with Unclean Data — example_isolates_unclean","text":"tibble 3 000 observations 8 variables: patient_id ID patient date date receipt laboratory hospital ID hospital, C bacteria info microorganism can transformed .mo(), see also microorganisms AMX:GEN 4 different antibiotics transformed .sir()","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with Unclean Data — example_isolates_unclean","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with Unclean Data — example_isolates_unclean","text":"","code":"example_isolates_unclean #> # A tibble: 3,000 × 8 #>    patient_id hospital date       bacteria      AMX   AMC   CIP   GEN   #>    <chr>      <chr>    <date>     <chr>         <chr> <chr> <chr> <chr> #>  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"},{"path":"https://msberends.github.io/AMR/reference/export_ncbi_biosample.html","id":null,"dir":"Reference","previous_headings":"","what":"Export Data Set as NCBI BioSample Antibiogram — export_ncbi_biosample","title":"Export Data Set as NCBI BioSample Antibiogram — export_ncbi_biosample","text":"Export Data Set NCBI BioSample Antibiogram","code":""},{"path":"https://msberends.github.io/AMR/reference/export_ncbi_biosample.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Export Data Set as NCBI BioSample Antibiogram — export_ncbi_biosample","text":"","code":"export_ncbi_biosample(x, filename = paste0(\"biosample_\", format(Sys.time(),   \"%Y-%m-%d-%H%M%S\"), \".xlsx\"), type = \"pathogen MIC\",   columns = where(is.mic), save_as_xlsx = TRUE)"},{"path":"https://msberends.github.io/AMR/reference/export_ncbi_biosample.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Export Data Set as NCBI BioSample Antibiogram — export_ncbi_biosample","text":"x data set filename character string specifying file name type character string specifying type data set, either \"pathogen MIC\" \"beta-lactamase MIC\", see https://www.ncbi.nlm.nih.gov/biosample/docs/","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine First Isolates — first_isolate","title":"Determine First Isolates — first_isolate","text":"Determine first isolates microorganisms every patient per episode (needed) per specimen type. functions support four methods summarised Hindler et al. 2007 (doi:10.1086/511864 ). determine patient episodes necessarily based microorganisms, use is_new_episode() also supports grouping dplyr package.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine First Isolates — first_isolate","text":"","code":"first_isolate(x = NULL, col_date = NULL, col_patient_id = NULL,   col_mo = NULL, col_testcode = NULL, col_specimen = NULL,   col_icu = NULL, col_keyantimicrobials = NULL, episode_days = 365,   testcodes_exclude = NULL, icu_exclude = FALSE, specimen_group = NULL,   type = \"points\", method = c(\"phenotype-based\", \"episode-based\",   \"patient-based\", \"isolate-based\"), ignore_I = TRUE, points_threshold = 2,   info = interactive(), include_unknown = FALSE,   include_untested_sir = TRUE, ...)  filter_first_isolate(x = NULL, col_date = NULL, col_patient_id = NULL,   col_mo = NULL, episode_days = 365, method = c(\"phenotype-based\",   \"episode-based\", \"patient-based\", \"isolate-based\"), ...)"},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Determine First Isolates — first_isolate","text":"Methodology functions strictly based : M39 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 5th Edition, 2022, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m39/. Hindler JF Stelling J (2007). Analysis Presentation Cumulative Antibiograms: New Consensus Guideline Clinical Laboratory Standards Institute. Clinical Infectious Diseases, 44(6), 867-873. doi:10.1086/511864","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine First Isolates — first_isolate","text":"x data.frame containing isolates. Can left blank automatic determination, see Examples. col_date column name result date (date received lab) - default first column date class col_patient_id column name unique IDs patients - default first column starts 'patient' 'patid' (case insensitive) col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). col_testcode column name test codes. Use col_testcode = NULL exclude certain test codes (test codes screening). case testcodes_exclude ignored. col_specimen column name specimen type group col_icu column name logicals (TRUE/FALSE) whether ward department Intensive Care Unit (ICU). can also logical vector length rows x. col_keyantimicrobials (useful method = \"phenotype-based\") column name key antimicrobials determine first isolates, see key_antimicrobials(). default first column starts 'key' followed 'ab' 'antibiotics' 'antimicrobials' (case insensitive). Use col_keyantimicrobials = FALSE prevent . Can also output key_antimicrobials(). episode_days episode days genus/species combination determined 'first isolate' . default 365 days based guideline CLSI, see Source. testcodes_exclude character vector test codes excluded (case-insensitive) icu_exclude logical indicate whether ICU isolates excluded (rows value TRUE column set col_icu) specimen_group value column set col_specimen filter type type determine weighed isolates; can \"keyantimicrobials\" \"points\", see Details method method apply, either \"phenotype-based\", \"episode-based\", \"patient-based\" \"isolate-based\" (can abbreviated), see Details. default \"phenotype-based\" antimicrobial test results present data, \"episode-based\" otherwise. ignore_I logical indicate whether antibiotic interpretations \"\" ignored type = \"keyantimicrobials\", see Details points_threshold minimum number points require differences antibiogram lead inclusion isolate type = \"points\", see Details info logical indicate info printed - default TRUE interactive mode include_unknown logical indicate whether 'unknown' microorganisms included , .e. microbial code \"UNKNOWN\", defaults FALSE. WHONET users, means records organism code \"con\" (contamination) excluded default. Isolates microbial ID NA always excluded first isolate. include_untested_sir logical indicate whether also rows without antibiotic results still eligible becoming first isolate. Use include_untested_sir = FALSE always return FALSE rows. checks data set columns class sir consequently requires transforming columns antibiotic results using .sir() first. ... arguments passed first_isolate() using filter_first_isolate(), otherwise arguments passed key_antimicrobials() (universal, gram_negative, gram_positive)","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine First Isolates — first_isolate","text":"logical vector","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Determine First Isolates — first_isolate","text":"methodology implemented functions strictly based recommendations outlined CLSI Guideline M39 research overview Hindler et al. (2007, doi:10.1086/511864 ). conduct epidemiological analyses antimicrobial resistance data, -called first isolates included prevent overestimation underestimation antimicrobial resistance. Different methods can used , see . functions context-aware. means x argument can left blank used inside data.frame call, see Examples. first_isolate() function wrapper around is_new_episode() function, efficient data sets containing microorganism codes names. isolates microbial ID NA excluded first isolate.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"different-methods","dir":"Reference","previous_headings":"","what":"Different methods","title":"Determine First Isolates — first_isolate","text":"According previously-mentioned sources, different methods (algorithms) select first isolates increasing reliability: isolate-based, patient-based, episode-based phenotype-based. methods select combination taxonomic genus species (subspecies). mentioned methods covered first_isolate() function:","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"isolate-based","dir":"Reference","previous_headings":"","what":"Isolate-based","title":"Determine First Isolates — first_isolate","text":"method require selection, isolates included. , however, respect arguments set first_isolate() function. example, default setting include_unknown (FALSE) omit selection rows without microbial ID.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"patient-based","dir":"Reference","previous_headings":"","what":"Patient-based","title":"Determine First Isolates — first_isolate","text":"include every genus-species combination per patient , set episode_days Inf. method makes sure duplicate isolates selected patient. method preferred e.g. identify first MRSA finding patient determine incidence. Conversely, large longitudinal data set, mean isolates excluded found years initial isolate.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"episode-based","dir":"Reference","previous_headings":"","what":"Episode-based","title":"Determine First Isolates — first_isolate","text":"include every genus-species combination per patient episode , set episode_days sensible number days. Depending type analysis, 14, 30, 60 365. Short episodes common analysing specific hospital ward data ICU cases, long episodes common analysing regional national data. common method correct duplicate isolates. Patients categorised episodes based ID dates (e.g., date specimen receipt laboratory result). common method, take account antimicrobial test results. means e.g. methicillin-resistant Staphylococcus aureus (MRSA) isolate differentiated wildtype Staphylococcus aureus isolate.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"phenotype-based","dir":"Reference","previous_headings":"","what":"Phenotype-based","title":"Determine First Isolates — first_isolate","text":"reliable method, since also weighs antibiogram (antimicrobial test results) yielding -called 'first weighted isolates'. two different methods weigh antibiogram: Using type = \"points\" argument points_threshold (default) method weighs antimicrobial drugs available data set. difference S R (vice versa) counts 0.5 points, difference S R (vice versa) counts 1 point. sum points exceeds points_threshold, defaults 2, isolate selected first weighted isolate. antimicrobials internally selected using all_antimicrobials() function. output function need passed first_isolate() function. Using type = \"keyantimicrobials\" argument ignore_I method weighs specific antimicrobial drugs, called key antimicrobials. difference S R (vice versa) key antimicrobials select isolate first weighted isolate. ignore_I = FALSE, also differences S R (vice versa) lead . Key antimicrobials internally selected using key_antimicrobials() function, can also added manually variable data set col_keyantimicrobials argument. Another option pass output key_antimicrobials() function directly col_keyantimicrobials argument. default method phenotype-based (using type = \"points\") episode-based (using episode_days = 365). makes sure every genus-species combination selected per patient per year, taking account antimicrobial test results. antimicrobial test results available data set, episode-based method applied default.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine First Isolates — first_isolate","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates.  example_isolates[first_isolate(info = TRUE), ] #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Using column 'date' as input for col_date. #> ℹ Using column 'patient' as input for col_patient_id. #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #>   of 2 #> ℹ Excluding 16 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 1,387 'phenotype-based' first isolates (69.4% of total where a #>    microbial ID was available) #> # A tibble: 1,387 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  3 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  4 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  5 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR   R     NA    S     NA  #>  6 2002-01-17 495616     67 M      Clinical B_STPHY_EPDR   R     NA    S     NA  #>  7 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  8 2002-01-21 462081     75 F      Clinical B_CTRBC_FRND   R     NA    NA    R   #>  9 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #> 10 2002-02-03 481442     76 M      ICU      B_STPHY_CONS   R     NA    S     NA  #> # ℹ 1,377 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … # \\donttest{ # get all first Gram-negatives example_isolates[which(first_isolate(info = FALSE) & mo_is_gram_negative()), ] #> ℹ Using column 'mo' as input for mo_is_gram_negative() #> # A tibble: 441 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  3 2002-01-21 462081     75 F      Clinical B_CTRBC_FRND   R     NA    NA    R   #>  4 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #>  5 2002-02-05 067927     45 F      ICU      B_SERRT_MRCS   R     NA    NA    R   #>  6 2002-02-27 066895     85 F      Clinical B_KLBSL_PNMN   R     NA    NA    R   #>  7 2002-03-08 4FC193     69 M      Clinical B_ESCHR_COLI   R     NA    NA    R   #>  8 2002-03-16 4FC193     69 M      Clinical B_PSDMN_AERG   R     NA    NA    R   #>  9 2002-04-01 496896     46 F      ICU      B_ESCHR_COLI   R     NA    NA    NA  #> 10 2002-04-23 EE2510     69 F      ICU      B_ESCHR_COLI   R     NA    NA    NA  #> # ℹ 431 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  if (require(\"dplyr\")) {   # filter on first isolates using dplyr:   example_isolates %>%     filter(first_isolate(info = TRUE)) } #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #>   of 2 #> ℹ Excluding 16 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 1,387 'phenotype-based' first isolates (69.4% of total where a #>    microbial ID was available) #> # A tibble: 1,387 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  3 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  4 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  5 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR   R     NA    S     NA  #>  6 2002-01-17 495616     67 M      Clinical B_STPHY_EPDR   R     NA    S     NA  #>  7 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  8 2002-01-21 462081     75 F      Clinical B_CTRBC_FRND   R     NA    NA    R   #>  9 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #> 10 2002-02-03 481442     76 M      ICU      B_STPHY_CONS   R     NA    S     NA  #> # ℹ 1,377 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … if (require(\"dplyr\")) {   # short-hand version:   example_isolates %>%     filter_first_isolate(info = FALSE) } #> # A tibble: 1,387 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  3 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  4 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  5 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR   R     NA    S     NA  #>  6 2002-01-17 495616     67 M      Clinical B_STPHY_EPDR   R     NA    S     NA  #>  7 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  8 2002-01-21 462081     75 F      Clinical B_CTRBC_FRND   R     NA    NA    R   #>  9 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #> 10 2002-02-03 481442     76 M      ICU      B_STPHY_CONS   R     NA    S     NA  #> # ℹ 1,377 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … if (require(\"dplyr\")) {   # flag the first isolates per group:   example_isolates %>%     group_by(ward) %>%     mutate(first = first_isolate(info = TRUE)) %>%     select(ward, date, patient, mo, first) } #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #>   of 2 #>  #> Group: ward = \"Clinical\" #> ℹ Excluding 9 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 865 'phenotype-based' first isolates (70.1% of total where a #>    microbial ID was available) #>  #> Group: ward = \"ICU\" #> ℹ Excluding 6 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 452 'phenotype-based' first isolates (70.0% of total where a #>    microbial ID was available) #>  #> Group: ward = \"Outpatient\" #> ℹ Excluding 1 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 99 'phenotype-based' first isolates (82.5% of total where a #>    microbial ID was available) #> # A tibble: 2,000 × 5 #> # Groups:   ward [3] #>    ward     date       patient mo           first #>    <chr>    <date>     <chr>   <mo>         <lgl> #>  1 Clinical 2002-01-02 A77334  B_ESCHR_COLI TRUE  #>  2 Clinical 2002-01-03 A77334  B_ESCHR_COLI FALSE #>  3 ICU      2002-01-07 067927  B_STPHY_EPDR TRUE  #>  4 ICU      2002-01-07 067927  B_STPHY_EPDR FALSE #>  5 ICU      2002-01-13 067927  B_STPHY_EPDR FALSE #>  6 ICU      2002-01-13 067927  B_STPHY_EPDR FALSE #>  7 Clinical 2002-01-14 462729  B_STPHY_AURS TRUE  #>  8 Clinical 2002-01-14 462729  B_STPHY_AURS FALSE #>  9 ICU      2002-01-16 067927  B_STPHY_EPDR TRUE  #> 10 ICU      2002-01-17 858515  B_STPHY_EPDR TRUE  #> # ℹ 1,990 more rows # }"},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":null,"dir":"Reference","previous_headings":"","what":"G-test for Count Data — g.test","title":"G-test for Count Data — g.test","text":"g.test() performs chi-squared contingency table tests goodness--fit tests, just like chisq.test() reliable (1). G-test can used see whether number observations category fits theoretical expectation (called G-test goodness--fit), see whether proportions one variable different different values variable (called G-test independence).","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"G-test for Count Data — g.test","text":"","code":"g.test(x, y = NULL, p = rep(1/length(x), length(x)), rescale.p = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"G-test for Count Data — g.test","text":"code function identical chisq.test(), except : calculation statistic changed \\(2 * sum(x * log(x / E))\\) Yates' continuity correction removed apply G-test possibility simulate p values simulate.p.value removed","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"G-test for Count Data — g.test","text":"x numeric vector matrix. x y can also     factors. y numeric vector; ignored x matrix.      x factor, y factor length. p vector probabilities length x.     error given entry p negative. rescale.p logical scalar; TRUE p rescaled     (necessary) sum 1.  rescale.p FALSE,     p sum 1, error given.","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"G-test for Count Data — g.test","text":"list class \"htest\" containing following   components: statistic value chi-squared test statistic. parameter degrees freedom approximate     chi-squared distribution test statistic, NA     p-value computed Monte Carlo simulation. p.value p-value test. method character string indicating type test     performed, whether Monte Carlo simulation continuity     correction used. data.name character string giving name(s) data. observed observed counts. expected expected counts null hypothesis. residuals Pearson residuals,     (observed - expected) / sqrt(expected). stdres standardized residuals,     (observed - expected) / sqrt(V), V     residual cell variance (Agresti, 2007, section 2.4.5     case x matrix, n * p * (1 - p) otherwise).","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"G-test for Count Data — g.test","text":"x matrix one row column, x vector y given, goodness--fit test performed (x treated one-dimensional contingency table). entries x must non-negative integers. case, hypothesis tested whether population probabilities equal p, equal p given. x matrix least two rows columns, taken two-dimensional contingency table: entries x must non-negative integers.  Otherwise, x y must vectors factors length; cases missing values removed, objects coerced factors, contingency table computed .  Pearson's chi-squared test performed null hypothesis joint distribution cell counts 2-dimensional contingency table product row column marginals. p-value computed asymptotic chi-squared distribution test statistic. contingency table case simulation done random sampling set contingency tables given marginals, works marginals strictly positive. Note usual sampling situation assumed chi-squared test (G-test) rather Fisher's exact test. goodness--fit case simulation done random sampling discrete distribution specified p, sample size n = sum(x). simulation done R may slow.","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"g-test-of-goodness-of-fit-likelihood-ratio-test-","dir":"Reference","previous_headings":"","what":"G-test Of Goodness-of-Fit (Likelihood Ratio Test)","title":"G-test for Count Data — g.test","text":"Use G-test goodness--fit one nominal variable two values (male female, red, pink white flowers). compare observed counts numbers observations category expected counts, calculate using kind theoretical expectation (1:1 sex ratio 1:2:1 ratio genetic cross). expected number observations category small, G-test may give inaccurate results, use exact test instead (fisher.test()). G-test goodness--fit alternative chi-square test goodness--fit (chisq.test()); tests advantages disadvantages, results two tests usually similar.","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"g-test-of-independence","dir":"Reference","previous_headings":"","what":"G-test of Independence","title":"G-test for Count Data — g.test","text":"Use G-test independence two nominal variables, two possible values. want know whether proportions one variable different among values variable. also possible G-test independence two nominal variables. example, Jackson et al. (2013) also data children 3, analysis old vs. young, thigh vs. arm, reaction vs. reaction, analyzed together. Fisher's exact test (fisher.test()) exact test, G-test still approximation. 2x2 table, Fisher's Exact test may slower still run seconds, even sum observations multiple millions. G-test independence alternative chi-square test independence (chisq.test()), give approximately results.","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"how-the-test-works","dir":"Reference","previous_headings":"","what":"How the Test Works","title":"G-test for Count Data — g.test","text":"Unlike exact test goodness--fit (fisher.test()), G-test directly calculate probability obtaining observed results something extreme. Instead, like almost statistical tests, G-test intermediate step; uses data calculate test statistic measures far observed data null expectation. use mathematical relationship, case chi-square distribution, estimate probability obtaining value test statistic. G-test uses log ratio two likelihoods test statistic, also called likelihood ratio test log-likelihood ratio test. formula calculate G-statistic : \\(G = 2 * sum(x * log(x / E))\\) E expected values. Since chi-square distributed, p value can calculated R :   df degrees freedom. two categories want find ones significantly different null expectation, can use method testing category vs. sum categories, Bonferroni correction. use G-tests category, course.","code":"p <- stats::pchisq(G, df, lower.tail = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"G-test for Count Data — g.test","text":"McDonald, J.H. 2014. Handbook Biological Statistics (3rd ed.). Sparky House Publishing, Baltimore, Maryland. http://www.biostathandbook.com/gtestgof.html.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"G-test for Count Data — g.test","text":"","code":"# = EXAMPLE 1 = # Shivrain et al. (2006) crossed clearfield rice (which are resistant # to the herbicide imazethapyr) with red rice (which are susceptible to # imazethapyr). They then crossed the hybrid offspring and examined the # F2 generation, where they found 772 resistant plants, 1611 moderately # resistant plants, and 737 susceptible plants. If resistance is controlled # by a single gene with two co-dominant alleles, you would expect a 1:2:1 # ratio.  x <- c(772, 1611, 737) g.test(x, p = c(1, 2, 1) / 4) #>  #> \tG-test of goodness-of-fit (likelihood ratio test) #>  #> data:  x #> X-squared = 4.1471, p-value = 0.1257 #>   # There is no significant difference from a 1:2:1 ratio. # Meaning: resistance controlled by a single gene with two co-dominant # alleles, is plausible.   # = EXAMPLE 2 = # Red crossbills (Loxia curvirostra) have the tip of the upper bill either # right or left of the lower bill, which helps them extract seeds from pine # cones. Some have hypothesized that frequency-dependent selection would # keep the number of right and left-billed birds at a 1:1 ratio. Groth (1992) # observed 1752 right-billed and 1895 left-billed crossbills.  x <- c(1752, 1895) g.test(x) #>  #> \tG-test of goodness-of-fit (likelihood ratio test) #>  #> data:  x #> X-squared = 5.6085, p-value = 0.01787 #>   # There is a significant difference from a 1:1 ratio. # Meaning: there are significantly more left-billed birds."},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine Clinical or Epidemic Episodes — get_episode","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"functions determine items vector can considered (start ) new episode. can used determine clinical episodes epidemiological analysis. get_episode() function returns index number episode per group, is_new_episode() function returns TRUE every new get_episode() index. absolute relative episode determination supported.","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"","code":"get_episode(x, episode_days = NULL, case_free_days = NULL, ...)  is_new_episode(x, episode_days = NULL, case_free_days = NULL, ...)"},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"x vector dates (class Date POSIXt), sorted internally determine episodes episode_days episode length days specify time period new episode begins, can also less day Inf, see Details case_free_days (inter-epidemic) interval length days new episode start, can also less day Inf, see Details ... ignored, place allow future extensions","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"get_episode(): integer vector is_new_episode(): logical vector","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"Episodes can determined two ways: absolute relative. Absolute method uses episode_days define episode length days, new episode start. common use case AMR data analysis microbial epidemiology: episodes S. aureus bacteraemia ICU patients example. episode length 30 days, new S. aureus isolates ICU episode 30 days considered different (new) episode. Thus, method counts since start previous episode. Relative method uses case_free_days quantify duration case-free days (inter-epidemic interval), new episode start. common use case infectious disease epidemiology: episodes norovirus outbreaks hospital example. case-free period 14 days, new norovirus cases time considered different (new) episode. Thus, methods counts since last case previous episode. table: ** marks start new episode, 8 January 2023 7 days since start previous episode (1 January 2023).  *** marks start new episode, 21 January 2023 7 days since last case previous episode (8 January 2023). Either episode_days case_free_days must provided function.","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"difference-between-get-episode-and-is-new-episode-","dir":"Reference","previous_headings":"","what":"Difference between get_episode() and is_new_episode()","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"get_episode() function returns index number episode, cases/patients/isolates first episode number 1, cases/patients/isolates second episode number 2, etc. is_new_episode() function hand, returns TRUE every new get_episode() index. specify, setting episode_days = 365 (using method 1 explained ), two functions differ:","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"other","dir":"Reference","previous_headings":"","what":"Other","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"first_isolate() function wrapper around is_new_episode() function, efficient data sets containing microorganism codes names allows different isolate selection methods. dplyr package required functions work, episode functions support variable grouping work conveniently inside dplyr verbs filter(), mutate() summarise().","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"","code":"# difference between absolute and relative determination of episodes: x <- data.frame(dates = as.Date(c(   \"2021-01-01\",   \"2021-01-02\",   \"2021-01-05\",   \"2021-01-08\",   \"2021-02-21\",   \"2021-02-22\",   \"2021-02-23\",   \"2021-02-24\",   \"2021-03-01\",   \"2021-03-01\" ))) x$absolute <- get_episode(x$dates, episode_days = 7) x$relative <- get_episode(x$dates, case_free_days = 7) x #>         dates absolute relative #> 1  2021-01-01        1        1 #> 2  2021-01-02        1        1 #> 3  2021-01-05        1        1 #> 4  2021-01-08        2        1 #> 5  2021-02-21        3        2 #> 6  2021-02-22        3        2 #> 7  2021-02-23        3        2 #> 8  2021-02-24        3        2 #> 9  2021-03-01        4        2 #> 10 2021-03-01        4        2   # `example_isolates` is a data set available in the AMR package. # See ?example_isolates df <- example_isolates[sample(seq_len(2000), size = 100), ]  get_episode(df$date, episode_days = 60) # indices #>   [1] 46  4 39 28  8 29 19 40 34 38  7  7 10 28  7 38 41 10 20  5 18  1 22  5  6 #>  [26] 35 17 25 27 27  1 32 28 32 41 46 46 45 28 45 43 22 31  5  6 16 45 26  8 28 #>  [51] 45 12  4 19 24 42 16 35 44  9 26 11  1  2 32 45 32 39 21 36 19 37 14 29  3 #>  [76] 12 41 32 22 19 19 33 15 27 10 30 16 10 45  5 40 13 37 45 28  1 31 20 23 35 is_new_episode(df$date, episode_days = 60) # TRUE/FALSE #>   [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE #>  [13]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE #>  [25]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE #>  [37] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE #>  [49] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE #>  [61] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE #>  [73]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE #>  [85] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE #>  [97] FALSE FALSE  TRUE FALSE  # filter on results from the third 60-day episode only, using base R df[which(get_episode(df$date, 60) == 3), ] #> # A tibble: 1 × 46 #>   date       patient   age gender ward  mo           PEN   OXA   FLC   AMX   #>   <date>     <chr>   <dbl> <chr>  <chr> <mo>         <sir> <sir> <sir> <sir> #> 1 2002-07-23 F35553     51 M      ICU   B_STPHY_AURS   R     NA    S     R   #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, RIF <sir>  # the functions also work for less than a day, e.g. to include one per hour: get_episode(   c(     Sys.time(),     Sys.time() + 60 * 60   ),   episode_days = 1 / 24 ) #> [1] 1 2  # \\donttest{ if (require(\"dplyr\")) {   # is_new_episode() can also be used in dplyr verbs to determine patient   # episodes based on any (combination of) grouping variables:   df %>%     mutate(condition = sample(       x = c(\"A\", \"B\", \"C\"),       size = 100,       replace = TRUE     )) %>%     group_by(patient, condition) %>%     mutate(new_episode = is_new_episode(date, 365)) %>%     select(patient, date, condition, new_episode) %>%     arrange(patient, condition, date) } #> # A tibble: 100 × 4 #> # Groups:   patient, condition [96] #>    patient date       condition new_episode #>    <chr>   <date>     <chr>     <lgl>       #>  1 022060  2004-05-04 C         TRUE        #>  2 036063  2010-01-28 A         TRUE        #>  3 067927  2002-02-14 C         TRUE        #>  4 069276  2015-06-18 A         TRUE        #>  5 0C0688  2014-09-05 B         TRUE        #>  6 0E2483  2007-04-06 A         TRUE        #>  7 114570  2003-04-08 B         TRUE        #>  8 122506  2007-08-10 B         TRUE        #>  9 122506  2007-08-11 B         FALSE       #> 10 13DF24  2011-08-14 A         TRUE        #> # ℹ 90 more rows  if (require(\"dplyr\")) {   df %>%     group_by(ward, patient) %>%     transmute(date,       patient,       new_index = get_episode(date, 60),       new_logical = is_new_episode(date, 60)     ) %>%     arrange(patient, ward, date) } #> # A tibble: 100 × 5 #> # Groups:   ward, patient [90] #>    ward     date       patient new_index new_logical #>    <chr>    <date>     <chr>       <int> <lgl>       #>  1 ICU      2004-05-04 022060          1 TRUE        #>  2 Clinical 2010-01-28 036063          1 TRUE        #>  3 ICU      2002-02-14 067927          1 TRUE        #>  4 ICU      2015-06-18 069276          1 TRUE        #>  5 Clinical 2014-09-05 0C0688          1 TRUE        #>  6 Clinical 2007-04-06 0E2483          1 TRUE        #>  7 ICU      2003-04-08 114570          1 TRUE        #>  8 Clinical 2007-08-10 122506          1 TRUE        #>  9 Clinical 2007-08-11 122506          1 FALSE       #> 10 Clinical 2011-08-14 13DF24          1 TRUE        #> # ℹ 90 more rows  if (require(\"dplyr\")) {   df %>%     group_by(ward) %>%     summarise(       n_patients = n_distinct(patient),       n_episodes_365 = sum(is_new_episode(date, episode_days = 365)),       n_episodes_60 = sum(is_new_episode(date, episode_days = 60)),       n_episodes_30 = sum(is_new_episode(date, episode_days = 30))     ) } #> # A tibble: 3 × 5 #>   ward       n_patients n_episodes_365 n_episodes_60 n_episodes_30 #>   <chr>           <int>          <int>         <int>         <int> #> 1 Clinical           52             13            30            37 #> 2 ICU                30             10            24            27 #> 3 Outpatient          8              5             8             8  # grouping on patients and microorganisms leads to the same # results as first_isolate() when using 'episode-based': if (require(\"dplyr\")) {   x <- df %>%     filter_first_isolate(       include_unknown = TRUE,       method = \"episode-based\"     )    y <- df %>%     group_by(patient, mo) %>%     filter(is_new_episode(date, 365)) %>%     ungroup()    identical(x, y) } #> [1] TRUE  # but is_new_episode() has a lot more flexibility than first_isolate(), # since you can now group on anything that seems relevant: if (require(\"dplyr\")) {   df %>%     group_by(patient, mo, ward) %>%     mutate(flag_episode = is_new_episode(date, 365)) %>%     select(group_vars(.), flag_episode) } #> # A tibble: 100 × 4 #> # Groups:   patient, mo, ward [95] #>    patient mo           ward       flag_episode #>    <chr>   <mo>         <chr>      <lgl>        #>  1 CFCF65  B_ACNTB_BMNN ICU        TRUE         #>  2 CF9318  B_CMPYL_JEJN ICU        TRUE         #>  3 D28985  B_ESCHR_COLI Outpatient TRUE         #>  4 907215  B_STPHY_CONS ICU        TRUE         #>  5 2FC253  B_ESCHR_COLI ICU        TRUE         #>  6 582258  B_STPHY_CONS ICU        TRUE         #>  7 179451  B_ESCHR_COLI ICU        TRUE         #>  8 534816  B_STPHY_AURS Clinical   TRUE         #>  9 B12887  B_ESCHR_COLI Clinical   TRUE         #> 10 D43214  B_STPHY_HMNS Clinical   TRUE         #> # ℹ 90 more rows # }"},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":null,"dir":"Reference","previous_headings":"","what":"PCA Biplot with ggplot2 — ggplot_pca","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"Produces ggplot2 variant -called biplot PCA (principal component analysis), flexible appealing base R biplot() function.","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"","code":"ggplot_pca(x, choices = 1:2, scale = 1, pc.biplot = TRUE,   labels = NULL, labels_textsize = 3, labels_text_placement = 1.5,   groups = NULL, ellipse = TRUE, ellipse_prob = 0.68,   ellipse_size = 0.5, ellipse_alpha = 0.5, points_size = 2,   points_alpha = 0.25, arrows = TRUE, arrows_colour = \"darkblue\",   arrows_size = 0.5, arrows_textsize = 3, arrows_textangled = TRUE,   arrows_alpha = 0.75, base_textsize = 10, ...)"},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"ggplot_pca() function based ggbiplot() function ggbiplot package Vince Vu, found GitHub: https://github.com/vqv/ggbiplot (retrieved: 2 March 2020, latest commit: 7325e88; 12 February 2015). per GPL-2 licence demands documentation code changes, changes made based source code : Rewritten code remove dependency packages plyr, scales grid Parametrised options, like arrow ellipse settings Hardened input possibilities defining exact type user input every argument Added total amount explained variance caption plot Cleaned syntax based lintr package, fixed grammatical errors added integrity checks Updated documentation","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"x object returned pca(), prcomp() princomp() choices length 2 vector specifying components plot. default     biplot strict sense. scale variables scaled lambda ^ scale     observations scaled lambda ^ (1-scale)     lambda singular values computed     princomp. Normally 0 <= scale <= 1, warning     issued specified scale outside range. pc.biplot true, use Gabriel (1971) refers \"principal component     biplot\", lambda = 1 observations scaled sqrt(n)     variables scaled sqrt(n).  inner products     variables approximate covariances distances observations     approximate Mahalanobis distance. labels optional vector labels observations. set, labels placed respective points. using pca() function input x, determined automatically based attribute non_numeric_cols, see pca(). labels_textsize size text used labels labels_text_placement adjustment factor placement variable names (>=1 means away arrow head) groups optional vector groups labels, length labels. set, points labels coloured according groups. using pca() function input x, determined automatically based attribute non_numeric_cols, see pca(). ellipse logical indicate whether normal data ellipse drawn group (set groups) ellipse_prob statistical size ellipse normal probability ellipse_size size ellipse line ellipse_alpha alpha (transparency) ellipse line points_size size points points_alpha alpha (transparency) points arrows logical indicate whether arrows drawn arrows_colour colour arrow text arrows_size size (thickness) arrow lines arrows_textsize size text end arrows arrows_textangled logical whether text end arrows angled arrows_alpha alpha (transparency) arrows text base_textsize text size plot elements except labels arrows ... arguments passed functions","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"colours labels points can changed adding another scale layer colour, scale_colour_viridis_d() scale_colour_brewer().","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates.  # \\donttest{ if (require(\"dplyr\")) {   # calculate the resistance per group first   resistance_data <- example_isolates %>%     group_by(       order = mo_order(mo), # group on anything, like order       genus = mo_genus(mo)     ) %>% #   and genus as we do here;     filter(n() >= 30) %>% # filter on only 30 results per group     summarise_if(is.sir, resistance) # then get resistance of all drugs    # now conduct PCA for certain antimicrobial drugs   pca_result <- resistance_data %>%     pca(AMC, CXM, CTX, CAZ, GEN, TOB, TMP, SXT)    summary(pca_result)    # old base R plotting method:   biplot(pca_result, main = \"Base R biplot\")    # new ggplot2 plotting method using this package:   if (require(\"ggplot2\")) {     ggplot_pca(pca_result) +       labs(title = \"ggplot2 biplot\")   }   if (require(\"ggplot2\")) {     # still extendible with any ggplot2 function     ggplot_pca(pca_result) +       scale_colour_viridis_d() +       labs(title = \"ggplot2 biplot\")   } } #> Warning: There were 73 warnings in `summarise()`. #> The first warning was: #> ℹ In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE, #>   only_all_tested = FALSE) ...`. #> ℹ In group 5: `order = \"Lactobacillales\"` and `genus = \"Enterococcus\"`. #> Caused by warning: #> ! Introducing NA: only 14 results available for PEN in group: order = #> \"Lactobacillales\", genus = \"Enterococcus\" (minimum = 30). #> ℹ Run `dplyr::last_dplyr_warnings()` to see the 72 remaining warnings. #> ℹ Columns selected for PCA: \"AMC\", \"CAZ\", \"CTX\", \"CXM\", \"GEN\", \"SXT\", #>   \"TMP\", and \"TOB\". Total observations available: 7. #> Groups (n=4, named as 'order'): #> [1] \"Caryophanales\"    \"Enterobacterales\" \"Lactobacillales\"  \"Pseudomonadales\"  #>    # }"},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":null,"dir":"Reference","previous_headings":"","what":"AMR Plots with ggplot2 — ggplot_sir","title":"AMR Plots with ggplot2 — ggplot_sir","text":"Use functions create bar plots AMR data analysis. functions rely ggplot2 functions.","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"AMR Plots with ggplot2 — ggplot_sir","text":"","code":"ggplot_sir(data, position = NULL, x = \"antibiotic\",   fill = \"interpretation\", facet = NULL, breaks = seq(0, 1, 0.1),   limits = NULL, translate_ab = \"name\", combine_SI = TRUE,   minimum = 30, language = get_AMR_locale(), nrow = NULL, colours = c(S   = \"#3CAEA3\", SI = \"#3CAEA3\", I = \"#F6D55C\", IR = \"#ED553B\", R = \"#ED553B\"),   datalabels = TRUE, datalabels.size = 2.5, datalabels.colour = \"grey15\",   title = NULL, subtitle = NULL, caption = NULL,   x.title = \"Antimicrobial\", y.title = \"Proportion\", ...)  geom_sir(position = NULL, x = c(\"antibiotic\", \"interpretation\"),   fill = \"interpretation\", translate_ab = \"name\", minimum = 30,   language = get_AMR_locale(), combine_SI = TRUE, ...)"},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"AMR Plots with ggplot2 — ggplot_sir","text":"data data.frame column(s) class sir (see .sir()) position position adjustment bars, either \"fill\", \"stack\" \"dodge\" x variable show x axis, either \"antibiotic\" (default) \"interpretation\" grouping variable fill variable categorise using plots legend, either \"antibiotic\" (default) \"interpretation\" grouping variable facet variable split plots , either \"interpretation\" (default) \"antibiotic\" grouping variable breaks numeric vector positions limits numeric vector length two providing limits scale, use NA refer existing minimum maximum translate_ab column name antibiotics data set translate antibiotic abbreviations , using ab_property() combine_SI logical indicate whether values S, SDD, must merged one, output consists S+SDD+vs. R (susceptible vs. resistant) - default TRUE minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. nrow (using facet) number rows colours named vactor colour used filling. default colours colour-blind friendly. datalabels show datalabels using labels_sir_count() datalabels.size size datalabels datalabels.colour colour datalabels title text show title plot subtitle text show subtitle plot caption text show caption plot x.title text show x axis description y.title text show y axis description ... arguments passed geom_sir() , case scale_sir_colours(), named values set colours. default colours colour-blind friendly, maintaining convention e.g. 'susceptible' green 'resistant' red. See Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"AMR Plots with ggplot2 — ggplot_sir","text":"default, names antibiotics shown plots using ab_name(). can set translate_ab argument. See count_df(). geom_sir() take variable data sir class (created .sir()) using sir_df() plot bars percentage S, , R. default behaviour bars stacked different antibiotics x axis. Additional functions include: facet_sir() creates 2d plots (default based S//R) using ggplot2::facet_wrap(). scale_y_percent() transforms y axis 0 100% range using ggplot2::scale_y_continuous(). scale_sir_colours() sets colours bars (green S, yellow , red R). multilingual support. default colours colour-blind friendly, maintaining convention e.g. 'susceptible' green 'resistant' red. theme_sir() [ggplot2 theme][ggplot2::theme() minimal distraction. labels_sir_count() print datalabels bars percentage amount isolates using ggplot2::geom_text(). ggplot_sir() wrapper around functions uses data first input. makes possible use function pipe (%>%). See Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"AMR Plots with ggplot2 — ggplot_sir","text":"","code":"# \\donttest{ if (require(\"ggplot2\") && require(\"dplyr\")) {   # get antimicrobial results for drugs against a UTI:   ggplot(example_isolates %>% select(AMX, NIT, FOS, TMP, CIP)) +     geom_sir() }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # prettify the plot using some additional functions:   df <- example_isolates %>% select(AMX, NIT, FOS, TMP, CIP)   ggplot(df) +     geom_sir() +     scale_y_percent() +     scale_sir_colours() +     labels_sir_count() +     theme_sir() }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # or better yet, simplify this using the wrapper function - a single command:   example_isolates %>%     select(AMX, NIT, FOS, TMP, CIP) %>%     ggplot_sir() }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # get only proportions and no counts:   example_isolates %>%     select(AMX, NIT, FOS, TMP, CIP) %>%     ggplot_sir(datalabels = FALSE) }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # add other ggplot2 arguments as you like:   example_isolates %>%     select(AMX, NIT, FOS, TMP, CIP) %>%     ggplot_sir(       width = 0.5,       colour = \"black\",       size = 1,       linetype = 2,       alpha = 0.25     ) }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # you can alter the colours with colour names:   example_isolates %>%     select(AMX) %>%     ggplot_sir(colours = c(SI = \"yellow\")) }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # but you can also use the built-in colour-blind friendly colours for   # your plots, where \"S\" is green, \"I\" is yellow and \"R\" is red:   data.frame(     x = c(\"Value1\", \"Value2\", \"Value3\"),     y = c(1, 2, 3),     z = c(\"Value4\", \"Value5\", \"Value6\")   ) %>%     ggplot() +     geom_col(aes(x = x, y = y, fill = z)) +     scale_sir_colours(Value4 = \"S\", Value5 = \"I\", Value6 = \"R\") }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # resistance of ciprofloxacine per age group   example_isolates %>%     mutate(first_isolate = first_isolate()) %>%     filter(       first_isolate == TRUE,       mo == as.mo(\"Escherichia coli\")     ) %>%     # age_groups() is also a function in this AMR package:     group_by(age_group = age_groups(age)) %>%     select(age_group, CIP) %>%     ggplot_sir(x = \"age_group\") } #> Warning: Removed 6 rows containing missing values or values outside the scale range #> (`geom_col()`). #> Warning: Removed 6 rows containing missing values or values outside the scale range #> (`geom_text()`).  if (require(\"ggplot2\") && require(\"dplyr\")) {   # a shorter version which also adjusts data label colours:   example_isolates %>%     select(AMX, NIT, FOS, TMP, CIP) %>%     ggplot_sir(colours = FALSE) }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # it also supports groups (don't forget to use the group var on `x` or `facet`):   example_isolates %>%     filter(mo_is_gram_negative(), ward != \"Outpatient\") %>%     # select only UTI-specific drugs     select(ward, AMX, NIT, FOS, TMP, CIP) %>%     group_by(ward) %>%     ggplot_sir(       x = \"ward\",       facet = \"antibiotic\",       nrow = 1,       title = \"AMR of Anti-UTI Drugs Per Ward\",       x.title = \"Ward\",       datalabels = FALSE     ) } #> ℹ Using column 'mo' as input for mo_is_gram_negative()  # }"},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":null,"dir":"Reference","previous_headings":"","what":"Guess Antibiotic Column — guess_ab_col","title":"Guess Antibiotic Column — guess_ab_col","text":"tries find column name data set based information antibiotics data set. Also supports WHONET abbreviations.","code":""},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Guess Antibiotic Column — guess_ab_col","text":"","code":"guess_ab_col(x = NULL, search_string = NULL, verbose = FALSE,   only_sir_columns = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Guess Antibiotic Column — guess_ab_col","text":"x data.frame search_string text search x , checked .ab() value column x verbose logical indicate whether additional info printed only_sir_columns logical indicate whether antibiotic columns must detected transformed class sir (see .sir()) beforehand (default FALSE)","code":""},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Guess Antibiotic Column — guess_ab_col","text":"column name x, NULL result found.","code":""},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Guess Antibiotic Column — guess_ab_col","text":"can look antibiotic (trade) name abbreviation search x antibiotics data set column containing name code antibiotic.","code":""},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Guess Antibiotic Column — guess_ab_col","text":"","code":"df <- data.frame(   amox = \"S\",   tetr = \"R\" )  guess_ab_col(df, \"amoxicillin\") #> [1] \"amox\" guess_ab_col(df, \"J01AA07\") # ATC code of tetracycline #> [1] \"tetr\"  guess_ab_col(df, \"J01AA07\", verbose = TRUE) #> Auto-guessing columns suitable for analysis #> ... #>  OK. #> ℹ Using column 'amox' as input for AMX (amoxicillin). #> ℹ Using column 'tetr' as input for TCY (tetracycline). #> ℹ Using column 'tetr' as input for J01AA07 (tetracycline). #> [1] \"tetr\" # NOTE: Using column 'tetr' as input for J01AA07 (tetracycline).  # WHONET codes df <- data.frame(   AMP_ND10 = \"R\",   AMC_ED20 = \"S\" ) guess_ab_col(df, \"ampicillin\") #> [1] \"AMP_ND10\" guess_ab_col(df, \"J01CR02\") #> [1] \"AMC_ED20\" guess_ab_col(df, as.ab(\"augmentin\")) #> [1] \"AMC_ED20\""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"Data set containing defined intrinsic resistance EUCAST bug-drug combinations.","code":""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"","code":"intrinsic_resistant"},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"tibble 301 583 observations 2 variables: mo Microorganism ID ab Antibiotic ID","code":""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"data set based 'EUCAST Expert Rules' 'EUCAST Intrinsic Resistance Unusual Phenotypes' v3.3 (2021).","code":""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"direct-download","dir":"Reference","previous_headings":"","what":"Direct download","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository. allow machine reading EUCAST CLSI guidelines, almost impossible MS Excel PDF files distributed EUCAST CLSI.","code":""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"","code":"intrinsic_resistant #> # A tibble: 301,583 × 2 #>    mo          ab   #>    <mo>        <ab> #>  1 B_GRAMP     ATM  #>  2 B_GRAMP     COL  #>  3 B_GRAMP     NAL  #>  4 B_GRAMP     PLB  #>  5 B_GRAMP     TEM  #>  6 B_ANAER-POS ATM  #>  7 B_ANAER-POS COL  #>  8 B_ANAER-POS NAL  #>  9 B_ANAER-POS PLB  #> 10 B_ANAER-POS TEM  #> # ℹ 301,573 more rows"},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":null,"dir":"Reference","previous_headings":"","what":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"According binomial nomenclature, lowest four taxonomic levels (family, genus, species, subspecies) printed italics. function finds taxonomic names within strings makes italic.","code":""},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"","code":"italicise_taxonomy(string, type = c(\"markdown\", \"ansi\", \"html\"))  italicize_taxonomy(string, type = c(\"markdown\", \"ansi\", \"html\"))"},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"string character (vector) type type conversion taxonomic names, either \"markdown\", \"html\" \"ansi\", see Details","code":""},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"function finds taxonomic names makes italic based microorganisms data set. taxonomic names can italicised using markdown (default) adding * taxonomic names, <> <\/> using html. using 'ansi', ANSI colours added using \\033[3m \\033[23m taxonomic names. multiple ANSI colours available, conversion occur. function also supports abbreviation genus followed species, \"E. coli\" \"K. pneumoniae ozaenae\".","code":""},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"","code":"italicise_taxonomy(\"An overview of Staphylococcus aureus isolates\") #> [1] \"An overview of *Staphylococcus aureus* isolates\" italicise_taxonomy(\"An overview of S. aureus isolates\") #> [1] \"An overview of *S. aureus* isolates\"  cat(italicise_taxonomy(\"An overview of S. aureus isolates\", type = \"ansi\")) #> An overview of S. aureus isolates"},{"path":"https://msberends.github.io/AMR/reference/join.html","id":null,"dir":"Reference","previous_headings":"","what":"Join microorganisms to a Data Set — join","title":"Join microorganisms to a Data Set — join","text":"Join data set microorganisms easily existing data set character vector.","code":""},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Join microorganisms to a Data Set — join","text":"","code":"inner_join_microorganisms(x, by = NULL, suffix = c(\"2\", \"\"), ...)  left_join_microorganisms(x, by = NULL, suffix = c(\"2\", \"\"), ...)  right_join_microorganisms(x, by = NULL, suffix = c(\"2\", \"\"), ...)  full_join_microorganisms(x, by = NULL, suffix = c(\"2\", \"\"), ...)  semi_join_microorganisms(x, by = NULL, ...)  anti_join_microorganisms(x, by = NULL, ...)"},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Join microorganisms to a Data Set — join","text":"x existing data set join, character vector. case character vector, resulting data.frame contain column 'x' values. variable join - left empty search column class mo (created .mo()) \"mo\" column name exists x, otherwise column name x values exist microorganisms$mo (= \"bacteria_id\"), another column microorganisms (named, like = c(\"bacteria_id\" = \"fullname\")) suffix non-joined duplicate variables x y, suffixes added output disambiguate . character vector length 2. ... ignored, place allow future extensions","code":""},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Join microorganisms to a Data Set — join","text":"data.frame","code":""},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Join microorganisms to a Data Set — join","text":"Note: opposed join() functions dplyr, character vectors supported default existing columns get suffix \"2\" newly joined columns get suffix. dplyr package installed, join functions used. Otherwise, much slower merge() interaction() functions base R used.","code":""},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Join microorganisms to a Data Set — join","text":"","code":"left_join_microorganisms(as.mo(\"K. pneumoniae\")) #> # A tibble: 1 × 26 #>   mo           fullname   status kingdom phylum class order family genus species #>   <mo>         <chr>      <chr>  <chr>   <chr>  <chr> <chr> <chr>  <chr> <chr>   #> 1 B_KLBSL_PNMN Klebsiell… accep… Bacter… Pseud… Gamm… Ente… Enter… Kleb… pneumo… #> # ℹ 16 more variables: subspecies <chr>, rank <chr>, ref <chr>, #> #   oxygen_tolerance <chr>, source <chr>, lpsn <chr>, lpsn_parent <chr>, #> #   lpsn_renamed_to <chr>, mycobank <chr>, mycobank_parent <chr>, #> #   mycobank_renamed_to <chr>, gbif <chr>, gbif_parent <chr>, #> #   gbif_renamed_to <chr>, prevalence <dbl>, snomed <list> left_join_microorganisms(\"B_KLBSL_PNMN\") #> # A tibble: 1 × 26 #>   mo           fullname   status kingdom phylum class order family genus species #>   <mo>         <chr>      <chr>  <chr>   <chr>  <chr> <chr> <chr>  <chr> <chr>   #> 1 B_KLBSL_PNMN Klebsiell… accep… Bacter… Pseud… Gamm… Ente… Enter… Kleb… pneumo… #> # ℹ 16 more variables: subspecies <chr>, rank <chr>, ref <chr>, #> #   oxygen_tolerance <chr>, source <chr>, lpsn <chr>, lpsn_parent <chr>, #> #   lpsn_renamed_to <chr>, mycobank <chr>, mycobank_parent <chr>, #> #   mycobank_renamed_to <chr>, gbif <chr>, gbif_parent <chr>, #> #   gbif_renamed_to <chr>, prevalence <dbl>, snomed <list>  df <- data.frame(   date = seq(     from = as.Date(\"2018-01-01\"),     to = as.Date(\"2018-01-07\"),     by = 1   ),   bacteria = as.mo(c(     \"S. aureus\", \"MRSA\", \"MSSA\", \"STAAUR\",     \"E. coli\", \"E. coli\", \"E. coli\"   )),   stringsAsFactors = FALSE ) colnames(df) #> [1] \"date\"     \"bacteria\"  df_joined <- left_join_microorganisms(df, \"bacteria\") colnames(df_joined) #>  [1] \"date\"                \"bacteria\"            \"fullname\"            #>  [4] \"status\"              \"kingdom\"             \"phylum\"              #>  [7] \"class\"               \"order\"               \"family\"              #> [10] \"genus\"               \"species\"             \"subspecies\"          #> [13] \"rank\"                \"ref\"                 \"oxygen_tolerance\"    #> [16] \"source\"              \"lpsn\"                \"lpsn_parent\"         #> [19] \"lpsn_renamed_to\"     \"mycobank\"            \"mycobank_parent\"     #> [22] \"mycobank_renamed_to\" \"gbif\"                \"gbif_parent\"         #> [25] \"gbif_renamed_to\"     \"prevalence\"          \"snomed\"               # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     left_join_microorganisms() %>%     colnames() } #> Joining, by = \"mo\" #>  [1] \"date\"                \"patient\"             \"age\"                 #>  [4] \"gender\"              \"ward\"                \"mo\"                  #>  [7] \"PEN\"                 \"OXA\"                 \"FLC\"                 #> [10] \"AMX\"                 \"AMC\"                 \"AMP\"                 #> [13] \"TZP\"                 \"CZO\"                 \"FEP\"                 #> [16] \"CXM\"                 \"FOX\"                 \"CTX\"                 #> [19] \"CAZ\"                 \"CRO\"                 \"GEN\"                 #> [22] \"TOB\"                 \"AMK\"                 \"KAN\"                 #> [25] \"TMP\"                 \"SXT\"                 \"NIT\"                 #> [28] \"FOS\"                 \"LNZ\"                 \"CIP\"                 #> [31] \"MFX\"                 \"VAN\"                 \"TEC\"                 #> [34] \"TCY\"                 \"TGC\"                 \"DOX\"                 #> [37] \"ERY\"                 \"CLI\"                 \"AZM\"                 #> [40] \"IPM\"                 \"MEM\"                 \"MTR\"                 #> [43] \"CHL\"                 \"COL\"                 \"MUP\"                 #> [46] \"RIF\"                 \"fullname\"            \"status\"              #> [49] \"kingdom\"             \"phylum\"              \"class\"               #> [52] \"order\"               \"family\"              \"genus\"               #> [55] \"species\"             \"subspecies\"          \"rank\"                #> [58] \"ref\"                 \"oxygen_tolerance\"    \"source\"              #> [61] \"lpsn\"                \"lpsn_parent\"         \"lpsn_renamed_to\"     #> [64] \"mycobank\"            \"mycobank_parent\"     \"mycobank_renamed_to\" #> [67] \"gbif\"                \"gbif_parent\"         \"gbif_renamed_to\"     #> [70] \"prevalence\"          \"snomed\"              # }"},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":null,"dir":"Reference","previous_headings":"","what":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"functions can used determine first weighted isolates considering phenotype isolate selection (see first_isolate()). Using phenotype-based method determine first isolates reliable methods disregard phenotypes.","code":""},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"","code":"key_antimicrobials(x = NULL, col_mo = NULL, universal = c(\"ampicillin\",   \"amoxicillin/clavulanic acid\", \"cefuroxime\", \"piperacillin/tazobactam\",   \"ciprofloxacin\", \"trimethoprim/sulfamethoxazole\"),   gram_negative = c(\"gentamicin\", \"tobramycin\", \"colistin\", \"cefotaxime\",   \"ceftazidime\", \"meropenem\"), gram_positive = c(\"vancomycin\", \"teicoplanin\",   \"tetracycline\", \"erythromycin\", \"oxacillin\", \"rifampin\"),   antifungal = c(\"anidulafungin\", \"caspofungin\", \"fluconazole\", \"miconazole\",   \"nystatin\", \"voriconazole\"), only_sir_columns = FALSE, ...)  all_antimicrobials(x = NULL, only_sir_columns = FALSE, ...)  antimicrobials_equal(y, z, type = c(\"points\", \"keyantimicrobials\"),   ignore_I = TRUE, points_threshold = 2, ...)"},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"x data.frame antibiotics columns, like AMX amox. Can left blank determine automatically col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). universal names broad-spectrum antimicrobial drugs, case-insensitive. Set NULL ignore. See Details default antimicrobial drugs gram_negative names antibiotic drugs Gram-positives, case-insensitive. Set NULL ignore. See Details default antibiotic drugs gram_positive names antibiotic drugs Gram-negatives, case-insensitive. Set NULL ignore. See Details default antibiotic drugs antifungal names antifungal drugs fungi, case-insensitive. Set NULL ignore. See Details default antifungal drugs only_sir_columns logical indicate whether columns must included transformed class sir (see .sir()) beforehand (default FALSE) ... ignored, place allow future extensions y, z character vectors compare type type determine weighed isolates; can \"keyantimicrobials\" \"points\", see Details ignore_I logical indicate whether antibiotic interpretations \"\" ignored type = \"keyantimicrobials\", see Details points_threshold minimum number points require differences antibiogram lead inclusion isolate type = \"points\", see Details","code":""},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"key_antimicrobials() all_antimicrobials() functions context-aware. means x argument can left blank used inside data.frame call, see Examples. function key_antimicrobials() returns character vector 12 antimicrobial results every isolate. function all_antimicrobials() returns character vector antimicrobial drug results every isolate. vectors can compared using antimicrobials_equal(), check two isolates generally antibiogram. Missing invalid values replaced dot (\".\") key_antimicrobials() ignored antimicrobials_equal(). Please see first_isolate() function important functions enable 'phenotype-based' method determination first isolates. default antimicrobial drugs used rows (set universal) : Ampicillin Amoxicillin/clavulanic acid Cefuroxime Ciprofloxacin Piperacillin/tazobactam Trimethoprim/sulfamethoxazole default antimicrobial drugs used Gram-negative bacteria (set gram_negative) : Cefotaxime Ceftazidime Colistin Gentamicin Meropenem Tobramycin default antimicrobial drugs used Gram-positive bacteria (set gram_positive) : Erythromycin Oxacillin Rifampin Teicoplanin Tetracycline Vancomycin default antimicrobial drugs used fungi (set antifungal) : Anidulafungin Caspofungin Fluconazole Miconazole Nystatin Voriconazole","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates.  # output of the `key_antimicrobials()` function could be like this: strainA <- \"SSSRR.S.R..S\" strainB <- \"SSSIRSSSRSSS\"  # those strings can be compared with: antimicrobials_equal(strainA, strainB, type = \"keyantimicrobials\") #> [1] TRUE # TRUE, because I is ignored (as well as missing values)  antimicrobials_equal(strainA, strainB, type = \"keyantimicrobials\", ignore_I = FALSE) #> [1] FALSE # FALSE, because I is not ignored and so the 4th [character] differs  # \\donttest{ if (require(\"dplyr\")) {   # set key antibiotics to a new variable   my_patients <- example_isolates %>%     mutate(keyab = key_antimicrobials(antifungal = NULL)) %>% # no need to define `x`     mutate(       # now calculate first isolates       first_regular = first_isolate(col_keyantimicrobials = FALSE),       # and first WEIGHTED isolates       first_weighted = first_isolate(col_keyantimicrobials = \"keyab\")     )    # Check the difference in this data set, 'weighted' results in more isolates:   sum(my_patients$first_regular, na.rm = TRUE)   sum(my_patients$first_weighted, na.rm = TRUE) } #> [1] 1383 # }"},{"path":"https://msberends.github.io/AMR/reference/kurtosis.html","id":null,"dir":"Reference","previous_headings":"","what":"Kurtosis of the Sample — kurtosis","title":"Kurtosis of the Sample — kurtosis","text":"Kurtosis measure \"tailedness\" probability distribution real-valued random variable. normal distribution kurtosis 3 excess kurtosis 0.","code":""},{"path":"https://msberends.github.io/AMR/reference/kurtosis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Kurtosis of the Sample — kurtosis","text":"","code":"kurtosis(x, na.rm = FALSE, excess = FALSE)  # Default S3 method kurtosis(x, na.rm = FALSE, excess = FALSE)  # S3 method for class 'matrix' kurtosis(x, na.rm = FALSE, excess = FALSE)  # S3 method for class 'data.frame' kurtosis(x, na.rm = FALSE, excess = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/kurtosis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Kurtosis of the Sample — kurtosis","text":"x vector values, matrix data.frame na.rm logical indicate whether NA values stripped computation proceeds excess logical indicate whether excess kurtosis returned, defined kurtosis minus 3.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/kurtosis.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Kurtosis of the Sample — kurtosis","text":"","code":"kurtosis(rnorm(10000)) #> [1] 3.018229 kurtosis(rnorm(10000), excess = TRUE) #> [1] 0.05238325"},{"path":"https://msberends.github.io/AMR/reference/like.html","id":null,"dir":"Reference","previous_headings":"","what":"Vectorised Pattern Matching with Keyboard Shortcut — like","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"Convenient wrapper around grepl() match pattern: x %like% pattern. always returns logical vector always case-insensitive (use x %like_case% pattern case-sensitive matching). Also, pattern can long x compare items index vectors, can length iterate cases.","code":""},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"","code":"like(x, pattern, ignore.case = TRUE)  x %like% pattern  x %unlike% pattern  x %like_case% pattern  x %unlike_case% pattern"},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"Idea like function data.table package, although altered explained Details.","code":""},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"x character vector matches sought, object can coerced .character() character vector. pattern character vector containing regular expressions (character string fixed = TRUE) matched given character vector. Coerced .character() character string possible. ignore.case FALSE, pattern matching case sensitive TRUE, case ignored matching.","code":""},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"logical vector","code":""},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"like() %like%/%unlike% functions: case-insensitive (use %like_case%/%unlike_case% case-sensitive matching) Support multiple patterns Check pattern valid regular expression sets fixed = TRUE , greatly improve speed (vectorised pattern) Always use compatibility Perl unless fixed = TRUE, greatly improve speed Using RStudio? %like%/%unlike% functions can also directly inserted code Addins menu can keyboard shortcut like Shift+Ctrl+L Shift+Cmd+L (see menu Tools > Modify Keyboard Shortcuts...). keep pressing shortcut, inserted text iterated %like% -> %unlike% -> %like_case% -> %unlike_case%.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"","code":"# data.table has a more limited version of %like%, so unload it: try(detach(\"package:data.table\", unload = TRUE), silent = TRUE)  a <- \"This is a test\" b <- \"TEST\" a %like% b #> [1] TRUE b %like% a #> [1] FALSE  # also supports multiple patterns a <- c(\"Test case\", \"Something different\", \"Yet another thing\") b <- c(\"case\", \"diff\", \"yet\") a %like% b #> [1] TRUE TRUE TRUE a %unlike% b #> [1] FALSE FALSE FALSE  a[1] %like% b #> [1]  TRUE FALSE FALSE a %like% b[1] #> [1]  TRUE FALSE FALSE  # \\donttest{ # get isolates whose name start with 'Entero' (case-insensitive) example_isolates[which(mo_name() %like% \"^entero\"), ] #> ℹ Using column 'mo' as input for mo_name() #> # A tibble: 106 × 46 #>    date       patient   age gender ward    mo            PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>   <mo>          <sir> <sir> <sir> <sir> #>  1 2002-02-21 4FC193     69 M      Clinic… B_ENTRC_FACM    NA    NA    NA    NA  #>  2 2002-04-08 130252     78 M      ICU     B_ENTRC_FCLS    NA    NA    NA    NA  #>  3 2002-06-23 798871     82 M      Clinic… B_ENTRC_FCLS    NA    NA    NA    NA  #>  4 2002-06-23 798871     82 M      Clinic… B_ENTRC_FCLS    NA    NA    NA    NA  #>  5 2003-04-20 6BC362     62 M      ICU     B_ENTRC         NA    NA    NA    NA  #>  6 2003-04-21 6BC362     62 M      ICU     B_ENTRC         NA    NA    NA    NA  #>  7 2003-08-13 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #>  8 2003-08-13 F35553     52 M      ICU     B_ENTRC_FCLS    NA    NA    NA    NA  #>  9 2003-09-05 F35553     52 M      ICU     B_ENTRC         NA    NA    NA    NA  #> 10 2003-09-05 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #> # ℹ 96 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  if (require(\"dplyr\")) {   example_isolates %>%     filter(mo_name() %like% \"^ent\") } #> ℹ Using column 'mo' as input for mo_name() #> # A tibble: 106 × 46 #>    date       patient   age gender ward    mo            PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>   <mo>          <sir> <sir> <sir> <sir> #>  1 2002-02-21 4FC193     69 M      Clinic… B_ENTRC_FACM    NA    NA    NA    NA  #>  2 2002-04-08 130252     78 M      ICU     B_ENTRC_FCLS    NA    NA    NA    NA  #>  3 2002-06-23 798871     82 M      Clinic… B_ENTRC_FCLS    NA    NA    NA    NA  #>  4 2002-06-23 798871     82 M      Clinic… B_ENTRC_FCLS    NA    NA    NA    NA  #>  5 2003-04-20 6BC362     62 M      ICU     B_ENTRC         NA    NA    NA    NA  #>  6 2003-04-21 6BC362     62 M      ICU     B_ENTRC         NA    NA    NA    NA  #>  7 2003-08-13 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #>  8 2003-08-13 F35553     52 M      ICU     B_ENTRC_FCLS    NA    NA    NA    NA  #>  9 2003-09-05 F35553     52 M      ICU     B_ENTRC         NA    NA    NA    NA  #> 10 2003-09-05 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #> # ℹ 96 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … # }"},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"Determine isolates multidrug-resistant organisms (MDRO) according international, national, custom guidelines.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"","code":"mdro(x = NULL, guideline = \"CMI2012\", col_mo = NULL, esbl = NA,   carbapenemase = NA, mecA = NA, mecC = NA, vanA = NA, vanB = NA,   info = interactive(), pct_required_classes = 0.5, combine_SI = TRUE,   verbose = FALSE, only_sir_columns = FALSE, ...)  custom_mdro_guideline(..., as_factor = TRUE)  brmo(x = NULL, only_sir_columns = FALSE, ...)  mrgn(x = NULL, only_sir_columns = FALSE, verbose = FALSE, ...)  mdr_tb(x = NULL, only_sir_columns = FALSE, verbose = FALSE, ...)  mdr_cmi2012(x = NULL, only_sir_columns = FALSE, verbose = FALSE, ...)  eucast_exceptional_phenotypes(x = NULL, only_sir_columns = FALSE,   verbose = FALSE, ...)"},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"See supported guidelines list publications used function.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"x data.frame antibiotics columns, like AMX amox. Can left blank automatic determination. guideline specific guideline follow, see sections Supported international / national guidelines Using Custom Guidelines . left empty, publication Magiorakos et al. (see ) followed. col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). esbl logical values, column name containing logical values, indicating presence ESBL gene (production proteins) carbapenemase logical values, column name containing logical values, indicating presence carbapenemase gene (production proteins) mecA logical values, column name containing logical values, indicating presence mecA gene (production proteins) mecC logical values, column name containing logical values, indicating presence mecC gene (production proteins) vanA logical values, column name containing logical values, indicating presence vanA gene (production proteins) vanB logical values, column name containing logical values, indicating presence vanB gene (production proteins) info logical indicate whether progress printed console - default print interactive sessions pct_required_classes minimal required percentage antimicrobial classes must available per isolate, rounded . example, default guideline, 17 antimicrobial classes must available S. aureus. Setting pct_required_classes argument 0.5 (default) means every S. aureus isolate least 8 different classes must available. lower number available classes return NA isolate. combine_SI logical indicate whether values S must merged one, resistance considered isolates R, . default behaviour mdro() function, follows redefinition EUCAST interpretation (increased exposure) 2019, see section 'Interpretation S, R' . using combine_SI = FALSE, resistance considered isolates R . verbose logical turn Verbose mode (default ). Verbose mode, function return MDRO results, instead returns data set logbook form extensive info isolates MDRO-positive, . only_sir_columns logical indicate whether antibiotic columns must detected transformed class sir (see .sir()) beforehand (default FALSE) ... case custom_mdro_guideline(): set rules, see section Using Custom Guidelines . Otherwise: column name antibiotic, see section Antibiotics . as_factor logical indicate whether returned value ordered factor (TRUE, default), otherwise character vector","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"CMI 2012 paper - function mdr_cmi2012() mdro(): Ordered factor levels Negative < Multi-drug-resistant (MDR) < Extensively drug-resistant (XDR) < Pandrug-resistant (PDR) TB guideline - function mdr_tb() mdro(..., guideline = \"TB\"): Ordered factor levels Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant < Extensively drug-resistant German guideline - function mrgn() mdro(..., guideline = \"MRGN\"): Ordered factor levels Negative < 3MRGN < 4MRGN Everything else, except custom guidelines: Ordered factor levels Negative < Positive, unconfirmed < Positive. value \"Positive, unconfirmed\" means , according guideline, entirely sure isolate multi-drug resistant confirmed additional (e.g. molecular) tests","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"functions context-aware. means x argument can left blank used inside data.frame call, see Examples. pct_required_classes argument, values 1 divided 100. support fractions (0.75 3/4) percentages (75). Note: Every test involves Enterobacteriaceae family, internally performed using newly named order Enterobacterales, since Enterobacteriaceae family taxonomically reclassified Adeolu et al. 2016. , Enterobacteriaceae family Enterobacteriales () order. species old Enterobacteriaceae family still new Enterobacterales (without ) order, divided multiple families. way tests performed now mdro() function makes sure results 2016 2016 identical.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"supported-international-national-guidelines","dir":"Reference","previous_headings":"","what":"Supported International / National Guidelines","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"Currently supported guidelines (case-insensitive): guideline = \"CMI2012\" (default) Magiorakos AP, Srinivasan et al. \"Multidrug-resistant, extensively drug-resistant pandrug-resistant bacteria: international expert proposal interim standard definitions acquired resistance.\" Clinical Microbiology Infection (2012) (doi:10.1111/j.1469-0691.2011.03570.x ) guideline = \"EUCAST3.3\" (simply guideline = \"EUCAST\") European international guideline - EUCAST Expert Rules Version 3.3 \"Intrinsic Resistance Unusual Phenotypes\" (link) guideline = \"EUCAST3.2\" European international guideline - EUCAST Expert Rules Version 3.2 \"Intrinsic Resistance Unusual Phenotypes\" (link) guideline = \"EUCAST3.1\" European international guideline - EUCAST Expert Rules Version 3.1 \"Intrinsic Resistance Exceptional Phenotypes Tables\" (link) guideline = \"TB\" international guideline multi-drug resistant tuberculosis - World Health Organization \"Companion handbook guidelines programmatic management drug-resistant tuberculosis\" (link) guideline = \"MRGN\" German national guideline - Mueller et al. (2015) Antimicrobial Resistance Infection Control 4:7; doi:10.1186/s13756-015-0047-6 guideline = \"BRMO\" Dutch national guideline - Samenwerkingverband Richtlijnen Infectiepreventie (SRI) (2024) \"Bijzonder Resistente Micro-Organismen (BRMO)\" (link) Also: guideline = \"BRMO 2017\" former Dutch national guideline - Werkgroep Infectiepreventie (WIP), RIVM, last revision 2017: \"Bijzonder Resistente Micro-Organismen (BRMO)\" Please suggest implement guidelines letting us know: https://github.com/msberends/AMR/issues/new.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"using-custom-guidelines","dir":"Reference","previous_headings":"","what":"Using Custom Guidelines","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"Custom guidelines can set custom_mdro_guideline() function. great importance custom rules determine MDROs hospital, e.g., rules dependent ward, state contact isolation variables data. familiar case_when() function dplyr package, recognise input method set rules. Rules must set using R considers 'formula notation'. rule written tilde (~) consequence rule written tilde:   row/isolate matches first rule, value first ~ (case 'Elderly Type ') set MDRO value. Otherwise, second rule tried . number rules unlimited. can print rules set console overview. Colours help reading console supports colours.   outcome function can used guideline argument mdro() function:   Rules can also combined custom rules using c():   rules set (custom object case) exported shared file location using saveRDS() collaborate multiple users. custom rules set imported using readRDS().","code":"custom <- custom_mdro_guideline(CIP == \"R\" & age > 60 ~ \"Elderly Type A\",                                 ERY == \"R\" & age > 60 ~ \"Elderly Type B\") custom #> A set of custom MDRO rules: #>   1. CIP is \"R\" and age is higher than 60 -> Elderly Type A #>   2. ERY is \"R\" and age is higher than 60 -> Elderly Type B #>   3. Otherwise -> Negative #> #> Unmatched rows will return NA. x <- mdro(example_isolates,           guideline = custom) table(x) #>       Negative Elderly Type A Elderly Type B #>           1070            198            732 x <- mdro(example_isolates,           guideline = c(custom,                         custom_mdro_guideline(ERY == \"R\" & age > 50 ~ \"Elderly Type C\"))) table(x) #>       Negative Elderly Type A Elderly Type B Elderly Type C #>            961            198            732            109"},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"antibiotics","dir":"Reference","previous_headings":"","what":"Antibiotics","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"define antibiotics column names, leave determine automatically guess_ab_col() input text (case-insensitive), use NULL skip column (e.g. TIC = NULL skip ticarcillin). Manually defined non-existing columns skipped warning. following antibiotics eligible functions eucast_rules() mdro(). shown format 'name (antimicrobial ID, ATC code)', sorted alphabetically: Amikacin (AMK, J01GB06), amoxicillin (AMX, J01CA04), amoxicillin/clavulanic acid (AMC, J01CR02), ampicillin (AMP, J01CA01), ampicillin/sulbactam (SAM, J01CR01), apramycin (APR, QA07AA92), arbekacin (ARB, J01GB12), aspoxicillin (APX, J01CA19), azidocillin (AZD, J01CE04), azithromycin (AZM, J01FA10), azlocillin (AZL, J01CA09), aztreonam (ATM, J01DF01), bacampicillin (BAM, J01CA06), bekanamycin (BEK, J01GB13), benzathine benzylpenicillin (BNB, J01CE08), benzathine phenoxymethylpenicillin (BNP, J01CE10), benzylpenicillin (PEN, J01CE01), besifloxacin (BES, S01AE08), biapenem (BIA, J01DH05), carbenicillin (CRB, J01CA03), carindacillin (CRN, J01CA05), carumonam (CAR, J01DF02), cefacetrile (CAC, J01DB10), cefaclor (CEC, J01DC04), cefadroxil (CFR, J01DB05), cefalexin (LEX, J01DB01), cefaloridine (RID, J01DB02), cefalotin (CEP, J01DB03), cefamandole (MAN, J01DC03), cefapirin (HAP, J01DB08), cefatrizine (CTZ, J01DB07), cefazedone (CZD, J01DB06), cefazolin (CZO, J01DB04), cefcapene (CCP, J01DD17), cefdinir (CDR, J01DD15), cefditoren (DIT, J01DD16), cefepime (FEP, J01DE01), cefepime/amikacin (CFA, J01RA06), cefetamet (CAT, J01DD10), cefiderocol (FDC, J01DI04), cefixime (CFM, J01DD08), cefmenoxime (CMX, J01DD05), cefmetazole (CMZ, J01DC09), cefodizime (DIZ, J01DD09), cefonicid (CID, J01DC06), cefoperazone (CFP, J01DD12), cefoperazone/sulbactam (CSL, J01DD62), ceforanide (CND, J01DC11), cefotaxime (CTX, J01DD01), cefotaxime/clavulanic acid (CTC, J01DD51), cefotetan (CTT, J01DC05), cefotiam (CTF, J01DC07), cefovecin (FOV, QJ01DD91), cefoxitin (FOX, J01DC01), cefozopran (ZOP, J01DE03), cefpiramide (CPM, J01DD11), cefpirome (CPO, J01DE02), cefpodoxime (CPD, J01DD13), cefprozil (CPR, J01DC10), cefquinome (CEQ, QG51AA07), cefroxadine (CRD, J01DB11), cefsulodin (CFS, J01DD03), ceftaroline (CPT, J01DI02), ceftazidime (CAZ, J01DD02), ceftazidime/clavulanic acid (CCV, J01DD52), cefteram (CEM, J01DD18), ceftezole (CTL, J01DB12), ceftibuten (CTB, J01DD14), ceftiofur (TIO, QJ01DD90), ceftizoxime (CZX, J01DD07), ceftobiprole medocaril (CFM1, J01DI01), ceftolozane/tazobactam (CZT, J01DI54), ceftriaxone (CRO, J01DD04), ceftriaxone/beta-lactamase inhibitor (CEB, J01DD63), cefuroxime (CXM, J01DC02), cephradine (CED, J01DB09), chloramphenicol (CHL, J01BA01), ciprofloxacin (CIP, J01MA02), clarithromycin (CLR, J01FA09), clindamycin (CLI, J01FF01), clometocillin (CLM, J01CE07), cloxacillin (CLO, J01CF02), colistin (COL, J01XB01), cycloserine (CYC, J04AB01), dalbavancin (DAL, J01XA04), danofloxacin (DAN, QJ01MA92), daptomycin (DAP, J01XX09), delafloxacin (DFX, J01MA23), dibekacin (DKB, J01GB09), dicloxacillin (DIC, J01CF01), difloxacin (DIF, QJ01MA94), dirithromycin (DIR, J01FA13), doripenem (DOR, J01DH04), doxycycline (DOX, J01AA02), enoxacin (ENX, J01MA04), enrofloxacin (ENR, QJ01MA90), epicillin (EPC, J01CA07), ertapenem (ETP, J01DH03), erythromycin (ERY, J01FA01), fleroxacin (FLE, J01MA08), flucloxacillin (FLC, J01CF05), flurithromycin (FLR1, J01FA14), fosfomycin (FOS, J01XX01), framycetin (FRM, D09AA01), fusidic acid (FUS, J01XC01), gamithromycin (GAM, QJ01FA95), garenoxacin (GRN, J01MA19), gatifloxacin (GAT, J01MA16), gemifloxacin (GEM, J01MA15), gentamicin (GEN, J01GB03), grepafloxacin (GRX, J01MA11), hetacillin (HET, J01CA18), imipenem (IPM, J01DH51), imipenem/relebactam (IMR, J01DH56), isepamicin (ISE, J01GB11), josamycin (JOS, J01FA07), kanamycin (KAN, J01GB04), kitasamycin (KIT, QJ01FA93), lascufloxacin (LSC, J01MA25), latamoxef (LTM, J01DD06), levofloxacin (LVX, J01MA12), levonadifloxacin (LND, J01MA24), lincomycin (LIN, J01FF02), linezolid (LNZ, J01XX08), lomefloxacin (LOM, J01MA07), loracarbef (LOR, J01DC08), marbofloxacin (MAR, QJ01MA93), mecillinam (MEC, J01CA11), meropenem (MEM, J01DH02), meropenem/vaborbactam (MEV, J01DH52), metampicillin (MTM, J01CA14), meticillin (MET, J01CF03), mezlocillin (MEZ, J01CA10), micronomicin (MCR, S01AA22), midecamycin (MID, J01FA03), minocycline (MNO, J01AA08), miocamycin (MCM, J01FA11), moxifloxacin (MFX, J01MA14), nadifloxacin (NAD, D10AF05), nafcillin (NAF, J01CF06), nalidixic acid (NAL, J01MB02), neomycin (NEO, J01GB05), netilmicin (NET, J01GB07), nitrofurantoin (NIT, J01XE01), norfloxacin (, J01MA06), novobiocin (NOV, QJ01XX95), ofloxacin (OFX, J01MA01), oleandomycin (OLE, J01FA05), orbifloxacin (ORB, QJ01MA95), oritavancin (ORI, J01XA05), oxacillin (OXA, J01CF04), panipenem (PAN, J01DH55), pazufloxacin (PAZ, J01MA18), pefloxacin (PEF, J01MA03), penamecillin (PNM, J01CE06), pheneticillin (PHE, J01CE05), phenoxymethylpenicillin (PHN, J01CE02), piperacillin (PIP, J01CA12), piperacillin/tazobactam (TZP, J01CR05), pirlimycin (PRL, QJ51FF90), pivampicillin (PVM, J01CA02), pivmecillinam (PME, J01CA08), plazomicin (PLZ, J01GB14), polymyxin B (PLB, J01XB02), pradofloxacin (PRA, QJ01MA97), pristinamycin (PRI, J01FG01), procaine benzylpenicillin (PRB, J01CE09), propicillin (PRP, J01CE03), prulifloxacin (PRU, J01MA17), quinupristin/dalfopristin (QDA, QJ01FG02), ribostamycin (RST, J01GB10), rifampicin (RIF, J04AB02), rokitamycin (ROK, J01FA12), roxithromycin (RXT, J01FA06), rufloxacin (RFL, J01MA10), sarafloxacin (SAR, QJ01MA98), sisomicin (SIS, J01GB08), sitafloxacin (SIT, J01MA21), solithromycin (SOL, J01FA16), sparfloxacin (SPX, J01MA09), spiramycin (SPI, J01FA02), streptoduocin (STR, J01GA02), streptomycin (STR1, J01GA01), sulbenicillin (SBC, J01CA16), sulfadiazine (SDI, J01EC02), sulfadiazine/trimethoprim (SLT1, J01EE02), sulfadimethoxine (SUD, J01ED01), sulfadimidine (SDM, J01EB03), sulfadimidine/trimethoprim (SLT2, J01EE05), sulfafurazole (SLF, J01EB05), sulfaisodimidine (SLF1, J01EB01), sulfalene (SLF2, J01ED02), sulfamazone (SZO, J01ED09), sulfamerazine (SLF3, J01ED07), sulfamerazine/trimethoprim (SLT3, J01EE07), sulfamethizole (SLF4, J01EB02), sulfamethoxazole (SMX, J01EC01), sulfamethoxypyridazine (SLF5, J01ED05), sulfametomidine (SLF6, J01ED03), sulfametoxydiazine (SLF7, J01ED04), sulfametrole/trimethoprim (SLT4, J01EE03), sulfamoxole (SLF8, J01EC03), sulfamoxole/trimethoprim (SLT5, J01EE04), sulfanilamide (SLF9, J01EB06), sulfaperin (SLF10, J01ED06), sulfaphenazole (SLF11, J01ED08), sulfapyridine (SLF12, J01EB04), sulfathiazole (SUT, J01EB07), sulfathiourea (SLF13, J01EB08), sultamicillin (SLT6, J01CR04), talampicillin (TAL, J01CA15), tebipenem (TBP, J01DH06), tedizolid (TZD, J01XX11), teicoplanin (TEC, J01XA02), telavancin (TLV, J01XA03), telithromycin (TLT, J01FA15), temafloxacin (TMX, J01MA05), temocillin (TEM, J01CA17), tetracycline (TCY, J01AA07), ticarcillin (TIC, J01CA13), ticarcillin/clavulanic acid (TCC, J01CR03), tigecycline (TGC, J01AA12), tilbroquinol (TBQ, P01AA05), tildipirosin (TIP, QJ01FA96), tilmicosin (TIL, QJ01FA91), tobramycin (TOB, J01GB01), tosufloxacin (TFX, J01MA22), trimethoprim (TMP, J01EA01), trimethoprim/sulfamethoxazole (SXT, J01EE01), troleandomycin (TRL, J01FA08), trovafloxacin (TVA, J01MA13), tulathromycin (TUL, QJ01FA94), tylosin (TYL, QJ01FA90), tylvalosin (TYL1, QJ01FA92), vancomycin (VAN, J01XA01)","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"","code":"out <- mdro(example_isolates, guideline = \"EUCAST\") str(out) #>  Ord.factor w/ 3 levels \"Negative\"<\"Positive, unconfirmed\"<..: 1 1 1 1 1 1 1 1 1 1 ... table(out) #> out #>              Negative Positive, unconfirmed              Positive  #>                  1994                     0                     6   out <- mdro(example_isolates,   guideline = custom_mdro_guideline(     AMX == \"R\" ~ \"Custom MDRO 1\",     VAN == \"R\" ~ \"Custom MDRO 2\"   ) ) table(out) #> out #>      Negative Custom MDRO 1 Custom MDRO 2  #>           870           804           326   # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     mdro() %>%     table()    # no need to define `x` when used inside dplyr verbs:   example_isolates %>%     mutate(MDRO = mdro()) %>%     pull(MDRO) %>%     table() } #> Warning: in mdro(): NA introduced for isolates where the available percentage of #> antimicrobial classes was below 50% (set with pct_required_classes) #> Warning: There was 1 warning in `mutate()`. #> ℹ In argument: `MDRO = mdro()`. #> Caused by warning: #> ! in mdro(): NA introduced for isolates where the available percentage of #> antimicrobial classes was below 50% (set with pct_required_classes) #> . #>                         Negative       Multi-drug-resistant (MDR)  #>                             1617                              128  #> Extensively drug-resistant (XDR)          Pandrug-resistant (PDR)  #>                                0                                0  # }"},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the Mean AMR Distance — mean_amr_distance","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"Calculates normalised mean antimicrobial resistance multiple observations, help identify similar isolates without comparing antibiograms hand.","code":""},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"","code":"mean_amr_distance(x, ...)  # S3 method for class 'sir' mean_amr_distance(x, ..., combine_SI = TRUE)  # S3 method for class 'data.frame' mean_amr_distance(x, ..., combine_SI = TRUE)  amr_distance_from_row(amr_distance, row)"},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"x vector class sir, mic disk, data.frame containing columns classes ... variables select (supports tidyselect language column1:column4 (.mic), can thus also antimicrobial selectors combine_SI logical indicate whether values S, SDD, must merged one, input consists S+vs. R (susceptible vs. resistant) - default TRUE amr_distance outcome mean_amr_distance() row index, row number","code":""},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"mean AMR distance effectively Z-score; normalised numeric value compare AMR test results can help identify similar isolates, without comparing antibiograms hand. MIC values (see .mic()) transformed log2() first; distance thus calculated (log2(x) - mean(log2(x))) / sd(log2(x)). SIR values (see .sir()) transformed using \"S\" = 1, \"\" = 2, \"R\" = 3. combine_SI TRUE (default), \"\" considered 1. data sets, mean AMR distance calculated per column, mean per row returned, see Examples. Use amr_distance_from_row() subtract distances distance one row, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"interpretation","dir":"Reference","previous_headings":"","what":"Interpretation","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"Isolates distances less 0.01 difference considered similar. Differences lower 0.025 considered suspicious.","code":""},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"","code":"sir <- random_sir(10) sir #> Class 'sir' #>  [1] S S I I I S S S R R mean_amr_distance(sir) #>  [1] -0.4743416 -0.4743416 -0.4743416 -0.4743416 -0.4743416 -0.4743416 #>  [7] -0.4743416 -0.4743416  1.8973666  1.8973666  mic <- random_mic(10) mic #> Class 'mic' #>  [1] 0.025 1     0.001 8     0.5   16    64    128   4     64    mean_amr_distance(mic) #>  [1] -1.1967905 -0.2158758 -2.0527259  0.3370712 -0.4001915  0.5213868 #>  [7]  0.8900182  1.0743338  0.1527555  0.8900182 # equal to the Z-score of their log2: (log2(mic) - mean(log2(mic))) / sd(log2(mic)) #>  [1] -1.1967905 -0.2158758 -2.0527259  0.3370712 -0.4001915  0.5213868 #>  [7]  0.8900182  1.0743338  0.1527555  0.8900182  disk <- random_disk(10) disk #> Class 'disk' #>  [1] 42  8 24 15 32 45 46 42 49 14 mean_amr_distance(disk) #>  [1]  0.67331608 -1.54928069 -0.50335280 -1.09168723  0.01961115  0.86942756 #>  [7]  0.93479805  0.67331608  1.13090953 -1.15705773  y <- data.frame(   id = LETTERS[1:10],   amox = random_sir(10, ab = \"amox\", mo = \"Escherichia coli\"),   cipr = random_disk(10, ab = \"cipr\", mo = \"Escherichia coli\"),   gent = random_mic(10, ab = \"gent\", mo = \"Escherichia coli\"),   tobr = random_mic(10, ab = \"tobr\", mo = \"Escherichia coli\") ) y #>    id amox cipr gent tobr #> 1   A    R   27    8  0.5 #> 2   B    I   21    8    4 #> 3   C    S   22    2    1 #> 4   D    R   22    4    4 #> 5   E    S   19    8  0.5 #> 6   F    S   30    2    2 #> 7   G    R   20   16    4 #> 8   H    R   27    4    2 #> 9   I    S   20    1    1 #> 10  J    R   17   16    4 mean_amr_distance(y) #> ℹ Calculating mean AMR distance based on columns \"amox\", \"cipr\", \"gent\", #>   and \"tobr\" #>  [1]  0.27346725  0.04720942 -0.67302993  0.39497313 -0.68358519  0.01305317 #>  [7]  0.64812902  0.49329507 -0.98062442  0.46711247 y$amr_distance <- mean_amr_distance(y, where(is.mic)) #> Error in .subset(x, j): invalid subscript type 'list' y[order(y$amr_distance), ] #> Error in order(y$amr_distance): argument 1 is not a vector  if (require(\"dplyr\")) {   y %>%     mutate(       amr_distance = mean_amr_distance(y),       check_id_C = amr_distance_from_row(amr_distance, id == \"C\")     ) %>%     arrange(check_id_C) } #> ℹ Calculating mean AMR distance based on columns \"amox\", \"cipr\", \"gent\", #>   and \"tobr\" #>    id amox cipr gent tobr amr_distance check_id_C #> 1   C    S   22    2    1  -0.67302993 0.00000000 #> 2   E    S   19    8  0.5  -0.68358519 0.01055526 #> 3   I    S   20    1    1  -0.98062442 0.30759449 #> 4   F    S   30    2    2   0.01305317 0.68608310 #> 5   B    I   21    8    4   0.04720942 0.72023935 #> 6   A    R   27    8  0.5   0.27346725 0.94649718 #> 7   D    R   22    4    4   0.39497313 1.06800305 #> 8   J    R   17   16    4   0.46711247 1.14014240 #> 9   H    R   27    4    2   0.49329507 1.16632499 #> 10  G    R   20   16    4   0.64812902 1.32115894 if (require(\"dplyr\")) {   # support for groups   example_isolates %>%     filter(mo_genus() == \"Enterococcus\" & mo_species() != \"\") %>%     select(mo, TCY, carbapenems()) %>%     group_by(mo) %>%     mutate(dist = mean_amr_distance(.)) %>%     arrange(mo, dist) } #> ℹ Using column 'mo' as input for mo_genus() #> ℹ Using column 'mo' as input for mo_species() #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ Calculating mean AMR distance based on columns \"TCY\", \"IPM\", and \"MEM\" #> # A tibble: 63 × 5 #> # Groups:   mo [4] #>    mo           TCY   IPM   MEM     dist #>    <mo>         <sir> <sir> <sir>  <dbl> #>  1 B_ENTRC_AVIM   S     S     NA   0     #>  2 B_ENTRC_AVIM   S     S     NA   0     #>  3 B_ENTRC_CSSL   NA    S     NA  NA     #>  4 B_ENTRC_FACM   S     S     NA  -2.66  #>  5 B_ENTRC_FACM   S     R     R   -0.423 #>  6 B_ENTRC_FACM   S     R     R   -0.423 #>  7 B_ENTRC_FACM   NA    R     R    0.224 #>  8 B_ENTRC_FACM   NA    R     R    0.224 #>  9 B_ENTRC_FACM   NA    R     R    0.224 #> 10 B_ENTRC_FACM   NA    R     R    0.224 #> # ℹ 53 more rows"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"data set containing commonly used codes microorganisms, laboratory systems WHONET. Define set_mo_source(). searched using .mo() consequently mo_* functions.","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"","code":"microorganisms.codes"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"tibble 4 971 observations 2 variables: code Commonly used code microorganism. unique identifier. mo ID microorganism microorganisms data set","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"","code":"microorganisms.codes #> # A tibble: 4,971 × 2 #>    code  mo                #>    <chr> <mo>              #>  1 1011  B_GRAMP           #>  2 1012  B_GRAMP           #>  3 1013  B_GRAMN           #>  4 1014  B_GRAMN           #>  5 1015  F_YEAST           #>  6 103   B_ESCHR_COLI      #>  7 104   B_SLMNL_ENTR_ENTR #>  8 1100  B_STRPT           #>  9 1101  B_STRPT_VIRI      #> 10 1102  B_STRPT_HAEM      #> # ℹ 4,961 more rows  # 'ECO' or 'eco' is the WHONET code for E. coli: microorganisms.codes[microorganisms.codes$code == \"ECO\", ] #> # A tibble: 1 × 2 #>   code  mo           #>   <chr> <mo>         #> 1 ECO   B_ESCHR_COLI  # and therefore, 'eco' will be understood as E. coli in this package: mo_info(\"eco\") #> $mo #> [1] \"B_ESCHR_COLI\" #>  #> $rank #> [1] \"species\" #>  #> $kingdom #> [1] \"Bacteria\" #>  #> $phylum #> [1] \"Pseudomonadota\" #>  #> $class #> [1] \"Gammaproteobacteria\" #>  #> $order #> [1] \"Enterobacterales\" #>  #> $family #> [1] \"Enterobacteriaceae\" #>  #> $genus #> [1] \"Escherichia\" #>  #> $species #> [1] \"coli\" #>  #> $subspecies #> [1] \"\" #>  #> $status #> [1] \"accepted\" #>  #> $synonyms #> NULL #>  #> $gramstain #> [1] \"Gram-negative\" #>  #> $oxygen_tolerance #> [1] \"facultative anaerobe\" #>  #> $url #> [1] \"https://lpsn.dsmz.de/species/escherichia-coli\" #>  #> $ref #> [1] \"Castellani et al., 1919\" #>  #> $snomed #>  [1] \"1095001000112106\" \"715307006\"        \"737528008\"        \"416989002\"        #>  [5] \"116397003\"        \"414097009\"        \"414098004\"        \"414099007\"        #>  [9] \"414100004\"        \"116395006\"        \"735270003\"        \"116396007\"        #> [13] \"83285000\"         \"116394005\"        \"112283007\"        \"710886005\"        #> [17] \"710887001\"        \"710888006\"        \"710889003\"        \"414132004\"        #> [21] \"721892009\"        \"416812001\"        \"416740004\"        \"417216001\"        #> [25] \"457541006\"        \"710253004\"        \"416530004\"        \"417189006\"        #> [29] \"409800005\"        \"713925008\"        \"444771000124108\"  \"838549008\"        #>  #> $lpsn #> [1] \"776057\" #>  #> $mycobank #> [1] NA #>  #> $gbif #> [1] \"11286021\" #>  #> $group_members #> character(0) #>   # works for all AMR functions: mo_is_intrinsic_resistant(\"eco\", ab = \"vancomycin\") #> [1] TRUE"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"data set containing species groups microbiological complexes, used clinical breakpoints table.","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"","code":"microorganisms.groups"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"tibble 521 observations 4 variables: mo_group ID species group / microbiological complex mo ID microorganism belonging species group / microbiological complex mo_group_name Name species group / microbiological complex, retrieved mo_name() mo_name Name microorganism belonging species group / microbiological complex, retrieved mo_name()","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"","code":"microorganisms.groups #> # A tibble: 521 × 4 #>    mo_group       mo           mo_group_name                   mo_name           #>    <mo>           <mo>         <chr>                           <chr>             #>  1 B_ACNTB_BMNN-C B_ACNTB_BMNN Acinetobacter baumannii complex Acinetobacter ba… #>  2 B_ACNTB_BMNN-C B_ACNTB_CLCC Acinetobacter baumannii complex Acinetobacter ca… #>  3 B_ACNTB_BMNN-C B_ACNTB_LCTC Acinetobacter baumannii complex Acinetobacter di… #>  4 B_ACNTB_BMNN-C B_ACNTB_NSCM Acinetobacter baumannii complex Acinetobacter no… #>  5 B_ACNTB_BMNN-C B_ACNTB_PITT Acinetobacter baumannii complex Acinetobacter pi… #>  6 B_ACNTB_BMNN-C B_ACNTB_SFRT Acinetobacter baumannii complex Acinetobacter se… #>  7 B_BCTRD_FRGL-C B_BCTRD_FRGL Bacteroides fragilis complex    Bacteroides frag… #>  8 B_BCTRD_FRGL-C B_BCTRD_OVTS Bacteroides fragilis complex    Bacteroides ovat… #>  9 B_BCTRD_FRGL-C B_BCTRD_THTT Bacteroides fragilis complex    Bacteroides thet… #> 10 B_BCTRD_FRGL-C B_PHCCL_VLGT Bacteroides fragilis complex    Bacteroides vulg… #> # ℹ 511 more rows  # these are all species in the Bacteroides fragilis group, as per WHONET: microorganisms.groups[microorganisms.groups$mo_group == \"B_BCTRD_FRGL-C\", ] #> # A tibble: 5 × 4 #>   mo_group       mo           mo_group_name                mo_name               #>   <mo>           <mo>         <chr>                        <chr>                 #> 1 B_BCTRD_FRGL-C B_BCTRD_FRGL Bacteroides fragilis complex Bacteroides fragilis  #> 2 B_BCTRD_FRGL-C B_BCTRD_OVTS Bacteroides fragilis complex Bacteroides ovatus    #> 3 B_BCTRD_FRGL-C B_BCTRD_THTT Bacteroides fragilis complex Bacteroides thetaiot… #> 4 B_BCTRD_FRGL-C B_PHCCL_VLGT Bacteroides fragilis complex Bacteroides vulgatus  #> 5 B_BCTRD_FRGL-C B_PRBCT_DSTS Bacteroides fragilis complex Parabacteroides dist…"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"data set containing full microbial taxonomy (last updated: June 24th, 2024) six kingdoms. data set backbone AMR package. MO codes can looked using .mo() microorganism properties can looked using mo_* functions. data set carefully crafted, yet made 100% reproducible public authoritative taxonomic sources (using script), namely: List Prokaryotic names Standing Nomenclature (LPSN) bacteria, MycoBank fungi, Global Biodiversity Information Facility (GBIF) others taxons.","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"","code":"microorganisms"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"tibble 78 678 observations 26 variables: mo ID microorganism used package. unique identifier. fullname Full name, like \"Escherichia coli\". taxonomic ranks genus, species subspecies, 'pasted' text genus, species, subspecies. taxonomic ranks higher genus, name taxon. unique identifier. status  Status taxon, either \"accepted\", \"validly published\", \"synonym\", \"unknown\" kingdom, phylum, class, order, family, genus, species, subspecies Taxonomic rank microorganism. Note fungi, phylum equal taxonomic division. Also, fungi, subkingdom subdivision left since occur bacterial taxonomy. rank Text taxonomic rank microorganism, \"species\" \"genus\" ref Author(s) year related scientific publication. contains first surname year latest authors, e.g. \"Wallis et al. 2006 emend. Smith Jones 2018\" becomes \"Smith et al., 2018\". field directly retrieved source specified column source. Moreover, accents removed comply CRAN allows ASCII characters. oxygen_tolerance  Oxygen tolerance, either \"aerobe\", \"anaerobe\", \"anaerobe/microaerophile\", \"facultative anaerobe\", \"likely facultative anaerobe\", \"microaerophile\". data retrieved BacDive (see Source). Items contain \"likely\" missing BacDive extrapolated species within genus guess oxygen tolerance. Currently 68.3% ~39 000 bacteria data set contain oxygen tolerance. source Either \"GBIF\", \"LPSN\", \"MycoBank\", \"manually added\" (see Source) lpsn Identifier ('Record number') List Prokaryotic names Standing Nomenclature (LPSN). first/highest LPSN identifier keep one identifier per row. example, Acetobacter ascendens LPSN Record number 7864 11011. first available microorganisms data set. unique identifier, though available ~33 000 records. lpsn_parent LPSN identifier parent taxon lpsn_renamed_to LPSN identifier currently valid taxon mycobank Identifier ('MycoBank #') MycoBank. unique identifier, though available ~18 000 records. mycobank_parent MycoBank identifier parent taxon mycobank_renamed_to MycoBank identifier currently valid taxon gbif Identifier ('taxonID') Global Biodiversity Information Facility (GBIF). unique identifier, though available ~49 000 records. gbif_parent GBIF identifier parent taxon gbif_renamed_to GBIF identifier currently valid taxon prevalence Prevalence microorganism based Bartlett et al. (2022, doi:10.1099/mic.0.001269 ), see mo_matching_score() full explanation snomed Systematized Nomenclature Medicine (SNOMED) code microorganism, version July 16th, 2024 (see Source). Use mo_snomed() retrieve quickly, see mo_property().","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"Taxonomic entries imported order importance: List Prokaryotic names Standing Nomenclature (LPSN): Parte, AC et al. (2020). List Prokaryotic names Standing Nomenclature (LPSN) moves DSMZ. International Journal Systematic Evolutionary Microbiology, 70, 5607-5612; doi:10.1099/ijsem.0.004332 . Accessed https://lpsn.dsmz.de June 24th, 2024. MycoBank: Vincent, R et al (2013). MycoBank gearing new horizons. IMA Fungus, 4(2), 371-9; doi:10.5598/imafungus.2013.04.02.16 . Accessed https://www.mycobank.org June 24th, 2024. Global Biodiversity Information Facility (GBIF): GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset doi:10.15468/39omei . Accessed https://www.gbif.org June 24th, 2024. Furthermore, sources used additional details: BacDive: Reimer, LC et al. (2022). BacDive 2022: knowledge base standardized bacterial archaeal data. Nucleic Acids Res., 50(D1):D741-D74; doi:10.1093/nar/gkab961 . Accessed https://bacdive.dsmz.de July 16th, 2024. Systematized Nomenclature Medicine - Clinical Terms (SNOMED-CT): Public Health Information Network Vocabulary Access Distribution System (PHIN VADS). US Edition SNOMED CT 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). Accessed https://www.cdc.gov/phin/php/phinvads/ July 16th, 2024. Grimont et al. (2007). Antigenic Formulae Salmonella Serovars, 9th Edition. Collaborating Centre Reference Research Salmonella (WHOCC-SALM). Bartlett et al. (2022). comprehensive list bacterial pathogens infecting humans Microbiology 168:001269; doi:10.1099/mic.0.001269","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"Please note entries based LPSN, MycoBank, GBIF (see ). Since sources incorporate entries based (recent) publications International Journal Systematic Evolutionary Microbiology (IJSEM), can happen year publication sometimes later one might expect. example, Staphylococcus pettenkoferi described first time Diagnostic Microbiology Infectious Disease 2002 (doi:10.1016/s0732-8893(02)00399-1 ), 2007 publication IJSEM followed (doi:10.1099/ijs.0.64381-0 ). Consequently, AMR package returns 2007 mo_year(\"S. pettenkoferi\").","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"included-taxa","dir":"Reference","previous_headings":"","what":"Included Taxa","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"Included taxonomic data LPSN, MycoBank, GBIF : ~39 000 (sub)species kingdoms Archaea Bacteria ~28 000 species kingdom Fungi. kingdom Fungi large taxon almost 300,000 different (sub)species, microbial (rather macroscopic, like mushrooms). , fungi fit scope package. relevant fungi covered (species Aspergillus, Candida, Cryptococcus, Histoplasma, Pneumocystis, Saccharomyces Trichophyton). ~8 100 (sub)species kingdom Protozoa ~1 600 (sub)species 39 relevant genera kingdom Animalia (Strongyloides Taenia) ~22 000 previously accepted names included (sub)species (taxonomically renamed) complete taxonomic tree included (sub)species: kingdom subspecies identifier parent taxons year first author related scientific publication","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"manual-additions","dir":"Reference","previous_headings":"","what":"Manual additions","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"convenience, entries added manually: ~1 500 entries Salmonella, city-like serovars groups H 36 species groups (beta-haemolytic Streptococcus groups K, coagulase-negative Staphylococcus (CoNS), Mycobacterium tuberculosis complex, etc.), group compositions stored microorganisms.groups data set 1 entry Blastocystis (B.  hominis), although officially exist (Noel et al. 2005, PMID 15634993) 1 entry Moraxella (M. catarrhalis), formally named Branhamella catarrhalis (Catlin, 1970) though change never accepted within field clinical microbiology 8 'undefined' entries (unknown, unknown Gram-negatives, unknown Gram-positives, unknown yeast, unknown fungus, unknown anaerobic Gram-pos/Gram-neg bacteria) syntax used transform original data cleansed R format, can found .","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"direct-download","dir":"Reference","previous_headings":"","what":"Direct download","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"","code":"microorganisms #> # A tibble: 78,678 × 26 #>    mo          fullname   status kingdom phylum class order family genus species #>    <mo>        <chr>      <chr>  <chr>   <chr>  <chr> <chr> <chr>  <chr> <chr>   #>  1 B_GRAMN     (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  2 B_GRAMP     (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  3 B_ANAER-NEG (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  4 B_ANAER-POS (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  5 B_ANAER     (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  6 F_FUNGUS    (unknown … unkno… Fungi   (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  7   UNKNOWN   (unknown … unkno… (unkno… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  8 P_PROTOZOAN (unknown … unkno… Protoz… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  9 F_YEAST     (unknown … unkno… Fungi   (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #> 10 F_AABRN     Aabaarnia  unkno… Fungi   Ascom… Leca… Ostr… \"\"     Aaba… \"\"      #> # ℹ 78,668 more rows #> # ℹ 16 more variables: subspecies <chr>, rank <chr>, ref <chr>, #> #   oxygen_tolerance <chr>, source <chr>, lpsn <chr>, lpsn_parent <chr>, #> #   lpsn_renamed_to <chr>, mycobank <chr>, mycobank_parent <chr>, #> #   mycobank_renamed_to <chr>, gbif <chr>, gbif_parent <chr>, #> #   gbif_renamed_to <chr>, prevalence <dbl>, snomed <list>"},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the Matching Score for Microorganisms — mo_matching_score","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"algorithm used .mo() mo_* functions determine probable match taxonomic records based user input.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"","code":"mo_matching_score(x, n)"},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"x user input value(s) n full taxonomic name, exists microorganisms$fullname","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"algorithm originally developed 2018 subsequently described : Berends MS et al. (2022). AMR: R Package Working Antimicrobial Resistance Data. Journal Statistical Software, 104(3), 1-31; doi:10.18637/jss.v104.i03 . Later, work Bartlett et al. bacterial pathogens infecting humans (2022, doi:10.1099/mic.0.001269 ) incorporated, optimalisations algorithm made.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"matching-score-for-microorganisms","dir":"Reference","previous_headings":"","what":"Matching Score for Microorganisms","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"ambiguous user input .mo() mo_* functions, returned results chosen based matching score using mo_matching_score(). matching score \\(m\\), calculated : $$m_{(x, n)} = \\frac{l_{n} - 0.5 \\cdot \\min \\begin{cases}l_{n} \\\\ \\textrm{lev}(x, n)\\end{cases}}{l_{n} \\cdot p_{n} \\cdot k_{n}}$$ : \\(x\\) user input; \\(n\\) taxonomic name (genus, species, subspecies); \\(l_n\\) length \\(n\\); \\(lev\\) Levenshtein distance function (counting insertion 1, deletion substitution 2) needed change \\(x\\) \\(n\\); \\(p_n\\) human pathogenic prevalence group \\(n\\), described ; \\(k_n\\) taxonomic kingdom \\(n\\), set Bacteria = 1, Fungi = 1.25, Protozoa = 1.5, Chromista = 1.75, Archaea = 2, others = 3. grouping human pathogenic prevalence \\(p\\) based recent work Bartlett et al. (2022, doi:10.1099/mic.0.001269 ) extensively studied medical-scientific literature categorise bacterial species groups: Established, taxonomic species infected least three persons three references. records prevalence = 1.15 microorganisms data set; Putative, taxonomic species fewer three known cases. records prevalence = 1.25 microorganisms data set. Furthermore, Genera World Health Organization's () Priority Pathogen List prevalence = 1.0 microorganisms data set; genus present established list also prevalence = 1.15 microorganisms data set; genus present putative list prevalence = 1.25 microorganisms data set; species subspecies genus present two aforementioned groups, prevalence = 1.5 microorganisms data set; non-bacterial genus, species subspecies genus present following list, prevalence = 1.25 microorganisms data set: Absidia, Acanthamoeba, Acremonium, Actinomucor, Aedes, Alternaria, Amoeba, Ancylostoma, Angiostrongylus, Anisakis, Anopheles, Apophysomyces, Arthroderma, Aspergillus, Aureobasidium, Basidiobolus, Beauveria, Bipolaris, Blastobotrys, Blastocystis, Blastomyces, Candida, Capillaria, Chaetomium, Chilomastix, Chrysonilia, Chrysosporium, Cladophialophora, Cladosporium, Clavispora, Coccidioides, Cokeromyces, Conidiobolus, Coniochaeta, Contracaecum, Cordylobia, Cryptococcus, Cryptosporidium, Cunninghamella, Curvularia, Cyberlindnera, Debaryozyma, Demodex, Dermatobia, Dientamoeba, Diphyllobothrium, Dirofilaria, Echinostoma, Entamoeba, Enterobius, Epidermophyton, Exidia, Exophiala, Exserohilum, Fasciola, Fonsecaea, Fusarium, Geotrichum, Giardia, Graphium, Haloarcula, Halobacterium, Halococcus, Hansenula, Hendersonula, Heterophyes, Histomonas, Histoplasma, Hortaea, Hymenolepis, Hypomyces, Hysterothylacium, Kloeckera, Kluyveromyces, Kodamaea, Lacazia, Leishmania, Lichtheimia, Lodderomyces, Lomentospora, Madurella, Malassezia, Malbranchea, Metagonimus, Meyerozyma, Microsporidium, Microsporum, Millerozyma, Mortierella, Mucor, Mycocentrospora, Nannizzia, Necator, Nectria, Ochroconis, Oesophagostomum, Oidiodendron, Opisthorchis, Paecilomyces, Paracoccidioides, Pediculus, Penicillium, Phaeoacremonium, Phaeomoniella, Phialophora, Phlebotomus, Phoma, Pichia, Piedraia, Pithomyces, Pityrosporum, Pneumocystis, Pseudallescheria, Pseudoscopulariopsis, Pseudoterranova, Pulex, Purpureocillium, Quambalaria, Rhinocladiella, Rhizomucor, Rhizopus, Rhodotorula, Saccharomyces, Saksenaea, Saprochaete, Sarcoptes, Scedosporium, Schistosoma, Schizosaccharomyces, Scolecobasidium, Scopulariopsis, Scytalidium, Spirometra, Sporobolomyces, Sporopachydermia, Sporothrix, Sporotrichum, Stachybotrys, Strongyloides, Syncephalastrum, Syngamus, Taenia, Talaromyces, Teleomorph, Toxocara, Trichinella, Trichobilharzia, Trichoderma, Trichomonas, Trichophyton, Trichosporon, Trichostrongylus, Trichuris, Tritirachium, Trombicula, Trypanosoma, Tunga, Ulocladium, Ustilago, Verticillium, Wallemia, Wangiella, Wickerhamomyces, Wuchereria, Yarrowia, Zygosaccharomyces; records prevalence = 2.0 microorganisms data set. calculating matching score, characters \\(x\\) \\(n\\) ignored -Z, -z, 0-9, spaces parentheses. matches sorted descending matching score user input values, top match returned. lead effect e.g., \"E. coli\" return microbial ID Escherichia coli (\\(m = 0.688\\), highly prevalent microorganism found humans) Entamoeba coli (\\(m = 0.381\\), less prevalent microorganism humans), although latter alphabetically come first.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"","code":"mo_reset_session() #> ℹ Reset 17 previously matched input values.  as.mo(\"E. coli\") #> Class 'mo' #> [1] B_ESCHR_COLI 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) #>  #> 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.  mo_matching_score(   x = \"E. coli\",   n = c(\"Escherichia coli\", \"Entamoeba coli\") ) #> [1] 0.6875000 0.3809524"},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Properties of a Microorganism — mo_property","title":"Get Properties of a Microorganism — mo_property","text":"Use functions return specific property microorganism based latest accepted taxonomy. input values evaluated internally .mo(), makes possible use microbial abbreviations, codes names input. See Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Properties of a Microorganism — mo_property","text":"","code":"mo_name(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_fullname(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_shortname(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_subspecies(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_species(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_genus(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_family(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_order(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_class(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_phylum(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_kingdom(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_domain(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_type(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_status(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_pathogenicity(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_gramstain(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_gram_negative(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_gram_positive(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_yeast(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_intrinsic_resistant(x, ab, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_oxygen_tolerance(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_anaerobic(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_snomed(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_ref(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_authors(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_year(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_lpsn(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_mycobank(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_gbif(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_rank(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_taxonomy(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_synonyms(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_current(x, language = get_AMR_locale(), ...)  mo_group_members(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_info(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_url(x, open = FALSE, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_property(x, property = \"fullname\", language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)"},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Properties of a Microorganism — mo_property","text":"x character (vector) can coerced valid microorganism code .mo(). Can left blank auto-guessing column containing microorganism codes used data set, see Examples. language language translate text like \"growth\", defaults system language (see get_AMR_locale()) keep_synonyms logical indicate old, previously valid taxonomic names must preserved corrected currently accepted names. default FALSE, return note old taxonomic names processed. default can set package option AMR_keep_synonyms, .e. options(AMR_keep_synonyms = TRUE) options(AMR_keep_synonyms = FALSE). ... arguments passed .mo(), 'minimum_matching_score', 'ignore_pattern', 'remove_from_input' ab (vector ) text can coerced valid antibiotic drug code .ab() open browse URL using browseURL() property one column names microorganisms data set: \"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\", \"snomed\", must \"shortname\"","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Properties of a Microorganism — mo_property","text":"integer case mo_year() ordered factor case mo_pathogenicity() list case mo_taxonomy(), mo_synonyms(), mo_snomed(), mo_info() logical case mo_is_anaerobic(), mo_is_gram_negative(), mo_is_gram_positive(), mo_is_intrinsic_resistant(), mo_is_yeast() named character case mo_synonyms() mo_url() character cases","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Properties of a Microorganism — mo_property","text":"functions , default, keep old taxonomic properties, synonyms automatically replaced current taxonomy. Take example Enterobacter aerogenes, initially named 1960 renamed Klebsiella aerogenes 2017: mo_genus(\"Enterobacter aerogenes\") return \"Klebsiella\" (note renaming) mo_genus(\"Enterobacter aerogenes\", keep_synonyms = TRUE) return \"Enterobacter\" (-per-session warning name outdated) mo_ref(\"Enterobacter aerogenes\") return \"Tindall et al., 2017\" (note renaming) mo_ref(\"Enterobacter aerogenes\", keep_synonyms = TRUE) return \"Hormaeche et al., 1960\" (-per-session warning name outdated) short name (mo_shortname()) returns first character genus full species, \"E. coli\", species subspecies. Exceptions abbreviations staphylococci (\"CoNS\", Coagulase-Negative Staphylococci) beta-haemolytic streptococci (\"GBS\", Group B Streptococci). Please bear mind e.g. E. coli mean Escherichia coli (kingdom Bacteria) well Entamoeba coli (kingdom Protozoa). Returning full name done using .mo() internally, giving priority bacteria human pathogens, .e. \"E. coli\" considered Escherichia coli. result, mo_fullname(mo_shortname(\"Entamoeba coli\")) returns \"Escherichia coli\". Since top-level taxonomy sometimes referred 'kingdom' sometimes 'domain', functions mo_kingdom() mo_domain() return exact results. Determination human pathogenicity (mo_pathogenicity()) strongly based Bartlett et al. (2022, doi:10.1099/mic.0.001269 ). function returns factor levels Pathogenic, Potentially pathogenic, Non-pathogenic, Unknown. Determination Gram stain (mo_gramstain()) based taxonomic kingdom phylum. Originally, Cavalier-Smith defined -called subkingdoms Negibacteria Posibacteria (2002, PMID 11837318), considered phyla Posibacteria: Actinobacteria, Chloroflexi, Firmicutes, Tenericutes. phyla later renamed Actinomycetota, Chloroflexota, Bacillota, Mycoplasmatota (2021, PMID 34694987). Bacteria phyla considered Gram-positive AMR package, except members class Negativicutes (within phylum Bacillota) Gram-negative. bacteria considered Gram-negative. Species outside kingdom Bacteria return value NA. Functions mo_is_gram_negative() mo_is_gram_positive() always return TRUE FALSE (NA input NA MO code UNKNOWN), thus always return FALSE species outside taxonomic kingdom Bacteria. Determination yeasts (mo_is_yeast()) based taxonomic kingdom class. Budding yeasts yeasts reproduce asexually process called budding, new cell develops small protrusion parent cell. Taxonomically, members phylum Ascomycota, class Saccharomycetes (also called Hemiascomycetes) Pichiomycetes. True yeasts quite specifically refers yeasts underlying order Saccharomycetales (Saccharomyces cerevisiae). Thus, microorganisms member taxonomic class Saccharomycetes Pichiomycetes, function return TRUE. returns FALSE otherwise (NA input NA MO code UNKNOWN). Determination intrinsic resistance (mo_is_intrinsic_resistant()) based intrinsic_resistant data set, based 'EUCAST Expert Rules' 'EUCAST Intrinsic Resistance Unusual Phenotypes' v3.3 (2021). mo_is_intrinsic_resistant() function can vectorised argument x (input microorganisms) ab (input antibiotics). Determination bacterial oxygen tolerance (mo_oxygen_tolerance()) based BacDive, see Source. function mo_is_anaerobic() returns TRUE oxygen tolerance \"anaerobe\", indicting obligate anaerobic species genus. always returns FALSE species outside taxonomic kingdom Bacteria. function mo_url() return direct URL online database entry, also shows scientific reference concerned species. MycoBank URL used fungi wherever available , LPSN URL bacteria wherever available, GBIF link otherwise. SNOMED codes (mo_snomed()) last updated July 16th, 2024. See Source microorganisms data set info. Old taxonomic names (-called 'synonyms') can retrieved mo_synonyms() (scientific reference name), current taxonomic name can retrieved mo_current(). functions return full names. output translated possible.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"matching-score-for-microorganisms","dir":"Reference","previous_headings":"","what":"Matching Score for Microorganisms","title":"Get Properties of a Microorganism — mo_property","text":"function uses .mo() internally, uses advanced algorithm translate arbitrary user input valid taxonomy using -called matching score. can read public algorithm MO matching score page.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Get Properties of a Microorganism — mo_property","text":"Berends MS et al. (2022). AMR: R Package Working Antimicrobial Resistance Data. Journal Statistical Software, 104(3), 1-31; doi:10.18637/jss.v104.i03 Parte, AC et al. (2020). List Prokaryotic names Standing Nomenclature (LPSN) moves DSMZ. International Journal Systematic Evolutionary Microbiology, 70, 5607-5612; doi:10.1099/ijsem.0.004332 . Accessed https://lpsn.dsmz.de June 24th, 2024. Vincent, R et al (2013). MycoBank gearing new horizons. IMA Fungus, 4(2), 371-9; doi:10.5598/imafungus.2013.04.02.16 . Accessed https://www.mycobank.org June 24th, 2024. GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset doi:10.15468/39omei . Accessed https://www.gbif.org June 24th, 2024. Reimer, LC et al. (2022). BacDive 2022: knowledge base standardized bacterial archaeal data. Nucleic Acids Res., 50(D1):D741-D74; doi:10.1093/nar/gkab961 . Accessed https://bacdive.dsmz.de July 16th, 2024. Public Health Information Network Vocabulary Access Distribution System (PHIN VADS). US Edition SNOMED CT 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: https://www.cdc.gov/phin/php/phinvads/ Bartlett et al. (2022). comprehensive list bacterial pathogens infecting humans Microbiology 168:001269; doi:10.1099/mic.0.001269","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Get Properties of a Microorganism — mo_property","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Properties of a Microorganism — mo_property","text":"","code":"# taxonomic tree -----------------------------------------------------------  mo_kingdom(\"Klebsiella pneumoniae\") #> [1] \"Bacteria\" mo_phylum(\"Klebsiella pneumoniae\") #> [1] \"Pseudomonadota\" mo_class(\"Klebsiella pneumoniae\") #> [1] \"Gammaproteobacteria\" mo_order(\"Klebsiella pneumoniae\") #> [1] \"Enterobacterales\" mo_family(\"Klebsiella pneumoniae\") #> [1] \"Enterobacteriaceae\" mo_genus(\"Klebsiella pneumoniae\") #> [1] \"Klebsiella\" mo_species(\"Klebsiella pneumoniae\") #> [1] \"pneumoniae\" mo_subspecies(\"Klebsiella pneumoniae\") #> [1] \"\"   # full names and short names -----------------------------------------------  mo_name(\"Klebsiella pneumoniae\") #> [1] \"Klebsiella pneumoniae\" mo_fullname(\"Klebsiella pneumoniae\") #> [1] \"Klebsiella pneumoniae\" mo_shortname(\"Klebsiella pneumoniae\") #> [1] \"K. pneumoniae\"   # other properties ---------------------------------------------------------  mo_pathogenicity(\"Klebsiella pneumoniae\") #> [1] Pathogenic #> Levels: Pathogenic < Potentially pathogenic < Non-pathogenic < Unknown mo_gramstain(\"Klebsiella pneumoniae\") #> [1] \"Gram-negative\" mo_snomed(\"Klebsiella pneumoniae\") #> [[1]] #> [1] \"1098101000112102\" \"446870005\"        \"1098201000112108\" \"409801009\"        #> [5] \"56415008\"         \"714315002\"        \"713926009\"        #>  mo_type(\"Klebsiella pneumoniae\") #> [1] \"Bacteria\" mo_rank(\"Klebsiella pneumoniae\") #> [1] \"species\" mo_url(\"Klebsiella pneumoniae\") #>                                Klebsiella pneumoniae  #> \"https://lpsn.dsmz.de/species/klebsiella-pneumoniae\"  mo_is_yeast(c(\"Candida\", \"Trichophyton\", \"Klebsiella\")) #> [1]  TRUE FALSE FALSE  mo_group_members(c(\"Streptococcus group A\",                    \"Streptococcus group C\",                    \"Streptococcus group G\",                    \"Streptococcus group L\")) #> $`Streptococcus Group A` #> [1] \"Streptococcus pyogenes\" #>  #> $`Streptococcus Group C` #> [1] \"Streptococcus dysgalactiae\"              #> [2] \"Streptococcus dysgalactiae dysgalactiae\" #> [3] \"Streptococcus dysgalactiae equisimilis\"  #> [4] \"Streptococcus equi\"                      #> [5] \"Streptococcus equi equi\"                 #> [6] \"Streptococcus equi ruminatorum\"          #> [7] \"Streptococcus equi zooepidemicus\"        #>  #> $`Streptococcus Group G` #> [1] \"Streptococcus canis\"                     #> [2] \"Streptococcus dysgalactiae\"              #> [3] \"Streptococcus dysgalactiae dysgalactiae\" #> [4] \"Streptococcus dysgalactiae equisimilis\"  #>  #> $`Streptococcus Group L` #> [1] \"Streptococcus dysgalactiae\"              #> [2] \"Streptococcus dysgalactiae dysgalactiae\" #> [3] \"Streptococcus dysgalactiae equisimilis\"  #>    # scientific reference -----------------------------------------------------  mo_ref(\"Klebsiella aerogenes\") #> [1] \"Tindall et al., 2017\" mo_authors(\"Klebsiella aerogenes\") #> [1] \"Tindall et al.\" mo_year(\"Klebsiella aerogenes\") #> [1] 2017 mo_synonyms(\"Klebsiella aerogenes\") #>   Hormaeche et al., 1960     Bascomb et al., 1971  #> \"Enterobacter aerogenes\"     \"Klebsiella mobilis\"  mo_lpsn(\"Klebsiella aerogenes\") #> [1] \"777146\" mo_gbif(\"Klebsiella aerogenes\") #> [1] \"9281703\" mo_mycobank(\"Candida albicans\") #> [1] \"256187\" mo_mycobank(\"Candida krusei\") #> [1] \"337013\" mo_mycobank(\"Candida krusei\", keep_synonyms = TRUE) #> Warning: Function as.mo() returned one old taxonomic name. Use as.mo(..., #> keep_synonyms = FALSE) to clean the input to currently accepted taxonomic #> names, or set the R option AMR_keep_synonyms to FALSE. This warning #> will be shown once per session. #> [1] \"268707\"   # abbreviations known in the field -----------------------------------------  mo_genus(\"MRSA\") #> [1] \"Staphylococcus\" mo_species(\"MRSA\") #> [1] \"aureus\" mo_shortname(\"VISA\") #> [1] \"S. aureus\" mo_gramstain(\"VISA\") #> [1] \"Gram-positive\"  mo_genus(\"EHEC\") #> [1] \"Escherichia\" mo_species(\"EIEC\") #> [1] \"coli\" mo_name(\"UPEC\") #> [1] \"Escherichia coli\"   # known subspecies ---------------------------------------------------------  mo_fullname(\"K. pneu rh\") #> [1] \"Klebsiella pneumoniae rhinoscleromatis\" mo_shortname(\"K. pneu rh\") #> [1] \"K. pneumoniae\"  # \\donttest{ # Becker classification, see ?as.mo ----------------------------------------  mo_fullname(\"Staph epidermidis\") #> [1] \"Staphylococcus epidermidis\" mo_fullname(\"Staph epidermidis\", Becker = TRUE) #> [1] \"Coagulase-negative Staphylococcus (CoNS)\" mo_shortname(\"Staph epidermidis\") #> [1] \"S. epidermidis\" mo_shortname(\"Staph epidermidis\", Becker = TRUE) #> [1] \"CoNS\"   # Lancefield classification, see ?as.mo ------------------------------------  mo_fullname(\"Strep agalactiae\") #> [1] \"Streptococcus agalactiae\" mo_fullname(\"Strep agalactiae\", Lancefield = TRUE) #> [1] \"Streptococcus Group B\" mo_shortname(\"Strep agalactiae\") #> [1] \"S. agalactiae\" mo_shortname(\"Strep agalactiae\", Lancefield = TRUE) #> [1] \"GBS\"   # language support  --------------------------------------------------------  mo_gramstain(\"Klebsiella pneumoniae\", language = \"de\") # German #> [1] \"Gramnegativ\" mo_gramstain(\"Klebsiella pneumoniae\", language = \"nl\") # Dutch #> [1] \"Gram-negatief\" mo_gramstain(\"Klebsiella pneumoniae\", language = \"es\") # Spanish #> [1] \"Gram negativo\" mo_gramstain(\"Klebsiella pneumoniae\", language = \"el\") # Greek #> [1] \"Αρνητικό κατά Gram\" mo_gramstain(\"Klebsiella pneumoniae\", language = \"uk\") # Ukrainian #> [1] \"Грамнегативні\"  # mo_type is equal to mo_kingdom, but mo_kingdom will remain untranslated mo_kingdom(\"Klebsiella pneumoniae\") #> [1] \"Bacteria\" mo_type(\"Klebsiella pneumoniae\") #> [1] \"Bacteria\" mo_kingdom(\"Klebsiella pneumoniae\", language = \"zh\") # Chinese, no effect #> [1] \"Bacteria\" mo_type(\"Klebsiella pneumoniae\", language = \"zh\") # Chinese, translated #> [1] \"细菌\"  mo_fullname(\"S. pyogenes\", Lancefield = TRUE, language = \"de\") #> [1] \"Streptococcus Gruppe A\" mo_fullname(\"S. pyogenes\", Lancefield = TRUE, language = \"uk\") #> [1] \"Streptococcus Група A\"   # other --------------------------------------------------------------------  # gram stains and intrinsic resistance can be used as a filter in dplyr verbs if (require(\"dplyr\")) {   example_isolates %>%     filter(mo_is_gram_positive()) %>%     count(mo_genus(), sort = TRUE) } #> ℹ Using column 'mo' as input for mo_is_gram_positive() #> ℹ Using column 'mo' as input for mo_genus() #> # A tibble: 18 × 2 #>    `mo_genus()`        n #>    <chr>           <int> #>  1 Staphylococcus    840 #>  2 Streptococcus     275 #>  3 Enterococcus       83 #>  4 Corynebacterium    17 #>  5 Micrococcus         6 #>  6 Gemella             3 #>  7 Aerococcus          2 #>  8 Cutibacterium       1 #>  9 Dermabacter         1 #> 10 Fusibacter          1 #> 11 Globicatella        1 #> 12 Granulicatella      1 #> 13 Lactobacillus       1 #> 14 Leuconostoc         1 #> 15 Listeria            1 #> 16 Paenibacillus       1 #> 17 Rothia              1 #> 18 Schaalia            1 if (require(\"dplyr\")) {   example_isolates %>%     filter(mo_is_intrinsic_resistant(ab = \"vanco\")) %>%     count(mo_genus(), sort = TRUE) } #> ℹ Using column 'mo' as input for mo_is_intrinsic_resistant() #> ℹ Using column 'mo' as input for mo_genus() #> # A tibble: 20 × 2 #>    `mo_genus()`         n #>    <chr>            <int> #>  1 Escherichia        467 #>  2 Klebsiella          77 #>  3 Proteus             39 #>  4 Pseudomonas         30 #>  5 Serratia            25 #>  6 Enterobacter        23 #>  7 Citrobacter         11 #>  8 Haemophilus          8 #>  9 Acinetobacter        6 #> 10 Morganella           6 #> 11 Pantoea              4 #> 12 Salmonella           3 #> 13 Neisseria            2 #> 14 Stenotrophomonas     2 #> 15 Campylobacter        1 #> 16 Enterococcus         1 #> 17 Hafnia               1 #> 18 Lactobacillus        1 #> 19 Leuconostoc          1 #> 20 Pseudescherichia     1  # get a list with the complete taxonomy (from kingdom to subspecies) mo_taxonomy(\"Klebsiella pneumoniae\") #> $kingdom #> [1] \"Bacteria\" #>  #> $phylum #> [1] \"Pseudomonadota\" #>  #> $class #> [1] \"Gammaproteobacteria\" #>  #> $order #> [1] \"Enterobacterales\" #>  #> $family #> [1] \"Enterobacteriaceae\" #>  #> $genus #> [1] \"Klebsiella\" #>  #> $species #> [1] \"pneumoniae\" #>  #> $subspecies #> [1] \"\" #>   # get a list with the taxonomy, the authors, Gram-stain, # SNOMED codes, and URL to the online database mo_info(\"Klebsiella pneumoniae\") #> $mo #> [1] \"B_KLBSL_PNMN\" #>  #> $rank #> [1] \"species\" #>  #> $kingdom #> [1] \"Bacteria\" #>  #> $phylum #> [1] \"Pseudomonadota\" #>  #> $class #> [1] \"Gammaproteobacteria\" #>  #> $order #> [1] \"Enterobacterales\" #>  #> $family #> [1] \"Enterobacteriaceae\" #>  #> $genus #> [1] \"Klebsiella\" #>  #> $species #> [1] \"pneumoniae\" #>  #> $subspecies #> [1] \"\" #>  #> $status #> [1] \"accepted\" #>  #> $synonyms #> NULL #>  #> $gramstain #> [1] \"Gram-negative\" #>  #> $oxygen_tolerance #> [1] \"facultative anaerobe\" #>  #> $url #> [1] \"https://lpsn.dsmz.de/species/klebsiella-pneumoniae\" #>  #> $ref #> [1] \"Trevisan, 1887\" #>  #> $snomed #> [1] \"1098101000112102\" \"446870005\"        \"1098201000112108\" \"409801009\"        #> [5] \"56415008\"         \"714315002\"        \"713926009\"        #>  #> $lpsn #> [1] \"777151\" #>  #> $mycobank #> [1] NA #>  #> $gbif #> [1] \"3221874\" #>  #> $group_members #> character(0) #>  # }"},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":null,"dir":"Reference","previous_headings":"","what":"User-Defined Reference Data Set for Microorganisms — mo_source","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"functions can used predefine reference used .mo() consequently mo_* functions (mo_genus() mo_gramstain()). fastest way organisation (analysis) specific codes picked translated package, since bother setting .","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"","code":"set_mo_source(path, destination = getOption(\"AMR_mo_source\",   \"~/mo_source.rds\"))  get_mo_source(destination = getOption(\"AMR_mo_source\", \"~/mo_source.rds\"))"},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"path location reference file, can text file (comma-, tab- pipe-separated) Excel file (see Details). Can also \"\", NULL FALSE delete reference file. destination destination compressed data file - default user's home directory.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"reference file can text file separated commas (CSV) tabs pipes, Excel file (either 'xls' 'xlsx' format) R object file (extension '.rds'). use Excel file, need readxl package installed. set_mo_source() check file validity: must data.frame, must column named \"mo\" contains values microorganisms$mo microorganisms$fullname must reference column defined values. tests pass, set_mo_source() read file R ask export \"~/mo_source.rds\". CRAN policy disallows packages write file system, although 'exceptions may allowed interactive sessions package obtains confirmation user'. reason, function works interactive sessions user can specifically confirm allow file created. destination file can set destination argument defaults user's home directory. can also set package option AMR_mo_source, e.g. options(AMR_mo_source = \"/location/file.rds\"). created compressed data file \"mo_source.rds\" used default MO determination (function .mo() consequently mo_* functions like mo_genus() mo_gramstain()). location timestamp original file saved attribute compressed data file. function get_mo_source() return data set reading \"mo_source.rds\" readRDS(). original file changed (checking location timestamp original file), call set_mo_source() update data file automatically used interactive session. Reading Excel file (.xlsx) one row size 8-9 kB. compressed file created set_mo_source() size 0.1 kB can read get_mo_source() couple microseconds (millionths second).","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":"how-to-setup","dir":"Reference","previous_headings":"","what":"How to Setup","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"Imagine data sheet Excel file. first column contains organisation specific codes, second column contains valid taxonomic names:   save \"/Users//Documents/ourcodes.xlsx\". Now set source:   now created file \"~/mo_source.rds\" contents Excel file. first column foreign values 'mo' column kept creating RDS file. now can use functions:   edit Excel file , say, adding row 4 like :   ...new usage MO function package update data file:   delete reference data file, just use \"\", NULL FALSE input set_mo_source():   original file (previous case Excel file) moved deleted, mo_source.rds file removed upon next use .mo() mo_* function.","code":"|         A          |            B          | --|--------------------|-----------------------| 1 | Organisation XYZ   | mo                    | 2 | lab_mo_ecoli       | Escherichia coli      | 3 | lab_mo_kpneumoniae | Klebsiella pneumoniae | 4 |                    |                       | set_mo_source(\"/Users/me/Documents/ourcodes.xlsx\") #> NOTE: Created mo_source file '/Users/me/mo_source.rds' (0.3 kB) from #>       '/Users/me/Documents/ourcodes.xlsx' (9 kB), columns #>       \"Organisation XYZ\" and \"mo\" as.mo(\"lab_mo_ecoli\") #> Class 'mo' #> [1] B_ESCHR_COLI  mo_genus(\"lab_mo_kpneumoniae\") #> [1] \"Klebsiella\"  # other input values still work too as.mo(c(\"Escherichia coli\", \"E. coli\", \"lab_mo_ecoli\")) #> NOTE: Translation to one microorganism was guessed with uncertainty. #>       Use mo_uncertainties() to review it. #> Class 'mo' #> [1] B_ESCHR_COLI B_ESCHR_COLI B_ESCHR_COLI |         A          |            B          | --|--------------------|-----------------------| 1 | Organisation XYZ   | mo                    | 2 | lab_mo_ecoli       | Escherichia coli      | 3 | lab_mo_kpneumoniae | Klebsiella pneumoniae | 4 | lab_Staph_aureus   | Staphylococcus aureus | 5 |                    |                       | as.mo(\"lab_mo_ecoli\") #> NOTE: Updated mo_source file '/Users/me/mo_source.rds' (0.3 kB) from #>       '/Users/me/Documents/ourcodes.xlsx' (9 kB), columns #>        \"Organisation XYZ\" and \"mo\" #> Class 'mo' #> [1] B_ESCHR_COLI  mo_genus(\"lab_Staph_aureus\") #> [1] \"Staphylococcus\" set_mo_source(NULL) #> Removed mo_source file '/Users/me/mo_source.rds'"},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":null,"dir":"Reference","previous_headings":"","what":"Principal Component Analysis (for AMR) — pca","title":"Principal Component Analysis (for AMR) — pca","text":"Performs principal component analysis (PCA) based data set automatic determination afterwards plotting groups labels, automatic filtering suitable (.e. non-empty numeric) variables.","code":""},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Principal Component Analysis (for AMR) — pca","text":"","code":"pca(x, ..., retx = TRUE, center = TRUE, scale. = TRUE, tol = NULL,   rank. = NULL)"},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Principal Component Analysis (for AMR) — pca","text":"x data.frame containing numeric columns ... columns x selected PCA, can unquoted since supports quasiquotation. retx logical value indicating whether rotated variables     returned. center logical value indicating whether variables     shifted zero centered. Alternately, vector     length equal number columns x can supplied.     value passed scale. scale. logical value indicating whether variables     scaled unit variance analysis takes     place.  default FALSE consistency S,     general scaling advisable.  Alternatively, vector length     equal number columns x can supplied.      value passed scale. tol value indicating magnitude components     omitted. (Components omitted     standard deviations less equal tol times     standard deviation first component.)  default null     setting, components omitted (unless rank. specified     less min(dim(x)).).  settings tol     tol = 0 tol = sqrt(.Machine$double.eps),     omit essentially constant components. rank. optionally, number specifying maximal rank, .e.,     maximal number principal components used.  Can set     alternative addition tol, useful notably     desired rank considerably smaller dimensions matrix.","code":""},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Principal Component Analysis (for AMR) — pca","text":"object classes pca prcomp","code":""},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Principal Component Analysis (for AMR) — pca","text":"pca() function takes data.frame input performs actual PCA R function prcomp(). result pca() function prcomp object, additional attribute non_numeric_cols vector column names columns contain numeric values. probably groups labels, used ggplot_pca().","code":""},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Principal Component Analysis (for AMR) — pca","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates.  # \\donttest{ if (require(\"dplyr\")) {   # calculate the resistance per group first   resistance_data <- example_isolates %>%     group_by(       order = mo_order(mo), # group on anything, like order       genus = mo_genus(mo)     ) %>% #   and genus as we do here;     filter(n() >= 30) %>% # filter on only 30 results per group     summarise_if(is.sir, resistance) # then get resistance of all drugs    # now conduct PCA for certain antimicrobial drugs   pca_result <- resistance_data %>%     pca(AMC, CXM, CTX, CAZ, GEN, TOB, TMP, SXT)    pca_result   summary(pca_result)    # old base R plotting method:   biplot(pca_result)   # new ggplot2 plotting method using this package:   if (require(\"ggplot2\")) {     ggplot_pca(pca_result)      ggplot_pca(pca_result) +       scale_colour_viridis_d() +       labs(title = \"Title here\")   } } #> Warning: There were 73 warnings in `summarise()`. #> The first warning was: #> ℹ In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE, #>   only_all_tested = FALSE) ...`. #> ℹ In group 5: `order = \"Lactobacillales\"` and `genus = \"Enterococcus\"`. #> Caused by warning: #> ! Introducing NA: only 14 results available for PEN in group: order = #> \"Lactobacillales\", genus = \"Enterococcus\" (minimum = 30). #> ℹ Run `dplyr::last_dplyr_warnings()` to see the 72 remaining warnings. #> ℹ Columns selected for PCA: \"AMC\", \"CAZ\", \"CTX\", \"CXM\", \"GEN\", \"SXT\", #>   \"TMP\", and \"TOB\". Total observations available: 7. #> Groups (n=4, named as 'order'): #> [1] \"Caryophanales\"    \"Enterobacterales\" \"Lactobacillales\"  \"Pseudomonadales\"  #>    # }"},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":null,"dir":"Reference","previous_headings":"","what":"Plotting Helpers for AMR Data Analysis — plot","title":"Plotting Helpers for AMR Data Analysis — plot","text":"Functions plot classes sir, mic disk, support base R ggplot2. Especially scale_*_mic() functions relevant wrappers plot MIC values ggplot2. allows custom MIC ranges plot intermediate log2 levels missing MIC values.","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plotting Helpers for AMR Data Analysis — plot","text":"","code":"scale_x_mic(keep_operators = \"edges\", mic_range = NULL, drop = FALSE,   ...)  scale_y_mic(keep_operators = \"edges\", mic_range = NULL, drop = FALSE,   ...)  scale_colour_mic(keep_operators = \"edges\", mic_range = NULL,   drop = FALSE, ...)  scale_fill_mic(keep_operators = \"edges\", mic_range = NULL, drop = FALSE,   ...)  # S3 method for class 'mic' plot(x, mo = NULL, ab = NULL, guideline = \"EUCAST\",   main = deparse(substitute(x)), ylab = translate_AMR(\"Frequency\", language   = language),   xlab = translate_AMR(\"Minimum Inhibitory Concentration (mg/L)\", language =   language), colours_SIR = c(\"#3CAEA3\", \"#F6D55C\", \"#ED553B\"),   language = get_AMR_locale(), expand = TRUE,   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), ...)  # S3 method for class 'mic' autoplot(object, mo = NULL, ab = NULL,   guideline = \"EUCAST\", title = deparse(substitute(object)),   ylab = translate_AMR(\"Frequency\", language = language),   xlab = translate_AMR(\"Minimum Inhibitory Concentration (mg/L)\", language =   language), colours_SIR = c(\"#3CAEA3\", \"#F6D55C\", \"#ED553B\"),   language = get_AMR_locale(), expand = TRUE,   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), ...)  # S3 method for class 'mic' fortify(object, ...)  # S3 method for class 'disk' plot(x, main = deparse(substitute(x)),   ylab = translate_AMR(\"Frequency\", language = language),   xlab = translate_AMR(\"Disk diffusion diameter (mm)\", language = language),   mo = NULL, ab = NULL, guideline = \"EUCAST\",   colours_SIR = c(\"#3CAEA3\", \"#F6D55C\", \"#ED553B\"),   language = get_AMR_locale(), expand = TRUE,   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), ...)  # S3 method for class 'disk' autoplot(object, mo = NULL, ab = NULL,   title = deparse(substitute(object)), ylab = translate_AMR(\"Frequency\",   language = language), xlab = translate_AMR(\"Disk diffusion diameter (mm)\",   language = language), guideline = \"EUCAST\", colours_SIR = c(\"#3CAEA3\",   \"#F6D55C\", \"#ED553B\"), language = get_AMR_locale(), expand = TRUE,   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), ...)  # S3 method for class 'disk' fortify(object, ...)  # S3 method for class 'sir' plot(x, ylab = translate_AMR(\"Percentage\", language =   language), xlab = translate_AMR(\"Antimicrobial Interpretation\", language =   language), main = deparse(substitute(x)), language = get_AMR_locale(),   ...)  # S3 method for class 'sir' autoplot(object, title = deparse(substitute(object)),   xlab = translate_AMR(\"Antimicrobial Interpretation\", language = language),   ylab = translate_AMR(\"Frequency\", language = language),   colours_SIR = c(\"#3CAEA3\", \"#F6D55C\", \"#ED553B\"),   language = get_AMR_locale(), ...)  # S3 method for class 'sir' fortify(object, ...)  facet_sir(facet = c(\"interpretation\", \"antibiotic\"), nrow = NULL)  scale_y_percent(breaks = function(x) seq(0, max(x, na.rm = TRUE), 0.1),   limits = c(0, NA))  scale_sir_colours(..., aesthetics = \"fill\", colours_SIR = c(\"#3CAEA3\",   \"#F6D55C\", \"#ED553B\"))  theme_sir()  labels_sir_count(position = NULL, x = \"antibiotic\",   translate_ab = \"name\", minimum = 30, language = get_AMR_locale(),   combine_SI = TRUE, datalabels.size = 3, datalabels.colour = \"grey15\")"},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plotting Helpers for AMR Data Analysis — plot","text":"keep_operators character specifying handle operators (> <=) input. Accepts one three values: \"\" (TRUE) keep operators, \"none\" (FALSE) remove operators, \"edges\" keep operators ends range. mic_range manual range limit MIC values, e.g., mic_range = c(0.001, 32). Use NA set limit one side, e.g., mic_range = c(NA, 32). drop logical remove intermediate MIC values, defaults FALSE ... arguments passed methods x, object values created .mic(), .disk() .sir() (random_* variants, random_mic()) mo (vector ) text can coerced valid microorganism code .mo() ab (vector ) text can coerced valid antimicrobial drug code .ab() guideline interpretation guideline use - default latest included EUCAST guideline, see Details main, title title plot xlab, ylab axis title colours_SIR colours use filling bars, must vector three values (order S, R). default colours colour-blind friendly. language language used translate 'Susceptible', 'Increased exposure'/'Intermediate' 'Resistant' - default system language (see get_AMR_locale()) can overwritten setting package option AMR_locale, e.g. options(AMR_locale = \"de\"), see translate. Use language = NULL language = \"\" prevent translation. expand logical indicate whether range x axis expanded lowest highest value. MIC values, intermediate values factors 2 starting highest MIC value. disk diameters, whole diameter range filled. include_PKPD logical indicate PK/PD clinical breakpoints must applied last resort - default TRUE. Can also set package option AMR_include_PKPD. breakpoint_type type breakpoints use, either \"ECOFF\", \"animal\", \"human\". ECOFF stands Epidemiological Cut-values. default \"human\", can also set package option AMR_breakpoint_type. host set values veterinary species, automatically set \"animal\". facet variable split plots , either \"interpretation\" (default) \"antibiotic\" grouping variable nrow (using facet) number rows breaks numeric vector positions limits numeric vector length two providing limits scale, use NA refer existing minimum maximum aesthetics aesthetics apply colours - default \"fill\" can also (combination ) \"alpha\", \"colour\", \"fill\", \"linetype\", \"shape\" \"size\" position position adjustment bars, either \"fill\", \"stack\" \"dodge\" translate_ab column name antibiotics data set translate antibiotic abbreviations , using ab_property() minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. combine_SI logical indicate whether values S, SDD, must merged one, output consists S+SDD+vs. R (susceptible vs. resistant) - default TRUE datalabels.size size datalabels datalabels.colour colour datalabels","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plotting Helpers for AMR Data Analysis — plot","text":"autoplot() functions return ggplot model extendible ggplot2 function. fortify() functions return data.frame extension usage ggplot2::ggplot() function.","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plotting Helpers for AMR Data Analysis — plot","text":"interpretation \"\" named \"Increased exposure\" EUCAST guidelines since 2019, named \"Intermediate\" cases. interpreting MIC values well disk diffusion diameters, supported guidelines used input guideline argument : \"EUCAST 2024\", \"EUCAST 2023\", \"EUCAST 2022\", \"EUCAST 2021\", \"EUCAST 2020\", \"EUCAST 2019\", \"EUCAST 2018\", \"EUCAST 2017\", \"EUCAST 2016\", \"EUCAST 2015\", \"EUCAST 2014\", \"EUCAST 2013\", \"EUCAST 2012\", \"EUCAST 2011\", \"CLSI 2024\", \"CLSI 2023\", \"CLSI 2022\", \"CLSI 2021\", \"CLSI 2020\", \"CLSI 2019\", \"CLSI 2018\", \"CLSI 2017\", \"CLSI 2016\", \"CLSI 2015\", \"CLSI 2014\", \"CLSI 2013\", \"CLSI 2012\", \"CLSI 2011\". Simply using \"CLSI\" \"EUCAST\" input automatically select latest version guideline.","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"additional-ggplot-functions","dir":"Reference","previous_headings":"","what":"Additional ggplot2 Functions","title":"Plotting Helpers for AMR Data Analysis — plot","text":"package contains several functions extend ggplot2 package, help visualising AMR data results. functions internally used ggplot_sir() . facet_sir() creates 2d plots (default based S//R) using ggplot2::facet_wrap(). scale_y_percent() transforms y axis 0 100% range using ggplot2::scale_y_continuous(). scale_sir_colours() sets colours bars (green S, yellow , red R). multilingual support. default colours colour-blind friendly, maintaining convention e.g. 'susceptible' green 'resistant' red. theme_sir() [ggplot2 theme][ggplot2::theme() minimal distraction. labels_sir_count() print datalabels bars percentage number isolates, using ggplot2::geom_text().","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Plotting Helpers for AMR Data Analysis — plot","text":"","code":"some_mic_values <- random_mic(size = 100) some_disk_values <- random_disk(size = 100, mo = \"Escherichia coli\", ab = \"cipro\") some_sir_values <- random_sir(50, prob_SIR = c(0.55, 0.05, 0.30))  plot(some_mic_values)  plot(some_disk_values)  plot(some_sir_values)   # when providing the microorganism and antibiotic, colours will show interpretations: plot(some_mic_values, mo = \"S. aureus\", ab = \"ampicillin\")  plot(some_disk_values, mo = \"Escherichia coli\", ab = \"cipro\")  plot(some_disk_values, mo = \"Escherichia coli\", ab = \"cipro\", language = \"nl\")    # Plotting using scale_x_mic() --------------------------------------------- # \\donttest{ if (require(\"ggplot2\")) {   mic_plot <- ggplot(data.frame(mics = as.mic(c(0.25, \"<=4\", 4, 8, 32, \">=32\")),                                 counts = c(1, 1, 2, 2, 3, 3)),                      aes(mics, counts)) +     geom_col()   mic_plot +     labs(title = \"without scale_x_mic()\") }  if (require(\"ggplot2\")) {   mic_plot +     scale_x_mic() +     labs(title = \"with scale_x_mic()\") }  if (require(\"ggplot2\")) {   mic_plot +     scale_x_mic(keep_operators = \"all\") +     labs(title = \"with scale_x_mic() keeping all operators\") }  if (require(\"ggplot2\")) {   mic_plot +     scale_x_mic(mic_range = c(1, 16)) +     labs(title = \"with scale_x_mic() using a manual 'within' range\") }  if (require(\"ggplot2\")) {   mic_plot +     scale_x_mic(mic_range = c(0.032, 256)) +     labs(title = \"with scale_x_mic() using a manual 'outside' range\") }   if (require(\"ggplot2\")) {   autoplot(some_mic_values) }  if (require(\"ggplot2\")) {   autoplot(some_disk_values, mo = \"Escherichia coli\", ab = \"cipro\") }  if (require(\"ggplot2\")) {   autoplot(some_sir_values) }   # Plotting using scale_y_percent() ----------------------------------------- if (require(\"ggplot2\")) {   p <- ggplot(data.frame(mics = as.mic(c(0.25, \"<=4\", 4, 8, 32, \">=32\")),                                counts = c(1, 1, 2, 2, 3, 3)),                          aes(mics, counts / sum(counts))) +     geom_col()   print(p)      p2 <- p +     scale_y_percent() +     theme_sir()   print(p2)      p +     scale_y_percent(breaks = seq(from = 0, to = 1, by = 0.1),                     limits = c(0, 1)) +     theme_sir() }    # }"},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate Antimicrobial Resistance — proportion","title":"Calculate Antimicrobial Resistance — proportion","text":"functions can used calculate (co-)resistance susceptibility microbial isolates (.e. percentage S, SI, , IR R). functions support quasiquotation pipes, can used summarise() dplyr package also support grouped variables, see Examples. resistance() used calculate resistance, susceptibility() used calculate susceptibility.","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate Antimicrobial Resistance — proportion","text":"","code":"resistance(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  susceptibility(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  sir_confidence_interval(..., ab_result = \"R\", minimum = 30,   as_percent = FALSE, only_all_tested = FALSE, confidence_level = 0.95,   side = \"both\", collapse = FALSE)  proportion_R(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_IR(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_I(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_SI(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_S(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_df(data, translate_ab = \"name\", language = get_AMR_locale(),   minimum = 30, as_percent = FALSE, combine_SI = TRUE,   confidence_level = 0.95)  sir_df(data, translate_ab = \"name\", language = get_AMR_locale(),   minimum = 30, as_percent = FALSE, combine_SI = TRUE,   confidence_level = 0.95)"},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Calculate Antimicrobial Resistance — proportion","text":"M39 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 5th Edition, 2022, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m39/.","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate Antimicrobial Resistance — proportion","text":"... one vectors (columns) antibiotic interpretations. transformed internally .sir() needed. Use multiple columns calculate (lack ) co-resistance: probability one two drugs resistant susceptible result. See Examples. minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. as_percent logical indicate whether output must returned hundred fold % sign (character). value 0.123456 returned \"12.3%\". only_all_tested (combination therapies, .e. using one variable ...): logical indicate isolates must tested antibiotics, see section Combination Therapy ab_result antibiotic results test , must one values \"S\", \"SDD\", \"\", \"R\" confidence_level confidence level returned confidence interval. calculation, number S SI isolates, R isolates compared total number available isolates R, S, using binom.test(), .e., Clopper-Pearson method. side side confidence interval return. default \"\" length 2 vector, can also (abbreviated ) \"min\"/\"left\"/\"lower\"/\"less\" \"max\"/\"right\"/\"higher\"/\"greater\". collapse logical indicate whether output values 'collapsed', .e. merged together one value, character value use collapsing data data.frame containing columns class sir (see .sir()) translate_ab column name antibiotics data set translate antibiotic abbreviations , using ab_property() language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. combine_SI logical indicate whether values S, SDD, must merged one, output consists S+SDD+vs. R (susceptible vs. resistant) - default TRUE","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate Antimicrobial Resistance — proportion","text":"double , as_percent = TRUE, character.","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate Antimicrobial Resistance — proportion","text":"automated comprehensive analysis, consider using antibiogram() wisca(), streamline many aspects susceptibility reporting , importantly, also support WISCA. functions described offer hands-, manual approach greater customisation. Remember filter data let contain first isolates! needed exclude duplicates reduce selection bias. Use first_isolate() determine data set one four available algorithms. function resistance() equal function proportion_R(). function susceptibility() equal function proportion_SI(). Since AMR v3.0, proportion_SI() proportion_I() include dose-dependent susceptibility ('SDD'). Use sir_confidence_interval() calculate confidence interval, relies binom.test(), .e., Clopper-Pearson method. function returns vector length 2 default antimicrobial resistance. Change side argument \"left\"/\"min\" \"right\"/\"max\" return single value, change ab_result argument e.g. c(\"S\", \"\") test antimicrobial susceptibility, see Examples. functions meant count isolates, calculate proportion resistance/susceptibility. Use count_*() functions count isolates. function susceptibility() essentially equal count_susceptible()/count_all(). Low counts can influence outcome - proportion_*() functions may camouflage , since return proportion (albeit dependent minimum argument). function proportion_df() takes variable data sir class (created .sir()) calculates proportions S, , R. also supports grouped variables. function sir_df() works exactly like proportion_df(), adds number isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"combination-therapy","dir":"Reference","previous_headings":"","what":"Combination Therapy","title":"Calculate Antimicrobial Resistance — proportion","text":"using one variable ... (= combination therapy), use only_all_tested count isolates tested antibiotics/variables test . See example two antibiotics, Drug Drug B, susceptibility() works calculate %SI:   Please note , combination therapies, only_all_tested = TRUE applies :   , combination therapies, only_all_tested = FALSE applies :   Using only_all_tested impact using one antibiotic input.","code":"--------------------------------------------------------------------                     only_all_tested = FALSE  only_all_tested = TRUE                     -----------------------  -----------------------  Drug A    Drug B   considered   considered  considered   considered                     susceptible    tested    susceptible    tested --------  --------  -----------  ----------  -----------  ----------  S or I    S or I        X            X           X            X    R       S or I        X            X           X            X   <NA>     S or I        X            X           -            -  S or I      R           X            X           X            X    R         R           -            X           -            X   <NA>       R           -            -           -            -  S or I     <NA>         X            X           -            -    R        <NA>         -            -           -            -   <NA>      <NA>         -            -           -            - -------------------------------------------------------------------- count_S()    +   count_I()    +   count_R()    = count_all()   proportion_S() + proportion_I() + proportion_R() = 1 count_S()    +   count_I()    +   count_R()    >= count_all()   proportion_S() + proportion_I() + proportion_R() >= 1"},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Calculate Antimicrobial Resistance — proportion","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate Antimicrobial Resistance — proportion","text":"","code":"# example_isolates is a data set available in the AMR package. # run ?example_isolates for more info. example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …   # base R ------------------------------------------------------------ # determines %R resistance(example_isolates$AMX) #> [1] 0.5955556 sir_confidence_interval(example_isolates$AMX) #> [1] 0.5688204 0.6218738 sir_confidence_interval(example_isolates$AMX,   confidence_level = 0.975 ) #> [1] 0.5650148 0.6255670 sir_confidence_interval(example_isolates$AMX,   confidence_level = 0.975,   collapse = \", \" ) #> [1] \"0.565, 0.626\"  # determines %S+I: susceptibility(example_isolates$AMX) #> [1] 0.4044444 sir_confidence_interval(example_isolates$AMX,   ab_result = c(\"S\", \"I\") ) #> [1] 0.3781262 0.4311796  # be more specific proportion_S(example_isolates$AMX) #> [1] 0.4022222 proportion_SI(example_isolates$AMX) #> Note that proportion_SI() will also include dose-dependent #> susceptibility, 'SDD'. This note will be shown once for this session. #> [1] 0.4044444 proportion_I(example_isolates$AMX) #> Note that proportion_I() will also include dose-dependent susceptibility, #> 'SDD'. This note will be shown once for this session. #> [1] 0.002222222 proportion_IR(example_isolates$AMX) #> Note that proportion_IR() will also include dose-dependent #> susceptibility, 'SDD'. This note will be shown once for this session. #> [1] 0.5977778 proportion_R(example_isolates$AMX) #> [1] 0.5955556  # dplyr ------------------------------------------------------------- # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     group_by(ward) %>%     summarise(       r = resistance(CIP),       n = n_sir(CIP)     ) # n_sir works like n_distinct in dplyr, see ?n_sir } #> # A tibble: 3 × 3 #>   ward           r     n #>   <chr>      <dbl> <int> #> 1 Clinical   0.147   869 #> 2 ICU        0.190   447 #> 3 Outpatient 0.161    93 if (require(\"dplyr\")) {   example_isolates %>%     group_by(ward) %>%     summarise(       cipro_R = resistance(CIP),       ci_min = sir_confidence_interval(CIP, side = \"min\"),       ci_max = sir_confidence_interval(CIP, side = \"max\"),     ) } #> # A tibble: 3 × 4 #>   ward       cipro_R ci_min ci_max #>   <chr>        <dbl>  <dbl>  <dbl> #> 1 Clinical     0.147 0.124   0.173 #> 2 ICU          0.190 0.155   0.230 #> 3 Outpatient   0.161 0.0932  0.252 if (require(\"dplyr\")) {   # scoped dplyr verbs with antimicrobial selectors   # (you could also use across() of course)   example_isolates %>%     group_by(ward) %>%     summarise_at(       c(aminoglycosides(), carbapenems()),       resistance     ) } #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> Warning: There was 1 warning in `summarise()`. #> ℹ In argument: `KAN = (function (..., minimum = 30, as_percent = FALSE, #>   only_all_tested = FALSE) ...`. #> ℹ In group 3: `ward = \"Outpatient\"`. #> Caused by warning: #> ! Introducing NA: only 23 results available for KAN in group: ward = #> \"Outpatient\" (minimum = 30). #> # A tibble: 3 × 7 #>   ward         GEN   TOB   AMK   KAN    IPM    MEM #>   <chr>      <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl> #> 1 Clinical   0.229 0.315 0.626     1 0.0498 0.0458 #> 2 ICU        0.290 0.400 0.662     1 0.0862 0.0894 #> 3 Outpatient 0.2   0.368 0.605    NA 0.0541 0.0541 if (require(\"dplyr\")) {   example_isolates %>%     group_by(ward) %>%     summarise(       R = resistance(CIP, as_percent = TRUE),       SI = susceptibility(CIP, as_percent = TRUE),       n1 = count_all(CIP), # the actual total; sum of all three       n2 = n_sir(CIP), # same - analogous to n_distinct       total = n()     ) # NOT the number of tested isolates!    # Calculate co-resistance between amoxicillin/clav acid and gentamicin,   # so we can see that combination therapy does a lot more than mono therapy:   example_isolates %>% susceptibility(AMC) # %SI = 76.3%   example_isolates %>% count_all(AMC) #   n = 1879    example_isolates %>% susceptibility(GEN) # %SI = 75.4%   example_isolates %>% count_all(GEN) #   n = 1855    example_isolates %>% susceptibility(AMC, GEN) # %SI = 94.1%   example_isolates %>% count_all(AMC, GEN) #   n = 1939     # See Details on how `only_all_tested` works. Example:   example_isolates %>%     summarise(       numerator = count_susceptible(AMC, GEN),       denominator = count_all(AMC, GEN),       proportion = susceptibility(AMC, GEN)     )    example_isolates %>%     summarise(       numerator = count_susceptible(AMC, GEN, only_all_tested = TRUE),       denominator = count_all(AMC, GEN, only_all_tested = TRUE),       proportion = susceptibility(AMC, GEN, only_all_tested = TRUE)     )     example_isolates %>%     group_by(ward) %>%     summarise(       cipro_p = susceptibility(CIP, as_percent = TRUE),       cipro_n = count_all(CIP),       genta_p = susceptibility(GEN, as_percent = TRUE),       genta_n = count_all(GEN),       combination_p = susceptibility(CIP, GEN, as_percent = TRUE),       combination_n = count_all(CIP, GEN)     )    # Get proportions S/I/R immediately of all sir columns   example_isolates %>%     select(AMX, CIP) %>%     proportion_df(translate = FALSE)    # It also supports grouping variables   # (use sir_df to also include the count)   example_isolates %>%     select(ward, AMX, CIP) %>%     group_by(ward) %>%     sir_df(translate = FALSE) } #> # A tibble: 12 × 7 #>    ward       antibiotic interpretation value ci_min ci_max isolates #>  * <chr>      <chr>      <ord>          <dbl>  <dbl>  <dbl>    <int> #>  1 Clinical   AMX        SI             0.423 0.389   0.457      357 #>  2 Clinical   AMX        R              0.577 0.543   0.611      487 #>  3 Clinical   CIP        SI             0.853 0.827   0.876      741 #>  4 Clinical   CIP        R              0.147 0.124   0.173      128 #>  5 ICU        AMX        SI             0.369 0.323   0.417      158 #>  6 ICU        AMX        R              0.631 0.583   0.677      270 #>  7 ICU        CIP        SI             0.810 0.770   0.845      362 #>  8 ICU        CIP        R              0.190 0.155   0.230       85 #>  9 Outpatient AMX        SI             0.397 0.288   0.515       31 #> 10 Outpatient AMX        R              0.603 0.485   0.712       47 #> 11 Outpatient CIP        SI             0.839 0.748   0.907       78 #> 12 Outpatient CIP        R              0.161 0.0932  0.252       15 # }"},{"path":"https://msberends.github.io/AMR/reference/random.html","id":null,"dir":"Reference","previous_headings":"","what":"Random MIC Values/Disk Zones/SIR Generation — random","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"functions can used generating random MIC values disk diffusion diameters, AMR data analysis practice. providing microorganism antimicrobial drug, generated results reflect reality much possible.","code":""},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"","code":"random_mic(size = NULL, mo = NULL, ab = NULL, ...)  random_disk(size = NULL, mo = NULL, ab = NULL, ...)  random_sir(size = NULL, prob_SIR = c(0.33, 0.33, 0.33), ...)"},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"size desired size returned vector. used data.frame call dplyr verb, get current (group) size left blank. mo character can coerced valid microorganism code .mo() ab character can coerced valid antimicrobial drug code .ab() ... ignored, place allow future extensions prob_SIR vector length 3: probabilities \"S\" (1st value), \"\" (2nd value) \"R\" (3rd value)","code":""},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"class mic random_mic() (see .mic()) class disk random_disk() (see .disk())","code":""},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"base R function sample() used generating values. Generated values based EUCAST 2024 guideline implemented clinical_breakpoints data set. create specific generated values per bug drug, set mo /ab argument.","code":""},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"","code":"random_mic(25) #> Class 'mic' #>  [1] 64     4      0.25   0.125  0.125  4      0.001  0.0625 32     0.025  #> [11] 16     2      2      4      16     0.0625 0.001  0.5    0.25   >=256  #> [21] 32     0.25   2      2      0.125  random_disk(25) #> Class 'disk' #>  [1]  6 44 14 31  8 38 41 16 35 39 22 46 25 47 11 44 26 20 17 35 37 22 32 43 14 random_sir(25) #> Class 'sir' #>  [1] I R I I S S S R R I I S S R R I I I I I I S R I R  # \\donttest{ # make the random generation more realistic by setting a bug and/or drug: random_mic(25, \"Klebsiella pneumoniae\") # range 0.0625-64 #> Class 'mic' #>  [1] 16      0.25    >=64    32      2       4       0.01    1       1       #> [10] 0.0625  32      0.0625  0.025   <=0.001 1       4       >=64    0.25    #> [19] 0.5     4       0.005   8       1       4       0.002   random_mic(25, \"Klebsiella pneumoniae\", \"meropenem\") # range 0.0625-16 #> Class 'mic' #>  [1] 4    16   8    8    2    32   4    8    16   4    16   <=1  16   >=64 16   #> [16] >=64 8    >=64 4    >=64 <=1  4    4    >=64 4    random_mic(25, \"Streptococcus pneumoniae\", \"meropenem\") # range 0.0625-4 #> Class 'mic' #>  [1] 0.25    1       4       1       1       0.25    0.0625  0.25    0.0625  #> [10] 0.5     <=0.025 <=0.025 0.5     1       <=0.025 0.25    4       0.5     #> [19] 1       0.125   0.5     1       1       1       <=0.025  random_disk(25, \"Klebsiella pneumoniae\") # range 8-50 #> Class 'disk' #>  [1] 46 48 26 34 22 36 47 21 21 45 46  8 11 39 17 17 45 19 44 37 21 25 16 48 44 random_disk(25, \"Klebsiella pneumoniae\", \"ampicillin\") # range 11-17 #> Class 'disk' #>  [1] 13 13 14 14 12 12 12 15 17 11 11 15 17 16 15 15 16 12 11 12 15 17 13 14 11 random_disk(25, \"Streptococcus pneumoniae\", \"ampicillin\") # range 12-27 #> Class 'disk' #>  [1] 20 25 26 15 23 20 26 22 20 16 26 17 21 17 23 17 22 26 27 15 17 25 21 18 15 # }"},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":null,"dir":"Reference","previous_headings":"","what":"Predict Antimicrobial Resistance — resistance_predict","title":"Predict Antimicrobial Resistance — resistance_predict","text":"Create prediction model predict antimicrobial resistance next years statistical solid ground. Standard errors (SE) returned columns se_min se_max. See Examples real live example.","code":""},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Predict Antimicrobial Resistance — resistance_predict","text":"","code":"resistance_predict(x, col_ab, col_date = NULL, year_min = NULL,   year_max = NULL, year_every = 1, minimum = 30, model = NULL,   I_as_S = TRUE, preserve_measurements = TRUE, info = interactive(), ...)  sir_predict(x, col_ab, col_date = NULL, year_min = NULL, year_max = NULL,   year_every = 1, minimum = 30, model = NULL, I_as_S = TRUE,   preserve_measurements = TRUE, info = interactive(), ...)  # S3 method for class 'resistance_predict' plot(x, main = paste(\"Resistance Prediction of\",   x_name), ...)  ggplot_sir_predict(x, main = paste(\"Resistance Prediction of\", x_name),   ribbon = TRUE, ...)  # S3 method for class 'resistance_predict' autoplot(object,   main = paste(\"Resistance Prediction of\", x_name), ribbon = TRUE, ...)"},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Predict Antimicrobial Resistance — resistance_predict","text":"x data.frame containing isolates. Can left blank automatic determination, see Examples. col_ab column name x containing antimicrobial interpretations (\"R\", \"\" \"S\") col_date column name date, used calculate years column consist years already - default first column date class year_min lowest year use prediction model, dafaults lowest year col_date year_max highest year use prediction model - default 10 years today year_every unit sequence lowest year found data year_max minimum minimal amount available isolates per year include. Years containing less observations estimated model. model statistical model choice. generalised linear regression model binomial distribution (.e. using glm(..., family = binomial), assuming period zero resistance followed period increasing resistance leading slowly resistance. See Details valid options. I_as_S logical indicate whether values \"\" treated \"S\" (otherwise treated \"R\"). default, TRUE, follows redefinition EUCAST interpretation (increased exposure) 2019, see section Interpretation S, R . preserve_measurements logical indicate whether predictions years actually available data overwritten original data. standard errors years NA. info logical indicate whether textual analysis printed name summary() statistical model. ... arguments passed functions main title plot ribbon logical indicate whether ribbon shown (default) error bars object model data plotted","code":""},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Predict Antimicrobial Resistance — resistance_predict","text":"data.frame extra class resistance_predict columns: year value, estimated preserve_measurements = FALSE, combination observed estimated otherwise se_min, lower bound standard error minimum 0 (standard error never go 0%) se_max upper bound standard error maximum 1 (standard error never go 100%) observations, total number available observations year, .e. \\(S + + R\\) observed, original observed resistant percentages estimated, estimated resistant percentages, calculated model Furthermore, model available attribute: attributes(x)$model, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Predict Antimicrobial Resistance — resistance_predict","text":"Valid options statistical model (argument model) : \"binomial\" \"binom\" \"logit\": generalised linear regression model binomial distribution \"loglin\" \"poisson\": generalised log-linear regression model poisson distribution \"lin\" \"linear\": linear regression model","code":""},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Predict Antimicrobial Resistance — resistance_predict","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Predict Antimicrobial Resistance — resistance_predict","text":"","code":"x <- resistance_predict(example_isolates,   col_ab = \"AMX\",   year_min = 2010,   model = \"binomial\" ) plot(x)  # \\donttest{ if (require(\"ggplot2\")) {   ggplot_sir_predict(x) }   # using dplyr: if (require(\"dplyr\")) {   x <- example_isolates %>%     filter_first_isolate() %>%     filter(mo_genus(mo) == \"Staphylococcus\") %>%     resistance_predict(\"PEN\", model = \"binomial\")   print(plot(x))    # get the model from the object   mymodel <- attributes(x)$model   summary(mymodel) }  #> NULL #>  #> Call: #> glm(formula = df_matrix ~ year, family = binomial) #>  #> Coefficients: #>             Estimate Std. Error z value Pr(>|z|) #> (Intercept) 35.76101   72.29172   0.495    0.621 #> year        -0.01720    0.03603  -0.477    0.633 #>  #> (Dispersion parameter for binomial family taken to be 1) #>  #>     Null deviance: 5.3681  on 11  degrees of freedom #> Residual deviance: 5.1408  on 10  degrees of freedom #> AIC: 50.271 #>  #> Number of Fisher Scoring iterations: 4 #>   # create nice plots with ggplot2 yourself if (require(\"dplyr\") && require(\"ggplot2\")) {   data <- example_isolates %>%     filter(mo == as.mo(\"E. coli\")) %>%     resistance_predict(       col_ab = \"AMX\",       col_date = \"date\",       model = \"binomial\",       info = FALSE,       minimum = 15     )   head(data)   autoplot(data) }  # }"},{"path":"https://msberends.github.io/AMR/reference/skewness.html","id":null,"dir":"Reference","previous_headings":"","what":"Skewness of the Sample — skewness","title":"Skewness of the Sample — skewness","text":"Skewness measure asymmetry probability distribution real-valued random variable mean. negative ('left-skewed'): left tail longer; mass distribution concentrated right histogram. positive ('right-skewed'): right tail longer; mass distribution concentrated left histogram. normal distribution skewness 0.","code":""},{"path":"https://msberends.github.io/AMR/reference/skewness.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Skewness of the Sample — skewness","text":"","code":"skewness(x, na.rm = FALSE)  # Default S3 method skewness(x, na.rm = FALSE)  # S3 method for class 'matrix' skewness(x, na.rm = FALSE)  # S3 method for class 'data.frame' skewness(x, na.rm = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/skewness.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Skewness of the Sample — skewness","text":"x vector values, matrix data.frame na.rm logical value indicating whether NA values stripped computation proceeds","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/skewness.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Skewness of the Sample — skewness","text":"","code":"skewness(runif(1000)) #> [1] -0.005078444"},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter Top n Microorganisms — top_n_microorganisms","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"function filters data set include top n microorganisms based specified property, taxonomic family genus. example, can filter data set top 3 species, species top 5 genera, top 3 species top 5 genera.","code":""},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"","code":"top_n_microorganisms(x, n, property = \"fullname\", n_for_each = NULL,   col_mo = NULL, ...)"},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"x data frame containing microbial data n integer specifying maximum number unique values property include output property character string indicating microorganism property use filtering. Must one column names microorganisms data set: \"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\", \"snomed\". NULL, raw values col_mo used without transformation. n_for_each optional integer specifying maximum number rows retain value selected property. NULL, rows within top n groups included. col_mo character string indicating column x contains microorganism names codes. Defaults first column class mo. Values coerced using .mo(). ... Additional arguments passed mo_property() property NULL.","code":""},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"function useful preprocessing data creating antibiograms analyses require focused subsets microbial data. example, can filter data set include isolates top 10 species.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"","code":"# filter to the top 3 species: top_n_microorganisms(example_isolates,                      n = 3) #> # A tibble: 1,015 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  4 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  5 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  6 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  7 2002-02-03 481442     76 M      ICU      B_STPHY_CONS   R     NA    S     NA  #>  8 2002-02-14 067927     45 F      ICU      B_STPHY_CONS   R     NA    R     NA  #>  9 2002-02-14 067927     45 F      ICU      B_STPHY_CONS   S     NA    S     NA  #> 10 2002-02-21 A56499     64 M      Clinical B_STPHY_CONS   S     NA    S     NA  #> # ℹ 1,005 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter to any species in the top 5 genera: top_n_microorganisms(example_isolates,                      n = 5, property = \"genus\") #> # A tibble: 1,742 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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,732 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter to the top 3 species in each of the top 5 genera: top_n_microorganisms(example_isolates,                      n = 5, property = \"genus\", n_for_each = 3) #> # A tibble: 1,497 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-02-21 4FC193     69 M      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  2 2002-04-08 130252     78 M      ICU      B_ENTRC_FCLS   NA    NA    NA    NA  #>  3 2002-06-23 798871     82 M      Clinical B_ENTRC_FCLS   NA    NA    NA    NA  #>  4 2002-06-23 798871     82 M      Clinical B_ENTRC_FCLS   NA    NA    NA    NA  #>  5 2003-04-20 6BC362     62 M      ICU      B_ENTRC        NA    NA    NA    NA  #>  6 2003-04-21 6BC362     62 M      ICU      B_ENTRC        NA    NA    NA    NA  #>  7 2003-08-13 F35553     52 M      ICU      B_ENTRC_FCLS   NA    NA    NA    NA  #>  8 2003-09-05 F35553     52 M      ICU      B_ENTRC        NA    NA    NA    NA  #>  9 2003-09-05 F35553     52 M      ICU      B_ENTRC_FCLS   NA    NA    NA    NA  #> 10 2003-09-28 1B0933     80 M      Clinical B_ENTRC        NA    NA    NA    NA  #> # ℹ 1,487 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …"},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":null,"dir":"Reference","previous_headings":"","what":"Translate Strings from the AMR Package — translate","title":"Translate Strings from the AMR Package — translate","text":"language-dependent output AMR functions, mo_name(), mo_gramstain(), mo_type() ab_name().","code":""},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Translate Strings from the AMR Package — translate","text":"","code":"get_AMR_locale()  set_AMR_locale(language)  reset_AMR_locale()  translate_AMR(x, language = get_AMR_locale())"},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Translate Strings from the AMR Package — translate","text":"language language choose. Use one supported language names ISO-639-1 codes: English (en), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek (el), Italian (), Japanese (ja), Norwegian (), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv), Turkish (tr), Ukrainian (uk). x text translate","code":""},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Translate Strings from the AMR Package — translate","text":"currently 20 supported languages English (en), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek (el), Italian (), Japanese (ja), Norwegian (), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv), Turkish (tr), Ukrainian (uk). languages translations available antimicrobial drugs colloquial microorganism names. permanently silence -per-session language note non-English operating system, can set package option AMR_locale .Rprofile file like :   save file. Please read adding updating language Wiki.","code":"# Open .Rprofile file utils::file.edit(\"~/.Rprofile\")  # Then add e.g. Italian support to that file using: options(AMR_locale = \"Italian\")"},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"changing-the-default-language","dir":"Reference","previous_headings":"","what":"Changing the Default Language","title":"Translate Strings from the AMR Package — translate","text":"system language used default (returned Sys.getenv(\"LANG\") , LANG set, Sys.getlocale(\"LC_COLLATE\")), language supported. language used can overwritten two ways checked order: Setting package option AMR_locale, either using e.g. set_AMR_locale(\"German\") running e.g. options(AMR_locale = \"German\"). Note setting R option works session. Save command options(AMR_locale = \"(language)\") .Rprofile file apply every session. Run utils::file.edit(\"~/.Rprofile\") edit .Rprofile file. Setting system variable LANGUAGE LANG, e.g. adding LANGUAGE=\"de_DE.utf8\" .Renviron file home directory. Thus, package option AMR_locale set, system variables LANGUAGE LANG ignored.","code":""},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Translate Strings from the AMR Package — translate","text":"","code":"# Current settings (based on system language) ab_name(\"Ciprofloxacin\") #> [1] \"Ciprofloxacin\" mo_name(\"Coagulase-negative Staphylococcus (CoNS)\") #> [1] \"Coagulase-negative Staphylococcus (CoNS)\"  # setting another language set_AMR_locale(\"Dutch\") #> ℹ Using Dutch (Nederlands) for the AMR package for this session. ab_name(\"Ciprofloxacin\") #> [1] \"Ciprofloxacine\" mo_name(\"Coagulase-negative Staphylococcus (CoNS)\") #> [1] \"Coagulase-negatieve Staphylococcus (CNS)\"  # setting yet another language set_AMR_locale(\"German\") #> ℹ Using German (Deutsch) for the AMR package for this session. ab_name(\"Ciprofloxacin\") #> [1] \"Ciprofloxacin\" mo_name(\"Coagulase-negative Staphylococcus (CoNS)\") #> [1] \"Koagulase-negative Staphylococcus (KNS)\"  # set_AMR_locale() understands endonyms, English exonyms, and ISO-639-1: set_AMR_locale(\"Deutsch\") #> ℹ Using German (Deutsch) for the AMR package for this session. set_AMR_locale(\"German\") #> ℹ Using German (Deutsch) for the AMR package for this session. set_AMR_locale(\"de\") #> ℹ Using German (Deutsch) for the AMR package for this session. ab_name(\"amox/clav\") #> ℹ More than one result was found for item 1: amoxicillin and clavulansäure #> [1] \"Amoxicillin/Clavulansäure\"  # reset to system default reset_AMR_locale() #> ℹ Using the English language (English) for the AMR package for this #>   session. ab_name(\"amox/clav\") #> [1] \"Amoxicillin/clavulanic acid\""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"amr-2119143","dir":"Changelog","previous_headings":"","what":"AMR 2.1.1.9143","title":"AMR 2.1.1.9143","text":"(beta version eventually become v3.0. ’re happy reach new major milestone soon, new One Health support! Install beta using instructions .)","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"a-new-milestone-amr-v30-with-one-health-support--human--veterinary--environmental-2-1-1-9143","dir":"Changelog","previous_headings":"","what":"A New Milestone: AMR v3.0 with One Health Support (= Human + Veterinary + Environmental)","title":"AMR 2.1.1.9143","text":"package now supports tools AMR data analysis clinical settings, also veterinary environmental microbiology. made possible collaboration University Prince Edward Island’s Atlantic Veterinary College, Canada. celebrate great improvement package, also updated package logo reflect change.","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"breaking-2-1-1-9143","dir":"Changelog","previous_headings":"","what":"Breaking","title":"AMR 2.1.1.9143","text":"Removed functions references used deprecated rsi class, replaced sir equivalents two years ago","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"new-2-1-1-9143","dir":"Changelog","previous_headings":"","what":"New","title":"AMR 2.1.1.9143","text":"Function .sir() now extensive support veterinary breakpoints CLSI. Use breakpoint_type = \"animal\" set host argument variable contains animal species names. CLSI VET09 guideline implemented address cases veterinary breakpoints missing (applies guideline set CLSI) clinical_breakpoints data set contains breakpoints, can downloaded download page. antibiotics data set contains veterinary antibiotics, pradofloxacin enrofloxacin. WHOCC codes veterinary use added well. ab_atc() now supports ATC codes veterinary antibiotics (start “Q”) ab_url() now supports retrieving WHOCC url ATCvet pages antibiogram() function now supports creating true Weighted-Incidence Syndromic Combination Antibiograms (WISCA), powerful Bayesian method estimating regimen coverage probabilities using pathogen incidence antimicrobial susceptibility data. WISCA offers improved precision syndrome-specific treatment, even datasets sparse data. dedicated wisca() function also available easy usage. MycoBank now integrated primary taxonomic source fungi. microorganisms data set enriched new columns (mycobank, mycobank_parent, mycobank_renamed_to) provide detailed information fungal species. remarkable addition 20,000 new fungal records New function mo_mycobank() retrieve MycoBank record number, analogous existing functions mo_lpsn() mo_gbif(). .mo() function mo_*() functions now include only_fungi argument, allowing users restrict results solely fungal species. ensures fungi prioritised bacteria microorganism identification. can also set globally new AMR_only_fungi option. Also updated kingdoms, welcoming total 2,149 new records 2023 927 2024. EUCAST 2024 CLSI 2024 now supported, adding 4,000 new clinical breakpoints clinical_breakpoints data set usage .sir(). EUCAST 2024 now new default guideline MIC disk diffusion interpretations. .sir() now brings additional factor levels: “NI” non-interpretable “SDD” susceptible dose-dependent. Currently, clinical_breakpoints data set contains 24 breakpoints can return value “SDD” instead “”. New function group scale_*_mic(), namely: scale_x_mic(), scale_y_mic(), scale_colour_mic() scale_fill_mic(). advanced ggplot2 extensions allow easy plotting MIC values. allow manual range definition plotting missing intermediate log2 levels. New function rescale_mic(), allows users rescale MIC values manually set range. powerhouse behind scale_*_mic() functions, can used independently , instance, compare equality MIC distributions rescaling range first. using R heavy lifting, ‘AMR’ Python Package developed run AMR R package natively Python. Python package always version number R package, built automatically every code change. antimicrobial selectors (aminoglycosides() betalactams()) now supported tidymodels packages recipe parsnip. See info tutorial using AMR functions predictive modelling. New function top_n_microorganisms() filter data set top n taxonomic property, e.g., filter top 3 species, filter species top 5 genera, filter top 3 species top 5 genera New function mo_group_members() retrieve member microorganisms microorganism group. example, mo_group_members(\"Strep group C\") returns vector microorganisms belong group.","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"changed-2-1-1-9143","dir":"Changelog","previous_headings":"","what":"Changed","title":"AMR 2.1.1.9143","text":"now possible use column names argument ab, mo, uti: .sir(..., ab = \"column1\", mo = \"column2\", uti = \"column3\"). greatly improves flexibility users. Users can now set criteria (using regular expressions) considered S, , R, SDD, NI. get quantitative values, .double() sir object return 1 S, 2 SDD/, 3 R (NI become NA). functions using sir classes (e.g., summary()) updated reflect change contain NI SDD. New argument formatting_type set 22 options formatting ‘cells’. defaults 10 non-WISCA 14 WISCA, changing output antibiograms cells info. reason, add_total_n now FALSE default since denominators added cells ab_transform argument now defaults \"name\", displaying antibiotic column names instead codes ‘Antibiotic selectors’ now called ‘antimicrobial selectors’ since scope broader just antibiotics. documentation updated, ab_class() ab_selector() replaced amr_class() amr_selector(). old functions now deprecated removed future version. Added selectors isoxazolylpenicillins(), monobactams(), nitrofurans(), phenicols(), rifamycins() using antimicrobial selectors exclude non-treatable drugs (gentamicin-high using aminoglycosides()), function now always returns warning can included using only_treatable = FALSE Added new argument return_all selectors, defaults TRUE include match. FALSE, old behaviour, first hit unique antimicrobial returned. selectors can now run separate command retrieve vector possible antimicrobials selector can select selectors lincosamides() macrolides() overlap anymore - antibiotic now classified either Added “clindamycin inducible screening” CLI1. Since clindamycin lincosamide, antimicrobial selector lincosamides() now contains argument only_treatable = TRUE (similar antibiotic selectors contain non-treatable drugs) Added Amorolfine (AMO, D01AE16), now also part antifungals() selector Added Efflux (EFF), allow mapping AMRFinderPlus Added Tigemonam (TNM), monobactam Added valid levels: 4096, 6 powers 0.0625, 5 powers 192 (192, 384, 576, 768, 960) Added new argument keep_operators .mic(). can \"\" (default), \"none\", \"edges\". argument also available new rescale_mic() scale_*_mic() functions. Comparisons MIC values now strict. example, >32 higher (never equal ) 32. Thus, .mic(\">32\") == .mic(32) now returns FALSE, .mic(\">32\") > .mic(32) now returns TRUE. Sorting MIC values (using sort()) fixed manner; <0.001 now gets sorted 0.001, >0.001 gets sorted 0.001. Intermediate log2 levels used MIC plotting now common values instead following strict dilution range eucast_rules() now argument overwrite (default: TRUE) indicate whether non-NA values overwritten Disks 0 5 mm now allowed, newly allowed range disk diffusion (.disk()) now 0 50 mm Updated italicise_taxonomy() support HTML output custom_eucast_rules() now supports multiple antibiotics antibiotic groups affected single rule mo_info() now contains extra element rank group_members (contents new mo_group_members() function) Updated ATC codes WHOCC Updated antibiotic DDDs WHOCC Added 1,500 trade names antibiotics Fix using manual value mo_transform antibiogram() Fixed bug antibiogram() returns empty data set Fix mapping ‘high level’ antibiotics .ab() (amphotericin B-high, gentamicin-high, kanamycin-high, streptomycin-high, tobramycin-high) Improved overall algorithm .ab() better performance accuracy weight given genus species combinations cases subspecies miswritten, result correct genus species Genera World Health Organization’s () Priority Pathogen List now highest prevalence Fixed bug sir_confidence_interval() isolates available Updated prevalence calculation include genera World Health Organization’s () Priority Pathogen List Improved algorithm first_isolate() using phenotype-based method, prioritise records highest availability SIR values scale_y_percent() can now cope ranges outside 0-100% range Implemented new Dutch national MDRO guideline (SRI-richtlijn BRMO, Nov 2024) Added arguments esbl, carbapenemase, mecA, mecC, vanA, vanB denote column names logical values indicating presence genes (production proteins) Added console colours support sir class Positron","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"other-2-1-1-9143","dir":"Changelog","previous_headings":"","what":"Other","title":"AMR 2.1.1.9143","text":"Added Dr. Larisse Bolton contributor fantastic implementation WISCA mathematically solid way Added Matthew Saab, Dr. Jordan Stull, Prof. Javier Sanchez contributors tremendous input veterinary breakpoints interpretations Greatly improved vctrs integration, Tidyverse package working background many Tidyverse functions. users, means functions dplyr’s bind_rows(), rowwise() c_across() now supported e.g. columns class mic. Despite , AMR package still zero-dependent package, including dplyr vctrs. Greatly updated expanded documentation Stopped support SAS (.xpt) files, since file structure extremely inefficient requires disk space GitHub allows single commit.","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"older-versions-2-1-1-9143","dir":"Changelog","previous_headings":"","what":"Older Versions","title":"AMR 2.1.1.9143","text":"changelog contains changes AMR v3.0 (February 2025) later. prior v2 versions, please see v2 archive. prior v1 versions, please see v1 archive.","code":""}]
+[{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"How to conduct AMR data analysis","text":"Conducting AMR data analysis unfortunately requires -depth knowledge different scientific fields, makes hard right. least, requires: Good questions (always start !) reliable data thorough understanding (clinical) epidemiology, understand clinical epidemiological relevance possible bias results thorough understanding (clinical) microbiology/infectious diseases, understand microorganisms causal infections implications pharmaceutical treatment, well understanding intrinsic acquired microbial resistance Experience data analysis microbiological tests results, understand determination limitations MIC values interpretations SIR values Availability biological taxonomy microorganisms probably normalisation factors pharmaceuticals, defined daily doses (DDD) Available (inter-)national guidelines, profound methods apply course, instantly provide knowledge experience. AMR package, aimed providing (1) tools simplify antimicrobial resistance data cleaning, transformation analysis, (2) methods easily incorporate international guidelines (3) scientifically reliable reference data, including requirements mentioned . AMR package enables standardised reproducible AMR data analysis, application evidence-based rules, determination first isolates, translation various codes microorganisms antimicrobial agents, determination (multi-drug) resistant microorganisms, calculation antimicrobial resistance, prevalence future trends.","code":""},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"preparation","dir":"Articles","previous_headings":"","what":"Preparation","title":"How to conduct AMR data analysis","text":"tutorial, create fake demonstration data work . can skip Cleaning data already data ready. start analysis, try make structure data generally look like :","code":""},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"needed-r-packages","dir":"Articles","previous_headings":"Preparation","what":"Needed R packages","title":"How to conduct AMR data analysis","text":"many uses R, need additional packages AMR data analysis. package works closely together tidyverse packages dplyr ggplot2 RStudio. tidyverse tremendously improves way conduct data science - allows natural way writing syntaxes creating beautiful plots R. also use cleaner package, can used cleaning data creating frequency tables. AMR package contains data set example_isolates_unclean, might look data users extracted laboratory systems: AMR data analysis, like microorganism column contain valid, --date taxonomy, antibiotic columns cleaned SIR values well.","code":"library(dplyr) library(ggplot2) library(AMR)  # (if not yet installed, install with:) # install.packages(c(\"dplyr\", \"ggplot2\", \"AMR\")) example_isolates_unclean #> # A tibble: 3,000 × 8 #>    patient_id hospital date       bacteria      AMX   AMC   CIP   GEN   #>    <chr>      <chr>    <date>     <chr>         <chr> <chr> <chr> <chr> #>  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://msberends.github.io/AMR/articles/AMR.html","id":"taxonomy-of-microorganisms","dir":"Articles","previous_headings":"Preparation","what":"Taxonomy of microorganisms","title":"How to conduct AMR data analysis","text":".mo(), users can transform arbitrary microorganism names codes current taxonomy. AMR package contains --date taxonomic data. specific, currently included data retrieved 24 Jun 2024. codes AMR packages come .mo() short, still human readable. importantly, .mo() supports kinds input: first character codes denote taxonomic kingdom, Bacteria (B), Fungi (F), Protozoa (P). AMR package also contain functions directly retrieve taxonomic properties, name, genus, species, family, order, even Gram-stain. start mo_ use .mo() internally, still arbitrary user input can used: Now can thus clean data: Apparently, uncertainty translation taxonomic codes. Let’s check : ’s good.","code":"as.mo(\"Klebsiella pneumoniae\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"K. pneumoniae\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"KLEPNE\") #> Class 'mo' #> [1] B_KLBSL_PNMN as.mo(\"KLPN\") #> Class 'mo' #> [1] B_KLBSL_PNMN mo_family(\"K. pneumoniae\") #> [1] \"Enterobacteriaceae\" mo_genus(\"K. pneumoniae\") #> [1] \"Klebsiella\" mo_species(\"K. pneumoniae\") #> [1] \"pneumoniae\"  mo_gramstain(\"Klebsiella pneumoniae\") #> [1] \"Gram-negative\"  mo_ref(\"K. pneumoniae\") #> [1] \"Trevisan, 1887\"  mo_snomed(\"K. pneumoniae\") #> [[1]] #> [1] \"1098101000112102\" \"446870005\"        \"1098201000112108\" \"409801009\"        #> [5] \"56415008\"         \"714315002\"        \"713926009\" our_data$bacteria <- as.mo(our_data$bacteria, info = TRUE) #> ℹ 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 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), Kosakonia pseudosacchari #>               (0.361), and Kluyveromyces pseudotropicalis pseudotropicalis (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://msberends.github.io/AMR/articles/AMR.html","id":"antibiotic-results","dir":"Articles","previous_headings":"Preparation","what":"Antibiotic results","title":"How to conduct AMR data analysis","text":"column antibiotic test results must also cleaned. AMR package comes three new data types work test results: mic minimal inhibitory concentrations (MIC), disk disk diffusion diameters, sir SIR data interpreted already. package can also determine SIR values based MIC disk diffusion values, read .sir() page. now, just clean SIR columns data using dplyr: basically cleaning, time start data inclusion.","code":"# method 1, be explicit about the columns: our_data <- our_data %>%   mutate_at(vars(AMX:GEN), as.sir)  # method 2, let the AMR package determine the eligible columns our_data <- our_data %>%   mutate_if(is_sir_eligible, as.sir)  # result: our_data #> # A tibble: 3,000 × 8 #>    patient_id hospital date       bacteria     AMX   AMC   CIP   GEN   #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> #>  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://msberends.github.io/AMR/articles/AMR.html","id":"first-isolates","dir":"Articles","previous_headings":"Preparation","what":"First isolates","title":"How to conduct AMR data analysis","text":"need know isolates can actually use analysis without repetition bias. conduct analysis antimicrobial resistance, must include first isolate every patient per episode (Hindler et al., Clin Infect Dis. 2007). , easily get overestimate underestimate resistance antibiotic. Imagine patient admitted MRSA found 5 different blood cultures following weeks (yes, countries like Netherlands blood drawing policies). resistance percentage oxacillin isolates overestimated, included MRSA . clearly selection bias. Clinical Laboratory Standards Institute (CLSI) appoints follows: (…) preparing cumulative antibiogram guide clinical decisions empirical antimicrobial therapy initial infections, first isolate given species per patient, per analysis period (eg, one year) included, irrespective body site, antimicrobial susceptibility profile, phenotypical characteristics (eg, biotype). first isolate easily identified, cumulative antimicrobial susceptibility test data prepared using first isolate generally comparable cumulative antimicrobial susceptibility test data calculated methods, providing duplicate isolates excluded. M39-A4 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 4th Edition. CLSI, 2014. Chapter 6.4 AMR package includes methodology first_isolate() function able apply four different methods defined Hindler et al. 2007: phenotype-based, episode-based, patient-based, isolate-based. right method depends goals analysis, default phenotype-based method case method properly correct duplicate isolates. Read methods first_isolate() page. outcome function can easily added data: 91% suitable resistance analysis! can now filter filter() function, also dplyr package: future use, two syntaxes can shortened: end 2 724 isolates analysis. Now data looks like: Time analysis.","code":"our_data <- our_data %>%   mutate(first = first_isolate(info = TRUE)) #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Using column 'bacteria' as input for col_mo. #> ℹ Using column 'date' as input for col_date. #> ℹ Using column 'patient_id' as input for col_patient_id. #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #>   of 2 #> => Found 2,724 'phenotype-based' first isolates (90.8% of total where a #>    microbial ID was available) our_data_1st <- our_data %>%   filter(first == TRUE) our_data_1st <- our_data %>%   filter_first_isolate() our_data_1st #> # A tibble: 2,724 × 9 #>    patient_id hospital date       bacteria     AMX   AMC   CIP   GEN   first #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> <lgl> #>  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://msberends.github.io/AMR/articles/AMR.html","id":"analysing-the-data","dir":"Articles","previous_headings":"","what":"Analysing the data","title":"How to conduct AMR data analysis","text":"base R summary() function gives good first impression, comes support new mo sir classes now data set:","code":"summary(our_data_1st) #>   patient_id          hospital              date            #>  Length:2724        Length:2724        Min.   :2011-01-01   #>  Class :character   Class :character   1st Qu.:2013-04-07   #>  Mode  :character   Mode  :character   Median :2015-06-03   #>                                        Mean   :2015-06-09   #>                                        3rd Qu.:2017-08-11   #>                                        Max.   :2019-12-27   #>    bacteria               AMX                    AMC                 #>  Class :mo             Class:sir              Class:sir              #>  <NA>  :0              %S   :41.6% (n=1133)   %S   :52.6% (n=1432)   #>  Unique:4              %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)      #>  #1    :B_ESCHR_COLI   %I   :16.4% (n=446)    %I   :12.2% (n=333)    #>  #2    :B_STPHY_AURS   %R   :42.0% (n=1145)   %R   :35.2% (n=959)    #>  #3    :B_STRPT_PNMN   %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)      #>     CIP                    GEN                  first         #>  Class:sir              Class:sir              Mode:logical   #>  %S   :52.5% (n=1431)   %S   :61.0% (n=1661)   TRUE:2724      #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)                     #>  %I   : 6.5% (n=176)    %I   : 3.0% (n=82)                    #>  %R   :41.0% (n=1117)   %R   :36.0% (n=981)                   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)  glimpse(our_data_1st) #> Rows: 2,724 #> Columns: 9 #> $ patient_id <chr> \"J3\", \"R7\", \"P3\", \"P10\", \"B7\", \"W3\", \"M3\", \"J3\", \"G6\", \"P4\"… #> $ hospital   <chr> \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\", \"A\",… #> $ date       <date> 2012-11-21, 2018-04-03, 2014-09-19, 2015-12-10, 2015-03-02… #> $ bacteria   <mo> \"B_ESCHR_COLI\", \"B_KLBSL_PNMN\", \"B_ESCHR_COLI\", \"B_ESCHR_COL… #> $ AMX        <sir> R, R, R, S, S, R, R, S, S, S, S, R, S, S, R, R, R, R, S, R,… #> $ AMC        <sir> I, I, S, I, S, S, S, S, S, S, S, S, S, S, S, S, S, R, S, S,… #> $ CIP        <sir> S, S, S, S, S, R, S, S, S, S, S, S, S, S, S, S, S, S, S, S,… #> $ GEN        <sir> S, S, S, S, S, S, S, S, S, S, S, R, S, S, S, S, S, S, S, S,… #> $ first      <lgl> 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://msberends.github.io/AMR/articles/AMR.html","id":"availability-of-species","dir":"Articles","previous_headings":"Analysing the data","what":"Availability of species","title":"How to conduct AMR data analysis","text":"just get idea species distributed, create frequency table count() based name microorganisms:","code":"our_data %>%   count(mo_name(bacteria), sort = TRUE) #> # A tibble: 4 × 2 #>   `mo_name(bacteria)`          n #>   <chr>                    <int> #> 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 #>   <chr>                    <int> #> 1 Escherichia coli          1321 #> 2 Staphylococcus aureus      682 #> 3 Streptococcus pneumoniae   402 #> 4 Klebsiella pneumoniae      319"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"select-and-filter-with-antibiotic-selectors","dir":"Articles","previous_headings":"Analysing the data","what":"Select and filter with antibiotic selectors","title":"How to conduct AMR data analysis","text":"Using -called antibiotic class selectors, can select filter columns based antibiotic class antibiotic results :","code":"our_data_1st %>%   select(date, aminoglycosides()) #> ℹ For aminoglycosides() using column 'GEN' (gentamicin) #> # A tibble: 2,724 × 2 #>    date       GEN   #>    <date>     <sir> #>  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   #>    <mo>         <sir> <sir> #>  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   #>    <mo>         <sir> <sir> <sir> <sir> #>  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 #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> <lgl> #>  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 #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> <lgl> #>  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 #>    <chr>      <chr>    <date>     <mo>         <sir> <sir> <sir> <sir> <lgl> #>  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://msberends.github.io/AMR/articles/AMR.html","id":"generate-antibiograms","dir":"Articles","previous_headings":"Analysing the data","what":"Generate antibiograms","title":"How to conduct AMR data analysis","text":"Since AMR v2.0 (March 2023), easy create different types antibiograms, support 20 different languages. four antibiogram types, proposed Klinker et al. (2021, DOI 10.1177/20499361211011373), supported new antibiogram() function: Traditional Antibiogram (TA) e.g, susceptibility Pseudomonas aeruginosa piperacillin/tazobactam (TZP) Combination Antibiogram (CA) e.g, sdditional susceptibility Pseudomonas aeruginosa TZP + tobramycin versus TZP alone Syndromic Antibiogram (SA) e.g, susceptibility Pseudomonas aeruginosa TZP among respiratory specimens (obtained among ICU patients ) Weighted-Incidence Syndromic Combination Antibiogram (WISCA) e.g, susceptibility Pseudomonas aeruginosa TZP among respiratory specimens (obtained among ICU patients ) male patients age >=65 years heart failure section, show use antibiogram() function create antibiogram types. starters, included example_isolates data set looks like:","code":"example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"traditional-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Traditional Antibiogram","title":"How to conduct AMR data analysis","text":"create traditional antibiogram, simply state antibiotics used. antibiotics argument antibiogram() function supports (combination) previously mentioned antibiotic class selectors: Notice antibiogram() function automatically prints right format using Quarto R Markdown (page), even applies italics taxonomic names (using italicise_taxonomy() internally). also uses language OS either English, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Italian, Japanese, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian. next example, force language Spanish using language argument:","code":"antibiogram(example_isolates,             antibiotics = c(aminoglycosides(), carbapenems())) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) antibiogram(example_isolates,             mo_transform = \"gramstain\",             antibiotics = aminoglycosides(),             ab_transform = \"name\",             language = \"es\") #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin)"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"combined-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Combined Antibiogram","title":"How to conduct AMR data analysis","text":"create combined antibiogram, use antibiotic codes names plus + character like :","code":"antibiogram(example_isolates,             antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"))"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"syndromic-antibiogram","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Syndromic Antibiogram","title":"How to conduct AMR data analysis","text":"create syndromic antibiogram, syndromic_group argument must used. can column data, e.g. ifelse() calculations based certain columns:","code":"antibiogram(example_isolates,             antibiotics = c(aminoglycosides(), carbapenems()),             syndromic_group = \"ward\") #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem)"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"weighted-incidence-syndromic-combination-antibiogram-wisca","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Weighted-Incidence Syndromic Combination Antibiogram (WISCA)","title":"How to conduct AMR data analysis","text":"create WISCA, must state combination therapy antibiotics argument (similar Combination Antibiogram), define syndromic group syndromic_group argument (similar Syndromic Antibiogram) cases predefined based clinical demographic characteristics (e.g., endocarditis 75+ females). next example simplification without clinical characteristics, just gives idea WISCA can created:","code":"wisca <- antibiogram(example_isolates,                      antibiotics = c(\"AMC\", \"AMC+CIP\", \"TZP\", \"TZP+TOB\"),                      mo_transform = \"gramstain\",                      minimum = 10, # this should be >= 30, but now just as example                      syndromic_group = ifelse(example_isolates$age >= 65 &                                                 example_isolates$gender == \"M\",                                               \"WISCA Group 1\", \"WISCA Group 2\")) wisca"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"plotting-antibiograms","dir":"Articles","previous_headings":"Analysing the data > Generate antibiograms","what":"Plotting antibiograms","title":"How to conduct AMR data analysis","text":"Antibiograms can plotted using autoplot() ggplot2 packages, since AMR package provides extension function:  calculate antimicrobial resistance sensible way, also correcting results, use resistance() susceptibility() functions.","code":"autoplot(wisca)"},{"path":"https://msberends.github.io/AMR/articles/AMR.html","id":"resistance-percentages","dir":"Articles","previous_headings":"Analysing the data","what":"Resistance percentages","title":"How to conduct AMR data analysis","text":"functions resistance() susceptibility() can used calculate antimicrobial resistance susceptibility. specific analyses, functions proportion_S(), proportion_SI(), proportion_I(), proportion_IR() proportion_R() can used determine proportion specific antimicrobial outcome. functions contain minimum argument, denoting minimum required number test results returning value. functions otherwise return NA. default minimum = 30, following CLSI M39-A4 guideline applying microbial epidemiology. per EUCAST guideline 2019, calculate resistance proportion R (proportion_R(), equal resistance()) susceptibility proportion S (proportion_SI(), equal susceptibility()). functions can used : can used conjunction group_by() summarise(), dplyr package: Author: Dr. Matthijs Berends, 26th Feb 2023","code":"our_data_1st %>% resistance(AMX) #> [1] 0.4203377 our_data_1st %>%   group_by(hospital) %>%   summarise(amoxicillin = resistance(AMX)) #> # A tibble: 3 × 2 #>   hospital amoxicillin #>   <chr>          <dbl> #> 1 A              0.340 #> 2 B              0.551 #> 3 C              0.370"},{"path":"https://msberends.github.io/AMR/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 Index. Python package wrapper round 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://msberends.github.io/AMR/articles/AMR_for_Python.html","id":"install","dir":"Articles","previous_headings":"","what":"Install","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://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/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://msberends.github.io/AMR/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, antibiotics, clinical_breakpoints, example_isolates, now available regular Python data frames:","code":"AMR.microorganisms AMR.antibiotics"},{"path":"https://msberends.github.io/AMR/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://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"objective","dir":"Articles","previous_headings":"","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://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"data-preparation","dir":"Articles","previous_headings":"","what":"Data Preparation","title":"AMR with tidymodels","text":"begin loading required libraries preparing example_isolates dataset AMR package. Explanation: aminoglycosides() betalactams() dynamically select columns antibiotics classes. drop_na() ensures model receives complete cases training.","code":"# Load required libraries library(tidymodels)   # For machine learning workflows, and data manipulation (dplyr, tidyr, ...) #> ── Attaching packages ────────────────────────────────────── tidymodels 1.2.0 ── #> ✔ broom        1.0.7     ✔ recipes      1.1.0 #> ✔ dials        1.3.0     ✔ rsample      1.2.1 #> ✔ dplyr        1.1.4     ✔ tibble       3.2.1 #> ✔ ggplot2      3.5.1     ✔ tidyr        1.3.1 #> ✔ infer        1.0.7     ✔ tune         1.2.1 #> ✔ modeldata    1.4.0     ✔ workflows    1.1.4 #> ✔ parsnip      1.2.1     ✔ workflowsets 1.1.0 #> ✔ purrr        1.0.4     ✔ yardstick    1.3.2 #> ── Conflicts ───────────────────────────────────────── tidymodels_conflicts() ── #> ✖ purrr::discard() masks scales::discard() #> ✖ dplyr::filter()  masks stats::filter() #> ✖ dplyr::lag()     masks stats::lag() #> ✖ recipes::step()  masks stats::step() #> • Use tidymodels_prefer() to resolve common conflicts. library(AMR)          # For AMR data analysis  # Load the example_isolates dataset data(\"example_isolates\")  # Preloaded dataset with AMR results  # 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://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"defining-the-workflow","dir":"Articles","previous_headings":"","what":"Defining the Workflow","title":"AMR with tidymodels","text":"now define tidymodels workflow, consists three steps: preprocessing, model specification, fitting.","code":""},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"preprocessing-with-a-recipe","dir":"Articles","previous_headings":"Defining the Workflow","what":"1. Preprocessing with a Recipe","title":"AMR with tidymodels","text":"create recipe preprocess data modelling. 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 antibiotic selector functions - need define columns specifically.","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())"},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"specifying-the-model","dir":"Articles","previous_headings":"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 Generalized Linear Model engine logistic_model #> Logistic Regression Model Specification (classification) #>  #> Computational engine: glm"},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"building-the-workflow","dir":"Articles","previous_headings":"Defining the Workflow","what":"3. Building the Workflow","title":"AMR with tidymodels","text":"bundle recipe model together workflow, organizes entire modeling 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"},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"training-and-evaluating-the-model","dir":"Articles","previous_headings":"","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(), antibiotic 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 based AMR results 0.995 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 #> ℹ 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) # 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 #>    <fct>                         <dbl>                 <dbl> <fct>   <int> <int> #>  1 Gram-positive              1.07e- 1              8.93e- 1 Gram-p…     5     5 #>  2 Gram-positive              3.17e- 8              1.00e+ 0 Gram-p…     5     1 #>  3 Gram-negative              9.99e- 1              1.42e- 3 Gram-n…     5     5 #>  4 Gram-positive              2.22e-16              1   e+ 0 Gram-p…     5     5 #>  5 Gram-negative              9.46e- 1              5.42e- 2 Gram-n…     5     5 #>  6 Gram-positive              1.07e- 1              8.93e- 1 Gram-p…     5     5 #>  7 Gram-positive              2.22e-16              1   e+ 0 Gram-p…     1     5 #>  8 Gram-positive              2.22e-16              1   e+ 0 Gram-p…     4     4 #>  9 Gram-negative              1   e+ 0              2.22e-16 Gram-n…     1     1 #> 10 Gram-positive              6.05e-11              1.00e+ 0 Gram-p…     4     4 #> # ℹ 384 more rows #> # ℹ 18 more variables: AMK <int>, KAN <int>, PEN <int>, OXA <int>, FLC <int>, #> #   AMX <int>, AMC <int>, AMP <int>, TZP <int>, CZO <int>, FEP <int>, #> #   CXM <int>, FOX <int>, CTX <int>, CAZ <int>, CRO <int>, IPM <int>, MEM <int>  # Evaluate model performance metrics <- predictions %>%   metrics(truth = mo, estimate = .pred_class) # Calculate performance metrics  metrics #> # A tibble: 2 × 3 #>   .metric  .estimator .estimate #>   <chr>    <chr>          <dbl> #> 1 accuracy binary         0.995 #> 2 kap      binary         0.989 predictions %>%   roc_curve(mo, `.pred_Gram-negative`) %>%   autoplot()"},{"path":"https://msberends.github.io/AMR/articles/AMR_with_tidymodels.html","id":"conclusion","dir":"Articles","previous_headings":"","what":"Conclusion","title":"AMR with tidymodels","text":"post, demonstrated build machine learning pipeline tidymodels framework AMR package. combining selector functions like aminoglycosides() betalactams() tidymodels, efficiently prepared data, trained model, evaluated performance. workflow extensible antibiotic classes resistance patterns, empowering users analyse AMR data systematically reproducibly.","code":""},{"path":"https://msberends.github.io/AMR/articles/EUCAST.html","id":"introduction","dir":"Articles","previous_headings":"","what":"Introduction","title":"How to apply EUCAST rules","text":"EUCAST rules? European Committee Antimicrobial Susceptibility Testing (EUCAST) states website: EUCAST expert rules tabulated collection expert knowledge intrinsic resistances, exceptional resistance phenotypes interpretive rules may applied antimicrobial susceptibility testing order reduce errors make appropriate recommendations reporting particular resistances. Europe, lot medical microbiological laboratories already apply rules (Brown et al., 2015). package features latest insights intrinsic resistance unusual phenotypes (v3.1, 2016). Moreover, eucast_rules() function use purpose can also apply additional rules, like forcing ampicillin = R isolates amoxicillin/clavulanic acid = R.","code":""},{"path":"https://msberends.github.io/AMR/articles/EUCAST.html","id":"examples","dir":"Articles","previous_headings":"","what":"Examples","title":"How to apply EUCAST rules","text":"rules can used discard impossible bug-drug combinations data. example, Klebsiella produces beta-lactamase prevents ampicillin (amoxicillin) working . words, practically every strain Klebsiella resistant ampicillin. Sometimes, laboratory data can still contain strains ampicillin susceptible ampicillin. antibiogram available identification available, antibiogram re-interpreted based identification (namely, Klebsiella). EUCAST expert rules solve , can applied using eucast_rules(): convenient function mo_is_intrinsic_resistant() uses guideline, allows check one specific microorganisms antibiotics: EUCAST rules can used correction, can also used filling known resistance susceptibility based results antimicrobials drugs. process called interpretive reading, basically form imputation, part eucast_rules() function well:","code":"oops <- data.frame(   mo = c(     \"Klebsiella\",     \"Escherichia\"   ),   ampicillin = \"S\" ) oops #>            mo ampicillin #> 1  Klebsiella          S #> 2 Escherichia          S  eucast_rules(oops, info = FALSE) #>            mo ampicillin #> 1  Klebsiella          R #> 2 Escherichia          S mo_is_intrinsic_resistant(   c(\"Klebsiella\", \"Escherichia\"),   \"ampicillin\" ) #> [1]  TRUE FALSE  mo_is_intrinsic_resistant(   \"Klebsiella\",   c(\"ampicillin\", \"kanamycin\") ) #> [1]  TRUE FALSE data <- data.frame(   mo = c(     \"Staphylococcus aureus\",     \"Enterococcus faecalis\",     \"Escherichia coli\",     \"Klebsiella pneumoniae\",     \"Pseudomonas aeruginosa\"   ),   VAN = \"-\", # Vancomycin   AMX = \"-\", # Amoxicillin   COL = \"-\", # Colistin   CAZ = \"-\", # Ceftazidime   CXM = \"-\", # Cefuroxime   PEN = \"S\", # Benzylenicillin   FOX = \"S\", # Cefoxitin   stringsAsFactors = FALSE ) data eucast_rules(data)"},{"path":"https://msberends.github.io/AMR/articles/MDR.html","id":"type-of-input","dir":"Articles","previous_headings":"","what":"Type of input","title":"How to determine multi-drug resistance (MDR)","text":"mdro() function takes data set input, regular data.frame. tries automatically determine right columns info isolates, name species columns results antimicrobial agents. See help page info set right settings data command ?mdro. WHONET data (data), settings automatically set correctly.","code":""},{"path":"https://msberends.github.io/AMR/articles/MDR.html","id":"guidelines","dir":"Articles","previous_headings":"","what":"Guidelines","title":"How to determine multi-drug resistance (MDR)","text":"mdro() function support multiple guidelines. can select guideline guideline parameter. Currently supported guidelines (case-insensitive): guideline = \"CMI2012\" (default) Magiorakos AP, Srinivasan et al. “Multidrug-resistant, extensively drug-resistant pandrug-resistant bacteria: international expert proposal interim standard definitions acquired resistance.” Clinical Microbiology Infection (2012) (link) guideline = \"EUCAST3.2\" (simply guideline = \"EUCAST\") European international guideline - EUCAST Expert Rules Version 3.2 “Intrinsic Resistance Unusual Phenotypes” (link) guideline = \"EUCAST3.1\" European international guideline - EUCAST Expert Rules Version 3.1 “Intrinsic Resistance Exceptional Phenotypes Tables” (link) guideline = \"TB\" international guideline multi-drug resistant tuberculosis - World Health Organization “Companion handbook guidelines programmatic management drug-resistant tuberculosis” (link) guideline = \"MRGN\" German national guideline - Mueller et al. (2015) Antimicrobial Resistance Infection Control 4:7. DOI: 10.1186/s13756-015-0047-6 guideline = \"BRMO\" Dutch national guideline - Rijksinstituut voor Volksgezondheid en Milieu “WIP-richtlijn BRMO (Bijzonder Resistente Micro-Organismen) (ZKH)” (link) Please suggest (country-specific) guidelines letting us know: https://github.com/msberends/AMR/issues/new.","code":""},{"path":"https://msberends.github.io/AMR/articles/MDR.html","id":"custom-guidelines","dir":"Articles","previous_headings":"Guidelines","what":"Custom Guidelines","title":"How to determine multi-drug resistance (MDR)","text":"can also use custom guideline. Custom guidelines can set custom_mdro_guideline() function. great importance custom rules determine MDROs hospital, e.g., rules dependent ward, state contact isolation variables data. familiar case_when() dplyr package, recognise input method set rules. Rules must set using R considers ‘formula notation’: row/isolate matches first rule, value first ~ (case ‘Elderly Type ’) set MDRO value. Otherwise, second rule tried . maximum number rules unlimited. can print rules set console overview. Colours help reading console supports colours. outcome function can used guideline argument mdro() function: rules set (custom object case) exported shared file location using saveRDS() collaborate multiple users. custom rules set imported using readRDS().","code":"custom <- custom_mdro_guideline(   CIP == \"R\" & age > 60 ~ \"Elderly Type A\",   ERY == \"R\" & age > 60 ~ \"Elderly Type B\" ) custom #> A set of custom MDRO rules: #>   1. If CIP is  R  and age is higher than 60 then: Elderly Type A #>   2. If ERY is  R  and age is higher than 60 then: Elderly Type B #>   3. Otherwise: Negative #>  #> Unmatched rows will return NA. #> Results will be of class 'factor', with ordered levels: Negative < Elderly Type A < Elderly Type B x <- mdro(example_isolates, guideline = custom) table(x) #> x #>       Negative Elderly Type A Elderly Type B  #>           1070            198            732"},{"path":"https://msberends.github.io/AMR/articles/MDR.html","id":"examples","dir":"Articles","previous_headings":"","what":"Examples","title":"How to determine multi-drug resistance (MDR)","text":"mdro() function always returns ordered factor predefined guidelines. example, output default guideline Magiorakos et al. returns factor levels ‘Negative’, ‘MDR’, ‘XDR’ ‘PDR’ order. next example uses example_isolates data set. data set included package contains full antibiograms 2,000 microbial isolates. reflects reality can used practise AMR data analysis. test MDR/XDR/PDR guideline data set, get: Frequency table Class: factor > ordered (numeric) Length: 2,000 Levels: 4: Negative < Multi-drug-resistant (MDR) < Extensively drug-resistant … Available: 1,745 (87.25%, NA: 255 = 12.75%) Unique: 2 another example, create data set determine multi-drug resistant TB: column names automatically verified valid drug names codes, worked exactly way: data set now looks like : can now add interpretation MDR-TB data set. can use: shortcut mdr_tb(): Create frequency table results: Frequency table Class: factor > ordered (numeric) Length: 5,000 Levels: 5: Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant <… Available: 5,000 (100%, NA: 0 = 0%) Unique: 5","code":"library(dplyr) # to support pipes: %>% library(cleaner) # to create frequency tables example_isolates %>%   mdro() %>%   freq() # show frequency table of the result #> Warning: in mdro(): NA introduced for isolates where the available percentage of #> antimicrobial classes was below 50% (set with pct_required_classes) # random_sir() is a helper function to generate # a random vector with values S, I and R my_TB_data <- data.frame(   rifampicin = random_sir(5000),   isoniazid = random_sir(5000),   gatifloxacin = random_sir(5000),   ethambutol = random_sir(5000),   pyrazinamide = random_sir(5000),   moxifloxacin = random_sir(5000),   kanamycin = random_sir(5000) ) my_TB_data <- data.frame(   RIF = random_sir(5000),   INH = random_sir(5000),   GAT = random_sir(5000),   ETH = random_sir(5000),   PZA = random_sir(5000),   MFX = random_sir(5000),   KAN = random_sir(5000) ) head(my_TB_data) #>   rifampicin isoniazid gatifloxacin ethambutol pyrazinamide moxifloxacin #> 1          I         R            S          S            S            S #> 2          S         S            I          R            R            S #> 3          R         I            I          I            R            I #> 4          I         S            S          S            S            S #> 5          I         I            I          S            I            S #> 6          R         S            R          S            I            I #>   kanamycin #> 1         R #> 2         I #> 3         S #> 4         I #> 5         I #> 6         I mdro(my_TB_data, guideline = \"TB\") my_TB_data$mdr <- mdr_tb(my_TB_data) #> ℹ No column found as input for col_mo, assuming all rows contain #>   Mycobacterium tuberculosis. freq(my_TB_data$mdr)"},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/PCA.html","id":"transforming","dir":"Articles","previous_headings":"","what":"Transforming","title":"How to conduct principal component analysis (PCA) for AMR","text":"PCA, need transform AMR data first. example_isolates data set package looks like: Now transform data set resistance percentages per taxonomic order genus:","code":"library(AMR) library(dplyr) glimpse(example_isolates) #> Rows: 2,000 #> Columns: 46 #> $ date    <date> 2002-01-02, 2002-01-03, 2002-01-07, 2002-01-07, 2002-01-13, 2… #> $ patient <chr> \"A77334\", \"A77334\", \"067927\", \"067927\", \"067927\", \"067927\", \"4… #> $ age     <dbl> 65, 65, 45, 45, 45, 45, 78, 78, 45, 79, 67, 67, 71, 71, 75, 50… #> $ gender  <chr> \"F\", \"F\", \"F\", \"F\", \"F\", \"F\", \"M\", \"M\", \"F\", \"F\", \"M\", \"M\", \"M… #> $ ward    <chr> \"Clinical\", \"Clinical\", \"ICU\", \"ICU\", \"ICU\", \"ICU\", \"Clinical\"… #> $ mo      <mo> \"B_ESCHR_COLI\", \"B_ESCHR_COLI\", \"B_STPHY_EPDR\", \"B_STPHY_EPDR\",… #> $ PEN     <sir> R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, R, S,… #> $ OXA     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ FLC     <sir> NA, NA, R, R, R, R, S, S, R, S, S, S, NA, NA, NA, NA, NA, R, R… #> $ AMX     <sir> NA, NA, NA, NA, NA, NA, R, R, NA, NA, NA, NA, NA, NA, R, NA, N… #> $ AMC     <sir> I, I, NA, NA, NA, NA, S, S, NA, NA, S, S, I, I, R, I, I, NA, N… #> $ AMP     <sir> NA, NA, NA, NA, NA, NA, R, R, NA, NA, NA, NA, NA, NA, R, NA, N… #> $ TZP     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ CZO     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, NA,… #> $ FEP     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ CXM     <sir> I, I, R, R, R, R, S, S, R, S, S, S, S, S, NA, S, S, R, R, S, S… #> $ FOX     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, NA,… #> $ CTX     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S… #> $ CAZ     <sir> NA, NA, R, R, R, R, R, R, R, R, R, R, NA, NA, NA, S, S, R, R, … #> $ CRO     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S… #> $ GEN     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ TOB     <sir> NA, NA, NA, NA, NA, NA, S, S, NA, NA, NA, NA, S, S, NA, NA, NA… #> $ AMK     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ KAN     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ TMP     <sir> R, R, S, S, R, R, R, R, S, S, NA, NA, S, S, S, S, S, R, R, R, … #> $ SXT     <sir> R, R, S, S, NA, NA, NA, NA, S, S, NA, NA, S, S, S, S, S, NA, N… #> $ NIT     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R,… #> $ FOS     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ LNZ     <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N… #> $ CIP     <sir> NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, NA, NA, NA, NA, S, S… #> $ MFX     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ VAN     <sir> R, R, S, S, S, S, S, S, S, S, NA, NA, R, R, R, R, R, S, S, S, … #> $ TEC     <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N… #> $ TCY     <sir> R, R, S, S, S, S, S, S, S, I, S, S, NA, NA, I, R, R, S, I, R, … #> $ TGC     <sir> NA, NA, S, S, S, S, S, S, S, NA, S, S, NA, NA, NA, R, R, S, NA… #> $ DOX     <sir> NA, NA, S, S, S, S, S, S, S, NA, S, S, NA, NA, NA, R, R, S, NA… #> $ ERY     <sir> R, R, R, R, R, R, S, S, R, S, S, S, R, R, R, R, R, R, R, R, S,… #> $ CLI     <sir> R, R, NA, NA, NA, R, NA, NA, NA, NA, NA, NA, R, R, R, R, R, NA… #> $ AZM     <sir> R, R, R, R, R, R, S, S, R, S, S, S, R, R, R, R, R, R, R, R, S,… #> $ IPM     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, S, S, NA, S, S… #> $ MEM     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ MTR     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ CHL     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ COL     <sir> NA, NA, R, R, R, R, R, R, R, R, R, R, NA, NA, NA, R, R, R, R, … #> $ MUP     <sir> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA… #> $ RIF     <sir> R, R, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, R, R, R, R, R, N… resistance_data <- example_isolates %>%   group_by(     order = mo_order(mo), # group on anything, like order     genus = mo_genus(mo)   ) %>% #  and genus as we do here   summarise_if(is.sir, resistance) %>% # then get resistance of all drugs   select(     order, genus, AMC, CXM, CTX,     CAZ, GEN, TOB, TMP, SXT   ) # and select only relevant columns  head(resistance_data) #> # A tibble: 6 × 10 #> # Groups:   order [5] #>   order             genus          AMC   CXM   CTX   CAZ   GEN   TOB   TMP   SXT #>   <chr>             <chr>        <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> #> 1 (unknown order)   (unknown ge…    NA    NA    NA    NA    NA    NA    NA    NA #> 2 Actinomycetales   Schaalia        NA    NA    NA    NA    NA    NA    NA    NA #> 3 Bacteroidales     Bacteroides     NA    NA    NA    NA    NA    NA    NA    NA #> 4 Campylobacterales Campylobact…    NA    NA    NA    NA    NA    NA    NA    NA #> 5 Caryophanales     Gemella         NA    NA    NA    NA    NA    NA    NA    NA #> 6 Caryophanales     Listeria        NA    NA    NA    NA    NA    NA    NA    NA"},{"path":"https://msberends.github.io/AMR/articles/PCA.html","id":"perform-principal-component-analysis","dir":"Articles","previous_headings":"","what":"Perform principal component analysis","title":"How to conduct principal component analysis (PCA) for AMR","text":"new pca() function automatically filter rows contain numeric values selected variables, now need : result can reviewed good old summary() function: Good news. first two components explain total 93.3% variance (see PC1 PC2 values Proportion Variance. can create -called biplot base R biplot() function, see antimicrobial resistance per drug explain difference per microorganism.","code":"pca_result <- pca(resistance_data) #> ℹ Columns selected for PCA: \"AMC\", \"CAZ\", \"CTX\", \"CXM\", \"GEN\", \"SXT\", #>   \"TMP\", and \"TOB\". Total observations available: 7. summary(pca_result) #> Groups (n=4, named as 'order'): #> [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 #> 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'): #> [1] \"Caryophanales\"    \"Enterobacterales\" \"Lactobacillales\"  \"Pseudomonadales\""},{"path":"https://msberends.github.io/AMR/articles/PCA.html","id":"plotting-the-results","dir":"Articles","previous_headings":"","what":"Plotting the results","title":"How to conduct principal component analysis (PCA) for AMR","text":"can’t see explanation points. Perhaps works better new ggplot_pca() function, automatically adds right labels even groups:  can also print ellipse per group, edit appearance:","code":"biplot(pca_result) ggplot_pca(pca_result) ggplot_pca(pca_result, ellipse = TRUE) +   ggplot2::labs(title = \"An AMR/PCA biplot!\")"},{"path":"https://msberends.github.io/AMR/articles/WHONET.html","id":"import-of-data","dir":"Articles","previous_headings":"","what":"Import of data","title":"How to work with WHONET data","text":"tutorial assumes already imported WHONET data e.g. readxl package. RStudio, can done using menu button ‘Import Dataset’ tab ‘Environment’. Choose option ‘Excel’ select exported file. Make sure date fields imported correctly. example syntax look like : package comes example data set WHONET. use analysis.","code":"library(readxl) data <- read_excel(path = \"path/to/your/file.xlsx\")"},{"path":"https://msberends.github.io/AMR/articles/WHONET.html","id":"preparation","dir":"Articles","previous_headings":"","what":"Preparation","title":"How to work with WHONET data","text":"First, load relevant packages yet . use tidyverse analyses. . don’t know yet, suggest read website: https://www.tidyverse.org/. transform variables simplify automate analysis: Microorganisms transformed microorganism codes (called mo) using Catalogue Life reference data set, contains ~70,000 microorganisms taxonomic kingdoms Bacteria, Fungi Protozoa. tranformation .mo(). function also recognises almost WHONET abbreviations microorganisms. Antimicrobial results interpretations clean valid. words, contain values \"S\", \"\" \"R\". exactly .sir() function . errors warnings, values transformed succesfully. also created package dedicated data cleaning checking, called cleaner package. freq() function can used create frequency tables. let’s check data, couple frequency tables: Frequency table Class: character Length: 500 Available: 500 (100%, NA: 0 = 0%) Unique: 38 Shortest: 11 Longest: 40 (omitted 28 entries, n = 57 [11.4%]) Frequency table Class: factor > ordered > sir (numeric) Length: 500 Levels: 5: S < SDD < < R < NI Available: 481 (96.2%, NA: 19 = 3.8%) Unique: 3 Drug: Amoxicillin/clavulanic acid (AMC, J01CR02) Drug group: Beta-lactams/penicillins %SI: 78.59%","code":"library(dplyr) # part of tidyverse library(ggplot2) # part of tidyverse library(AMR) # this package library(cleaner) # to create frequency tables # transform variables data <- WHONET %>%   # get microbial ID based on given organism   mutate(mo = as.mo(Organism)) %>%   # transform everything from \"AMP_ND10\" to \"CIP_EE\" to the new `sir` class   mutate_at(vars(AMP_ND10:CIP_EE), as.sir) # our newly created `mo` variable, put in the mo_name() function data %>% freq(mo_name(mo), nmax = 10) # our transformed antibiotic columns # amoxicillin/clavulanic acid (J01CR02) as an example data %>% freq(AMC_ND2)"},{"path":"https://msberends.github.io/AMR/articles/WHONET.html","id":"a-first-glimpse-at-results","dir":"Articles","previous_headings":"","what":"A first glimpse at results","title":"How to work with WHONET data","text":"easy ggplot already give lot information, using included ggplot_sir() function:","code":"data %>%   group_by(Country) %>%   select(Country, AMP_ND2, AMC_ED20, CAZ_ED10, CIP_ED5) %>%   ggplot_sir(translate_ab = \"ab\", facet = \"Country\", datalabels = FALSE)"},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"microorganisms-full-microbial-taxonomy","dir":"Articles","previous_headings":"","what":"microorganisms: Full Microbial Taxonomy","title":"Data sets for download / own use","text":"data set 78 678 rows 26 columns, containing following column names: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, snomed. data set R available microorganisms, load AMR package. last updated 4 October 2024 13:28:44 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (1.8 MB) Download tab-separated text file (17.7 MB) Download Microsoft Excel workbook (8.7 MB) Download Apache Feather file (8.3 MB) Download Apache Parquet file (3.8 MB) Download IBM SPSS Statistics data file (29 MB) Download Stata DTA file (92.5 MB) NOTE: exported files SPSS Stata contain first 50 SNOMED codes per record, file size otherwise exceed 100 MB; file size limit GitHub. file structures compression techniques inefficient. Advice? Use R instead. ’s free much better many ways. tab-separated text file Microsoft Excel workbook contain SNOMED codes comma separated values.","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source","dir":"Articles","previous_headings":"microorganisms: Full Microbial Taxonomy","what":"Source","title":"Data sets for download / own use","text":"data set contains full microbial taxonomy six kingdoms List Prokaryotic names Standing Nomenclature (LPSN), MycoBank, Global Biodiversity Information Facility (GBIF): Parte, AC et al. (2020). List Prokaryotic names Standing Nomenclature (LPSN) moves DSMZ. International Journal Systematic Evolutionary Microbiology, 70, 5607-5612; . Accessed https://lpsn.dsmz.de June 24th, 2024. Vincent, R et al (2013). MycoBank gearing new horizons. IMA Fungus, 4(2), 371-9; . Accessed https://www.mycobank.org June 24th, 2024. GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset . Accessed https://www.gbif.org June 24th, 2024. Reimer, LC et al. (2022). BacDive 2022: knowledge base standardized bacterial archaeal data. Nucleic Acids Res., 50(D1):D741-D74; . Accessed https://bacdive.dsmz.de July 16th, 2024. Public Health Information Network Vocabulary Access Distribution System (PHIN VADS). US Edition SNOMED CT 1 September 2020. Value Set Name ‘Microorganism’, OID 2.16.840.1.114222.4.11.1009 (v12). URL: https://www.cdc.gov/phin/php/phinvads/","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"example-content","dir":"Articles","previous_headings":"microorganisms: Full Microbial Taxonomy","what":"Example content","title":"Data sets for download / own use","text":"Included (sub)species per taxonomic kingdom: Example rows filtering genus Escherichia:","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"antibiotics-antibiotic-antifungal-drugs","dir":"Articles","previous_headings":"","what":"antibiotics: Antibiotic (+Antifungal) Drugs","title":"Data sets for download / own use","text":"data set 487 rows 14 columns, containing following column names:ab, cid, name, group, atc, atc_group1, atc_group2, abbreviations, synonyms, oral_ddd, oral_units, iv_ddd, iv_units, loinc. data set R available antibiotics, load AMR package. last updated 7 February 2025 17:01:22 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (42 kB) Download tab-separated text file (0.1 MB) Download Microsoft Excel workbook (74 kB) Download Apache Feather file (0.1 MB) Download Apache Parquet file (0.1 MB) Download IBM SPSS Statistics data file (0.4 MB) Download Stata DTA file (0.4 MB) tab-separated text, Microsoft Excel, SPSS, Stata files contain ATC codes, common abbreviations, trade names LOINC codes comma separated values.","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-1","dir":"Articles","previous_headings":"antibiotics: Antibiotic (+Antifungal) Drugs","what":"Source","title":"Data sets for download / own use","text":"data set contains EARS-Net ATC codes gathered WHONET, compound IDs PubChem. also contains brand names (synonyms) found PubChem Defined Daily Doses (DDDs) oral parenteral administration. ATC/DDD index Collaborating Centre Drug Statistics Methodology (note: may used commercial purposes, freely available CC website personal use) PubChem US National Library Medicine WHONET software 2019 LOINC (Logical Observation Identifiers Names Codes)","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"antivirals-antiviral-drugs","dir":"Articles","previous_headings":"","what":"antivirals: Antiviral Drugs","title":"Data sets for download / own use","text":"data set 120 rows 11 columns, containing following column names:av, name, atc, cid, atc_group, synonyms, oral_ddd, oral_units, iv_ddd, iv_units, loinc. data set R available antivirals, load AMR package. last updated 20 October 2023 12:51:48 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (6 kB) Download tab-separated text file (17 kB) Download Microsoft Excel workbook (16 kB) Download Apache Feather file (16 kB) Download Apache Parquet file (13 kB) Download IBM SPSS Statistics data file (32 kB) Download Stata DTA file (78 kB) tab-separated text, Microsoft Excel, SPSS, Stata files contain trade names LOINC codes comma separated values.","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-2","dir":"Articles","previous_headings":"antivirals: Antiviral Drugs","what":"Source","title":"Data sets for download / own use","text":"data set contains ATC codes gathered compound IDs PubChem. also contains brand names (synonyms) found PubChem Defined Daily Doses (DDDs) oral parenteral administration. ATC/DDD index Collaborating Centre Drug Statistics Methodology (note: may used commercial purposes, freely available CC website personal use) PubChem US National Library Medicine LOINC (Logical Observation Identifiers Names Codes)","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"clinical_breakpoints-interpretation-from-mic-values-disk-diameters-to-sir","dir":"Articles","previous_headings":"","what":"clinical_breakpoints: Interpretation from MIC values & disk diameters to SIR","title":"Data sets for download / own use","text":"data set 34 063 rows 14 columns, containing following column names:guideline, type, host, method, site, mo, rank_index, ab, ref_tbl, disk_dose, breakpoint_S, breakpoint_R, uti, is_SDD. data set R available clinical_breakpoints, load AMR package. last updated 29 September 2024 20:17:56 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (70 kB) Download tab-separated text file (3.1 MB) Download Microsoft Excel workbook (2 MB) Download Apache Feather file (1.5 MB) Download Apache Parquet file (0.1 MB) Download IBM SPSS Statistics data file (5.6 MB) Download Stata DTA file (9.3 MB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-3","dir":"Articles","previous_headings":"clinical_breakpoints: Interpretation from MIC values & disk diameters to SIR","what":"Source","title":"Data sets for download / own use","text":"data set contains interpretation rules MIC values disk diffusion diameters. Included guidelines CLSI (2011-2024) EUCAST (2011-2024). Clinical breakpoints package validated imported WHONET, free desktop Windows application developed supported Collaborating Centre Surveillance Antimicrobial Resistance. can read website. developers WHONET AMR package contact sharing work. highly appreciate development WHONET software. CEO CLSI chairman EUCAST endorsed work public use AMR package (consequently use breakpoints) June 2023, future development distributing clinical breakpoints discussed meeting CLSI, EUCAST, , developers WHONET AMR package. NOTE: AMR package (WHONET software well) contains internal methods apply guidelines, rather complex. example, breakpoints must applied certain species groups (case package available microorganisms.groups data set). important considered using breakpoints use.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"intrinsic_resistant-intrinsic-bacterial-resistance","dir":"Articles","previous_headings":"","what":"intrinsic_resistant: Intrinsic Bacterial Resistance","title":"Data sets for download / own use","text":"data set 301 583 rows 2 columns, containing following column names:mo ab. data set R available intrinsic_resistant, load AMR package. last updated 29 September 2024 20:17:56 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (0.1 MB) Download tab-separated text file (10.9 MB) Download Microsoft Excel workbook (3 MB) Download Apache Feather file (2.5 MB) Download Apache Parquet file (0.3 MB) Download IBM SPSS Statistics data file (16.2 MB) Download Stata DTA file (25 MB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-4","dir":"Articles","previous_headings":"intrinsic_resistant: Intrinsic Bacterial Resistance","what":"Source","title":"Data sets for download / own use","text":"data set contains defined intrinsic resistance EUCAST bug-drug combinations, based ‘EUCAST Expert Rules’ ‘EUCAST Intrinsic Resistance Unusual Phenotypes’ v3.3 (2021).","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"example-content-4","dir":"Articles","previous_headings":"intrinsic_resistant: Intrinsic Bacterial Resistance","what":"Example content","title":"Data sets for download / own use","text":"Example rows filtering Enterobacter cloacae:","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"dosage-dosage-guidelines-from-eucast","dir":"Articles","previous_headings":"","what":"dosage: Dosage Guidelines from EUCAST","title":"Data sets for download / own use","text":"data set 503 rows 9 columns, containing following column names:ab, name, type, dose, dose_times, administration, notes, original_txt, eucast_version. data set R available dosage, load AMR package. last updated 22 June 2023 13:10:59 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (3 kB) Download tab-separated text file (43 kB) Download Microsoft Excel workbook (25 kB) Download Apache Feather file (21 kB) Download Apache Parquet file (9 kB) Download IBM SPSS Statistics data file (64 kB) Download Stata DTA file (0.1 MB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-5","dir":"Articles","previous_headings":"dosage: Dosage Guidelines from EUCAST","what":"Source","title":"Data sets for download / own use","text":"EUCAST breakpoints used package based dosages data set. Currently included dosages data set meant :  (), ‘EUCAST Clinical Breakpoint Tables’ v11.0 (2021), ‘EUCAST Clinical Breakpoint Tables’ v12.0 (2022).","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"example_isolates-example-data-for-practice","dir":"Articles","previous_headings":"","what":"example_isolates: Example Data for Practice","title":"Data sets for download / own use","text":"data set 2 000 rows 46 columns, containing following column names:date, patient, age, gender, ward, mo, PEN, OXA, FLC, AMX, 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, RIF. data set R available example_isolates, load AMR package. last updated 15 June 2024 13:33:49 UTC. Find info structure data set .","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-6","dir":"Articles","previous_headings":"example_isolates: Example Data for Practice","what":"Source","title":"Data sets for download / own use","text":"data set contains randomised fictitious data, reflects reality can used practise AMR data analysis.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"example_isolates_unclean-example-data-for-practice","dir":"Articles","previous_headings":"","what":"example_isolates_unclean: Example Data for Practice","title":"Data sets for download / own use","text":"data set 3 000 rows 8 columns, containing following column names:patient_id, hospital, date, bacteria, AMX, AMC, CIP, GEN. data set R available example_isolates_unclean, load AMR package. last updated 27 August 2022 18:49:37 UTC. Find info structure data set .","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-7","dir":"Articles","previous_headings":"example_isolates_unclean: Example Data for Practice","what":"Source","title":"Data sets for download / own use","text":"data set contains randomised fictitious data, reflects reality can used practise AMR data analysis.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"microorganisms-groups-species-groups-and-microbiological-complexes","dir":"Articles","previous_headings":"","what":"microorganisms.groups: Species Groups and Microbiological Complexes","title":"Data sets for download / own use","text":"data set 521 rows 4 columns, containing following column names:mo_group, mo, mo_group_name, mo_name. data set R available microorganisms.groups, load AMR package. last updated 29 September 2024 20:17:56 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (5 kB) Download tab-separated text file (49 kB) Download Microsoft Excel workbook (19 kB) Download Apache Feather file (19 kB) Download Apache Parquet file (13 kB) Download IBM SPSS Statistics data file (63 kB) Download Stata DTA file (81 kB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-8","dir":"Articles","previous_headings":"microorganisms.groups: Species Groups and Microbiological Complexes","what":"Source","title":"Data sets for download / own use","text":"data set contains species groups microbiological complexes, used clinical_breakpoints data set.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"microorganisms-codes-common-laboratory-codes","dir":"Articles","previous_headings":"","what":"microorganisms.codes: Common Laboratory Codes","title":"Data sets for download / own use","text":"data set 4 971 rows 2 columns, containing following column names:code mo. data set R available microorganisms.codes, load AMR package. last updated 29 September 2024 20:17:56 UTC. Find info structure data set . Direct download links: Download original R Data Structure (RDS) file (22 kB) Download tab-separated text file (0.1 MB) Download Microsoft Excel workbook (82 kB) Download Apache Feather file (85 kB) Download Apache Parquet file (56 kB) Download IBM SPSS Statistics data file (0.1 MB) Download Stata DTA file (0.1 MB)","code":""},{"path":"https://msberends.github.io/AMR/articles/datasets.html","id":"source-9","dir":"Articles","previous_headings":"microorganisms.codes: Common Laboratory Codes","what":"Source","title":"Data sets for download / own use","text":"data set contains commonly used codes microorganisms, laboratory systems WHONET.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/articles/resistance_predict.html","id":"needed-r-packages","dir":"Articles","previous_headings":"","what":"Needed R packages","title":"How to predict antimicrobial resistance","text":"many uses R, need additional packages AMR data analysis. package works closely together tidyverse packages dplyr ggplot2. tidyverse tremendously improves way conduct data science - allows natural way writing syntaxes creating beautiful plots R. AMR package depends packages even extends use functions.","code":"library(dplyr) library(ggplot2) library(AMR)  # (if not yet installed, install with:) # install.packages(c(\"tidyverse\", \"AMR\"))"},{"path":"https://msberends.github.io/AMR/articles/resistance_predict.html","id":"prediction-analysis","dir":"Articles","previous_headings":"","what":"Prediction analysis","title":"How to predict antimicrobial resistance","text":"package contains function resistance_predict(), takes input functions AMR data analysis. Based date column, calculates cases per year uses regression model predict antimicrobial resistance. basically easy : function look date column col_date set. running commands, summary regression model printed unless using resistance_predict(..., info = FALSE). text printed summary - actual result (output) function data.frame containing year: number observations, actual observed resistance, estimated resistance standard error estimation: function plot available base R, can extended packages depend output based type input. extended function cope resistance predictions:  fastest way plot result. automatically adds right axes, error bars, titles, number available observations type model. also support ggplot2 package custom function ggplot_sir_predict() create appealing plots:","code":"# resistance prediction of piperacillin/tazobactam (TZP): resistance_predict(tbl = example_isolates, col_date = \"date\", col_ab = \"TZP\", model = \"binomial\")  # or: example_isolates %>%   resistance_predict(     col_ab = \"TZP\",     model = \"binomial\"   )  # to bind it to object 'predict_TZP' for example: predict_TZP <- example_isolates %>%   resistance_predict(     col_ab = \"TZP\",     model = \"binomial\"   ) predict_TZP #> # A tibble: 34 × 7 #>     year  value se_min se_max observations observed estimated #>  * <dbl>  <dbl>  <dbl>  <dbl>        <int>    <dbl>     <dbl> #>  1  2002 0.2        NA     NA           15   0.2       0.0562 #>  2  2003 0.0625     NA     NA           32   0.0625    0.0616 #>  3  2004 0.0854     NA     NA           82   0.0854    0.0676 #>  4  2005 0.05       NA     NA           60   0.05      0.0741 #>  5  2006 0.0508     NA     NA           59   0.0508    0.0812 #>  6  2007 0.121      NA     NA           66   0.121     0.0889 #>  7  2008 0.0417     NA     NA           72   0.0417    0.0972 #>  8  2009 0.0164     NA     NA           61   0.0164    0.106  #>  9  2010 0.0566     NA     NA           53   0.0566    0.116  #> 10  2011 0.183      NA     NA           93   0.183     0.127  #> # ℹ 24 more rows plot(predict_TZP) ggplot_sir_predict(predict_TZP) # choose for error bars instead of a ribbon ggplot_sir_predict(predict_TZP, ribbon = FALSE)"},{"path":"https://msberends.github.io/AMR/articles/resistance_predict.html","id":"choosing-the-right-model","dir":"Articles","previous_headings":"Prediction analysis","what":"Choosing the right model","title":"How to predict antimicrobial resistance","text":"Resistance easily predicted; look vancomycin resistance Gram-positive bacteria, spread (.e. standard error) enormous:  Vancomycin resistance 100% ten years, might remain low. can define model model parameter. model chosen generalised linear regression model using binomial distribution, assuming period zero resistance followed period increasing resistance leading slowly resistance. Valid values : vancomycin resistance Gram-positive bacteria, linear model might appropriate:  model also available object, attribute:","code":"example_isolates %>%   filter(mo_gramstain(mo, language = NULL) == \"Gram-positive\") %>%   resistance_predict(col_ab = \"VAN\", year_min = 2010, info = FALSE, model = \"binomial\") %>%   ggplot_sir_predict() example_isolates %>%   filter(mo_gramstain(mo, language = NULL) == \"Gram-positive\") %>%   resistance_predict(col_ab = \"VAN\", year_min = 2010, info = FALSE, model = \"linear\") %>%   ggplot_sir_predict() model <- attributes(predict_TZP)$model  summary(model)$family #>  #> Family: binomial  #> Link function: logit  summary(model)$coefficients #>                  Estimate  Std. Error   z value     Pr(>|z|) #> (Intercept) -200.67944891 46.17315349 -4.346237 1.384932e-05 #> year           0.09883005  0.02295317  4.305725 1.664395e-05"},{"path":"https://msberends.github.io/AMR/authors.html","id":null,"dir":"","previous_headings":"","what":"Authors","title":"Authors and Citation","text":"Matthijs S. Berends. Author, maintainer. Dennis Souverein. Author, contributor. Erwin E. . Hassing. Author, contributor. Andrew P. Norgan. Contributor. Anita Williams. Contributor. Annick Lenglet. Contributor. Anthony Underwood. Contributor. Anton Mymrikov. Contributor. Bart C. Meijer. Contributor. Christian F. Luz. Contributor. Dmytro Mykhailenko. Contributor. Eric H. L. C. M. Hazenberg. Contributor. Gwen Knight. Contributor. Jason Stull. Contributor. Javier Sanchez. Contributor. Jonas Salm. Contributor. Judith M. Fonville. Contributor. Larisse Bolton. Contributor. Matthew Saab. Contributor. Peter Dutey-Magni. Contributor. Rogier P. Schade. Contributor. Sofia Ny. Contributor. Alex W. Friedrich. Thesis advisor. Bhanu N. M. Sinha. Thesis advisor. Casper J. Albers. Thesis advisor. Corinna Glasner. Thesis advisor.","code":""},{"path":"https://msberends.github.io/AMR/authors.html","id":"citation","dir":"","previous_headings":"","what":"Citation","title":"Authors and Citation","text":"Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C (2022). “AMR: R Package Working Antimicrobial Resistance Data.” Journal Statistical Software, 104(3), 1–31. doi:10.18637/jss.v104.i03.","code":"@Article{,   title = {{AMR}: An {R} Package for Working with Antimicrobial Resistance Data},   author = {Matthijs S. Berends and Christian F. Luz and Alexander W. Friedrich and Bhanu N. M. Sinha and Casper J. Albers and Corinna Glasner},   journal = {Journal of Statistical Software},   year = {2022},   volume = {104},   number = {3},   pages = {1--31},   doi = {10.18637/jss.v104.i03}, }"},{"path":"https://msberends.github.io/AMR/index.html","id":"the-amr-package-for-r-","dir":"","previous_headings":"","what":"Antimicrobial Resistance Data Analysis","title":"Antimicrobial Resistance Data Analysis","text":"Provides --one solution antimicrobial resistance (AMR) data analysis One Health approach Used 175 countries, available 20 languages Generates antibiograms - traditional, combined, syndromic, even WISCA Provides full microbiological taxonomy extensive info antimicrobial drugs Applies recent CLSI EUCAST clinical veterinary breakpoints MICs, disk zones ECOFFs Corrects duplicate isolates, calculates predicts AMR per antimicrobial class Integrates WHONET, ATC, EARS-Net, PubChem, LOINC, SNOMED CT, NCBI 100% free costs dependencies, highly suitable places limited resources Now available Python ! Click read . https://msberends.github.io/AMR https://doi.org/10.18637/jss.v104.i03","code":""},{"path":"https://msberends.github.io/AMR/index.html","id":"introduction","dir":"","previous_headings":"","what":"Introduction","title":"Antimicrobial Resistance Data Analysis","text":"AMR package free open-source R package zero dependencies simplify analysis prediction Antimicrobial Resistance (AMR) work microbial antimicrobial data properties, using evidence-based methods. aim provide standard clean reproducible AMR data analysis, can therefore empower epidemiological analyses continuously enable surveillance treatment evaluation setting. Many different researchers around globe continually helping us make successful durable project! work published Journal Statistical Software (Volume 104(3); DOI 10.18637/jss.v104.i03) formed basis two PhD theses (DOI 10.33612/diss.177417131 DOI 10.33612/diss.192486375). installing package, R knows ~52,000 distinct microbial species (updated December 2022) ~600 antibiotic, antimycotic antiviral drugs name code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC SNOMED CT), knows valid SIR MIC values. integral clinical breakpoint guidelines CLSI EUCAST included, even epidemiological cut-(ECOFF) values. supports can read data format, including WHONET data. package works Windows, macOS Linux versions R since R-3.0 (April 2013). designed work setting, including limited resources. created routine data analysis academic research Faculty Medical Sciences University Groningen, collaboration non-profit organisations Certe Medical Diagnostics Advice Foundation University Medical Center Groningen.","code":""},{"path":"https://msberends.github.io/AMR/index.html","id":"used-in-over-175-countries-available-in-20-languages","dir":"","previous_headings":"Introduction","what":"Used in over 175 countries, available in 20 languages","title":"Antimicrobial Resistance Data Analysis","text":"Since first public release early 2018, R package used almost countries world. Click map enlarge see country names. help contributors corners world, AMR package available  English,  Czech,  Chinese,  Danish,  Dutch,  Finnish,  French,  German,  Greek,  Italian,  Japanese,  Norwegian,  Polish,  Portuguese,  Romanian,  Russian,  Spanish,  Swedish,  Turkish,  Ukrainian. Antimicrobial drug (group) names colloquial microorganism names provided languages.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/index.html","id":"filtering-and-selecting-data","dir":"","previous_headings":"Practical examples","what":"Filtering and selecting data","title":"Antimicrobial Resistance Data Analysis","text":"One powerful functions package, aside calculating plotting AMR, selecting filtering based antimicrobial columns. can done using -called antimicrobial class selectors, work base R, dplyr data.table: defined row filter Gram-negative bacteria intrinsic resistance cefotaxime (mo_is_gram_negative() mo_is_intrinsic_resistant()) column selection two antibiotic groups (aminoglycosides() carbapenems()), reference data microorganisms antibiotics AMR package make sure get meant: base R equivalent : base R code work version R since April 2013 (R-3.0). Moreover, code works identically data.table package, starting :","code":"# AMR works great with dplyr, but it's not required or neccesary library(AMR) library(dplyr)  example_isolates %>%   mutate(bacteria = mo_fullname()) %>%   # filtering functions for microorganisms:   filter(mo_is_gram_negative(),          mo_is_intrinsic_resistant(ab = \"cefotax\")) %>%   # antimicrobial selectors:   select(bacteria,          aminoglycosides(),          carbapenems()) library(AMR) example_isolates$bacteria <- mo_fullname(example_isolates$mo) example_isolates[which(mo_is_gram_negative() &                          mo_is_intrinsic_resistant(ab = \"cefotax\")),                  c(\"bacteria\", aminoglycosides(), carbapenems())] example_isolates <- data.table::as.data.table(example_isolates)"},{"path":"https://msberends.github.io/AMR/index.html","id":"generating-antibiograms","dir":"","previous_headings":"Practical examples","what":"Generating antibiograms","title":"Antimicrobial Resistance Data Analysis","text":"AMR package supports generating traditional, combined, syndromic, even weighted-incidence syndromic combination antibiograms (WISCA). used inside R Markdown Quarto, table printed right output format automatically (markdown, LaTeX, HTML, etc.). combination antibiograms, clear combined antibiotics yield higher empiric coverage: Like many functions package, antibiogram() comes support 20 languages often detected automatically based system language:","code":"antibiogram(example_isolates,             antibiotics = c(aminoglycosides(), carbapenems())) antibiogram(example_isolates,             antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"),             mo_transform = \"gramstain\") antibiogram(example_isolates,             antibiotics = c(\"cipro\", \"tobra\", \"genta\"), # any arbitrary name or code will work             mo_transform = \"gramstain\",             ab_transform = \"name\",             language = \"uk\") # Ukrainian"},{"path":"https://msberends.github.io/AMR/index.html","id":"calculating-resistance-per-group","dir":"","previous_headings":"Practical examples","what":"Calculating resistance per group","title":"Antimicrobial Resistance Data Analysis","text":"manual approach, can use resistance susceptibility() function: use antimicrobial class selectors select series antibiotic columns:","code":"example_isolates %>%   # group by ward:   group_by(ward) %>%   # calculate AMR using resistance() for gentamicin and tobramycin   # and get their 95% confidence intervals using sir_confidence_interval():   summarise(across(c(GEN, TOB),                    list(total_R = resistance,                         conf_int = function(x) sir_confidence_interval(x, collapse = \"-\")))) library(AMR) library(dplyr)  out <- example_isolates %>%   # group by ward:   group_by(ward) %>%   # calculate AMR using resistance(), over all aminoglycosides and polymyxins:   summarise(across(c(aminoglycosides(), polymyxins()),             resistance)) out # transform the antibiotic columns to names: out %>% set_ab_names() # transform the antibiotic column to ATC codes: out %>% set_ab_names(property = \"atc\")"},{"path":"https://msberends.github.io/AMR/index.html","id":"what-else-can-you-do-with-this-package","dir":"","previous_headings":"","what":"What else can you do with this package?","title":"Antimicrobial Resistance Data Analysis","text":"package intended comprehensive toolbox integrated AMR data analysis. package can used : Reference taxonomy microorganisms, since package contains microbial (sub)species List Prokaryotic names Standing Nomenclature (LPSN) Global Biodiversity Information Facility (GBIF) (manual) Interpreting raw MIC disk diffusion values, based CLSI EUCAST guideline (manual) Retrieving antimicrobial drug names, doses forms administration clinical health care records (manual) Determining first isolates used AMR data analysis (manual) Calculating antimicrobial resistance (tutorial) Determining multi-drug resistance (MDR) / multi-drug resistant organisms (MDRO) (tutorial) Calculating (empirical) susceptibility mono therapy combination therapies (tutorial) Predicting future antimicrobial resistance using regression models (tutorial) Getting properties microorganism (like Gram stain, species, genus family) (manual) Getting properties antimicrobial (like name, code EARS-Net/ATC/LOINC/PubChem, defined daily dose trade name) (manual) Plotting antimicrobial resistance (tutorial) Applying EUCAST expert rules (manual) Getting SNOMED codes microorganism, getting properties microorganism based SNOMED code (manual) Getting LOINC codes antibiotic, getting properties antibiotic based LOINC code (manual) Machine reading EUCAST CLSI guidelines 2011-2021 translate MIC values disk diffusion diameters SIR (link) Principal component analysis AMR (tutorial)","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/index.html","id":"latest-official-version","dir":"","previous_headings":"Get this package","what":"Latest official version","title":"Antimicrobial Resistance Data Analysis","text":"package available official R network (CRAN). Install package R CRAN using command: downloaded installed automatically. RStudio, click menu Tools > Install Packages… type “AMR” press Install. Note: functions website may available latest release. use functions data sets mentioned website, install latest development version.","code":"install.packages(\"AMR\")"},{"path":"https://msberends.github.io/AMR/index.html","id":"latest-development-version","dir":"","previous_headings":"Get this package","what":"Latest development version","title":"Antimicrobial Resistance Data Analysis","text":"Please read Developer Guideline . latest unpublished development version can installed GitHub two ways: Manually, using: Automatically, using rOpenSci R-universe platform, adding R-universe address list repositories (‘repos’): , can install update AMR package like official release (e.g., using install.packages(\"AMR\") RStudio via Tools > Check Package Updates…).","code":"install.packages(\"remotes\") # if you haven't already remotes::install_github(\"msberends/AMR\") options(repos = c(getOption(\"repos\"),                   msberends = \"https://msberends.r-universe.dev\"))"},{"path":"https://msberends.github.io/AMR/index.html","id":"get-started","dir":"","previous_headings":"","what":"Get started","title":"Antimicrobial Resistance Data Analysis","text":"find conduct AMR data analysis, please continue reading get started click link ‘’ menu.","code":""},{"path":"https://msberends.github.io/AMR/index.html","id":"partners","dir":"","previous_headings":"","what":"Partners","title":"Antimicrobial Resistance Data Analysis","text":"development package part , related , made possible following non-profit organisations initiatives:","code":""},{"path":"https://msberends.github.io/AMR/index.html","id":"copyright","dir":"","previous_headings":"","what":"Copyright","title":"Antimicrobial Resistance Data Analysis","text":"R package free, open-source software licensed GNU General Public License v2.0 (GPL-2). nutshell, means package: May used commercial purposes May used private purposes May used patent purposes May modified, although: Modifications must released license distributing package Changes made code must documented May distributed, although: Source code must made available package distributed copy license copyright notice must included package. Comes LIMITATION liability Comes warranty","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR-deprecated.html","id":null,"dir":"Reference","previous_headings":"","what":"Deprecated Functions — AMR-deprecated","title":"Deprecated Functions — AMR-deprecated","text":"functions -called 'Deprecated'. removed future version package. Using functions give warning name function replaced (one).","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR-deprecated.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Deprecated Functions — AMR-deprecated","text":"","code":"ab_class(...)  ab_selector(...)"},{"path":"https://msberends.github.io/AMR/reference/AMR-options.html","id":null,"dir":"Reference","previous_headings":"","what":"Options for the AMR package — AMR-options","title":"Options for the AMR package — AMR-options","text":"overview package-specific options() can set AMR package.","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR-options.html","id":"options","dir":"Reference","previous_headings":"","what":"Options","title":"Options for the AMR package — AMR-options","text":"AMR_antibiogram_formatting_type  numeric (1-12) use antibiogram(), indicate formatting type use. AMR_breakpoint_type  character use .sir(), indicate breakpoint type use. must either \"ECOFF\", \"animal\", \"human\". AMR_cleaning_regex  regular expression (case-insensitive) use .mo() mo_* functions, clean user input. default outcome mo_cleaning_regex(), removes texts brackets texts \"species\" \"serovar\". AMR_custom_ab  file location RDS file, use custom antimicrobial drugs package. explained add_custom_antimicrobials(). AMR_custom_mo  file location RDS file, use custom microorganisms package. explained add_custom_microorganisms(). AMR_eucastrules  character set default types rules eucast_rules() function, must one : \"breakpoints\", \"expert\", \"\", \"custom\", \"\", defaults c(\"breakpoints\", \"expert\"). AMR_guideline  character set default guideline interpreting MIC values disk diffusion diameters .sir(). Can guideline name (e.g., \"CLSI\") name year (e.g. \"CLSI 2019\"). default latest implemented EUCAST guideline, currently \"EUCAST 2024\". Supported guideline currently EUCAST (2011-2024) CLSI (2011-2024). AMR_ignore_pattern  regular expression ignore (.e., make NA) match given .mo() mo_* functions. AMR_include_PKPD  logical use .sir(), indicate PK/PD clinical breakpoints must applied last resort - default TRUE. AMR_include_screening  logical use .sir(), indicate clinical breakpoints screening allowed - default FALSE. AMR_keep_synonyms  logical use .mo() mo_* functions, indicate old, previously valid taxonomic names must preserved corrected currently accepted names. default FALSE. AMR_locale  character set language AMR package, can one supported language names ISO-639-1 codes: English (en), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek (el), Italian (), Japanese (ja), Norwegian (), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv), Turkish (tr), Ukrainian (uk). default current system language (supported, English otherwise). AMR_mo_source  file location manual code list used .mo() mo_* functions. explained set_mo_source().","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR-options.html","id":"saving-settings-between-sessions","dir":"Reference","previous_headings":"","what":"Saving Settings Between Sessions","title":"Options for the AMR package — AMR-options","text":"Settings R saved globally thus lost R exited. can save options .Rprofile file, user-specific file. can edit using:   file, can set options ...   ...add Portuguese language support antibiotics, allow PK/PD rules interpreting MIC values .sir().","code":"utils::file.edit(\"~/.Rprofile\") options(AMR_locale = \"pt\")  options(AMR_include_PKPD = TRUE)"},{"path":"https://msberends.github.io/AMR/reference/AMR-options.html","id":"share-options-within-team","dir":"Reference","previous_headings":"","what":"Share Options Within Team","title":"Options for the AMR package — AMR-options","text":"global approach, e.g. within (data) team, save options file remote file location, shared network drive, user read file automatically start-. work way: Save plain text file e.g. \"X:/team_folder/R_options.R\" fill preferred settings. user, open .Rprofile file using utils::file.edit(\"~/.Rprofile\") put :   Reload R/RStudio check settings getOption(), e.g. getOption(\"AMR_locale\") set value. Now team settings configured one place, can maintained .","code":"source(\"X:/team_folder/R_options.R\")"},{"path":"https://msberends.github.io/AMR/reference/AMR.html","id":null,"dir":"Reference","previous_headings":"","what":"The AMR Package — AMR","title":"The AMR Package — AMR","text":"Welcome AMR package. AMR package free open-source R package zero dependencies simplify analysis prediction Antimicrobial Resistance (AMR) work microbial antimicrobial data properties, using evidence-based methods. aim provide standard clean reproducible AMR data analysis, can therefore empower epidemiological analyses continuously enable surveillance treatment evaluation setting. Many different researchers around globe continually helping us make successful durable project! work published Journal Statistical Software (Volume 104(3); doi:10.18637/jss.v104.i03 ) formed basis two PhD theses (doi:10.33612/diss.177417131  doi:10.33612/diss.192486375 ). installing package, R knows ~79 000 microorganisms (updated June 2024) ~610 antibiotic, antimycotic antiviral drugs name code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC SNOMED CT), knows valid SIR MIC values. integral clinical breakpoint guidelines CLSI EUCAST included, even epidemiological cut-(ECOFF) values. supports can read data format, including WHONET data. package works Windows, macOS Linux versions R since R-3.0 (April 2013). designed work setting, including limited resources. created routine data analysis academic research Faculty Medical Sciences public University Groningen, collaboration non-profit organisations Certe Medical Diagnostics Advice Foundation University Medical Center Groningen. AMR package available English, Chinese, Czech, Danish, Dutch, Finnish, French, German, Greek, Italian, Japanese, Norwegian, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Turkish, Ukrainian. Antimicrobial drug (group) names colloquial microorganism names provided languages.","code":""},{"path":"https://msberends.github.io/AMR/reference/AMR.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"The AMR Package — AMR","text":"cite AMR publications use: Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C (2022). \"AMR: R Package Working Antimicrobial Resistance Data.\" Journal Statistical Software, 104(3), 1-31. doi:10.18637/jss.v104.i03 BibTeX entry LaTeX users :","code":"@Article{,   title = {{AMR}: An {R} Package for Working with Antimicrobial Resistance Data},   author = {Matthijs S. Berends and Christian F. Luz and Alexander W. Friedrich and Bhanu N. M. Sinha and Casper J. Albers and Corinna Glasner},   journal = {Journal of Statistical Software},   year = {2022},   volume = {104},   number = {3},   pages = {1--31},   doi = {10.18637/jss.v104.i03}, }"},{"path":"https://msberends.github.io/AMR/reference/AMR.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"The AMR Package — AMR","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/AMR.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"The AMR Package — AMR","text":"Maintainer: Matthijs S. Berends m.s.berends@umcg.nl (ORCID) Authors: Dennis Souverein (ORCID) [contributor] Erwin E. . Hassing [contributor] contributors: Andrew P. Norgan (ORCID) [contributor] Anita Williams (ORCID) [contributor] Annick Lenglet (ORCID) [contributor] Anthony Underwood (ORCID) [contributor] Anton Mymrikov [contributor] Bart C. Meijer [contributor] Christian F. Luz (ORCID) [contributor] Dmytro Mykhailenko [contributor] Eric H. L. C. M. Hazenberg [contributor] Gwen Knight (ORCID) [contributor] Jason Stull (ORCID) [contributor] Javier Sanchez (ORCID) [contributor] Jonas Salm [contributor] Judith M. Fonville [contributor] Larisse Bolton (ORCID) [contributor] Matthew Saab [contributor] Peter Dutey-Magni (ORCID) [contributor] Rogier P. Schade [contributor] Sofia Ny (ORCID) [contributor] Alex W. Friedrich (ORCID) [thesis advisor] Bhanu N. M. Sinha (ORCID) [thesis advisor] Casper J. Albers (ORCID) [thesis advisor] Corinna Glasner (ORCID) [thesis advisor]","code":""},{"path":"https://msberends.github.io/AMR/reference/WHOCC.html","id":null,"dir":"Reference","previous_headings":"","what":"WHOCC: WHO Collaborating Centre for Drug Statistics Methodology — WHOCC","title":"WHOCC: WHO Collaborating Centre for Drug Statistics Methodology — WHOCC","text":"antimicrobial drugs official names, ATC codes, ATC groups defined daily dose (DDD) included package, using Collaborating Centre Drug Statistics Methodology.","code":""},{"path":"https://msberends.github.io/AMR/reference/WHOCC.html","id":"whocc","dir":"Reference","previous_headings":"","what":"WHOCC","title":"WHOCC: WHO Collaborating Centre for Drug Statistics Methodology — WHOCC","text":"package contains ~550 antibiotic, antimycotic antiviral drugs Anatomical Therapeutic Chemical (ATC) codes, ATC groups Defined Daily Dose (DDD) World Health Organization Collaborating Centre Drug Statistics Methodology (WHOCC, https://atcddd.fhi.) Pharmaceuticals Community Register European Commission (https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm). become gold standard international drug utilisation monitoring research. WHOCC located Oslo Norwegian Institute Public Health funded Norwegian government. European Commission executive European Union promotes general interest. NOTE: WHOCC copyright allow use commercial purposes, unlike info package. See https://atcddd.fhi./copyright_disclaimer/.","code":""},{"path":"https://msberends.github.io/AMR/reference/WHOCC.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"WHOCC: WHO Collaborating Centre for Drug Statistics Methodology — WHOCC","text":"","code":"as.ab(\"meropenem\") #> Class 'ab' #> [1] MEM ab_name(\"J01DH02\") #> [1] \"Meropenem\"  ab_tradenames(\"flucloxacillin\") #>  [1] \"culpen\"               \"floxacillin\"          \"floxacillinsodium\"    #>  [4] \"floxapen\"             \"floxapensodiumsalt\"   \"fluclox\"              #>  [7] \"flucloxacilina\"       \"flucloxacilline\"      \"flucloxacillinum\"     #> [10] \"fluorochloroxacillin\" \"staphylex\""},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 500 Isolates - WHONET Example — WHONET","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"example data set exact structure export file WHONET. files can used package, example data set shows. antibiotic results example_isolates data set. patient names created using online surname generators place practice purposes.","code":""},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"","code":"WHONET"},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"tibble 500 observations 53 variables: Identification number ID sample Specimen number ID specimen Organism Name microorganism. analysis, transform valid microbial class, using .mo(). Country Country origin Laboratory Name laboratory Last name Fictitious last name patient First name Fictitious initial patient Sex Fictitious gender patient Age Fictitious age patient Age category Age group, can also looked using age_groups() Date admissionDate hospital admission Specimen dateDate specimen received laboratory Specimen type Specimen type group Specimen type (Numeric) Translation \"Specimen type\" Reason Reason request Differential Diagnosis Isolate number ID isolate Organism type Type microorganism, can also looked using mo_type() Serotype Serotype microorganism Beta-lactamase Microorganism produces beta-lactamase? ESBL Microorganism produces extended spectrum beta-lactamase? Carbapenemase Microorganism produces carbapenemase? MRSA screening test Microorganism possible MRSA? Inducible clindamycin resistance Clindamycin can induced? Comment comments Date data entryDate data entered WHONET AMP_ND10:CIP_EE 28 different antibiotics. can lookup abbreviations antibiotics data set, use e.g. ab_name(\"AMP\") get official name immediately. analysis, transform valid antibiotic class, using .sir().","code":""},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/WHONET.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 500 Isolates - WHONET Example — WHONET","text":"","code":"WHONET #> # A tibble: 500 × 53 #>    `Identification number` `Specimen number` Organism Country         Laboratory #>    <chr>                               <int> <chr>    <chr>           <chr>      #>  1 fe41d7bafa                           1748 SPN      Belgium         National … #>  2 91f175ec37                           1767 eco      The Netherlands National … #>  3 cc4015056e                           1343 eco      The Netherlands National … #>  4 e864b692f5                           1894 MAP      Denmark         National … #>  5 3d051fe345                           1739 PVU      Belgium         National … #>  6 c80762a08d                           1846 103      The Netherlands National … #>  7 8022d3727c                           1628 103      Denmark         National … #>  8 f3dc5f553d                           1493 eco      The Netherlands National … #>  9 15add38f6c                           1847 eco      France          National … #> 10 fd41248def                           1458 eco      Germany         National … #> # ℹ 490 more rows #> # ℹ 48 more variables: `Last name` <chr>, `First name` <chr>, Sex <chr>, #> #   Age <dbl>, `Age category` <chr>, `Date of admission` <date>, #> #   `Specimen date` <date>, `Specimen type` <chr>, #> #   `Specimen type (Numeric)` <dbl>, Reason <chr>, `Isolate number` <int>, #> #   `Organism type` <chr>, Serotype <chr>, `Beta-lactamase` <lgl>, ESBL <lgl>, #> #   Carbapenemase <lgl>, `MRSA screening test` <lgl>, …"},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"Use function e.g. clinical texts health care records. returns list antimicrobial drugs, doses forms administration found texts.","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"","code":"ab_from_text(text, type = c(\"drug\", \"dose\", \"administration\"),   collapse = NULL, translate_ab = FALSE, thorough_search = NULL,   info = interactive(), ...)"},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"text text analyse type type property search , either \"drug\", \"dose\" \"administration\", see Examples collapse character pass paste(, collapse = ...) return one character per element text, see Examples translate_ab type = \"drug\": column name antibiotics data set translate antibiotic abbreviations , using ab_property(). default FALSE. Using TRUE equal using \"name\". thorough_search logical indicate whether input must extensively searched misspelling faulty input values. Setting TRUE take considerably time using FALSE. default, turn TRUE input elements contain maximum three words. info logical indicate whether progress bar printed - default TRUE interactive mode ... arguments passed .ab()","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"list,  character collapse NULL","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"function also internally used .ab(), although searches first drug name throw note drug names returned. Note: .ab() function may use long regular expression match brand names antimicrobial drugs. may fail systems.","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"argument-type","dir":"Reference","previous_headings":"","what":"Argument type","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"default, function search antimicrobial drug names. text elements searched official names, ATC codes brand names. uses .ab() internally, correct misspelling. type = \"dose\" (similar, like \"dosing\", \"doses\"), text elements searched numeric values higher 100 resemble years. output numeric. supports unit (g, mg, IE, etc.) multiple values one clinical text, see Examples. type = \"administration\" (abbreviations, like \"admin\", \"adm\"), text elements searched form drug administration. supports following forms (including common abbreviations): buccal, implant, inhalation, instillation, intravenous, nasal, oral, parenteral, rectal, sublingual, transdermal vaginal. Abbreviations oral ('po', 'per os') become \"oral\", values intravenous ('iv', 'intraven') become \"iv\". supports multiple values one clinical text, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"argument-collapse","dir":"Reference","previous_headings":"","what":"Argument collapse","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"Without using collapse, function return list. can convenient use e.g. inside mutate()):df %>% mutate(abx = ab_from_text(clinical_text)) returned AB codes can transformed official names, groups, etc. ab_* functions ab_name() ab_group(), using translate_ab argument. using collapse, function return character:df %>% mutate(abx = ab_from_text(clinical_text, collapse = \"|\"))","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_from_text.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Retrieve Antimicrobial Drug Names and Doses from Clinical Text — ab_from_text","text":"","code":"# mind the bad spelling of amoxicillin in this line, # straight from a true health care record: ab_from_text(\"28/03/2020 regular amoxicilliin 500mg po tid\") #> [[1]] #> Class 'ab' #> [1] AMX #>   ab_from_text(\"500 mg amoxi po and 400mg cipro iv\") #> [[1]] #> Class 'ab' #> [1] AMX CIP #>  ab_from_text(\"500 mg amoxi po and 400mg cipro iv\", type = \"dose\") #> [[1]] #> [1] 500 400 #>  ab_from_text(\"500 mg amoxi po and 400mg cipro iv\", type = \"admin\") #> [[1]] #> [1] \"oral\" \"iv\"   #>   ab_from_text(\"500 mg amoxi po and 400mg cipro iv\", collapse = \", \") #> [1] \"AMX, CIP\" # \\donttest{ # if you want to know which antibiotic groups were administered, do e.g.: abx <- ab_from_text(\"500 mg amoxi po and 400mg cipro iv\") ab_group(abx[[1]]) #> [1] \"Beta-lactams/penicillins\" \"Quinolones\"                if (require(\"dplyr\")) {   tibble(clinical_text = c(     \"given 400mg cipro and 500 mg amox\",     \"started on doxy iv today\"   )) %>%     mutate(       abx_codes = ab_from_text(clinical_text),       abx_doses = ab_from_text(clinical_text, type = \"doses\"),       abx_admin = ab_from_text(clinical_text, type = \"admin\"),       abx_coll = ab_from_text(clinical_text, collapse = \"|\"),       abx_coll_names = ab_from_text(clinical_text,         collapse = \"|\",         translate_ab = \"name\"       ),       abx_coll_doses = ab_from_text(clinical_text,         type = \"doses\",         collapse = \"|\"       ),       abx_coll_admin = ab_from_text(clinical_text,         type = \"admin\",         collapse = \"|\"       )     ) } #> Loading required package: dplyr #>  #> Attaching package: ‘dplyr’ #> The following objects are masked from ‘package:stats’: #>  #>     filter, lag #> The following objects are masked from ‘package:base’: #>  #>     intersect, setdiff, setequal, union #> # A tibble: 2 × 8 #>   clinical_text            abx_codes abx_doses abx_admin abx_coll abx_coll_names #>   <chr>                    <list>    <list>    <list>    <chr>    <chr>          #> 1 given 400mg cipro and 5… <ab [2]>  <dbl [2]> <chr [1]> CIP|AMX  Ciprofloxacin… #> 2 started on doxy iv today <ab [1]>  <dbl [1]> <chr [1]> DOX      Doxycycline    #> # ℹ 2 more variables: abx_coll_doses <chr>, abx_coll_admin <chr> # }"},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Properties of an Antibiotic — ab_property","title":"Get Properties of an Antibiotic — ab_property","text":"Use functions return specific property antibiotic antibiotics data set. input values evaluated internally .ab().","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Properties of an Antibiotic — ab_property","text":"","code":"ab_name(x, language = get_AMR_locale(), tolower = FALSE, ...)  ab_cid(x, ...)  ab_synonyms(x, ...)  ab_tradenames(x, ...)  ab_group(x, language = get_AMR_locale(), ...)  ab_atc(x, only_first = FALSE, ...)  ab_atc_group1(x, language = get_AMR_locale(), ...)  ab_atc_group2(x, language = get_AMR_locale(), ...)  ab_loinc(x, ...)  ab_ddd(x, administration = \"oral\", ...)  ab_ddd_units(x, administration = \"oral\", ...)  ab_info(x, language = get_AMR_locale(), ...)  ab_url(x, open = FALSE, ...)  ab_property(x, property = \"name\", language = get_AMR_locale(), ...)  set_ab_names(data, ..., property = \"name\", language = get_AMR_locale(),   snake_case = NULL)"},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Properties of an Antibiotic — ab_property","text":"x (vector ) text can coerced valid antibiotic drug code .ab() language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. tolower logical indicate whether first character every output transformed lower case character. lead e.g. \"polymyxin B\" \"polymyxin b\". ... case set_ab_names() data data.frame: columns select (supports tidy selection column1:column4), otherwise arguments passed .ab() only_first logical indicate whether first ATC code must returned, giving preference J0-codes (.e., antimicrobial drug group) administration way administration, either \"oral\" \"iv\" open browse URL using utils::browseURL() property one column names one antibiotics data set: vector_or(colnames(antibiotics), sort = FALSE). data data.frame columns need renamed, character vector column names snake_case logical indicate whether names -called snake case: lower case spaces/slashes replaced underscore (_)","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Properties of an Antibiotic — ab_property","text":"integer case ab_cid() named list case ab_info() multiple ab_atc()/ab_synonyms()/ab_tradenames() double case ab_ddd() data.frame case set_ab_names() character cases","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Properties of an Antibiotic — ab_property","text":"output translated possible. function ab_url() return direct URL official website. warning returned required ATC code available. function set_ab_names() special column renaming function data.frames. renames columns names resemble antimicrobial drugs. always makes sure new column names unique. property = \"atc\" set, preference given ATC codes J-group.","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Get Properties of an Antibiotic — ab_property","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology: https://atcddd.fhi./atc_ddd_index/ European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Get Properties of an Antibiotic — ab_property","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/ab_property.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Properties of an Antibiotic — ab_property","text":"","code":"# all properties: ab_name(\"AMX\") #> [1] \"Amoxicillin\" ab_atc(\"AMX\") #> [1] \"J01CA04\" ab_cid(\"AMX\") #> [1] 33613 ab_synonyms(\"AMX\") #>  [1] \"actimoxi\"           \"amoclen\"            \"amolin\"             #>  [4] \"amopen\"             \"amopenixin\"         \"amoxibiotic\"        #>  [7] \"amoxicaps\"          \"amoxicilina\"        \"amoxicilline\"       #> [10] \"amoxicillinhydrate\" \"amoxicillinum\"      \"amoxiden\"           #> [13] \"amoxil\"             \"amoxivet\"           \"amoxy\"              #> [16] \"amoxycillin\"        \"amoxyke\"            \"anemolin\"           #> [19] \"aspenil\"            \"atoksilin\"          \"biomox\"             #> [22] \"bristamox\"          \"cemoxin\"            \"clamoxyl\"           #> [25] \"damoxy\"             \"delacillin\"         \"demoksil\"           #> [28] \"dispermox\"          \"efpenix\"            \"flemoxin\"           #> [31] \"hiconcil\"           \"histocillin\"        \"hydroxyampicillin\"  #> [34] \"ibiamox\"            \"imacillin\"          \"lamoxy\"             #> [37] \"largopen\"           \"metafarmacapsules\"  \"metifarmacapsules\"  #> [40] \"moksilin\"           \"moxacin\"            \"moxatag\"            #> [43] \"ospamox\"            \"pamoxicillin\"       \"piramox\"            #> [46] \"promoxil\"           \"remoxil\"            \"robamox\"            #> [49] \"sawamoxpm\"          \"tolodina\"           \"topramoxin\"         #> [52] \"unicillin\"          \"utimox\"             \"vetramox\"           ab_tradenames(\"AMX\") #>  [1] \"actimoxi\"           \"amoclen\"            \"amolin\"             #>  [4] \"amopen\"             \"amopenixin\"         \"amoxibiotic\"        #>  [7] \"amoxicaps\"          \"amoxicilina\"        \"amoxicilline\"       #> [10] \"amoxicillinhydrate\" \"amoxicillinum\"      \"amoxiden\"           #> [13] \"amoxil\"             \"amoxivet\"           \"amoxy\"              #> [16] \"amoxycillin\"        \"amoxyke\"            \"anemolin\"           #> [19] \"aspenil\"            \"atoksilin\"          \"biomox\"             #> [22] \"bristamox\"          \"cemoxin\"            \"clamoxyl\"           #> [25] \"damoxy\"             \"delacillin\"         \"demoksil\"           #> [28] \"dispermox\"          \"efpenix\"            \"flemoxin\"           #> [31] \"hiconcil\"           \"histocillin\"        \"hydroxyampicillin\"  #> [34] \"ibiamox\"            \"imacillin\"          \"lamoxy\"             #> [37] \"largopen\"           \"metafarmacapsules\"  \"metifarmacapsules\"  #> [40] \"moksilin\"           \"moxacin\"            \"moxatag\"            #> [43] \"ospamox\"            \"pamoxicillin\"       \"piramox\"            #> [46] \"promoxil\"           \"remoxil\"            \"robamox\"            #> [49] \"sawamoxpm\"          \"tolodina\"           \"topramoxin\"         #> [52] \"unicillin\"          \"utimox\"             \"vetramox\"           ab_group(\"AMX\") #> [1] \"Beta-lactams/penicillins\" ab_atc_group1(\"AMX\") #> [1] \"Beta-lactam antibacterials, penicillins\" ab_atc_group2(\"AMX\") #> [1] \"Penicillins with extended spectrum\" ab_url(\"AMX\") #>                                                             Amoxicillin  #> \"https://atcddd.fhi.no/atc_ddd_index//?code=J01CA04&showdescription=no\"   # smart lowercase transformation ab_name(x = c(\"AMC\", \"PLB\")) #> [1] \"Amoxicillin/clavulanic acid\" \"Polymyxin B\"                 ab_name(x = c(\"AMC\", \"PLB\"), tolower = TRUE) #> [1] \"amoxicillin/clavulanic acid\" \"polymyxin B\"                  # defined daily doses (DDD) ab_ddd(\"AMX\", \"oral\") #> [1] 1.5 ab_ddd_units(\"AMX\", \"oral\") #> [1] \"g\" ab_ddd(\"AMX\", \"iv\") #> [1] 3 ab_ddd_units(\"AMX\", \"iv\") #> [1] \"g\"  ab_info(\"AMX\") # all properties as a list #> $ab #> [1] \"AMX\" #>  #> $cid #> [1] 33613 #>  #> $name #> [1] \"Amoxicillin\" #>  #> $group #> [1] \"Beta-lactams/penicillins\" #>  #> $atc #> [1] \"J01CA04\" #>  #> $atc_group1 #> [1] \"Beta-lactam antibacterials, penicillins\" #>  #> $atc_group2 #> [1] \"Penicillins with extended spectrum\" #>  #> $tradenames #>  [1] \"actimoxi\"           \"amoclen\"            \"amolin\"             #>  [4] \"amopen\"             \"amopenixin\"         \"amoxibiotic\"        #>  [7] \"amoxicaps\"          \"amoxicilina\"        \"amoxicilline\"       #> [10] \"amoxicillinhydrate\" \"amoxicillinum\"      \"amoxiden\"           #> [13] \"amoxil\"             \"amoxivet\"           \"amoxy\"              #> [16] \"amoxycillin\"        \"amoxyke\"            \"anemolin\"           #> [19] \"aspenil\"            \"atoksilin\"          \"biomox\"             #> [22] \"bristamox\"          \"cemoxin\"            \"clamoxyl\"           #> [25] \"damoxy\"             \"delacillin\"         \"demoksil\"           #> [28] \"dispermox\"          \"efpenix\"            \"flemoxin\"           #> [31] \"hiconcil\"           \"histocillin\"        \"hydroxyampicillin\"  #> [34] \"ibiamox\"            \"imacillin\"          \"lamoxy\"             #> [37] \"largopen\"           \"metafarmacapsules\"  \"metifarmacapsules\"  #> [40] \"moksilin\"           \"moxacin\"            \"moxatag\"            #> [43] \"ospamox\"            \"pamoxicillin\"       \"piramox\"            #> [46] \"promoxil\"           \"remoxil\"            \"robamox\"            #> [49] \"sawamoxpm\"          \"tolodina\"           \"topramoxin\"         #> [52] \"unicillin\"          \"utimox\"             \"vetramox\"           #>  #> $loinc #>  [1] \"101498-4\" \"15-8\"     \"16-6\"     \"16365-9\"  \"17-4\"     \"18-2\"     #>  [7] \"18861-5\"  \"18862-3\"  \"19-0\"     \"20-8\"     \"21-6\"     \"22-4\"     #> [13] \"25274-2\"  \"25310-4\"  \"3344-9\"   \"55614-2\"  \"55615-9\"  \"55616-7\"  #> [19] \"6976-5\"   \"6977-3\"   \"80133-2\"  #>  #> $ddd #> $ddd$oral #> $ddd$oral$amount #> [1] 1.5 #>  #> $ddd$oral$units #> [1] \"g\" #>  #>  #> $ddd$iv #> $ddd$iv$amount #> [1] 3 #>  #> $ddd$iv$units #> [1] \"g\" #>  #>  #>   # all ab_* functions use as.ab() internally, so you can go from 'any' to 'any': ab_atc(\"AMP\") #> [1] \"J01CA01\" \"S01AA19\" ab_group(\"J01CA01\") #> [1] \"Beta-lactams/penicillins\" ab_loinc(\"ampicillin\") #>  [1] \"101477-8\" \"101478-6\" \"18864-9\"  \"18865-6\"  \"20374-5\"  \"21066-6\"  #>  [7] \"23618-2\"  \"27-3\"     \"28-1\"     \"29-9\"     \"30-7\"     \"31-5\"     #> [13] \"32-3\"     \"33-1\"     \"3355-5\"   \"33562-0\"  \"33919-2\"  \"34-9\"     #> [19] \"43883-8\"  \"43884-6\"  \"6979-9\"   \"6980-7\"   \"87604-5\"  ab_name(\"21066-6\") #> [1] \"Ampicillin\" ab_name(6249) #> [1] \"Ampicillin\" ab_name(\"J01CA01\") #> [1] \"Ampicillin\"  # spelling from different languages and dyslexia are no problem ab_atc(\"ceftriaxon\") #> [1] \"J01DD04\" ab_atc(\"cephtriaxone\") #> [1] \"J01DD04\" ab_atc(\"cephthriaxone\") #> [1] \"J01DD04\" ab_atc(\"seephthriaaksone\") #> [1] \"J01DD04\"  # use set_ab_names() for renaming columns colnames(example_isolates) #>  [1] \"date\"    \"patient\" \"age\"     \"gender\"  \"ward\"    \"mo\"      \"PEN\"     #>  [8] \"OXA\"     \"FLC\"     \"AMX\"     \"AMC\"     \"AMP\"     \"TZP\"     \"CZO\"     #> [15] \"FEP\"     \"CXM\"     \"FOX\"     \"CTX\"     \"CAZ\"     \"CRO\"     \"GEN\"     #> [22] \"TOB\"     \"AMK\"     \"KAN\"     \"TMP\"     \"SXT\"     \"NIT\"     \"FOS\"     #> [29] \"LNZ\"     \"CIP\"     \"MFX\"     \"VAN\"     \"TEC\"     \"TCY\"     \"TGC\"     #> [36] \"DOX\"     \"ERY\"     \"CLI\"     \"AZM\"     \"IPM\"     \"MEM\"     \"MTR\"     #> [43] \"CHL\"     \"COL\"     \"MUP\"     \"RIF\"     colnames(set_ab_names(example_isolates)) #>  [1] \"date\"                          \"patient\"                       #>  [3] \"age\"                           \"gender\"                        #>  [5] \"ward\"                          \"mo\"                            #>  [7] \"benzylpenicillin\"              \"oxacillin\"                     #>  [9] \"flucloxacillin\"                \"amoxicillin\"                   #> [11] \"amoxicillin_clavulanic_acid\"   \"ampicillin\"                    #> [13] \"piperacillin_tazobactam\"       \"cefazolin\"                     #> [15] \"cefepime\"                      \"cefuroxime\"                    #> [17] \"cefoxitin\"                     \"cefotaxime\"                    #> [19] \"ceftazidime\"                   \"ceftriaxone\"                   #> [21] \"gentamicin\"                    \"tobramycin\"                    #> [23] \"amikacin\"                      \"kanamycin\"                     #> [25] \"trimethoprim\"                  \"trimethoprim_sulfamethoxazole\" #> [27] \"nitrofurantoin\"                \"fosfomycin\"                    #> [29] \"linezolid\"                     \"ciprofloxacin\"                 #> [31] \"moxifloxacin\"                  \"vancomycin\"                    #> [33] \"teicoplanin\"                   \"tetracycline\"                  #> [35] \"tigecycline\"                   \"doxycycline\"                   #> [37] \"erythromycin\"                  \"clindamycin\"                   #> [39] \"azithromycin\"                  \"imipenem\"                      #> [41] \"meropenem\"                     \"metronidazole\"                 #> [43] \"chloramphenicol\"               \"colistin\"                      #> [45] \"mupirocin\"                     \"rifampicin\"                    colnames(set_ab_names(example_isolates, NIT:VAN)) #>  [1] \"date\"           \"patient\"        \"age\"            \"gender\"         #>  [5] \"ward\"           \"mo\"             \"PEN\"            \"OXA\"            #>  [9] \"FLC\"            \"AMX\"            \"AMC\"            \"AMP\"            #> [13] \"TZP\"            \"CZO\"            \"FEP\"            \"CXM\"            #> [17] \"FOX\"            \"CTX\"            \"CAZ\"            \"CRO\"            #> [21] \"GEN\"            \"TOB\"            \"AMK\"            \"KAN\"            #> [25] \"TMP\"            \"SXT\"            \"nitrofurantoin\" \"fosfomycin\"     #> [29] \"linezolid\"      \"ciprofloxacin\"  \"moxifloxacin\"   \"vancomycin\"     #> [33] \"TEC\"            \"TCY\"            \"TGC\"            \"DOX\"            #> [37] \"ERY\"            \"CLI\"            \"AZM\"            \"IPM\"            #> [41] \"MEM\"            \"MTR\"            \"CHL\"            \"COL\"            #> [45] \"MUP\"            \"RIF\"            # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     set_ab_names()    # this does the same:   example_isolates %>%     rename_with(set_ab_names)    # set_ab_names() works with any AB property:   example_isolates %>%     set_ab_names(property = \"atc\")    example_isolates %>%     set_ab_names(where(is.sir)) %>%     colnames()    example_isolates %>%     set_ab_names(NIT:VAN) %>%     colnames() } #>  [1] \"date\"           \"patient\"        \"age\"            \"gender\"         #>  [5] \"ward\"           \"mo\"             \"PEN\"            \"OXA\"            #>  [9] \"FLC\"            \"AMX\"            \"AMC\"            \"AMP\"            #> [13] \"TZP\"            \"CZO\"            \"FEP\"            \"CXM\"            #> [17] \"FOX\"            \"CTX\"            \"CAZ\"            \"CRO\"            #> [21] \"GEN\"            \"TOB\"            \"AMK\"            \"KAN\"            #> [25] \"TMP\"            \"SXT\"            \"nitrofurantoin\" \"fosfomycin\"     #> [29] \"linezolid\"      \"ciprofloxacin\"  \"moxifloxacin\"   \"vancomycin\"     #> [33] \"TEC\"            \"TCY\"            \"TGC\"            \"DOX\"            #> [37] \"ERY\"            \"CLI\"            \"AZM\"            \"IPM\"            #> [41] \"MEM\"            \"MTR\"            \"CHL\"            \"COL\"            #> [45] \"MUP\"            \"RIF\"            # }"},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":null,"dir":"Reference","previous_headings":"","what":"Add Custom Antimicrobials — add_custom_antimicrobials","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"add_custom_antimicrobials() can add custom antimicrobial drug names codes.","code":""},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"","code":"add_custom_antimicrobials(x)  clear_custom_antimicrobials()"},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"x data.frame resembling antibiotics data set, least containing columns \"ab\" \"name\"","code":""},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"Important: Due R works, add_custom_antimicrobials() function run every R session - added antimicrobials stored sessions thus lost R exited. two ways circumvent automate process adding antimicrobials: Method 1: Using package option AMR_custom_ab, preferred method. use method: Create data set structure antibiotics data set (containing least columns \"ab\" \"name\") save saveRDS() location choice, e.g. \"~/my_custom_ab.rds\", remote location. Set file location package option AMR_custom_ab: options(AMR_custom_ab = \"~/my_custom_ab.rds\"). can even remote file location, https URL. Since options saved R sessions, best save option .Rprofile file loaded start-R. , open .Rprofile file using e.g. utils::file.edit(\"~/.Rprofile\"), add text save file:   Upon package load, file loaded run add_custom_antimicrobials() function. Method 2: Loading antimicrobial additions directly .Rprofile file. Note definitions stored user-specific R file, suboptimal workflow. use method: Edit .Rprofile file using e.g. utils::file.edit(\"~/.Rprofile\"). Add text like save file:   Use clear_custom_antimicrobials() clear previously added antimicrobials.","code":"# Add custom antimicrobial codes: options(AMR_custom_ab = \"~/my_custom_ab.rds\") # Add custom antibiotic drug codes:  AMR::add_custom_antimicrobials(    data.frame(ab = \"TESTAB\",               name = \"Test Antibiotic\",               group = \"Test Group\")  )"},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/add_custom_antimicrobials.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add Custom Antimicrobials — add_custom_antimicrobials","text":"","code":"# \\donttest{  # returns NA and throws a warning (which is suppressed here): suppressWarnings(   as.ab(\"testab\") ) #> Class 'ab' #> [1] <NA>  # now add a custom entry - it will be considered by as.ab() and # all ab_*() functions add_custom_antimicrobials(   data.frame(     ab = \"TESTAB\",     name = \"Test Antibiotic\",     # you can add any property present in the     # 'antibiotics' data set, such as 'group':     group = \"Test Group\"   ) ) #> ℹ Added one record to the internal antibiotics data set.  # \"testab\" is now a new antibiotic: as.ab(\"testab\") #> Class 'ab' #> [1] TESTAB ab_name(\"testab\") #> [1] \"Test Antibiotic\" ab_group(\"testab\") #> [1] \"Test Group\"  ab_info(\"testab\") #> $ab #> [1] \"TESTAB\" #>  #> $cid #> [1] NA #>  #> $name #> [1] \"Test Antibiotic\" #>  #> $group #> [1] \"Test Group\" #>  #> $atc #> [1] NA #>  #> $atc_group1 #> [1] NA #>  #> $atc_group2 #> [1] NA #>  #> $tradenames #> [1] NA #>  #> $loinc #> [1] NA #>  #> $ddd #> $ddd$oral #> $ddd$oral$amount #> [1] NA #>  #> $ddd$oral$units #> [1] NA #>  #>  #> $ddd$iv #> $ddd$iv$amount #> [1] NA #>  #> $ddd$iv$units #> [1] NA #>  #>  #>    # Add Co-fluampicil, which is one of the many J01CR50 codes, see # https://atcddd.fhi.no/ddd/list_of_ddds_combined_products/ add_custom_antimicrobials(   data.frame(     ab = \"COFLU\",     name = \"Co-fluampicil\",     atc = \"J01CR50\",     group = \"Beta-lactams/penicillins\"   ) ) #> ℹ Added one record to the internal antibiotics data set. ab_atc(\"Co-fluampicil\") #> [1] \"J01CR50\" ab_name(\"J01CR50\") #> [1] \"Co-fluampicil\"  # even antimicrobial selectors work x <- data.frame(   random_column = \"some value\",   coflu = as.sir(\"S\"),   ampicillin = as.sir(\"R\") ) x #>   random_column coflu ampicillin #> 1    some value     S          R x[, betalactams()] #> ℹ For betalactams() using columns 'coflu' (co-fluampicil) and #>   'ampicillin' #>   coflu ampicillin #> 1     S          R # }"},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":null,"dir":"Reference","previous_headings":"","what":"Add Custom Microorganisms — add_custom_microorganisms","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"add_custom_microorganisms() can add custom microorganisms, non-taxonomic outcome laboratory analysis.","code":""},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"","code":"add_custom_microorganisms(x)  clear_custom_microorganisms()"},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"x data.frame resembling microorganisms data set, least containing column \"genus\" (case-insensitive)","code":""},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"function fill missing taxonomy , specific taxonomic columns missing, see Examples. Important: Due R works, add_custom_microorganisms() function run every R session - added microorganisms stored sessions thus lost R exited. two ways circumvent automate process adding microorganisms: Method 1: Using package option AMR_custom_mo, preferred method. use method: Create data set structure microorganisms data set (containing least column \"genus\") save saveRDS() location choice, e.g. \"~/my_custom_mo.rds\", remote location. Set file location package option AMR_custom_mo: options(AMR_custom_mo = \"~/my_custom_mo.rds\"). can even remote file location, https URL. Since options saved R sessions, best save option .Rprofile file loaded start-R. , open .Rprofile file using e.g. utils::file.edit(\"~/.Rprofile\"), add text save file:   Upon package load, file loaded run add_custom_microorganisms() function. Method 2: Loading microorganism directly .Rprofile file. Note definitions stored user-specific R file, suboptimal workflow. use method: Edit .Rprofile file using e.g. utils::file.edit(\"~/.Rprofile\"). Add text like save file:   Use clear_custom_microorganisms() clear previously added microorganisms.","code":"# Add custom microorganism codes: options(AMR_custom_mo = \"~/my_custom_mo.rds\") # Add custom antibiotic drug codes:  AMR::add_custom_microorganisms(    data.frame(genus = \"Enterobacter\",               species = \"asburiae/cloacae\")  )"},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/add_custom_microorganisms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Add Custom Microorganisms — add_custom_microorganisms","text":"","code":"# \\donttest{ # a combination of species is not formal taxonomy, so # this will result in \"Enterobacter cloacae cloacae\", # since it resembles the input best: mo_name(\"Enterobacter asburiae/cloacae\") #> [1] \"Enterobacter asburiae\"  # now add a custom entry - it will be considered by as.mo() and # all mo_*() functions add_custom_microorganisms(   data.frame(     genus = \"Enterobacter\",     species = \"asburiae/cloacae\"   ) ) #> ℹ Added Enterobacter asburiae/cloacae to the internal microorganisms data #>   set.  # E. asburiae/cloacae is now a new microorganism: mo_name(\"Enterobacter asburiae/cloacae\") #> [1] \"Enterobacter asburiae/cloacae\"  # its code: as.mo(\"Enterobacter asburiae/cloacae\") #> Class 'mo' #> [1] CUSTOM1_ENTRB_ASB/  # all internal algorithms will work as well: mo_name(\"Ent asburia cloacae\") #> [1] \"Enterobacter asburiae/cloacae\"  # and even the taxonomy was added based on the genus! mo_family(\"E. asburiae/cloacae\") #> [1] \"Enterobacteriaceae\" mo_gramstain(\"Enterobacter asburiae/cloacae\") #> [1] \"Gram-negative\"  mo_info(\"Enterobacter asburiae/cloacae\") #> $mo #> [1] \"CUSTOM1_ENTRB_ASB/\" #>  #> $rank #> [1] \"species\" #>  #> $kingdom #> [1] \"Bacteria\" #>  #> $phylum #> [1] \"Pseudomonadota\" #>  #> $class #> [1] \"Gammaproteobacteria\" #>  #> $order #> [1] \"Enterobacterales\" #>  #> $family #> [1] \"Enterobacteriaceae\" #>  #> $genus #> [1] \"Enterobacter\" #>  #> $species #> [1] \"asburiae/cloacae\" #>  #> $subspecies #> [1] \"\" #>  #> $status #> [1] \"accepted\" #>  #> $synonyms #> NULL #>  #> $gramstain #> [1] \"Gram-negative\" #>  #> $oxygen_tolerance #> [1] NA #>  #> $url #> [1] \"\" #>  #> $ref #> [1] \"Self-added, 2025\" #>  #> $snomed #> [1] NA #>  #> $lpsn #> [1] NA #>  #> $mycobank #> [1] NA #>  #> $gbif #> [1] NA #>  #> $group_members #> character(0) #>    # the function tries to be forgiving: add_custom_microorganisms(   data.frame(     GENUS = \"BACTEROIDES / PARABACTEROIDES SLASHLINE\",     SPECIES = \"SPECIES\"   ) ) #> ℹ Added Bacteroides/Parabacteroides to the internal microorganisms data #>   set. mo_name(\"BACTEROIDES / PARABACTEROIDES\") #> [1] \"Bacteroides/Parabacteroides\" mo_rank(\"BACTEROIDES / PARABACTEROIDES\") #> [1] \"genus\"  # taxonomy still works, even though a slashline genus was given as input: mo_family(\"Bacteroides/Parabacteroides\") #> [1] \"Bacteroidaceae\"   # for groups and complexes, set them as species or subspecies: add_custom_microorganisms(   data.frame(     genus = \"Citrobacter\",     species = c(\"freundii\", \"braakii complex\"),     subspecies = c(\"complex\", \"\")   ) ) #> ℹ Added Citrobacter braakii complex and Citrobacter freundii complex to the #>   internal microorganisms data set. mo_name(c(\"C. freundii complex\", \"C. braakii complex\")) #> [1] \"Citrobacter freundii complex\" \"Citrobacter braakii complex\"  mo_species(c(\"C. freundii complex\", \"C. braakii complex\")) #> [1] \"freundii complex\" \"braakii complex\"  mo_gramstain(c(\"C. freundii complex\", \"C. braakii complex\")) #> [1] \"Gram-negative\" \"Gram-negative\" # }"},{"path":"https://msberends.github.io/AMR/reference/age.html","id":null,"dir":"Reference","previous_headings":"","what":"Age in Years of Individuals — age","title":"Age in Years of Individuals — age","text":"Calculates age years based reference date, system date default.","code":""},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Age in Years of Individuals — age","text":"","code":"age(x, reference = Sys.Date(), exact = FALSE, na.rm = FALSE, ...)"},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Age in Years of Individuals — age","text":"x date(s), character (vectors) coerced .POSIXlt() reference reference date(s) (default today), character (vectors) coerced .POSIXlt() exact logical indicate whether age calculation exact, .e. decimals. divides number days year--date (YTD) x number days year reference (either 365 366). na.rm logical indicate whether missing values removed ... arguments passed .POSIXlt(), origin","code":""},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Age in Years of Individuals — age","text":"integer (decimals) exact = FALSE, double (decimals) otherwise","code":""},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Age in Years of Individuals — age","text":"Ages 0 returned NA warning. Ages 120 give warning. function vectorises x reference, meaning either can length 1 argument larger length.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/age.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Age in Years of Individuals — age","text":"","code":"# 10 random pre-Y2K birth dates df <- data.frame(birth_date = as.Date(\"2000-01-01\") - runif(10) * 25000)  # add ages df$age <- age(df$birth_date)  # add exact ages df$age_exact <- age(df$birth_date, exact = TRUE)  # add age at millenium switch df$age_at_y2k <- age(df$birth_date, \"2000-01-01\")  df #>    birth_date age age_exact age_at_y2k #> 1  1965-12-05  59  59.18630         34 #> 2  1980-03-01  44  44.95068         19 #> 3  1949-11-01  75  75.27945         50 #> 4  1947-02-14  77  77.99178         52 #> 5  1940-02-19  84  84.97808         59 #> 6  1988-01-10  37  37.08767         11 #> 7  1997-08-27  27  27.46027          2 #> 8  1978-01-26  47  47.04384         21 #> 9  1972-06-17  52  52.65479         27 #> 10 1986-08-10  38  38.50685         13"},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":null,"dir":"Reference","previous_headings":"","what":"Split Ages into Age Groups — age_groups","title":"Split Ages into Age Groups — age_groups","text":"Split ages age groups defined split argument. allows easier demographic (antimicrobial resistance) analysis.","code":""},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Split Ages into Age Groups — age_groups","text":"","code":"age_groups(x, split_at = c(12, 25, 55, 75), na.rm = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Split Ages into Age Groups — age_groups","text":"x age, e.g. calculated age() split_at values split x - default age groups 0-11, 12-24, 25-54, 55-74 75+. See Details. na.rm logical indicate whether missing values removed","code":""},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Split Ages into Age Groups — age_groups","text":"Ordered factor","code":""},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Split Ages into Age Groups — age_groups","text":"split ages, input split_at argument can : numeric vector. value e.g. c(10, 20) split x 0-9, 10-19 20+. value 50 split x 0-49 50+. default split young children (0-11), youth (12-24), young adults (25-54), middle-aged adults (55-74) elderly (75+). character: \"children\" \"kids\", equivalent : c(0, 1, 2, 4, 6, 13, 18). split 0, 1, 2-3, 4-5, 6-12, 13-17 18+. \"elderly\" \"seniors\", equivalent : c(65, 75, 85). split 0-64, 65-74, 75-84, 85+. \"fives\", equivalent : 1:20 * 5. split 0-4, 5-9, ..., 95-99, 100+. \"tens\", equivalent : 1:10 * 10. split 0-9, 10-19, ..., 90-99, 100+.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/age_groups.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Split Ages into Age Groups — age_groups","text":"","code":"ages <- c(3, 8, 16, 54, 31, 76, 101, 43, 21)  # split into 0-49 and 50+ age_groups(ages, 50) #> [1] 0-49 0-49 0-49 50+  0-49 50+  50+  0-49 0-49 #> Levels: 0-49 < 50+  # split into 0-19, 20-49 and 50+ age_groups(ages, c(20, 50)) #> [1] 0-19  0-19  0-19  50+   20-49 50+   50+   20-49 20-49 #> Levels: 0-19 < 20-49 < 50+  # split into groups of ten years age_groups(ages, 1:10 * 10) #> [1] 0-9   0-9   10-19 50-59 30-39 70-79 100+  40-49 20-29 #> 11 Levels: 0-9 < 10-19 < 20-29 < 30-39 < 40-49 < 50-59 < 60-69 < ... < 100+ age_groups(ages, split_at = \"tens\") #> [1] 0-9   0-9   10-19 50-59 30-39 70-79 100+  40-49 20-29 #> 11 Levels: 0-9 < 10-19 < 20-29 < 30-39 < 40-49 < 50-59 < 60-69 < ... < 100+  # split into groups of five years age_groups(ages, 1:20 * 5) #> [1] 0-4   5-9   15-19 50-54 30-34 75-79 100+  40-44 20-24 #> 21 Levels: 0-4 < 5-9 < 10-14 < 15-19 < 20-24 < 25-29 < 30-34 < ... < 100+ age_groups(ages, split_at = \"fives\") #> [1] 0-4   5-9   15-19 50-54 30-34 75-79 100+  40-44 20-24 #> 21 Levels: 0-4 < 5-9 < 10-14 < 15-19 < 20-24 < 25-29 < 30-34 < ... < 100+  # split specifically for children age_groups(ages, c(1, 2, 4, 6, 13, 18)) #> [1] 2-3   6-12  13-17 18+   18+   18+   18+   18+   18+   #> Levels: 0 < 1 < 2-3 < 4-5 < 6-12 < 13-17 < 18+ age_groups(ages, \"children\") #> [1] 2-3   6-12  13-17 18+   18+   18+   18+   18+   18+   #> Levels: 0 < 1 < 2-3 < 4-5 < 6-12 < 13-17 < 18+  # \\donttest{ # resistance of ciprofloxacin per age group if (require(\"dplyr\") && require(\"ggplot2\")) {   example_isolates %>%     filter_first_isolate() %>%     filter(mo == as.mo(\"Escherichia coli\")) %>%     group_by(age_group = age_groups(age)) %>%     select(age_group, CIP) %>%     ggplot_sir(       x = \"age_group\",       minimum = 0,       x.title = \"Age Group\",       title = \"Ciprofloxacin resistance per age group\"     ) } #> Loading required package: ggplot2  # }"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":null,"dir":"Reference","previous_headings":"","what":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"Create detailed antibiograms options traditional, combination, syndromic, Bayesian WISCA methods. Adhering previously described approaches (see Source) especially Bayesian WISCA model (Weighted-Incidence Syndromic Combination Antibiogram) Bielicki et al., functions provide flexible output formats including plots tables, ideal integration R Markdown Quarto reports.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"","code":"antibiogram(x, antibiotics = where(is.sir), mo_transform = \"shortname\",   ab_transform = \"name\", syndromic_group = NULL, add_total_n = FALSE,   only_all_tested = FALSE, digits = ifelse(wisca, 1, 0),   formatting_type = getOption(\"AMR_antibiogram_formatting_type\",   ifelse(wisca, 14, 10)), col_mo = NULL, language = get_AMR_locale(),   minimum = 30, combine_SI = TRUE, sep = \" + \", wisca = FALSE,   simulations = 1000, conf_interval = 0.95, interval_side = \"two-tailed\",   info = interactive())  wisca(x, antibiotics = where(is.sir), mo_transform = \"shortname\",   ab_transform = \"name\", syndromic_group = NULL, add_total_n = FALSE,   only_all_tested = FALSE, digits = 1,   formatting_type = getOption(\"AMR_antibiogram_formatting_type\", 14),   col_mo = NULL, language = get_AMR_locale(), minimum = 30,   combine_SI = TRUE, sep = \" + \", simulations = 1000,   info = interactive())  retrieve_wisca_parameters(wisca_model, ...)  # S3 method for class 'antibiogram' plot(x, ...)  # S3 method for class 'antibiogram' autoplot(object, ...)  # S3 method for class 'antibiogram' knit_print(x, italicise = TRUE,   na = getOption(\"knitr.kable.NA\", default = \"\"), ...)"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"Bielicki JA et al. (2016). Selecting appropriate empirical antibiotic regimens paediatric bloodstream infections: application Bayesian decision model local pooled antimicrobial resistance surveillance data Journal Antimicrobial Chemotherapy 71(3); doi:10.1093/jac/dkv397 Bielicki JA et al. (2020). Evaluation coverage 3 antibiotic regimens neonatal sepsis hospital setting across Asian countries JAMA Netw Open. 3(2):e1921124; doi:10.1001.jamanetworkopen.2019.21124 Klinker KP et al. (2021). Antimicrobial stewardship antibiograms: importance moving beyond traditional antibiograms. Therapeutic Advances Infectious Disease, May 5;8:20499361211011373; doi:10.1177/20499361211011373 Barbieri E et al. (2021). Development Weighted-Incidence Syndromic Combination Antibiogram (WISCA) guide choice empiric antibiotic treatment urinary tract infection paediatric patients: Bayesian approach Antimicrobial Resistance & Infection Control May 1;10(1):74; doi:10.1186/s13756-021-00939-2 M39 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 5th Edition, 2022, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m39/.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"x data.frame containing least column microorganisms columns antimicrobial results (class 'sir', see .sir()) antibiotics vector antimicrobial name code (evaluated .ab(), column name x, (combinations ) antimicrobial selectors aminoglycosides() carbapenems(). combination antibiograms, can also set values separated \"+\", \"TZP+TOB\" \"cipro + genta\", given columns resembling antimicrobials exist x. See Examples. mo_transform character transform microorganism input - must \"name\", \"shortname\" (default), \"gramstain\", one column names microorganisms data set: \"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\", \"snomed\". Can also NULL transform input NA consider microorganisms 'unknown'. ab_transform character transform antimicrobial input - must one column names antibiotics data set (defaults \"name\"): \"ab\", \"cid\", \"name\", \"group\", \"atc\", \"atc_group1\", \"atc_group2\", \"abbreviations\", \"synonyms\", \"oral_ddd\", \"oral_units\", \"iv_ddd\", \"iv_units\", \"loinc\". Can also NULL transform input. syndromic_group column name x, values calculated split rows x, e.g. using ifelse() case_when(). See Examples. add_total_n logical indicate whether total available numbers per pathogen added table (default TRUE). add lowest highest number available isolates per antimicrobial (e.g, E. coli 200 isolates available ciprofloxacin 150 amoxicillin, returned number \"150-200\"). only_all_tested (combination antibiograms): logical indicate isolates must tested antimicrobials, see Details digits number digits use rounding antimicrobial coverage, defaults 1 WISCA 0 otherwise formatting_type numeric value (1–22 WISCA, 1-12 non-WISCA) indicating 'cells' antibiogram table formatted. See Details > Formatting Type list options. col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). language language translate text, defaults system language (see get_AMR_locale()) minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. combine_SI logical indicate whether susceptibility determined results either S, SDD, , instead S (default TRUE) sep separating character antimicrobial columns combination antibiograms wisca logical indicate whether Weighted-Incidence Syndromic Combination Antibiogram (WISCA) must generated (default FALSE). use Bayesian decision model estimate regimen coverage probabilities using Monte Carlo simulations. Set simulations adjust. simulations (WISCA) numerical value set number Monte Carlo simulations conf_interval (WISCA) numerical value set confidence interval (default 0.95) interval_side (WISCA) side confidence interval, either \"two-tailed\" (default), \"left\" \"right\" info logical indicate info printed - default TRUE interactive mode wisca_model outcome wisca() antibiogram(..., wisca = TRUE) ... used R Markdown Quarto: arguments passed knitr::kable() (otherwise, use) object antibiogram() object italicise logical indicate whether microorganism names knitr table made italic, using italicise_taxonomy(). na character use showing NA values","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"functions return table values 0 100 susceptibility, resistance. Remember filter data let contain first isolates! needed exclude duplicates reduce selection bias. Use first_isolate() determine one four available algorithms: isolate-based, patient-based, episode-based, phenotype-based. estimating antimicrobial coverage, especially creating WISCA, outcome might become reliable including top n species encountered data. can filter top n using top_n_microorganisms(). example, use top_n_microorganisms(your_data, n = 10) pre-processing step include top 10 species data. numeric values antibiogram stored long format attribute long_numeric. can retrieve using attributes(x)$long_numeric, x outcome antibiogram() wisca(). ideal e.g. advanced plotting.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"formatting-type","dir":"Reference","previous_headings":"","what":"Formatting Type","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"formatting 'cells' table can set argument formatting_type. examples, 5 antimicrobial coverage (WISCA: 4-6 indicates confidence level), 15 numerator, 300 denominator: 5 15 300 15/300 5 (300) 5% (300) 5 (N=300) 5% (N=300) 5 (15/300) 5% (15/300) - default non-WISCA 5 (N=15/300) 5% (N=15/300) Additional options WISCA (using antibiogram(..., wisca = TRUE) wisca()): 5 (4-6) 5% (4-6%) - default WISCA 5 (4-6,300) 5% (4-6%,300) 5 (4-6,N=300) 5% (4-6%,N=300) 5 (4-6,15/300) 5% (4-6%,15/300) 5 (4-6,N=15/300) 5% (4-6%,N=15/300) default 14 WISCA 10 non-WISCA, can set globally package option AMR_antibiogram_formatting_type, e.g. options(AMR_antibiogram_formatting_type = 5). note WISCA, numerator denominator less useful report, since included Bayesian model apparent susceptibility confidence level. Set digits (defaults 0) alter rounding susceptibility percentages.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"antibiogram-types","dir":"Reference","previous_headings":"","what":"Antibiogram Types","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"various antibiogram types, summarised Klinker et al. (2021, doi:10.1177/20499361211011373 ), supported antibiogram(). Use WISCA whenever possible, since provides precise coverage estimates accounting pathogen incidence antimicrobial susceptibility, shown Bielicki et al. (2020, doi:10.1001.jamanetworkopen.2019.21124 ). See section Explaining WISCA page. Traditional Antibiogram Case example: Susceptibility Pseudomonas aeruginosa piperacillin/tazobactam (TZP) Code example:   Combination Antibiogram Case example: Additional susceptibility Pseudomonas aeruginosa TZP + tobramycin versus TZP alone Code example:   Syndromic Antibiogram Case example: Susceptibility Pseudomonas aeruginosa TZP among respiratory specimens (obtained among ICU patients ) Code example:   Weighted-Incidence Syndromic Combination Antibiogram (WISCA) WISCA can applied antibiogram, see section Explaining WISCA page information. Code example:   WISCA uses sophisticated Bayesian decision model combine local pooled antimicrobial resistance data. approach evaluates local patterns can also draw multi-centre datasets improve regimen accuracy, even low-incidence infections like paediatric bloodstream infections (BSIs).","code":"antibiogram(your_data,             antibiotics = \"TZP\") antibiogram(your_data,             antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\")) antibiogram(your_data,             antibiotics = penicillins(),             syndromic_group = \"ward\") antibiogram(your_data,             antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"),             wisca = TRUE)  # this is equal to: wisca(your_data,       antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"))"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"grouped-tibbles","dir":"Reference","previous_headings":"","what":"Grouped tibbles","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"type antibiogram, grouped tibbles can also used calculate susceptibilities various groups. Code example:","code":"library(dplyr) your_data %>%   group_by(has_sepsis, is_neonate, sex) %>%   wisca(antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"))"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"stepped-approach-for-clinical-insight","dir":"Reference","previous_headings":"","what":"Stepped Approach for Clinical Insight","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"clinical practice, antimicrobial coverage decisions evolve microbiological data becomes available. theoretical stepped approach ensures empirical coverage can continuously assessed improve patient outcomes: Initial Empirical Therapy (Admission / Pre-Culture Data) admission, pathogen information available. Action: broad-spectrum coverage based local resistance patterns syndromic antibiograms. Code example:   Refinement Gram Stain Results blood culture becomes positive, Gram stain provides initial crucial first stratification (Gram-positive vs. Gram-negative). Action: narrow coverage based Gram stain-specific resistance patterns. Code example:   Definitive Therapy Based Species Identification cultivation pathogen, full pathogen identification allows precise targeting therapy. Action: adjust treatment pathogen-specific antibiograms, minimizing resistance risks. Code example:   structuring antibiograms around stepped approach, clinicians can make data-driven adjustments stage, ensuring optimal empirical targeted therapy reducing unnecessary broad-spectrum antimicrobial use.","code":"antibiogram(your_data,             antibiotics = selected_regimens,             wisca = TRUE,             mo_transform = NA) # all pathogens set to `NA` antibiogram(your_data,             antibiotics = selected_regimens,             wisca = TRUE,             mo_transform = \"gramstain\") # all pathogens set to Gram-pos/Gram-neg antibiogram(your_data,             antibiotics = selected_regimens,             wisca = TRUE,             mo_transform = \"shortname\") # all pathogens set to 'G. species', e.g., E. coli"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"inclusion-in-combination-antibiograms","dir":"Reference","previous_headings":"","what":"Inclusion in Combination Antibiograms","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"Note combination antibiograms, important realise susceptibility can calculated two ways, can set only_all_tested argument (default FALSE). See example two antimicrobials, Drug Drug B, antibiogram() works calculate %SI:","code":"--------------------------------------------------------------------                     only_all_tested = FALSE  only_all_tested = TRUE                     -----------------------  -----------------------  Drug A    Drug B   considered   considered  considered   considered                     susceptible    tested    susceptible    tested --------  --------  -----------  ----------  -----------  ----------  S or I    S or I        X            X           X            X    R       S or I        X            X           X            X   <NA>     S or I        X            X           -            -  S or I      R           X            X           X            X    R         R           -            X           -            X   <NA>       R           -            -           -            -  S or I     <NA>         X            X           -            -    R        <NA>         -            -           -            -   <NA>      <NA>         -            -           -            - --------------------------------------------------------------------"},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"plotting","dir":"Reference","previous_headings":"","what":"Plotting","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"types antibiograms listed can plotted (using ggplot2::autoplot() base R's plot() barplot()). mentioned , numeric values antibiogram stored long format attribute long_numeric. can retrieve using attributes(x)$long_numeric, x outcome antibiogram() wisca(). outcome antibiogram() can also used directly R Markdown / Quarto (.e., knitr) reports. case, knitr::kable() applied automatically microorganism names even printed italics default (see argument italicise). can also use functions specific 'table reporting' packages transform output antibiogram() needs, e.g. flextable::as_flextable() gt::gt().","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"explaining-wisca","dir":"Reference","previous_headings":"","what":"Explaining WISCA","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"WISCA, outlined Bielicki et al. (doi:10.1093/jac/dkv397 ), stands Weighted-Incidence Syndromic Combination Antibiogram, estimates probability adequate empirical antimicrobial regimen coverage specific infection syndromes. method leverages Bayesian hierarchical logistic regression framework random effects pathogens regimens, enabling robust estimates presence sparse data. Bayesian model assumes conjugate priors parameter estimation. example, coverage probability \\(\\theta\\) given antimicrobial regimen modelled using Beta distribution prior: $$\\theta \\sim \\text{Beta}(\\alpha_0, \\beta_0)$$ \\(\\alpha_0\\) \\(\\beta_0\\) represent prior successes failures, respectively, informed expert knowledge weakly informative priors (e.g., \\(\\alpha_0 = 1, \\beta_0 = 1\\)). likelihood function constructed based observed data, number covered cases regimen follows binomial distribution: $$y \\sim \\text{Binomial}(n, \\theta)$$ Posterior parameter estimates obtained combining prior likelihood using Bayes' theorem. posterior distribution \\(\\theta\\) also Beta distribution: $$\\theta | y \\sim \\text{Beta}(\\alpha_0 + y, \\beta_0 + n - y)$$ Pathogen incidence, representing proportion infections caused different pathogens, modelled using Dirichlet distribution, natural conjugate prior multinomial outcomes. Dirichlet distribution parameterised vector concentration parameters \\(\\alpha\\), \\(\\alpha_i\\) corresponds specific pathogen. prior typically chosen uniform (\\(\\alpha_i = 1\\)), reflecting assumption equal prior probability across pathogens. posterior distribution pathogen incidence given : $$\\text{Dirichlet}(\\alpha_1 + n_1, \\alpha_2 + n_2, \\dots, \\alpha_K + n_K)$$ \\(n_i\\) number infections caused pathogen \\(\\) observed data. practical implementation, pathogen incidences sampled posterior using normalised Gamma-distributed random variables: $$x_i \\sim \\text{Gamma}(\\alpha_i + n_i, 1)$$ $$p_i = \\frac{x_i}{\\sum_{j=1}^K x_j}$$ \\(x_i\\) represents unnormalised pathogen counts, \\(p_i\\) normalised proportion pathogen \\(\\). hierarchical modelling, pathogen-level effects (e.g., differences resistance patterns) regimen-level effects modelled using Gaussian priors log-odds. hierarchical structure ensures partial pooling estimates across groups, improving stability strata small sample sizes. model implemented using Hamiltonian Monte Carlo (HMC) sampling. Stratified results can provided based covariates age, sex, clinical complexity (e.g., prior antimicrobial treatments renal/urological comorbidities) using dplyr's group_by() pre-processing step running wisca(). Posterior odds ratios (ORs) derived quantify effect covariates coverage probabilities: $$\\text{}_{\\text{covariate}} = \\frac{\\exp(\\beta_{\\text{covariate}})}{\\exp(\\beta_0)}$$ combining empirical data prior knowledge, WISCA overcomes limitations traditional combination antibiograms, offering disease-specific, patient-stratified estimates robust uncertainty quantification. tool invaluable antimicrobial stewardship programs empirical treatment guideline refinement.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"author","dir":"Reference","previous_headings":"","what":"Author","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"Implementation: Dr. Larisse Bolton Dr. Matthijs Berends","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiogram.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Generate Traditional, Combination, Syndromic, or WISCA Antibiograms — antibiogram","text":"","code":"# example_isolates is a data set available in the AMR package. # run ?example_isolates for more info. example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # \\donttest{ # Traditional antibiogram ----------------------------------------------  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) #> # An Antibiogram (non-WISCA): 10 × 7 #>    Pathogen       Amikacin    Gentamicin Imipenem Kanamycin Meropenem Tobramycin #>  * <chr>          <chr>       <chr>      <chr>    <chr>     <chr>     <chr>      #>  1 CoNS           0% (0/43)   86% (267/… 52% (25… 0% (0/43) 52% (25/… 22% (12/5… #>  2 E. coli        100% (171/… 98% (451/… 100% (4… NA        100% (41… 97% (450/… #>  3 E. faecalis    0% (0/39)   0% (0/39)  100% (3… 0% (0/39) NA        0% (0/39)  #>  4 K. pneumoniae  NA          90% (52/5… 100% (5… NA        100% (53… 90% (52/5… #>  5 P. aeruginosa  NA          100% (30/… NA       0% (0/30) NA        100% (30/… #>  6 P. mirabilis   NA          94% (32/3… 94% (30… NA        NA        94% (32/3… #>  7 S. aureus      NA          99% (231/… NA       NA        NA        98% (84/8… #>  8 S. epidermidis 0% (0/44)   79% (128/… NA       0% (0/44) NA        51% (45/8… #>  9 S. hominis     NA          92% (74/8… NA       NA        NA        85% (53/6… #> 10 S. pneumoniae  0% (0/117)  0% (0/117) NA       0% (0/11… NA        0% (0/117) #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram  antibiogram(example_isolates,   antibiotics = aminoglycosides(),   ab_transform = \"atc\",   mo_transform = \"gramstain\" ) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # An Antibiogram (non-WISCA): 2 × 5 #>   Pathogen      J01GB01       J01GB03        J01GB04    J01GB06       #> * <chr>         <chr>         <chr>          <chr>      <chr>         #> 1 Gram-negative 96% (658/686) 96% (659/684)  0% (0/35)  98% (251/256) #> 2 Gram-positive 34% (228/665) 63% (740/1170) 0% (0/436) 0% (0/436)    #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram  antibiogram(example_isolates,   antibiotics = carbapenems(),   ab_transform = \"name\",   mo_transform = \"name\" ) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> # An Antibiogram (non-WISCA): 5 × 3 #>   Pathogen                                 Imipenem       Meropenem      #> * <chr>                                    <chr>          <chr>          #> 1 Coagulase-negative Staphylococcus (CoNS) 52% (25/48)    52% (25/48)    #> 2 Enterococcus faecalis                    100% (38/38)   NA             #> 3 Escherichia coli                         100% (422/422) 100% (418/418) #> 4 Klebsiella pneumoniae                    100% (51/51)   100% (53/53)   #> 5 Proteus mirabilis                        94% (30/32)    NA             #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram   # Combined antibiogram -------------------------------------------------  # combined antibiotics yield higher empiric coverage antibiogram(example_isolates,   antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"),   mo_transform = \"gramstain\" ) #> # An Antibiogram (non-WISCA): 2 × 4 #>   Pathogen  Piperacillin/tazobac…¹ Piperacillin/tazobac…² Piperacillin/tazobac…³ #> * <chr>     <chr>                  <chr>                  <chr>                  #> 1 Gram-neg… 88% (565/641)          99% (681/691)          98% (679/693)          #> 2 Gram-pos… 86% (296/345)          98% (1018/1044)        95% (524/550)          #> # ℹ abbreviated names: ¹​`Piperacillin/tazobactam`, #> #   ²​`Piperacillin/tazobactam + Gentamicin`, #> #   ³​`Piperacillin/tazobactam + Tobramycin` #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram  # names of antibiotics do not need to resemble columns exactly: antibiogram(example_isolates,   antibiotics = c(\"Cipro\", \"cipro + genta\"),   mo_transform = \"gramstain\",   ab_transform = \"name\",   sep = \" & \" ) #> # An Antibiogram (non-WISCA): 2 × 3 #>   Pathogen      Ciprofloxacin `Ciprofloxacin & Gentamicin` #> * <chr>         <chr>         <chr>                        #> 1 Gram-negative 91% (621/684) 99% (684/694)                #> 2 Gram-positive 77% (560/724) 93% (784/847)                #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram   # Syndromic antibiogram ------------------------------------------------  # the data set could contain a filter for e.g. respiratory specimens 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) #> # An Antibiogram (non-WISCA): 14 × 8 #>    `Syndromic Group` Pathogen   Amikacin Gentamicin Imipenem Kanamycin Meropenem #>  * <chr>             <chr>      <chr>    <chr>      <chr>    <chr>     <chr>     #>  1 Clinical          CoNS       NA       89% (183/… 57% (20… NA        57% (20/… #>  2 ICU               CoNS       NA       79% (58/7… NA       NA        NA        #>  3 Outpatient        CoNS       NA       84% (26/3… NA       NA        NA        #>  4 Clinical          E. coli    100% (1… 98% (291/… 100% (2… NA        100% (27… #>  5 ICU               E. coli    100% (5… 99% (135/… 100% (1… NA        100% (11… #>  6 Clinical          K. pneumo… NA       92% (47/5… 100% (4… NA        100% (46… #>  7 Clinical          P. mirabi… NA       100% (30/… NA       NA        NA        #>  8 Clinical          S. aureus  NA       99% (148/… NA       NA        NA        #>  9 ICU               S. aureus  NA       100% (66/… NA       NA        NA        #> 10 Clinical          S. epider… NA       82% (65/7… NA       NA        NA        #> 11 ICU               S. epider… NA       72% (54/7… NA       NA        NA        #> 12 Clinical          S. hominis NA       96% (43/4… NA       NA        NA        #> 13 Clinical          S. pneumo… 0% (0/7… 0% (0/78)  NA       0% (0/78) NA        #> 14 ICU               S. pneumo… 0% (0/3… 0% (0/30)  NA       0% (0/30) NA        #> # ℹ 1 more variable: Tobramycin <chr> #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram  # now define a data set with only E. coli ex1 <- example_isolates[which(mo_genus() == \"Escherichia\"), ] #> ℹ Using column 'mo' as input for mo_genus()  # with a custom language, though this will be determined automatically # (i.e., this table will be in Spanish on Spanish systems) antibiogram(ex1,   antibiotics = aminoglycosides(),   ab_transform = \"name\",   syndromic_group = ifelse(ex1$ward == \"ICU\",     \"UCI\", \"No UCI\"   ),   language = \"es\" ) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # An Antibiogram (non-WISCA): 2 × 5 #>   `Grupo sindrómico` Patógeno Amikacina      Gentamicina   Tobramicina   #> * <chr>              <chr>    <chr>          <chr>         <chr>         #> 1 No UCI             E. coli  100% (119/119) 98% (316/323) 98% (318/325) #> 2 UCI                E. coli  100% (52/52)   99% (135/137) 96% (132/137) #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram   # WISCA antibiogram ----------------------------------------------------  # can be used for any of the above types - just add `wisca = TRUE` antibiogram(example_isolates,   antibiotics = c(\"TZP\", \"TZP+TOB\", \"TZP+GEN\"),   mo_transform = \"gramstain\",   wisca = TRUE ) #> # An Antibiogram (WISCA / 95% CI): 2 × 4 #>   Pathogen  Piperacillin/tazobac…¹ Piperacillin/tazobac…² Piperacillin/tazobac…³ #> * <chr>     <chr>                  <chr>                  <chr>                  #> 1 Gram-neg… 88% (85.2-90.5%)       98.4% (97.3-99.2%)     97.9% (96.6-98.7%)     #> 2 Gram-pos… 85.6% (81.9-89.1%)     97.4% (96.4-98.3%)     95.1% (93.2-96.7%)     #> # ℹ abbreviated names: ¹​`Piperacillin/tazobactam`, #> #   ²​`Piperacillin/tazobactam + Gentamicin`, #> #   ³​`Piperacillin/tazobactam + Tobramycin` #> # Use `plot()` or `ggplot2::autoplot()` to create a plot of this antibiogram, #> # or use it directly in R Markdown or https://quarto.org, see ?antibiogram   # Print the output for R Markdown / Quarto -----------------------------  ureido <- antibiogram(example_isolates,   antibiotics = ureidopenicillins(),   ab_transform = \"name\",   wisca = TRUE ) #> ℹ For ureidopenicillins() using column 'TZP' (piperacillin/tazobactam)  # in an Rmd file, you would just need to return `ureido` in a chunk, # but to be explicit here: if (requireNamespace(\"knitr\")) {   cat(knitr::knit_print(ureido)) } #>  #>  #> |Pathogen        |Piperacillin/tazobactam | #> |:---------------|:-----------------------| #> |*B. fragilis*   |4.4% (0.1-15.3%)        | #> |CoNS            |31.4% (17.4-47.1%)      | #> |*E. cloacae*    |73.1% (52.1-88.2%)      | #> |*E. coli*       |94.3% (91.9-96.3%)      | #> |*E. faecalis*   |94.8% (81.5-99.9%)      | #> |*E. faecium*    |9.7% (1.4-25.6%)        | #> |GBS             |94.9% (82.5-99.9%)      | #> |*K. pneumoniae* |87% (77.8-94.3%)        | #> |*P. aeruginosa* |96.4% (86.8-99.9%)      | #> |*P. mirabilis*  |96.6% (86.9-100%)       | #> |*S. anginosus*  |94.1% (79.6-99.8%)      | #> |*S. marcescens* |49.9% (30.8-67.8%)      | #> |*S. pneumoniae* |99.1% (96.9-100%)       | #> |*S. pyogenes*   |94.2% (81.1-99.8%)      |   # Generate plots with ggplot2 or base R --------------------------------  ab1 <- antibiogram(example_isolates,   antibiotics = c(\"AMC\", \"CIP\", \"TZP\", \"TZP+TOB\"),   mo_transform = \"gramstain\",   wisca = TRUE ) ab2 <- antibiogram(example_isolates,   antibiotics = c(\"AMC\", \"CIP\", \"TZP\", \"TZP+TOB\"),   mo_transform = \"gramstain\",   syndromic_group = \"ward\" )  if (requireNamespace(\"ggplot2\")) {   ggplot2::autoplot(ab1) }  if (requireNamespace(\"ggplot2\")) {   ggplot2::autoplot(ab2) }   plot(ab1)  plot(ab2)  # }"},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Sets with 607 Antimicrobial Drugs — antibiotics","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"Two data sets containing antibiotics/antimycotics antivirals. Use .ab() one ab_* functions retrieve values antibiotics data set. Three identifiers included data set: antibiotic ID (ab, primarily used package) defined WHONET/EARS-Net, ATC code (atc) defined , Compound ID (cid) found PubChem. properties data set derived one codes. Note drugs multiple ATC codes.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"","code":"antibiotics  antivirals"},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"object class tbl_df (inherits tbl, data.frame) 120 rows 11 columns.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"for-the-antibiotics-data-set-a-tibble-with-observations-and-variables-","dir":"Reference","previous_headings":"","what":"For the antibiotics data set: a tibble with 487 observations and 14 variables:","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"ab Antibiotic ID used package (AMC), using official EARS-Net (European Antimicrobial Resistance Surveillance Network) codes available. unique identifier. cid Compound ID found PubChem. unique identifier. name Official name used WHONET/EARS-Net . unique identifier. group short concise group name, based WHONET WHOCC definitions atc ATC codes (Anatomical Therapeutic Chemical) defined WHOCC, like J01CR02 atc_group1 Official pharmacological subgroup (3rd level ATC code) defined WHOCC, like \"Macrolides, lincosamides streptogramins\" atc_group2 Official chemical subgroup (4th level ATC code) defined WHOCC, like \"Macrolides\" abbr List abbreviations used many countries, also antibiotic susceptibility testing (AST) synonyms Synonyms (often trade names) drug, found PubChem based compound ID oral_ddd Defined Daily Dose (DDD), oral treatment, currently available 179 drugs oral_units Units oral_ddd iv_ddd Defined Daily Dose (DDD), parenteral (intravenous) treatment, currently available 153 drugs iv_units Units iv_ddd loinc codes associated name antimicrobial drug Logical Observation Identifiers Names Codes (LOINC), Version 2.76 (18 September, 2023). Use ab_loinc() retrieve quickly, see ab_property().","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"for-the-antivirals-data-set-a-tibble-with-observations-and-variables-","dir":"Reference","previous_headings":"","what":"For the antivirals data set: a tibble with 120 observations and 11 variables:","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"av Antiviral ID used package (ACI), using official EARS-Net (European Antimicrobial Resistance Surveillance Network) codes available. unique identifier. Combinations codes contain + indicate , ATA+COBI atazanavir/cobicistat. name Official name used WHONET/EARS-Net . unique identifier. atc ATC codes (Anatomical Therapeutic Chemical) defined WHOCC cid Compound ID found PubChem. unique identifier. atc_group Official pharmacological subgroup (3rd level ATC code) defined WHOCC synonyms Synonyms (often trade names) drug, found PubChem based compound ID oral_ddd Defined Daily Dose (DDD), oral treatment oral_units Units oral_ddd iv_ddd Defined Daily Dose (DDD), parenteral treatment iv_units Units iv_ddd loinc codes associated name antiviral drug Logical Observation Identifiers Names Codes (LOINC), Version 2.76 (18 September, 2023). Use av_loinc() retrieve quickly, see av_property().","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology (WHOCC): https://atcddd.fhi./atc_ddd_index/ Logical Observation Identifiers Names Codes (LOINC), Version 2.76 (18 September, 2023). Accessed https://loinc.org October 19th, 2023. European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"Properties based ATC code available ATC available. properties : atc_group1, atc_group2, oral_ddd, oral_units, iv_ddd iv_units. Synonyms (.e. trade names) derived PubChem Compound ID (column cid) consequently available CID available.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"direct-download","dir":"Reference","previous_headings":"","what":"Direct download","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"Like data sets package, data sets publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"whocc","dir":"Reference","previous_headings":"","what":"WHOCC","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"package contains ~550 antibiotic, antimycotic antiviral drugs Anatomical Therapeutic Chemical (ATC) codes, ATC groups Defined Daily Dose (DDD) World Health Organization Collaborating Centre Drug Statistics Methodology (WHOCC, https://atcddd.fhi.) Pharmaceuticals Community Register European Commission (https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm). become gold standard international drug utilisation monitoring research. WHOCC located Oslo Norwegian Institute Public Health funded Norwegian government. European Commission executive European Union promotes general interest. NOTE: WHOCC copyright allow use commercial purposes, unlike info package. See https://atcddd.fhi./copyright_disclaimer/.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/antibiotics.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Sets with 607 Antimicrobial Drugs — antibiotics","text":"","code":"antibiotics #> # A tibble: 487 × 14 #>    ab        cid name   group atc   atc_group1 atc_group2 abbreviations synonyms #>    <ab>    <dbl> <chr>  <chr> <lis> <chr>      <chr>      <list>        <named > #>  1 AMA      4649 4-ami… Anti… <chr> Drugs for… Aminosali… <chr [1]>     <chr>    #>  2 ACM   6450012 Acety… Macr… <chr> NA         NA         <chr [1]>     <chr>    #>  3 ASP  49787020 Acety… Macr… <chr> NA         NA         <chr [1]>     <chr>    #>  4 ALS      8954 Aldes… Othe… <chr> Drugs for… Drugs for… <chr [1]>     <chr>    #>  5 AMK     37768 Amika… Amin… <chr> Aminoglyc… Other ami… <chr [5]>     <chr>    #>  6 AKF        NA Amika… Amin… <chr> NA         NA         <chr [1]>     <chr>    #>  7 AMO     54260 Amoro… Anti… <chr> Antifunga… Other ant… <chr [1]>     <chr>    #>  8 AMX     33613 Amoxi… Beta… <chr> Beta-lact… Penicilli… <chr [3]>     <chr>    #>  9 AMC  23665637 Amoxi… Beta… <chr> Beta-lact… Combinati… <chr [5]>     <chr>    #> 10 AXS    465441 Amoxi… Beta… <chr> NA         NA         <chr [1]>     <chr>    #> # ℹ 477 more rows #> # ℹ 5 more variables: oral_ddd <dbl>, oral_units <chr>, iv_ddd <dbl>, #> #   iv_units <chr>, loinc <list> antivirals #> # A tibble: 120 × 11 #>    av       name      atc      cid atc_group synonyms oral_ddd oral_units iv_ddd #>    <av>     <chr>     <chr>  <dbl> <chr>     <list>      <dbl> <chr>       <dbl> #>  1 ABA      Abacavir  J05A… 4.41e5 Nucleosi… <chr>         0.6 g              NA #>  2 ACI      Aciclovir J05A… 1.35e8 Nucleosi… <chr>         4   g               4 #>  3 ADD      Adefovir… J05A… 6.09e4 Nucleosi… <chr>        10   mg             NA #>  4 AME      Amenamev… J05A… 1.14e7 Other an… <chr>         0.4 g              NA #>  5 AMP      Amprenav… J05A… 6.50e4 Protease… <chr>         1.2 g              NA #>  6 ASU      Asunapre… J05A… 1.61e7 Antivira… <chr>         0.2 g              NA #>  7 ATA      Atazanav… J05A… 1.48e5 Protease… <chr>         0.3 g              NA #>  8 ATA+COBI Atazanav… J05A… 8.66e7 Antivira… <chr>        NA   NA             NA #>  9 ATA+RIT  Atazanav… J05A… 2.51e7 Antivira… <chr>         0.3 g              NA #> 10 BAM      Baloxavi… J05A… 1.24e8 Other an… <chr>        40   mg             NA #> # ℹ 110 more rows #> # ℹ 2 more variables: iv_units <chr>, loinc <list>"},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":null,"dir":"Reference","previous_headings":"","what":"Antimicrobial Selectors — antimicrobial_class_selectors","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"functions allow filtering rows selecting columns based antimicrobial test results specific antimicrobial class group, without need define columns antimicrobial abbreviations. short, column name resembles antimicrobial drug, picked functions matches pharmaceutical class: \"cefazolin\", \"kefzol\", \"CZO\" \"J01DB04\" picked using:","code":"library(dplyr) my_data_with_all_these_columns %>%   select(cephalosporins())"},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"","code":"amr_class(amr_class, only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  amr_selector(filter, only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  aminoglycosides(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  aminopenicillins(only_sir_columns = FALSE, return_all = TRUE, ...)  antifungals(only_sir_columns = FALSE, return_all = TRUE, ...)  antimycobacterials(only_sir_columns = FALSE, return_all = TRUE, ...)  betalactams(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  betalactams_with_inhibitor(only_sir_columns = FALSE, return_all = TRUE,   ...)  carbapenems(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  cephalosporins(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_1st(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_2nd(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_3rd(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_4th(only_sir_columns = FALSE, return_all = TRUE, ...)  cephalosporins_5th(only_sir_columns = FALSE, return_all = TRUE, ...)  fluoroquinolones(only_sir_columns = FALSE, return_all = TRUE, ...)  glycopeptides(only_sir_columns = FALSE, return_all = TRUE, ...)  isoxazolylpenicillins(only_sir_columns = FALSE, return_all = TRUE, ...)  lincosamides(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  lipoglycopeptides(only_sir_columns = FALSE, return_all = TRUE, ...)  macrolides(only_sir_columns = FALSE, return_all = TRUE, ...)  monobactams(only_sir_columns = FALSE, return_all = TRUE, ...)  nitrofurans(only_sir_columns = FALSE, return_all = TRUE, ...)  oxazolidinones(only_sir_columns = FALSE, return_all = TRUE, ...)  penicillins(only_sir_columns = FALSE, return_all = TRUE, ...)  phenicols(only_sir_columns = FALSE, return_all = TRUE, ...)  polymyxins(only_sir_columns = FALSE, only_treatable = TRUE,   return_all = TRUE, ...)  quinolones(only_sir_columns = FALSE, return_all = TRUE, ...)  rifamycins(only_sir_columns = FALSE, return_all = TRUE, ...)  streptogramins(only_sir_columns = FALSE, return_all = TRUE, ...)  tetracyclines(only_sir_columns = FALSE, return_all = TRUE, ...)  trimethoprims(only_sir_columns = FALSE, return_all = TRUE, ...)  ureidopenicillins(only_sir_columns = FALSE, return_all = TRUE, ...)  administrable_per_os(only_sir_columns = FALSE, return_all = TRUE, ...)  administrable_iv(only_sir_columns = FALSE, return_all = TRUE, ...)  not_intrinsic_resistant(only_sir_columns = FALSE, col_mo = NULL,   version_expertrules = 3.3, ...)"},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"amr_class antimicrobial class part , \"carba\" \"carbapenems\". columns group, atc_group1 atc_group2 antibiotics data set searched (case-insensitive) value. only_sir_columns logical indicate whether columns class sir must selected (default FALSE), see .sir() only_treatable logical indicate whether antimicrobial drugs excluded laboratory tests (default TRUE), gentamicin-high (GEH) imipenem/EDTA (IPE) return_all logical indicate whether matched columns must returned (default TRUE). FALSE, first unique antimicrobial returned, e.g. columns \"genta\" \"gentamicin\" exist data, first hit gentamicin returned. ... ignored, place allow future extensions filter expression evaluated antibiotics data set, name %like% \"trim\" col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). version_expertrules version number use EUCAST Expert Rules Intrinsic Resistance guideline. Can \"3.3\", \"3.2\", \"3.1\".","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"used inside selecting filtering, returns character vector column names, additional class \"amr_selector\". used individually, returns 'ab' vector possible antimicrobials function able select filter.","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"functions can used data set calls selecting columns filtering rows. work base R, Tidyverse, data.table. heavily inspired Tidyverse selection helpers everything(), limited dplyr verbs. Nonetheless, convenient use dplyr functions select(), filter() summarise(), see Examples. selectors can also used tidymodels packages recipe parsnip. See info tutorial using AMR functions predictive modelling. columns data functions called searched known antimicrobial names, abbreviations, brand names, codes (ATC, EARS-Net, , etc.) according antibiotics data set. means selector aminoglycosides() pick column names like 'gen', 'genta', 'J01GB03', 'tobra', 'Tobracin', etc. amr_class() function can used filter/select manually defined antimicrobial class. searches results antibiotics data set within columns group, atc_group1 atc_group2. amr_selector() function can used internally filter antibiotics data set results, see Examples. allows filtering (part ) certain name, /group name even minimum DDDs oral treatment. function yields highest flexibility, also least user-friendly, since requires hard-coded filter set. administrable_per_os() administrable_iv() functions also rely antibiotics data set - antimicrobials matched DDD (defined daily dose) resp. oral IV treatment available antibiotics data set. not_intrinsic_resistant() function can used select antimicrobials pose intrinsic resistance microorganisms data set. example, data set contains microorganism codes names E. coli K. pneumoniae contains column \"vancomycin\", column removed (rather, unselected) using function. currently applies 'EUCAST Expert Rules' 'EUCAST Intrinsic Resistance Unusual Phenotypes' v3.3 (2021) determine intrinsic resistance, using eucast_rules() function internally. determination, function quite slow terms performance.","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"full-list-of-supported-antimicrobial-classes","dir":"Reference","previous_headings":"","what":"Full list of supported (antimicrobial) classes","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"aminoglycosides() can select:  amikacin (AMK), amikacin/fosfomycin (AKF), apramycin (APR), arbekacin (ARB), astromicin (AST), bekanamycin (BEK), dibekacin (DKB), framycetin (FRM), gentamicin (GEN), gentamicin-high (GEH), habekacin (HAB), hygromycin (HYG), isepamicin (ISE), kanamycin (KAN), kanamycin-high (KAH), kanamycin/cephalexin (KAC), micronomicin (MCR), neomycin (NEO), netilmicin (NET), pentisomicin (PIM), plazomicin (PLZ), propikacin (PKA), ribostamycin (RST), sisomicin (SIS), streptoduocin (STR), streptomycin (STR1), streptomycin-high (STH), tobramycin (TOB), tobramycin-high (TOH) aminopenicillins() can select:  amoxicillin (AMX) ampicillin (AMP) antifungals() can select:  amorolfine (AMO), amphotericin B (AMB), amphotericin B-high (AMH), anidulafungin (ANI), butoconazole (), caspofungin (CAS), ciclopirox (CIX), clotrimazole (CTR), econazole (ECO), fluconazole (FLU), flucytosine (FCT), fosfluconazole (FFL), griseofulvin (GRI), hachimycin (HCH), ibrexafungerp (IBX), isavuconazole (ISV), isoconazole (ISO), itraconazole (ITR), ketoconazole (KET), manogepix (MGX), micafungin (MIF), miconazole (MCZ), nystatin (NYS), oteseconazole (OTE), pimaricin (PMR), posaconazole (POS), rezafungin (RZF), ribociclib (RBC), sulconazole (SUC), terbinafine (TRB), terconazole (TRC), voriconazole (VOR) antimycobacterials() can select:  4-aminosalicylic acid (AMA), calcium aminosalicylate (CLA), capreomycin (CAP), clofazimine (CLF), delamanid (DLM), enviomycin (ENV), ethambutol (ETH), ethambutol/isoniazid (ETI), ethionamide (ETI1), isoniazid (INH), isoniazid/sulfamethoxazole/trimethoprim/pyridoxine (IST), morinamide (MRN), p-aminosalicylic acid (PAS), pretomanid (PMD), protionamide (PTH), pyrazinamide (PZA), rifabutin (RIB), rifampicin (RIF), rifampicin/ethambutol/isoniazid (REI), rifampicin/isoniazid (RFI), rifampicin/pyrazinamide/ethambutol/isoniazid (RPEI), rifampicin/pyrazinamide/isoniazid (RPI), rifamycin (RFM), rifapentine (RFP), simvastatin/fenofibrate (SMF), sodium aminosalicylate (SDA), streptomycin/isoniazid (STI), terizidone (TRZ), thioacetazone (TAT), thioacetazone/isoniazid (THI1), tiocarlide (TCR), viomycin (VIO) betalactams() can select:  amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin (AMP), ampicillin/sulbactam (SAM), apalcillin (APL), aspoxicillin (APX), azidocillin (AZD), azlocillin (AZL), aztreonam (ATM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), bacampicillin (BAM), benzathine benzylpenicillin (BNB), benzathine phenoxymethylpenicillin (BNP), benzylpenicillin (PEN), biapenem (BIA), carbenicillin (CRB), carindacillin (CRN), carumonam (CAR), cefacetrile (CAC), cefaclor (CEC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefamandole (MAN), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetamet (CAT), cefetamet pivoxil (CPI), cefetecol (CCL), cefetrizole (CZL), cefiderocol (FDC), cefixime (CFM), cefmenoxime (CMX), cefmetazole (CMZ), cefodizime (DIZ), cefonicid (CID), cefoperazone (CFP), cefoperazone/sulbactam (CSL), ceforanide (CND), cefoselis (CSE), cefotaxime (CTX), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotetan (CTT), cefotiam (CTF), cefotiam hexetil (CHE), cefovecin (FOV), cefoxitin (FOX), cefoxitin screening (FOX1), cefozopran (ZOP), cefpimizole (CFZ), cefpiramide (CPM), cefpirome (CPO), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefprozil (CPR), cefquinome (CEQ), cefroxadine (CRD), cefsulodin (CFS), cefsumide (CSU), ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftezole (CTL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), cefuroxime (CXM), cefuroxime axetil (CXA), cephradine (CED), ciclacillin (CIC), clometocillin (CLM), cloxacillin (CLO), dicloxacillin (DIC), doripenem (DOR), epicillin (EPC), ertapenem (ETP), flucloxacillin (FLC), hetacillin (HET), imipenem (IPM), imipenem/EDTA (IPE), imipenem/relebactam (IMR), latamoxef (LTM), lenampicillin (LEN), loracarbef (LOR), mecillinam (MEC), meropenem (MEM), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), metampicillin (MTM), meticillin (MET), mezlocillin (MEZ), mezlocillin/sulbactam (MSU), nafcillin (NAF), oxacillin (OXA), panipenem (PAN), penamecillin (PNM), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), pheneticillin (PHE), phenoxymethylpenicillin (PHN), piperacillin (PIP), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), piridicillin (PRC), pivampicillin (PVM), pivmecillinam (PME), procaine benzylpenicillin (PRB), propicillin (PRP), razupenem (RZM), ritipenem (RIT), ritipenem acoxil (RIA), sarmoxicillin (SRX), sulbenicillin (SBC), sultamicillin (SLT6), talampicillin (TAL), tebipenem (TBP), temocillin (TEM), ticarcillin (TIC), ticarcillin/clavulanic acid (TCC), tigemonam (TMN) betalactams_with_inhibitor() can select:  amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin/sulbactam (SAM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefoperazone/sulbactam (CSL), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefpodoxime/clavulanic acid (CDC), ceftaroline/avibactam (CPA), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), ceftolozane/tazobactam (CZT), ceftriaxone/beta-lactamase inhibitor (CEB), imipenem/relebactam (IMR), meropenem/nacubactam (MNC), meropenem/vaborbactam (MEV), mezlocillin/sulbactam (MSU), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), ticarcillin/clavulanic acid (TCC) carbapenems() can select:  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), tebipenem (TBP) cephalosporins() can select:  cefacetrile (CAC), cefaclor (CEC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefamandole (MAN), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetamet (CAT), cefetamet pivoxil (CPI), cefetecol (CCL), cefetrizole (CZL), cefiderocol (FDC), cefixime (CFM), cefmenoxime (CMX), cefmetazole (CMZ), cefodizime (DIZ), cefonicid (CID), cefoperazone (CFP), cefoperazone/sulbactam (CSL), ceforanide (CND), cefoselis (CSE), cefotaxime (CTX), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotetan (CTT), cefotiam (CTF), cefotiam hexetil (CHE), cefovecin (FOV), cefoxitin (FOX), cefoxitin screening (FOX1), cefozopran (ZOP), cefpimizole (CFZ), cefpiramide (CPM), cefpirome (CPO), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefprozil (CPR), cefquinome (CEQ), cefroxadine (CRD), cefsulodin (CFS), cefsumide (CSU), ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftezole (CTL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), cefuroxime (CXM), cefuroxime axetil (CXA), cephradine (CED), latamoxef (LTM), loracarbef (LOR) cephalosporins_1st() can select:  cefacetrile (CAC), cefadroxil (CFR), cefalexin (LEX), cefaloridine (RID), cefalotin (CEP), cefapirin (HAP), cefatrizine (CTZ), cefazedone (CZD), cefazolin (CZO), cefroxadine (CRD), ceftezole (CTL), cephradine (CED) cephalosporins_2nd() can select:  cefaclor (CEC), cefamandole (MAN), cefmetazole (CMZ), cefonicid (CID), ceforanide (CND), cefotetan (CTT), cefotiam (CTF), cefoxitin (FOX), cefoxitin screening (FOX1), cefprozil (CPR), cefuroxime (CXM), cefuroxime axetil (CXA), loracarbef (LOR) cephalosporins_3rd() can select:  cefcapene (CCP), cefcapene pivoxil (CCX), cefdinir (CDR), cefditoren (DIT), cefditoren pivoxil (DIX), cefetamet (CAT), cefetamet pivoxil (CPI), cefixime (CFM), cefmenoxime (CMX), cefodizime (DIZ), cefoperazone (CFP), cefoperazone/sulbactam (CSL), cefotaxime (CTX), cefotaxime/clavulanic acid (CTC), cefotaxime/sulbactam (CTS), cefotiam hexetil (CHE), cefovecin (FOV), cefpimizole (CFZ), cefpiramide (CPM), cefpodoxime (CPD), cefpodoxime proxetil (CPX), cefpodoxime/clavulanic acid (CDC), cefsulodin (CFS), ceftazidime (CAZ), ceftazidime/avibactam (CZA), ceftazidime/clavulanic acid (CCV), cefteram (CEM), cefteram pivoxil (CPL), ceftibuten (CTB), ceftiofur (TIO), ceftizoxime (CZX), ceftizoxime alapivoxil (CZP), ceftriaxone (CRO), ceftriaxone/beta-lactamase inhibitor (CEB), latamoxef (LTM) cephalosporins_4th() can select:  cefepime (FEP), cefepime/amikacin (CFA), cefepime/clavulanic acid (CPC), cefepime/nacubactam (FNC), cefepime/tazobactam (FPT), cefepime/zidebactam (FPZ), cefetecol (CCL), cefoselis (CSE), cefozopran (ZOP), cefpirome (CPO), cefquinome (CEQ) cephalosporins_5th() can select:  ceftaroline (CPT), ceftaroline/avibactam (CPA), ceftobiprole (BPR), ceftobiprole medocaril (CFM1), ceftolozane/tazobactam (CZT) fluoroquinolones() can select:  besifloxacin (BES), ciprofloxacin (CIP), clinafloxacin (CLX), danofloxacin (DAN), delafloxacin (DFX), difloxacin (DIF), enoxacin (ENX), enrofloxacin (ENR), finafloxacin (FIN), fleroxacin (FLE), garenoxacin (GRN), gatifloxacin (GAT), gemifloxacin (GEM), grepafloxacin (GRX), lascufloxacin (LSC), levofloxacin (LVX), levonadifloxacin (LND), lomefloxacin (LOM), marbofloxacin (MAR), metioxate (MXT), miloxacin (MIL), moxifloxacin (MFX), nadifloxacin (NAD), nifuroquine (NIF), norfloxacin (), ofloxacin (OFX), orbifloxacin (ORB), pazufloxacin (PAZ), pefloxacin (PEF), pradofloxacin (PRA), premafloxacin (PRX), prulifloxacin (PRU), rufloxacin (RFL), sarafloxacin (SAR), sitafloxacin (SIT), sparfloxacin (SPX), temafloxacin (TMX), tilbroquinol (TBQ), tioxacin (TXC), tosufloxacin (TFX), trovafloxacin (TVA) glycopeptides() can select:  avoparcin (AVO), dalbavancin (DAL), norvancomycin (NVA), oritavancin (ORI), ramoplanin (RAM), teicoplanin (TEC), teicoplanin-macromethod (TCM), telavancin (TLV), vancomycin (VAN), vancomycin-macromethod (VAM) isoxazolylpenicillins() can select:  cloxacillin (CLO), dicloxacillin (DIC), flucloxacillin (FLC), meticillin (MET), oxacillin (OXA) lincosamides() can select:  clindamycin (CLI), lincomycin (LIN), pirlimycin (PRL) lipoglycopeptides() can select:  dalbavancin (DAL), oritavancin (ORI), telavancin (TLV) macrolides() can select:  acetylmidecamycin (ACM), acetylspiramycin (ASP), azithromycin (AZM), clarithromycin (CLR), dirithromycin (DIR), erythromycin (ERY), flurithromycin (FLR1), gamithromycin (GAM), josamycin (JOS), kitasamycin (KIT), meleumycin (MEL), midecamycin (MID), miocamycin (MCM), nafithromycin (ZWK), oleandomycin (OLE), rokitamycin (ROK), roxithromycin (RXT), solithromycin (SOL), spiramycin (SPI), telithromycin (TLT), tildipirosin (TIP), tilmicosin (TIL), troleandomycin (TRL), tulathromycin (TUL), tylosin (TYL), tylvalosin (TYL1) monobactams() can select:  aztreonam (ATM), aztreonam/avibactam (AZA), aztreonam/nacubactam (ANC), carumonam (CAR), tigemonam (TMN) nitrofurans() can select:  furazidin (FUR), furazolidone (FRZ), nifurtoinol (NFR), nitrofurantoin (NIT), nitrofurazone (NIZ) oxazolidinones() can select:  cadazolid (CDZ), cycloserine (CYC), linezolid (LNZ), tedizolid (TZD), thiacetazone (THA) penicillins() can select:  amoxicillin (AMX), amoxicillin/clavulanic acid (AMC), amoxicillin/sulbactam (AXS), ampicillin (AMP), ampicillin/sulbactam (SAM), apalcillin (APL), aspoxicillin (APX), azidocillin (AZD), azlocillin (AZL), bacampicillin (BAM), benzathine benzylpenicillin (BNB), benzathine phenoxymethylpenicillin (BNP), benzylpenicillin (PEN), carbenicillin (CRB), carindacillin (CRN), ciclacillin (CIC), clometocillin (CLM), cloxacillin (CLO), dicloxacillin (DIC), epicillin (EPC), flucloxacillin (FLC), hetacillin (HET), lenampicillin (LEN), mecillinam (MEC), metampicillin (MTM), meticillin (MET), mezlocillin (MEZ), mezlocillin/sulbactam (MSU), nafcillin (NAF), oxacillin (OXA), penamecillin (PNM), penicillin/novobiocin (PNO), penicillin/sulbactam (PSU), pheneticillin (PHE), phenoxymethylpenicillin (PHN), piperacillin (PIP), piperacillin/sulbactam (PIS), piperacillin/tazobactam (TZP), piridicillin (PRC), pivampicillin (PVM), pivmecillinam (PME), procaine benzylpenicillin (PRB), propicillin (PRP), sarmoxicillin (SRX), sulbenicillin (SBC), sultamicillin (SLT6), talampicillin (TAL), temocillin (TEM), ticarcillin (TIC), ticarcillin/clavulanic acid (TCC) phenicols() can select:  chloramphenicol (CHL), florfenicol (FLR), thiamphenicol (THI) polymyxins() can select:  colistin (COL), polymyxin B (PLB), polymyxin B/polysorbate 80 (POP) quinolones() can select:  besifloxacin (BES), cinoxacin (CIN), ciprofloxacin (CIP), ciprofloxacin/metronidazole (CIM), ciprofloxacin/ornidazole (CIO), ciprofloxacin/tinidazole (CIT), clinafloxacin (CLX), danofloxacin (DAN), delafloxacin (DFX), difloxacin (DIF), enoxacin (ENX), enrofloxacin (ENR), finafloxacin (FIN), fleroxacin (FLE), flumequine (FLM), garenoxacin (GRN), gatifloxacin (GAT), gemifloxacin (GEM), grepafloxacin (GRX), lascufloxacin (LSC), levofloxacin (LVX), levonadifloxacin (LND), lomefloxacin (LOM), marbofloxacin (MAR), metioxate (MXT), miloxacin (MIL), moxifloxacin (MFX), nadifloxacin (NAD), nalidixic acid (NAL), nemonoxacin (NEM), nifuroquine (NIF), nitroxoline (NTR), norfloxacin (), ofloxacin (OFX), orbifloxacin (ORB), oxolinic acid (OXO), pazufloxacin (PAZ), pefloxacin (PEF), pipemidic acid (PPA), piromidic acid (PIR), pradofloxacin (PRA), premafloxacin (PRX), prulifloxacin (PRU), rosoxacin (ROS), rufloxacin (RFL), sarafloxacin (SAR), sitafloxacin (SIT), sparfloxacin (SPX), temafloxacin (TMX), tilbroquinol (TBQ), tioxacin (TXC), tosufloxacin (TFX), trovafloxacin (TVA) rifamycins() can select:  rifabutin (RIB), rifampicin (RIF), rifampicin/ethambutol/isoniazid (REI), rifampicin/isoniazid (RFI), rifampicin/pyrazinamide/ethambutol/isoniazid (RPEI), rifampicin/pyrazinamide/isoniazid (RPI), rifamycin (RFM), rifapentine (RFP) streptogramins() can select:  pristinamycin (PRI) quinupristin/dalfopristin (QDA) tetracyclines() can select:  cetocycline (CTO), chlortetracycline (CTE), clomocycline (CLM1), demeclocycline (DEM), doxycycline (DOX), eravacycline (ERV), lymecycline (LYM), metacycline (MTC), minocycline (MNO), omadacycline (OMC), oxytetracycline (OXY), penimepicycline (PNM1), rolitetracycline (RLT), sarecycline (SRC), tetracycline (TCY), tigecycline (TGC) trimethoprims() can select:  brodimoprim (BDP), sulfadiazine (SDI), sulfadiazine/tetroxoprim (SLT), sulfadiazine/trimethoprim (SLT1), sulfadimethoxine (SUD), sulfadimidine (SDM), sulfadimidine/trimethoprim (SLT2), sulfafurazole (SLF), sulfaisodimidine (SLF1), sulfalene (SLF2), sulfamazone (SZO), sulfamerazine (SLF3), sulfamerazine/trimethoprim (SLT3), sulfamethizole (SLF4), sulfamethoxazole (SMX), sulfamethoxypyridazine (SLF5), sulfametomidine (SLF6), sulfametoxydiazine (SLF7), sulfametrole/trimethoprim (SLT4), sulfamoxole (SLF8), sulfamoxole/trimethoprim (SLT5), sulfanilamide (SLF9), sulfaperin (SLF10), sulfaphenazole (SLF11), sulfapyridine (SLF12), sulfathiazole (SUT), sulfathiourea (SLF13), trimethoprim (TMP), trimethoprim/sulfamethoxazole (SXT) ureidopenicillins() can select:  azlocillin (AZL), mezlocillin (MEZ), piperacillin (PIP), piperacillin/tazobactam (TZP)","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/antimicrobial_class_selectors.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Antimicrobial Selectors — antimicrobial_class_selectors","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates. example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …   # you can use the selectors separately to retrieve all possible antimicrobials: carbapenems() #> ℹ The function carbapenems() should be used inside a dplyr verb or #>   data.frame call, e.g.: #>   • your_data %>% select(carbapenems()) #>   • your_data %>% select(column_a, column_b, carbapenems()) #>   • your_data %>% filter(any(carbapenems() == \"R\")) #>   • your_data[, carbapenems()] #>   • your_data[, c(\"column_a\", \"column_b\", carbapenems())] #>  #> Now returning a vector of all possible antimicrobials that carbapenems() #> can select. #> Class 'ab' #>  [1] BIA DOR ETP IMR IPE IPM MEM MEV MNC PAN RIA RIT RZM TBP   # Though they are primarily intended to use for selections and filters. # Examples sections below are split into 'dplyr', 'base R', and 'data.table':  # \\donttest{ if (FALSE) { # \\dontrun{ # dplyr -------------------------------------------------------------------  library(dplyr, warn.conflicts = FALSE)  example_isolates %>% select(carbapenems())  # select columns 'mo', 'AMK', 'GEN', 'KAN' and 'TOB' example_isolates %>% select(mo, aminoglycosides())  # you can combine selectors like you are used with tidyverse # e.g., for betalactams, but not the ones with an enzyme inhibitor: example_isolates %>% select(betalactams(), -betalactams_with_inhibitor())  # select only antimicrobials with DDDs for oral treatment example_isolates %>% select(administrable_per_os())  # get AMR for all aminoglycosides e.g., per ward: example_isolates %>%   group_by(ward) %>%   summarise(across(aminoglycosides(),                    resistance))  # You can combine selectors with '&' to be more specific: example_isolates %>%   select(penicillins() & administrable_per_os())  # get AMR for only drugs that matter - no intrinsic resistance: example_isolates %>%   filter(mo_genus() %in% c(\"Escherichia\", \"Klebsiella\")) %>%   group_by(ward) %>%   summarise_at(not_intrinsic_resistant(),                resistance)  # get susceptibility for antimicrobials whose name contains \"trim\": example_isolates %>%   filter(first_isolate()) %>%   group_by(ward) %>%   summarise(across(amr_selector(name %like% \"trim\"), susceptibility))  # this will select columns 'IPM' (imipenem) and 'MEM' (meropenem): example_isolates %>%   select(carbapenems())  # this will select columns 'mo', 'AMK', 'GEN', 'KAN' and 'TOB': example_isolates %>%   select(mo, aminoglycosides())  # any() and all() work in dplyr's filter() too: example_isolates %>%   filter(     any(aminoglycosides() == \"R\"),     all(cephalosporins_2nd() == \"R\")   )  # also works with c(): example_isolates %>%   filter(any(c(carbapenems(), aminoglycosides()) == \"R\"))  # not setting any/all will automatically apply all(): example_isolates %>%   filter(aminoglycosides() == \"R\")  # this will select columns 'mo' and all antimycobacterial drugs ('RIF'): example_isolates %>%   select(mo, amr_class(\"mycobact\"))  # get bug/drug combinations for only glycopeptides in Gram-positives: example_isolates %>%   filter(mo_is_gram_positive()) %>%   select(mo, glycopeptides()) %>%   bug_drug_combinations() %>%   format()  data.frame(   some_column = \"some_value\",   J01CA01 = \"S\" ) %>% # ATC code of ampicillin   select(penicillins()) # only the 'J01CA01' column will be selected  # with recent versions of dplyr, this is all equal: x <- example_isolates[carbapenems() == \"R\", ] y <- example_isolates %>% filter(carbapenems() == \"R\") z <- example_isolates %>% filter(if_all(carbapenems(), ~ .x == \"R\")) identical(x, y) && identical(y, z)  } # } # base R ------------------------------------------------------------------  # select columns 'IPM' (imipenem) and 'MEM' (meropenem) example_isolates[, carbapenems()] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> # A tibble: 2,000 × 2 #>    IPM   MEM   #>    <sir> <sir> #>  1   NA    NA  #>  2   NA    NA  #>  3   NA    NA  #>  4   NA    NA  #>  5   NA    NA  #>  6   NA    NA  #>  7   NA    NA  #>  8   NA    NA  #>  9   NA    NA  #> 10   NA    NA  #> # ℹ 1,990 more rows  # select columns 'mo', 'AMK', 'GEN', 'KAN' and 'TOB' example_isolates[, c(\"mo\", aminoglycosides())] #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # A tibble: 2,000 × 5 #>    mo           GEN   TOB   AMK   KAN   #>    <mo>         <sir> <sir> <sir> <sir> #>  1 B_ESCHR_COLI   NA    NA    NA    NA  #>  2 B_ESCHR_COLI   NA    NA    NA    NA  #>  3 B_STPHY_EPDR   NA    NA    NA    NA  #>  4 B_STPHY_EPDR   NA    NA    NA    NA  #>  5 B_STPHY_EPDR   NA    NA    NA    NA  #>  6 B_STPHY_EPDR   NA    NA    NA    NA  #>  7 B_STPHY_AURS   NA    S     NA    NA  #>  8 B_STPHY_AURS   NA    S     NA    NA  #>  9 B_STPHY_EPDR   NA    NA    NA    NA  #> 10 B_STPHY_EPDR   NA    NA    NA    NA  #> # ℹ 1,990 more rows  # select only antimicrobials with DDDs for oral treatment example_isolates[, administrable_per_os()] #> ℹ For administrable_per_os() using columns 'OXA' (oxacillin), 'FLC' #>   (flucloxacillin), 'AMX' (amoxicillin), 'AMC' (amoxicillin/clavulanic acid), #>   'AMP' (ampicillin), 'CXM' (cefuroxime), 'KAN' (kanamycin), 'TMP' #>   (trimethoprim), 'NIT' (nitrofurantoin), 'FOS' (fosfomycin), 'LNZ' #>   (linezolid), 'CIP' (ciprofloxacin), 'MFX' (moxifloxacin), 'VAN' #>   (vancomycin), 'TCY' (tetracycline), 'DOX' (doxycycline), 'ERY' #>   (erythromycin), 'CLI' (clindamycin), 'AZM' (azithromycin), 'MTR' #>   (metronidazole), 'CHL' (chloramphenicol), 'COL' (colistin), and 'RIF' #>   (rifampicin) #> # A tibble: 2,000 × 23 #>    OXA   FLC   AMX   AMC   AMP   CXM   KAN   TMP   NIT   FOS   LNZ   CIP   MFX   #>    <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>  1   NA    NA    NA    I     NA    I     NA    R     NA    NA    R     NA    NA  #>  2   NA    NA    NA    I     NA    I     NA    R     NA    NA    R     NA    NA  #>  3   NA    R     NA    NA    NA    R     NA    S     NA    NA    NA    NA    NA  #>  4   NA    R     NA    NA    NA    R     NA    S     NA    NA    NA    NA    NA  #>  5   NA    R     NA    NA    NA    R     NA    R     NA    NA    NA    NA    NA  #>  6   NA    R     NA    NA    NA    R     NA    R     NA    NA    NA    NA    NA  #>  7   NA    S     R     S     R     S     NA    R     NA    NA    NA    NA    NA  #>  8   NA    S     R     S     R     S     NA    R     NA    NA    NA    NA    NA  #>  9   NA    R     NA    NA    NA    R     NA    S     NA    NA    NA    S     NA  #> 10   NA    S     NA    NA    NA    S     NA    S     NA    NA    NA    S     NA  #> # ℹ 1,990 more rows #> # ℹ 10 more variables: VAN <sir>, TCY <sir>, DOX <sir>, ERY <sir>, CLI <sir>, #> #   AZM <sir>, MTR <sir>, CHL <sir>, COL <sir>, RIF <sir>  # filter using any() or all() example_isolates[any(carbapenems() == \"R\"), ] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> # A tibble: 55 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2004-06-09 529296     69 M      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  2 2004-06-09 529296     69 M      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  3 2004-11-03 D65308     80 F      ICU      B_STNTR_MLTP   R     NA    NA    R   #>  4 2005-04-21 452212     82 F      ICU      B_ENTRC        NA    NA    NA    NA  #>  5 2005-04-22 452212     82 F      ICU      B_ENTRC        NA    NA    NA    NA  #>  6 2005-04-22 452212     82 F      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  7 2007-02-21 8BBC46     61 F      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  8 2007-12-15 401043     72 M      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  9 2008-01-22 1710B8     82 M      Clinical B_PROTS_MRBL   R     NA    NA    NA  #> 10 2008-01-22 1710B8     82 M      Clinical B_PROTS_MRBL   R     NA    NA    NA  #> # ℹ 45 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … subset(example_isolates, any(carbapenems() == \"R\")) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> # A tibble: 55 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2004-06-09 529296     69 M      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  2 2004-06-09 529296     69 M      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  3 2004-11-03 D65308     80 F      ICU      B_STNTR_MLTP   R     NA    NA    R   #>  4 2005-04-21 452212     82 F      ICU      B_ENTRC        NA    NA    NA    NA  #>  5 2005-04-22 452212     82 F      ICU      B_ENTRC        NA    NA    NA    NA  #>  6 2005-04-22 452212     82 F      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  7 2007-02-21 8BBC46     61 F      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  8 2007-12-15 401043     72 M      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  9 2008-01-22 1710B8     82 M      Clinical B_PROTS_MRBL   R     NA    NA    NA  #> 10 2008-01-22 1710B8     82 M      Clinical B_PROTS_MRBL   R     NA    NA    NA  #> # ℹ 45 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter on any or all results in the carbapenem columns (i.e., IPM, MEM): example_isolates[any(carbapenems()), ] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ Filtering any of columns 'IPM' and 'MEM' to contain value \"S\", \"I\" or \"R\" #> # A tibble: 962 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  3 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #>  4 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #>  5 2002-02-05 067927     45 F      ICU      B_SERRT_MRCS   R     NA    NA    R   #>  6 2002-02-05 067927     45 F      ICU      B_SERRT_MRCS   R     NA    NA    R   #>  7 2002-02-05 067927     45 F      ICU      B_SERRT_MRCS   R     NA    NA    R   #>  8 2002-02-27 066895     85 F      Clinical B_KLBSL_PNMN   R     NA    NA    R   #>  9 2002-02-27 066895     85 F      Clinical B_KLBSL_PNMN   R     NA    NA    R   #> 10 2002-03-08 4FC193     69 M      Clinical B_ESCHR_COLI   R     NA    NA    R   #> # ℹ 952 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … example_isolates[all(carbapenems()), ] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ Filtering all of columns 'IPM' and 'MEM' to contain value \"S\", \"I\" or \"R\" #> # A tibble: 756 × 46 #>    date       patient   age gender ward    mo            PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>   <mo>          <sir> <sir> <sir> <sir> #>  1 2002-04-14 F30196     73 M      Outpat… B_STRPT_GRPB    S     NA    S     S   #>  2 2003-04-08 114570     74 M      ICU     B_STRPT_PYGN    S     NA    S     S   #>  3 2003-04-08 114570     74 M      ICU     B_STRPT_GRPA    S     NA    S     S   #>  4 2003-04-08 114570     74 M      ICU     B_STRPT_GRPA    S     NA    S     S   #>  5 2003-08-14 F71508      0 F      Clinic… B_STRPT_GRPB    S     NA    S     S   #>  6 2003-10-16 650870     63 F      ICU     B_ESCHR_COLI    R     NA    NA    R   #>  7 2003-10-20 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #>  8 2003-10-20 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #>  9 2003-11-04 2FC253     87 F      ICU     B_ESCHR_COLI    R     NA    NA    NA  #> 10 2003-11-04 2FC253     87 F      ICU     B_ESCHR_COLI    R     NA    NA    NA  #> # ℹ 746 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter with multiple antimicrobial selectors using c() example_isolates[all(c(carbapenems(), aminoglycosides()) == \"R\"), ] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # A tibble: 26 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2004-11-03 D65308     80 F      ICU      B_STNTR_MLTP   R     NA    NA    R   #>  2 2005-04-22 452212     82 F      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  3 2007-02-21 8BBC46     61 F      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  4 2007-12-15 401043     72 M      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  5 2008-12-06 501361     43 F      Clinical B_STNTR_MLTP   R     NA    NA    R   #>  6 2011-05-09 207325     82 F      ICU      B_ENTRC_FACM   NA    NA    NA    NA  #>  7 2012-03-12 582258     80 M      ICU      B_STPHY_CONS   R     R     R     R   #>  8 2012-05-19 C25552     89 F      Outpati… B_STPHY_CONS   R     R     R     R   #>  9 2012-07-17 F05015     83 M      ICU      B_STPHY_CONS   R     R     R     R   #> 10 2012-07-20 404299     66 F      Clinical B_STPHY_CONS   R     R     R     R   #> # ℹ 16 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter + select in one go: get penicillins in carbapenem-resistant strains example_isolates[any(carbapenems() == \"R\"), penicillins()] #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ For penicillins() using columns 'PEN' (benzylpenicillin), 'OXA' #>   (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #>   (amoxicillin/clavulanic acid), 'AMP' (ampicillin), and 'TZP' #>   (piperacillin/tazobactam) #> # A tibble: 55 × 7 #>    PEN   OXA   FLC   AMX   AMC   AMP   TZP   #>    <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>  1   NA    NA    NA    NA    NA    NA    NA  #>  2   NA    NA    NA    NA    NA    NA    NA  #>  3   R     NA    NA    R     R     R     R   #>  4   NA    NA    NA    NA    NA    NA    R   #>  5   NA    NA    NA    NA    NA    NA    R   #>  6   NA    NA    NA    NA    NA    NA    R   #>  7   NA    NA    NA    NA    NA    NA    R   #>  8   NA    NA    NA    NA    NA    NA    R   #>  9   R     NA    NA    NA    S     NA    S   #> 10   R     NA    NA    NA    S     NA    S   #> # ℹ 45 more rows  # You can combine selectors with '&' to be more specific. For example, # penicillins() would select benzylpenicillin ('peni G') and # administrable_per_os() would select erythromycin. Yet, when combined these # drugs are both omitted since benzylpenicillin is not administrable per os # and erythromycin is not a penicillin: example_isolates[, penicillins() & administrable_per_os()] #> ℹ For penicillins() using columns 'PEN' (benzylpenicillin), 'OXA' #>   (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #>   (amoxicillin/clavulanic acid), 'AMP' (ampicillin), and 'TZP' #>   (piperacillin/tazobactam) #> ℹ For administrable_per_os() using columns 'OXA' (oxacillin), 'FLC' #>   (flucloxacillin), 'AMX' (amoxicillin), 'AMC' (amoxicillin/clavulanic acid), #>   'AMP' (ampicillin), 'CXM' (cefuroxime), 'KAN' (kanamycin), 'TMP' #>   (trimethoprim), 'NIT' (nitrofurantoin), 'FOS' (fosfomycin), 'LNZ' #>   (linezolid), 'CIP' (ciprofloxacin), 'MFX' (moxifloxacin), 'VAN' #>   (vancomycin), 'TCY' (tetracycline), 'DOX' (doxycycline), 'ERY' #>   (erythromycin), 'CLI' (clindamycin), 'AZM' (azithromycin), 'MTR' #>   (metronidazole), 'CHL' (chloramphenicol), 'COL' (colistin), and 'RIF' #>   (rifampicin) #> # A tibble: 2,000 × 5 #>    OXA   FLC   AMX   AMC   AMP   #>    <sir> <sir> <sir> <sir> <sir> #>  1   NA    NA    NA    I     NA  #>  2   NA    NA    NA    I     NA  #>  3   NA    R     NA    NA    NA  #>  4   NA    R     NA    NA    NA  #>  5   NA    R     NA    NA    NA  #>  6   NA    R     NA    NA    NA  #>  7   NA    S     R     S     R   #>  8   NA    S     R     S     R   #>  9   NA    R     NA    NA    NA  #> 10   NA    S     NA    NA    NA  #> # ℹ 1,990 more rows  # amr_selector() applies a filter in the `antibiotics` data set and is thus # very flexible. For instance, to select antimicrobials with an oral DDD # of at least 1 gram: example_isolates[, amr_selector(oral_ddd > 1 & oral_units == \"g\")] #> ℹ For amr_selector(oral_ddd > 1 & oral_units == \"g\") using columns 'OXA' #>   (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #>   (amoxicillin/clavulanic acid), 'AMP' (ampicillin), 'KAN' (kanamycin), 'FOS' #>   (fosfomycin), 'LNZ' (linezolid), 'VAN' (vancomycin), 'ERY' (erythromycin), #>   'CLI' (clindamycin), 'MTR' (metronidazole), and 'CHL' (chloramphenicol) #> # A tibble: 2,000 × 13 #>    OXA   FLC   AMX   AMC   AMP   KAN   FOS   LNZ   VAN   ERY   CLI   MTR   CHL   #>    <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>  1   NA    NA    NA    I     NA    NA    NA    R     R     R     R     NA    NA  #>  2   NA    NA    NA    I     NA    NA    NA    R     R     R     R     NA    NA  #>  3   NA    R     NA    NA    NA    NA    NA    NA    S     R     NA    NA    NA  #>  4   NA    R     NA    NA    NA    NA    NA    NA    S     R     NA    NA    NA  #>  5   NA    R     NA    NA    NA    NA    NA    NA    S     R     NA    NA    NA  #>  6   NA    R     NA    NA    NA    NA    NA    NA    S     R     R     NA    NA  #>  7   NA    S     R     S     R     NA    NA    NA    S     S     NA    NA    NA  #>  8   NA    S     R     S     R     NA    NA    NA    S     S     NA    NA    NA  #>  9   NA    R     NA    NA    NA    NA    NA    NA    S     R     NA    NA    NA  #> 10   NA    S     NA    NA    NA    NA    NA    NA    S     S     NA    NA    NA  #> # ℹ 1,990 more rows   # data.table --------------------------------------------------------------  # data.table is supported as well, just use it in the same way as with # base R, but add `with = FALSE` if using a single AB selector.  if (require(\"data.table\")) {   dt <- as.data.table(example_isolates)    # this does not work, it returns column *names*   dt[, carbapenems()] } #> Loading required package: data.table #>  #> Attaching package: ‘data.table’ #> The following objects are masked from ‘package:dplyr’: #>  #>     between, first, last #> The following objects are masked from ‘package:AMR’: #>  #>     %like%, like #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> Warning: It should never be needed to print an antimicrobial selector class. Are you #> using data.table? Then add the argument with = FALSE, see our examples at #> ?amr_selector. #> Class 'amr_selector' #> [1] IPM MEM if (require(\"data.table\")) {   # so `with = FALSE` is required   dt[, carbapenems(), with = FALSE] } #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #>         IPM   MEM #>       <sir> <sir> #>    1:  <NA>  <NA> #>    2:  <NA>  <NA> #>    3:  <NA>  <NA> #>    4:  <NA>  <NA> #>    5:  <NA>  <NA> #>   ---             #> 1996:  <NA>  <NA> #> 1997:     S     S #> 1998:     S     S #> 1999:     S     S #> 2000:     S     S  # for multiple selections or AB selectors, `with = FALSE` is not needed: if (require(\"data.table\")) {   dt[, c(\"mo\", aminoglycosides())] } #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #>                 mo   GEN   TOB   AMK   KAN #>               <mo> <sir> <sir> <sir> <sir> #>    1: B_ESCHR_COLI  <NA>  <NA>  <NA>  <NA> #>    2: B_ESCHR_COLI  <NA>  <NA>  <NA>  <NA> #>    3: B_STPHY_EPDR  <NA>  <NA>  <NA>  <NA> #>    4: B_STPHY_EPDR  <NA>  <NA>  <NA>  <NA> #>    5: B_STPHY_EPDR  <NA>  <NA>  <NA>  <NA> #>   ---                                      #> 1996: B_STRPT_PNMN     R     R     R     R #> 1997: B_ESCHR_COLI     S     S     S  <NA> #> 1998: B_STPHY_CONS     S  <NA>  <NA>  <NA> #> 1999: B_ESCHR_COLI     S     S  <NA>  <NA> #> 2000: B_KLBSL_PNMN     S     S  <NA>  <NA> if (require(\"data.table\")) {   dt[, c(carbapenems(), aminoglycosides())] } #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #>         IPM   MEM   GEN   TOB   AMK   KAN #>       <sir> <sir> <sir> <sir> <sir> <sir> #>    1:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>    2:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>    3:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>    4:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>    5:  <NA>  <NA>  <NA>  <NA>  <NA>  <NA> #>   ---                                     #> 1996:  <NA>  <NA>     R     R     R     R #> 1997:     S     S     S     S     S  <NA> #> 1998:     S     S     S  <NA>  <NA>  <NA> #> 1999:     S     S     S     S  <NA>  <NA> #> 2000:     S     S     S     S  <NA>  <NA>  # row filters are also supported: if (require(\"data.table\")) {   dt[any(carbapenems() == \"S\"), ] } #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #>            date patient   age gender       ward           mo   PEN   OXA   FLC #>          <Date>  <char> <num> <char>     <char>         <mo> <sir> <sir> <sir> #>   1: 2002-01-19  738003    71      M   Clinical B_ESCHR_COLI     R  <NA>  <NA> #>   2: 2002-01-19  738003    71      M   Clinical B_ESCHR_COLI     R  <NA>  <NA> #>   3: 2002-01-22  F35553    50      M        ICU B_PROTS_MRBL     R  <NA>  <NA> #>   4: 2002-01-22  F35553    50      M        ICU B_PROTS_MRBL     R  <NA>  <NA> #>   5: 2002-02-05  067927    45      F        ICU B_SERRT_MRCS     R  <NA>  <NA> #>  ---                                                                           #> 905: 2005-04-12  D71461    70      M        ICU B_ESCHR_COLI     R  <NA>  <NA> #> 906: 2009-11-12  650870    69      F Outpatient B_ESCHR_COLI     R  <NA>  <NA> #> 907: 2012-06-14  8CBCF2    41      F   Clinical B_STPHY_CONS     R     S     S #> 908: 2012-10-11  175532    78      M   Clinical B_ESCHR_COLI     R  <NA>  <NA> #> 909: 2013-11-23  A97263    77      M   Clinical B_KLBSL_PNMN     R  <NA>  <NA> #>        AMX   AMC   AMP   TZP   CZO   FEP   CXM   FOX   CTX   CAZ   CRO   GEN #>      <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>   1:  <NA>     I  <NA>  <NA>  <NA>  <NA>     S  <NA>     S  <NA>     S  <NA> #>   2:  <NA>     I  <NA>  <NA>  <NA>  <NA>     S  <NA>     S  <NA>     S  <NA> #>   3:  <NA>     I  <NA>  <NA>  <NA>  <NA>     S  <NA>     S     S     S  <NA> #>   4:  <NA>     I  <NA>  <NA>  <NA>  <NA>     S  <NA>     S     S     S  <NA> #>   5:     R     R     R  <NA>     R  <NA>     R     R  <NA>  <NA>  <NA>  <NA> #>  ---                                                                         #> 905:     S     S     S     S  <NA>     S     S     S     S     S     S     S #> 906:     S     S     S     S     S     S     S     S     S     S     S     S #> 907:  <NA>     S  <NA>  <NA>     S     S     S     S     S     R     S     S #> 908:     R     S     R     S  <NA>     S     R     R     S     S     S     S #> 909:     R     S     R     S  <NA>     S     S     S     S     S     S     S #>        TOB   AMK   KAN   TMP   SXT   NIT   FOS   LNZ   CIP   MFX   VAN   TEC #>      <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>   1:     S  <NA>  <NA>     S     S  <NA>  <NA>     R  <NA>  <NA>     R     R #>   2:     S  <NA>  <NA>     S     S  <NA>  <NA>     R  <NA>  <NA>     R     R #>   3:  <NA>  <NA>  <NA>     S     S     R  <NA>     R     S  <NA>     R     R #>   4:  <NA>  <NA>  <NA>     S     S     R  <NA>     R     S  <NA>     R     R #>   5:  <NA>  <NA>  <NA>     S     S     R  <NA>     R     S  <NA>     R     R #>  ---                                                                         #> 905:     S     S  <NA>  <NA>     S     S  <NA>     R     S  <NA>     R     R #> 906:     S     S  <NA>     S     S     S  <NA>     R     S  <NA>     R     R #> 907:  <NA>  <NA>  <NA>     S     S  <NA>  <NA>  <NA>     S  <NA>     S  <NA> #> 908:     S  <NA>  <NA>     R     R     R  <NA>     R     R     R     R     R #> 909:     S  <NA>  <NA>     S     S     S  <NA>     R     S  <NA>     R     R #>        TCY   TGC   DOX   ERY   CLI   AZM   IPM   MEM   MTR   CHL   COL   MUP #>      <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>   1:  <NA>  <NA>  <NA>     R     R     R     S  <NA>  <NA>  <NA>  <NA>  <NA> #>   2:  <NA>  <NA>  <NA>     R     R     R     S  <NA>  <NA>  <NA>  <NA>  <NA> #>   3:     R     R     R     R     R     R     S  <NA>  <NA>  <NA>     R  <NA> #>   4:     R     R     R     R     R     R     S  <NA>  <NA>  <NA>     R  <NA> #>   5:     R     R     R     R     R     R     S  <NA>  <NA>  <NA>     R  <NA> #>  ---                                                                         #> 905:  <NA>  <NA>  <NA>     R     R     R     S     S  <NA>  <NA>  <NA>  <NA> #> 906:  <NA>  <NA>  <NA>     R     R     R     S     S  <NA>  <NA>  <NA>  <NA> #> 907:  <NA>  <NA>  <NA>     S     S     S     S     S  <NA>  <NA>     R  <NA> #> 908:  <NA>  <NA>  <NA>     R     R     R     S     S  <NA>  <NA>     S  <NA> #> 909:  <NA>  <NA>  <NA>     R     R     R     S     S  <NA>  <NA>     S  <NA> #>        RIF #>      <sir> #>   1:     R #>   2:     R #>   3:     R #>   4:     R #>   5:     R #>  ---       #> 905:     R #> 906:     R #> 907:  <NA> #> 908:     R #> 909:     R if (require(\"data.table\")) {   dt[any(carbapenems() == \"S\"), penicillins(), with = FALSE] } #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ For penicillins() using columns 'PEN' (benzylpenicillin), 'OXA' #>   (oxacillin), 'FLC' (flucloxacillin), 'AMX' (amoxicillin), 'AMC' #>   (amoxicillin/clavulanic acid), 'AMP' (ampicillin), and 'TZP' #>   (piperacillin/tazobactam) #>        PEN   OXA   FLC   AMX   AMC   AMP   TZP #>      <sir> <sir> <sir> <sir> <sir> <sir> <sir> #>   1:     R  <NA>  <NA>  <NA>     I  <NA>  <NA> #>   2:     R  <NA>  <NA>  <NA>     I  <NA>  <NA> #>   3:     R  <NA>  <NA>  <NA>     I  <NA>  <NA> #>   4:     R  <NA>  <NA>  <NA>     I  <NA>  <NA> #>   5:     R  <NA>  <NA>     R     R     R  <NA> #>  ---                                           #> 905:     R  <NA>  <NA>     S     S     S     S #> 906:     R  <NA>  <NA>     S     S     S     S #> 907:     R     S     S  <NA>     S  <NA>  <NA> #> 908:     R  <NA>  <NA>     R     S     R     S #> 909:     R  <NA>  <NA>     R     S     R     S # }"},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Input to an Antibiotic ID — as.ab","title":"Transform Input to an Antibiotic ID — as.ab","text":"Use function determine antibiotic drug code one antibiotics. data set antibiotics searched abbreviations, official names synonyms (brand names).","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Input to an Antibiotic ID — as.ab","text":"","code":"as.ab(x, flag_multiple_results = TRUE, info = interactive(), ...)  is.ab(x)"},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Input to an Antibiotic ID — as.ab","text":"x character vector determine antibiotic ID flag_multiple_results logical indicate whether note printed console probably one antibiotic drug code name can retrieved single input value. info logical indicate whether progress bar printed - default TRUE interactive mode ... arguments passed internal functions","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Input to an Antibiotic ID — as.ab","text":"character vector additional class ab","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Input to an Antibiotic ID — as.ab","text":"entries antibiotics data set three different identifiers: human readable EARS-Net code (column ab, used ECDC WHONET), ATC code (column atc, used ), CID code (column cid, Compound ID, used PubChem). data set contains 5,000 official brand names many different countries, found PubChem. drugs contain multiple ATC codes. properties searched user input. .ab() can correct different forms misspelling: Wrong spelling drug names (\"tobramicin\" \"gentamycin\"), corrects audible similarities f/ph, x/ks, c/z/s, t/th, etc. many vowels consonants Switching two characters (\"mreopenem\", often case clinical data, doctors typed fast) Digitalised paper records, leaving artefacts like 0/o/O (zero O's), B/8, n/r, etc. Use ab_* functions get properties based returned antibiotic ID, see Examples. Note: .ab() ab_* functions may use long regular expression match brand names antimicrobial drugs. may fail systems. can add manual codes considered .ab() ab_* functions, see add_custom_antimicrobials().","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Transform Input to an Antibiotic ID — as.ab","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology: https://atcddd.fhi./atc_ddd_index/ European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"whocc","dir":"Reference","previous_headings":"","what":"WHOCC","title":"Transform Input to an Antibiotic ID — as.ab","text":"package contains ~550 antibiotic, antimycotic antiviral drugs Anatomical Therapeutic Chemical (ATC) codes, ATC groups Defined Daily Dose (DDD) World Health Organization Collaborating Centre Drug Statistics Methodology (WHOCC, https://atcddd.fhi.) Pharmaceuticals Community Register European Commission (https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm). become gold standard international drug utilisation monitoring research. WHOCC located Oslo Norwegian Institute Public Health funded Norwegian government. European Commission executive European Union promotes general interest. NOTE: WHOCC copyright allow use commercial purposes, unlike info package. See https://atcddd.fhi./copyright_disclaimer/.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Transform Input to an Antibiotic ID — as.ab","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.ab.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Input to an Antibiotic ID — as.ab","text":"","code":"# these examples all return \"ERY\", the ID of erythromycin: as.ab(\"J01FA01\") #> Class 'ab' #> [1] ERY as.ab(\"J 01 FA 01\") #> Class 'ab' #> [1] ERY as.ab(\"Erythromycin\") #> Class 'ab' #> [1] ERY as.ab(\"eryt\") #> Class 'ab' #> [1] ERY as.ab(\"   eryt 123\") #> Class 'ab' #> [1] ERY as.ab(\"ERYT\") #> Class 'ab' #> [1] ERY as.ab(\"ERY\") #> Class 'ab' #> [1] ERY as.ab(\"eritromicine\") # spelled wrong, yet works #> Class 'ab' #> [1] ERY as.ab(\"Erythrocin\") # trade name #> Class 'ab' #> [1] ERY as.ab(\"Romycin\") # trade name #> Class 'ab' #> [1] ERY  # spelling from different languages and dyslexia are no problem ab_atc(\"ceftriaxon\") #> [1] \"J01DD04\" ab_atc(\"cephtriaxone\") # small spelling error #> [1] \"J01DD04\" ab_atc(\"cephthriaxone\") # or a bit more severe #> [1] \"J01DD04\" ab_atc(\"seephthriaaksone\") # and even this works #> [1] \"J01DD04\"  # use ab_* functions to get a specific properties (see ?ab_property); # they use as.ab() internally: ab_name(\"J01FA01\") #> [1] \"Erythromycin\" ab_name(\"eryt\") #> [1] \"Erythromycin\"  # \\donttest{ if (require(\"dplyr\")) {   # you can quickly rename 'sir' columns using set_ab_names() with dplyr:   example_isolates %>%     set_ab_names(where(is.sir), property = \"atc\") } #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           J01CE01 J01CF04 J01CF05 #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir>   <sir>   <sir>   #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R       NA      NA    #>  2 2002-01-03 A77334     65 F      Clinical B_ESCHR_COLI   R       NA      NA    #>  3 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #>  4 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #>  5 2002-01-13 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #>  6 2002-01-13 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #>  7 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R       NA      S     #>  8 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R       NA      S     #>  9 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR   R       NA      R     #> 10 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR   R       NA      S     #> # ℹ 1,990 more rows #> # ℹ 37 more variables: J01CA04 <sir>, J01CR02 <sir>, J01CA01 <sir>, #> #   J01CR05 <sir>, J01DB04 <sir>, J01DE01 <sir>, J01DC02 <sir>, J01DC01 <sir>, #> #   J01DD01 <sir>, J01DD02 <sir>, J01DD04 <sir>, J01GB03 <sir>, J01GB01 <sir>, #> #   J01GB06 <sir>, J01GB04 <sir>, J01EA01 <sir>, J01EE01 <sir>, J01XE01 <sir>, #> #   J01XX01 <sir>, J01XX08 <sir>, J01MA02 <sir>, J01MA14 <sir>, J01XA01 <sir>, #> #   J01XA02 <sir>, J01AA07 <sir>, J01AA12 <sir>, J01AA02 <sir>, … # }"},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Input to an Antiviral Drug ID — as.av","title":"Transform Input to an Antiviral Drug ID — as.av","text":"Use function determine antiviral drug code one antiviral drugs. data set antivirals searched abbreviations, official names synonyms (brand names).","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Input to an Antiviral Drug ID — as.av","text":"","code":"as.av(x, flag_multiple_results = TRUE, info = interactive(), ...)  is.av(x)"},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Input to an Antiviral Drug ID — as.av","text":"x character vector determine antiviral drug ID flag_multiple_results logical indicate whether note printed console probably one antiviral drug code name can retrieved single input value. info logical indicate whether progress bar printed - default TRUE interactive mode ... arguments passed internal functions","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Input to an Antiviral Drug ID — as.av","text":"character vector additional class ab","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Input to an Antiviral Drug ID — as.av","text":"entries antivirals data set three different identifiers: human readable EARS-Net code (column ab, used ECDC WHONET), ATC code (column atc, used ), CID code (column cid, Compound ID, used PubChem). data set contains 5,000 official brand names many different countries, found PubChem. drugs contain multiple ATC codes. properties searched user input. .av() can correct different forms misspelling: Wrong spelling drug names (\"acyclovir\"), corrects audible similarities f/ph, x/ks, c/z/s, t/th, etc. many vowels consonants Switching two characters (\"aycclovir\", often case clinical data, doctors typed fast) Digitalised paper records, leaving artefacts like 0/o/O (zero O's), B/8, n/r, etc. Use av_* functions get properties based returned antiviral drug ID, see Examples. Note: .av() av_* functions may use long regular expression match brand names antimicrobial drugs. may fail systems.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Transform Input to an Antiviral Drug ID — as.av","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology: https://atcddd.fhi./atc_ddd_index/ European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"whocc","dir":"Reference","previous_headings":"","what":"WHOCC","title":"Transform Input to an Antiviral Drug ID — as.av","text":"package contains ~550 antibiotic, antimycotic antiviral drugs Anatomical Therapeutic Chemical (ATC) codes, ATC groups Defined Daily Dose (DDD) World Health Organization Collaborating Centre Drug Statistics Methodology (WHOCC, https://atcddd.fhi.) Pharmaceuticals Community Register European Commission (https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm). become gold standard international drug utilisation monitoring research. WHOCC located Oslo Norwegian Institute Public Health funded Norwegian government. European Commission executive European Union promotes general interest. NOTE: WHOCC copyright allow use commercial purposes, unlike info package. See https://atcddd.fhi./copyright_disclaimer/.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Transform Input to an Antiviral Drug ID — as.av","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.av.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Input to an Antiviral Drug ID — as.av","text":"","code":"# these examples all return \"ACI\", the ID of aciclovir: as.av(\"J05AB01\") #> Class 'av' #> [1] ACI as.av(\"J 05 AB 01\") #> Class 'av' #> [1] ACI as.av(\"Aciclovir\") #> Class 'av' #> [1] ACI as.av(\"aciclo\") #> Class 'av' #> [1] ACI as.av(\"   aciclo 123\") #> Class 'av' #> [1] ACI as.av(\"ACICL\") #> Class 'av' #> [1] ACI as.av(\"ACI\") #> Class 'av' #> [1] ACI as.av(\"Virorax\") # trade name #> Class 'av' #> [1] ACI as.av(\"Zovirax\") # trade name #> Class 'av' #> [1] ACI  as.av(\"acyklofir\") # severe spelling error, yet works #> Class 'av' #> [1] ACI  # use av_* functions to get a specific properties (see ?av_property); # they use as.av() internally: av_name(\"J05AB01\") #> [1] \"Aciclovir\" av_name(\"acicl\") #> [1] \"Aciclovir\""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Input to Disk Diffusion Diameters — as.disk","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"transforms vector new class disk, disk diffusion growth zone size (around antibiotic disk) millimetres 0 50.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"","code":"as.disk(x, na.rm = FALSE)  NA_disk_  is.disk(x)"},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"object class disk (inherits integer) length 1.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"x vector na.rm logical indicating whether missing values removed","code":""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"integer additional class disk","code":""},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"Interpret disk values SIR values .sir(). supports guidelines EUCAST CLSI. Disk diffusion growth zone sizes must 0 50 millimetres. Values higher 50 lower 100 maximised 50. others input values outside 0-50 range return NA. NA_disk_ missing value new disk class.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.disk.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Input to Disk Diffusion Diameters — as.disk","text":"","code":"# transform existing disk zones to the `disk` class (using base R) df <- data.frame(   microorganism = \"Escherichia coli\",   AMP = 20,   CIP = 14,   GEN = 18,   TOB = 16 ) df[, 2:5] <- lapply(df[, 2:5], as.disk) str(df) #> 'data.frame':\t1 obs. of  5 variables: #>  $ microorganism: chr \"Escherichia coli\" #>  $ AMP          : 'disk' int 20 #>  $ CIP          : 'disk' int 14 #>  $ GEN          : 'disk' int 18 #>  $ TOB          : 'disk' int 16  # \\donttest{ # transforming is easier with dplyr: if (require(\"dplyr\")) {   df %>% mutate(across(AMP:TOB, as.disk)) } #>      microorganism AMP CIP GEN TOB #> 1 Escherichia coli  20  14  18  16 # }  # interpret disk values, see ?as.sir as.sir(   x = as.disk(18),   mo = \"Strep pneu\", # `mo` will be coerced with as.mo()   ab = \"ampicillin\", # and `ab` with as.ab()   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: 'ampicillin' (AMP), EUCAST 2024... #>  OK  #> Class 'sir' #> [1] R  # interpret whole data set, pretend to be all from urinary tract infections: as.sir(df, uti = TRUE) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: column 'AMP' (ampicillin), EUCAST #> 2024... #>  OK  #> Interpreting disk diffusion zones: column 'CIP' (ciprofloxacin), EUCAST #> 2024... #>  OK  #> Interpreting disk diffusion zones: column 'GEN' (gentamicin), EUCAST #> 2024... #>  OK  #> Interpreting disk diffusion zones: column 'TOB' (tobramycin), EUCAST #> 2024... #>  OK  #>      microorganism AMP  CIP GEN TOB #> 1 Escherichia coli   S <NA>   S   S"},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"transforms vectors new class mic, treats input decimal numbers, maintaining operators (\">=\") allowing valid MIC values known field (medical) microbiology.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"","code":"as.mic(x, na.rm = FALSE, keep_operators = \"all\")  is.mic(x)  NA_mic_  rescale_mic(x, mic_range, keep_operators = \"edges\", as.mic = TRUE)  # S3 method for class 'mic' droplevels(x, as.mic = FALSE, ...)"},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"x character numeric vector na.rm logical indicating whether missing values removed keep_operators character specifying handle operators (> <=) input. Accepts one three values: \"\" (TRUE) keep operators, \"none\" (FALSE) remove operators, \"edges\" keep operators ends range. mic_range manual range limit MIC values, e.g., mic_range = c(0.001, 32). Use NA prevent limit one side, e.g., mic_range = c(NA, 32). .mic logical indicate whether mic class kept - default TRUE rescale_mic() FALSE droplevels(). setting FALSE rescale_mic(), output factor levels acknowledge mic_range. ... arguments passed methods","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"Ordered factor additional class mic, mathematical operations acts numeric vector. Bear mind outcome mathematical operation MICs return numeric value.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"interpret MIC values SIR values, use .sir() MIC values. supports guidelines EUCAST (2011-2024) CLSI (2011-2024). class MIC values quite special data type: formally ordered factor valid MIC values factor levels (make sure valid MIC values retained), mathematical operation acts decimal numbers:   makes possible maintain operators often come MIC values, \">=\" \"<=\", even filtering using numeric values data analysis, e.g.:   -called group generic functions implemented MIC class (!, !=, <, >=, exp(), log2()). functions stats package also implemented (quantile(), median(), fivenum()). Since sd() var() non-generic functions, extended. Use mad() alternative, use e.g. sd(.numeric(x)) x vector MIC values. Using .double() .numeric() MIC values remove operators return numeric vector. use .integer() MIC values R convention factors, return index factor levels (often useless regular users). Use droplevels() drop unused levels. default, return plain factor. Use droplevels(..., .mic = TRUE) maintain mic class. rescale_mic(), existing MIC ranges can limited defined range MIC values. can useful better compare MIC distributions. ggplot2, use one scale_*_mic() functions plot MIC values. allows custom MIC ranges plot intermediate log2 levels missing MIC values. NA_mic_ missing value new mic class, analogous e.g. base R's NA_character_.","code":"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 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"},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.mic.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Input to Minimum Inhibitory Concentrations (MIC) — as.mic","text":"","code":"mic_data <- as.mic(c(\">=32\", \"1.0\", \"1\", \"1.00\", 8, \"<=0.128\", \"8\", \"16\", \"16\")) mic_data #> Class 'mic' #> [1] >=32    1       1       1       8       <=0.128 8       16      16      is.mic(mic_data) #> [1] TRUE  # this can also coerce combined MIC/SIR values: as.mic(\"<=0.002; S\") #> Class 'mic' #> [1] <=0.002  # mathematical processing treats MICs as numeric values fivenum(mic_data) #> [1]  0.128  1.000  8.000 16.000 32.000 quantile(mic_data) #>     0%    25%    50%    75%   100%  #>  0.128  1.000  8.000 16.000 32.000  all(mic_data < 512) #> [1] TRUE  # rescale MICs using rescale_mic() rescale_mic(mic_data, mic_range = c(4, 16)) #> Class 'mic' #> [1] >=16 <=4  <=4  <=4  8    <=4  8    >=16 >=16  # interpret MIC values as.sir(   x = as.mic(2),   mo = as.mo(\"Streptococcus pneumoniae\"),   ab = \"AMX\",   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'AMX' (amoxicillin), EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for amoxicillin (AMX) in Streptococcus pneumoniae - assuming body site 'Meningitis'. #> Class 'sir' #> [1] R as.sir(   x = as.mic(c(0.01, 2, 4, 8)),   mo = as.mo(\"Streptococcus pneumoniae\"),   ab = \"AMX\",   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'AMX' (amoxicillin), EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for amoxicillin (AMX) in Streptococcus pneumoniae - assuming body site 'Meningitis'. #> Class 'sir' #> [1] S R R R  # plot MIC values, see ?plot plot(mic_data)  plot(mic_data, mo = \"E. coli\", ab = \"cipro\")   if (require(\"ggplot2\")) {   autoplot(mic_data, mo = \"E. coli\", ab = \"cipro\") }  if (require(\"ggplot2\")) {   autoplot(mic_data, mo = \"E. coli\", ab = \"cipro\", language = \"nl\") # Dutch }"},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":null,"dir":"Reference","previous_headings":"","what":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Use function get valid microorganism code (mo) based arbitrary user input. Determination done using intelligent rules complete taxonomic tree kingdoms Animalia, Archaea, Bacteria, Chromista, Protozoa, microbial species kingdom Fungi (see Source). input can almost anything: full name (like \"Staphylococcus aureus\"), abbreviated name (\"S. aureus\"), abbreviation known field (\"MRSA\"), just genus. See Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"","code":"as.mo(x, Becker = FALSE, Lancefield = FALSE,   minimum_matching_score = NULL,   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE),   reference_df = get_mo_source(),   ignore_pattern = getOption(\"AMR_ignore_pattern\", NULL),   cleaning_regex = getOption(\"AMR_cleaning_regex\", mo_cleaning_regex()),   only_fungi = getOption(\"AMR_only_fungi\", FALSE),   language = get_AMR_locale(), info = interactive(), ...)  is.mo(x)  mo_uncertainties()  mo_renamed()  mo_failures()  mo_reset_session()  mo_cleaning_regex()"},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"x character vector data.frame one two columns Becker logical indicate whether staphylococci categorised coagulase-negative staphylococci (\"CoNS\") coagulase-positive staphylococci (\"CoPS\") instead species, according Karsten Becker et al. (see Source). Please see Details full list staphylococcal species converted. excludes Staphylococcus aureus default, use Becker = \"\" also categorise S. aureus \"CoPS\". Lancefield logical indicate whether beta-haemolytic Streptococcus categorised Lancefield groups instead species, according Rebecca C. Lancefield (see Source). streptococci categorised first group, e.g. Streptococcus dysgalactiae group C, although officially also categorised groups G L. . Please see Details full list streptococcal species converted. excludes enterococci default (group D), use Lancefield = \"\" also categorise enterococci group D. minimum_matching_score numeric value set lower limit MO matching score. left blank, determined automatically based character length x, taxonomic kingdom human pathogenicity. keep_synonyms logical indicate old, previously valid taxonomic names must preserved corrected currently accepted names. default FALSE, return note old taxonomic names processed. default can set package option AMR_keep_synonyms, .e. options(AMR_keep_synonyms = TRUE) options(AMR_keep_synonyms = FALSE). reference_df data.frame used extra reference translating x valid mo. See set_mo_source() get_mo_source() automate usage codes (e.g. used analysis organisation). ignore_pattern Perl-compatible regular expression (case-insensitive) matches x must return NA. can convenient exclude known non-relevant input can also set package option AMR_ignore_pattern, e.g. options(AMR_ignore_pattern = \"(reported|contaminated flora)\"). cleaning_regex Perl-compatible regular expression (case-insensitive) clean input x. Every matched part x removed. default, outcome mo_cleaning_regex(), removes texts brackets texts \"species\" \"serovar\". default can set package option AMR_cleaning_regex. only_fungi logical indicate fungi must found, making sure e.g. misspellings always return records kingdom Fungi. can set globally microorganism functions package option AMR_only_fungi, .e. options(AMR_only_fungi = TRUE). language language translate text like \"growth\", defaults system language (see get_AMR_locale()) info logical indicate info must printed, e.g. progress bar 25 items coerced, list old taxonomic names. default TRUE interactive mode. ... arguments passed functions","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"character vector additional class mo","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"microorganism (MO) code package (class: mo) human-readable typically looks like examples:   Values coerced considered 'unknown' return MO code UNKNOWN warning. Use mo_* functions get properties based returned code, see Examples. .mo() function uses novel scientifically validated (doi:10.18637/jss.v104.i03 ) matching score algorithm (see Matching Score Microorganisms ) match input available microbial taxonomy package. implicates e.g. \"E. coli\" (microorganism highly prevalent humans) return microbial ID Escherichia coli Entamoeba coli (microorganism less prevalent humans), although latter alphabetically come first.","code":"Code               Full name   ---------------    --------------------------------------   B_KLBSL            Klebsiella   B_KLBSL_PNMN       Klebsiella pneumoniae   B_KLBSL_PNMN_RHNS  Klebsiella pneumoniae rhinoscleromatis   |   |    |    |   |   |    |    |   |   |    |    \\---> subspecies, a 3-5 letter acronym   |   |    \\----> species, a 3-6 letter acronym   |   \\----> genus, a 4-8 letter acronym   \\----> kingdom: A (Archaea), AN (Animalia), B (Bacteria),                   C (Chromista), F (Fungi), PL (Plantae),                   P (Protozoa)"},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"coping-with-uncertain-results","dir":"Reference","previous_headings":"","what":"Coping with Uncertain Results","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Results non-exact taxonomic input based matching score. lowest allowed score can set minimum_matching_score argument. default determined based character length input, taxonomic kingdom, human pathogenicity taxonomic outcome. values matched uncertainty, message shown suggest user inspect results mo_uncertainties(), returns data.frame specifications. increase quality matching, cleaning_regex argument used clean input. must regular expression matches parts input removed input matched available microbial taxonomy. matched Perl-compatible case-insensitive. default value cleaning_regex outcome helper function mo_cleaning_regex(). three helper functions can run using .mo() function: Use mo_uncertainties() get data.frame prints pretty format taxonomic names guessed. output contains matching score matches (see Matching Score Microorganisms ). Use mo_failures() get character vector values coerced valid value. Use mo_renamed() get data.frame values coerced based old, previously accepted taxonomic names.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"for-mycologists","dir":"Reference","previous_headings":"","what":"For Mycologists","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"matching score algorithm gives precedence bacteria fungi. analysing fungi, sure use only_fungi = TRUE, better yet, add code run every session:   make sure bacteria 'non-fungi' returned .mo(), mo_* functions.","code":"options(AMR_only_fungi = TRUE)"},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"coagulase-negative-and-coagulase-positive-staphylococci","dir":"Reference","previous_headings":"","what":"Coagulase-negative and Coagulase-positive Staphylococci","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Becker = TRUE, following staphylococci converted corresponding coagulase group: Coagulase-negative: S. americanisciuri, S. argensis, S. arlettae, S. auricularis, S. borealis, S. brunensis, S. caeli, S. caledonicus, S. canis, S. capitis, S. capitis capitis, S. capitis urealyticus, S. capitis ureolyticus, S. caprae, S. carnosus, S. carnosus carnosus, S. carnosus utilis, S. casei, S. caseolyticus, S. chromogenes, S. cohnii, S. cohnii cohnii, S. cohnii urealyticum, S. cohnii urealyticus, S. condimenti, S. croceilyticus, S. debuckii, S. devriesei, S. durrellii, S. edaphicus, S. epidermidis, S. equorum, S. equorum equorum, S. equorum linens, S. felis, S. fleurettii, S. gallinarum, S. haemolyticus, S. hominis, S. hominis hominis, S. hominis novobiosepticus, S. jettensis, S. kloosii, S. lentus, S. lloydii, S. lugdunensis, S. marylandisciuri, S. massiliensis, S. microti, S. muscae, S. nepalensis, S. pasteuri, S. petrasii, S. petrasii croceilyticus, S. petrasii jettensis, S. petrasii petrasii, S. petrasii pragensis, S. pettenkoferi, S. piscifermentans, S. pragensis, S. pseudoxylosus, S. pulvereri, S. ratti, S. rostri, S. saccharolyticus, S. saprophyticus, S. saprophyticus bovis, S. saprophyticus saprophyticus, S. schleiferi, S. schleiferi schleiferi, S. sciuri, S. sciuri carnaticus, S. sciuri lentus, S. sciuri rodentium, S. sciuri sciuri, S. shinii, S. simulans, S. stepanovicii, S. succinus, S. succinus casei, S. succinus succinus, S. taiwanensis, S. urealyticus, S. ureilyticus, S. veratri, S. vitulinus, S. vitulus, S. warneri, S. xylosus Coagulase-positive: S. agnetis, S. argenteus, S. coagulans, S. cornubiensis, S. delphini, S. hyicus, S. hyicus chromogenes, S. hyicus hyicus, S. intermedius, S. lutrae, S. pseudintermedius, S. roterodami, S. schleiferi coagulans, S. schweitzeri, S. simiae, S. singaporensis based : Becker K et al. (2014). Coagulase-Negative Staphylococci. Clin Microbiol Rev. 27(4): 870-926; doi:10.1128/CMR.00109-13 Becker K et al. (2019). Implications identifying recently defined members S. aureus complex, S. argenteus S. schweitzeri: position paper members ESCMID Study Group staphylococci Staphylococcal Diseases (ESGS). Clin Microbiol Infect; doi:10.1016/j.cmi.2019.02.028 Becker K et al. (2020). Emergence coagulase-negative staphylococci. Expert Rev Anti Infect Ther. 18(4):349-366; doi:10.1080/14787210.2020.1730813 newly named staphylococcal species, S. brunensis (2024) S. shinii (2023), looked scientific reference make sure species considered correct coagulase group.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"lancefield-groups-in-streptococci","dir":"Reference","previous_headings":"","what":"Lancefield Groups in Streptococci","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Lancefield = TRUE, following streptococci converted corresponding Lancefield group: Streptococcus Group : S. pyogenes Streptococcus Group B: S. agalactiae Streptococcus Group C: S. dysgalactiae, S. dysgalactiae dysgalactiae, S. dysgalactiae equisimilis, S. equi, S. equi equi, S. equi ruminatorum, S. equi zooepidemicus Streptococcus Group F: S. anginosus, S. anginosus anginosus, S. anginosus whileyi, S. constellatus, S. constellatus constellatus, S. constellatus pharyngis, S. constellatus viborgensis, S. intermedius Streptococcus Group G: S. canis, S. dysgalactiae, S. dysgalactiae dysgalactiae, S. dysgalactiae equisimilis Streptococcus Group H: S. sanguinis Streptococcus Group K: S. salivarius, S. salivarius salivarius, S. salivarius thermophilus Streptococcus Group L: S. dysgalactiae, S. dysgalactiae dysgalactiae, S. dysgalactiae equisimilis based : Lancefield RC (1933). serological differentiation human groups hemolytic streptococci. J Exp Med. 57(4): 571-95; doi:10.1084/jem.57.4.571","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"Berends MS et al. (2022). AMR: R Package Working Antimicrobial Resistance Data. Journal Statistical Software, 104(3), 1-31; doi:10.18637/jss.v104.i03 Parte, AC et al. (2020). List Prokaryotic names Standing Nomenclature (LPSN) moves DSMZ. International Journal Systematic Evolutionary Microbiology, 70, 5607-5612; doi:10.1099/ijsem.0.004332 . Accessed https://lpsn.dsmz.de June 24th, 2024. Vincent, R et al (2013). MycoBank gearing new horizons. IMA Fungus, 4(2), 371-9; doi:10.5598/imafungus.2013.04.02.16 . Accessed https://www.mycobank.org June 24th, 2024. GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset doi:10.15468/39omei . Accessed https://www.gbif.org June 24th, 2024. Reimer, LC et al. (2022). BacDive 2022: knowledge base standardized bacterial archaeal data. Nucleic Acids Res., 50(D1):D741-D74; doi:10.1093/nar/gkab961 . Accessed https://bacdive.dsmz.de July 16th, 2024. Public Health Information Network Vocabulary Access Distribution System (PHIN VADS). US Edition SNOMED CT 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: https://www.cdc.gov/phin/php/phinvads/ Bartlett et al. (2022). comprehensive list bacterial pathogens infecting humans Microbiology 168:001269; doi:10.1099/mic.0.001269","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"matching-score-for-microorganisms","dir":"Reference","previous_headings":"","what":"Matching Score for Microorganisms","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"ambiguous user input .mo() mo_* functions, returned results chosen based matching score using mo_matching_score(). matching score \\(m\\), calculated : $$m_{(x, n)} = \\frac{l_{n} - 0.5 \\cdot \\min \\begin{cases}l_{n} \\\\ \\textrm{lev}(x, n)\\end{cases}}{l_{n} \\cdot p_{n} \\cdot k_{n}}$$ : \\(x\\) user input; \\(n\\) taxonomic name (genus, species, subspecies); \\(l_n\\) length \\(n\\); \\(lev\\) Levenshtein distance function (counting insertion 1, deletion substitution 2) needed change \\(x\\) \\(n\\); \\(p_n\\) human pathogenic prevalence group \\(n\\), described ; \\(k_n\\) taxonomic kingdom \\(n\\), set Bacteria = 1, Fungi = 1.25, Protozoa = 1.5, Chromista = 1.75, Archaea = 2, others = 3. grouping human pathogenic prevalence \\(p\\) based recent work Bartlett et al. (2022, doi:10.1099/mic.0.001269 ) extensively studied medical-scientific literature categorise bacterial species groups: Established, taxonomic species infected least three persons three references. records prevalence = 1.15 microorganisms data set; Putative, taxonomic species fewer three known cases. records prevalence = 1.25 microorganisms data set. Furthermore, Genera World Health Organization's () Priority Pathogen List prevalence = 1.0 microorganisms data set; genus present established list also prevalence = 1.15 microorganisms data set; genus present putative list prevalence = 1.25 microorganisms data set; species subspecies genus present two aforementioned groups, prevalence = 1.5 microorganisms data set; non-bacterial genus, species subspecies genus present following list, prevalence = 1.25 microorganisms data set: Absidia, Acanthamoeba, Acremonium, Actinomucor, Aedes, Alternaria, Amoeba, Ancylostoma, Angiostrongylus, Anisakis, Anopheles, Apophysomyces, Arthroderma, Aspergillus, Aureobasidium, Basidiobolus, Beauveria, Bipolaris, Blastobotrys, Blastocystis, Blastomyces, Candida, Capillaria, Chaetomium, Chilomastix, Chrysonilia, Chrysosporium, Cladophialophora, Cladosporium, Clavispora, Coccidioides, Cokeromyces, Conidiobolus, Coniochaeta, Contracaecum, Cordylobia, Cryptococcus, Cryptosporidium, Cunninghamella, Curvularia, Cyberlindnera, Debaryozyma, Demodex, Dermatobia, Dientamoeba, Diphyllobothrium, Dirofilaria, Echinostoma, Entamoeba, Enterobius, Epidermophyton, Exidia, Exophiala, Exserohilum, Fasciola, Fonsecaea, Fusarium, Geotrichum, Giardia, Graphium, Haloarcula, Halobacterium, Halococcus, Hansenula, Hendersonula, Heterophyes, Histomonas, Histoplasma, Hortaea, Hymenolepis, Hypomyces, Hysterothylacium, Kloeckera, Kluyveromyces, Kodamaea, Lacazia, Leishmania, Lichtheimia, Lodderomyces, Lomentospora, Madurella, Malassezia, Malbranchea, Metagonimus, Meyerozyma, Microsporidium, Microsporum, Millerozyma, Mortierella, Mucor, Mycocentrospora, Nannizzia, Necator, Nectria, Ochroconis, Oesophagostomum, Oidiodendron, Opisthorchis, Paecilomyces, Paracoccidioides, Pediculus, Penicillium, Phaeoacremonium, Phaeomoniella, Phialophora, Phlebotomus, Phoma, Pichia, Piedraia, Pithomyces, Pityrosporum, Pneumocystis, Pseudallescheria, Pseudoscopulariopsis, Pseudoterranova, Pulex, Purpureocillium, Quambalaria, Rhinocladiella, Rhizomucor, Rhizopus, Rhodotorula, Saccharomyces, Saksenaea, Saprochaete, Sarcoptes, Scedosporium, Schistosoma, Schizosaccharomyces, Scolecobasidium, Scopulariopsis, Scytalidium, Spirometra, Sporobolomyces, Sporopachydermia, Sporothrix, Sporotrichum, Stachybotrys, Strongyloides, Syncephalastrum, Syngamus, Taenia, Talaromyces, Teleomorph, Toxocara, Trichinella, Trichobilharzia, Trichoderma, Trichomonas, Trichophyton, Trichosporon, Trichostrongylus, Trichuris, Tritirachium, Trombicula, Trypanosoma, Tunga, Ulocladium, Ustilago, Verticillium, Wallemia, Wangiella, Wickerhamomyces, Wuchereria, Yarrowia, Zygosaccharomyces; records prevalence = 2.0 microorganisms data set. calculating matching score, characters \\(x\\) \\(n\\) ignored -Z, -z, 0-9, spaces parentheses. matches sorted descending matching score user input values, top match returned. lead effect e.g., \"E. coli\" return microbial ID Escherichia coli (\\(m = 0.688\\), highly prevalent microorganism found humans) Entamoeba coli (\\(m = 0.381\\), less prevalent microorganism humans), although latter alphabetically come first.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.mo.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Transform Arbitrary Input to Valid Microbial Taxonomy — as.mo","text":"","code":"# \\donttest{ # These examples all return \"B_STPHY_AURS\", the ID of S. aureus: as.mo(c(   \"sau\", # WHONET code   \"stau\",   \"STAU\",   \"staaur\",   \"S. aureus\",   \"S aureus\",   \"Sthafilokkockus aureus\", # handles incorrect spelling   \"Staphylococcus aureus (MRSA)\",   \"MRSA\", # Methicillin Resistant S. aureus   \"VISA\", # Vancomycin Intermediate S. aureus   \"VRSA\", # Vancomycin Resistant S. aureus   115329001 # SNOMED CT code )) #> Class 'mo' #>  [1] B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS #>  [6] B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS B_STPHY_AURS #> [11] B_STPHY_AURS B_STPHY_AURS  # Dyslexia is no problem - these all work: as.mo(c(   \"Ureaplasma urealyticum\",   \"Ureaplasma urealyticus\",   \"Ureaplasmium urealytica\",   \"Ureaplazma urealitycium\" )) #> Class 'mo' #> [1] B_URPLS_URLY B_URPLS_URLY B_URPLS_URLY B_URPLS_URLY  # input will get cleaned up with the input given in the `cleaning_regex` argument, # which defaults to `mo_cleaning_regex()`: cat(mo_cleaning_regex(), \"\\n\") #> ([^A-Za-z- \\(\\)\\[\\]{}]+|([({]|\\[).+([})]|\\])|(^| )( ?[a-z-]+[-](resistant|susceptible) ?|e?spp([^a-z]+|$)|e?ssp([^a-z]+|$)|serogr.?up[a-z]*|e?ss([^a-z]+|$)|e?sp([^a-z]+|$)|var([^a-z]+|$)|serovar[a-z]*|sube?species|biovar[a-z]*|e?species|Ig[ADEGM]|e?subsp|biotype|titer|dummy))   as.mo(\"Streptococcus group A\") #> Class 'mo' #> [1] B_STRPT_GRPA  as.mo(\"S. epidermidis\") # will remain species: B_STPHY_EPDR #> Class 'mo' #> [1] B_STPHY_EPDR as.mo(\"S. epidermidis\", Becker = TRUE) # will not remain species: B_STPHY_CONS #> Class 'mo' #> [1] B_STPHY_CONS  as.mo(\"S. pyogenes\") # will remain species: B_STRPT_PYGN #> Class 'mo' #> [1] B_STRPT_PYGN as.mo(\"S. pyogenes\", Lancefield = TRUE) # will not remain species: B_STRPT_GRPA #> Class 'mo' #> [1] B_STRPT_GRPA  # All mo_* functions use as.mo() internally too (see ?mo_property): mo_genus(\"E. coli\") #> [1] \"Escherichia\" mo_gramstain(\"ESCO\") #> [1] \"Gram-negative\" mo_is_intrinsic_resistant(\"ESCCOL\", ab = \"vanco\") #> ℹ Determining intrinsic resistance based on 'EUCAST Expert Rules' and #>   'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3 (2021). This note #>   will be shown once per session. #> [1] TRUE # }"},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":null,"dir":"Reference","previous_headings":"","what":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"Clean existing SIR values, interpret minimum inhibitory concentration (MIC) values disk diffusion diameters according EUCAST CLSI. .sir() transforms input new class sir, ordered factor containing levels S, SDD, , R, NI. breakpoints currently implemented: clinical microbiology: EUCAST 2011-2024 CLSI 2011-2024; veterinary microbiology: EUCAST 2021-2024 CLSI 2019-2024; ECOFFs (Epidemiological Cut-Values): EUCAST 2020-2024 CLSI 2022-2024. breakpoints used interpretation available clinical_breakpoints data set.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"","code":"as.sir(x, ...)  NA_sir_  is.sir(x)  is_sir_eligible(x, threshold = 0.05)  # Default S3 method as.sir(x, S = \"^(S|U)+$\", I = \"^(I)+$\", R = \"^(R)+$\",   NI = \"^(N|NI|V)+$\", SDD = \"^(SDD|D|H)+$\", ...)  # S3 method for class 'mic' as.sir(x, mo = NULL, ab = deparse(substitute(x)),   guideline = getOption(\"AMR_guideline\", \"EUCAST\"), uti = NULL,   conserve_capped_values = FALSE, add_intrinsic_resistance = FALSE,   reference_data = AMR::clinical_breakpoints,   include_screening = getOption(\"AMR_include_screening\", FALSE),   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), host = NULL,   verbose = FALSE, ...)  # S3 method for class 'disk' as.sir(x, mo = NULL, ab = deparse(substitute(x)),   guideline = getOption(\"AMR_guideline\", \"EUCAST\"), uti = NULL,   add_intrinsic_resistance = FALSE,   reference_data = AMR::clinical_breakpoints,   include_screening = getOption(\"AMR_include_screening\", FALSE),   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), host = NULL,   verbose = FALSE, ...)  # S3 method for class 'data.frame' as.sir(x, ..., col_mo = NULL,   guideline = getOption(\"AMR_guideline\", \"EUCAST\"), uti = NULL,   conserve_capped_values = FALSE, add_intrinsic_resistance = FALSE,   reference_data = AMR::clinical_breakpoints,   include_screening = getOption(\"AMR_include_screening\", FALSE),   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), host = NULL,   verbose = FALSE)  sir_interpretation_history(clean = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"interpretations minimum inhibitory concentration (MIC) values disk diffusion diameters: CLSI M39: Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 2011-2024, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m39/. CLSI M100: Performance Standard Antimicrobial Susceptibility Testing, 2011-2024, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m100/. CLSI VET01: Performance Standards Antimicrobial Disk Dilution Susceptibility Tests Bacteria Isolated Animals, 2019-2024, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/veterinary-medicine/documents/vet01/. CLSI VET09: Understanding Susceptibility Test Data Component Antimicrobial Stewardship Veterinary Settings, 2019-2024, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/veterinary-medicine/documents/vet09/. EUCAST Breakpoint tables interpretation MICs zone diameters, 2011-2024, European Committee Antimicrobial Susceptibility Testing (EUCAST). https://www.eucast.org/clinical_breakpoints. WHONET source machine-reading clinical breakpoints (read ), 1989-2024, Collaborating Centre Surveillance Antimicrobial Resistance. https://whonet.org/.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"x vector values (class mic: MIC values mg/L, class disk: disk diffusion radius millimetres) ... using data.frame: names columns apply .sir() (supports tidy selection column1:column4). Otherwise: arguments passed methods. threshold maximum fraction invalid antimicrobial interpretations x, see Examples S, , R, NI, SDD case-independent regular expression translate input result. regular expression run non-letters whitespaces removed input. mo vector (column name) characters can coerced valid microorganism codes .mo(), can left empty determine automatically ab vector (column name) characters can coerced valid antimicrobial drug code .ab() guideline defaults EUCAST 2024 (latest implemented EUCAST guideline clinical_breakpoints data set), can set package option AMR_guideline. Currently supports EUCAST (2011-2024) CLSI (2011-2024), see Details. uti (Urinary Tract Infection) vector (column name) logicals (TRUE FALSE) specify whether UTI specific interpretation guideline chosen. using .sir() data.frame, can also column containing logicals left blank, data set searched column 'specimen', rows within column containing 'urin' ('urine', 'urina') regarded isolates UTI. See Examples. conserve_capped_values logical indicate MIC values starting \">\" (\">=\") must always return \"R\" , MIC values starting \"<\" (\"<=\") must always return \"S\" add_intrinsic_resistance (useful using EUCAST guideline) logical indicate whether intrinsic antibiotic resistance must also considered applicable bug-drug combinations, meaning e.g. ampicillin always return \"R\" Klebsiella species. Determination based intrinsic_resistant data set, based 'EUCAST Expert Rules' 'EUCAST Intrinsic Resistance Unusual Phenotypes' v3.3 (2021). reference_data data.frame used interpretation, defaults clinical_breakpoints data set. Changing argument allows using interpretation guidelines. argument must contain data set equal structure clinical_breakpoints data set (column names column types). Please note guideline argument ignored reference_data manually set. include_screening logical indicate clinical breakpoints screening allowed - default FALSE. Can also set package option AMR_include_screening. include_PKPD logical indicate PK/PD clinical breakpoints must applied last resort - default TRUE. Can also set package option AMR_include_PKPD. breakpoint_type type breakpoints use, either \"ECOFF\", \"animal\", \"human\". ECOFF stands Epidemiological Cut-values. default \"human\", can also set package option AMR_breakpoint_type. host set values veterinary species, automatically set \"animal\". host vector (column name) characters indicate host. useful veterinary breakpoints, requires breakpoint_type = \"animal\". values can text resembling animal species, even 20 supported languages package. foreign languages, sure set language set_AMR_locale() (though automatically guessed based system language). verbose logical indicate notes printed interpretation MIC values disk diffusion values. col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). clean logical indicate whether previously stored results forgotten returning 'logbook' results","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"Ordered factor new class sir","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"Note: clinical breakpoints package validated , imported , WHONET. public use AMR package endorsed CLSI EUCAST. See clinical_breakpoints information. NA_sir_ missing value new sir class, analogous e.g. base R's NA_character_.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"how-it-works","dir":"Reference","previous_headings":"","what":"How it Works","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":".sir() function can work four ways: cleaning raw / untransformed data. data cleaned contain valid values, namely: S susceptible, intermediate 'susceptible, increased exposure', R resistant, NI non-interpretable, SDD susceptible dose-dependent. can set using regular expression. Furthermore, .sir() try best clean intelligence. example, mixed values SIR interpretations MIC values \"<0.25; S\" coerced \"S\". Combined interpretations multiple test methods (seen laboratory records) \"S; S\" coerced \"S\", value like \"S; \" return NA warning input invalid. interpreting minimum inhibitory concentration (MIC) values according EUCAST CLSI. must clean MIC values first using .mic(), also gives columns new data class mic. Also, sure column microorganism names codes. found automatically, can set manually using mo argument. Using dplyr, SIR interpretation can done easily either:   Operators like \"<=\" stripped interpretation. using conserve_capped_values = TRUE, MIC value e.g. \">2\" always return \"R\", even breakpoint according chosen guideline \">=4\". prevent capped values raw laboratory data treated conservatively. default behaviour (conserve_capped_values = FALSE) considers \">2\" lower \">=4\" might case return \"S\" \"\". interpreting disk diffusion diameters according EUCAST CLSI. must clean disk zones first using .disk(), also gives columns new data class disk. Also, sure column microorganism names codes. found automatically, can set manually using mo argument. Using dplyr, SIR interpretation can done easily either:   interpreting complete data set, automatic determination MIC values, disk diffusion diameters, microorganism names codes, antimicrobial test results. done simply running .sir(your_data). points 2, 3 4: Use sir_interpretation_history() retrieve data.frame (tibble tibble package installed) results last .sir() call.","code":"your_data %>% mutate_if(is.mic, as.sir) your_data %>% mutate(across(where(is.mic), as.sir)) your_data %>% mutate_if(is.mic, as.sir, ab = \"column_with_antibiotics\", mo = \"column_with_microorganisms\") your_data %>% mutate_if(is.mic, as.sir, ab = c(\"cipro\", \"ampicillin\", ...), mo = c(\"E. coli\", \"K. pneumoniae\", ...))  # for veterinary breakpoints, also set `host`: your_data %>% mutate_if(is.mic, as.sir, host = \"column_with_animal_species\", guideline = \"CLSI\") your_data %>% mutate_if(is.disk, as.sir) your_data %>% mutate(across(where(is.disk), as.sir)) your_data %>% mutate_if(is.disk, as.sir, ab = \"column_with_antibiotics\", mo = \"column_with_microorganisms\") your_data %>% mutate_if(is.disk, as.sir, ab = c(\"cipro\", \"ampicillin\", ...), mo = c(\"E. coli\", \"K. pneumoniae\", ...))  # for veterinary breakpoints, also set `host`: your_data %>% mutate_if(is.disk, as.sir, host = \"column_with_animal_species\", guideline = \"CLSI\")"},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"supported-guidelines","dir":"Reference","previous_headings":"","what":"Supported Guidelines","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"interpreting MIC values well disk diffusion diameters, currently implemented guidelines clinical microbiology: EUCAST 2011-2024 CLSI 2011-2024, veterinary microbiology: EUCAST 2021-2024 CLSI 2019-2024. Thus, guideline argument must set e.g., \"EUCAST 2024\" \"CLSI 2024\". simply using \"EUCAST\" (default) \"CLSI\" input, latest included version guideline automatically selected. can set data set using reference_data argument. guideline argument ignored. can set default guideline package option AMR_guideline (e.g. .Rprofile file), :   veterinary guidelines, might best options:   applying veterinary breakpoints (setting host setting breakpoint_type = \"animal\"), CLSI VET09 guideline applied cope missing animal species-specific breakpoints.","code":"options(AMR_guideline = \"CLSI\")   options(AMR_guideline = \"CLSI 2018\")   options(AMR_guideline = \"EUCAST 2020\")   # or to reset:   options(AMR_guideline = NULL) options(AMR_guideline = \"CLSI\")   options(AMR_breakpoint_type = \"animal\")"},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"after-interpretation","dir":"Reference","previous_headings":"","what":"After Interpretation","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"using .sir(), can use eucast_rules() defined EUCAST (1) apply inferred susceptibility resistance based results antimicrobials (2) apply intrinsic resistance based taxonomic properties microorganism. determine isolates multi-drug resistant, sure run mdro() (applies MDR/PDR/XDR guideline 2012 default) data set contains S//R values. Read interpreting multidrug-resistant organisms .","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"machine-readable-clinical-breakpoints","dir":"Reference","previous_headings":"","what":"Machine-Readable Clinical Breakpoints","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"repository package contains machine-readable version guidelines. CSV file consisting 34 063 rows 14 columns. file machine-readable, since contains one row every unique combination test method (MIC disk diffusion), antimicrobial drug microorganism. allows easy implementation rules laboratory information systems (LIS). Note contains interpretation guidelines humans - interpretation guidelines CLSI animals removed.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"other","dir":"Reference","previous_headings":"","what":"Other","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"function .sir() detects input contains class sir. input data.frame, iterates columns returns logical vector. base R function .double() can used retrieve quantitative values sir object: \"S\" = 1, \"\"/\"SDD\" = 2, \"R\" = 3. values rendered NA . Note: use .integer(), since (R works internally) return factor level indices, aforementioned quantitative values. function is_sir_eligible() returns TRUE column contains 5% invalid antimicrobial interpretations (S //R /NI /SDD), FALSE otherwise. threshold 5% can set threshold argument. input data.frame, iterates columns returns logical vector.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/as.sir.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Translate MIC and Disk Diffusion to SIR, or Clean Existing SIR Data — as.sir","text":"","code":"example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … summary(example_isolates) # see all SIR results at a glance #>       date              patient               age           gender          #>  Min.   :2002-01-02   Length:2000        Min.   : 0.00   Length:2000        #>  1st Qu.:2005-07-31   Class :character   1st Qu.:63.00   Class :character   #>  Median :2009-07-31   Mode  :character   Median :74.00   Mode  :character   #>  Mean   :2009-11-20                      Mean   :70.69                      #>  3rd Qu.:2014-05-30                      3rd Qu.:82.00                      #>  Max.   :2017-12-28                      Max.   :97.00                      #>      ward                mo                  PEN                 #>  Length:2000        Class :mo             Class:sir              #>  Class :character   <NA>  :0              %S   :25.6% (n=417)    #>  Mode  :character   Unique:90             %SDD : 0.0% (n=0)      #>                     #1    :B_ESCHR_COLI   %I   : 0.7% (n=11)     #>                     #2    :B_STPHY_CONS   %R   :73.7% (n=1201)   #>                     #3    :B_STPHY_AURS   %NI  : 0.0% (n=0)      #>     OXA                   FLC                   AMX                #>  Class:sir             Class:sir             Class:sir             #>  %S   :68.8% (n=251)   %S   :70.5% (n=665)   %S   :40.2% (n=543)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)     %I   : 0.0% (n=0)     %I   : 0.2% (n=3)     #>  %R   :31.2% (n=114)   %R   :29.5% (n=278)   %R   :59.6% (n=804)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     #>     AMC                    AMP                   TZP                #>  Class:sir              Class:sir             Class:sir             #>  %S   :71.4% (n=1342)   %S   :40.2% (n=543)   %S   :86.1% (n=862)   #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 4.8% (n=91)     %I   : 0.2% (n=3)     %I   : 1.3% (n=13)    #>  %R   :23.7% (n=446)    %R   :59.6% (n=804)   %R   :12.6% (n=126)   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     #>     CZO                   FEP                   CXM                 #>  Class:sir             Class:sir             Class:sir              #>  %S   :54.9% (n=245)   %S   :85.6% (n=620)   %S   :72.5% (n=1297)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      #>  %I   : 0.4% (n=2)     %I   : 0.1% (n=1)     %I   : 1.2% (n=22)     #>  %R   :44.6% (n=199)   %R   :14.2% (n=103)   %R   :26.3% (n=470)    #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      #>     FOX                   CTX                   CAZ                 #>  Class:sir             Class:sir             Class:sir              #>  %S   :71.6% (n=586)   %S   :84.4% (n=796)   %S   :33.5% (n=607)    #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      #>  %I   : 1.0% (n=8)     %I   : 0.1% (n=1)     %I   : 0.0% (n=0)      #>  %R   :27.4% (n=224)   %R   :15.5% (n=146)   %R   :66.5% (n=1204)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      #>     CRO                   GEN                    TOB                #>  Class:sir             Class:sir              Class:sir             #>  %S   :84.4% (n=796)   %S   :74.0% (n=1372)   %S   :65.1% (n=879)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     #>  %I   : 0.1% (n=1)     %I   : 1.5% (n=27)     %I   : 0.5% (n=7)     #>  %R   :15.5% (n=146)   %R   :24.6% (n=456)    %R   :34.4% (n=465)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     #>     AMK                   KAN                    TMP                #>  Class:sir             Class:sir              Class:sir             #>  %S   :36.3% (n=251)   %S   : 0.0% (n=0)      %S   :61.2% (n=918)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)     %I   : 0.0% (n=0)      %I   : 0.7% (n=10)    #>  %R   :63.7% (n=441)   %R   :100.0% (n=471)   %R   :38.1% (n=571)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     #>     SXT                    NIT                   FOS                #>  Class:sir              Class:sir             Class:sir             #>  %S   :79.1% (n=1392)   %S   :76.0% (n=565)   %S   :57.8% (n=203)   #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 0.3% (n=6)      %I   : 6.9% (n=51)    %I   : 0.0% (n=0)     #>  %R   :20.5% (n=361)    %R   :17.1% (n=127)   %R   :42.2% (n=148)   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     #>     LNZ                   CIP                    MFX                #>  Class:sir             Class:sir              Class:sir             #>  %S   :30.7% (n=314)   %S   :78.9% (n=1112)   %S   :64.5% (n=136)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)     %I   : 4.9% (n=69)     %I   : 1.9% (n=4)     #>  %R   :69.3% (n=709)   %R   :16.2% (n=228)    %R   :33.6% (n=71)    #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     #>     VAN                    TEC                   TCY                #>  Class:sir              Class:sir             Class:sir             #>  %S   :61.7% (n=1149)   %S   :24.3% (n=237)   %S   :68.3% (n=820)   #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)      %I   : 0.0% (n=0)     %I   : 1.9% (n=23)    #>  %R   :38.3% (n=712)    %R   :75.7% (n=739)   %R   :29.8% (n=357)   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     #>     TGC                   DOX                   ERY                 #>  Class:sir             Class:sir             Class:sir              #>  %S   :87.3% (n=697)   %S   :71.7% (n=814)   %S   :42.3% (n=801)    #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      #>  %I   : 0.0% (n=0)     %I   : 0.6% (n=7)     %I   : 0.5% (n=9)      #>  %R   :12.7% (n=101)   %R   :27.7% (n=315)   %R   :57.2% (n=1084)   #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      #>     CLI                   AZM                    IPM                #>  Class:sir             Class:sir              Class:sir             #>  %S   :38.6% (n=586)   %S   :42.3% (n=801)    %S   :92.7% (n=824)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     #>  %I   : 0.3% (n=4)     %I   : 0.5% (n=9)      %I   : 1.1% (n=10)    #>  %R   :61.2% (n=930)   %R   :57.2% (n=1084)   %R   : 6.2% (n=55)    #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     #>     MEM                   MTR                  CHL                #>  Class:sir             Class:sir            Class:sir             #>  %S   :94.1% (n=780)   %S   :85.3% (n=29)   %S   :78.6% (n=121)   #>  %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)    %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)     %I   : 0.0% (n=0)    %I   : 0.0% (n=0)     #>  %R   : 5.9% (n=49)    %R   :14.7% (n=5)    %R   :21.4% (n=33)    #>  %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)    %NI  : 0.0% (n=0)     #>     COL                    MUP                   RIF                #>  Class:sir              Class:sir             Class:sir             #>  %S   :18.8% (n=309)    %S   :93.0% (n=251)   %S   :30.2% (n=303)   #>  %SDD : 0.0% (n=0)      %SDD : 0.0% (n=0)     %SDD : 0.0% (n=0)     #>  %I   : 0.0% (n=0)      %I   : 1.1% (n=3)     %I   : 0.2% (n=2)     #>  %R   :81.2% (n=1331)   %R   : 5.9% (n=16)    %R   :69.6% (n=698)   #>  %NI  : 0.0% (n=0)      %NI  : 0.0% (n=0)     %NI  : 0.0% (n=0)      # For INTERPRETING disk diffusion and MIC values -----------------------  # example data sets, with combined MIC values and disk zones df_wide <- data.frame(   microorganism = \"Escherichia coli\",   amoxicillin = as.mic(8),   cipro = as.mic(0.256),   tobra = as.disk(16),   genta = as.disk(18),   ERY = \"R\" ) df_long <- data.frame(   bacteria = rep(\"Escherichia coli\", 4),   antibiotic = c(\"amoxicillin\", \"cipro\", \"tobra\", \"genta\"),   mics = as.mic(c(0.01, 1, 4, 8)),   disks = as.disk(c(6, 10, 14, 18)) )  # \\donttest{ ## Using dplyr ------------------------------------------------- if (require(\"dplyr\")) {   # approaches that all work without additional arguments:   df_wide %>% mutate_if(is.mic, as.sir)   df_wide %>% mutate_if(function(x) is.mic(x) | is.disk(x), as.sir)   df_wide %>% mutate(across(where(is.mic), as.sir))   df_wide %>% mutate_at(vars(amoxicillin:tobra), as.sir)   df_wide %>% mutate(across(amoxicillin:tobra, as.sir))      # approaches that all work with additional arguments:   df_long %>%     # given a certain data type, e.g. MIC values     mutate_if(is.mic, as.sir,               mo = \"bacteria\",               ab = \"antibiotic\",               guideline = \"CLSI\")   df_long %>%     mutate(across(where(is.mic),                   function(x) as.sir(x,                                      mo = \"bacteria\",                                      ab = \"antibiotic\",                                      guideline = \"CLSI\")))   df_wide %>%     # given certain columns, e.g. from 'cipro' to 'genta'     mutate_at(vars(cipro:genta), as.sir,               mo = \"bacteria\",               guideline = \"CLSI\")   df_wide %>%     mutate(across(cipro:genta,                        function(x) as.sir(x,                                           mo = \"bacteria\",                                           guideline = \"CLSI\")))                           # for veterinary breakpoints, add 'host':   df_long$animal_species <- c(\"cats\", \"dogs\", \"horses\", \"cattle\")   df_long %>%     # given a certain data type, e.g. MIC values     mutate_if(is.mic, as.sir,               mo = \"bacteria\",               ab = \"antibiotic\",               host = \"animal_species\",               guideline = \"CLSI\")   df_long %>%     mutate(across(where(is.mic),                   function(x) as.sir(x,                                      mo = \"bacteria\",                                      ab = \"antibiotic\",                                      host = \"animal_species\",                                      guideline = \"CLSI\")))   df_wide %>%     mutate_at(vars(cipro:genta), as.sir,               mo = \"bacteria\",               ab = \"antibiotic\",               host = \"animal_species\",               guideline = \"CLSI\")   df_wide %>%     mutate(across(cipro:genta,                        function(x) as.sir(x,                                           mo = \"bacteria\",                                           host = \"animal_species\",                                           guideline = \"CLSI\")))      # to include information about urinary tract infections (UTI)   data.frame(mo = \"E. coli\",              nitrofuratoin = c(\"<= 2\", 32),              from_the_bladder = c(TRUE, FALSE)) %>%     as.sir(uti = \"from_the_bladder\")    data.frame(mo = \"E. coli\",              nitrofuratoin = c(\"<= 2\", 32),              specimen = c(\"urine\", \"blood\")) %>%     as.sir() # automatically determines urine isolates    df_wide %>%     mutate_at(vars(cipro:genta), as.sir, mo = \"E. coli\", uti = TRUE) } #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin) based on #> column 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for tobramycin (TOB) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin) based on #> column 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for gentamicin (GEN) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin) based on #> column 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for tobramycin (TOB) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin) based on column #> 'microorganism', EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin) based on #> column 'microorganism', EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for tobramycin (TOB) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX), 'cipro' (CIP, ciprofloxacin), #> 'tobra' (TOB, tobramycin), and 'genta' (GEN, gentamicin) based on column #> 'bacteria', CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'amoxicillin' (AMX), 'cipro' (CIP, ciprofloxacin), #> 'tobra' (TOB, tobramycin), and 'genta' (GEN, gentamicin) based on column #> 'bacteria', CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin), CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin), CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> ℹ Assuming breakpoint_type = \"animal\", since host is set. #>  #> ℹ Please note that in the absence of specific veterinary breakpoints for #>   certain animal hosts, the CLSI guideline VET09 will be applied where #>   possible. #>  #> Interpreting MIC values: 'amoxicillin' (AMX), 'cipro' (CIP, ciprofloxacin), #> 'tobra' (TOB, tobramycin), and 'genta' (GEN, gentamicin) based on column #> 'bacteria', CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> ℹ Assuming breakpoint_type = \"animal\", since host is set. #>  #> ℹ Please note that in the absence of specific veterinary breakpoints for #>   certain animal hosts, the CLSI guideline VET09 will be applied where #>   possible. #>  #> Interpreting MIC values: 'amoxicillin' (AMX), 'cipro' (CIP, ciprofloxacin), #> 'tobra' (TOB, tobramycin), and 'genta' (GEN, gentamicin) based on column #> 'bacteria', CLSI 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> ℹ Assuming breakpoint_type = \"animal\", since host is set. #>  #>  #> ℹ Please note that in the absence of specific veterinary breakpoints for #>   certain animal hosts, the CLSI guideline VET09 will be applied where #>   possible. #>  #> Interpreting MIC values: 'antibiotic' (TESTAB, test Antibiotic), CLSI #> 2024... #>  WARNING  #>   • No CLSI 2024 MIC breakpoints available for test Antibiotic (TESTAB). #> Interpreting disk diffusion zones: 'antibiotic' (TESTAB, test Antibiotic), #> CLSI 2024... #>  WARNING  #>   • No CLSI 2024 DISK breakpoints available for test Antibiotic (TESTAB). #> Interpreting disk diffusion zones: 'antibiotic' (TESTAB, test Antibiotic), #> CLSI 2024... #>  WARNING  #>   • No CLSI 2024 DISK breakpoints available for test Antibiotic (TESTAB). #> Warning: There was 1 warning in `mutate()`. #> ℹ In argument: `cipro = (function (x, ...) ...`. #> Caused by warning: #> ! The following animal host(s) could not be coerced: \"animal_species\" #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> ℹ Assuming breakpoint_type = \"animal\", since host is set. #>  #>  #> ℹ Please note that in the absence of specific veterinary breakpoints for #>   certain animal hosts, the CLSI guideline VET09 will be applied where #>   possible. #>  #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin), CLSI 2024... #>  OK  #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin), CLSI 2024... #>  OK  #> Warning: There was 1 warning in `mutate()`. #> ℹ In argument: `across(...)`. #> Caused by warning: #> ! The following animal host(s) could not be coerced: \"animal_species\" #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: column 'nitrofuratoin' (NIT, #> nitrofurantoin), EUCAST 2024... #>  OK  #> ℹ Assuming value \"urine\" in column 'specimen' reflects a urinary tract #>   infection. #>   Use as.sir(uti = FALSE) to prevent this. #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: column 'nitrofuratoin' (NIT, #> nitrofurantoin), EUCAST 2024... #>  OK  #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'cipro' (CIP, ciprofloxacin), EUCAST 2024... #>  OK  #> Interpreting disk diffusion zones: 'tobra' (TOB, tobramycin), EUCAST #> 2024... #>  OK  #> Interpreting disk diffusion zones: 'genta' (GEN, gentamicin), EUCAST #> 2024... #>  OK  #>      microorganism amoxicillin cipro tobra genta ERY #> 1 Escherichia coli           8  <NA>     S     S   R   ## Using base R ------------------------------------------------  as.sir(df_wide) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: column 'amoxicillin' (AMX), EUCAST 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for amoxicillin (AMX) in Escherichia coli - assuming body site 'Intravenous'. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting MIC values: column 'cipro' (CIP, ciprofloxacin), EUCAST #> 2024... #>  NOTE  #>   • Multiple breakpoints available for ciprofloxacin (CIP) in Escherichia coli - assuming body site 'Non-meningitis'. #> Interpreting disk diffusion zones: column 'tobra' (TOB, tobramycin), EUCAST #> 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for tobramycin (TOB) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #> Interpreting disk diffusion zones: column 'genta' (GEN, gentamicin), EUCAST #> 2024... #>  NOTE  #>   • Breakpoints for UTI and non-UTI available for gentamicin (GEN) in Escherichia coli - assuming an unspecified body site. Use argument uti to set which isolates are from urine. See ?as.sir. #> Assigning class 'sir' to already clean column 'ERY' (erythromycin)... #>  OK  #>      microorganism amoxicillin cipro tobra genta ERY #> 1 Escherichia coli           S     I     S     S   R  # return a 'logbook' about the results: sir_interpretation_history() #> # A tibble: 57 × 16 #>    datetime            index ab_given mo_given host_given ab   mo               #>  * <dttm>              <int> <chr>    <chr>    <chr>      <ab> <mo>             #>  1 2025-02-11 07:53:48     4 AMX      B_STRPT… human      AMX  B_STRPT_PNMN     #>  2 2025-02-11 07:53:55     4 genta    Escheri… human      GEN  B_[ORD]_ENTRBCTR #>  3 2025-02-11 07:53:55     4 genta    Escheri… human      GEN  B_[ORD]_ENTRBCTR #>  4 2025-02-11 07:53:56     4 genta    Escheri… cattle     GEN  B_ESCHR_COLI     #>  5 2025-02-11 07:53:56     4 genta    Escheri… cattle     GEN  B_ESCHR_COLI     #>  6 2025-02-11 07:53:48     3 AMX      B_STRPT… human      AMX  B_STRPT_PNMN     #>  7 2025-02-11 07:53:55     3 tobra    Escheri… human      TOB  B_[ORD]_ENTRBCTR #>  8 2025-02-11 07:53:55     3 tobra    Escheri… human      TOB  B_[ORD]_ENTRBCTR #>  9 2025-02-11 07:53:56     3 tobra    Escheri… horses     TOB  B_ESCHR_COLI     #> 10 2025-02-11 07:53:56     3 tobra    Escheri… horses     TOB  B_ESCHR_COLI     #> # ℹ 47 more rows #> # ℹ 9 more variables: host <chr>, method <chr>, input <dbl>, outcome <sir>, #> #   notes <chr>, guideline <chr>, ref_table <chr>, uti <lgl>, #> #   breakpoint_S_R <chr>  # for single values as.sir(   x = as.mic(2),   mo = as.mo(\"S. pneumoniae\"),   ab = \"AMP\",   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting MIC values: 'AMP' (ampicillin), EUCAST 2024... #>  NOTE  #>   • Multiple breakpoints available for ampicillin (AMP) in Streptococcus pneumoniae - assuming body site 'Non-meningitis'. #> Class 'sir' #> [1] R  as.sir(   x = as.disk(18),   mo = \"Strep pneu\", # `mo` will be coerced with as.mo()   ab = \"ampicillin\", # and `ab` with as.ab()   guideline = \"EUCAST\" ) #>  #> ℹ Run sir_interpretation_history() afterwards to retrieve a logbook with #>   all the details of the breakpoint interpretations. #>  #> Interpreting disk diffusion zones: 'ampicillin' (AMP), EUCAST 2024... #>  OK  #> Class 'sir' #> [1] R   # For CLEANING existing SIR values ------------------------------------  as.sir(c(\"S\", \"SDD\", \"I\", \"R\", \"NI\", \"A\", \"B\", \"C\")) #> Warning: in as.sir(): 3 results in column '20' truncated (38%) that were invalid #> antimicrobial interpretations: \"A\", \"B\", and \"C\" as.sir(\"<= 0.002; S\") # will return \"S\" sir_data <- as.sir(c(rep(\"S\", 474), rep(\"I\", 36), rep(\"R\", 370))) is.sir(sir_data) #> [1] TRUE plot(sir_data) # for percentages  barplot(sir_data) # for frequencies   # as common in R, you can use as.integer() to return factor indices: as.integer(as.sir(c(\"S\", \"SDD\", \"I\", \"R\", \"NI\", NA))) #> [1]  1  2  3  4  5 NA # but for computational use, as.double() will return 1 for S, 2 for I/SDD, and 3 for R: as.double(as.sir(c(\"S\", \"SDD\", \"I\", \"R\", \"NI\", NA))) #> [1]  1  2  2  3 NA NA  # the dplyr way if (require(\"dplyr\")) {   example_isolates %>%     mutate_at(vars(PEN:RIF), as.sir)   # same:   example_isolates %>%     as.sir(PEN:RIF)    # fastest way to transform all columns with already valid AMR results to class `sir`:   example_isolates %>%     mutate_if(is_sir_eligible, as.sir)    # since dplyr 1.0.0, this can also be:   # example_isolates %>%   #   mutate(across(where(is_sir_eligible), as.sir)) } #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … # }"},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":null,"dir":"Reference","previous_headings":"","what":"Get ATC Properties from WHOCC Website — atc_online_property","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"Gets data WHOCC website determine properties Anatomical Therapeutic Chemical (ATC) (e.g. antibiotic), name, defined daily dose (DDD) standard unit.","code":""},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"","code":"atc_online_property(atc_code, property, administration = \"O\",   url = \"https://atcddd.fhi.no/atc_ddd_index/?code=%s&showdescription=no\",   url_vet = \"https://atcddd.fhi.no/atcvet/atcvet_index/?code=%s&showdescription=no\")  atc_online_groups(atc_code, ...)  atc_online_ddd(atc_code, ...)  atc_online_ddd_units(atc_code, ...)"},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"https://atcddd.fhi./atc_ddd_alterations__cumulative/ddd_alterations/abbrevations/","code":""},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"atc_code character (vector) ATC code(s) antibiotics, coerced .ab() ab_atc() internally valid ATC code property property ATC code. Valid values \"ATC\", \"Name\", \"DDD\", \"U\" (\"unit\"), \"Adm.R\", \"Note\" groups. last option, hierarchical groups ATC code returned, see Examples. administration type administration using property = \"Adm.R\", see Details url url website WHOCC. sign %s can used placeholder ATC codes. url_vet url website WHOCC veterinary medicine. sign %s can used placeholder ATC_vet codes (start \"Q\"). ... arguments pass atc_property","code":""},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"Options argument administration: \"Implant\" = Implant \"Inhal\" = Inhalation \"Instill\" = Instillation \"N\" = nasal \"O\" = oral \"P\" = parenteral \"R\" = rectal \"SL\" = sublingual/buccal \"TD\" = transdermal \"V\" = vaginal Abbreviations return values using property = \"U\" (unit): \"g\" = gram \"mg\" = milligram \"mcg\" = microgram \"U\" = unit \"TU\" = thousand units \"MU\" = million units \"mmol\" = millimole \"ml\" = millilitre (e.g. eyedrops) N.B. function requires internet connection works following packages installed: curl, rvest, xml2.","code":""},{"path":"https://msberends.github.io/AMR/reference/atc_online.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get ATC Properties from WHOCC Website — atc_online_property","text":"","code":"# \\donttest{ if (requireNamespace(\"curl\") && requireNamespace(\"rvest\") && requireNamespace(\"xml2\")) {   # oral DDD (Defined Daily Dose) of amoxicillin   atc_online_property(\"J01CA04\", \"DDD\", \"O\")   atc_online_ddd(ab_atc(\"amox\"))    # parenteral DDD (Defined Daily Dose) of amoxicillin   atc_online_property(\"J01CA04\", \"DDD\", \"P\")    atc_online_property(\"J01CA04\", property = \"groups\") # search hierarchical groups of amoxicillin } #> Loading required namespace: rvest #> [1] \"ANTIINFECTIVES FOR SYSTEMIC USE\"         #> [2] \"ANTIBACTERIALS FOR SYSTEMIC USE\"         #> [3] \"BETA-LACTAM ANTIBACTERIALS, PENICILLINS\" #> [4] \"Penicillins with extended spectrum\"      # }"},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":null,"dir":"Reference","previous_headings":"","what":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"Use function e.g. clinical texts health care records. returns list antiviral drugs, doses forms administration found texts.","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"","code":"av_from_text(text, type = c(\"drug\", \"dose\", \"administration\"),   collapse = NULL, translate_av = FALSE, thorough_search = NULL,   info = interactive(), ...)"},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"text text analyse type type property search , either \"drug\", \"dose\" \"administration\", see Examples collapse character pass paste(, collapse = ...) return one character per element text, see Examples translate_av type = \"drug\": column name antivirals data set translate antibiotic abbreviations , using av_property(). default FALSE. Using TRUE equal using \"name\". thorough_search logical indicate whether input must extensively searched misspelling faulty input values. Setting TRUE take considerably time using FALSE. default, turn TRUE input elements contain maximum three words. info logical indicate whether progress bar printed - default TRUE interactive mode ... arguments passed .av()","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"list,  character collapse NULL","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"function also internally used .av(), although searches first drug name throw note drug names returned. Note: .av() function may use long regular expression match brand names antiviral drugs. may fail systems.","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"argument-type","dir":"Reference","previous_headings":"","what":"Argument type","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"default, function search antiviral drug names. text elements searched official names, ATC codes brand names. uses .av() internally, correct misspelling. type = \"dose\" (similar, like \"dosing\", \"doses\"), text elements searched numeric values higher 100 resemble years. output numeric. supports unit (g, mg, IE, etc.) multiple values one clinical text, see Examples. type = \"administration\" (abbreviations, like \"admin\", \"adm\"), text elements searched form drug administration. supports following forms (including common abbreviations): buccal, implant, inhalation, instillation, intravenous, nasal, oral, parenteral, rectal, sublingual, transdermal vaginal. Abbreviations oral ('po', 'per os') become \"oral\", values intravenous ('iv', 'intraven') become \"iv\". supports multiple values one clinical text, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"argument-collapse","dir":"Reference","previous_headings":"","what":"Argument collapse","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"Without using collapse, function return list. can convenient use e.g. inside mutate()):df %>% mutate(avx = av_from_text(clinical_text)) returned AV codes can transformed official names, groups, etc. av_* functions av_name() av_group(), using translate_av argument. using collapse, function return character:df %>% mutate(avx = av_from_text(clinical_text, collapse = \"|\"))","code":""},{"path":"https://msberends.github.io/AMR/reference/av_from_text.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Retrieve Antiviral Drug Names and Doses from Clinical Text — av_from_text","text":"","code":"av_from_text(\"28/03/2020 valaciclovir po tid\") #> [[1]] #> Class 'av' #> [1] VALA #>  av_from_text(\"28/03/2020 valaciclovir po tid\", type = \"admin\") #> [[1]] #> [1] \"oral\" #>"},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Properties of an Antiviral Drug — av_property","title":"Get Properties of an Antiviral Drug — av_property","text":"Use functions return specific property antiviral drug antivirals data set. input values evaluated internally .av().","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Properties of an Antiviral Drug — av_property","text":"","code":"av_name(x, language = get_AMR_locale(), tolower = FALSE, ...)  av_cid(x, ...)  av_synonyms(x, ...)  av_tradenames(x, ...)  av_group(x, language = get_AMR_locale(), ...)  av_atc(x, ...)  av_loinc(x, ...)  av_ddd(x, administration = \"oral\", ...)  av_ddd_units(x, administration = \"oral\", ...)  av_info(x, language = get_AMR_locale(), ...)  av_url(x, open = FALSE, ...)  av_property(x, property = \"name\", language = get_AMR_locale(), ...)"},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Properties of an Antiviral Drug — av_property","text":"x (vector ) text can coerced valid antiviral drug code .av() language language returned text - default system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. tolower logical indicate whether first character every output transformed lower case character. ... arguments passed .av() administration way administration, either \"oral\" \"iv\" open browse URL using utils::browseURL() property one column names one antivirals data set: vector_or(colnames(antivirals), sort = FALSE).","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Properties of an Antiviral Drug — av_property","text":"integer case av_cid() named list case av_info() multiple av_atc()/av_synonyms()/av_tradenames() double case av_ddd() character cases","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Properties of an Antiviral Drug — av_property","text":"output translated possible. function av_url() return direct URL official website. warning returned required ATC code available.","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Get Properties of an Antiviral Drug — av_property","text":"World Health Organization () Collaborating Centre Drug Statistics Methodology: https://atcddd.fhi./atc_ddd_index/ European Commission Public Health PHARMACEUTICALS - COMMUNITY REGISTER: https://ec.europa.eu/health/documents/community-register/html/reg_hum_atc.htm","code":""},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Get Properties of an Antiviral Drug — av_property","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/av_property.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Properties of an Antiviral Drug — av_property","text":"","code":"# all properties: av_name(\"ACI\") #> [1] \"Aciclovir\" av_atc(\"ACI\") #> [1] \"J05AB01\" av_cid(\"ACI\") #> [1] 135398513 av_synonyms(\"ACI\") #>  [1] \"acicloftal\"        \"aciclovier\"        \"aciclovirum\"       #>  [4] \"activir\"           \"acyclofoam\"        \"acycloguanosine\"   #>  [7] \"acyclovir\"         \"acyclovir lauriad\" \"avaclyr\"           #> [10] \"cargosil\"          \"cyclovir\"          \"genvir\"            #> [13] \"gerpevir\"          \"hascovir\"          \"maynar\"            #> [16] \"novirus\"           \"poviral\"           \"sitavig\"           #> [19] \"sitavir\"           \"vipral\"            \"viropump\"          #> [22] \"virorax\"           \"zovirax\"           \"zyclir\"            av_tradenames(\"ACI\") #>  [1] \"acicloftal\"        \"aciclovier\"        \"aciclovirum\"       #>  [4] \"activir\"           \"acyclofoam\"        \"acycloguanosine\"   #>  [7] \"acyclovir\"         \"acyclovir lauriad\" \"avaclyr\"           #> [10] \"cargosil\"          \"cyclovir\"          \"genvir\"            #> [13] \"gerpevir\"          \"hascovir\"          \"maynar\"            #> [16] \"novirus\"           \"poviral\"           \"sitavig\"           #> [19] \"sitavir\"           \"vipral\"            \"viropump\"          #> [22] \"virorax\"           \"zovirax\"           \"zyclir\"            av_group(\"ACI\") #> [1] \"Nucleosides and nucleotides excl. reverse transcriptase inhibitors\" av_url(\"ACI\") #>                                                              Aciclovir  #> \"https://atcddd.fhi.no/atc_ddd_index/?code=J05AB01&showdescription=no\"   # lowercase transformation av_name(x = c(\"ACI\", \"VALA\")) #> [1] \"Aciclovir\"    \"Valaciclovir\" av_name(x = c(\"ACI\", \"VALA\"), tolower = TRUE) #> [1] \"aciclovir\"    \"valaciclovir\"  # defined daily doses (DDD) av_ddd(\"ACI\", \"oral\") #> [1] 4 av_ddd_units(\"ACI\", \"oral\") #> [1] \"g\" av_ddd(\"ACI\", \"iv\") #> [1] 4 av_ddd_units(\"ACI\", \"iv\") #> [1] \"g\"  av_info(\"ACI\") # all properties as a list #> $av #> [1] \"ACI\" #>  #> $cid #> [1] 135398513 #>  #> $name #> [1] \"Aciclovir\" #>  #> $group #> [1] \"Nucleosides and nucleotides excl. reverse transcriptase inhibitors\" #>  #> $atc #> [1] \"J05AB01\" #>  #> $tradenames #>  [1] \"acicloftal\"        \"aciclovier\"        \"aciclovirum\"       #>  [4] \"activir\"           \"acyclofoam\"        \"acycloguanosine\"   #>  [7] \"acyclovir\"         \"acyclovir lauriad\" \"avaclyr\"           #> [10] \"cargosil\"          \"cyclovir\"          \"genvir\"            #> [13] \"gerpevir\"          \"hascovir\"          \"maynar\"            #> [16] \"novirus\"           \"poviral\"           \"sitavig\"           #> [19] \"sitavir\"           \"vipral\"            \"viropump\"          #> [22] \"virorax\"           \"zovirax\"           \"zyclir\"            #>  #> $loinc #> [1] \"\" #>  #> $ddd #> $ddd$oral #> $ddd$oral$amount #> [1] 4 #>  #> $ddd$oral$units #> [1] \"g\" #>  #>  #> $ddd$iv #> $ddd$iv$amount #> [1] 4 #>  #> $ddd$iv$units #> [1] \"g\" #>  #>  #>   # all av_* functions use as.av() internally, so you can go from 'any' to 'any': av_atc(\"ACI\") #> [1] \"J05AB01\" av_group(\"J05AB01\") #> [1] \"Nucleosides and nucleotides excl. reverse transcriptase inhibitors\" av_loinc(\"abacavir\") #> [1] \"29113-8\" \"30273-7\" \"30287-7\" \"30303-2\" \"78772-1\" \"78773-9\" \"79134-3\" #> [8] \"80118-3\" av_name(\"29113-8\") #> [1] \"Abacavir\" av_name(135398513) #> [1] \"Aciclovir\" av_name(\"J05AB01\") #> [1] \"Aciclovir\""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":null,"dir":"Reference","previous_headings":"","what":"Check Availability of Columns — availability","title":"Check Availability of Columns — availability","text":"Easy check data availability columns data set. makes easy get idea antimicrobial combinations can used calculation e.g. susceptibility() resistance().","code":""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Check Availability of Columns — availability","text":"","code":"availability(tbl, width = NULL)"},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Check Availability of Columns — availability","text":"tbl data.frame list width number characters present visual availability - default filling width console","code":""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Check Availability of Columns — availability","text":"data.frame column names tbl row names","code":""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Check Availability of Columns — availability","text":"function returns data.frame columns \"resistant\" \"visual_resistance\". values columns calculated resistance().","code":""},{"path":"https://msberends.github.io/AMR/reference/availability.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Check Availability of Columns — availability","text":"","code":"availability(example_isolates) #>         count available     visual_availabilty resistant      visual_resistance #> date     2000    100.0% |####################|                                  #> patient  2000    100.0% |####################|                                  #> age      2000    100.0% |####################|                                  #> gender   2000    100.0% |####################|                                  #> ward     2000    100.0% |####################|                                  #> mo       2000    100.0% |####################|                                  #> PEN      1629     81.5% |################----|     73.7% |##############------| #> OXA       365     18.3% |###-----------------|     31.2% |######--------------| #> FLC       943     47.2% |#########-----------|     29.5% |#####---------------| #> AMX      1350     67.5% |#############-------|     59.6% |###########---------| #> AMC      1879     94.0% |##################--|     23.7% |####----------------| #> AMP      1350     67.5% |#############-------|     59.6% |###########---------| #> TZP      1001     50.0% |##########----------|     12.6% |##------------------| #> CZO       446     22.3% |####----------------|     44.6% |########------------| #> FEP       724     36.2% |#######-------------|     14.2% |##------------------| #> CXM      1789     89.5% |#################---|     26.3% |#####---------------| #> FOX       818     40.9% |########------------|     27.4% |#####---------------| #> CTX       943     47.2% |#########-----------|     15.5% |###-----------------| #> CAZ      1811     90.6% |##################--|     66.5% |#############-------| #> CRO       943     47.2% |#########-----------|     15.5% |###-----------------| #> GEN      1855     92.8% |##################--|     24.6% |####----------------| #> TOB      1351     67.6% |#############-------|     34.4% |######--------------| #> AMK       692     34.6% |######--------------|     63.7% |############--------| #> KAN       471     23.6% |####----------------|    100.0% |####################| #> TMP      1499     75.0% |###############-----|     38.1% |#######-------------| #> SXT      1759     88.0% |#################---|     20.5% |####----------------| #> NIT       743     37.2% |#######-------------|     17.1% |###-----------------| #> FOS       351     17.6% |###-----------------|     42.2% |########------------| #> LNZ      1023     51.2% |##########----------|     69.3% |#############-------| #> CIP      1409     70.5% |#############-------|     16.2% |###-----------------| #> MFX       211     10.6% |##------------------|     33.6% |######--------------| #> VAN      1861     93.1% |##################--|     38.3% |#######-------------| #> TEC       976     48.8% |#########-----------|     75.7% |###############-----| #> TCY      1200     60.0% |###########---------|     29.8% |#####---------------| #> TGC       798     39.9% |########------------|     12.7% |##------------------| #> DOX      1136     56.8% |###########---------|     27.7% |#####---------------| #> ERY      1894     94.7% |##################--|     57.2% |###########---------| #> CLI      1520     76.0% |###############-----|     61.2% |############--------| #> AZM      1894     94.7% |##################--|     57.2% |###########---------| #> IPM       889     44.5% |########------------|      6.2% |#-------------------| #> MEM       829     41.5% |########------------|      5.9% |#-------------------| #> MTR        34      1.7% |--------------------|     14.7% |##------------------| #> CHL       154      7.7% |#-------------------|     21.4% |####----------------| #> COL      1640     82.0% |################----|     81.2% |################----| #> MUP       270     13.5% |##------------------|      5.9% |#-------------------| #> RIF      1003     50.2% |##########----------|     69.6% |#############-------| # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     filter(mo == as.mo(\"Escherichia coli\")) %>%     select_if(is.sir) %>%     availability() } #>     count available       visual_availabilty resistant        visual_resistance #> PEN   467    100.0% |######################|    100.0% |######################| #> OXA     0      0.0% |----------------------|                                    #> FLC     0      0.0% |----------------------|                                    #> AMX   392     83.9% |##################----|     50.0% |###########-----------| #> AMC   467    100.0% |######################|     13.1% |##--------------------| #> AMP   392     83.9% |##################----|     50.0% |###########-----------| #> TZP   416     89.1% |###################---|      5.5% |#---------------------| #> CZO    82     17.6% |###-------------------|      2.4% |----------------------| #> FEP   317     67.9% |##############--------|      2.8% |----------------------| #> CXM   465     99.6% |######################|      5.4% |#---------------------| #> FOX   377     80.7% |#################-----|      6.9% |#---------------------| #> CTX   459     98.3% |#####################-|      2.4% |----------------------| #> CAZ   460     98.5% |#####################-|      2.4% |----------------------| #> CRO   459     98.3% |#####################-|      2.4% |----------------------| #> GEN   460     98.5% |#####################-|      2.0% |----------------------| #> TOB   462     98.9% |#####################-|      2.6% |----------------------| #> AMK   171     36.6% |########--------------|      0.0% |----------------------| #> KAN     0      0.0% |----------------------|                                    #> TMP   396     84.8% |##################----|     39.1% |########--------------| #> SXT   465     99.6% |######################|     31.6% |######----------------| #> NIT   458     98.1% |#####################-|      2.8% |----------------------| #> FOS    61     13.1% |##--------------------|      0.0% |----------------------| #> LNZ   467    100.0% |######################|    100.0% |######################| #> CIP   456     97.6% |#####################-|     12.5% |##--------------------| #> MFX    57     12.2% |##--------------------|    100.0% |######################| #> VAN   467    100.0% |######################|    100.0% |######################| #> TEC   467    100.0% |######################|    100.0% |######################| #> TCY     3      0.6% |----------------------|     66.7% |##############--------| #> TGC    68     14.6% |###-------------------|      0.0% |----------------------| #> DOX     0      0.0% |----------------------|                                    #> ERY   467    100.0% |######################|    100.0% |######################| #> CLI   467    100.0% |######################|    100.0% |######################| #> AZM   467    100.0% |######################|    100.0% |######################| #> IPM   422     90.4% |###################---|      0.0% |----------------------| #> MEM   418     89.5% |###################---|      0.0% |----------------------| #> MTR     2      0.4% |----------------------|      0.0% |----------------------| #> CHL     0      0.0% |----------------------|                                    #> COL   240     51.4% |###########-----------|      0.0% |----------------------| #> MUP     0      0.0% |----------------------|                                    #> RIF   467    100.0% |######################|    100.0% |######################| # }"},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine Bug-Drug Combinations — bug_drug_combinations","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"Determine antimicrobial resistance (AMR) bug-drug combinations data set least 30 (default) isolates available per species. Use format() result prettify publishable/printable format, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"","code":"bug_drug_combinations(x, col_mo = NULL, FUN = mo_shortname,   include_n_rows = FALSE, ...)  # S3 method for class 'bug_drug_combinations' format(x, translate_ab = \"name (ab, atc)\",   language = get_AMR_locale(), minimum = 30, combine_SI = TRUE,   add_ab_group = TRUE, remove_intrinsic_resistant = FALSE,   decimal.mark = getOption(\"OutDec\"), big.mark = ifelse(decimal.mark ==   \",\", \".\", \",\"), ...)"},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"x data set antibiotic columns, amox, AMX AMC col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). FUN function call mo column transform microorganism codes - default mo_shortname() include_n_rows logical indicate total number rows must included output ... arguments passed FUN translate_ab character length 1 containing column names antibiotics data set language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. combine_SI logical indicate whether values S, SDD, summed, resistance based R - default TRUE add_ab_group logical indicate group antimicrobials must included first column remove_intrinsic_resistant logical indicate rows columns 100% resistance tested antimicrobials must removed table decimal.mark character used indicate numeric     decimal point. big.mark character; empty used mark every     big.interval decimals (hence big)     decimal point.","code":""},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"function bug_drug_combinations() returns data.frame columns \"mo\", \"ab\", \"S\", \"SDD\", \"\", \"R\", \"total\".","code":""},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"function format() calculates resistance per bug-drug combination returns table ready reporting/publishing. Use combine_SI = TRUE (default) test R vs. S+combine_SI = FALSE test R+vs. S. table can also directly used R Markdown / Quarto without need e.g. knitr::kable().","code":""},{"path":"https://msberends.github.io/AMR/reference/bug_drug_combinations.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine Bug-Drug Combinations — bug_drug_combinations","text":"","code":"# example_isolates is a data set available in the AMR package. # run ?example_isolates for more info. example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # \\donttest{ x <- bug_drug_combinations(example_isolates) head(x) #> # A tibble: 6 × 8 #>   mo                ab        S   SDD     I     R    NI total #>   <chr>             <chr> <int> <int> <int> <int> <int> <int> #> 1 (unknown species) AMC      15     0     0     0     0    15 #> 2 (unknown species) AMK       0     0     0     0     0     0 #> 3 (unknown species) AMP      15     0     0     1     0    16 #> 4 (unknown species) AMX      15     0     0     1     0    16 #> 5 (unknown species) AZM       3     0     0     3     0     6 #> 6 (unknown species) CAZ       0     0     0     0     0     0 #> Use 'format()' on this result to get a publishable/printable format. format(x, translate_ab = \"name (atc)\") #> # A tibble: 39 × 12 #>    Group     Drug  CoNS  `E. coli` `E. faecalis` `K. pneumoniae` `P. aeruginosa` #>    <chr>     <chr> <chr> <chr>     <chr>         <chr>           <chr>           #>  1 \"Aminogl… Amik… \"100… \"  0.0% … \"100.0% (39/… \"\"              \"\"              #>  2 \"\"        Gent… \" 13… \"  2.0% … \"100.0% (39/… \" 10.3% (6/58)\" \"  0.0% (0/30)\" #>  3 \"\"        Kana… \"100… \"\"        \"100.0% (39/… \"\"              \"100.0% (30/30… #>  4 \"\"        Tobr… \" 78… \"  2.6% … \"100.0% (39/… \" 10.3% (6/58)\" \"  0.0% (0/30)\" #>  5 \"Antimyc… Rifa… \"\"    \"100.0% … \"\"            \"100.0% (58/58… \"100.0% (30/30… #>  6 \"Beta-la… Amox… \" 93… \" 50.0% … \"\"            \"100.0% (58/58… \"100.0% (30/30… #>  7 \"\"        Amox… \" 42… \" 13.1% … \"\"            \" 10.3% (6/58)\" \"100.0% (30/30… #>  8 \"\"        Ampi… \" 93… \" 50.0% … \"\"            \"100.0% (58/58… \"100.0% (30/30… #>  9 \"\"        Benz… \" 77… \"100.0% … \"\"            \"100.0% (58/58… \"100.0% (30/30… #> 10 \"\"        Fluc… \" 42… \"\"        \"\"            \"\"              \"\"              #> # ℹ 29 more rows #> # ℹ 5 more variables: `P. mirabilis` <chr>, `S. aureus` <chr>, #> #   `S. epidermidis` <chr>, `S. hominis` <chr>, `S. pneumoniae` <chr>  # Use FUN to change to transformation of microorganism codes bug_drug_combinations(example_isolates,   FUN = mo_gramstain ) #> # A tibble: 80 × 8 #>    mo            ab        S   SDD     I     R    NI total #>  * <chr>         <chr> <int> <int> <int> <int> <int> <int> #>  1 Gram-negative AMC     463     0    89   174     0   726 #>  2 Gram-negative AMK     251     0     0     5     0   256 #>  3 Gram-negative AMP     226     0     0   405     0   631 #>  4 Gram-negative AMX     226     0     0   405     0   631 #>  5 Gram-negative AZM       1     0     2   696     0   699 #>  6 Gram-negative CAZ     607     0     0    27     0   634 #>  7 Gram-negative CHL       1     0     0    30     0    31 #>  8 Gram-negative CIP     610     0    11    63     0   684 #>  9 Gram-negative CLI      18     0     1   709     0   728 #> 10 Gram-negative COL     309     0     0    78     0   387 #> # ℹ 70 more rows #> Use 'format()' on this result to get a publishable/printable format.  bug_drug_combinations(example_isolates,   FUN = function(x) {     ifelse(x == as.mo(\"Escherichia coli\"),       \"E. coli\",       \"Others\"     )   } ) #> # A tibble: 80 × 8 #>    mo      ab        S   SDD     I     R    NI total #>  * <chr>   <chr> <int> <int> <int> <int> <int> <int> #>  1 E. coli AMC     332     0    74    61     0   467 #>  2 E. coli AMK     171     0     0     0     0   171 #>  3 E. coli AMP     196     0     0   196     0   392 #>  4 E. coli AMX     196     0     0   196     0   392 #>  5 E. coli AZM       0     0     0   467     0   467 #>  6 E. coli CAZ     449     0     0    11     0   460 #>  7 E. coli CHL       0     0     0     0     0     0 #>  8 E. coli CIP     398     0     1    57     0   456 #>  9 E. coli CLI       0     0     0   467     0   467 #> 10 E. coli COL     240     0     0     0     0   240 #> # ℹ 70 more rows #> Use 'format()' on this result to get a publishable/printable format. # }"},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"Data set containing clinical breakpoints interpret MIC disk diffusion SIR values, according international guidelines. dataset contain breakpoints humans, 7 different animal groups, ECOFFs. breakpoints currently implemented: clinical microbiology: EUCAST 2011-2024 CLSI 2011-2024; veterinary microbiology: EUCAST 2021-2024 CLSI 2019-2024; ECOFFs (Epidemiological Cut-Values): EUCAST 2020-2024 CLSI 2022-2024. Use .sir() transform MICs disks measurements SIR values.","code":""},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"","code":"clinical_breakpoints"},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"tibble 34 063 observations 14 variables: guideline Name guideline type Breakpoint type, either \"ECOFF\", \"animal\", \"human\" host Host infectious agent. mostly useful veterinary breakpoints either \"ECOFF\", \"aquatic\", \"cats\", \"cattle\", \"dogs\", \"horse\", \"human\", \"poultry\", \"swine\" method Testing method, either \"DISK\" \"MIC\" site Body site breakpoint must applied, e.g. \"Oral\" \"Respiratory\" mo Microbial ID, see .mo() rank_index Taxonomic rank index mo 1 (subspecies/infraspecies) 5 (unknown microorganism) ab Antibiotic code used package, EARS-Net WHONET, see .ab() ref_tbl Info guideline rule can found disk_dose Dose used disk diffusion method breakpoint_S Lowest MIC value highest number millimetres leads \"S\" breakpoint_R Highest MIC value lowest number millimetres leads \"R\" uti logical value (TRUE/FALSE) indicate whether rule applies urinary tract infection (UTI) is_SDD logical value (TRUE/FALSE) indicate whether intermediate range \"S\" \"R\" interpreted \"SDD\", instead \"\". currently applies 24 breakpoints.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"different-types-of-breakpoints","dir":"Reference","previous_headings":"","what":"Different types of breakpoints","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"Supported types breakpoints ECOFF, animal, human. ECOFF (Epidemiological cut-) values used antimicrobial susceptibility testing differentiate wild-type non-wild-type strains bacteria fungi. default \"human\", can also set package option AMR_breakpoint_type. Use .sir(..., breakpoint_type = ...) interpret raw data using specific breakpoint type, e.g. .sir(..., breakpoint_type = \"ECOFF\") use ECOFFs.","code":""},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"imported-from-whonet","dir":"Reference","previous_headings":"","what":"Imported from WHONET","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"Clinical breakpoints package validated imported WHONET, free desktop Windows application developed supported Collaborating Centre Surveillance Antimicrobial Resistance. can read website. developers WHONET AMR package contact sharing work. highly appreciate great development WHONET software.","code":""},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"response-from-clsi-and-eucast","dir":"Reference","previous_headings":"","what":"Response from CLSI and EUCAST","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"CEO CLSI chairman EUCAST endorsed work public use AMR package (consequently use breakpoints) June 2023, future development distributing clinical breakpoints discussed meeting CLSI, EUCAST, , developers WHONET software, developers AMR package.","code":""},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"download","dir":"Reference","previous_headings":"","what":"Download","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository. allow machine reading EUCAST CLSI guidelines, almost impossible MS Excel PDF files distributed EUCAST CLSI, though initiatives started overcome burdens. NOTE: AMR package (WHONET software well) contains rather complex internal methods apply guidelines. example, breakpoints must applied certain species groups (case package available microorganisms.groups data set). important considered using breakpoints use.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/clinical_breakpoints.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with Clinical Breakpoints for SIR Interpretation — clinical_breakpoints","text":"","code":"clinical_breakpoints #> # A tibble: 34,063 × 14 #>    guideline   type  host  method site    mo            rank_index ab   ref_tbl  #>    <chr>       <chr> <chr> <chr>  <chr>   <mo>               <dbl> <ab> <chr>    #>  1 EUCAST 2024 human human DISK   NA      B_ACHRMB_XYLS          2 MEM  A. xylo… #>  2 EUCAST 2024 human human MIC    NA      B_ACHRMB_XYLS          2 MEM  A. xylo… #>  3 EUCAST 2024 human human DISK   NA      B_ACHRMB_XYLS          2 SXT  A. xylo… #>  4 EUCAST 2024 human human MIC    NA      B_ACHRMB_XYLS          2 SXT  A. xylo… #>  5 EUCAST 2024 human human DISK   NA      B_ACHRMB_XYLS          2 TZP  A. xylo… #>  6 EUCAST 2024 human human MIC    NA      B_ACHRMB_XYLS          2 TZP  A. xylo… #>  7 EUCAST 2024 human human DISK   NA      B_ACNTB                3 AMK  Acineto… #>  8 EUCAST 2024 human human DISK   Uncomp… B_ACNTB                3 AMK  Acineto… #>  9 EUCAST 2024 human human MIC    NA      B_ACNTB                3 AMK  Acineto… #> 10 EUCAST 2024 human human MIC    Uncomp… B_ACNTB                3 AMK  Acineto… #> # ℹ 34,053 more rows #> # ℹ 5 more variables: disk_dose <chr>, breakpoint_S <dbl>, breakpoint_R <dbl>, #> #   uti <lgl>, is_SDD <lgl>"},{"path":"https://msberends.github.io/AMR/reference/count.html","id":null,"dir":"Reference","previous_headings":"","what":"Count Available Isolates — count","title":"Count Available Isolates — count","text":"functions can used count resistant/susceptible microbial isolates. functions support quasiquotation pipes, can used summarise() dplyr package also support grouped variables, see Examples. count_resistant() used count resistant isolates, count_susceptible() used count susceptible isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Count Available Isolates — count","text":"","code":"count_resistant(..., only_all_tested = FALSE)  count_susceptible(..., only_all_tested = FALSE)  count_S(..., only_all_tested = FALSE)  count_SI(..., only_all_tested = FALSE)  count_I(..., only_all_tested = FALSE)  count_IR(..., only_all_tested = FALSE)  count_R(..., only_all_tested = FALSE)  count_all(..., only_all_tested = FALSE)  n_sir(..., only_all_tested = FALSE)  count_df(data, translate_ab = \"name\", language = get_AMR_locale(),   combine_SI = TRUE)"},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Count Available Isolates — count","text":"... one vectors (columns) antibiotic interpretations. transformed internally .sir() needed. only_all_tested (combination therapies, .e. using one variable ...): logical indicate isolates must tested antibiotics, see section Combination Therapy data data.frame containing columns class sir (see .sir()) translate_ab column name antibiotics data set translate antibiotic abbreviations , using ab_property() language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. combine_SI logical indicate whether values S, SDD, must merged one, output consists S+SDD+vs. R (susceptible vs. resistant) - default TRUE","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Count Available Isolates — count","text":"integer","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Count Available Isolates — count","text":"functions meant count isolates. Use resistance()/susceptibility() functions calculate microbial resistance/susceptibility. function count_resistant() equal function count_R(). function count_susceptible() equal function count_SI(). function n_sir() alias count_all(). can used count available isolates, .e. input antibiotics available result (S, R). use equal n_distinct(). function equal count_susceptible(...) + count_resistant(...). function count_df() takes variable data sir class (created .sir()) counts number S's, 's R's. also supports grouped variables. function sir_df() works exactly like count_df(), adds percentage S, R.","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Count Available Isolates — count","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"combination-therapy","dir":"Reference","previous_headings":"","what":"Combination Therapy","title":"Count Available Isolates — count","text":"using one variable ... (= combination therapy), use only_all_tested count isolates tested antibiotics/variables test . See example two antibiotics, Drug Drug B, susceptibility() works calculate %SI:   Please note , combination therapies, only_all_tested = TRUE applies :   , combination therapies, only_all_tested = FALSE applies :   Using only_all_tested impact using one antibiotic input.","code":"--------------------------------------------------------------------                     only_all_tested = FALSE  only_all_tested = TRUE                     -----------------------  -----------------------  Drug A    Drug B   considered   considered  considered   considered                     susceptible    tested    susceptible    tested --------  --------  -----------  ----------  -----------  ----------  S or I    S or I        X            X           X            X    R       S or I        X            X           X            X   <NA>     S or I        X            X           -            -  S or I      R           X            X           X            X    R         R           -            X           -            X   <NA>       R           -            -           -            -  S or I     <NA>         X            X           -            -    R        <NA>         -            -           -            -   <NA>      <NA>         -            -           -            - -------------------------------------------------------------------- count_S()    +   count_I()    +   count_R()    = count_all()   proportion_S() + proportion_I() + proportion_R() = 1 count_S()    +   count_I()    +   count_R()    >= count_all()   proportion_S() + proportion_I() + proportion_R() >= 1"},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/count.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Count Available Isolates — count","text":"","code":"# example_isolates is a data set available in the AMR package. # run ?example_isolates for more info.  # base R ------------------------------------------------------------ count_resistant(example_isolates$AMX) # counts \"R\" #> [1] 804 count_susceptible(example_isolates$AMX) # counts \"S\" and \"I\" #> [1] 546 count_all(example_isolates$AMX) # counts \"S\", \"I\" and \"R\" #> [1] 1350  # be more specific count_S(example_isolates$AMX) #> Using count_S() is discouraged; use count_susceptible() instead to also #> consider \"I\" and \"SDD\" being susceptible. This note will be shown once for #> this session. #> [1] 543 count_SI(example_isolates$AMX) #> Note that count_SI() will also count dose-dependent susceptibility, #> 'SDD'. This note will be shown once for this session. #> [1] 546 count_I(example_isolates$AMX) #> Note that count_I() will also count dose-dependent susceptibility, 'SDD'. #> This note will be shown once for this session. #> [1] 3 count_IR(example_isolates$AMX) #> Using count_IR() is discouraged; use count_resistant() instead to not #> consider \"I\" and \"SDD\" being resistant. This note will be shown once for #> this session. #> [1] 807 count_R(example_isolates$AMX) #> [1] 804  # Count all available isolates count_all(example_isolates$AMX) #> [1] 1350 n_sir(example_isolates$AMX) #> [1] 1350  # n_sir() is an alias of count_all(). # Since it counts all available isolates, you can # calculate back to count e.g. susceptible isolates. # These results are the same: count_susceptible(example_isolates$AMX) #> [1] 546 susceptibility(example_isolates$AMX) * n_sir(example_isolates$AMX) #> [1] 546  # dplyr ------------------------------------------------------------- # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     group_by(ward) %>%     summarise(       R = count_R(CIP),       I = count_I(CIP),       S = count_S(CIP),       n1 = count_all(CIP), # the actual total; sum of all three       n2 = n_sir(CIP), # same - analogous to n_distinct       total = n()     ) # NOT the number of tested isolates!    # Number of available isolates for a whole antibiotic class   # (i.e., in this data set columns GEN, TOB, AMK, KAN)   example_isolates %>%     group_by(ward) %>%     summarise(across(aminoglycosides(), n_sir))    # Count co-resistance between amoxicillin/clav acid and gentamicin,   # so we can see that combination therapy does a lot more than mono therapy.   # Please mind that `susceptibility()` calculates percentages right away instead.   example_isolates %>% count_susceptible(AMC) # 1433   example_isolates %>% count_all(AMC) # 1879    example_isolates %>% count_susceptible(GEN) # 1399   example_isolates %>% count_all(GEN) # 1855    example_isolates %>% count_susceptible(AMC, GEN) # 1764   example_isolates %>% count_all(AMC, GEN) # 1936    # Get number of S+I vs. R immediately of selected columns   example_isolates %>%     select(AMX, CIP) %>%     count_df(translate = FALSE)    # It also supports grouping variables   example_isolates %>%     select(ward, AMX, CIP) %>%     group_by(ward) %>%     count_df(translate = FALSE) } #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> # A tibble: 12 × 4 #>    ward       antibiotic interpretation value #>  * <chr>      <chr>      <ord>          <int> #>  1 Clinical   AMX        SI               357 #>  2 Clinical   AMX        R                487 #>  3 Clinical   CIP        SI               741 #>  4 Clinical   CIP        R                128 #>  5 ICU        AMX        SI               158 #>  6 ICU        AMX        R                270 #>  7 ICU        CIP        SI               362 #>  8 ICU        CIP        R                 85 #>  9 Outpatient AMX        SI                31 #> 10 Outpatient AMX        R                 47 #> 11 Outpatient CIP        SI                78 #> 12 Outpatient CIP        R                 15 # }"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":null,"dir":"Reference","previous_headings":"","what":"Define Custom EUCAST Rules — custom_eucast_rules","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"Define custom EUCAST rules organisation specific analysis use output function eucast_rules().","code":""},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"","code":"custom_eucast_rules(...)"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"... rules formula notation, see instructions, Examples","code":""},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"list containing custom rules","code":""},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"organisations adoption EUCAST rules. function can used define custom EUCAST rules used eucast_rules() function.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"basics","dir":"Reference","previous_headings":"","what":"Basics","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"familiar case_when() function dplyr package, recognise input method set rules. Rules must set using R considers 'formula notation'. rule written tilde (~) consequence rule written tilde:   two custom EUCAST rules: TZP (piperacillin/tazobactam) \"S\", aminopenicillins (ampicillin amoxicillin) must made \"S\", TZP \"R\", aminopenicillins must made \"R\". rules can also printed console, immediately clear work:   rules (part tilde, example TZP == \"S\" TZP == \"R\") must evaluable data set: able run filter data set without errors. means example column TZP must exist. create sample data set test rules set:","code":"x <- custom_eucast_rules(TZP == \"S\" ~ aminopenicillins == \"S\",                          TZP == \"R\" ~ aminopenicillins == \"R\") 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) 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) #>                      mo TZP ampi cipro #> 1      Escherichia coli   R    R     S #> 2 Klebsiella pneumoniae   R    R     S"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"using-taxonomic-properties-in-rules","dir":"Reference","previous_headings":"","what":"Using taxonomic properties in rules","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"one exception columns used rules: column names microorganisms data set can also used, exist data set. column names : \"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\", \"snomed\". Thus, next example work well, despite fact df data set contain column genus:","code":"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) #>                      mo TZP ampi cipro #> 1      Escherichia coli   R    S     S #> 2 Klebsiella pneumoniae   R    R     S"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"usage-of-multiple-antibiotics-and-antibiotic-group-names","dir":"Reference","previous_headings":"","what":"Usage of multiple antibiotics and antibiotic group names","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"can define antibiotic groups instead single antibiotics rule consequence, part tilde (~). examples , antibiotic group aminopenicillins includes ampicillin amoxicillin. Rules can also applied multiple antibiotics antibiotic groups simultaneously. Use c() function combine multiple antibiotics. instance, following example sets aminopenicillins ureidopenicillins \"R\" column TZP (piperacillin/tazobactam) \"R\":   34 antibiotic groups allowed rules (case-insensitive) can used combination: aminoglycosides(amikacin, amikacin/fosfomycin, apramycin, arbekacin, astromicin, bekanamycin, dibekacin, framycetin, gentamicin, gentamicin-high, habekacin, hygromycin, isepamicin, kanamycin, kanamycin-high, kanamycin/cephalexin, micronomicin, neomycin, netilmicin, pentisomicin, plazomicin, propikacin, ribostamycin, sisomicin, streptoduocin, streptomycin, streptomycin-high, tobramycin, tobramycin-high) aminopenicillins(amoxicillin 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, 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, simvastatin/fenofibrate, sodium aminosalicylate, streptomycin/isoniazid, terizidone, thioacetazone, thioacetazone/isoniazid, tiocarlide, viomycin) 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, 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/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening, 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, 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, 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, tebipenem, temocillin, ticarcillin, ticarcillin/clavulanic acid, tigemonam) betalactams_with_inhibitor(amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin/sulbactam, aztreonam/avibactam, aztreonam/nacubactam, cefepime/amikacin, cefepime/clavulanic acid, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefoperazone/sulbactam, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefpodoxime/clavulanic acid, ceftaroline/avibactam, ceftazidime/avibactam, ceftazidime/clavulanic acid, ceftolozane/tazobactam, ceftriaxone/beta-lactamase inhibitor, imipenem/relebactam, meropenem/nacubactam, meropenem/vaborbactam, mezlocillin/sulbactam, penicillin/novobiocin, penicillin/sulbactam, piperacillin/sulbactam, piperacillin/tazobactam, ticarcillin/clavulanic acid) carbapenems(biapenem, doripenem, ertapenem, imipenem, imipenem/EDTA, imipenem/relebactam, meropenem, meropenem/nacubactam, meropenem/vaborbactam, panipenem, razupenem, ritipenem, ritipenem acoxil, 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/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening, 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, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, loracarbef) cephalosporins_1st(cefacetrile, cefadroxil, cefalexin, cefaloridine, cefalotin, cefapirin, cefatrizine, cefazedone, cefazolin, cefroxadine, ceftezole, cephradine) cephalosporins_2nd(cefaclor, cefamandole, cefmetazole, cefonicid, ceforanide, cefotetan, cefotiam, cefoxitin, cefoxitin screening, cefprozil, cefuroxime, cefuroxime axetil, loracarbef) cephalosporins_3rd(cefcapene, cefcapene pivoxil, cefdinir, cefditoren, cefditoren pivoxil, cefetamet, cefetamet pivoxil, cefixime, cefmenoxime, cefodizime, cefoperazone, cefoperazone/sulbactam, cefotaxime, 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, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, latamoxef) cephalosporins_4th(cefepime, cefepime/amikacin, cefepime/clavulanic acid, cefepime/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetecol, cefoselis, cefozopran, cefpirome, cefquinome) cephalosporins_5th(ceftaroline, ceftaroline/avibactam, ceftobiprole, ceftobiprole medocaril, 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/nacubactam, cefepime/tazobactam, cefepime/zidebactam, cefetamet, cefetamet pivoxil, cefetecol, cefetrizole, cefiderocol, cefixime, cefmenoxime, cefmetazole, cefodizime, cefonicid, cefoperazone, cefoperazone/sulbactam, ceforanide, cefoselis, cefotaxime, cefotaxime/clavulanic acid, cefotaxime/sulbactam, cefotetan, cefotiam, cefotiam hexetil, cefovecin, cefoxitin, cefoxitin screening, 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, ceftiofur, ceftizoxime, ceftizoxime alapivoxil, ceftobiprole, ceftobiprole medocaril, ceftolozane/tazobactam, ceftriaxone, ceftriaxone/beta-lactamase inhibitor, cefuroxime, cefuroxime axetil, cephradine, latamoxef, loracarbef) fluoroquinolones(besifloxacin, ciprofloxacin, clinafloxacin, danofloxacin, delafloxacin, difloxacin, enoxacin, enrofloxacin, finafloxacin, fleroxacin, garenoxacin, gatifloxacin, gemifloxacin, grepafloxacin, lascufloxacin, levofloxacin, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nifuroquine, norfloxacin, ofloxacin, orbifloxacin, pazufloxacin, pefloxacin, pradofloxacin, premafloxacin, prulifloxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, trovafloxacin) glycopeptides(avoparcin, dalbavancin, norvancomycin, oritavancin, ramoplanin, teicoplanin, teicoplanin-macromethod, telavancin, vancomycin, vancomycin-macromethod) glycopeptides_except_lipo(avoparcin, norvancomycin, ramoplanin, teicoplanin, teicoplanin-macromethod, vancomycin, vancomycin-macromethod) isoxazolylpenicillins(cloxacillin, dicloxacillin, flucloxacillin, meticillin, oxacillin) lincosamides(clindamycin, lincomycin, pirlimycin) lipoglycopeptides(dalbavancin, oritavancin, telavancin) macrolides(acetylmidecamycin, acetylspiramycin, azithromycin, clarithromycin, dirithromycin, erythromycin, flurithromycin, gamithromycin, josamycin, kitasamycin, meleumycin, midecamycin, miocamycin, nafithromycin, oleandomycin, rokitamycin, roxithromycin, solithromycin, spiramycin, telithromycin, tildipirosin, tilmicosin, troleandomycin, tulathromycin, tylosin, tylvalosin) monobactams(aztreonam, aztreonam/avibactam, aztreonam/nacubactam, carumonam, tigemonam) nitrofurans(furazidin, furazolidone, nifurtoinol, nitrofurantoin, nitrofurazone) oxazolidinones(cadazolid, cycloserine, linezolid, tedizolid, thiacetazone) penicillins(amoxicillin, amoxicillin/clavulanic acid, amoxicillin/sulbactam, ampicillin, ampicillin/sulbactam, apalcillin, aspoxicillin, azidocillin, azlocillin, bacampicillin, benzathine benzylpenicillin, benzathine phenoxymethylpenicillin, benzylpenicillin, carbenicillin, carindacillin, ciclacillin, clometocillin, cloxacillin, dicloxacillin, epicillin, flucloxacillin, hetacillin, lenampicillin, mecillinam, metampicillin, meticillin, mezlocillin, mezlocillin/sulbactam, nafcillin, oxacillin, penamecillin, penicillin/novobiocin, penicillin/sulbactam, pheneticillin, phenoxymethylpenicillin, piperacillin, piperacillin/sulbactam, piperacillin/tazobactam, piridicillin, pivampicillin, pivmecillinam, procaine benzylpenicillin, propicillin, sarmoxicillin, sulbenicillin, sultamicillin, talampicillin, temocillin, ticarcillin, ticarcillin/clavulanic acid) phenicols(chloramphenicol, florfenicol, thiamphenicol) polymyxins(colistin, polymyxin B, 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, levonadifloxacin, lomefloxacin, marbofloxacin, metioxate, miloxacin, moxifloxacin, nadifloxacin, nalidixic acid, nemonoxacin, nifuroquine, nitroxoline, norfloxacin, ofloxacin, orbifloxacin, oxolinic acid, pazufloxacin, pefloxacin, pipemidic acid, piromidic acid, pradofloxacin, premafloxacin, prulifloxacin, rosoxacin, rufloxacin, sarafloxacin, sitafloxacin, sparfloxacin, temafloxacin, tilbroquinol, tioxacin, tosufloxacin, trovafloxacin) rifamycins(rifabutin, rifampicin, rifampicin/ethambutol/isoniazid, rifampicin/isoniazid, rifampicin/pyrazinamide/ethambutol/isoniazid, rifampicin/pyrazinamide/isoniazid, rifamycin, rifapentine) streptogramins(pristinamycin quinupristin/dalfopristin) tetracyclines(cetocycline, chlortetracycline, clomocycline, demeclocycline, doxycycline, eravacycline, lymecycline, metacycline, minocycline, omadacycline, oxytetracycline, penimepicycline, rolitetracycline, sarecycline, tetracycline, tigecycline) tetracyclines_except_tgc(cetocycline, chlortetracycline, clomocycline, demeclocycline, doxycycline, eravacycline, lymecycline, metacycline, minocycline, omadacycline, oxytetracycline, penimepicycline, rolitetracycline, sarecycline, tetracycline) trimethoprims(brodimoprim, 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, trimethoprim/sulfamethoxazole) ureidopenicillins(azlocillin, mezlocillin, piperacillin, piperacillin/tazobactam)","code":"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)"},{"path":"https://msberends.github.io/AMR/reference/custom_eucast_rules.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Define Custom EUCAST Rules — custom_eucast_rules","text":"","code":"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), ampicillin (AMP) #>  #>   2. If AMC is  I  and genus is \"Klebsiella\" then set to  I : #>      amoxicillin (AMX), 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,   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  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'…  # 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), ampicillin (AMP) #>  #>   2. If AMC is  I  and genus is \"Klebsiella\" then set to  I : #>      amoxicillin (AMX), 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), tebipenem (TBP)"},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"EUCAST breakpoints used package based dosages data set. can retrieved eucast_dosage().","code":""},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"","code":"dosage"},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"tibble 503 observations 9 variables: ab Antibiotic ID used package (AMC), using official EARS-Net (European Antimicrobial Resistance Surveillance Network) codes available name Official name antimicrobial drug used WHONET/EARS-Net type Type dosage, either \"high_dosage\", \"standard_dosage\", \"uncomplicated_uti\" dose Dose, \"2 g\" \"25 mg/kg\" dose_times Number times dose must administered administration Route administration, either \"im\", \"iv\", \"oral\" notes Additional dosage notes original_txt Original text PDF file EUCAST eucast_version Version number EUCAST Clinical Breakpoints guideline dosages apply, either 13, 12, 11","code":""},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/dosage.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with Treatment Dosages as Defined by EUCAST — dosage","text":"","code":"dosage #> # A tibble: 503 × 9 #>    ab   name            type  dose  dose_times administration notes original_txt #>    <ab> <chr>           <chr> <chr>      <int> <chr>          <chr> <chr>        #>  1 AMK  Amikacin        stan… 25-3…          1 iv             \"\"    25-30 mg/kg… #>  2 AMX  Amoxicillin     high… 2 g            6 iv             \"\"    2 g x 6 iv   #>  3 AMX  Amoxicillin     stan… 1 g            3 iv             \"\"    1 g x 3-4 iv #>  4 AMX  Amoxicillin     high… 0.75…          3 oral           \"\"    0.75-1 g x … #>  5 AMX  Amoxicillin     stan… 0.5 g          3 oral           \"\"    0.5 g x 3 o… #>  6 AMX  Amoxicillin     unco… 0.5 g          3 oral           \"\"    0.5 g x 3 o… #>  7 AMC  Amoxicillin/cl… high… 2 g …          3 iv             \"\"    (2 g amoxic… #>  8 AMC  Amoxicillin/cl… stan… 1 g …          3 iv             \"\"    (1 g amoxic… #>  9 AMC  Amoxicillin/cl… high… 0.87…          3 oral           \"\"    (0.875 g am… #> 10 AMC  Amoxicillin/cl… stan… 0.5 …          3 oral           \"\"    (0.5 g amox… #> # ℹ 493 more rows #> # ℹ 1 more variable: eucast_version <dbl>"},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":null,"dir":"Reference","previous_headings":"","what":"Apply EUCAST Rules — eucast_rules","title":"Apply EUCAST Rules — eucast_rules","text":"Apply rules clinical breakpoints notes expected resistant phenotypes defined European Committee Antimicrobial Susceptibility Testing (EUCAST, https://www.eucast.org), see Source. Use eucast_dosage() get data.frame advised dosages certain bug-drug combination, based dosage data set. improve interpretation antibiogram EUCAST rules applied, non-EUCAST rules can applied default, see Details.","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Apply EUCAST Rules — eucast_rules","text":"","code":"eucast_rules(x, col_mo = NULL, info = interactive(),   rules = getOption(\"AMR_eucastrules\", default = c(\"breakpoints\", \"expert\")),   verbose = FALSE, version_breakpoints = 12, version_expertrules = 3.3,   ampc_cephalosporin_resistance = NA, only_sir_columns = FALSE,   custom_rules = NULL, overwrite = TRUE, ...)  eucast_dosage(ab, administration = \"iv\", version_breakpoints = 12)"},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Apply EUCAST Rules — eucast_rules","text":"EUCAST Expert Rules. Version 2.0, 2012. Leclercq et al. EUCAST expert rules antimicrobial susceptibility testing. Clin Microbiol Infect. 2013;19(2):141-60; doi:10.1111/j.1469-0691.2011.03703.x EUCAST Expert Rules, Intrinsic Resistance Exceptional Phenotypes Tables. Version 3.1, 2016. (link) EUCAST Intrinsic Resistance Unusual Phenotypes. Version 3.2, 2020. (link) EUCAST Intrinsic Resistance Unusual Phenotypes. Version 3.3, 2021. (link) EUCAST Breakpoint tables interpretation MICs zone diameters. Version 9.0, 2019. (link) EUCAST Breakpoint tables interpretation MICs zone diameters. Version 10.0, 2020. (link) EUCAST Breakpoint tables interpretation MICs zone diameters. Version 11.0, 2021. (link) EUCAST Breakpoint tables interpretation MICs zone diameters. Version 12.0, 2022. (link)","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Apply EUCAST Rules — eucast_rules","text":"x data set antibiotic columns, amox, AMX AMC col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). info logical indicate whether progress printed console - default print interactive sessions rules character vector specifies rules applied. Must one \"breakpoints\", \"expert\", \"\", \"custom\", \"\", defaults c(\"breakpoints\", \"expert\"). default value can set another value using package option AMR_eucastrules: options(AMR_eucastrules = \"\"). using \"custom\", sure fill argument custom_rules . Custom rules can created custom_eucast_rules(). verbose logical turn Verbose mode (default ). Verbose mode, function apply rules data, instead returns data set logbook form extensive info rows columns effected way. Using Verbose mode takes lot time. version_breakpoints version number use EUCAST Clinical Breakpoints guideline. Can \"12.0\", \"11.0\", \"10.0\". version_expertrules version number use EUCAST Expert Rules Intrinsic Resistance guideline. Can \"3.3\", \"3.2\", \"3.1\". ampc_cephalosporin_resistance character value applied cefotaxime, ceftriaxone ceftazidime AmpC de-repressed cephalosporin-resistant mutants - default NA. Currently works version_expertrules 3.2 higher; version 'EUCAST Expert Rules Enterobacterales' state results cefotaxime, ceftriaxone ceftazidime reported note, results suppressed (emptied) three drugs. value NA (default) argument remove results three drugs, e.g. value \"R\" make results drugs resistant. Use NULL FALSE alter results three drugs AmpC de-repressed cephalosporin-resistant mutants. Using TRUE equal using \"R\".  EUCAST Expert Rules v3.2, rule applies : Citrobacter braakii, Citrobacter freundii, Citrobacter gillenii, Citrobacter murliniae, Citrobacter rodenticum, Citrobacter sedlakii, Citrobacter werkmanii, Citrobacter youngae, Enterobacter, Hafnia alvei, Klebsiella aerogenes, Morganella morganii, Providencia, Serratia. only_sir_columns logical indicate whether antibiotic columns must detected transformed class sir (see .sir()) beforehand (default FALSE) custom_rules custom rules apply, created custom_eucast_rules() overwrite logical indicate whether non-NA values must overwritten (defaults TRUE). FALSE, NA values changed. ... column name antibiotic, see section Antibiotics ab (vector ) text can coerced valid antibiotic drug code .ab() administration route administration, either \"im\", \"iv\", \"oral\"","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Apply EUCAST Rules — eucast_rules","text":"input x, possibly edited values antibiotics. , verbose = TRUE, data.frame original new values affected bug-drug combinations.","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Apply EUCAST Rules — eucast_rules","text":"Note: function translate MIC values SIR values. Use .sir() . Note: ampicillin (AMP, J01CA01) available amoxicillin (AMX, J01CA04) , latter used rules dependency ampicillin. drugs interchangeable comes expression antimicrobial resistance. file containing EUCAST rules located : https://github.com/msberends/AMR/blob/main/data-raw/eucast_rules.tsv.  Note: Old taxonomic names replaced current taxonomy applicable. example, Ochrobactrum anthropi renamed Brucella anthropi 2020; original EUCAST rules v3.1 v3.2 yet contain new taxonomic name. AMR package contains full microbial taxonomy updated June 24th, 2024, see microorganisms.","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"custom-rules","dir":"Reference","previous_headings":"","what":"Custom Rules","title":"Apply EUCAST Rules — eucast_rules","text":"Custom rules can created using custom_eucast_rules(), e.g.:","code":"x <- custom_eucast_rules(AMC == \"R\" & genus == \"Klebsiella\" ~ aminopenicillins == \"R\",                          AMC == \"I\" & genus == \"Klebsiella\" ~ aminopenicillins == \"I\")  eucast_rules(example_isolates, rules = \"custom\", custom_rules = x)"},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"-other-rules","dir":"Reference","previous_headings":"","what":"'Other' Rules","title":"Apply EUCAST Rules — eucast_rules","text":"processing, two non-EUCAST rules drug combinations can applied improve efficacy EUCAST rules, reliability data (analysis). rules : drug enzyme inhibitor set S drug without enzyme inhibitor S drug without enzyme inhibitor set R drug enzyme inhibitor R Important examples include amoxicillin amoxicillin/clavulanic acid, trimethoprim trimethoprim/sulfamethoxazole. Needless say, rules work, drugs must available data set. Since rules officially approved EUCAST, applied default. use rules, include \"\" rules argument, use eucast_rules(..., rules = \"\"). can also set package option AMR_eucastrules, .e. run options(AMR_eucastrules = \"\").","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"antibiotics","dir":"Reference","previous_headings":"","what":"Antibiotics","title":"Apply EUCAST Rules — eucast_rules","text":"define antibiotics column names, leave determine automatically guess_ab_col() input text (case-insensitive), use NULL skip column (e.g. TIC = NULL skip ticarcillin). Manually defined non-existing columns skipped warning. following antibiotics eligible functions eucast_rules() mdro(). shown format 'name (antimicrobial ID, ATC code)', sorted alphabetically: Amikacin (AMK, J01GB06), amoxicillin (AMX, J01CA04), amoxicillin/clavulanic acid (AMC, J01CR02), ampicillin (AMP, J01CA01), ampicillin/sulbactam (SAM, J01CR01), apramycin (APR, QA07AA92), arbekacin (ARB, J01GB12), aspoxicillin (APX, J01CA19), azidocillin (AZD, J01CE04), azithromycin (AZM, J01FA10), azlocillin (AZL, J01CA09), aztreonam (ATM, J01DF01), bacampicillin (BAM, J01CA06), bekanamycin (BEK, J01GB13), benzathine benzylpenicillin (BNB, J01CE08), benzathine phenoxymethylpenicillin (BNP, J01CE10), benzylpenicillin (PEN, J01CE01), besifloxacin (BES, S01AE08), biapenem (BIA, J01DH05), carbenicillin (CRB, J01CA03), carindacillin (CRN, J01CA05), carumonam (CAR, J01DF02), cefacetrile (CAC, J01DB10), cefaclor (CEC, J01DC04), cefadroxil (CFR, J01DB05), cefalexin (LEX, J01DB01), cefaloridine (RID, J01DB02), cefalotin (CEP, J01DB03), cefamandole (MAN, J01DC03), cefapirin (HAP, J01DB08), cefatrizine (CTZ, J01DB07), cefazedone (CZD, J01DB06), cefazolin (CZO, J01DB04), cefcapene (CCP, J01DD17), cefdinir (CDR, J01DD15), cefditoren (DIT, J01DD16), cefepime (FEP, J01DE01), cefepime/amikacin (CFA, J01RA06), cefetamet (CAT, J01DD10), cefiderocol (FDC, J01DI04), cefixime (CFM, J01DD08), cefmenoxime (CMX, J01DD05), cefmetazole (CMZ, J01DC09), cefodizime (DIZ, J01DD09), cefonicid (CID, J01DC06), cefoperazone (CFP, J01DD12), cefoperazone/sulbactam (CSL, J01DD62), ceforanide (CND, J01DC11), cefotaxime (CTX, J01DD01), cefotaxime/clavulanic acid (CTC, J01DD51), cefotetan (CTT, J01DC05), cefotiam (CTF, J01DC07), cefovecin (FOV, QJ01DD91), cefoxitin (FOX, J01DC01), cefozopran (ZOP, J01DE03), cefpiramide (CPM, J01DD11), cefpirome (CPO, J01DE02), cefpodoxime (CPD, J01DD13), cefprozil (CPR, J01DC10), cefquinome (CEQ, QG51AA07), cefroxadine (CRD, J01DB11), cefsulodin (CFS, J01DD03), ceftaroline (CPT, J01DI02), ceftazidime (CAZ, J01DD02), ceftazidime/clavulanic acid (CCV, J01DD52), cefteram (CEM, J01DD18), ceftezole (CTL, J01DB12), ceftibuten (CTB, J01DD14), ceftiofur (TIO, QJ01DD90), ceftizoxime (CZX, J01DD07), ceftobiprole medocaril (CFM1, J01DI01), ceftolozane/tazobactam (CZT, J01DI54), ceftriaxone (CRO, J01DD04), ceftriaxone/beta-lactamase inhibitor (CEB, J01DD63), cefuroxime (CXM, J01DC02), cephradine (CED, J01DB09), chloramphenicol (CHL, J01BA01), ciprofloxacin (CIP, J01MA02), clarithromycin (CLR, J01FA09), clindamycin (CLI, J01FF01), clometocillin (CLM, J01CE07), cloxacillin (CLO, J01CF02), colistin (COL, J01XB01), cycloserine (CYC, J04AB01), dalbavancin (DAL, J01XA04), danofloxacin (DAN, QJ01MA92), daptomycin (DAP, J01XX09), delafloxacin (DFX, J01MA23), dibekacin (DKB, J01GB09), dicloxacillin (DIC, J01CF01), difloxacin (DIF, QJ01MA94), dirithromycin (DIR, J01FA13), doripenem (DOR, J01DH04), doxycycline (DOX, J01AA02), enoxacin (ENX, J01MA04), enrofloxacin (ENR, QJ01MA90), epicillin (EPC, J01CA07), ertapenem (ETP, J01DH03), erythromycin (ERY, J01FA01), fleroxacin (FLE, J01MA08), flucloxacillin (FLC, J01CF05), flurithromycin (FLR1, J01FA14), fosfomycin (FOS, J01XX01), framycetin (FRM, D09AA01), fusidic acid (FUS, J01XC01), gamithromycin (GAM, QJ01FA95), garenoxacin (GRN, J01MA19), gatifloxacin (GAT, J01MA16), gemifloxacin (GEM, J01MA15), gentamicin (GEN, J01GB03), grepafloxacin (GRX, J01MA11), hetacillin (HET, J01CA18), imipenem (IPM, J01DH51), imipenem/relebactam (IMR, J01DH56), isepamicin (ISE, J01GB11), josamycin (JOS, J01FA07), kanamycin (KAN, J01GB04), kitasamycin (KIT, QJ01FA93), lascufloxacin (LSC, J01MA25), latamoxef (LTM, J01DD06), levofloxacin (LVX, J01MA12), levonadifloxacin (LND, J01MA24), lincomycin (LIN, J01FF02), linezolid (LNZ, J01XX08), lomefloxacin (LOM, J01MA07), loracarbef (LOR, J01DC08), marbofloxacin (MAR, QJ01MA93), mecillinam (MEC, J01CA11), meropenem (MEM, J01DH02), meropenem/vaborbactam (MEV, J01DH52), metampicillin (MTM, J01CA14), meticillin (MET, J01CF03), mezlocillin (MEZ, J01CA10), micronomicin (MCR, S01AA22), midecamycin (MID, J01FA03), minocycline (MNO, J01AA08), miocamycin (MCM, J01FA11), moxifloxacin (MFX, J01MA14), nadifloxacin (NAD, D10AF05), nafcillin (NAF, J01CF06), nalidixic acid (NAL, J01MB02), neomycin (NEO, J01GB05), netilmicin (NET, J01GB07), nitrofurantoin (NIT, J01XE01), norfloxacin (, J01MA06), novobiocin (NOV, QJ01XX95), ofloxacin (OFX, J01MA01), oleandomycin (OLE, J01FA05), orbifloxacin (ORB, QJ01MA95), oritavancin (ORI, J01XA05), oxacillin (OXA, J01CF04), panipenem (PAN, J01DH55), pazufloxacin (PAZ, J01MA18), pefloxacin (PEF, J01MA03), penamecillin (PNM, J01CE06), pheneticillin (PHE, J01CE05), phenoxymethylpenicillin (PHN, J01CE02), piperacillin (PIP, J01CA12), piperacillin/tazobactam (TZP, J01CR05), pirlimycin (PRL, QJ51FF90), pivampicillin (PVM, J01CA02), pivmecillinam (PME, J01CA08), plazomicin (PLZ, J01GB14), polymyxin B (PLB, J01XB02), pradofloxacin (PRA, QJ01MA97), pristinamycin (PRI, J01FG01), procaine benzylpenicillin (PRB, J01CE09), propicillin (PRP, J01CE03), prulifloxacin (PRU, J01MA17), quinupristin/dalfopristin (QDA, QJ01FG02), ribostamycin (RST, J01GB10), rifampicin (RIF, J04AB02), rokitamycin (ROK, J01FA12), roxithromycin (RXT, J01FA06), rufloxacin (RFL, J01MA10), sarafloxacin (SAR, QJ01MA98), sisomicin (SIS, J01GB08), sitafloxacin (SIT, J01MA21), solithromycin (SOL, J01FA16), sparfloxacin (SPX, J01MA09), spiramycin (SPI, J01FA02), streptoduocin (STR, J01GA02), streptomycin (STR1, J01GA01), sulbenicillin (SBC, J01CA16), sulfadiazine (SDI, J01EC02), sulfadiazine/trimethoprim (SLT1, J01EE02), sulfadimethoxine (SUD, J01ED01), sulfadimidine (SDM, J01EB03), sulfadimidine/trimethoprim (SLT2, J01EE05), sulfafurazole (SLF, J01EB05), sulfaisodimidine (SLF1, J01EB01), sulfalene (SLF2, J01ED02), sulfamazone (SZO, J01ED09), sulfamerazine (SLF3, J01ED07), sulfamerazine/trimethoprim (SLT3, J01EE07), sulfamethizole (SLF4, J01EB02), sulfamethoxazole (SMX, J01EC01), sulfamethoxypyridazine (SLF5, J01ED05), sulfametomidine (SLF6, J01ED03), sulfametoxydiazine (SLF7, J01ED04), sulfametrole/trimethoprim (SLT4, J01EE03), sulfamoxole (SLF8, J01EC03), sulfamoxole/trimethoprim (SLT5, J01EE04), sulfanilamide (SLF9, J01EB06), sulfaperin (SLF10, J01ED06), sulfaphenazole (SLF11, J01ED08), sulfapyridine (SLF12, J01EB04), sulfathiazole (SUT, J01EB07), sulfathiourea (SLF13, J01EB08), sultamicillin (SLT6, J01CR04), talampicillin (TAL, J01CA15), tebipenem (TBP, J01DH06), tedizolid (TZD, J01XX11), teicoplanin (TEC, J01XA02), telavancin (TLV, J01XA03), telithromycin (TLT, J01FA15), temafloxacin (TMX, J01MA05), temocillin (TEM, J01CA17), tetracycline (TCY, J01AA07), ticarcillin (TIC, J01CA13), ticarcillin/clavulanic acid (TCC, J01CR03), tigecycline (TGC, J01AA12), tilbroquinol (TBQ, P01AA05), tildipirosin (TIP, QJ01FA96), tilmicosin (TIL, QJ01FA91), tobramycin (TOB, J01GB01), tosufloxacin (TFX, J01MA22), trimethoprim (TMP, J01EA01), trimethoprim/sulfamethoxazole (SXT, J01EE01), troleandomycin (TRL, J01FA08), trovafloxacin (TVA, J01MA13), tulathromycin (TUL, QJ01FA94), tylosin (TYL, QJ01FA90), tylvalosin (TYL1, QJ01FA92), vancomycin (VAN, J01XA01)","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Apply EUCAST Rules — eucast_rules","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/eucast_rules.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Apply EUCAST Rules — eucast_rules","text":"","code":"# \\donttest{ a <- data.frame(   mo = c(     \"Staphylococcus aureus\",     \"Enterococcus faecalis\",     \"Escherichia coli\",     \"Klebsiella pneumoniae\",     \"Pseudomonas aeruginosa\"   ),   VAN = \"-\", # Vancomycin   AMX = \"-\", # Amoxicillin   COL = \"-\", # Colistin   CAZ = \"-\", # Ceftazidime   CXM = \"-\", # Cefuroxime   PEN = \"S\", # Benzylpenicillin   FOX = \"S\", # Cefoxitin   stringsAsFactors = FALSE )  head(a) #>                       mo VAN AMX COL CAZ CXM PEN FOX #> 1  Staphylococcus aureus   -   -   -   -   -   S   S #> 2  Enterococcus faecalis   -   -   -   -   -   S   S #> 3       Escherichia coli   -   -   -   -   -   S   S #> 4  Klebsiella pneumoniae   -   -   -   -   -   S   S #> 5 Pseudomonas aeruginosa   -   -   -   -   -   S   S   # apply EUCAST rules: some results wil be changed b <- eucast_rules(a) #> Warning: in eucast_rules(): not all columns with antimicrobial results are of #> class 'sir'. Transform them on beforehand, with e.g.: #>   - a %>% as.sir(PEN:FOX) #>   - a %>% mutate_if(is_sir_eligible, as.sir) #>   - a %>% mutate(across(where(is_sir_eligible), as.sir))  head(b) #>                       mo VAN AMX COL CAZ CXM PEN FOX #> 1  Staphylococcus aureus   -   -   R   R   S   S   S #> 2  Enterococcus faecalis   -   -   R   R   R   S   R #> 3       Escherichia coli   R   -   -   -   -   R   S #> 4  Klebsiella pneumoniae   R   R   -   -   -   R   S #> 5 Pseudomonas aeruginosa   R   R   -   -   R   R   R   # do not apply EUCAST rules, but rather get a data.frame # containing all details about the transformations: c <- eucast_rules(a, verbose = TRUE) #> Warning: in eucast_rules(): not all columns with antimicrobial results are of #> class 'sir'. Transform them on beforehand, with e.g.: #>   - a %>% as.sir(PEN:FOX) #>   - a %>% mutate_if(is_sir_eligible, as.sir) #>   - a %>% mutate(across(where(is_sir_eligible), as.sir)) head(c) #>   row col           mo_fullname old new rule   rule_group #> 1   1 CXM Staphylococcus aureus   -   S       Breakpoints #> 2   1 CAZ Staphylococcus aureus   -   R      Expert Rules #> 3   1 COL Staphylococcus aureus   -   R      Expert Rules #> 4   2 CAZ Enterococcus faecalis   -   R      Expert Rules #> 5   2 COL Enterococcus faecalis   -   R      Expert Rules #> 6   2 CXM Enterococcus faecalis   -   R      Expert Rules #>                                                 rule_name #> 1                                          Staphylococcus #> 2 Table 4: Intrinsic resistance in gram-positive bacteria #> 3 Table 4: Intrinsic resistance in gram-positive bacteria #> 4 Table 4: Intrinsic resistance in gram-positive bacteria #> 5 Table 4: Intrinsic resistance in gram-positive bacteria #> 6 Table 4: Intrinsic resistance in gram-positive bacteria #>                                                                                 rule_source #> 1                                           'EUCAST Clinical Breakpoint Tables' v12.0, 2022 #> 2 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 #> 3 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 #> 4 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 #> 5 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 #> 6 'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3, 2021 # }  # Dosage guidelines:  eucast_dosage(c(\"tobra\", \"genta\", \"cipro\"), \"iv\") #> ℹ Dosages for antimicrobial drugs, as meant for 'EUCAST Clinical Breakpoint #>   Tables' v12.0 (2022). This note will be shown once per session. #> # A tibble: 3 × 4 #>   ab   name          standard_dosage  high_dosage  #>   <ab> <chr>         <chr>            <chr>        #> 1 TOB  Tobramycin    6-7 mg/kg x 1 iv NA           #> 2 GEN  Gentamicin    6-7 mg/kg x 1 iv NA           #> 3 CIP  Ciprofloxacin 0.4 g x 2 iv     0.4 g x 3 iv  eucast_dosage(c(\"tobra\", \"genta\", \"cipro\"), \"iv\", version_breakpoints = 10) #> ℹ Dosages for antimicrobial drugs, as meant for 'EUCAST Clinical Breakpoint #>   Tables' v10.0 (2020). This note will be shown once per session. #> # A tibble: 3 × 4 #>   ab   name          standard_dosage  high_dosage  #>   <ab> <chr>         <chr>            <chr>        #> 1 TOB  Tobramycin    6-7 mg/kg x 1 iv NA           #> 2 GEN  Gentamicin    6-7 mg/kg x 1 iv NA           #> 3 CIP  Ciprofloxacin 0.4 g x 2 iv     0.4 g x 3 iv"},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 2 000 Example Isolates — example_isolates","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"data set containing 2 000 microbial isolates full antibiograms. data set contains randomised fictitious data, reflects reality can used practise AMR data analysis. examples, please read tutorial website.","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"","code":"example_isolates"},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"tibble 2 000 observations 46 variables: date Date receipt laboratory patient ID patient age Age patient gender Gender patient, either \"F\" \"M\" ward Ward type patient admitted, either \"Clinical\", \"ICU\", \"Outpatient\" mo ID microorganism created .mo(), see also microorganisms data set PEN:RIF 40 different antibiotics class sir (see .sir()); column names occur antibiotics data set can translated set_ab_names() ab_name()","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 2 000 Example Isolates — example_isolates","text":"","code":"example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …"},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with Unclean Data — example_isolates_unclean","title":"Data Set with Unclean Data — example_isolates_unclean","text":"data set containing 3 000 microbial isolates cleaned consequently ready AMR data analysis. data set can used practice.","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with Unclean Data — example_isolates_unclean","text":"","code":"example_isolates_unclean"},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with Unclean Data — example_isolates_unclean","text":"tibble 3 000 observations 8 variables: patient_id ID patient date date receipt laboratory hospital ID hospital, C bacteria info microorganism can transformed .mo(), see also microorganisms AMX:GEN 4 different antibiotics transformed .sir()","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with Unclean Data — example_isolates_unclean","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/example_isolates_unclean.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with Unclean Data — example_isolates_unclean","text":"","code":"example_isolates_unclean #> # A tibble: 3,000 × 8 #>    patient_id hospital date       bacteria      AMX   AMC   CIP   GEN   #>    <chr>      <chr>    <date>     <chr>         <chr> <chr> <chr> <chr> #>  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"},{"path":"https://msberends.github.io/AMR/reference/export_ncbi_biosample.html","id":null,"dir":"Reference","previous_headings":"","what":"Export Data Set as NCBI BioSample Antibiogram — export_ncbi_biosample","title":"Export Data Set as NCBI BioSample Antibiogram — export_ncbi_biosample","text":"Export Data Set NCBI BioSample Antibiogram","code":""},{"path":"https://msberends.github.io/AMR/reference/export_ncbi_biosample.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Export Data Set as NCBI BioSample Antibiogram — export_ncbi_biosample","text":"","code":"export_ncbi_biosample(x, filename = paste0(\"biosample_\", format(Sys.time(),   \"%Y-%m-%d-%H%M%S\"), \".xlsx\"), type = \"pathogen MIC\",   columns = where(is.mic), save_as_xlsx = TRUE)"},{"path":"https://msberends.github.io/AMR/reference/export_ncbi_biosample.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Export Data Set as NCBI BioSample Antibiogram — export_ncbi_biosample","text":"x data set filename character string specifying file name type character string specifying type data set, either \"pathogen MIC\" \"beta-lactamase MIC\", see https://www.ncbi.nlm.nih.gov/biosample/docs/","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine First Isolates — first_isolate","title":"Determine First Isolates — first_isolate","text":"Determine first isolates microorganisms every patient per episode (needed) per specimen type. functions support four methods summarised Hindler et al. 2007 (doi:10.1086/511864 ). determine patient episodes necessarily based microorganisms, use is_new_episode() also supports grouping dplyr package.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine First Isolates — first_isolate","text":"","code":"first_isolate(x = NULL, col_date = NULL, col_patient_id = NULL,   col_mo = NULL, col_testcode = NULL, col_specimen = NULL,   col_icu = NULL, col_keyantimicrobials = NULL, episode_days = 365,   testcodes_exclude = NULL, icu_exclude = FALSE, specimen_group = NULL,   type = \"points\", method = c(\"phenotype-based\", \"episode-based\",   \"patient-based\", \"isolate-based\"), ignore_I = TRUE, points_threshold = 2,   info = interactive(), include_unknown = FALSE,   include_untested_sir = TRUE, ...)  filter_first_isolate(x = NULL, col_date = NULL, col_patient_id = NULL,   col_mo = NULL, episode_days = 365, method = c(\"phenotype-based\",   \"episode-based\", \"patient-based\", \"isolate-based\"), ...)"},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Determine First Isolates — first_isolate","text":"Methodology functions strictly based : M39 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 5th Edition, 2022, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m39/. Hindler JF Stelling J (2007). Analysis Presentation Cumulative Antibiograms: New Consensus Guideline Clinical Laboratory Standards Institute. Clinical Infectious Diseases, 44(6), 867-873. doi:10.1086/511864","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine First Isolates — first_isolate","text":"x data.frame containing isolates. Can left blank automatic determination, see Examples. col_date column name result date (date received lab) - default first column date class col_patient_id column name unique IDs patients - default first column starts 'patient' 'patid' (case insensitive) col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). col_testcode column name test codes. Use col_testcode = NULL exclude certain test codes (test codes screening). case testcodes_exclude ignored. col_specimen column name specimen type group col_icu column name logicals (TRUE/FALSE) whether ward department Intensive Care Unit (ICU). can also logical vector length rows x. col_keyantimicrobials (useful method = \"phenotype-based\") column name key antimicrobials determine first isolates, see key_antimicrobials(). default first column starts 'key' followed 'ab' 'antibiotics' 'antimicrobials' (case insensitive). Use col_keyantimicrobials = FALSE prevent . Can also output key_antimicrobials(). episode_days episode days genus/species combination determined 'first isolate' . default 365 days based guideline CLSI, see Source. testcodes_exclude character vector test codes excluded (case-insensitive) icu_exclude logical indicate whether ICU isolates excluded (rows value TRUE column set col_icu) specimen_group value column set col_specimen filter type type determine weighed isolates; can \"keyantimicrobials\" \"points\", see Details method method apply, either \"phenotype-based\", \"episode-based\", \"patient-based\" \"isolate-based\" (can abbreviated), see Details. default \"phenotype-based\" antimicrobial test results present data, \"episode-based\" otherwise. ignore_I logical indicate whether antibiotic interpretations \"\" ignored type = \"keyantimicrobials\", see Details points_threshold minimum number points require differences antibiogram lead inclusion isolate type = \"points\", see Details info logical indicate info printed - default TRUE interactive mode include_unknown logical indicate whether 'unknown' microorganisms included , .e. microbial code \"UNKNOWN\", defaults FALSE. WHONET users, means records organism code \"con\" (contamination) excluded default. Isolates microbial ID NA always excluded first isolate. include_untested_sir logical indicate whether also rows without antibiotic results still eligible becoming first isolate. Use include_untested_sir = FALSE always return FALSE rows. checks data set columns class sir consequently requires transforming columns antibiotic results using .sir() first. ... arguments passed first_isolate() using filter_first_isolate(), otherwise arguments passed key_antimicrobials() (universal, gram_negative, gram_positive)","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine First Isolates — first_isolate","text":"logical vector","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Determine First Isolates — first_isolate","text":"methodology implemented functions strictly based recommendations outlined CLSI Guideline M39 research overview Hindler et al. (2007, doi:10.1086/511864 ). conduct epidemiological analyses antimicrobial resistance data, -called first isolates included prevent overestimation underestimation antimicrobial resistance. Different methods can used , see . functions context-aware. means x argument can left blank used inside data.frame call, see Examples. first_isolate() function wrapper around is_new_episode() function, efficient data sets containing microorganism codes names. isolates microbial ID NA excluded first isolate.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"different-methods","dir":"Reference","previous_headings":"","what":"Different methods","title":"Determine First Isolates — first_isolate","text":"According previously-mentioned sources, different methods (algorithms) select first isolates increasing reliability: isolate-based, patient-based, episode-based phenotype-based. methods select combination taxonomic genus species (subspecies). mentioned methods covered first_isolate() function:","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"isolate-based","dir":"Reference","previous_headings":"","what":"Isolate-based","title":"Determine First Isolates — first_isolate","text":"method require selection, isolates included. , however, respect arguments set first_isolate() function. example, default setting include_unknown (FALSE) omit selection rows without microbial ID.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"patient-based","dir":"Reference","previous_headings":"","what":"Patient-based","title":"Determine First Isolates — first_isolate","text":"include every genus-species combination per patient , set episode_days Inf. method makes sure duplicate isolates selected patient. method preferred e.g. identify first MRSA finding patient determine incidence. Conversely, large longitudinal data set, mean isolates excluded found years initial isolate.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"episode-based","dir":"Reference","previous_headings":"","what":"Episode-based","title":"Determine First Isolates — first_isolate","text":"include every genus-species combination per patient episode , set episode_days sensible number days. Depending type analysis, 14, 30, 60 365. Short episodes common analysing specific hospital ward data ICU cases, long episodes common analysing regional national data. common method correct duplicate isolates. Patients categorised episodes based ID dates (e.g., date specimen receipt laboratory result). common method, take account antimicrobial test results. means e.g. methicillin-resistant Staphylococcus aureus (MRSA) isolate differentiated wildtype Staphylococcus aureus isolate.","code":""},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"phenotype-based","dir":"Reference","previous_headings":"","what":"Phenotype-based","title":"Determine First Isolates — first_isolate","text":"reliable method, since also weighs antibiogram (antimicrobial test results) yielding -called 'first weighted isolates'. two different methods weigh antibiogram: Using type = \"points\" argument points_threshold (default) method weighs antimicrobial drugs available data set. difference S R (vice versa) counts 0.5 points, difference S R (vice versa) counts 1 point. sum points exceeds points_threshold, defaults 2, isolate selected first weighted isolate. antimicrobials internally selected using all_antimicrobials() function. output function need passed first_isolate() function. Using type = \"keyantimicrobials\" argument ignore_I method weighs specific antimicrobial drugs, called key antimicrobials. difference S R (vice versa) key antimicrobials select isolate first weighted isolate. ignore_I = FALSE, also differences S R (vice versa) lead . Key antimicrobials internally selected using key_antimicrobials() function, can also added manually variable data set col_keyantimicrobials argument. Another option pass output key_antimicrobials() function directly col_keyantimicrobials argument. default method phenotype-based (using type = \"points\") episode-based (using episode_days = 365). makes sure every genus-species combination selected per patient per year, taking account antimicrobial test results. antimicrobial test results available data set, episode-based method applied default.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/first_isolate.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine First Isolates — first_isolate","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates.  example_isolates[first_isolate(info = TRUE), ] #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Using column 'date' as input for col_date. #> ℹ Using column 'patient' as input for col_patient_id. #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #>   of 2 #> ℹ Excluding 16 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 1,387 'phenotype-based' first isolates (69.4% of total where a #>    microbial ID was available) #> # A tibble: 1,387 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  3 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  4 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  5 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR   R     NA    S     NA  #>  6 2002-01-17 495616     67 M      Clinical B_STPHY_EPDR   R     NA    S     NA  #>  7 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  8 2002-01-21 462081     75 F      Clinical B_CTRBC_FRND   R     NA    NA    R   #>  9 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #> 10 2002-02-03 481442     76 M      ICU      B_STPHY_CONS   R     NA    S     NA  #> # ℹ 1,377 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … # \\donttest{ # get all first Gram-negatives example_isolates[which(first_isolate(info = FALSE) & mo_is_gram_negative()), ] #> ℹ Using column 'mo' as input for mo_is_gram_negative() #> # A tibble: 441 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  3 2002-01-21 462081     75 F      Clinical B_CTRBC_FRND   R     NA    NA    R   #>  4 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #>  5 2002-02-05 067927     45 F      ICU      B_SERRT_MRCS   R     NA    NA    R   #>  6 2002-02-27 066895     85 F      Clinical B_KLBSL_PNMN   R     NA    NA    R   #>  7 2002-03-08 4FC193     69 M      Clinical B_ESCHR_COLI   R     NA    NA    R   #>  8 2002-03-16 4FC193     69 M      Clinical B_PSDMN_AERG   R     NA    NA    R   #>  9 2002-04-01 496896     46 F      ICU      B_ESCHR_COLI   R     NA    NA    NA  #> 10 2002-04-23 EE2510     69 F      ICU      B_ESCHR_COLI   R     NA    NA    NA  #> # ℹ 431 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  if (require(\"dplyr\")) {   # filter on first isolates using dplyr:   example_isolates %>%     filter(first_isolate(info = TRUE)) } #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #>   of 2 #> ℹ Excluding 16 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 1,387 'phenotype-based' first isolates (69.4% of total where a #>    microbial ID was available) #> # A tibble: 1,387 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  3 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  4 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  5 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR   R     NA    S     NA  #>  6 2002-01-17 495616     67 M      Clinical B_STPHY_EPDR   R     NA    S     NA  #>  7 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  8 2002-01-21 462081     75 F      Clinical B_CTRBC_FRND   R     NA    NA    R   #>  9 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #> 10 2002-02-03 481442     76 M      ICU      B_STPHY_CONS   R     NA    S     NA  #> # ℹ 1,377 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … if (require(\"dplyr\")) {   # short-hand version:   example_isolates %>%     filter_first_isolate(info = FALSE) } #> # A tibble: 1,387 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-01-02 A77334     65 F      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  2 2002-01-07 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  3 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  4 2002-01-16 067927     45 F      ICU      B_STPHY_EPDR   R     NA    R     NA  #>  5 2002-01-17 858515     79 F      ICU      B_STPHY_EPDR   R     NA    S     NA  #>  6 2002-01-17 495616     67 M      Clinical B_STPHY_EPDR   R     NA    S     NA  #>  7 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  8 2002-01-21 462081     75 F      Clinical B_CTRBC_FRND   R     NA    NA    R   #>  9 2002-01-22 F35553     50 M      ICU      B_PROTS_MRBL   R     NA    NA    NA  #> 10 2002-02-03 481442     76 M      ICU      B_STPHY_CONS   R     NA    S     NA  #> # ℹ 1,377 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … if (require(\"dplyr\")) {   # flag the first isolates per group:   example_isolates %>%     group_by(ward) %>%     mutate(first = first_isolate(info = TRUE)) %>%     select(ward, date, patient, mo, first) } #> ℹ Determining first isolates using an episode length of 365 days #> ℹ Basing inclusion on all antimicrobial results, using a points threshold #>   of 2 #>  #> Group: ward = \"Clinical\" #> ℹ Excluding 9 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 865 'phenotype-based' first isolates (70.1% of total where a #>    microbial ID was available) #>  #> Group: ward = \"ICU\" #> ℹ Excluding 6 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 452 'phenotype-based' first isolates (70.0% of total where a #>    microbial ID was available) #>  #> Group: ward = \"Outpatient\" #> ℹ Excluding 1 isolates with a microbial ID 'UNKNOWN' (in column 'mo') #> => Found 99 'phenotype-based' first isolates (82.5% of total where a #>    microbial ID was available) #> # A tibble: 2,000 × 5 #> # Groups:   ward [3] #>    ward     date       patient mo           first #>    <chr>    <date>     <chr>   <mo>         <lgl> #>  1 Clinical 2002-01-02 A77334  B_ESCHR_COLI TRUE  #>  2 Clinical 2002-01-03 A77334  B_ESCHR_COLI FALSE #>  3 ICU      2002-01-07 067927  B_STPHY_EPDR TRUE  #>  4 ICU      2002-01-07 067927  B_STPHY_EPDR FALSE #>  5 ICU      2002-01-13 067927  B_STPHY_EPDR FALSE #>  6 ICU      2002-01-13 067927  B_STPHY_EPDR FALSE #>  7 Clinical 2002-01-14 462729  B_STPHY_AURS TRUE  #>  8 Clinical 2002-01-14 462729  B_STPHY_AURS FALSE #>  9 ICU      2002-01-16 067927  B_STPHY_EPDR TRUE  #> 10 ICU      2002-01-17 858515  B_STPHY_EPDR TRUE  #> # ℹ 1,990 more rows # }"},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":null,"dir":"Reference","previous_headings":"","what":"G-test for Count Data — g.test","title":"G-test for Count Data — g.test","text":"g.test() performs chi-squared contingency table tests goodness--fit tests, just like chisq.test() reliable (1). G-test can used see whether number observations category fits theoretical expectation (called G-test goodness--fit), see whether proportions one variable different different values variable (called G-test independence).","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"G-test for Count Data — g.test","text":"","code":"g.test(x, y = NULL, p = rep(1/length(x), length(x)), rescale.p = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"G-test for Count Data — g.test","text":"code function identical chisq.test(), except : calculation statistic changed \\(2 * sum(x * log(x / E))\\) Yates' continuity correction removed apply G-test possibility simulate p values simulate.p.value removed","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"G-test for Count Data — g.test","text":"x numeric vector matrix. x y can also     factors. y numeric vector; ignored x matrix.      x factor, y factor length. p vector probabilities length x.     error given entry p negative. rescale.p logical scalar; TRUE p rescaled     (necessary) sum 1.  rescale.p FALSE,     p sum 1, error given.","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"G-test for Count Data — g.test","text":"list class \"htest\" containing following   components: statistic value chi-squared test statistic. parameter degrees freedom approximate     chi-squared distribution test statistic, NA     p-value computed Monte Carlo simulation. p.value p-value test. method character string indicating type test     performed, whether Monte Carlo simulation continuity     correction used. data.name character string giving name(s) data. observed observed counts. expected expected counts null hypothesis. residuals Pearson residuals,     (observed - expected) / sqrt(expected). stdres standardized residuals,     (observed - expected) / sqrt(V), V     residual cell variance (Agresti, 2007, section 2.4.5     case x matrix, n * p * (1 - p) otherwise).","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"G-test for Count Data — g.test","text":"x matrix one row column, x vector y given, goodness--fit test performed (x treated one-dimensional contingency table). entries x must non-negative integers. case, hypothesis tested whether population probabilities equal p, equal p given. x matrix least two rows columns, taken two-dimensional contingency table: entries x must non-negative integers.  Otherwise, x y must vectors factors length; cases missing values removed, objects coerced factors, contingency table computed .  Pearson's chi-squared test performed null hypothesis joint distribution cell counts 2-dimensional contingency table product row column marginals. p-value computed asymptotic chi-squared distribution test statistic. contingency table case simulation done random sampling set contingency tables given marginals, works marginals strictly positive. Note usual sampling situation assumed chi-squared test (G-test) rather Fisher's exact test. goodness--fit case simulation done random sampling discrete distribution specified p, sample size n = sum(x). simulation done R may slow.","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"g-test-of-goodness-of-fit-likelihood-ratio-test-","dir":"Reference","previous_headings":"","what":"G-test Of Goodness-of-Fit (Likelihood Ratio Test)","title":"G-test for Count Data — g.test","text":"Use G-test goodness--fit one nominal variable two values (male female, red, pink white flowers). compare observed counts numbers observations category expected counts, calculate using kind theoretical expectation (1:1 sex ratio 1:2:1 ratio genetic cross). expected number observations category small, G-test may give inaccurate results, use exact test instead (fisher.test()). G-test goodness--fit alternative chi-square test goodness--fit (chisq.test()); tests advantages disadvantages, results two tests usually similar.","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"g-test-of-independence","dir":"Reference","previous_headings":"","what":"G-test of Independence","title":"G-test for Count Data — g.test","text":"Use G-test independence two nominal variables, two possible values. want know whether proportions one variable different among values variable. also possible G-test independence two nominal variables. example, Jackson et al. (2013) also data children 3, analysis old vs. young, thigh vs. arm, reaction vs. reaction, analyzed together. Fisher's exact test (fisher.test()) exact test, G-test still approximation. 2x2 table, Fisher's Exact test may slower still run seconds, even sum observations multiple millions. G-test independence alternative chi-square test independence (chisq.test()), give approximately results.","code":""},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"how-the-test-works","dir":"Reference","previous_headings":"","what":"How the Test Works","title":"G-test for Count Data — g.test","text":"Unlike exact test goodness--fit (fisher.test()), G-test directly calculate probability obtaining observed results something extreme. Instead, like almost statistical tests, G-test intermediate step; uses data calculate test statistic measures far observed data null expectation. use mathematical relationship, case chi-square distribution, estimate probability obtaining value test statistic. G-test uses log ratio two likelihoods test statistic, also called likelihood ratio test log-likelihood ratio test. formula calculate G-statistic : \\(G = 2 * sum(x * log(x / E))\\) E expected values. Since chi-square distributed, p value can calculated R :   df degrees freedom. two categories want find ones significantly different null expectation, can use method testing category vs. sum categories, Bonferroni correction. use G-tests category, course.","code":"p <- stats::pchisq(G, df, lower.tail = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"references","dir":"Reference","previous_headings":"","what":"References","title":"G-test for Count Data — g.test","text":"McDonald, J.H. 2014. Handbook Biological Statistics (3rd ed.). Sparky House Publishing, Baltimore, Maryland. http://www.biostathandbook.com/gtestgof.html.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/g.test.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"G-test for Count Data — g.test","text":"","code":"# = EXAMPLE 1 = # Shivrain et al. (2006) crossed clearfield rice (which are resistant # to the herbicide imazethapyr) with red rice (which are susceptible to # imazethapyr). They then crossed the hybrid offspring and examined the # F2 generation, where they found 772 resistant plants, 1611 moderately # resistant plants, and 737 susceptible plants. If resistance is controlled # by a single gene with two co-dominant alleles, you would expect a 1:2:1 # ratio.  x <- c(772, 1611, 737) g.test(x, p = c(1, 2, 1) / 4) #>  #> \tG-test of goodness-of-fit (likelihood ratio test) #>  #> data:  x #> X-squared = 4.1471, p-value = 0.1257 #>   # There is no significant difference from a 1:2:1 ratio. # Meaning: resistance controlled by a single gene with two co-dominant # alleles, is plausible.   # = EXAMPLE 2 = # Red crossbills (Loxia curvirostra) have the tip of the upper bill either # right or left of the lower bill, which helps them extract seeds from pine # cones. Some have hypothesized that frequency-dependent selection would # keep the number of right and left-billed birds at a 1:1 ratio. Groth (1992) # observed 1752 right-billed and 1895 left-billed crossbills.  x <- c(1752, 1895) g.test(x) #>  #> \tG-test of goodness-of-fit (likelihood ratio test) #>  #> data:  x #> X-squared = 5.6085, p-value = 0.01787 #>   # There is a significant difference from a 1:1 ratio. # Meaning: there are significantly more left-billed birds."},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine Clinical or Epidemic Episodes — get_episode","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"functions determine items vector can considered (start ) new episode. can used determine clinical episodes epidemiological analysis. get_episode() function returns index number episode per group, is_new_episode() function returns TRUE every new get_episode() index. absolute relative episode determination supported.","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"","code":"get_episode(x, episode_days = NULL, case_free_days = NULL, ...)  is_new_episode(x, episode_days = NULL, case_free_days = NULL, ...)"},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"x vector dates (class Date POSIXt), sorted internally determine episodes episode_days episode length days specify time period new episode begins, can also less day Inf, see Details case_free_days (inter-epidemic) interval length days new episode start, can also less day Inf, see Details ... ignored, place allow future extensions","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"get_episode(): integer vector is_new_episode(): logical vector","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"Episodes can determined two ways: absolute relative. Absolute method uses episode_days define episode length days, new episode start. common use case AMR data analysis microbial epidemiology: episodes S. aureus bacteraemia ICU patients example. episode length 30 days, new S. aureus isolates ICU episode 30 days considered different (new) episode. Thus, method counts since start previous episode. Relative method uses case_free_days quantify duration case-free days (inter-epidemic interval), new episode start. common use case infectious disease epidemiology: episodes norovirus outbreaks hospital example. case-free period 14 days, new norovirus cases time considered different (new) episode. Thus, methods counts since last case previous episode. table: ** marks start new episode, 8 January 2023 7 days since start previous episode (1 January 2023).  *** marks start new episode, 21 January 2023 7 days since last case previous episode (8 January 2023). Either episode_days case_free_days must provided function.","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"difference-between-get-episode-and-is-new-episode-","dir":"Reference","previous_headings":"","what":"Difference between get_episode() and is_new_episode()","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"get_episode() function returns index number episode, cases/patients/isolates first episode number 1, cases/patients/isolates second episode number 2, etc. is_new_episode() function hand, returns TRUE every new get_episode() index. specify, setting episode_days = 365 (using method 1 explained ), two functions differ:","code":""},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"other","dir":"Reference","previous_headings":"","what":"Other","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"first_isolate() function wrapper around is_new_episode() function, efficient data sets containing microorganism codes names allows different isolate selection methods. dplyr package required functions work, episode functions support variable grouping work conveniently inside dplyr verbs filter(), mutate() summarise().","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/get_episode.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine Clinical or Epidemic Episodes — get_episode","text":"","code":"# difference between absolute and relative determination of episodes: x <- data.frame(dates = as.Date(c(   \"2021-01-01\",   \"2021-01-02\",   \"2021-01-05\",   \"2021-01-08\",   \"2021-02-21\",   \"2021-02-22\",   \"2021-02-23\",   \"2021-02-24\",   \"2021-03-01\",   \"2021-03-01\" ))) x$absolute <- get_episode(x$dates, episode_days = 7) x$relative <- get_episode(x$dates, case_free_days = 7) x #>         dates absolute relative #> 1  2021-01-01        1        1 #> 2  2021-01-02        1        1 #> 3  2021-01-05        1        1 #> 4  2021-01-08        2        1 #> 5  2021-02-21        3        2 #> 6  2021-02-22        3        2 #> 7  2021-02-23        3        2 #> 8  2021-02-24        3        2 #> 9  2021-03-01        4        2 #> 10 2021-03-01        4        2   # `example_isolates` is a data set available in the AMR package. # See ?example_isolates df <- example_isolates[sample(seq_len(2000), size = 100), ]  get_episode(df$date, episode_days = 60) # indices #>   [1] 46  4 39 28  8 29 19 40 34 38  7  7 10 28  7 38 41 10 20  5 18  1 22  5  6 #>  [26] 35 17 25 27 27  1 32 28 32 41 46 46 45 28 45 43 22 31  5  6 16 45 26  8 28 #>  [51] 45 12  4 19 24 42 16 35 44  9 26 11  1  2 32 45 32 39 21 36 19 37 14 29  3 #>  [76] 12 41 32 22 19 19 33 15 27 10 30 16 10 45  5 40 13 37 45 28  1 31 20 23 35 is_new_episode(df$date, episode_days = 60) # TRUE/FALSE #>   [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE #>  [13]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE #>  [25]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE #>  [37] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE #>  [49] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE #>  [61] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE #>  [73]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE #>  [85] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE #>  [97] FALSE FALSE  TRUE FALSE  # filter on results from the third 60-day episode only, using base R df[which(get_episode(df$date, 60) == 3), ] #> # A tibble: 1 × 46 #>   date       patient   age gender ward  mo           PEN   OXA   FLC   AMX   #>   <date>     <chr>   <dbl> <chr>  <chr> <mo>         <sir> <sir> <sir> <sir> #> 1 2002-07-23 F35553     51 M      ICU   B_STPHY_AURS   R     NA    S     R   #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, RIF <sir>  # the functions also work for less than a day, e.g. to include one per hour: get_episode(   c(     Sys.time(),     Sys.time() + 60 * 60   ),   episode_days = 1 / 24 ) #> [1] 1 2  # \\donttest{ if (require(\"dplyr\")) {   # is_new_episode() can also be used in dplyr verbs to determine patient   # episodes based on any (combination of) grouping variables:   df %>%     mutate(condition = sample(       x = c(\"A\", \"B\", \"C\"),       size = 100,       replace = TRUE     )) %>%     group_by(patient, condition) %>%     mutate(new_episode = is_new_episode(date, 365)) %>%     select(patient, date, condition, new_episode) %>%     arrange(patient, condition, date) } #> # A tibble: 100 × 4 #> # Groups:   patient, condition [96] #>    patient date       condition new_episode #>    <chr>   <date>     <chr>     <lgl>       #>  1 022060  2004-05-04 C         TRUE        #>  2 036063  2010-01-28 A         TRUE        #>  3 067927  2002-02-14 C         TRUE        #>  4 069276  2015-06-18 A         TRUE        #>  5 0C0688  2014-09-05 B         TRUE        #>  6 0E2483  2007-04-06 A         TRUE        #>  7 114570  2003-04-08 B         TRUE        #>  8 122506  2007-08-10 B         TRUE        #>  9 122506  2007-08-11 B         FALSE       #> 10 13DF24  2011-08-14 A         TRUE        #> # ℹ 90 more rows  if (require(\"dplyr\")) {   df %>%     group_by(ward, patient) %>%     transmute(date,       patient,       new_index = get_episode(date, 60),       new_logical = is_new_episode(date, 60)     ) %>%     arrange(patient, ward, date) } #> # A tibble: 100 × 5 #> # Groups:   ward, patient [90] #>    ward     date       patient new_index new_logical #>    <chr>    <date>     <chr>       <int> <lgl>       #>  1 ICU      2004-05-04 022060          1 TRUE        #>  2 Clinical 2010-01-28 036063          1 TRUE        #>  3 ICU      2002-02-14 067927          1 TRUE        #>  4 ICU      2015-06-18 069276          1 TRUE        #>  5 Clinical 2014-09-05 0C0688          1 TRUE        #>  6 Clinical 2007-04-06 0E2483          1 TRUE        #>  7 ICU      2003-04-08 114570          1 TRUE        #>  8 Clinical 2007-08-10 122506          1 TRUE        #>  9 Clinical 2007-08-11 122506          1 FALSE       #> 10 Clinical 2011-08-14 13DF24          1 TRUE        #> # ℹ 90 more rows  if (require(\"dplyr\")) {   df %>%     group_by(ward) %>%     summarise(       n_patients = n_distinct(patient),       n_episodes_365 = sum(is_new_episode(date, episode_days = 365)),       n_episodes_60 = sum(is_new_episode(date, episode_days = 60)),       n_episodes_30 = sum(is_new_episode(date, episode_days = 30))     ) } #> # A tibble: 3 × 5 #>   ward       n_patients n_episodes_365 n_episodes_60 n_episodes_30 #>   <chr>           <int>          <int>         <int>         <int> #> 1 Clinical           52             13            30            37 #> 2 ICU                30             10            24            27 #> 3 Outpatient          8              5             8             8  # grouping on patients and microorganisms leads to the same # results as first_isolate() when using 'episode-based': if (require(\"dplyr\")) {   x <- df %>%     filter_first_isolate(       include_unknown = TRUE,       method = \"episode-based\"     )    y <- df %>%     group_by(patient, mo) %>%     filter(is_new_episode(date, 365)) %>%     ungroup()    identical(x, y) } #> [1] TRUE  # but is_new_episode() has a lot more flexibility than first_isolate(), # since you can now group on anything that seems relevant: if (require(\"dplyr\")) {   df %>%     group_by(patient, mo, ward) %>%     mutate(flag_episode = is_new_episode(date, 365)) %>%     select(group_vars(.), flag_episode) } #> # A tibble: 100 × 4 #> # Groups:   patient, mo, ward [95] #>    patient mo           ward       flag_episode #>    <chr>   <mo>         <chr>      <lgl>        #>  1 CFCF65  B_ACNTB_BMNN ICU        TRUE         #>  2 CF9318  B_CMPYL_JEJN ICU        TRUE         #>  3 D28985  B_ESCHR_COLI Outpatient TRUE         #>  4 907215  B_STPHY_CONS ICU        TRUE         #>  5 2FC253  B_ESCHR_COLI ICU        TRUE         #>  6 582258  B_STPHY_CONS ICU        TRUE         #>  7 179451  B_ESCHR_COLI ICU        TRUE         #>  8 534816  B_STPHY_AURS Clinical   TRUE         #>  9 B12887  B_ESCHR_COLI Clinical   TRUE         #> 10 D43214  B_STPHY_HMNS Clinical   TRUE         #> # ℹ 90 more rows # }"},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":null,"dir":"Reference","previous_headings":"","what":"PCA Biplot with ggplot2 — ggplot_pca","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"Produces ggplot2 variant -called biplot PCA (principal component analysis), flexible appealing base R biplot() function.","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"","code":"ggplot_pca(x, choices = 1:2, scale = 1, pc.biplot = TRUE,   labels = NULL, labels_textsize = 3, labels_text_placement = 1.5,   groups = NULL, ellipse = TRUE, ellipse_prob = 0.68,   ellipse_size = 0.5, ellipse_alpha = 0.5, points_size = 2,   points_alpha = 0.25, arrows = TRUE, arrows_colour = \"darkblue\",   arrows_size = 0.5, arrows_textsize = 3, arrows_textangled = TRUE,   arrows_alpha = 0.75, base_textsize = 10, ...)"},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"ggplot_pca() function based ggbiplot() function ggbiplot package Vince Vu, found GitHub: https://github.com/vqv/ggbiplot (retrieved: 2 March 2020, latest commit: 7325e88; 12 February 2015). per GPL-2 licence demands documentation code changes, changes made based source code : Rewritten code remove dependency packages plyr, scales grid Parametrised options, like arrow ellipse settings Hardened input possibilities defining exact type user input every argument Added total amount explained variance caption plot Cleaned syntax based lintr package, fixed grammatical errors added integrity checks Updated documentation","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"x object returned pca(), prcomp() princomp() choices length 2 vector specifying components plot. default     biplot strict sense. scale variables scaled lambda ^ scale     observations scaled lambda ^ (1-scale)     lambda singular values computed     princomp. Normally 0 <= scale <= 1, warning     issued specified scale outside range. pc.biplot true, use Gabriel (1971) refers \"principal component     biplot\", lambda = 1 observations scaled sqrt(n)     variables scaled sqrt(n).  inner products     variables approximate covariances distances observations     approximate Mahalanobis distance. labels optional vector labels observations. set, labels placed respective points. using pca() function input x, determined automatically based attribute non_numeric_cols, see pca(). labels_textsize size text used labels labels_text_placement adjustment factor placement variable names (>=1 means away arrow head) groups optional vector groups labels, length labels. set, points labels coloured according groups. using pca() function input x, determined automatically based attribute non_numeric_cols, see pca(). ellipse logical indicate whether normal data ellipse drawn group (set groups) ellipse_prob statistical size ellipse normal probability ellipse_size size ellipse line ellipse_alpha alpha (transparency) ellipse line points_size size points points_alpha alpha (transparency) points arrows logical indicate whether arrows drawn arrows_colour colour arrow text arrows_size size (thickness) arrow lines arrows_textsize size text end arrows arrows_textangled logical whether text end arrows angled arrows_alpha alpha (transparency) arrows text base_textsize text size plot elements except labels arrows ... arguments passed functions","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"colours labels points can changed adding another scale layer colour, scale_colour_viridis_d() scale_colour_brewer().","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_pca.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"PCA Biplot with ggplot2 — ggplot_pca","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates.  # \\donttest{ if (require(\"dplyr\")) {   # calculate the resistance per group first   resistance_data <- example_isolates %>%     group_by(       order = mo_order(mo), # group on anything, like order       genus = mo_genus(mo)     ) %>% #   and genus as we do here;     filter(n() >= 30) %>% # filter on only 30 results per group     summarise_if(is.sir, resistance) # then get resistance of all drugs    # now conduct PCA for certain antimicrobial drugs   pca_result <- resistance_data %>%     pca(AMC, CXM, CTX, CAZ, GEN, TOB, TMP, SXT)    summary(pca_result)    # old base R plotting method:   biplot(pca_result, main = \"Base R biplot\")    # new ggplot2 plotting method using this package:   if (require(\"ggplot2\")) {     ggplot_pca(pca_result) +       labs(title = \"ggplot2 biplot\")   }   if (require(\"ggplot2\")) {     # still extendible with any ggplot2 function     ggplot_pca(pca_result) +       scale_colour_viridis_d() +       labs(title = \"ggplot2 biplot\")   } } #> Warning: There were 73 warnings in `summarise()`. #> The first warning was: #> ℹ In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE, #>   only_all_tested = FALSE) ...`. #> ℹ In group 5: `order = \"Lactobacillales\"` and `genus = \"Enterococcus\"`. #> Caused by warning: #> ! Introducing NA: only 14 results available for PEN in group: order = #> \"Lactobacillales\", genus = \"Enterococcus\" (minimum = 30). #> ℹ Run `dplyr::last_dplyr_warnings()` to see the 72 remaining warnings. #> ℹ Columns selected for PCA: \"AMC\", \"CAZ\", \"CTX\", \"CXM\", \"GEN\", \"SXT\", #>   \"TMP\", and \"TOB\". Total observations available: 7. #> Groups (n=4, named as 'order'): #> [1] \"Caryophanales\"    \"Enterobacterales\" \"Lactobacillales\"  \"Pseudomonadales\"  #>    # }"},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":null,"dir":"Reference","previous_headings":"","what":"AMR Plots with ggplot2 — ggplot_sir","title":"AMR Plots with ggplot2 — ggplot_sir","text":"Use functions create bar plots AMR data analysis. functions rely ggplot2 functions.","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"AMR Plots with ggplot2 — ggplot_sir","text":"","code":"ggplot_sir(data, position = NULL, x = \"antibiotic\",   fill = \"interpretation\", facet = NULL, breaks = seq(0, 1, 0.1),   limits = NULL, translate_ab = \"name\", combine_SI = TRUE,   minimum = 30, language = get_AMR_locale(), nrow = NULL, colours = c(S   = \"#3CAEA3\", SI = \"#3CAEA3\", I = \"#F6D55C\", IR = \"#ED553B\", R = \"#ED553B\"),   datalabels = TRUE, datalabels.size = 2.5, datalabels.colour = \"grey15\",   title = NULL, subtitle = NULL, caption = NULL,   x.title = \"Antimicrobial\", y.title = \"Proportion\", ...)  geom_sir(position = NULL, x = c(\"antibiotic\", \"interpretation\"),   fill = \"interpretation\", translate_ab = \"name\", minimum = 30,   language = get_AMR_locale(), combine_SI = TRUE, ...)"},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"AMR Plots with ggplot2 — ggplot_sir","text":"data data.frame column(s) class sir (see .sir()) position position adjustment bars, either \"fill\", \"stack\" \"dodge\" x variable show x axis, either \"antibiotic\" (default) \"interpretation\" grouping variable fill variable categorise using plots legend, either \"antibiotic\" (default) \"interpretation\" grouping variable facet variable split plots , either \"interpretation\" (default) \"antibiotic\" grouping variable breaks numeric vector positions limits numeric vector length two providing limits scale, use NA refer existing minimum maximum translate_ab column name antibiotics data set translate antibiotic abbreviations , using ab_property() combine_SI logical indicate whether values S, SDD, must merged one, output consists S+SDD+vs. R (susceptible vs. resistant) - default TRUE minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. nrow (using facet) number rows colours named vactor colour used filling. default colours colour-blind friendly. datalabels show datalabels using labels_sir_count() datalabels.size size datalabels datalabels.colour colour datalabels title text show title plot subtitle text show subtitle plot caption text show caption plot x.title text show x axis description y.title text show y axis description ... arguments passed geom_sir() , case scale_sir_colours(), named values set colours. default colours colour-blind friendly, maintaining convention e.g. 'susceptible' green 'resistant' red. See Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"AMR Plots with ggplot2 — ggplot_sir","text":"default, names antibiotics shown plots using ab_name(). can set translate_ab argument. See count_df(). geom_sir() take variable data sir class (created .sir()) using sir_df() plot bars percentage S, , R. default behaviour bars stacked different antibiotics x axis. Additional functions include: facet_sir() creates 2d plots (default based S//R) using ggplot2::facet_wrap(). scale_y_percent() transforms y axis 0 100% range using ggplot2::scale_y_continuous(). scale_sir_colours() sets colours bars (green S, yellow , red R). multilingual support. default colours colour-blind friendly, maintaining convention e.g. 'susceptible' green 'resistant' red. theme_sir() [ggplot2 theme][ggplot2::theme() minimal distraction. labels_sir_count() print datalabels bars percentage amount isolates using ggplot2::geom_text(). ggplot_sir() wrapper around functions uses data first input. makes possible use function pipe (%>%). See Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/ggplot_sir.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"AMR Plots with ggplot2 — ggplot_sir","text":"","code":"# \\donttest{ if (require(\"ggplot2\") && require(\"dplyr\")) {   # get antimicrobial results for drugs against a UTI:   ggplot(example_isolates %>% select(AMX, NIT, FOS, TMP, CIP)) +     geom_sir() }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # prettify the plot using some additional functions:   df <- example_isolates %>% select(AMX, NIT, FOS, TMP, CIP)   ggplot(df) +     geom_sir() +     scale_y_percent() +     scale_sir_colours() +     labels_sir_count() +     theme_sir() }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # or better yet, simplify this using the wrapper function - a single command:   example_isolates %>%     select(AMX, NIT, FOS, TMP, CIP) %>%     ggplot_sir() }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # get only proportions and no counts:   example_isolates %>%     select(AMX, NIT, FOS, TMP, CIP) %>%     ggplot_sir(datalabels = FALSE) }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # add other ggplot2 arguments as you like:   example_isolates %>%     select(AMX, NIT, FOS, TMP, CIP) %>%     ggplot_sir(       width = 0.5,       colour = \"black\",       size = 1,       linetype = 2,       alpha = 0.25     ) }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # you can alter the colours with colour names:   example_isolates %>%     select(AMX) %>%     ggplot_sir(colours = c(SI = \"yellow\")) }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # but you can also use the built-in colour-blind friendly colours for   # your plots, where \"S\" is green, \"I\" is yellow and \"R\" is red:   data.frame(     x = c(\"Value1\", \"Value2\", \"Value3\"),     y = c(1, 2, 3),     z = c(\"Value4\", \"Value5\", \"Value6\")   ) %>%     ggplot() +     geom_col(aes(x = x, y = y, fill = z)) +     scale_sir_colours(Value4 = \"S\", Value5 = \"I\", Value6 = \"R\") }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # resistance of ciprofloxacine per age group   example_isolates %>%     mutate(first_isolate = first_isolate()) %>%     filter(       first_isolate == TRUE,       mo == as.mo(\"Escherichia coli\")     ) %>%     # age_groups() is also a function in this AMR package:     group_by(age_group = age_groups(age)) %>%     select(age_group, CIP) %>%     ggplot_sir(x = \"age_group\") } #> Warning: Removed 6 rows containing missing values or values outside the scale range #> (`geom_col()`). #> Warning: Removed 6 rows containing missing values or values outside the scale range #> (`geom_text()`).  if (require(\"ggplot2\") && require(\"dplyr\")) {   # a shorter version which also adjusts data label colours:   example_isolates %>%     select(AMX, NIT, FOS, TMP, CIP) %>%     ggplot_sir(colours = FALSE) }  if (require(\"ggplot2\") && require(\"dplyr\")) {   # it also supports groups (don't forget to use the group var on `x` or `facet`):   example_isolates %>%     filter(mo_is_gram_negative(), ward != \"Outpatient\") %>%     # select only UTI-specific drugs     select(ward, AMX, NIT, FOS, TMP, CIP) %>%     group_by(ward) %>%     ggplot_sir(       x = \"ward\",       facet = \"antibiotic\",       nrow = 1,       title = \"AMR of Anti-UTI Drugs Per Ward\",       x.title = \"Ward\",       datalabels = FALSE     ) } #> ℹ Using column 'mo' as input for mo_is_gram_negative()  # }"},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":null,"dir":"Reference","previous_headings":"","what":"Guess Antibiotic Column — guess_ab_col","title":"Guess Antibiotic Column — guess_ab_col","text":"tries find column name data set based information antibiotics data set. Also supports WHONET abbreviations.","code":""},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Guess Antibiotic Column — guess_ab_col","text":"","code":"guess_ab_col(x = NULL, search_string = NULL, verbose = FALSE,   only_sir_columns = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Guess Antibiotic Column — guess_ab_col","text":"x data.frame search_string text search x , checked .ab() value column x verbose logical indicate whether additional info printed only_sir_columns logical indicate whether antibiotic columns must detected transformed class sir (see .sir()) beforehand (default FALSE)","code":""},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Guess Antibiotic Column — guess_ab_col","text":"column name x, NULL result found.","code":""},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Guess Antibiotic Column — guess_ab_col","text":"can look antibiotic (trade) name abbreviation search x antibiotics data set column containing name code antibiotic.","code":""},{"path":"https://msberends.github.io/AMR/reference/guess_ab_col.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Guess Antibiotic Column — guess_ab_col","text":"","code":"df <- data.frame(   amox = \"S\",   tetr = \"R\" )  guess_ab_col(df, \"amoxicillin\") #> [1] \"amox\" guess_ab_col(df, \"J01AA07\") # ATC code of tetracycline #> [1] \"tetr\"  guess_ab_col(df, \"J01AA07\", verbose = TRUE) #> Auto-guessing columns suitable for analysis #> ... #>  OK. #> ℹ Using column 'amox' as input for AMX (amoxicillin). #> ℹ Using column 'tetr' as input for TCY (tetracycline). #> ℹ Using column 'tetr' as input for J01AA07 (tetracycline). #> [1] \"tetr\" # NOTE: Using column 'tetr' as input for J01AA07 (tetracycline).  # WHONET codes df <- data.frame(   AMP_ND10 = \"R\",   AMC_ED20 = \"S\" ) guess_ab_col(df, \"ampicillin\") #> [1] \"AMP_ND10\" guess_ab_col(df, \"J01CR02\") #> [1] \"AMC_ED20\" guess_ab_col(df, as.ab(\"augmentin\")) #> [1] \"AMC_ED20\""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"Data set containing defined intrinsic resistance EUCAST bug-drug combinations.","code":""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"","code":"intrinsic_resistant"},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"tibble 301 583 observations 2 variables: mo Microorganism ID ab Antibiotic ID","code":""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"data set based 'EUCAST Expert Rules' 'EUCAST Intrinsic Resistance Unusual Phenotypes' v3.3 (2021).","code":""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"direct-download","dir":"Reference","previous_headings":"","what":"Direct download","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository. allow machine reading EUCAST CLSI guidelines, almost impossible MS Excel PDF files distributed EUCAST CLSI.","code":""},{"path":"https://msberends.github.io/AMR/reference/intrinsic_resistant.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with Bacterial Intrinsic Resistance — intrinsic_resistant","text":"","code":"intrinsic_resistant #> # A tibble: 301,583 × 2 #>    mo          ab   #>    <mo>        <ab> #>  1 B_GRAMP     ATM  #>  2 B_GRAMP     COL  #>  3 B_GRAMP     NAL  #>  4 B_GRAMP     PLB  #>  5 B_GRAMP     TEM  #>  6 B_ANAER-POS ATM  #>  7 B_ANAER-POS COL  #>  8 B_ANAER-POS NAL  #>  9 B_ANAER-POS PLB  #> 10 B_ANAER-POS TEM  #> # ℹ 301,573 more rows"},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":null,"dir":"Reference","previous_headings":"","what":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"According binomial nomenclature, lowest four taxonomic levels (family, genus, species, subspecies) printed italics. function finds taxonomic names within strings makes italic.","code":""},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"","code":"italicise_taxonomy(string, type = c(\"markdown\", \"ansi\", \"html\"))  italicize_taxonomy(string, type = c(\"markdown\", \"ansi\", \"html\"))"},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"string character (vector) type type conversion taxonomic names, either \"markdown\", \"html\" \"ansi\", see Details","code":""},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"function finds taxonomic names makes italic based microorganisms data set. taxonomic names can italicised using markdown (default) adding * taxonomic names, <> <\/> using html. using 'ansi', ANSI colours added using \\033[3m \\033[23m taxonomic names. multiple ANSI colours available, conversion occur. function also supports abbreviation genus followed species, \"E. coli\" \"K. pneumoniae ozaenae\".","code":""},{"path":"https://msberends.github.io/AMR/reference/italicise_taxonomy.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Italicise Taxonomic Families, Genera, Species, Subspecies — italicise_taxonomy","text":"","code":"italicise_taxonomy(\"An overview of Staphylococcus aureus isolates\") #> [1] \"An overview of *Staphylococcus aureus* isolates\" italicise_taxonomy(\"An overview of S. aureus isolates\") #> [1] \"An overview of *S. aureus* isolates\"  cat(italicise_taxonomy(\"An overview of S. aureus isolates\", type = \"ansi\")) #> An overview of S. aureus isolates"},{"path":"https://msberends.github.io/AMR/reference/join.html","id":null,"dir":"Reference","previous_headings":"","what":"Join microorganisms to a Data Set — join","title":"Join microorganisms to a Data Set — join","text":"Join data set microorganisms easily existing data set character vector.","code":""},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Join microorganisms to a Data Set — join","text":"","code":"inner_join_microorganisms(x, by = NULL, suffix = c(\"2\", \"\"), ...)  left_join_microorganisms(x, by = NULL, suffix = c(\"2\", \"\"), ...)  right_join_microorganisms(x, by = NULL, suffix = c(\"2\", \"\"), ...)  full_join_microorganisms(x, by = NULL, suffix = c(\"2\", \"\"), ...)  semi_join_microorganisms(x, by = NULL, ...)  anti_join_microorganisms(x, by = NULL, ...)"},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Join microorganisms to a Data Set — join","text":"x existing data set join, character vector. case character vector, resulting data.frame contain column 'x' values. variable join - left empty search column class mo (created .mo()) \"mo\" column name exists x, otherwise column name x values exist microorganisms$mo (= \"bacteria_id\"), another column microorganisms (named, like = c(\"bacteria_id\" = \"fullname\")) suffix non-joined duplicate variables x y, suffixes added output disambiguate . character vector length 2. ... ignored, place allow future extensions","code":""},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Join microorganisms to a Data Set — join","text":"data.frame","code":""},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Join microorganisms to a Data Set — join","text":"Note: opposed join() functions dplyr, character vectors supported default existing columns get suffix \"2\" newly joined columns get suffix. dplyr package installed, join functions used. Otherwise, much slower merge() interaction() functions base R used.","code":""},{"path":"https://msberends.github.io/AMR/reference/join.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Join microorganisms to a Data Set — join","text":"","code":"left_join_microorganisms(as.mo(\"K. pneumoniae\")) #> # A tibble: 1 × 26 #>   mo           fullname   status kingdom phylum class order family genus species #>   <mo>         <chr>      <chr>  <chr>   <chr>  <chr> <chr> <chr>  <chr> <chr>   #> 1 B_KLBSL_PNMN Klebsiell… accep… Bacter… Pseud… Gamm… Ente… Enter… Kleb… pneumo… #> # ℹ 16 more variables: subspecies <chr>, rank <chr>, ref <chr>, #> #   oxygen_tolerance <chr>, source <chr>, lpsn <chr>, lpsn_parent <chr>, #> #   lpsn_renamed_to <chr>, mycobank <chr>, mycobank_parent <chr>, #> #   mycobank_renamed_to <chr>, gbif <chr>, gbif_parent <chr>, #> #   gbif_renamed_to <chr>, prevalence <dbl>, snomed <list> left_join_microorganisms(\"B_KLBSL_PNMN\") #> # A tibble: 1 × 26 #>   mo           fullname   status kingdom phylum class order family genus species #>   <mo>         <chr>      <chr>  <chr>   <chr>  <chr> <chr> <chr>  <chr> <chr>   #> 1 B_KLBSL_PNMN Klebsiell… accep… Bacter… Pseud… Gamm… Ente… Enter… Kleb… pneumo… #> # ℹ 16 more variables: subspecies <chr>, rank <chr>, ref <chr>, #> #   oxygen_tolerance <chr>, source <chr>, lpsn <chr>, lpsn_parent <chr>, #> #   lpsn_renamed_to <chr>, mycobank <chr>, mycobank_parent <chr>, #> #   mycobank_renamed_to <chr>, gbif <chr>, gbif_parent <chr>, #> #   gbif_renamed_to <chr>, prevalence <dbl>, snomed <list>  df <- data.frame(   date = seq(     from = as.Date(\"2018-01-01\"),     to = as.Date(\"2018-01-07\"),     by = 1   ),   bacteria = as.mo(c(     \"S. aureus\", \"MRSA\", \"MSSA\", \"STAAUR\",     \"E. coli\", \"E. coli\", \"E. coli\"   )),   stringsAsFactors = FALSE ) colnames(df) #> [1] \"date\"     \"bacteria\"  df_joined <- left_join_microorganisms(df, \"bacteria\") colnames(df_joined) #>  [1] \"date\"                \"bacteria\"            \"fullname\"            #>  [4] \"status\"              \"kingdom\"             \"phylum\"              #>  [7] \"class\"               \"order\"               \"family\"              #> [10] \"genus\"               \"species\"             \"subspecies\"          #> [13] \"rank\"                \"ref\"                 \"oxygen_tolerance\"    #> [16] \"source\"              \"lpsn\"                \"lpsn_parent\"         #> [19] \"lpsn_renamed_to\"     \"mycobank\"            \"mycobank_parent\"     #> [22] \"mycobank_renamed_to\" \"gbif\"                \"gbif_parent\"         #> [25] \"gbif_renamed_to\"     \"prevalence\"          \"snomed\"               # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     left_join_microorganisms() %>%     colnames() } #> Joining, by = \"mo\" #>  [1] \"date\"                \"patient\"             \"age\"                 #>  [4] \"gender\"              \"ward\"                \"mo\"                  #>  [7] \"PEN\"                 \"OXA\"                 \"FLC\"                 #> [10] \"AMX\"                 \"AMC\"                 \"AMP\"                 #> [13] \"TZP\"                 \"CZO\"                 \"FEP\"                 #> [16] \"CXM\"                 \"FOX\"                 \"CTX\"                 #> [19] \"CAZ\"                 \"CRO\"                 \"GEN\"                 #> [22] \"TOB\"                 \"AMK\"                 \"KAN\"                 #> [25] \"TMP\"                 \"SXT\"                 \"NIT\"                 #> [28] \"FOS\"                 \"LNZ\"                 \"CIP\"                 #> [31] \"MFX\"                 \"VAN\"                 \"TEC\"                 #> [34] \"TCY\"                 \"TGC\"                 \"DOX\"                 #> [37] \"ERY\"                 \"CLI\"                 \"AZM\"                 #> [40] \"IPM\"                 \"MEM\"                 \"MTR\"                 #> [43] \"CHL\"                 \"COL\"                 \"MUP\"                 #> [46] \"RIF\"                 \"fullname\"            \"status\"              #> [49] \"kingdom\"             \"phylum\"              \"class\"               #> [52] \"order\"               \"family\"              \"genus\"               #> [55] \"species\"             \"subspecies\"          \"rank\"                #> [58] \"ref\"                 \"oxygen_tolerance\"    \"source\"              #> [61] \"lpsn\"                \"lpsn_parent\"         \"lpsn_renamed_to\"     #> [64] \"mycobank\"            \"mycobank_parent\"     \"mycobank_renamed_to\" #> [67] \"gbif\"                \"gbif_parent\"         \"gbif_renamed_to\"     #> [70] \"prevalence\"          \"snomed\"              # }"},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":null,"dir":"Reference","previous_headings":"","what":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"functions can used determine first weighted isolates considering phenotype isolate selection (see first_isolate()). Using phenotype-based method determine first isolates reliable methods disregard phenotypes.","code":""},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"","code":"key_antimicrobials(x = NULL, col_mo = NULL, universal = c(\"ampicillin\",   \"amoxicillin/clavulanic acid\", \"cefuroxime\", \"piperacillin/tazobactam\",   \"ciprofloxacin\", \"trimethoprim/sulfamethoxazole\"),   gram_negative = c(\"gentamicin\", \"tobramycin\", \"colistin\", \"cefotaxime\",   \"ceftazidime\", \"meropenem\"), gram_positive = c(\"vancomycin\", \"teicoplanin\",   \"tetracycline\", \"erythromycin\", \"oxacillin\", \"rifampin\"),   antifungal = c(\"anidulafungin\", \"caspofungin\", \"fluconazole\", \"miconazole\",   \"nystatin\", \"voriconazole\"), only_sir_columns = FALSE, ...)  all_antimicrobials(x = NULL, only_sir_columns = FALSE, ...)  antimicrobials_equal(y, z, type = c(\"points\", \"keyantimicrobials\"),   ignore_I = TRUE, points_threshold = 2, ...)"},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"x data.frame antibiotics columns, like AMX amox. Can left blank determine automatically col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). universal names broad-spectrum antimicrobial drugs, case-insensitive. Set NULL ignore. See Details default antimicrobial drugs gram_negative names antibiotic drugs Gram-positives, case-insensitive. Set NULL ignore. See Details default antibiotic drugs gram_positive names antibiotic drugs Gram-negatives, case-insensitive. Set NULL ignore. See Details default antibiotic drugs antifungal names antifungal drugs fungi, case-insensitive. Set NULL ignore. See Details default antifungal drugs only_sir_columns logical indicate whether columns must included transformed class sir (see .sir()) beforehand (default FALSE) ... ignored, place allow future extensions y, z character vectors compare type type determine weighed isolates; can \"keyantimicrobials\" \"points\", see Details ignore_I logical indicate whether antibiotic interpretations \"\" ignored type = \"keyantimicrobials\", see Details points_threshold minimum number points require differences antibiogram lead inclusion isolate type = \"points\", see Details","code":""},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"key_antimicrobials() all_antimicrobials() functions context-aware. means x argument can left blank used inside data.frame call, see Examples. function key_antimicrobials() returns character vector 12 antimicrobial results every isolate. function all_antimicrobials() returns character vector antimicrobial drug results every isolate. vectors can compared using antimicrobials_equal(), check two isolates generally antibiogram. Missing invalid values replaced dot (\".\") key_antimicrobials() ignored antimicrobials_equal(). Please see first_isolate() function important functions enable 'phenotype-based' method determination first isolates. default antimicrobial drugs used rows (set universal) : Ampicillin Amoxicillin/clavulanic acid Cefuroxime Ciprofloxacin Piperacillin/tazobactam Trimethoprim/sulfamethoxazole default antimicrobial drugs used Gram-negative bacteria (set gram_negative) : Cefotaxime Ceftazidime Colistin Gentamicin Meropenem Tobramycin default antimicrobial drugs used Gram-positive bacteria (set gram_positive) : Erythromycin Oxacillin Rifampin Teicoplanin Tetracycline Vancomycin default antimicrobial drugs used fungi (set antifungal) : Anidulafungin Caspofungin Fluconazole Miconazole Nystatin Voriconazole","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/key_antimicrobials.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"(Key) Antimicrobials for First Weighted Isolates — key_antimicrobials","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates.  # output of the `key_antimicrobials()` function could be like this: strainA <- \"SSSRR.S.R..S\" strainB <- \"SSSIRSSSRSSS\"  # those strings can be compared with: antimicrobials_equal(strainA, strainB, type = \"keyantimicrobials\") #> [1] TRUE # TRUE, because I is ignored (as well as missing values)  antimicrobials_equal(strainA, strainB, type = \"keyantimicrobials\", ignore_I = FALSE) #> [1] FALSE # FALSE, because I is not ignored and so the 4th [character] differs  # \\donttest{ if (require(\"dplyr\")) {   # set key antibiotics to a new variable   my_patients <- example_isolates %>%     mutate(keyab = key_antimicrobials(antifungal = NULL)) %>% # no need to define `x`     mutate(       # now calculate first isolates       first_regular = first_isolate(col_keyantimicrobials = FALSE),       # and first WEIGHTED isolates       first_weighted = first_isolate(col_keyantimicrobials = \"keyab\")     )    # Check the difference in this data set, 'weighted' results in more isolates:   sum(my_patients$first_regular, na.rm = TRUE)   sum(my_patients$first_weighted, na.rm = TRUE) } #> [1] 1383 # }"},{"path":"https://msberends.github.io/AMR/reference/kurtosis.html","id":null,"dir":"Reference","previous_headings":"","what":"Kurtosis of the Sample — kurtosis","title":"Kurtosis of the Sample — kurtosis","text":"Kurtosis measure \"tailedness\" probability distribution real-valued random variable. normal distribution kurtosis 3 excess kurtosis 0.","code":""},{"path":"https://msberends.github.io/AMR/reference/kurtosis.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Kurtosis of the Sample — kurtosis","text":"","code":"kurtosis(x, na.rm = FALSE, excess = FALSE)  # Default S3 method kurtosis(x, na.rm = FALSE, excess = FALSE)  # S3 method for class 'matrix' kurtosis(x, na.rm = FALSE, excess = FALSE)  # S3 method for class 'data.frame' kurtosis(x, na.rm = FALSE, excess = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/kurtosis.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Kurtosis of the Sample — kurtosis","text":"x vector values, matrix data.frame na.rm logical indicate whether NA values stripped computation proceeds excess logical indicate whether excess kurtosis returned, defined kurtosis minus 3.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/kurtosis.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Kurtosis of the Sample — kurtosis","text":"","code":"kurtosis(rnorm(10000)) #> [1] 3.018229 kurtosis(rnorm(10000), excess = TRUE) #> [1] 0.05238325"},{"path":"https://msberends.github.io/AMR/reference/like.html","id":null,"dir":"Reference","previous_headings":"","what":"Vectorised Pattern Matching with Keyboard Shortcut — like","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"Convenient wrapper around grepl() match pattern: x %like% pattern. always returns logical vector always case-insensitive (use x %like_case% pattern case-sensitive matching). Also, pattern can long x compare items index vectors, can length iterate cases.","code":""},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"","code":"like(x, pattern, ignore.case = TRUE)  x %like% pattern  x %unlike% pattern  x %like_case% pattern  x %unlike_case% pattern"},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"Idea like function data.table package, although altered explained Details.","code":""},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"x character vector matches sought, object can coerced .character() character vector. pattern character vector containing regular expressions (character string fixed = TRUE) matched given character vector. Coerced .character() character string possible. ignore.case FALSE, pattern matching case sensitive TRUE, case ignored matching.","code":""},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"logical vector","code":""},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"like() %like%/%unlike% functions: case-insensitive (use %like_case%/%unlike_case% case-sensitive matching) Support multiple patterns Check pattern valid regular expression sets fixed = TRUE , greatly improve speed (vectorised pattern) Always use compatibility Perl unless fixed = TRUE, greatly improve speed Using RStudio? %like%/%unlike% functions can also directly inserted code Addins menu can keyboard shortcut like Shift+Ctrl+L Shift+Cmd+L (see menu Tools > Modify Keyboard Shortcuts...). keep pressing shortcut, inserted text iterated %like% -> %unlike% -> %like_case% -> %unlike_case%.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/like.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Vectorised Pattern Matching with Keyboard Shortcut — like","text":"","code":"# data.table has a more limited version of %like%, so unload it: try(detach(\"package:data.table\", unload = TRUE), silent = TRUE)  a <- \"This is a test\" b <- \"TEST\" a %like% b #> [1] TRUE b %like% a #> [1] FALSE  # also supports multiple patterns a <- c(\"Test case\", \"Something different\", \"Yet another thing\") b <- c(\"case\", \"diff\", \"yet\") a %like% b #> [1] TRUE TRUE TRUE a %unlike% b #> [1] FALSE FALSE FALSE  a[1] %like% b #> [1]  TRUE FALSE FALSE a %like% b[1] #> [1]  TRUE FALSE FALSE  # \\donttest{ # get isolates whose name start with 'Entero' (case-insensitive) example_isolates[which(mo_name() %like% \"^entero\"), ] #> ℹ Using column 'mo' as input for mo_name() #> # A tibble: 106 × 46 #>    date       patient   age gender ward    mo            PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>   <mo>          <sir> <sir> <sir> <sir> #>  1 2002-02-21 4FC193     69 M      Clinic… B_ENTRC_FACM    NA    NA    NA    NA  #>  2 2002-04-08 130252     78 M      ICU     B_ENTRC_FCLS    NA    NA    NA    NA  #>  3 2002-06-23 798871     82 M      Clinic… B_ENTRC_FCLS    NA    NA    NA    NA  #>  4 2002-06-23 798871     82 M      Clinic… B_ENTRC_FCLS    NA    NA    NA    NA  #>  5 2003-04-20 6BC362     62 M      ICU     B_ENTRC         NA    NA    NA    NA  #>  6 2003-04-21 6BC362     62 M      ICU     B_ENTRC         NA    NA    NA    NA  #>  7 2003-08-13 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #>  8 2003-08-13 F35553     52 M      ICU     B_ENTRC_FCLS    NA    NA    NA    NA  #>  9 2003-09-05 F35553     52 M      ICU     B_ENTRC         NA    NA    NA    NA  #> 10 2003-09-05 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #> # ℹ 96 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  if (require(\"dplyr\")) {   example_isolates %>%     filter(mo_name() %like% \"^ent\") } #> ℹ Using column 'mo' as input for mo_name() #> # A tibble: 106 × 46 #>    date       patient   age gender ward    mo            PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>   <mo>          <sir> <sir> <sir> <sir> #>  1 2002-02-21 4FC193     69 M      Clinic… B_ENTRC_FACM    NA    NA    NA    NA  #>  2 2002-04-08 130252     78 M      ICU     B_ENTRC_FCLS    NA    NA    NA    NA  #>  3 2002-06-23 798871     82 M      Clinic… B_ENTRC_FCLS    NA    NA    NA    NA  #>  4 2002-06-23 798871     82 M      Clinic… B_ENTRC_FCLS    NA    NA    NA    NA  #>  5 2003-04-20 6BC362     62 M      ICU     B_ENTRC         NA    NA    NA    NA  #>  6 2003-04-21 6BC362     62 M      ICU     B_ENTRC         NA    NA    NA    NA  #>  7 2003-08-13 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #>  8 2003-08-13 F35553     52 M      ICU     B_ENTRC_FCLS    NA    NA    NA    NA  #>  9 2003-09-05 F35553     52 M      ICU     B_ENTRC         NA    NA    NA    NA  #> 10 2003-09-05 F35553     52 M      ICU     B_ENTRBC_CLOC   R     NA    NA    R   #> # ℹ 96 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, … # }"},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":null,"dir":"Reference","previous_headings":"","what":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"Determine isolates multidrug-resistant organisms (MDRO) according international, national, custom guidelines.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"","code":"mdro(x = NULL, guideline = \"CMI2012\", col_mo = NULL, esbl = NA,   carbapenemase = NA, mecA = NA, mecC = NA, vanA = NA, vanB = NA,   info = interactive(), pct_required_classes = 0.5, combine_SI = TRUE,   verbose = FALSE, only_sir_columns = FALSE, ...)  custom_mdro_guideline(..., as_factor = TRUE)  brmo(x = NULL, only_sir_columns = FALSE, ...)  mrgn(x = NULL, only_sir_columns = FALSE, verbose = FALSE, ...)  mdr_tb(x = NULL, only_sir_columns = FALSE, verbose = FALSE, ...)  mdr_cmi2012(x = NULL, only_sir_columns = FALSE, verbose = FALSE, ...)  eucast_exceptional_phenotypes(x = NULL, only_sir_columns = FALSE,   verbose = FALSE, ...)"},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"See supported guidelines list publications used function.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"x data.frame antibiotics columns, like AMX amox. Can left blank automatic determination. guideline specific guideline follow, see sections Supported international / national guidelines Using Custom Guidelines . left empty, publication Magiorakos et al. (see ) followed. col_mo column name names codes microorganisms (see .mo()) - default first column class mo. Values coerced using .mo(). esbl logical values, column name containing logical values, indicating presence ESBL gene (production proteins) carbapenemase logical values, column name containing logical values, indicating presence carbapenemase gene (production proteins) mecA logical values, column name containing logical values, indicating presence mecA gene (production proteins) mecC logical values, column name containing logical values, indicating presence mecC gene (production proteins) vanA logical values, column name containing logical values, indicating presence vanA gene (production proteins) vanB logical values, column name containing logical values, indicating presence vanB gene (production proteins) info logical indicate whether progress printed console - default print interactive sessions pct_required_classes minimal required percentage antimicrobial classes must available per isolate, rounded . example, default guideline, 17 antimicrobial classes must available S. aureus. Setting pct_required_classes argument 0.5 (default) means every S. aureus isolate least 8 different classes must available. lower number available classes return NA isolate. combine_SI logical indicate whether values S must merged one, resistance considered isolates R, . default behaviour mdro() function, follows redefinition EUCAST interpretation (increased exposure) 2019, see section 'Interpretation S, R' . using combine_SI = FALSE, resistance considered isolates R . verbose logical turn Verbose mode (default ). Verbose mode, function return MDRO results, instead returns data set logbook form extensive info isolates MDRO-positive, . only_sir_columns logical indicate whether antibiotic columns must detected transformed class sir (see .sir()) beforehand (default FALSE) ... case custom_mdro_guideline(): set rules, see section Using Custom Guidelines . Otherwise: column name antibiotic, see section Antibiotics . as_factor logical indicate whether returned value ordered factor (TRUE, default), otherwise character vector","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"CMI 2012 paper - function mdr_cmi2012() mdro(): Ordered factor levels Negative < Multi-drug-resistant (MDR) < Extensively drug-resistant (XDR) < Pandrug-resistant (PDR) TB guideline - function mdr_tb() mdro(..., guideline = \"TB\"): Ordered factor levels Negative < Mono-resistant < Poly-resistant < Multi-drug-resistant < Extensively drug-resistant German guideline - function mrgn() mdro(..., guideline = \"MRGN\"): Ordered factor levels Negative < 3MRGN < 4MRGN Everything else, except custom guidelines: Ordered factor levels Negative < Positive, unconfirmed < Positive. value \"Positive, unconfirmed\" means , according guideline, entirely sure isolate multi-drug resistant confirmed additional (e.g. molecular) tests","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"functions context-aware. means x argument can left blank used inside data.frame call, see Examples. pct_required_classes argument, values 1 divided 100. support fractions (0.75 3/4) percentages (75). Note: Every test involves Enterobacteriaceae family, internally performed using newly named order Enterobacterales, since Enterobacteriaceae family taxonomically reclassified Adeolu et al. 2016. , Enterobacteriaceae family Enterobacteriales () order. species old Enterobacteriaceae family still new Enterobacterales (without ) order, divided multiple families. way tests performed now mdro() function makes sure results 2016 2016 identical.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"supported-international-national-guidelines","dir":"Reference","previous_headings":"","what":"Supported International / National Guidelines","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"Currently supported guidelines (case-insensitive): guideline = \"CMI2012\" (default) Magiorakos AP, Srinivasan et al. \"Multidrug-resistant, extensively drug-resistant pandrug-resistant bacteria: international expert proposal interim standard definitions acquired resistance.\" Clinical Microbiology Infection (2012) (doi:10.1111/j.1469-0691.2011.03570.x ) guideline = \"EUCAST3.3\" (simply guideline = \"EUCAST\") European international guideline - EUCAST Expert Rules Version 3.3 \"Intrinsic Resistance Unusual Phenotypes\" (link) guideline = \"EUCAST3.2\" European international guideline - EUCAST Expert Rules Version 3.2 \"Intrinsic Resistance Unusual Phenotypes\" (link) guideline = \"EUCAST3.1\" European international guideline - EUCAST Expert Rules Version 3.1 \"Intrinsic Resistance Exceptional Phenotypes Tables\" (link) guideline = \"TB\" international guideline multi-drug resistant tuberculosis - World Health Organization \"Companion handbook guidelines programmatic management drug-resistant tuberculosis\" (link) guideline = \"MRGN\" German national guideline - Mueller et al. (2015) Antimicrobial Resistance Infection Control 4:7; doi:10.1186/s13756-015-0047-6 guideline = \"BRMO\" Dutch national guideline - Samenwerkingverband Richtlijnen Infectiepreventie (SRI) (2024) \"Bijzonder Resistente Micro-Organismen (BRMO)\" (link) Also: guideline = \"BRMO 2017\" former Dutch national guideline - Werkgroep Infectiepreventie (WIP), RIVM, last revision 2017: \"Bijzonder Resistente Micro-Organismen (BRMO)\" Please suggest implement guidelines letting us know: https://github.com/msberends/AMR/issues/new.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"using-custom-guidelines","dir":"Reference","previous_headings":"","what":"Using Custom Guidelines","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"Custom guidelines can set custom_mdro_guideline() function. great importance custom rules determine MDROs hospital, e.g., rules dependent ward, state contact isolation variables data. familiar case_when() function dplyr package, recognise input method set rules. Rules must set using R considers 'formula notation'. rule written tilde (~) consequence rule written tilde:   row/isolate matches first rule, value first ~ (case 'Elderly Type ') set MDRO value. Otherwise, second rule tried . number rules unlimited. can print rules set console overview. Colours help reading console supports colours.   outcome function can used guideline argument mdro() function:   Rules can also combined custom rules using c():   rules set (custom object case) exported shared file location using saveRDS() collaborate multiple users. custom rules set imported using readRDS().","code":"custom <- custom_mdro_guideline(CIP == \"R\" & age > 60 ~ \"Elderly Type A\",                                 ERY == \"R\" & age > 60 ~ \"Elderly Type B\") custom #> A set of custom MDRO rules: #>   1. CIP is \"R\" and age is higher than 60 -> Elderly Type A #>   2. ERY is \"R\" and age is higher than 60 -> Elderly Type B #>   3. Otherwise -> Negative #> #> Unmatched rows will return NA. x <- mdro(example_isolates,           guideline = custom) table(x) #>       Negative Elderly Type A Elderly Type B #>           1070            198            732 x <- mdro(example_isolates,           guideline = c(custom,                         custom_mdro_guideline(ERY == \"R\" & age > 50 ~ \"Elderly Type C\"))) table(x) #>       Negative Elderly Type A Elderly Type B Elderly Type C #>            961            198            732            109"},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"antibiotics","dir":"Reference","previous_headings":"","what":"Antibiotics","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"define antibiotics column names, leave determine automatically guess_ab_col() input text (case-insensitive), use NULL skip column (e.g. TIC = NULL skip ticarcillin). Manually defined non-existing columns skipped warning. following antibiotics eligible functions eucast_rules() mdro(). shown format 'name (antimicrobial ID, ATC code)', sorted alphabetically: Amikacin (AMK, J01GB06), amoxicillin (AMX, J01CA04), amoxicillin/clavulanic acid (AMC, J01CR02), ampicillin (AMP, J01CA01), ampicillin/sulbactam (SAM, J01CR01), apramycin (APR, QA07AA92), arbekacin (ARB, J01GB12), aspoxicillin (APX, J01CA19), azidocillin (AZD, J01CE04), azithromycin (AZM, J01FA10), azlocillin (AZL, J01CA09), aztreonam (ATM, J01DF01), bacampicillin (BAM, J01CA06), bekanamycin (BEK, J01GB13), benzathine benzylpenicillin (BNB, J01CE08), benzathine phenoxymethylpenicillin (BNP, J01CE10), benzylpenicillin (PEN, J01CE01), besifloxacin (BES, S01AE08), biapenem (BIA, J01DH05), carbenicillin (CRB, J01CA03), carindacillin (CRN, J01CA05), carumonam (CAR, J01DF02), cefacetrile (CAC, J01DB10), cefaclor (CEC, J01DC04), cefadroxil (CFR, J01DB05), cefalexin (LEX, J01DB01), cefaloridine (RID, J01DB02), cefalotin (CEP, J01DB03), cefamandole (MAN, J01DC03), cefapirin (HAP, J01DB08), cefatrizine (CTZ, J01DB07), cefazedone (CZD, J01DB06), cefazolin (CZO, J01DB04), cefcapene (CCP, J01DD17), cefdinir (CDR, J01DD15), cefditoren (DIT, J01DD16), cefepime (FEP, J01DE01), cefepime/amikacin (CFA, J01RA06), cefetamet (CAT, J01DD10), cefiderocol (FDC, J01DI04), cefixime (CFM, J01DD08), cefmenoxime (CMX, J01DD05), cefmetazole (CMZ, J01DC09), cefodizime (DIZ, J01DD09), cefonicid (CID, J01DC06), cefoperazone (CFP, J01DD12), cefoperazone/sulbactam (CSL, J01DD62), ceforanide (CND, J01DC11), cefotaxime (CTX, J01DD01), cefotaxime/clavulanic acid (CTC, J01DD51), cefotetan (CTT, J01DC05), cefotiam (CTF, J01DC07), cefovecin (FOV, QJ01DD91), cefoxitin (FOX, J01DC01), cefozopran (ZOP, J01DE03), cefpiramide (CPM, J01DD11), cefpirome (CPO, J01DE02), cefpodoxime (CPD, J01DD13), cefprozil (CPR, J01DC10), cefquinome (CEQ, QG51AA07), cefroxadine (CRD, J01DB11), cefsulodin (CFS, J01DD03), ceftaroline (CPT, J01DI02), ceftazidime (CAZ, J01DD02), ceftazidime/clavulanic acid (CCV, J01DD52), cefteram (CEM, J01DD18), ceftezole (CTL, J01DB12), ceftibuten (CTB, J01DD14), ceftiofur (TIO, QJ01DD90), ceftizoxime (CZX, J01DD07), ceftobiprole medocaril (CFM1, J01DI01), ceftolozane/tazobactam (CZT, J01DI54), ceftriaxone (CRO, J01DD04), ceftriaxone/beta-lactamase inhibitor (CEB, J01DD63), cefuroxime (CXM, J01DC02), cephradine (CED, J01DB09), chloramphenicol (CHL, J01BA01), ciprofloxacin (CIP, J01MA02), clarithromycin (CLR, J01FA09), clindamycin (CLI, J01FF01), clometocillin (CLM, J01CE07), cloxacillin (CLO, J01CF02), colistin (COL, J01XB01), cycloserine (CYC, J04AB01), dalbavancin (DAL, J01XA04), danofloxacin (DAN, QJ01MA92), daptomycin (DAP, J01XX09), delafloxacin (DFX, J01MA23), dibekacin (DKB, J01GB09), dicloxacillin (DIC, J01CF01), difloxacin (DIF, QJ01MA94), dirithromycin (DIR, J01FA13), doripenem (DOR, J01DH04), doxycycline (DOX, J01AA02), enoxacin (ENX, J01MA04), enrofloxacin (ENR, QJ01MA90), epicillin (EPC, J01CA07), ertapenem (ETP, J01DH03), erythromycin (ERY, J01FA01), fleroxacin (FLE, J01MA08), flucloxacillin (FLC, J01CF05), flurithromycin (FLR1, J01FA14), fosfomycin (FOS, J01XX01), framycetin (FRM, D09AA01), fusidic acid (FUS, J01XC01), gamithromycin (GAM, QJ01FA95), garenoxacin (GRN, J01MA19), gatifloxacin (GAT, J01MA16), gemifloxacin (GEM, J01MA15), gentamicin (GEN, J01GB03), grepafloxacin (GRX, J01MA11), hetacillin (HET, J01CA18), imipenem (IPM, J01DH51), imipenem/relebactam (IMR, J01DH56), isepamicin (ISE, J01GB11), josamycin (JOS, J01FA07), kanamycin (KAN, J01GB04), kitasamycin (KIT, QJ01FA93), lascufloxacin (LSC, J01MA25), latamoxef (LTM, J01DD06), levofloxacin (LVX, J01MA12), levonadifloxacin (LND, J01MA24), lincomycin (LIN, J01FF02), linezolid (LNZ, J01XX08), lomefloxacin (LOM, J01MA07), loracarbef (LOR, J01DC08), marbofloxacin (MAR, QJ01MA93), mecillinam (MEC, J01CA11), meropenem (MEM, J01DH02), meropenem/vaborbactam (MEV, J01DH52), metampicillin (MTM, J01CA14), meticillin (MET, J01CF03), mezlocillin (MEZ, J01CA10), micronomicin (MCR, S01AA22), midecamycin (MID, J01FA03), minocycline (MNO, J01AA08), miocamycin (MCM, J01FA11), moxifloxacin (MFX, J01MA14), nadifloxacin (NAD, D10AF05), nafcillin (NAF, J01CF06), nalidixic acid (NAL, J01MB02), neomycin (NEO, J01GB05), netilmicin (NET, J01GB07), nitrofurantoin (NIT, J01XE01), norfloxacin (, J01MA06), novobiocin (NOV, QJ01XX95), ofloxacin (OFX, J01MA01), oleandomycin (OLE, J01FA05), orbifloxacin (ORB, QJ01MA95), oritavancin (ORI, J01XA05), oxacillin (OXA, J01CF04), panipenem (PAN, J01DH55), pazufloxacin (PAZ, J01MA18), pefloxacin (PEF, J01MA03), penamecillin (PNM, J01CE06), pheneticillin (PHE, J01CE05), phenoxymethylpenicillin (PHN, J01CE02), piperacillin (PIP, J01CA12), piperacillin/tazobactam (TZP, J01CR05), pirlimycin (PRL, QJ51FF90), pivampicillin (PVM, J01CA02), pivmecillinam (PME, J01CA08), plazomicin (PLZ, J01GB14), polymyxin B (PLB, J01XB02), pradofloxacin (PRA, QJ01MA97), pristinamycin (PRI, J01FG01), procaine benzylpenicillin (PRB, J01CE09), propicillin (PRP, J01CE03), prulifloxacin (PRU, J01MA17), quinupristin/dalfopristin (QDA, QJ01FG02), ribostamycin (RST, J01GB10), rifampicin (RIF, J04AB02), rokitamycin (ROK, J01FA12), roxithromycin (RXT, J01FA06), rufloxacin (RFL, J01MA10), sarafloxacin (SAR, QJ01MA98), sisomicin (SIS, J01GB08), sitafloxacin (SIT, J01MA21), solithromycin (SOL, J01FA16), sparfloxacin (SPX, J01MA09), spiramycin (SPI, J01FA02), streptoduocin (STR, J01GA02), streptomycin (STR1, J01GA01), sulbenicillin (SBC, J01CA16), sulfadiazine (SDI, J01EC02), sulfadiazine/trimethoprim (SLT1, J01EE02), sulfadimethoxine (SUD, J01ED01), sulfadimidine (SDM, J01EB03), sulfadimidine/trimethoprim (SLT2, J01EE05), sulfafurazole (SLF, J01EB05), sulfaisodimidine (SLF1, J01EB01), sulfalene (SLF2, J01ED02), sulfamazone (SZO, J01ED09), sulfamerazine (SLF3, J01ED07), sulfamerazine/trimethoprim (SLT3, J01EE07), sulfamethizole (SLF4, J01EB02), sulfamethoxazole (SMX, J01EC01), sulfamethoxypyridazine (SLF5, J01ED05), sulfametomidine (SLF6, J01ED03), sulfametoxydiazine (SLF7, J01ED04), sulfametrole/trimethoprim (SLT4, J01EE03), sulfamoxole (SLF8, J01EC03), sulfamoxole/trimethoprim (SLT5, J01EE04), sulfanilamide (SLF9, J01EB06), sulfaperin (SLF10, J01ED06), sulfaphenazole (SLF11, J01ED08), sulfapyridine (SLF12, J01EB04), sulfathiazole (SUT, J01EB07), sulfathiourea (SLF13, J01EB08), sultamicillin (SLT6, J01CR04), talampicillin (TAL, J01CA15), tebipenem (TBP, J01DH06), tedizolid (TZD, J01XX11), teicoplanin (TEC, J01XA02), telavancin (TLV, J01XA03), telithromycin (TLT, J01FA15), temafloxacin (TMX, J01MA05), temocillin (TEM, J01CA17), tetracycline (TCY, J01AA07), ticarcillin (TIC, J01CA13), ticarcillin/clavulanic acid (TCC, J01CR03), tigecycline (TGC, J01AA12), tilbroquinol (TBQ, P01AA05), tildipirosin (TIP, QJ01FA96), tilmicosin (TIL, QJ01FA91), tobramycin (TOB, J01GB01), tosufloxacin (TFX, J01MA22), trimethoprim (TMP, J01EA01), trimethoprim/sulfamethoxazole (SXT, J01EE01), troleandomycin (TRL, J01FA08), trovafloxacin (TVA, J01MA13), tulathromycin (TUL, QJ01FA94), tylosin (TYL, QJ01FA90), tylvalosin (TYL1, QJ01FA92), vancomycin (VAN, J01XA01)","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/mdro.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Determine Multidrug-Resistant Organisms (MDRO) — mdro","text":"","code":"out <- mdro(example_isolates, guideline = \"EUCAST\") str(out) #>  Ord.factor w/ 3 levels \"Negative\"<\"Positive, unconfirmed\"<..: 1 1 1 1 1 1 1 1 1 1 ... table(out) #> out #>              Negative Positive, unconfirmed              Positive  #>                  1994                     0                     6   out <- mdro(example_isolates,   guideline = custom_mdro_guideline(     AMX == \"R\" ~ \"Custom MDRO 1\",     VAN == \"R\" ~ \"Custom MDRO 2\"   ) ) table(out) #> out #>      Negative Custom MDRO 1 Custom MDRO 2  #>           870           804           326   # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     mdro() %>%     table()    # no need to define `x` when used inside dplyr verbs:   example_isolates %>%     mutate(MDRO = mdro()) %>%     pull(MDRO) %>%     table() } #> Warning: in mdro(): NA introduced for isolates where the available percentage of #> antimicrobial classes was below 50% (set with pct_required_classes) #> Warning: There was 1 warning in `mutate()`. #> ℹ In argument: `MDRO = mdro()`. #> Caused by warning: #> ! in mdro(): NA introduced for isolates where the available percentage of #> antimicrobial classes was below 50% (set with pct_required_classes) #> . #>                         Negative       Multi-drug-resistant (MDR)  #>                             1617                              128  #> Extensively drug-resistant (XDR)          Pandrug-resistant (PDR)  #>                                0                                0  # }"},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the Mean AMR Distance — mean_amr_distance","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"Calculates normalised mean antimicrobial resistance multiple observations, help identify similar isolates without comparing antibiograms hand.","code":""},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"","code":"mean_amr_distance(x, ...)  # S3 method for class 'sir' mean_amr_distance(x, ..., combine_SI = TRUE)  # S3 method for class 'data.frame' mean_amr_distance(x, ..., combine_SI = TRUE)  amr_distance_from_row(amr_distance, row)"},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"x vector class sir, mic disk, data.frame containing columns classes ... variables select (supports tidyselect language column1:column4 (.mic), can thus also antimicrobial selectors combine_SI logical indicate whether values S, SDD, must merged one, input consists S+vs. R (susceptible vs. resistant) - default TRUE amr_distance outcome mean_amr_distance() row index, row number","code":""},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"mean AMR distance effectively Z-score; normalised numeric value compare AMR test results can help identify similar isolates, without comparing antibiograms hand. MIC values (see .mic()) transformed log2() first; distance thus calculated (log2(x) - mean(log2(x))) / sd(log2(x)). SIR values (see .sir()) transformed using \"S\" = 1, \"\" = 2, \"R\" = 3. combine_SI TRUE (default), \"\" considered 1. data sets, mean AMR distance calculated per column, mean per row returned, see Examples. Use amr_distance_from_row() subtract distances distance one row, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"interpretation","dir":"Reference","previous_headings":"","what":"Interpretation","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"Isolates distances less 0.01 difference considered similar. Differences lower 0.025 considered suspicious.","code":""},{"path":"https://msberends.github.io/AMR/reference/mean_amr_distance.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the Mean AMR Distance — mean_amr_distance","text":"","code":"sir <- random_sir(10) sir #> Class 'sir' #>  [1] S S I I I S S S R R mean_amr_distance(sir) #>  [1] -0.4743416 -0.4743416 -0.4743416 -0.4743416 -0.4743416 -0.4743416 #>  [7] -0.4743416 -0.4743416  1.8973666  1.8973666  mic <- random_mic(10) mic #> Class 'mic' #>  [1] 0.025 1     0.001 8     0.5   16    64    128   4     64    mean_amr_distance(mic) #>  [1] -1.1967905 -0.2158758 -2.0527259  0.3370712 -0.4001915  0.5213868 #>  [7]  0.8900182  1.0743338  0.1527555  0.8900182 # equal to the Z-score of their log2: (log2(mic) - mean(log2(mic))) / sd(log2(mic)) #>  [1] -1.1967905 -0.2158758 -2.0527259  0.3370712 -0.4001915  0.5213868 #>  [7]  0.8900182  1.0743338  0.1527555  0.8900182  disk <- random_disk(10) disk #> Class 'disk' #>  [1] 42  8 24 15 32 45 46 42 49 14 mean_amr_distance(disk) #>  [1]  0.67331608 -1.54928069 -0.50335280 -1.09168723  0.01961115  0.86942756 #>  [7]  0.93479805  0.67331608  1.13090953 -1.15705773  y <- data.frame(   id = LETTERS[1:10],   amox = random_sir(10, ab = \"amox\", mo = \"Escherichia coli\"),   cipr = random_disk(10, ab = \"cipr\", mo = \"Escherichia coli\"),   gent = random_mic(10, ab = \"gent\", mo = \"Escherichia coli\"),   tobr = random_mic(10, ab = \"tobr\", mo = \"Escherichia coli\") ) y #>    id amox cipr gent tobr #> 1   A    R   27    8  0.5 #> 2   B    I   21    8    4 #> 3   C    S   22    2    1 #> 4   D    R   22    4    4 #> 5   E    S   19    8  0.5 #> 6   F    S   30    2    2 #> 7   G    R   20   16    4 #> 8   H    R   27    4    2 #> 9   I    S   20    1    1 #> 10  J    R   17   16    4 mean_amr_distance(y) #> ℹ Calculating mean AMR distance based on columns \"amox\", \"cipr\", \"gent\", #>   and \"tobr\" #>  [1]  0.27346725  0.04720942 -0.67302993  0.39497313 -0.68358519  0.01305317 #>  [7]  0.64812902  0.49329507 -0.98062442  0.46711247 y$amr_distance <- mean_amr_distance(y, where(is.mic)) #> Error in .subset(x, j): invalid subscript type 'list' y[order(y$amr_distance), ] #> Error in order(y$amr_distance): argument 1 is not a vector  if (require(\"dplyr\")) {   y %>%     mutate(       amr_distance = mean_amr_distance(y),       check_id_C = amr_distance_from_row(amr_distance, id == \"C\")     ) %>%     arrange(check_id_C) } #> ℹ Calculating mean AMR distance based on columns \"amox\", \"cipr\", \"gent\", #>   and \"tobr\" #>    id amox cipr gent tobr amr_distance check_id_C #> 1   C    S   22    2    1  -0.67302993 0.00000000 #> 2   E    S   19    8  0.5  -0.68358519 0.01055526 #> 3   I    S   20    1    1  -0.98062442 0.30759449 #> 4   F    S   30    2    2   0.01305317 0.68608310 #> 5   B    I   21    8    4   0.04720942 0.72023935 #> 6   A    R   27    8  0.5   0.27346725 0.94649718 #> 7   D    R   22    4    4   0.39497313 1.06800305 #> 8   J    R   17   16    4   0.46711247 1.14014240 #> 9   H    R   27    4    2   0.49329507 1.16632499 #> 10  G    R   20   16    4   0.64812902 1.32115894 if (require(\"dplyr\")) {   # support for groups   example_isolates %>%     filter(mo_genus() == \"Enterococcus\" & mo_species() != \"\") %>%     select(mo, TCY, carbapenems()) %>%     group_by(mo) %>%     mutate(dist = mean_amr_distance(.)) %>%     arrange(mo, dist) } #> ℹ Using column 'mo' as input for mo_genus() #> ℹ Using column 'mo' as input for mo_species() #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> ℹ Calculating mean AMR distance based on columns \"TCY\", \"IPM\", and \"MEM\" #> # A tibble: 63 × 5 #> # Groups:   mo [4] #>    mo           TCY   IPM   MEM     dist #>    <mo>         <sir> <sir> <sir>  <dbl> #>  1 B_ENTRC_AVIM   S     S     NA   0     #>  2 B_ENTRC_AVIM   S     S     NA   0     #>  3 B_ENTRC_CSSL   NA    S     NA  NA     #>  4 B_ENTRC_FACM   S     S     NA  -2.66  #>  5 B_ENTRC_FACM   S     R     R   -0.423 #>  6 B_ENTRC_FACM   S     R     R   -0.423 #>  7 B_ENTRC_FACM   NA    R     R    0.224 #>  8 B_ENTRC_FACM   NA    R     R    0.224 #>  9 B_ENTRC_FACM   NA    R     R    0.224 #> 10 B_ENTRC_FACM   NA    R     R    0.224 #> # ℹ 53 more rows"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"data set containing commonly used codes microorganisms, laboratory systems WHONET. Define set_mo_source(). searched using .mo() consequently mo_* functions.","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"","code":"microorganisms.codes"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"tibble 4 971 observations 2 variables: code Commonly used code microorganism. unique identifier. mo ID microorganism microorganisms data set","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/microorganisms.codes.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 4 971 Common Microorganism Codes — microorganisms.codes","text":"","code":"microorganisms.codes #> # A tibble: 4,971 × 2 #>    code  mo                #>    <chr> <mo>              #>  1 1011  B_GRAMP           #>  2 1012  B_GRAMP           #>  3 1013  B_GRAMN           #>  4 1014  B_GRAMN           #>  5 1015  F_YEAST           #>  6 103   B_ESCHR_COLI      #>  7 104   B_SLMNL_ENTR_ENTR #>  8 1100  B_STRPT           #>  9 1101  B_STRPT_VIRI      #> 10 1102  B_STRPT_HAEM      #> # ℹ 4,961 more rows  # 'ECO' or 'eco' is the WHONET code for E. coli: microorganisms.codes[microorganisms.codes$code == \"ECO\", ] #> # A tibble: 1 × 2 #>   code  mo           #>   <chr> <mo>         #> 1 ECO   B_ESCHR_COLI  # and therefore, 'eco' will be understood as E. coli in this package: mo_info(\"eco\") #> $mo #> [1] \"B_ESCHR_COLI\" #>  #> $rank #> [1] \"species\" #>  #> $kingdom #> [1] \"Bacteria\" #>  #> $phylum #> [1] \"Pseudomonadota\" #>  #> $class #> [1] \"Gammaproteobacteria\" #>  #> $order #> [1] \"Enterobacterales\" #>  #> $family #> [1] \"Enterobacteriaceae\" #>  #> $genus #> [1] \"Escherichia\" #>  #> $species #> [1] \"coli\" #>  #> $subspecies #> [1] \"\" #>  #> $status #> [1] \"accepted\" #>  #> $synonyms #> NULL #>  #> $gramstain #> [1] \"Gram-negative\" #>  #> $oxygen_tolerance #> [1] \"facultative anaerobe\" #>  #> $url #> [1] \"https://lpsn.dsmz.de/species/escherichia-coli\" #>  #> $ref #> [1] \"Castellani et al., 1919\" #>  #> $snomed #>  [1] \"1095001000112106\" \"715307006\"        \"737528008\"        \"416989002\"        #>  [5] \"116397003\"        \"414097009\"        \"414098004\"        \"414099007\"        #>  [9] \"414100004\"        \"116395006\"        \"735270003\"        \"116396007\"        #> [13] \"83285000\"         \"116394005\"        \"112283007\"        \"710886005\"        #> [17] \"710887001\"        \"710888006\"        \"710889003\"        \"414132004\"        #> [21] \"721892009\"        \"416812001\"        \"416740004\"        \"417216001\"        #> [25] \"457541006\"        \"710253004\"        \"416530004\"        \"417189006\"        #> [29] \"409800005\"        \"713925008\"        \"444771000124108\"  \"838549008\"        #>  #> $lpsn #> [1] \"776057\" #>  #> $mycobank #> [1] NA #>  #> $gbif #> [1] \"11286021\" #>  #> $group_members #> character(0) #>   # works for all AMR functions: mo_is_intrinsic_resistant(\"eco\", ab = \"vancomycin\") #> [1] TRUE"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"data set containing species groups microbiological complexes, used clinical breakpoints table.","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"","code":"microorganisms.groups"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"tibble 521 observations 4 variables: mo_group ID species group / microbiological complex mo ID microorganism belonging species group / microbiological complex mo_group_name Name species group / microbiological complex, retrieved mo_name() mo_name Name microorganism belonging species group / microbiological complex, retrieved mo_name()","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/microorganisms.groups.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 521 Microorganisms In Species Groups — microorganisms.groups","text":"","code":"microorganisms.groups #> # A tibble: 521 × 4 #>    mo_group       mo           mo_group_name                   mo_name           #>    <mo>           <mo>         <chr>                           <chr>             #>  1 B_ACNTB_BMNN-C B_ACNTB_BMNN Acinetobacter baumannii complex Acinetobacter ba… #>  2 B_ACNTB_BMNN-C B_ACNTB_CLCC Acinetobacter baumannii complex Acinetobacter ca… #>  3 B_ACNTB_BMNN-C B_ACNTB_LCTC Acinetobacter baumannii complex Acinetobacter di… #>  4 B_ACNTB_BMNN-C B_ACNTB_NSCM Acinetobacter baumannii complex Acinetobacter no… #>  5 B_ACNTB_BMNN-C B_ACNTB_PITT Acinetobacter baumannii complex Acinetobacter pi… #>  6 B_ACNTB_BMNN-C B_ACNTB_SFRT Acinetobacter baumannii complex Acinetobacter se… #>  7 B_BCTRD_FRGL-C B_BCTRD_FRGL Bacteroides fragilis complex    Bacteroides frag… #>  8 B_BCTRD_FRGL-C B_BCTRD_OVTS Bacteroides fragilis complex    Bacteroides ovat… #>  9 B_BCTRD_FRGL-C B_BCTRD_THTT Bacteroides fragilis complex    Bacteroides thet… #> 10 B_BCTRD_FRGL-C B_PHCCL_VLGT Bacteroides fragilis complex    Bacteroides vulg… #> # ℹ 511 more rows  # these are all species in the Bacteroides fragilis group, as per WHONET: microorganisms.groups[microorganisms.groups$mo_group == \"B_BCTRD_FRGL-C\", ] #> # A tibble: 5 × 4 #>   mo_group       mo           mo_group_name                mo_name               #>   <mo>           <mo>         <chr>                        <chr>                 #> 1 B_BCTRD_FRGL-C B_BCTRD_FRGL Bacteroides fragilis complex Bacteroides fragilis  #> 2 B_BCTRD_FRGL-C B_BCTRD_OVTS Bacteroides fragilis complex Bacteroides ovatus    #> 3 B_BCTRD_FRGL-C B_BCTRD_THTT Bacteroides fragilis complex Bacteroides thetaiot… #> 4 B_BCTRD_FRGL-C B_PHCCL_VLGT Bacteroides fragilis complex Bacteroides vulgatus  #> 5 B_BCTRD_FRGL-C B_PRBCT_DSTS Bacteroides fragilis complex Parabacteroides dist…"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":null,"dir":"Reference","previous_headings":"","what":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"data set containing full microbial taxonomy (last updated: June 24th, 2024) six kingdoms. data set backbone AMR package. MO codes can looked using .mo() microorganism properties can looked using mo_* functions. data set carefully crafted, yet made 100% reproducible public authoritative taxonomic sources (using script), namely: List Prokaryotic names Standing Nomenclature (LPSN) bacteria, MycoBank fungi, Global Biodiversity Information Facility (GBIF) others taxons.","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"","code":"microorganisms"},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"format","dir":"Reference","previous_headings":"","what":"Format","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"tibble 78 678 observations 26 variables: mo ID microorganism used package. unique identifier. fullname Full name, like \"Escherichia coli\". taxonomic ranks genus, species subspecies, 'pasted' text genus, species, subspecies. taxonomic ranks higher genus, name taxon. unique identifier. status  Status taxon, either \"accepted\", \"validly published\", \"synonym\", \"unknown\" kingdom, phylum, class, order, family, genus, species, subspecies Taxonomic rank microorganism. Note fungi, phylum equal taxonomic division. Also, fungi, subkingdom subdivision left since occur bacterial taxonomy. rank Text taxonomic rank microorganism, \"species\" \"genus\" ref Author(s) year related scientific publication. contains first surname year latest authors, e.g. \"Wallis et al. 2006 emend. Smith Jones 2018\" becomes \"Smith et al., 2018\". field directly retrieved source specified column source. Moreover, accents removed comply CRAN allows ASCII characters. oxygen_tolerance  Oxygen tolerance, either \"aerobe\", \"anaerobe\", \"anaerobe/microaerophile\", \"facultative anaerobe\", \"likely facultative anaerobe\", \"microaerophile\". data retrieved BacDive (see Source). Items contain \"likely\" missing BacDive extrapolated species within genus guess oxygen tolerance. Currently 68.3% ~39 000 bacteria data set contain oxygen tolerance. source Either \"GBIF\", \"LPSN\", \"MycoBank\", \"manually added\" (see Source) lpsn Identifier ('Record number') List Prokaryotic names Standing Nomenclature (LPSN). first/highest LPSN identifier keep one identifier per row. example, Acetobacter ascendens LPSN Record number 7864 11011. first available microorganisms data set. unique identifier, though available ~33 000 records. lpsn_parent LPSN identifier parent taxon lpsn_renamed_to LPSN identifier currently valid taxon mycobank Identifier ('MycoBank #') MycoBank. unique identifier, though available ~18 000 records. mycobank_parent MycoBank identifier parent taxon mycobank_renamed_to MycoBank identifier currently valid taxon gbif Identifier ('taxonID') Global Biodiversity Information Facility (GBIF). unique identifier, though available ~49 000 records. gbif_parent GBIF identifier parent taxon gbif_renamed_to GBIF identifier currently valid taxon prevalence Prevalence microorganism based Bartlett et al. (2022, doi:10.1099/mic.0.001269 ), see mo_matching_score() full explanation snomed Systematized Nomenclature Medicine (SNOMED) code microorganism, version July 16th, 2024 (see Source). Use mo_snomed() retrieve quickly, see mo_property().","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"Taxonomic entries imported order importance: List Prokaryotic names Standing Nomenclature (LPSN): Parte, AC et al. (2020). List Prokaryotic names Standing Nomenclature (LPSN) moves DSMZ. International Journal Systematic Evolutionary Microbiology, 70, 5607-5612; doi:10.1099/ijsem.0.004332 . Accessed https://lpsn.dsmz.de June 24th, 2024. MycoBank: Vincent, R et al (2013). MycoBank gearing new horizons. IMA Fungus, 4(2), 371-9; doi:10.5598/imafungus.2013.04.02.16 . Accessed https://www.mycobank.org June 24th, 2024. Global Biodiversity Information Facility (GBIF): GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset doi:10.15468/39omei . Accessed https://www.gbif.org June 24th, 2024. Furthermore, sources used additional details: BacDive: Reimer, LC et al. (2022). BacDive 2022: knowledge base standardized bacterial archaeal data. Nucleic Acids Res., 50(D1):D741-D74; doi:10.1093/nar/gkab961 . Accessed https://bacdive.dsmz.de July 16th, 2024. Systematized Nomenclature Medicine - Clinical Terms (SNOMED-CT): Public Health Information Network Vocabulary Access Distribution System (PHIN VADS). US Edition SNOMED CT 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). Accessed https://www.cdc.gov/phin/php/phinvads/ July 16th, 2024. Grimont et al. (2007). Antigenic Formulae Salmonella Serovars, 9th Edition. Collaborating Centre Reference Research Salmonella (WHOCC-SALM). Bartlett et al. (2022). comprehensive list bacterial pathogens infecting humans Microbiology 168:001269; doi:10.1099/mic.0.001269","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"Please note entries based LPSN, MycoBank, GBIF (see ). Since sources incorporate entries based (recent) publications International Journal Systematic Evolutionary Microbiology (IJSEM), can happen year publication sometimes later one might expect. example, Staphylococcus pettenkoferi described first time Diagnostic Microbiology Infectious Disease 2002 (doi:10.1016/s0732-8893(02)00399-1 ), 2007 publication IJSEM followed (doi:10.1099/ijs.0.64381-0 ). Consequently, AMR package returns 2007 mo_year(\"S. pettenkoferi\").","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"included-taxa","dir":"Reference","previous_headings":"","what":"Included Taxa","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"Included taxonomic data LPSN, MycoBank, GBIF : ~39 000 (sub)species kingdoms Archaea Bacteria ~28 000 species kingdom Fungi. kingdom Fungi large taxon almost 300,000 different (sub)species, microbial (rather macroscopic, like mushrooms). , fungi fit scope package. relevant fungi covered (species Aspergillus, Candida, Cryptococcus, Histoplasma, Pneumocystis, Saccharomyces Trichophyton). ~8 100 (sub)species kingdom Protozoa ~1 600 (sub)species 39 relevant genera kingdom Animalia (Strongyloides Taenia) ~22 000 previously accepted names included (sub)species (taxonomically renamed) complete taxonomic tree included (sub)species: kingdom subspecies identifier parent taxons year first author related scientific publication","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"manual-additions","dir":"Reference","previous_headings":"","what":"Manual additions","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"convenience, entries added manually: ~1 500 entries Salmonella, city-like serovars groups H 36 species groups (beta-haemolytic Streptococcus groups K, coagulase-negative Staphylococcus (CoNS), Mycobacterium tuberculosis complex, etc.), group compositions stored microorganisms.groups data set 1 entry Blastocystis (B.  hominis), although officially exist (Noel et al. 2005, PMID 15634993) 1 entry Moraxella (M. catarrhalis), formally named Branhamella catarrhalis (Catlin, 1970) though change never accepted within field clinical microbiology 8 'undefined' entries (unknown, unknown Gram-negatives, unknown Gram-positives, unknown yeast, unknown fungus, unknown anaerobic Gram-pos/Gram-neg bacteria) syntax used transform original data cleansed R format, can found .","code":""},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"direct-download","dir":"Reference","previous_headings":"","what":"Direct download","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"Like data sets package, data set publicly available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/microorganisms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Data Set with 78 678 Taxonomic Records of Microorganisms — microorganisms","text":"","code":"microorganisms #> # A tibble: 78,678 × 26 #>    mo          fullname   status kingdom phylum class order family genus species #>    <mo>        <chr>      <chr>  <chr>   <chr>  <chr> <chr> <chr>  <chr> <chr>   #>  1 B_GRAMN     (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  2 B_GRAMP     (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  3 B_ANAER-NEG (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  4 B_ANAER-POS (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  5 B_ANAER     (unknown … unkno… Bacter… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  6 F_FUNGUS    (unknown … unkno… Fungi   (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  7   UNKNOWN   (unknown … unkno… (unkno… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  8 P_PROTOZOAN (unknown … unkno… Protoz… (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #>  9 F_YEAST     (unknown … unkno… Fungi   (unkn… (unk… (unk… \"(unk… (unk… \"(unkn… #> 10 F_AABRN     Aabaarnia  unkno… Fungi   Ascom… Leca… Ostr… \"\"     Aaba… \"\"      #> # ℹ 78,668 more rows #> # ℹ 16 more variables: subspecies <chr>, rank <chr>, ref <chr>, #> #   oxygen_tolerance <chr>, source <chr>, lpsn <chr>, lpsn_parent <chr>, #> #   lpsn_renamed_to <chr>, mycobank <chr>, mycobank_parent <chr>, #> #   mycobank_renamed_to <chr>, gbif <chr>, gbif_parent <chr>, #> #   gbif_renamed_to <chr>, prevalence <dbl>, snomed <list>"},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate the Matching Score for Microorganisms — mo_matching_score","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"algorithm used .mo() mo_* functions determine probable match taxonomic records based user input.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"","code":"mo_matching_score(x, n)"},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"x user input value(s) n full taxonomic name, exists microorganisms$fullname","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"note","dir":"Reference","previous_headings":"","what":"Note","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"algorithm originally developed 2018 subsequently described : Berends MS et al. (2022). AMR: R Package Working Antimicrobial Resistance Data. Journal Statistical Software, 104(3), 1-31; doi:10.18637/jss.v104.i03 . Later, work Bartlett et al. bacterial pathogens infecting humans (2022, doi:10.1099/mic.0.001269 ) incorporated, optimalisations algorithm made.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"matching-score-for-microorganisms","dir":"Reference","previous_headings":"","what":"Matching Score for Microorganisms","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"ambiguous user input .mo() mo_* functions, returned results chosen based matching score using mo_matching_score(). matching score \\(m\\), calculated : $$m_{(x, n)} = \\frac{l_{n} - 0.5 \\cdot \\min \\begin{cases}l_{n} \\\\ \\textrm{lev}(x, n)\\end{cases}}{l_{n} \\cdot p_{n} \\cdot k_{n}}$$ : \\(x\\) user input; \\(n\\) taxonomic name (genus, species, subspecies); \\(l_n\\) length \\(n\\); \\(lev\\) Levenshtein distance function (counting insertion 1, deletion substitution 2) needed change \\(x\\) \\(n\\); \\(p_n\\) human pathogenic prevalence group \\(n\\), described ; \\(k_n\\) taxonomic kingdom \\(n\\), set Bacteria = 1, Fungi = 1.25, Protozoa = 1.5, Chromista = 1.75, Archaea = 2, others = 3. grouping human pathogenic prevalence \\(p\\) based recent work Bartlett et al. (2022, doi:10.1099/mic.0.001269 ) extensively studied medical-scientific literature categorise bacterial species groups: Established, taxonomic species infected least three persons three references. records prevalence = 1.15 microorganisms data set; Putative, taxonomic species fewer three known cases. records prevalence = 1.25 microorganisms data set. Furthermore, Genera World Health Organization's () Priority Pathogen List prevalence = 1.0 microorganisms data set; genus present established list also prevalence = 1.15 microorganisms data set; genus present putative list prevalence = 1.25 microorganisms data set; species subspecies genus present two aforementioned groups, prevalence = 1.5 microorganisms data set; non-bacterial genus, species subspecies genus present following list, prevalence = 1.25 microorganisms data set: Absidia, Acanthamoeba, Acremonium, Actinomucor, Aedes, Alternaria, Amoeba, Ancylostoma, Angiostrongylus, Anisakis, Anopheles, Apophysomyces, Arthroderma, Aspergillus, Aureobasidium, Basidiobolus, Beauveria, Bipolaris, Blastobotrys, Blastocystis, Blastomyces, Candida, Capillaria, Chaetomium, Chilomastix, Chrysonilia, Chrysosporium, Cladophialophora, Cladosporium, Clavispora, Coccidioides, Cokeromyces, Conidiobolus, Coniochaeta, Contracaecum, Cordylobia, Cryptococcus, Cryptosporidium, Cunninghamella, Curvularia, Cyberlindnera, Debaryozyma, Demodex, Dermatobia, Dientamoeba, Diphyllobothrium, Dirofilaria, Echinostoma, Entamoeba, Enterobius, Epidermophyton, Exidia, Exophiala, Exserohilum, Fasciola, Fonsecaea, Fusarium, Geotrichum, Giardia, Graphium, Haloarcula, Halobacterium, Halococcus, Hansenula, Hendersonula, Heterophyes, Histomonas, Histoplasma, Hortaea, Hymenolepis, Hypomyces, Hysterothylacium, Kloeckera, Kluyveromyces, Kodamaea, Lacazia, Leishmania, Lichtheimia, Lodderomyces, Lomentospora, Madurella, Malassezia, Malbranchea, Metagonimus, Meyerozyma, Microsporidium, Microsporum, Millerozyma, Mortierella, Mucor, Mycocentrospora, Nannizzia, Necator, Nectria, Ochroconis, Oesophagostomum, Oidiodendron, Opisthorchis, Paecilomyces, Paracoccidioides, Pediculus, Penicillium, Phaeoacremonium, Phaeomoniella, Phialophora, Phlebotomus, Phoma, Pichia, Piedraia, Pithomyces, Pityrosporum, Pneumocystis, Pseudallescheria, Pseudoscopulariopsis, Pseudoterranova, Pulex, Purpureocillium, Quambalaria, Rhinocladiella, Rhizomucor, Rhizopus, Rhodotorula, Saccharomyces, Saksenaea, Saprochaete, Sarcoptes, Scedosporium, Schistosoma, Schizosaccharomyces, Scolecobasidium, Scopulariopsis, Scytalidium, Spirometra, Sporobolomyces, Sporopachydermia, Sporothrix, Sporotrichum, Stachybotrys, Strongyloides, Syncephalastrum, Syngamus, Taenia, Talaromyces, Teleomorph, Toxocara, Trichinella, Trichobilharzia, Trichoderma, Trichomonas, Trichophyton, Trichosporon, Trichostrongylus, Trichuris, Tritirachium, Trombicula, Trypanosoma, Tunga, Ulocladium, Ustilago, Verticillium, Wallemia, Wangiella, Wickerhamomyces, Wuchereria, Yarrowia, Zygosaccharomyces; records prevalence = 2.0 microorganisms data set. calculating matching score, characters \\(x\\) \\(n\\) ignored -Z, -z, 0-9, spaces parentheses. matches sorted descending matching score user input values, top match returned. lead effect e.g., \"E. coli\" return microbial ID Escherichia coli (\\(m = 0.688\\), highly prevalent microorganism found humans) Entamoeba coli (\\(m = 0.381\\), less prevalent microorganism humans), although latter alphabetically come first.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_matching_score.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate the Matching Score for Microorganisms — mo_matching_score","text":"","code":"mo_reset_session() #> ℹ Reset 17 previously matched input values.  as.mo(\"E. coli\") #> Class 'mo' #> [1] B_ESCHR_COLI 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) #>  #> 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.  mo_matching_score(   x = \"E. coli\",   n = c(\"Escherichia coli\", \"Entamoeba coli\") ) #> [1] 0.6875000 0.3809524"},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":null,"dir":"Reference","previous_headings":"","what":"Get Properties of a Microorganism — mo_property","title":"Get Properties of a Microorganism — mo_property","text":"Use functions return specific property microorganism based latest accepted taxonomy. input values evaluated internally .mo(), makes possible use microbial abbreviations, codes names input. See Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Get Properties of a Microorganism — mo_property","text":"","code":"mo_name(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_fullname(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_shortname(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_subspecies(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_species(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_genus(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_family(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_order(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_class(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_phylum(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_kingdom(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_domain(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_type(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_status(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_pathogenicity(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_gramstain(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_gram_negative(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_gram_positive(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_yeast(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_intrinsic_resistant(x, ab, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_oxygen_tolerance(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_is_anaerobic(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_snomed(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_ref(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_authors(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_year(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_lpsn(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_mycobank(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_gbif(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_rank(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_taxonomy(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_synonyms(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_current(x, language = get_AMR_locale(), ...)  mo_group_members(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_info(x, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_url(x, open = FALSE, language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)  mo_property(x, property = \"fullname\", language = get_AMR_locale(),   keep_synonyms = getOption(\"AMR_keep_synonyms\", FALSE), ...)"},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Get Properties of a Microorganism — mo_property","text":"x character (vector) can coerced valid microorganism code .mo(). Can left blank auto-guessing column containing microorganism codes used data set, see Examples. language language translate text like \"growth\", defaults system language (see get_AMR_locale()) keep_synonyms logical indicate old, previously valid taxonomic names must preserved corrected currently accepted names. default FALSE, return note old taxonomic names processed. default can set package option AMR_keep_synonyms, .e. options(AMR_keep_synonyms = TRUE) options(AMR_keep_synonyms = FALSE). ... arguments passed .mo(), 'minimum_matching_score', 'ignore_pattern', 'remove_from_input' ab (vector ) text can coerced valid antibiotic drug code .ab() open browse URL using browseURL() property one column names microorganisms data set: \"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\", \"snomed\", must \"shortname\"","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Get Properties of a Microorganism — mo_property","text":"integer case mo_year() ordered factor case mo_pathogenicity() list case mo_taxonomy(), mo_synonyms(), mo_snomed(), mo_info() logical case mo_is_anaerobic(), mo_is_gram_negative(), mo_is_gram_positive(), mo_is_intrinsic_resistant(), mo_is_yeast() named character case mo_synonyms() mo_url() character cases","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Get Properties of a Microorganism — mo_property","text":"functions , default, keep old taxonomic properties, synonyms automatically replaced current taxonomy. Take example Enterobacter aerogenes, initially named 1960 renamed Klebsiella aerogenes 2017: mo_genus(\"Enterobacter aerogenes\") return \"Klebsiella\" (note renaming) mo_genus(\"Enterobacter aerogenes\", keep_synonyms = TRUE) return \"Enterobacter\" (-per-session warning name outdated) mo_ref(\"Enterobacter aerogenes\") return \"Tindall et al., 2017\" (note renaming) mo_ref(\"Enterobacter aerogenes\", keep_synonyms = TRUE) return \"Hormaeche et al., 1960\" (-per-session warning name outdated) short name (mo_shortname()) returns first character genus full species, \"E. coli\", species subspecies. Exceptions abbreviations staphylococci (\"CoNS\", Coagulase-Negative Staphylococci) beta-haemolytic streptococci (\"GBS\", Group B Streptococci). Please bear mind e.g. E. coli mean Escherichia coli (kingdom Bacteria) well Entamoeba coli (kingdom Protozoa). Returning full name done using .mo() internally, giving priority bacteria human pathogens, .e. \"E. coli\" considered Escherichia coli. result, mo_fullname(mo_shortname(\"Entamoeba coli\")) returns \"Escherichia coli\". Since top-level taxonomy sometimes referred 'kingdom' sometimes 'domain', functions mo_kingdom() mo_domain() return exact results. Determination human pathogenicity (mo_pathogenicity()) strongly based Bartlett et al. (2022, doi:10.1099/mic.0.001269 ). function returns factor levels Pathogenic, Potentially pathogenic, Non-pathogenic, Unknown. Determination Gram stain (mo_gramstain()) based taxonomic kingdom phylum. Originally, Cavalier-Smith defined -called subkingdoms Negibacteria Posibacteria (2002, PMID 11837318), considered phyla Posibacteria: Actinobacteria, Chloroflexi, Firmicutes, Tenericutes. phyla later renamed Actinomycetota, Chloroflexota, Bacillota, Mycoplasmatota (2021, PMID 34694987). Bacteria phyla considered Gram-positive AMR package, except members class Negativicutes (within phylum Bacillota) Gram-negative. bacteria considered Gram-negative. Species outside kingdom Bacteria return value NA. Functions mo_is_gram_negative() mo_is_gram_positive() always return TRUE FALSE (NA input NA MO code UNKNOWN), thus always return FALSE species outside taxonomic kingdom Bacteria. Determination yeasts (mo_is_yeast()) based taxonomic kingdom class. Budding yeasts yeasts reproduce asexually process called budding, new cell develops small protrusion parent cell. Taxonomically, members phylum Ascomycota, class Saccharomycetes (also called Hemiascomycetes) Pichiomycetes. True yeasts quite specifically refers yeasts underlying order Saccharomycetales (Saccharomyces cerevisiae). Thus, microorganisms member taxonomic class Saccharomycetes Pichiomycetes, function return TRUE. returns FALSE otherwise (NA input NA MO code UNKNOWN). Determination intrinsic resistance (mo_is_intrinsic_resistant()) based intrinsic_resistant data set, based 'EUCAST Expert Rules' 'EUCAST Intrinsic Resistance Unusual Phenotypes' v3.3 (2021). mo_is_intrinsic_resistant() function can vectorised argument x (input microorganisms) ab (input antibiotics). Determination bacterial oxygen tolerance (mo_oxygen_tolerance()) based BacDive, see Source. function mo_is_anaerobic() returns TRUE oxygen tolerance \"anaerobe\", indicting obligate anaerobic species genus. always returns FALSE species outside taxonomic kingdom Bacteria. function mo_url() return direct URL online database entry, also shows scientific reference concerned species. MycoBank URL used fungi wherever available , LPSN URL bacteria wherever available, GBIF link otherwise. SNOMED codes (mo_snomed()) last updated July 16th, 2024. See Source microorganisms data set info. Old taxonomic names (-called 'synonyms') can retrieved mo_synonyms() (scientific reference name), current taxonomic name can retrieved mo_current(). functions return full names. output translated possible.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"matching-score-for-microorganisms","dir":"Reference","previous_headings":"","what":"Matching Score for Microorganisms","title":"Get Properties of a Microorganism — mo_property","text":"function uses .mo() internally, uses advanced algorithm translate arbitrary user input valid taxonomy using -called matching score. can read public algorithm MO matching score page.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Get Properties of a Microorganism — mo_property","text":"Berends MS et al. (2022). AMR: R Package Working Antimicrobial Resistance Data. Journal Statistical Software, 104(3), 1-31; doi:10.18637/jss.v104.i03 Parte, AC et al. (2020). List Prokaryotic names Standing Nomenclature (LPSN) moves DSMZ. International Journal Systematic Evolutionary Microbiology, 70, 5607-5612; doi:10.1099/ijsem.0.004332 . Accessed https://lpsn.dsmz.de June 24th, 2024. Vincent, R et al (2013). MycoBank gearing new horizons. IMA Fungus, 4(2), 371-9; doi:10.5598/imafungus.2013.04.02.16 . Accessed https://www.mycobank.org June 24th, 2024. GBIF Secretariat (2023). GBIF Backbone Taxonomy. Checklist dataset doi:10.15468/39omei . Accessed https://www.gbif.org June 24th, 2024. Reimer, LC et al. (2022). BacDive 2022: knowledge base standardized bacterial archaeal data. Nucleic Acids Res., 50(D1):D741-D74; doi:10.1093/nar/gkab961 . Accessed https://bacdive.dsmz.de July 16th, 2024. Public Health Information Network Vocabulary Access Distribution System (PHIN VADS). US Edition SNOMED CT 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: https://www.cdc.gov/phin/php/phinvads/ Bartlett et al. (2022). comprehensive list bacterial pathogens infecting humans Microbiology 168:001269; doi:10.1099/mic.0.001269","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"reference-data-publicly-available","dir":"Reference","previous_headings":"","what":"Reference Data Publicly Available","title":"Get Properties of a Microorganism — mo_property","text":"data sets AMR package (microorganisms, antibiotics, SIR interpretation, EUCAST rules, etc.) publicly freely available download following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, Stata. also provide tab-separated plain text files machine-readable suitable input software program, laboratory information systems. Please visit website download links. actual files course available GitHub repository.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/mo_property.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Get Properties of a Microorganism — mo_property","text":"","code":"# taxonomic tree -----------------------------------------------------------  mo_kingdom(\"Klebsiella pneumoniae\") #> [1] \"Bacteria\" mo_phylum(\"Klebsiella pneumoniae\") #> [1] \"Pseudomonadota\" mo_class(\"Klebsiella pneumoniae\") #> [1] \"Gammaproteobacteria\" mo_order(\"Klebsiella pneumoniae\") #> [1] \"Enterobacterales\" mo_family(\"Klebsiella pneumoniae\") #> [1] \"Enterobacteriaceae\" mo_genus(\"Klebsiella pneumoniae\") #> [1] \"Klebsiella\" mo_species(\"Klebsiella pneumoniae\") #> [1] \"pneumoniae\" mo_subspecies(\"Klebsiella pneumoniae\") #> [1] \"\"   # full names and short names -----------------------------------------------  mo_name(\"Klebsiella pneumoniae\") #> [1] \"Klebsiella pneumoniae\" mo_fullname(\"Klebsiella pneumoniae\") #> [1] \"Klebsiella pneumoniae\" mo_shortname(\"Klebsiella pneumoniae\") #> [1] \"K. pneumoniae\"   # other properties ---------------------------------------------------------  mo_pathogenicity(\"Klebsiella pneumoniae\") #> [1] Pathogenic #> Levels: Pathogenic < Potentially pathogenic < Non-pathogenic < Unknown mo_gramstain(\"Klebsiella pneumoniae\") #> [1] \"Gram-negative\" mo_snomed(\"Klebsiella pneumoniae\") #> [[1]] #> [1] \"1098101000112102\" \"446870005\"        \"1098201000112108\" \"409801009\"        #> [5] \"56415008\"         \"714315002\"        \"713926009\"        #>  mo_type(\"Klebsiella pneumoniae\") #> [1] \"Bacteria\" mo_rank(\"Klebsiella pneumoniae\") #> [1] \"species\" mo_url(\"Klebsiella pneumoniae\") #>                                Klebsiella pneumoniae  #> \"https://lpsn.dsmz.de/species/klebsiella-pneumoniae\"  mo_is_yeast(c(\"Candida\", \"Trichophyton\", \"Klebsiella\")) #> [1]  TRUE FALSE FALSE  mo_group_members(c(\"Streptococcus group A\",                    \"Streptococcus group C\",                    \"Streptococcus group G\",                    \"Streptococcus group L\")) #> $`Streptococcus Group A` #> [1] \"Streptococcus pyogenes\" #>  #> $`Streptococcus Group C` #> [1] \"Streptococcus dysgalactiae\"              #> [2] \"Streptococcus dysgalactiae dysgalactiae\" #> [3] \"Streptococcus dysgalactiae equisimilis\"  #> [4] \"Streptococcus equi\"                      #> [5] \"Streptococcus equi equi\"                 #> [6] \"Streptococcus equi ruminatorum\"          #> [7] \"Streptococcus equi zooepidemicus\"        #>  #> $`Streptococcus Group G` #> [1] \"Streptococcus canis\"                     #> [2] \"Streptococcus dysgalactiae\"              #> [3] \"Streptococcus dysgalactiae dysgalactiae\" #> [4] \"Streptococcus dysgalactiae equisimilis\"  #>  #> $`Streptococcus Group L` #> [1] \"Streptococcus dysgalactiae\"              #> [2] \"Streptococcus dysgalactiae dysgalactiae\" #> [3] \"Streptococcus dysgalactiae equisimilis\"  #>    # scientific reference -----------------------------------------------------  mo_ref(\"Klebsiella aerogenes\") #> [1] \"Tindall et al., 2017\" mo_authors(\"Klebsiella aerogenes\") #> [1] \"Tindall et al.\" mo_year(\"Klebsiella aerogenes\") #> [1] 2017 mo_synonyms(\"Klebsiella aerogenes\") #>   Hormaeche et al., 1960     Bascomb et al., 1971  #> \"Enterobacter aerogenes\"     \"Klebsiella mobilis\"  mo_lpsn(\"Klebsiella aerogenes\") #> [1] \"777146\" mo_gbif(\"Klebsiella aerogenes\") #> [1] \"9281703\" mo_mycobank(\"Candida albicans\") #> [1] \"256187\" mo_mycobank(\"Candida krusei\") #> [1] \"337013\" mo_mycobank(\"Candida krusei\", keep_synonyms = TRUE) #> Warning: Function as.mo() returned one old taxonomic name. Use as.mo(..., #> keep_synonyms = FALSE) to clean the input to currently accepted taxonomic #> names, or set the R option AMR_keep_synonyms to FALSE. This warning #> will be shown once per session. #> [1] \"268707\"   # abbreviations known in the field -----------------------------------------  mo_genus(\"MRSA\") #> [1] \"Staphylococcus\" mo_species(\"MRSA\") #> [1] \"aureus\" mo_shortname(\"VISA\") #> [1] \"S. aureus\" mo_gramstain(\"VISA\") #> [1] \"Gram-positive\"  mo_genus(\"EHEC\") #> [1] \"Escherichia\" mo_species(\"EIEC\") #> [1] \"coli\" mo_name(\"UPEC\") #> [1] \"Escherichia coli\"   # known subspecies ---------------------------------------------------------  mo_fullname(\"K. pneu rh\") #> [1] \"Klebsiella pneumoniae rhinoscleromatis\" mo_shortname(\"K. pneu rh\") #> [1] \"K. pneumoniae\"  # \\donttest{ # Becker classification, see ?as.mo ----------------------------------------  mo_fullname(\"Staph epidermidis\") #> [1] \"Staphylococcus epidermidis\" mo_fullname(\"Staph epidermidis\", Becker = TRUE) #> [1] \"Coagulase-negative Staphylococcus (CoNS)\" mo_shortname(\"Staph epidermidis\") #> [1] \"S. epidermidis\" mo_shortname(\"Staph epidermidis\", Becker = TRUE) #> [1] \"CoNS\"   # Lancefield classification, see ?as.mo ------------------------------------  mo_fullname(\"Strep agalactiae\") #> [1] \"Streptococcus agalactiae\" mo_fullname(\"Strep agalactiae\", Lancefield = TRUE) #> [1] \"Streptococcus Group B\" mo_shortname(\"Strep agalactiae\") #> [1] \"S. agalactiae\" mo_shortname(\"Strep agalactiae\", Lancefield = TRUE) #> [1] \"GBS\"   # language support  --------------------------------------------------------  mo_gramstain(\"Klebsiella pneumoniae\", language = \"de\") # German #> [1] \"Gramnegativ\" mo_gramstain(\"Klebsiella pneumoniae\", language = \"nl\") # Dutch #> [1] \"Gram-negatief\" mo_gramstain(\"Klebsiella pneumoniae\", language = \"es\") # Spanish #> [1] \"Gram negativo\" mo_gramstain(\"Klebsiella pneumoniae\", language = \"el\") # Greek #> [1] \"Αρνητικό κατά Gram\" mo_gramstain(\"Klebsiella pneumoniae\", language = \"uk\") # Ukrainian #> [1] \"Грамнегативні\"  # mo_type is equal to mo_kingdom, but mo_kingdom will remain untranslated mo_kingdom(\"Klebsiella pneumoniae\") #> [1] \"Bacteria\" mo_type(\"Klebsiella pneumoniae\") #> [1] \"Bacteria\" mo_kingdom(\"Klebsiella pneumoniae\", language = \"zh\") # Chinese, no effect #> [1] \"Bacteria\" mo_type(\"Klebsiella pneumoniae\", language = \"zh\") # Chinese, translated #> [1] \"细菌\"  mo_fullname(\"S. pyogenes\", Lancefield = TRUE, language = \"de\") #> [1] \"Streptococcus Gruppe A\" mo_fullname(\"S. pyogenes\", Lancefield = TRUE, language = \"uk\") #> [1] \"Streptococcus Група A\"   # other --------------------------------------------------------------------  # gram stains and intrinsic resistance can be used as a filter in dplyr verbs if (require(\"dplyr\")) {   example_isolates %>%     filter(mo_is_gram_positive()) %>%     count(mo_genus(), sort = TRUE) } #> ℹ Using column 'mo' as input for mo_is_gram_positive() #> ℹ Using column 'mo' as input for mo_genus() #> # A tibble: 18 × 2 #>    `mo_genus()`        n #>    <chr>           <int> #>  1 Staphylococcus    840 #>  2 Streptococcus     275 #>  3 Enterococcus       83 #>  4 Corynebacterium    17 #>  5 Micrococcus         6 #>  6 Gemella             3 #>  7 Aerococcus          2 #>  8 Cutibacterium       1 #>  9 Dermabacter         1 #> 10 Fusibacter          1 #> 11 Globicatella        1 #> 12 Granulicatella      1 #> 13 Lactobacillus       1 #> 14 Leuconostoc         1 #> 15 Listeria            1 #> 16 Paenibacillus       1 #> 17 Rothia              1 #> 18 Schaalia            1 if (require(\"dplyr\")) {   example_isolates %>%     filter(mo_is_intrinsic_resistant(ab = \"vanco\")) %>%     count(mo_genus(), sort = TRUE) } #> ℹ Using column 'mo' as input for mo_is_intrinsic_resistant() #> ℹ Using column 'mo' as input for mo_genus() #> # A tibble: 20 × 2 #>    `mo_genus()`         n #>    <chr>            <int> #>  1 Escherichia        467 #>  2 Klebsiella          77 #>  3 Proteus             39 #>  4 Pseudomonas         30 #>  5 Serratia            25 #>  6 Enterobacter        23 #>  7 Citrobacter         11 #>  8 Haemophilus          8 #>  9 Acinetobacter        6 #> 10 Morganella           6 #> 11 Pantoea              4 #> 12 Salmonella           3 #> 13 Neisseria            2 #> 14 Stenotrophomonas     2 #> 15 Campylobacter        1 #> 16 Enterococcus         1 #> 17 Hafnia               1 #> 18 Lactobacillus        1 #> 19 Leuconostoc          1 #> 20 Pseudescherichia     1  # get a list with the complete taxonomy (from kingdom to subspecies) mo_taxonomy(\"Klebsiella pneumoniae\") #> $kingdom #> [1] \"Bacteria\" #>  #> $phylum #> [1] \"Pseudomonadota\" #>  #> $class #> [1] \"Gammaproteobacteria\" #>  #> $order #> [1] \"Enterobacterales\" #>  #> $family #> [1] \"Enterobacteriaceae\" #>  #> $genus #> [1] \"Klebsiella\" #>  #> $species #> [1] \"pneumoniae\" #>  #> $subspecies #> [1] \"\" #>   # get a list with the taxonomy, the authors, Gram-stain, # SNOMED codes, and URL to the online database mo_info(\"Klebsiella pneumoniae\") #> $mo #> [1] \"B_KLBSL_PNMN\" #>  #> $rank #> [1] \"species\" #>  #> $kingdom #> [1] \"Bacteria\" #>  #> $phylum #> [1] \"Pseudomonadota\" #>  #> $class #> [1] \"Gammaproteobacteria\" #>  #> $order #> [1] \"Enterobacterales\" #>  #> $family #> [1] \"Enterobacteriaceae\" #>  #> $genus #> [1] \"Klebsiella\" #>  #> $species #> [1] \"pneumoniae\" #>  #> $subspecies #> [1] \"\" #>  #> $status #> [1] \"accepted\" #>  #> $synonyms #> NULL #>  #> $gramstain #> [1] \"Gram-negative\" #>  #> $oxygen_tolerance #> [1] \"facultative anaerobe\" #>  #> $url #> [1] \"https://lpsn.dsmz.de/species/klebsiella-pneumoniae\" #>  #> $ref #> [1] \"Trevisan, 1887\" #>  #> $snomed #> [1] \"1098101000112102\" \"446870005\"        \"1098201000112108\" \"409801009\"        #> [5] \"56415008\"         \"714315002\"        \"713926009\"        #>  #> $lpsn #> [1] \"777151\" #>  #> $mycobank #> [1] NA #>  #> $gbif #> [1] \"3221874\" #>  #> $group_members #> character(0) #>  # }"},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":null,"dir":"Reference","previous_headings":"","what":"User-Defined Reference Data Set for Microorganisms — mo_source","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"functions can used predefine reference used .mo() consequently mo_* functions (mo_genus() mo_gramstain()). fastest way organisation (analysis) specific codes picked translated package, since bother setting .","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"","code":"set_mo_source(path, destination = getOption(\"AMR_mo_source\",   \"~/mo_source.rds\"))  get_mo_source(destination = getOption(\"AMR_mo_source\", \"~/mo_source.rds\"))"},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"path location reference file, can text file (comma-, tab- pipe-separated) Excel file (see Details). Can also \"\", NULL FALSE delete reference file. destination destination compressed data file - default user's home directory.","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"reference file can text file separated commas (CSV) tabs pipes, Excel file (either 'xls' 'xlsx' format) R object file (extension '.rds'). use Excel file, need readxl package installed. set_mo_source() check file validity: must data.frame, must column named \"mo\" contains values microorganisms$mo microorganisms$fullname must reference column defined values. tests pass, set_mo_source() read file R ask export \"~/mo_source.rds\". CRAN policy disallows packages write file system, although 'exceptions may allowed interactive sessions package obtains confirmation user'. reason, function works interactive sessions user can specifically confirm allow file created. destination file can set destination argument defaults user's home directory. can also set package option AMR_mo_source, e.g. options(AMR_mo_source = \"/location/file.rds\"). created compressed data file \"mo_source.rds\" used default MO determination (function .mo() consequently mo_* functions like mo_genus() mo_gramstain()). location timestamp original file saved attribute compressed data file. function get_mo_source() return data set reading \"mo_source.rds\" readRDS(). original file changed (checking location timestamp original file), call set_mo_source() update data file automatically used interactive session. Reading Excel file (.xlsx) one row size 8-9 kB. compressed file created set_mo_source() size 0.1 kB can read get_mo_source() couple microseconds (millionths second).","code":""},{"path":"https://msberends.github.io/AMR/reference/mo_source.html","id":"how-to-setup","dir":"Reference","previous_headings":"","what":"How to Setup","title":"User-Defined Reference Data Set for Microorganisms — mo_source","text":"Imagine data sheet Excel file. first column contains organisation specific codes, second column contains valid taxonomic names:   save \"/Users//Documents/ourcodes.xlsx\". Now set source:   now created file \"~/mo_source.rds\" contents Excel file. first column foreign values 'mo' column kept creating RDS file. now can use functions:   edit Excel file , say, adding row 4 like :   ...new usage MO function package update data file:   delete reference data file, just use \"\", NULL FALSE input set_mo_source():   original file (previous case Excel file) moved deleted, mo_source.rds file removed upon next use .mo() mo_* function.","code":"|         A          |            B          | --|--------------------|-----------------------| 1 | Organisation XYZ   | mo                    | 2 | lab_mo_ecoli       | Escherichia coli      | 3 | lab_mo_kpneumoniae | Klebsiella pneumoniae | 4 |                    |                       | set_mo_source(\"/Users/me/Documents/ourcodes.xlsx\") #> NOTE: Created mo_source file '/Users/me/mo_source.rds' (0.3 kB) from #>       '/Users/me/Documents/ourcodes.xlsx' (9 kB), columns #>       \"Organisation XYZ\" and \"mo\" as.mo(\"lab_mo_ecoli\") #> Class 'mo' #> [1] B_ESCHR_COLI  mo_genus(\"lab_mo_kpneumoniae\") #> [1] \"Klebsiella\"  # other input values still work too as.mo(c(\"Escherichia coli\", \"E. coli\", \"lab_mo_ecoli\")) #> NOTE: Translation to one microorganism was guessed with uncertainty. #>       Use mo_uncertainties() to review it. #> Class 'mo' #> [1] B_ESCHR_COLI B_ESCHR_COLI B_ESCHR_COLI |         A          |            B          | --|--------------------|-----------------------| 1 | Organisation XYZ   | mo                    | 2 | lab_mo_ecoli       | Escherichia coli      | 3 | lab_mo_kpneumoniae | Klebsiella pneumoniae | 4 | lab_Staph_aureus   | Staphylococcus aureus | 5 |                    |                       | as.mo(\"lab_mo_ecoli\") #> NOTE: Updated mo_source file '/Users/me/mo_source.rds' (0.3 kB) from #>       '/Users/me/Documents/ourcodes.xlsx' (9 kB), columns #>        \"Organisation XYZ\" and \"mo\" #> Class 'mo' #> [1] B_ESCHR_COLI  mo_genus(\"lab_Staph_aureus\") #> [1] \"Staphylococcus\" set_mo_source(NULL) #> Removed mo_source file '/Users/me/mo_source.rds'"},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":null,"dir":"Reference","previous_headings":"","what":"Principal Component Analysis (for AMR) — pca","title":"Principal Component Analysis (for AMR) — pca","text":"Performs principal component analysis (PCA) based data set automatic determination afterwards plotting groups labels, automatic filtering suitable (.e. non-empty numeric) variables.","code":""},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Principal Component Analysis (for AMR) — pca","text":"","code":"pca(x, ..., retx = TRUE, center = TRUE, scale. = TRUE, tol = NULL,   rank. = NULL)"},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Principal Component Analysis (for AMR) — pca","text":"x data.frame containing numeric columns ... columns x selected PCA, can unquoted since supports quasiquotation. retx logical value indicating whether rotated variables     returned. center logical value indicating whether variables     shifted zero centered. Alternately, vector     length equal number columns x can supplied.     value passed scale. scale. logical value indicating whether variables     scaled unit variance analysis takes     place.  default FALSE consistency S,     general scaling advisable.  Alternatively, vector length     equal number columns x can supplied.      value passed scale. tol value indicating magnitude components     omitted. (Components omitted     standard deviations less equal tol times     standard deviation first component.)  default null     setting, components omitted (unless rank. specified     less min(dim(x)).).  settings tol     tol = 0 tol = sqrt(.Machine$double.eps),     omit essentially constant components. rank. optionally, number specifying maximal rank, .e.,     maximal number principal components used.  Can set     alternative addition tol, useful notably     desired rank considerably smaller dimensions matrix.","code":""},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Principal Component Analysis (for AMR) — pca","text":"object classes pca prcomp","code":""},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Principal Component Analysis (for AMR) — pca","text":"pca() function takes data.frame input performs actual PCA R function prcomp(). result pca() function prcomp object, additional attribute non_numeric_cols vector column names columns contain numeric values. probably groups labels, used ggplot_pca().","code":""},{"path":"https://msberends.github.io/AMR/reference/pca.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Principal Component Analysis (for AMR) — pca","text":"","code":"# `example_isolates` is a data set available in the AMR package. # See ?example_isolates.  # \\donttest{ if (require(\"dplyr\")) {   # calculate the resistance per group first   resistance_data <- example_isolates %>%     group_by(       order = mo_order(mo), # group on anything, like order       genus = mo_genus(mo)     ) %>% #   and genus as we do here;     filter(n() >= 30) %>% # filter on only 30 results per group     summarise_if(is.sir, resistance) # then get resistance of all drugs    # now conduct PCA for certain antimicrobial drugs   pca_result <- resistance_data %>%     pca(AMC, CXM, CTX, CAZ, GEN, TOB, TMP, SXT)    pca_result   summary(pca_result)    # old base R plotting method:   biplot(pca_result)   # new ggplot2 plotting method using this package:   if (require(\"ggplot2\")) {     ggplot_pca(pca_result)      ggplot_pca(pca_result) +       scale_colour_viridis_d() +       labs(title = \"Title here\")   } } #> Warning: There were 73 warnings in `summarise()`. #> The first warning was: #> ℹ In argument: `PEN = (function (..., minimum = 30, as_percent = FALSE, #>   only_all_tested = FALSE) ...`. #> ℹ In group 5: `order = \"Lactobacillales\"` and `genus = \"Enterococcus\"`. #> Caused by warning: #> ! Introducing NA: only 14 results available for PEN in group: order = #> \"Lactobacillales\", genus = \"Enterococcus\" (minimum = 30). #> ℹ Run `dplyr::last_dplyr_warnings()` to see the 72 remaining warnings. #> ℹ Columns selected for PCA: \"AMC\", \"CAZ\", \"CTX\", \"CXM\", \"GEN\", \"SXT\", #>   \"TMP\", and \"TOB\". Total observations available: 7. #> Groups (n=4, named as 'order'): #> [1] \"Caryophanales\"    \"Enterobacterales\" \"Lactobacillales\"  \"Pseudomonadales\"  #>    # }"},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":null,"dir":"Reference","previous_headings":"","what":"Plotting Helpers for AMR Data Analysis — plot","title":"Plotting Helpers for AMR Data Analysis — plot","text":"Functions plot classes sir, mic disk, support base R ggplot2. Especially scale_*_mic() functions relevant wrappers plot MIC values ggplot2. allows custom MIC ranges plot intermediate log2 levels missing MIC values.","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Plotting Helpers for AMR Data Analysis — plot","text":"","code":"scale_x_mic(keep_operators = \"edges\", mic_range = NULL, ...)  scale_y_mic(keep_operators = \"edges\", mic_range = NULL, ...)  scale_colour_mic(keep_operators = \"edges\", mic_range = NULL, ...)  scale_color_mic(keep_operators = \"edges\", mic_range = NULL, ...)  scale_fill_mic(keep_operators = \"edges\", mic_range = NULL, ...)  # S3 method for class 'mic' plot(x, mo = NULL, ab = NULL, guideline = \"EUCAST\",   main = deparse(substitute(x)), ylab = translate_AMR(\"Frequency\", language   = language),   xlab = translate_AMR(\"Minimum Inhibitory Concentration (mg/L)\", language =   language), colours_SIR = c(\"#3CAEA3\", \"#F6D55C\", \"#ED553B\"),   language = get_AMR_locale(), expand = TRUE,   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), ...)  # S3 method for class 'mic' autoplot(object, mo = NULL, ab = NULL,   guideline = \"EUCAST\", title = deparse(substitute(object)),   ylab = translate_AMR(\"Frequency\", language = language),   xlab = translate_AMR(\"Minimum Inhibitory Concentration (mg/L)\", language =   language), colours_SIR = c(\"#3CAEA3\", \"#F6D55C\", \"#ED553B\"),   language = get_AMR_locale(), expand = TRUE,   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), ...)  # S3 method for class 'mic' fortify(object, ...)  # S3 method for class 'disk' plot(x, main = deparse(substitute(x)),   ylab = translate_AMR(\"Frequency\", language = language),   xlab = translate_AMR(\"Disk diffusion diameter (mm)\", language = language),   mo = NULL, ab = NULL, guideline = \"EUCAST\",   colours_SIR = c(\"#3CAEA3\", \"#F6D55C\", \"#ED553B\"),   language = get_AMR_locale(), expand = TRUE,   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), ...)  # S3 method for class 'disk' autoplot(object, mo = NULL, ab = NULL,   title = deparse(substitute(object)), ylab = translate_AMR(\"Frequency\",   language = language), xlab = translate_AMR(\"Disk diffusion diameter (mm)\",   language = language), guideline = \"EUCAST\", colours_SIR = c(\"#3CAEA3\",   \"#F6D55C\", \"#ED553B\"), language = get_AMR_locale(), expand = TRUE,   include_PKPD = getOption(\"AMR_include_PKPD\", TRUE),   breakpoint_type = getOption(\"AMR_breakpoint_type\", \"human\"), ...)  # S3 method for class 'disk' fortify(object, ...)  # S3 method for class 'sir' plot(x, ylab = translate_AMR(\"Percentage\", language =   language), xlab = translate_AMR(\"Antimicrobial Interpretation\", language =   language), main = deparse(substitute(x)), language = get_AMR_locale(),   ...)  # S3 method for class 'sir' autoplot(object, title = deparse(substitute(object)),   xlab = translate_AMR(\"Antimicrobial Interpretation\", language = language),   ylab = translate_AMR(\"Frequency\", language = language),   colours_SIR = c(\"#3CAEA3\", \"#F6D55C\", \"#ED553B\"),   language = get_AMR_locale(), ...)  # S3 method for class 'sir' fortify(object, ...)  facet_sir(facet = c(\"interpretation\", \"antibiotic\"), nrow = NULL)  scale_y_percent(breaks = function(x) seq(0, max(x, na.rm = TRUE), 0.1),   limits = c(0, NA))  scale_sir_colours(..., aesthetics = \"fill\", colours_SIR = c(\"#3CAEA3\",   \"#F6D55C\", \"#ED553B\"))  theme_sir()  labels_sir_count(position = NULL, x = \"antibiotic\",   translate_ab = \"name\", minimum = 30, language = get_AMR_locale(),   combine_SI = TRUE, datalabels.size = 3, datalabels.colour = \"grey15\")"},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Plotting Helpers for AMR Data Analysis — plot","text":"keep_operators character specifying handle operators (> <=) input. Accepts one three values: \"\" (TRUE) keep operators, \"none\" (FALSE) remove operators, \"edges\" keep operators ends range. mic_range manual range limit MIC values, e.g., mic_range = c(0.001, 32). Use NA prevent limit one side, e.g., mic_range = c(NA, 32). ... arguments passed methods x, object values created .mic(), .disk() .sir() (random_* variants, random_mic()) mo (vector ) text can coerced valid microorganism code .mo() ab (vector ) text can coerced valid antimicrobial drug code .ab() guideline interpretation guideline use - default latest included EUCAST guideline, see Details main, title title plot xlab, ylab axis title colours_SIR colours use filling bars, must vector three values (order S, R). default colours colour-blind friendly. language language used translate 'Susceptible', 'Increased exposure'/'Intermediate' 'Resistant' - default system language (see get_AMR_locale()) can overwritten setting package option AMR_locale, e.g. options(AMR_locale = \"de\"), see translate. Use language = NULL language = \"\" prevent translation. expand logical indicate whether range x axis expanded lowest highest value. MIC values, intermediate values factors 2 starting highest MIC value. disk diameters, whole diameter range filled. include_PKPD logical indicate PK/PD clinical breakpoints must applied last resort - default TRUE. Can also set package option AMR_include_PKPD. breakpoint_type type breakpoints use, either \"ECOFF\", \"animal\", \"human\". ECOFF stands Epidemiological Cut-values. default \"human\", can also set package option AMR_breakpoint_type. host set values veterinary species, automatically set \"animal\". facet variable split plots , either \"interpretation\" (default) \"antibiotic\" grouping variable nrow (using facet) number rows breaks numeric vector positions limits numeric vector length two providing limits scale, use NA refer existing minimum maximum aesthetics aesthetics apply colours - default \"fill\" can also (combination ) \"alpha\", \"colour\", \"fill\", \"linetype\", \"shape\" \"size\" position position adjustment bars, either \"fill\", \"stack\" \"dodge\" translate_ab column name antibiotics data set translate antibiotic abbreviations , using ab_property() minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. combine_SI logical indicate whether values S, SDD, must merged one, output consists S+SDD+vs. R (susceptible vs. resistant) - default TRUE datalabels.size size datalabels datalabels.colour colour datalabels","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Plotting Helpers for AMR Data Analysis — plot","text":"autoplot() functions return ggplot model extendible ggplot2 function. fortify() functions return data.frame extension usage ggplot2::ggplot() function.","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Plotting Helpers for AMR Data Analysis — plot","text":"interpretation \"\" named \"Increased exposure\" EUCAST guidelines since 2019, named \"Intermediate\" cases. interpreting MIC values well disk diffusion diameters, supported guidelines used input guideline argument : \"EUCAST 2024\", \"EUCAST 2023\", \"EUCAST 2022\", \"EUCAST 2021\", \"EUCAST 2020\", \"EUCAST 2019\", \"EUCAST 2018\", \"EUCAST 2017\", \"EUCAST 2016\", \"EUCAST 2015\", \"EUCAST 2014\", \"EUCAST 2013\", \"EUCAST 2012\", \"EUCAST 2011\", \"CLSI 2024\", \"CLSI 2023\", \"CLSI 2022\", \"CLSI 2021\", \"CLSI 2020\", \"CLSI 2019\", \"CLSI 2018\", \"CLSI 2017\", \"CLSI 2016\", \"CLSI 2015\", \"CLSI 2014\", \"CLSI 2013\", \"CLSI 2012\", \"CLSI 2011\". Simply using \"CLSI\" \"EUCAST\" input automatically select latest version guideline.","code":""},{"path":"https://msberends.github.io/AMR/reference/plot.html","id":"additional-ggplot-functions","dir":"Reference","previous_headings":"","what":"Additional ggplot2 Functions","title":"Plotting Helpers for AMR Data Analysis — plot","text":"package contains several functions extend ggplot2 package, help visualising AMR data results. functions internally used ggplot_sir() . facet_sir() creates 2d plots (default based S//R) using ggplot2::facet_wrap(). scale_y_percent() transforms y axis 0 100% range using ggplot2::scale_y_continuous(). scale_sir_colours() sets colours bars (green S, yellow , red R). multilingual support. default colours colour-blind friendly, maintaining convention e.g. 'susceptible' green 'resistant' red. theme_sir() [ggplot2 theme][ggplot2::theme() minimal distraction. labels_sir_count() print datalabels bars percentage number isolates, using ggplot2::geom_text().","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":null,"dir":"Reference","previous_headings":"","what":"Calculate Antimicrobial Resistance — proportion","title":"Calculate Antimicrobial Resistance — proportion","text":"functions can used calculate (co-)resistance susceptibility microbial isolates (.e. percentage S, SI, , IR R). functions support quasiquotation pipes, can used summarise() dplyr package also support grouped variables, see Examples. resistance() used calculate resistance, susceptibility() used calculate susceptibility.","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Calculate Antimicrobial Resistance — proportion","text":"","code":"resistance(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  susceptibility(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  sir_confidence_interval(..., ab_result = \"R\", minimum = 30,   as_percent = FALSE, only_all_tested = FALSE, confidence_level = 0.95,   side = \"both\", collapse = FALSE)  proportion_R(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_IR(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_I(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_SI(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_S(..., minimum = 30, as_percent = FALSE,   only_all_tested = FALSE)  proportion_df(data, translate_ab = \"name\", language = get_AMR_locale(),   minimum = 30, as_percent = FALSE, combine_SI = TRUE,   confidence_level = 0.95)  sir_df(data, translate_ab = \"name\", language = get_AMR_locale(),   minimum = 30, as_percent = FALSE, combine_SI = TRUE,   confidence_level = 0.95)"},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"source","dir":"Reference","previous_headings":"","what":"Source","title":"Calculate Antimicrobial Resistance — proportion","text":"M39 Analysis Presentation Cumulative Antimicrobial Susceptibility Test Data, 5th Edition, 2022, Clinical Laboratory Standards Institute (CLSI). https://clsi.org/standards/products/microbiology/documents/m39/.","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Calculate Antimicrobial Resistance — proportion","text":"... one vectors (columns) antibiotic interpretations. transformed internally .sir() needed. Use multiple columns calculate (lack ) co-resistance: probability one two drugs resistant susceptible result. See Examples. minimum minimum allowed number available (tested) isolates. isolate count lower minimum return NA warning. default number 30 isolates advised Clinical Laboratory Standards Institute (CLSI) best practice, see Source. as_percent logical indicate whether output must returned hundred fold % sign (character). value 0.123456 returned \"12.3%\". only_all_tested (combination therapies, .e. using one variable ...): logical indicate isolates must tested antibiotics, see section Combination Therapy ab_result antibiotic results test , must one values \"S\", \"SDD\", \"\", \"R\" confidence_level confidence level returned confidence interval. calculation, number S SI isolates, R isolates compared total number available isolates R, S, using binom.test(), .e., Clopper-Pearson method. side side confidence interval return. default \"\" length 2 vector, can also (abbreviated ) \"min\"/\"left\"/\"lower\"/\"less\" \"max\"/\"right\"/\"higher\"/\"greater\". collapse logical indicate whether output values 'collapsed', .e. merged together one value, character value use collapsing data data.frame containing columns class sir (see .sir()) translate_ab column name antibiotics data set translate antibiotic abbreviations , using ab_property() language language returned text - default current system language (see get_AMR_locale()) can also set package option AMR_locale. Use language = NULL language = \"\" prevent translation. combine_SI logical indicate whether values S, SDD, must merged one, output consists S+SDD+vs. R (susceptible vs. resistant) - default TRUE","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Calculate Antimicrobial Resistance — proportion","text":"double , as_percent = TRUE, character.","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Calculate Antimicrobial Resistance — proportion","text":"automated comprehensive analysis, consider using antibiogram() wisca(), streamline many aspects susceptibility reporting , importantly, also support WISCA. functions described offer hands-, manual approach greater customisation. Remember filter data let contain first isolates! needed exclude duplicates reduce selection bias. Use first_isolate() determine data set one four available algorithms. function resistance() equal function proportion_R(). function susceptibility() equal function proportion_SI(). Since AMR v3.0, proportion_SI() proportion_I() include dose-dependent susceptibility ('SDD'). Use sir_confidence_interval() calculate confidence interval, relies binom.test(), .e., Clopper-Pearson method. function returns vector length 2 default antimicrobial resistance. Change side argument \"left\"/\"min\" \"right\"/\"max\" return single value, change ab_result argument e.g. c(\"S\", \"\") test antimicrobial susceptibility, see Examples. functions meant count isolates, calculate proportion resistance/susceptibility. Use count_*() functions count isolates. function susceptibility() essentially equal count_susceptible()/count_all(). Low counts can influence outcome - proportion_*() functions may camouflage , since return proportion (albeit dependent minimum argument). function proportion_df() takes variable data sir class (created .sir()) calculates proportions S, , R. also supports grouped variables. function sir_df() works exactly like proportion_df(), adds number isolates.","code":""},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"combination-therapy","dir":"Reference","previous_headings":"","what":"Combination Therapy","title":"Calculate Antimicrobial Resistance — proportion","text":"using one variable ... (= combination therapy), use only_all_tested count isolates tested antibiotics/variables test . See example two antibiotics, Drug Drug B, susceptibility() works calculate %SI:   Please note , combination therapies, only_all_tested = TRUE applies :   , combination therapies, only_all_tested = FALSE applies :   Using only_all_tested impact using one antibiotic input.","code":"--------------------------------------------------------------------                     only_all_tested = FALSE  only_all_tested = TRUE                     -----------------------  -----------------------  Drug A    Drug B   considered   considered  considered   considered                     susceptible    tested    susceptible    tested --------  --------  -----------  ----------  -----------  ----------  S or I    S or I        X            X           X            X    R       S or I        X            X           X            X   <NA>     S or I        X            X           -            -  S or I      R           X            X           X            X    R         R           -            X           -            X   <NA>       R           -            -           -            -  S or I     <NA>         X            X           -            -    R        <NA>         -            -           -            -   <NA>      <NA>         -            -           -            - -------------------------------------------------------------------- count_S()    +   count_I()    +   count_R()    = count_all()   proportion_S() + proportion_I() + proportion_R() = 1 count_S()    +   count_I()    +   count_R()    >= count_all()   proportion_S() + proportion_I() + proportion_R() >= 1"},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Calculate Antimicrobial Resistance — proportion","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/proportion.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Calculate Antimicrobial Resistance — proportion","text":"","code":"# example_isolates is a data set available in the AMR package. # run ?example_isolates for more info. example_isolates #> # A tibble: 2,000 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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 <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …   # base R ------------------------------------------------------------ # determines %R resistance(example_isolates$AMX) #> [1] 0.5955556 sir_confidence_interval(example_isolates$AMX) #> [1] 0.5688204 0.6218738 sir_confidence_interval(example_isolates$AMX,   confidence_level = 0.975 ) #> [1] 0.5650148 0.6255670 sir_confidence_interval(example_isolates$AMX,   confidence_level = 0.975,   collapse = \", \" ) #> [1] \"0.565, 0.626\"  # determines %S+I: susceptibility(example_isolates$AMX) #> [1] 0.4044444 sir_confidence_interval(example_isolates$AMX,   ab_result = c(\"S\", \"I\") ) #> [1] 0.3781262 0.4311796  # be more specific proportion_S(example_isolates$AMX) #> [1] 0.4022222 proportion_SI(example_isolates$AMX) #> Note that proportion_SI() will also include dose-dependent #> susceptibility, 'SDD'. This note will be shown once for this session. #> [1] 0.4044444 proportion_I(example_isolates$AMX) #> Note that proportion_I() will also include dose-dependent susceptibility, #> 'SDD'. This note will be shown once for this session. #> [1] 0.002222222 proportion_IR(example_isolates$AMX) #> Note that proportion_IR() will also include dose-dependent #> susceptibility, 'SDD'. This note will be shown once for this session. #> [1] 0.5977778 proportion_R(example_isolates$AMX) #> [1] 0.5955556  # dplyr ------------------------------------------------------------- # \\donttest{ if (require(\"dplyr\")) {   example_isolates %>%     group_by(ward) %>%     summarise(       r = resistance(CIP),       n = n_sir(CIP)     ) # n_sir works like n_distinct in dplyr, see ?n_sir } #> # A tibble: 3 × 3 #>   ward           r     n #>   <chr>      <dbl> <int> #> 1 Clinical   0.147   869 #> 2 ICU        0.190   447 #> 3 Outpatient 0.161    93 if (require(\"dplyr\")) {   example_isolates %>%     group_by(ward) %>%     summarise(       cipro_R = resistance(CIP),       ci_min = sir_confidence_interval(CIP, side = \"min\"),       ci_max = sir_confidence_interval(CIP, side = \"max\"),     ) } #> # A tibble: 3 × 4 #>   ward       cipro_R ci_min ci_max #>   <chr>        <dbl>  <dbl>  <dbl> #> 1 Clinical     0.147 0.124   0.173 #> 2 ICU          0.190 0.155   0.230 #> 3 Outpatient   0.161 0.0932  0.252 if (require(\"dplyr\")) {   # scoped dplyr verbs with antimicrobial selectors   # (you could also use across() of course)   example_isolates %>%     group_by(ward) %>%     summarise_at(       c(aminoglycosides(), carbapenems()),       resistance     ) } #> ℹ For aminoglycosides() using columns 'GEN' (gentamicin), 'TOB' #>   (tobramycin), 'AMK' (amikacin), and 'KAN' (kanamycin) #> ℹ For carbapenems() using columns 'IPM' (imipenem) and 'MEM' (meropenem) #> Warning: There was 1 warning in `summarise()`. #> ℹ In argument: `KAN = (function (..., minimum = 30, as_percent = FALSE, #>   only_all_tested = FALSE) ...`. #> ℹ In group 3: `ward = \"Outpatient\"`. #> Caused by warning: #> ! Introducing NA: only 23 results available for KAN in group: ward = #> \"Outpatient\" (minimum = 30). #> # A tibble: 3 × 7 #>   ward         GEN   TOB   AMK   KAN    IPM    MEM #>   <chr>      <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl> #> 1 Clinical   0.229 0.315 0.626     1 0.0498 0.0458 #> 2 ICU        0.290 0.400 0.662     1 0.0862 0.0894 #> 3 Outpatient 0.2   0.368 0.605    NA 0.0541 0.0541 if (require(\"dplyr\")) {   example_isolates %>%     group_by(ward) %>%     summarise(       R = resistance(CIP, as_percent = TRUE),       SI = susceptibility(CIP, as_percent = TRUE),       n1 = count_all(CIP), # the actual total; sum of all three       n2 = n_sir(CIP), # same - analogous to n_distinct       total = n()     ) # NOT the number of tested isolates!    # Calculate co-resistance between amoxicillin/clav acid and gentamicin,   # so we can see that combination therapy does a lot more than mono therapy:   example_isolates %>% susceptibility(AMC) # %SI = 76.3%   example_isolates %>% count_all(AMC) #   n = 1879    example_isolates %>% susceptibility(GEN) # %SI = 75.4%   example_isolates %>% count_all(GEN) #   n = 1855    example_isolates %>% susceptibility(AMC, GEN) # %SI = 94.1%   example_isolates %>% count_all(AMC, GEN) #   n = 1939     # See Details on how `only_all_tested` works. Example:   example_isolates %>%     summarise(       numerator = count_susceptible(AMC, GEN),       denominator = count_all(AMC, GEN),       proportion = susceptibility(AMC, GEN)     )    example_isolates %>%     summarise(       numerator = count_susceptible(AMC, GEN, only_all_tested = TRUE),       denominator = count_all(AMC, GEN, only_all_tested = TRUE),       proportion = susceptibility(AMC, GEN, only_all_tested = TRUE)     )     example_isolates %>%     group_by(ward) %>%     summarise(       cipro_p = susceptibility(CIP, as_percent = TRUE),       cipro_n = count_all(CIP),       genta_p = susceptibility(GEN, as_percent = TRUE),       genta_n = count_all(GEN),       combination_p = susceptibility(CIP, GEN, as_percent = TRUE),       combination_n = count_all(CIP, GEN)     )    # Get proportions S/I/R immediately of all sir columns   example_isolates %>%     select(AMX, CIP) %>%     proportion_df(translate = FALSE)    # It also supports grouping variables   # (use sir_df to also include the count)   example_isolates %>%     select(ward, AMX, CIP) %>%     group_by(ward) %>%     sir_df(translate = FALSE) } #> # A tibble: 12 × 7 #>    ward       antibiotic interpretation value ci_min ci_max isolates #>  * <chr>      <chr>      <ord>          <dbl>  <dbl>  <dbl>    <int> #>  1 Clinical   AMX        SI             0.423 0.389   0.457      357 #>  2 Clinical   AMX        R              0.577 0.543   0.611      487 #>  3 Clinical   CIP        SI             0.853 0.827   0.876      741 #>  4 Clinical   CIP        R              0.147 0.124   0.173      128 #>  5 ICU        AMX        SI             0.369 0.323   0.417      158 #>  6 ICU        AMX        R              0.631 0.583   0.677      270 #>  7 ICU        CIP        SI             0.810 0.770   0.845      362 #>  8 ICU        CIP        R              0.190 0.155   0.230       85 #>  9 Outpatient AMX        SI             0.397 0.288   0.515       31 #> 10 Outpatient AMX        R              0.603 0.485   0.712       47 #> 11 Outpatient CIP        SI             0.839 0.748   0.907       78 #> 12 Outpatient CIP        R              0.161 0.0932  0.252       15 # }"},{"path":"https://msberends.github.io/AMR/reference/random.html","id":null,"dir":"Reference","previous_headings":"","what":"Random MIC Values/Disk Zones/SIR Generation — random","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"functions can used generating random MIC values disk diffusion diameters, AMR data analysis practice. providing microorganism antimicrobial drug, generated results reflect reality much possible.","code":""},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"","code":"random_mic(size = NULL, mo = NULL, ab = NULL, ...)  random_disk(size = NULL, mo = NULL, ab = NULL, ...)  random_sir(size = NULL, prob_SIR = c(0.33, 0.33, 0.33), ...)"},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"size desired size returned vector. used data.frame call dplyr verb, get current (group) size left blank. mo character can coerced valid microorganism code .mo() ab character can coerced valid antimicrobial drug code .ab() ... ignored, place allow future extensions prob_SIR vector length 3: probabilities \"S\" (1st value), \"\" (2nd value) \"R\" (3rd value)","code":""},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"class mic random_mic() (see .mic()) class disk random_disk() (see .disk())","code":""},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"base R function sample() used generating values. Generated values based EUCAST 2024 guideline implemented clinical_breakpoints data set. create specific generated values per bug drug, set mo /ab argument.","code":""},{"path":"https://msberends.github.io/AMR/reference/random.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Random MIC Values/Disk Zones/SIR Generation — random","text":"","code":"random_mic(25) #> Class 'mic' #>  [1] 64    0.001 >=256 0.001 0.005 8     8     1     16    0.002 >=256 16    #> [13] 4     64    0.002 0.001 0.25  64    0.025 64    0.025 1     0.001 16    #> [25] 0.5   random_disk(25) #> Class 'disk' #>  [1] 10 42 50 49 46 44 48 49 32 49 20 30 44 13 10 34 26 26 26 47 19 38 23 41 41 random_sir(25) #> Class 'sir' #>  [1] R S S I I I I S S I S S R S S R S S R S R R R I I  # \\donttest{ # make the random generation more realistic by setting a bug and/or drug: random_mic(25, \"Klebsiella pneumoniae\") # range 0.0625-64 #> Class 'mic' #>  [1] 0.125  0.5    128    64     8      0.0625 0.125  >=256  4      8      #> [11] 0.125  2      32     2      0.0625 0.125  64     0.025  64     8      #> [21] 0.002  8      0.025  1      4      random_mic(25, \"Klebsiella pneumoniae\", \"meropenem\") # range 0.0625-16 #> Class 'mic' #>  [1] 8    16   4    8    2    16   16   2    0.5  1    8    8    16   1    1    #> [16] 4    2    8    8    2    8    0.25 2    0.5  0.5  random_mic(25, \"Streptococcus pneumoniae\", \"meropenem\") # range 0.0625-4 #> Class 'mic' #>  [1] <=0.0625 0.25     8        2        0.25     1        4        2        #>  [9] 0.25     <=0.0625 0.5      8        0.25     0.5      4        0.125    #> [17] 2        0.25     4        4        0.25     <=0.0625 8        <=0.0625 #> [25] <=0.0625  random_disk(25, \"Klebsiella pneumoniae\") # range 8-50 #> Class 'disk' #>  [1] 40 43 38 39 15 49 39 10 47 43 30 38 15 26 16 24 32 16 36 47 35 11 45 42 41 random_disk(25, \"Klebsiella pneumoniae\", \"ampicillin\") # range 11-17 #> Class 'disk' #>  [1] 11 16 14 13 11 11 16 17 14 11 15 16 17 12 17 16 11 11 12 13 14 12 13 11 11 random_disk(25, \"Streptococcus pneumoniae\", \"ampicillin\") # range 12-27 #> Class 'disk' #>  [1] 19 25 18 20 25 16 15 25 19 25 27 19 25 20 23 21 17 19 25 25 22 24 17 22 21 # }"},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":null,"dir":"Reference","previous_headings":"","what":"Predict Antimicrobial Resistance — resistance_predict","title":"Predict Antimicrobial Resistance — resistance_predict","text":"Create prediction model predict antimicrobial resistance next years statistical solid ground. Standard errors (SE) returned columns se_min se_max. See Examples real live example.","code":""},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Predict Antimicrobial Resistance — resistance_predict","text":"","code":"resistance_predict(x, col_ab, col_date = NULL, year_min = NULL,   year_max = NULL, year_every = 1, minimum = 30, model = NULL,   I_as_S = TRUE, preserve_measurements = TRUE, info = interactive(), ...)  sir_predict(x, col_ab, col_date = NULL, year_min = NULL, year_max = NULL,   year_every = 1, minimum = 30, model = NULL, I_as_S = TRUE,   preserve_measurements = TRUE, info = interactive(), ...)  # S3 method for class 'resistance_predict' plot(x, main = paste(\"Resistance Prediction of\",   x_name), ...)  ggplot_sir_predict(x, main = paste(\"Resistance Prediction of\", x_name),   ribbon = TRUE, ...)  # S3 method for class 'resistance_predict' autoplot(object,   main = paste(\"Resistance Prediction of\", x_name), ribbon = TRUE, ...)"},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Predict Antimicrobial Resistance — resistance_predict","text":"x data.frame containing isolates. Can left blank automatic determination, see Examples. col_ab column name x containing antimicrobial interpretations (\"R\", \"\" \"S\") col_date column name date, used calculate years column consist years already - default first column date class year_min lowest year use prediction model, dafaults lowest year col_date year_max highest year use prediction model - default 10 years today year_every unit sequence lowest year found data year_max minimum minimal amount available isolates per year include. Years containing less observations estimated model. model statistical model choice. generalised linear regression model binomial distribution (.e. using glm(..., family = binomial), assuming period zero resistance followed period increasing resistance leading slowly resistance. See Details valid options. I_as_S logical indicate whether values \"\" treated \"S\" (otherwise treated \"R\"). default, TRUE, follows redefinition EUCAST interpretation (increased exposure) 2019, see section Interpretation S, R . preserve_measurements logical indicate whether predictions years actually available data overwritten original data. standard errors years NA. info logical indicate whether textual analysis printed name summary() statistical model. ... arguments passed functions main title plot ribbon logical indicate whether ribbon shown (default) error bars object model data plotted","code":""},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"value","dir":"Reference","previous_headings":"","what":"Value","title":"Predict Antimicrobial Resistance — resistance_predict","text":"data.frame extra class resistance_predict columns: year value, estimated preserve_measurements = FALSE, combination observed estimated otherwise se_min, lower bound standard error minimum 0 (standard error never go 0%) se_max upper bound standard error maximum 1 (standard error never go 100%) observations, total number available observations year, .e. \\(S + + R\\) observed, original observed resistant percentages estimated, estimated resistant percentages, calculated model Furthermore, model available attribute: attributes(x)$model, see Examples.","code":""},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Predict Antimicrobial Resistance — resistance_predict","text":"Valid options statistical model (argument model) : \"binomial\" \"binom\" \"logit\": generalised linear regression model binomial distribution \"loglin\" \"poisson\": generalised log-linear regression model poisson distribution \"lin\" \"linear\": linear regression model","code":""},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"interpretation-of-sir","dir":"Reference","previous_headings":"","what":"Interpretation of SIR","title":"Predict Antimicrobial Resistance — resistance_predict","text":"2019, European Committee Antimicrobial Susceptibility Testing (EUCAST) decided change definitions susceptibility testing categories S, , R shown (https://www.eucast.org/newsiandr): S - Susceptible, standard dosing regimen microorganism categorised \"Susceptible, standard dosing regimen\", high likelihood therapeutic success using standard dosing regimen agent. - Susceptible, increased exposure  microorganism categorised \"Susceptible, Increased exposure\" high likelihood therapeutic success exposure agent increased adjusting dosing regimen concentration site infection. R = Resistant microorganism categorised \"Resistant\" high likelihood therapeutic failure even increased exposure. Exposure function mode administration, dose, dosing interval, infusion time, well distribution excretion antimicrobial agent influence infecting organism site infection. AMR package honours insight. Use susceptibility() (equal proportion_SI()) determine antimicrobial susceptibility count_susceptible() (equal count_SI()) count susceptible isolates.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/resistance_predict.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Predict Antimicrobial Resistance — resistance_predict","text":"","code":"x <- resistance_predict(example_isolates,   col_ab = \"AMX\",   year_min = 2010,   model = \"binomial\" ) plot(x)  # \\donttest{ if (require(\"ggplot2\")) {   ggplot_sir_predict(x) }   # using dplyr: if (require(\"dplyr\")) {   x <- example_isolates %>%     filter_first_isolate() %>%     filter(mo_genus(mo) == \"Staphylococcus\") %>%     resistance_predict(\"PEN\", model = \"binomial\")   print(plot(x))    # get the model from the object   mymodel <- attributes(x)$model   summary(mymodel) }  #> NULL #>  #> Call: #> glm(formula = df_matrix ~ year, family = binomial) #>  #> Coefficients: #>             Estimate Std. Error z value Pr(>|z|) #> (Intercept) 35.76101   72.29172   0.495    0.621 #> year        -0.01720    0.03603  -0.477    0.633 #>  #> (Dispersion parameter for binomial family taken to be 1) #>  #>     Null deviance: 5.3681  on 11  degrees of freedom #> Residual deviance: 5.1408  on 10  degrees of freedom #> AIC: 50.271 #>  #> Number of Fisher Scoring iterations: 4 #>   # create nice plots with ggplot2 yourself if (require(\"dplyr\") && require(\"ggplot2\")) {   data <- example_isolates %>%     filter(mo == as.mo(\"E. coli\")) %>%     resistance_predict(       col_ab = \"AMX\",       col_date = \"date\",       model = \"binomial\",       info = FALSE,       minimum = 15     )   head(data)   autoplot(data) }  # }"},{"path":"https://msberends.github.io/AMR/reference/skewness.html","id":null,"dir":"Reference","previous_headings":"","what":"Skewness of the Sample — skewness","title":"Skewness of the Sample — skewness","text":"Skewness measure asymmetry probability distribution real-valued random variable mean. negative ('left-skewed'): left tail longer; mass distribution concentrated right histogram. positive ('right-skewed'): right tail longer; mass distribution concentrated left histogram. normal distribution skewness 0.","code":""},{"path":"https://msberends.github.io/AMR/reference/skewness.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Skewness of the Sample — skewness","text":"","code":"skewness(x, na.rm = FALSE)  # Default S3 method skewness(x, na.rm = FALSE)  # S3 method for class 'matrix' skewness(x, na.rm = FALSE)  # S3 method for class 'data.frame' skewness(x, na.rm = FALSE)"},{"path":"https://msberends.github.io/AMR/reference/skewness.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Skewness of the Sample — skewness","text":"x vector values, matrix data.frame na.rm logical value indicating whether NA values stripped computation proceeds","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/skewness.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Skewness of the Sample — skewness","text":"","code":"skewness(runif(1000)) #> [1] 0.03714722"},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":null,"dir":"Reference","previous_headings":"","what":"Filter Top n Microorganisms — top_n_microorganisms","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"function filters data set include top n microorganisms based specified property, taxonomic family genus. example, can filter data set top 3 species, species top 5 genera, top 3 species top 5 genera.","code":""},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"","code":"top_n_microorganisms(x, n, property = \"fullname\", n_for_each = NULL,   col_mo = NULL, ...)"},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"x data frame containing microbial data n integer specifying maximum number unique values property include output property character string indicating microorganism property use filtering. Must one column names microorganisms data set: \"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\", \"snomed\". NULL, raw values col_mo used without transformation. n_for_each optional integer specifying maximum number rows retain value selected property. NULL, rows within top n groups included. col_mo character string indicating column x contains microorganism names codes. Defaults first column class mo. Values coerced using .mo(). ... Additional arguments passed mo_property() property NULL.","code":""},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"function useful preprocessing data creating antibiograms analyses require focused subsets microbial data. example, can filter data set include isolates top 10 species.","code":""},{"path":[]},{"path":"https://msberends.github.io/AMR/reference/top_n_microorganisms.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Filter Top n Microorganisms — top_n_microorganisms","text":"","code":"# filter to the top 3 species: top_n_microorganisms(example_isolates,                      n = 3) #> # A tibble: 1,015 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  4 2002-01-14 462729     78 M      Clinical B_STPHY_AURS   R     NA    S     R   #>  5 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  6 2002-01-19 738003     71 M      Clinical B_ESCHR_COLI   R     NA    NA    NA  #>  7 2002-02-03 481442     76 M      ICU      B_STPHY_CONS   R     NA    S     NA  #>  8 2002-02-14 067927     45 F      ICU      B_STPHY_CONS   R     NA    R     NA  #>  9 2002-02-14 067927     45 F      ICU      B_STPHY_CONS   S     NA    S     NA  #> 10 2002-02-21 A56499     64 M      Clinical B_STPHY_CONS   S     NA    S     NA  #> # ℹ 1,005 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter to any species in the top 5 genera: top_n_microorganisms(example_isolates,                      n = 5, property = \"genus\") #> # A tibble: 1,742 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  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,732 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …  # filter to the top 3 species in each of the top 5 genera: top_n_microorganisms(example_isolates,                      n = 5, property = \"genus\", n_for_each = 3) #> # A tibble: 1,497 × 46 #>    date       patient   age gender ward     mo           PEN   OXA   FLC   AMX   #>    <date>     <chr>   <dbl> <chr>  <chr>    <mo>         <sir> <sir> <sir> <sir> #>  1 2002-02-21 4FC193     69 M      Clinical B_ENTRC_FACM   NA    NA    NA    NA  #>  2 2002-04-08 130252     78 M      ICU      B_ENTRC_FCLS   NA    NA    NA    NA  #>  3 2002-06-23 798871     82 M      Clinical B_ENTRC_FCLS   NA    NA    NA    NA  #>  4 2002-06-23 798871     82 M      Clinical B_ENTRC_FCLS   NA    NA    NA    NA  #>  5 2003-04-20 6BC362     62 M      ICU      B_ENTRC        NA    NA    NA    NA  #>  6 2003-04-21 6BC362     62 M      ICU      B_ENTRC        NA    NA    NA    NA  #>  7 2003-08-13 F35553     52 M      ICU      B_ENTRC_FCLS   NA    NA    NA    NA  #>  8 2003-09-05 F35553     52 M      ICU      B_ENTRC        NA    NA    NA    NA  #>  9 2003-09-05 F35553     52 M      ICU      B_ENTRC_FCLS   NA    NA    NA    NA  #> 10 2003-09-28 1B0933     80 M      Clinical B_ENTRC        NA    NA    NA    NA  #> # ℹ 1,487 more rows #> # ℹ 36 more variables: AMC <sir>, AMP <sir>, TZP <sir>, CZO <sir>, FEP <sir>, #> #   CXM <sir>, FOX <sir>, CTX <sir>, CAZ <sir>, CRO <sir>, GEN <sir>, #> #   TOB <sir>, AMK <sir>, KAN <sir>, TMP <sir>, SXT <sir>, NIT <sir>, #> #   FOS <sir>, LNZ <sir>, CIP <sir>, MFX <sir>, VAN <sir>, TEC <sir>, #> #   TCY <sir>, TGC <sir>, DOX <sir>, ERY <sir>, CLI <sir>, AZM <sir>, #> #   IPM <sir>, MEM <sir>, MTR <sir>, CHL <sir>, COL <sir>, MUP <sir>, …"},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":null,"dir":"Reference","previous_headings":"","what":"Translate Strings from the AMR Package — translate","title":"Translate Strings from the AMR Package — translate","text":"language-dependent output AMR functions, mo_name(), mo_gramstain(), mo_type() ab_name().","code":""},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"ref-usage","dir":"Reference","previous_headings":"","what":"Usage","title":"Translate Strings from the AMR Package — translate","text":"","code":"get_AMR_locale()  set_AMR_locale(language)  reset_AMR_locale()  translate_AMR(x, language = get_AMR_locale())"},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"arguments","dir":"Reference","previous_headings":"","what":"Arguments","title":"Translate Strings from the AMR Package — translate","text":"language language choose. Use one supported language names ISO-639-1 codes: English (en), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek (el), Italian (), Japanese (ja), Norwegian (), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv), Turkish (tr), Ukrainian (uk). x text translate","code":""},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"details","dir":"Reference","previous_headings":"","what":"Details","title":"Translate Strings from the AMR Package — translate","text":"currently 20 supported languages English (en), Chinese (zh), Czech (cs), Danish (da), Dutch (nl), Finnish (fi), French (fr), German (de), Greek (el), Italian (), Japanese (ja), Norwegian (), Polish (pl), Portuguese (pt), Romanian (ro), Russian (ru), Spanish (es), Swedish (sv), Turkish (tr), Ukrainian (uk). languages translations available antimicrobial drugs colloquial microorganism names. permanently silence -per-session language note non-English operating system, can set package option AMR_locale .Rprofile file like :   save file. Please read adding updating language Wiki.","code":"# Open .Rprofile file utils::file.edit(\"~/.Rprofile\")  # Then add e.g. Italian support to that file using: options(AMR_locale = \"Italian\")"},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"changing-the-default-language","dir":"Reference","previous_headings":"","what":"Changing the Default Language","title":"Translate Strings from the AMR Package — translate","text":"system language used default (returned Sys.getenv(\"LANG\") , LANG set, Sys.getlocale(\"LC_COLLATE\")), language supported. language used can overwritten two ways checked order: Setting package option AMR_locale, either using e.g. set_AMR_locale(\"German\") running e.g. options(AMR_locale = \"German\"). Note setting R option works session. Save command options(AMR_locale = \"(language)\") .Rprofile file apply every session. Run utils::file.edit(\"~/.Rprofile\") edit .Rprofile file. Setting system variable LANGUAGE LANG, e.g. adding LANGUAGE=\"de_DE.utf8\" .Renviron file home directory. Thus, package option AMR_locale set, system variables LANGUAGE LANG ignored.","code":""},{"path":"https://msberends.github.io/AMR/reference/translate.html","id":"ref-examples","dir":"Reference","previous_headings":"","what":"Examples","title":"Translate Strings from the AMR Package — translate","text":"","code":"# Current settings (based on system language) ab_name(\"Ciprofloxacin\") #> [1] \"Ciprofloxacin\" mo_name(\"Coagulase-negative Staphylococcus (CoNS)\") #> [1] \"Coagulase-negative Staphylococcus (CoNS)\"  # setting another language set_AMR_locale(\"Dutch\") #> ℹ Using Dutch (Nederlands) for the AMR package for this session. ab_name(\"Ciprofloxacin\") #> [1] \"Ciprofloxacine\" mo_name(\"Coagulase-negative Staphylococcus (CoNS)\") #> [1] \"Coagulase-negatieve Staphylococcus (CNS)\"  # setting yet another language set_AMR_locale(\"German\") #> ℹ Using German (Deutsch) for the AMR package for this session. ab_name(\"Ciprofloxacin\") #> [1] \"Ciprofloxacin\" mo_name(\"Coagulase-negative Staphylococcus (CoNS)\") #> [1] \"Koagulase-negative Staphylococcus (KNS)\"  # set_AMR_locale() understands endonyms, English exonyms, and ISO-639-1: set_AMR_locale(\"Deutsch\") #> ℹ Using German (Deutsch) for the AMR package for this session. set_AMR_locale(\"German\") #> ℹ Using German (Deutsch) for the AMR package for this session. set_AMR_locale(\"de\") #> ℹ Using German (Deutsch) for the AMR package for this session. ab_name(\"amox/clav\") #> ℹ More than one result was found for item 1: amoxicillin and clavulansäure #> [1] \"Amoxicillin/Clavulansäure\"  # reset to system default reset_AMR_locale() #> ℹ Using the English language (English) for the AMR package for this #>   session. ab_name(\"amox/clav\") #> [1] \"Amoxicillin/clavulanic acid\""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"amr-2119144","dir":"Changelog","previous_headings":"","what":"AMR 2.1.1.9144","title":"AMR 2.1.1.9144","text":"(beta version eventually become v3.0. ’re happy reach new major milestone soon, new One Health support! Install beta using instructions .)","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"a-new-milestone-amr-v30-with-one-health-support--human--veterinary--environmental-2-1-1-9144","dir":"Changelog","previous_headings":"","what":"A New Milestone: AMR v3.0 with One Health Support (= Human + Veterinary + Environmental)","title":"AMR 2.1.1.9144","text":"package now supports tools AMR data analysis clinical settings, also veterinary environmental microbiology. made possible collaboration University Prince Edward Island’s Atlantic Veterinary College, Canada. celebrate great improvement package, also updated package logo reflect change.","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"breaking-2-1-1-9144","dir":"Changelog","previous_headings":"","what":"Breaking","title":"AMR 2.1.1.9144","text":"Removed functions references used deprecated rsi class, replaced sir equivalents two years ago","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"new-2-1-1-9144","dir":"Changelog","previous_headings":"","what":"New","title":"AMR 2.1.1.9144","text":"Function .sir() now extensive support veterinary breakpoints CLSI. Use breakpoint_type = \"animal\" set host argument variable contains animal species names. CLSI VET09 guideline implemented address cases veterinary breakpoints missing (applies guideline set CLSI) clinical_breakpoints data set contains breakpoints, can downloaded download page. antibiotics data set contains veterinary antibiotics, pradofloxacin enrofloxacin. WHOCC codes veterinary use added well. ab_atc() now supports ATC codes veterinary antibiotics (start “Q”) ab_url() now supports retrieving WHOCC url ATCvet pages antibiogram() function now supports creating true Weighted-Incidence Syndromic Combination Antibiograms (WISCA), powerful Bayesian method estimating regimen coverage probabilities using pathogen incidence antimicrobial susceptibility data. WISCA offers improved precision syndrome-specific treatment, even datasets sparse data. dedicated wisca() function also available easy usage. MycoBank now integrated primary taxonomic source fungi. microorganisms data set enriched new columns (mycobank, mycobank_parent, mycobank_renamed_to) provide detailed information fungal species. remarkable addition 20,000 new fungal records New function mo_mycobank() retrieve MycoBank record number, analogous existing functions mo_lpsn() mo_gbif(). .mo() function mo_*() functions now include only_fungi argument, allowing users restrict results solely fungal species. ensures fungi prioritised bacteria microorganism identification. can also set globally new AMR_only_fungi option. Also updated kingdoms, welcoming total 2,149 new records 2023 927 2024. EUCAST 2024 CLSI 2024 now supported, adding 4,000 new clinical breakpoints clinical_breakpoints data set usage .sir(). EUCAST 2024 now new default guideline MIC disk diffusion interpretations. .sir() now brings additional factor levels: “NI” non-interpretable “SDD” susceptible dose-dependent. Currently, clinical_breakpoints data set contains 24 breakpoints can return value “SDD” instead “”. New function group scale_*_mic(), namely: scale_x_mic(), scale_y_mic(), scale_colour_mic() scale_fill_mic(). advanced ggplot2 extensions allow easy plotting MIC values. allow manual range definition plotting missing intermediate log2 levels. New function rescale_mic(), allows users rescale MIC values manually set range. powerhouse behind scale_*_mic() functions, can used independently , instance, compare equality MIC distributions rescaling range first. using R heavy lifting, ‘AMR’ Python Package developed run AMR R package natively Python. Python package always version number R package, built automatically every code change. antimicrobial selectors (aminoglycosides() betalactams()) now supported tidymodels packages recipe parsnip. See info tutorial using AMR functions predictive modelling. New function top_n_microorganisms() filter data set top n taxonomic property, e.g., filter top 3 species, filter species top 5 genera, filter top 3 species top 5 genera New function mo_group_members() retrieve member microorganisms microorganism group. example, mo_group_members(\"Strep group C\") returns vector microorganisms belong group.","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"changed-2-1-1-9144","dir":"Changelog","previous_headings":"","what":"Changed","title":"AMR 2.1.1.9144","text":"now possible use column names argument ab, mo, uti: .sir(..., ab = \"column1\", mo = \"column2\", uti = \"column3\"). greatly improves flexibility users. Users can now set criteria (using regular expressions) considered S, , R, SDD, NI. get quantitative values, .double() sir object return 1 S, 2 SDD/, 3 R (NI become NA). functions using sir classes (e.g., summary()) updated reflect change contain NI SDD. New argument formatting_type set 22 options formatting ‘cells’. defaults 10 non-WISCA 14 WISCA, changing output antibiograms cells info. reason, add_total_n now FALSE default since denominators added cells ab_transform argument now defaults \"name\", displaying antibiotic column names instead codes ‘Antibiotic selectors’ now called ‘antimicrobial selectors’ since scope broader just antibiotics. documentation updated, ab_class() ab_selector() replaced amr_class() amr_selector(). old functions now deprecated removed future version. Added selectors isoxazolylpenicillins(), monobactams(), nitrofurans(), phenicols(), rifamycins() using antimicrobial selectors exclude non-treatable drugs (gentamicin-high using aminoglycosides()), function now always returns warning can included using only_treatable = FALSE Added new argument return_all selectors, defaults TRUE include match. FALSE, old behaviour, first hit unique antimicrobial returned. selectors can now run separate command retrieve vector possible antimicrobials selector can select selectors lincosamides() macrolides() overlap anymore - antibiotic now classified either Added “clindamycin inducible screening” CLI1. Since clindamycin lincosamide, antimicrobial selector lincosamides() now contains argument only_treatable = TRUE (similar antibiotic selectors contain non-treatable drugs) Added Amorolfine (AMO, D01AE16), now also part antifungals() selector Added Efflux (EFF), allow mapping AMRFinderPlus Added Tigemonam (TNM), monobactam Added valid levels: 4096, 6 powers 0.0625, 5 powers 192 (192, 384, 576, 768, 960) Added new argument keep_operators .mic(). can \"\" (default), \"none\", \"edges\". argument also available new rescale_mic() scale_*_mic() functions. Comparisons MIC values now strict. example, >32 higher (never equal ) 32. Thus, .mic(\">32\") == .mic(32) now returns FALSE, .mic(\">32\") > .mic(32) now returns TRUE. Sorting MIC values (using sort()) fixed manner; <0.001 now gets sorted 0.001, >0.001 gets sorted 0.001. Intermediate log2 levels used MIC plotting now common values instead following strict dilution range eucast_rules() now argument overwrite (default: TRUE) indicate whether non-NA values overwritten Disks 0 5 mm now allowed, newly allowed range disk diffusion (.disk()) now 0 50 mm Updated italicise_taxonomy() support HTML output custom_eucast_rules() now supports multiple antibiotics antibiotic groups affected single rule mo_info() now contains extra element rank group_members (contents new mo_group_members() function) Updated ATC codes WHOCC Updated antibiotic DDDs WHOCC Added 1,500 trade names antibiotics Fix using manual value mo_transform antibiogram() Fixed bug antibiogram() returns empty data set Fix mapping ‘high level’ antibiotics .ab() (amphotericin B-high, gentamicin-high, kanamycin-high, streptomycin-high, tobramycin-high) Improved overall algorithm .ab() better performance accuracy weight given genus species combinations cases subspecies miswritten, result correct genus species Genera World Health Organization’s () Priority Pathogen List now highest prevalence Fixed bug sir_confidence_interval() isolates available Updated prevalence calculation include genera World Health Organization’s () Priority Pathogen List Improved algorithm first_isolate() using phenotype-based method, prioritise records highest availability SIR values scale_y_percent() can now cope ranges outside 0-100% range Implemented new Dutch national MDRO guideline (SRI-richtlijn BRMO, Nov 2024) Added arguments esbl, carbapenemase, mecA, mecC, vanA, vanB denote column names logical values indicating presence genes (production proteins) Added console colours support sir class Positron","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"other-2-1-1-9144","dir":"Changelog","previous_headings":"","what":"Other","title":"AMR 2.1.1.9144","text":"Added Dr. Larisse Bolton contributor fantastic implementation WISCA mathematically solid way Added Matthew Saab, Dr. Jordan Stull, Prof. Javier Sanchez contributors tremendous input veterinary breakpoints interpretations Greatly improved vctrs integration, Tidyverse package working background many Tidyverse functions. users, means functions dplyr’s bind_rows(), rowwise() c_across() now supported e.g. columns class mic. Despite , AMR package still zero-dependent package, including dplyr vctrs. Greatly updated expanded documentation Stopped support SAS (.xpt) files, since file structure extremely inefficient requires disk space GitHub allows single commit.","code":""},{"path":"https://msberends.github.io/AMR/news/index.html","id":"older-versions-2-1-1-9144","dir":"Changelog","previous_headings":"","what":"Older Versions","title":"AMR 2.1.1.9144","text":"changelog contains changes AMR v3.0 (February 2025) later. prior v2 versions, please see v2 archive. prior v1 versions, please see v1 archive.","code":""}]