1
0
mirror of https://github.com/msberends/AMR.git synced 2026-06-01 02:21:42 +02:00

Built site for AMR@3.0.1.9057: 0af3f84

This commit is contained in:
github-actions
2026-05-02 13:06:13 +00:00
parent 6fbd9e4b9f
commit 9447e0f2c2
107 changed files with 905 additions and 1160 deletions

View File

@@ -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="">3.0.1.9055</small>
<small class="nav-text text-muted me-auto" data-bs-toggle="tooltip" data-bs-placement="bottom" title="">3.0.1.9057</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">
@@ -49,96 +49,50 @@
</div>
<div class="section level2">
<h2 class="pkg-version" data-toc-text="3.0.1.9055" id="amr-3019055">AMR 3.0.1.9055<a class="anchor" aria-label="anchor" href="#amr-3019055"></a></h2>
<p>This will become release v3.1.0, intended for launch end of May.</p>
<h2 class="pkg-version" data-toc-text="3.0.1.9057" id="amr-3019057">AMR 3.0.1.9057<a class="anchor" aria-label="anchor" href="#amr-3019057"></a></h2>
<p>Planned as v3.1.0, May 2026.</p>
<div class="section level4">
<h4 id="new-3-0-1-9055">New<a class="anchor" aria-label="anchor" href="#new-3-0-1-9055"></a></h4>
<ul><li>Support for clinical breakpoints of 2026 of both CLSI and EUCAST, by adding all of their over 5,700 new clinical breakpoints to the <code>clinical_breakpoints</code> data set for usage in <code><a href="../reference/as.sir.html">as.sir()</a></code>. EUCAST 2026 is now the new default guideline for all MIC and disk diffusion interpretations.</li>
<li>Support for the <a href="https://future.futureverse.org" class="external-link"><code>future</code></a> package and its framework, as the previous implementation of parallel computing was slow
<ul><li>
<strong>Breaking change</strong>: <code><a href="../reference/as.sir.html">as.sir()</a></code> with <code>parallel = TRUE</code> now requires a non-sequential <code><a href="https://future.futureverse.org/reference/plan.html" class="external-link">future::plan()</a></code> to be active before the call — e.g., <code>future::plan(future::multisession)</code> — and throws an informative error if none is set.</li>
<li>New all-core usage setup: when the number of AB columns is smaller than the number of available cores, rows are now split into batches so all cores stay active (row-batch mode). Previously, a 6-column dataset on a 16-core machine would only use 6 cores; now all 16 are used, with each worker processing a smaller row slice (lower per-worker memory pressure and processing time)</li>
<h4 id="new-3-0-1-9057">New<a class="anchor" aria-label="anchor" href="#new-3-0-1-9057"></a></h4>
<ul><li>EUCAST 2026 and CLSI 2026 breakpoints: over 5,700 new breakpoints added to the <code>clinical_breakpoints</code> data set; EUCAST 2026 is now the default for all MIC and disk diffusion interpretations</li>
<li>Wildtype/Non-wildtype (WT/NWT) output when using ECOFF-based interpretation, by setting <code>breakpoint_type = "ECOFF"</code> in <code><a href="../reference/as.sir.html">as.sir()</a></code>; WT/NWT results are fully supported in all resistance/susceptibility functions and plots (<a href="https://github.com/msberends/AMR/issues/254" class="external-link">#254</a>)</li>
<li>Faster parallel computing via the <code>future</code> package; <strong>breaking change</strong>: a non-sequential plan (e.g. <code>future::plan(future::multisession)</code>) must be active before using <code>parallel = TRUE</code>; <code><a href="../reference/antibiogram.html">antibiogram()</a></code> and <code><a href="../reference/antibiogram.html">wisca()</a></code> now also support <code>parallel = TRUE</code> (<a href="https://github.com/msberends/AMR/issues/281" class="external-link">#281</a>)</li>
<li>
<code><a href="../reference/antibiogram.html">antibiogram()</a></code> and <code><a href="../reference/antibiogram.html">wisca()</a></code> gained a <code>parallel</code> argument using the same <code>future</code>/<code>future.apply</code> pattern: for WISCA, Monte Carlo simulations are split into <code>(group, chunk)</code> job pairs distributed across workers; for grouped antibiograms, each group is processed by a separate worker (<a href="https://github.com/msberends/AMR/issues/281" class="external-link">#281</a>)</li>
</ul></li>
<li>Integration with the <em>tidymodels</em> framework to allow seamless use of SIR, MIC and disk data in modelling pipelines via <code>recipes</code>
<ul><li>
<code><a href="../reference/amr-tidymodels.html">step_mic_log2()</a></code> to transform <code>&lt;mic&gt;</code> columns with log2, and <code><a href="../reference/amr-tidymodels.html">step_sir_numeric()</a></code> to convert <code>&lt;sir&gt;</code> columns to numeric</li>
<li>New <code>tidyselect</code> helpers:
<ul><li>
<code><a href="../reference/amr-tidymodels.html">all_sir()</a></code>, <code><a href="../reference/amr-tidymodels.html">all_sir_predictors()</a></code>
<em>tidymodels</em> integration for using SIR, MIC and disk data in modelling pipelines: <code><a href="../reference/amr-tidymodels.html">step_mic_log2()</a></code>, <code><a href="../reference/amr-tidymodels.html">step_sir_numeric()</a></code>, and new column selectors <code><a href="../reference/amr-tidymodels.html">all_sir()</a></code>, <code><a href="../reference/amr-tidymodels.html">all_mic()</a></code>, <code><a href="../reference/amr-tidymodels.html">all_disk()</a></code>
</li>
<li>
<code><a href="../reference/amr-tidymodels.html">all_mic()</a></code>, <code><a href="../reference/amr-tidymodels.html">all_mic_predictors()</a></code>
<li>New <code>esbl_isolates</code> data set for practising AMR modelling</li>
<li>New antimicrobial selectors: <code><a href="../reference/antimicrobial_selectors.html">ionophores()</a></code>, <code><a href="../reference/antimicrobial_selectors.html">peptides()</a></code>, <code><a href="../reference/antimicrobial_selectors.html">phosphonics()</a></code>, <code><a href="../reference/antimicrobial_selectors.html">spiropyrimidinetriones()</a></code>
</li>
<li>
<code><a href="../reference/amr-tidymodels.html">all_disk()</a></code>, <code><a href="../reference/amr-tidymodels.html">all_disk_predictors()</a></code>
</li>
</ul></li>
</ul></li>
<li>Data set <code>esbl_isolates</code> to practise with AMR modelling</li>
<li>AMR selectors <code><a href="../reference/antimicrobial_selectors.html">ionophores()</a></code>, <code><a href="../reference/antimicrobial_selectors.html">peptides()</a></code>, <code><a href="../reference/antimicrobial_selectors.html">phosphonics()</a></code> and <code><a href="../reference/antimicrobial_selectors.html">spiropyrimidinetriones()</a></code>
</li>
<li>Support for Wildtype (WT) / Non-wildtype (NWT) in <code><a href="../reference/as.sir.html">as.sir()</a></code>, all plotting functions, and all susceptibility/resistance functions.
<ul><li>
<code><a href="../reference/as.sir.html">as.sir()</a></code> gained an argument <code>as_wt_nwt</code>, which defaults to <code>TRUE</code> only when <code>breakpoint_type = "ECOFF"</code> (<a href="https://github.com/msberends/AMR/issues/254" class="external-link">#254</a>)</li>
<li>This transforms the output from S/R to WT/NWT</li>
<li>Functions such as <code><a href="../reference/proportion.html">susceptibility()</a></code> count WT as S and NWT as R</li>
</ul></li>
<li>Function <code><a href="../reference/interpretive_rules.html">interpretive_rules()</a></code>, which allows future implementation of CLSI interpretive rules (<a href="https://github.com/msberends/AMR/issues/235" class="external-link">#235</a>)
<ul><li>
<code><a href="../reference/interpretive_rules.html">eucast_rules()</a></code> has become a wrapper around that function</li>
<li>Gained argument <code>add_if_missing</code> (default: <code>TRUE</code>). When set to <code>FALSE</code>, rules are only applied to cells that already contain an SIR value; <code>NA</code> cells are left untouched. This is useful with <code>overwrite = TRUE</code> to update reported results without imputing values for drugs that were not tested (<a href="https://github.com/msberends/AMR/issues/259" class="external-link">#259</a>)</li>
</ul></li>
<li>Function <code><a href="../reference/amr_course.html">amr_course()</a></code>, which allows for automated download and unpacking of a GitHub repository for e.g. webinar use</li>
<li>Two new <code>NA</code> objects, <code>NA_ab_</code> and <code>NA_mo_</code>, analogous to base Rs <code>NA_character_</code> and <code>NA_integer_</code>, for use in pipelines that require typed missing values</li>
<li>New <code><a href="../reference/interpretive_rules.html">interpretive_rules()</a></code>, a unified function for EUCAST and CLSI interpretive rules; <code><a href="../reference/interpretive_rules.html">eucast_rules()</a></code> is now a wrapper around it (<a href="https://github.com/msberends/AMR/issues/235" class="external-link">#235</a>, <a href="https://github.com/msberends/AMR/issues/259" class="external-link">#259</a>)</li>
<li>New <code><a href="../reference/amr_course.html">amr_course()</a></code> to download and unpack course or webinar materials from GitHub in one call</li>
<li>Typed missing value constants <code>NA_ab_</code> and <code>NA_mo_</code>, for use in pipelines that need missing values of a specific class</li>
</ul></div>
<div class="section level4">
<h4 id="fixes-3-0-1-9055">Fixes<a class="anchor" aria-label="anchor" href="#fixes-3-0-1-9055"></a></h4>
<ul><li>Fixed a bug in <code><a href="../reference/as.sir.html">as.sir()</a></code> where values that were purely numeric (e.g., <code>"1"</code>) and matched the broad SIR-matching regex would be incorrectly stripped of all content by the Unicode letter filter</li>
<li>Fixed a bug in <code><a href="../reference/as.mic.html">as.mic()</a></code> where MIC values in scientific notation (e.g., <code>"1e-3"</code>) were incorrectly handled because the letter <code>e</code> was removed along with other Unicode letters; scientific notation <code>e</code> is now preserved</li>
<li>Fixed a bug in <code><a href="../reference/as.ab.html">as.ab()</a></code> where certain AB codes containing “PH” or “TH” (such as <code>ETH</code>, <code>MTH</code>, <code>PHE</code>, <code>PHN</code>, <code>STH</code>, <code>THA</code>, <code>THI1</code>) would incorrectly return <code>NA</code> when combined in a vector with any untranslatable value (<a href="https://github.com/msberends/AMR/issues/245" class="external-link">#245</a>)</li>
<li>Fixed a bug in <code><a href="../reference/antibiogram.html">antibiogram()</a></code> for when no antimicrobials are set</li>
<li>Fixed a bug in <code><a href="../reference/as.sir.html">as.sir()</a></code> where for numeric input the arguments <code>S</code>, <code>I</code>, and <code>R</code> would not be considered (<a href="https://github.com/msberends/AMR/issues/244" class="external-link">#244</a>)</li>
<li>Fixed a bug in plotting MIC values when <code>keep_operators = "all"</code>
</li>
<li>Fixed some foreign translations of antimicrobial drugs</li>
<li>Fixed a bug for printing column names to the console when using <code>mutate_at(vars(...), as.mic)</code> (<a href="https://github.com/msberends/AMR/issues/249" class="external-link">#249</a>)</li>
<li>Fixed a bug to disregard <code>NI</code> for susceptibility proportion functions</li>
<li>Fixed Italian translation of CoNS to Stafilococco coagulasi-negativo and CoPS to Stafilococco coagulasi-positivo (<a href="https://github.com/msberends/AMR/issues/256" class="external-link">#256</a>)</li>
<li>Fixed SIR and MIC coercion of combined values, e.g. <code>as.sir("&lt;= 0.002; S")</code> or <code>as.mic("S; 0.002")</code> (<a href="https://github.com/msberends/AMR/issues/252" class="external-link">#252</a>)</li>
<li>Fixed translation of foreign languages in <code><a href="../reference/proportion.html">sir_df()</a></code> (<a href="https://github.com/msberends/AMR/issues/272" class="external-link">#272</a>)</li>
<li>Fixed BRMO classification by including bacterial complexes (<a href="https://github.com/msberends/AMR/issues/275" class="external-link">#275</a>)</li>
<li>Fixed <code><a href="../reference/as.sir.html">as.sir()</a></code> for data frames silently deleting columns whose AB class was already <code>&lt;sir&gt;</code> when called a second time (re-running on already-converted data) (<a href="https://github.com/msberends/AMR/issues/278" class="external-link">#278</a>)</li>
<li>Fixed <code><a href="../reference/as.sir.html">as.sir()</a></code> for data frames incorrectly treating metadata columns (e.g. <code>patient</code>, <code>ward</code>) as antibiotic columns when their names coincidentally matched an antibiotic code; column content is now validated against AMR data patterns before inclusion</li>
<li>Fixed <code><a href="../reference/as.sir.html">as.sir()</a></code> ignoring <code>info = FALSE</code> for columns with no breakpoints (e.g. cefoxitin against <em>E. coli</em>)</li>
<h4 id="fixes-3-0-1-9057">Fixes<a class="anchor" aria-label="anchor" href="#fixes-3-0-1-9057"></a></h4>
<ul><li>
<code><a href="../reference/as.sir.html">as.sir()</a></code> on data frames: already-converted SIR columns no longer dropped on re-run (<a href="https://github.com/msberends/AMR/issues/278" class="external-link">#278</a>); metadata columns (e.g. <code>patient</code>, <code>ward</code>) no longer misidentified as antibiotic columns; <code>info = FALSE</code> now suppresses all messages, including for columns without breakpoints</li>
<li>
<code><a href="../reference/as.mic.html">as.mic()</a></code>: values in scientific notation (e.g. <code>1e-3</code>) now handled correctly</li>
<li>
<code><a href="../reference/as.ab.html">as.ab()</a></code>: codes containing “PH” or “TH” (e.g. <code>ETH</code>, <code>PHE</code>) no longer return <code>NA</code> when mixed with unrecognised input (<a href="https://github.com/msberends/AMR/issues/245" class="external-link">#245</a>)</li>
<li>Combined MIC/SIR input values (e.g. <code>"&lt;= 0.002; S"</code> or <code>"S; 0.002"</code>) now parsed correctly (<a href="https://github.com/msberends/AMR/issues/252" class="external-link">#252</a>)</li>
<li>BRMO classification now includes bacterial complexes (<a href="https://github.com/msberends/AMR/issues/275" class="external-link">#275</a>)</li>
<li>Translation fixes for Italian CoNS/CoPS names (<a href="https://github.com/msberends/AMR/issues/256" class="external-link">#256</a>), Dutch antimicrobials, and <code><a href="../reference/proportion.html">sir_df()</a></code> foreign-language output (<a href="https://github.com/msberends/AMR/issues/272" class="external-link">#272</a>)</li>
</ul></div>
<div class="section level4">
<h4 id="updates-3-0-1-9055">Updates<a class="anchor" aria-label="anchor" href="#updates-3-0-1-9055"></a></h4>
<h4 id="updates-3-0-1-9057">Updates<a class="anchor" aria-label="anchor" href="#updates-3-0-1-9057"></a></h4>
<ul><li>
<code><a href="../reference/as.sir.html">as.sir()</a></code> with <code>reference_data</code>: custom guideline names now correctly classify values as R using EUCAST convention (<code>&gt; breakpoint_R</code> for MIC, <code>&lt; breakpoint_R</code> for disk); custom breakpoints with <code>host = NA</code> now serve as a host-agnostic fallback when no host-specific row matches (<a href="https://github.com/msberends/AMR/issues/239" class="external-link">#239</a>)</li>
<li>Extensive <code>cli</code> integration for better message handling and clickable links in messages and warnings (<a href="https://github.com/msberends/AMR/issues/191" class="external-link">#191</a>, <a href="https://github.com/msberends/AMR/issues/265" class="external-link">#265</a>)</li>
<code><a href="../reference/AMR-deprecated.html">custom_eucast_rules()</a></code> renamed to <code><a href="../reference/custom_interpretive_rules.html">custom_interpretive_rules()</a></code>; old name deprecated but still works (<a href="https://github.com/msberends/AMR/issues/268" class="external-link">#268</a>)</li>
<li>
<code><a href="../reference/mdro.html">mdro()</a></code> now infers resistance for a <em>missing</em> base drug column from an <em>available</em> corresponding drug+inhibitor combination showing resistance (e.g., piperacillin is absent but required, while piperacillin/tazobactam available and resistant). Can be set with the new argument <code>infer_from_combinations</code>, which defaults to <code>TRUE</code> (<a href="https://github.com/msberends/AMR/issues/209" class="external-link">#209</a>). Note that this can yield a higher MDRO detection (which is a good thing as it has become more reliable).</li>
<code><a href="../reference/mdro.html">mdro()</a></code> can now infer resistance from a drug+inhibitor combination when the base drug column is absent (e.g. piperacillin inferred from piperacillin/tazobactam); controlled via new <code>infer_from_combinations</code> argument (default <code>TRUE</code>) (<a href="https://github.com/msberends/AMR/issues/209" class="external-link">#209</a>)</li>
<li>
<code><a href="../reference/proportion.html">susceptibility()</a></code> and <code><a href="../reference/proportion.html">resistance()</a></code> gained the argument <code>guideline</code>, which defaults to EUCAST, for interpreting the I category correctly.</li>
<li>Added to the <code>antimicrobials</code> data set: cefepime/taniborbactam (<code>FTA</code>), ceftibuten/avibactam (<code>CTA</code>), clorobiocin (<code>CLB</code>), kasugamycin (<code>KAS</code>), ostreogrycin (<code>OST</code>), taniborbactam (<code>TAN</code>), thiostrepton (<code>THS</code>), xeruborbactam (<code>XER</code>), and zorbamycin (<code>ZOR</code>)</li>
<code><a href="../reference/proportion.html">susceptibility()</a></code> / <code><a href="../reference/proportion.html">resistance()</a></code>: new <code>guideline</code> argument (default EUCAST) to ensure the I category is interpreted correctly per guideline</li>
<li>Capped MIC handling in <code><a href="../reference/as.sir.html">as.sir()</a></code> reworked into four clearly defined options: <code>"none"</code>, <code>"conservative"</code> (new default), <code>"standard"</code>, <code>"lenient"</code> (<a href="https://github.com/msberends/AMR/issues/243" class="external-link">#243</a>)</li>
<li>
<code><a href="../reference/as.mic.html">as.mic()</a></code> and <code><a href="../reference/as.mic.html">rescale_mic()</a></code> gained the argument <code>round_to_next_log2</code>, which can be set to <code>TRUE</code> to round all values up to the nearest next log2 level (<a href="https://github.com/msberends/AMR/issues/255" class="external-link">#255</a>)</li>
<code><a href="../reference/as.mic.html">as.mic()</a></code> / <code><a href="../reference/as.mic.html">rescale_mic()</a></code>: new <code>round_to_next_log2</code> argument to round values up to the nearest log2 dilution level (<a href="https://github.com/msberends/AMR/issues/255" class="external-link">#255</a>)</li>
<li>
<code>antimicrobials$group</code> is now a <code>list</code> instead of a <code>character</code>, to contain any group the drug is in (<a href="https://github.com/msberends/AMR/issues/246" class="external-link">#246</a>)</li>
<li>
<code><a href="../reference/ab_property.html">ab_group()</a></code> gained an argument <code>all_groups</code> to return all groups the antimicrobial drug is in (<a href="https://github.com/msberends/AMR/issues/246" class="external-link">#246</a>)</li>
<li>Added explaining message to <code><a href="../reference/as.sir.html">as.sir()</a></code> when interpreting numeric values (e.g., 1 for S, 2 for I, 3 for R) (<a href="https://github.com/msberends/AMR/issues/244" class="external-link">#244</a>)</li>
<li>Updated handling of capped MIC values (<code>&lt;</code>, <code>&lt;=</code>, <code>&gt;</code>, <code>&gt;=</code>) in <code><a href="../reference/as.sir.html">as.sir()</a></code> in the argument <code>capped_mic_handling</code>: (<a href="https://github.com/msberends/AMR/issues/243" class="external-link">#243</a>)
<ul><li>Introduced four clearly defined options: <code>"none"</code>, <code>"conservative"</code> (default), <code>"standard"</code>, and <code>"lenient"</code>
</li>
<li>Interpretation of capped MIC values now consistently returns <code>"NI"</code> (non-interpretable) when the true MIC could be at either side of a breakpoint, depending on the selected handling mode</li>
<li>This results in more reliable behaviour compared to previous versions for capped MIC values</li>
<li>Removed the <code>"inverse"</code> option, which has now become redundant</li>
</ul></li>
<li>
<code><a href="../reference/ab_property.html">ab_group()</a></code> now returns values consist with the AMR selectors (<a href="https://github.com/msberends/AMR/issues/246" class="external-link">#246</a>)</li>
<code>antimicrobials$group</code> now a <code>list</code>, so drugs belonging to multiple groups are fully represented; use <code>ab_group(all_groups = TRUE)</code> to retrieve all groups for a drug (<a href="https://github.com/msberends/AMR/issues/246" class="external-link">#246</a>)</li>
<li>New antimicrobials added: cefepime/taniborbactam (<code>FTA</code>), ceftibuten/avibactam (<code>CTA</code>), clorobiocin (<code>CLB</code>), kasugamycin (<code>KAS</code>), ostreogrycin (<code>OST</code>), taniborbactam (<code>TAN</code>), thiostrepton (<code>THS</code>), xeruborbactam (<code>XER</code>), zorbamycin (<code>ZOR</code>)</li>
<li>Improved console messages with clickable links throughout, powered by <code>cli</code> (<a href="https://github.com/msberends/AMR/issues/191" class="external-link">#191</a>, <a href="https://github.com/msberends/AMR/issues/265" class="external-link">#265</a>)</li>
</ul></div>
</div>
<div class="section level2">
@@ -300,7 +254,7 @@
<li>Disks of 0 to 5 mm are now allowed, the newly allowed range for disk diffusion (<code><a href="../reference/as.disk.html">as.disk()</a></code>) is now between 0 and 50 mm</li>
<li>Updated <code><a href="../reference/italicise_taxonomy.html">italicise_taxonomy()</a></code> to support HTML output</li>
<li>
<code><a href="../reference/custom_eucast_rules.html">custom_eucast_rules()</a></code> now supports multiple antimicrobials and antimicrobial groups to be affected by a single rule</li>
<code><a href="../reference/AMR-deprecated.html">custom_eucast_rules()</a></code> now supports multiple antimicrobials and antimicrobial groups to be affected by a single rule</li>
<li>
<code><a href="../reference/mo_property.html">mo_info()</a></code> now contains an extra element <code>rank</code> and <code>group_members</code> (with the contents of the new <code><a href="../reference/mo_property.html">mo_group_members()</a></code> function)</li>
<li>Updated all ATC codes from WHOCC</li>

View File

@@ -1,201 +1,116 @@
# Changelog
## AMR 3.0.1.9055
## AMR 3.0.1.9057
This will become release v3.1.0, intended for launch end of May.
Planned as v3.1.0, May 2026.
#### New
- Support for clinical breakpoints of 2026 of both CLSI and EUCAST, by
adding all of their over 5,700 new clinical breakpoints to the
`clinical_breakpoints` data set for usage in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md). EUCAST 2026
is now the new default guideline for all MIC and disk diffusion
interpretations.
- Support for the [`future`](https://future.futureverse.org) package and
its framework, as the previous implementation of parallel computing
was slow
- **Breaking change**:
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) with
`parallel = TRUE` now requires a non-sequential
[`future::plan()`](https://future.futureverse.org/reference/plan.html)
to be active before the call — e.g.,
`future::plan(future::multisession)` — and throws an informative
error if none is set.
- New all-core usage setup: when the number of AB columns is smaller
than the number of available cores, rows are now split into batches
so all cores stay active (row-batch mode). Previously, a 6-column
dataset on a 16-core machine would only use 6 cores; now all 16 are
used, with each worker processing a smaller row slice (lower
per-worker memory pressure and processing time)
- [`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md)
and [`wisca()`](https://amr-for-r.org/reference/antibiogram.md)
gained a `parallel` argument using the same `future`/`future.apply`
pattern: for WISCA, Monte Carlo simulations are split into
`(group, chunk)` job pairs distributed across workers; for grouped
antibiograms, each group is processed by a separate worker
([\#281](https://github.com/msberends/AMR/issues/281))
- Integration with the *tidymodels* framework to allow seamless use of
SIR, MIC and disk data in modelling pipelines via `recipes`
- [`step_mic_log2()`](https://amr-for-r.org/reference/amr-tidymodels.md)
to transform `<mic>` columns with log2, and
[`step_sir_numeric()`](https://amr-for-r.org/reference/amr-tidymodels.md)
to convert `<sir>` columns to numeric
- New `tidyselect` helpers:
- [`all_sir()`](https://amr-for-r.org/reference/amr-tidymodels.md),
[`all_sir_predictors()`](https://amr-for-r.org/reference/amr-tidymodels.md)
- [`all_mic()`](https://amr-for-r.org/reference/amr-tidymodels.md),
[`all_mic_predictors()`](https://amr-for-r.org/reference/amr-tidymodels.md)
- [`all_disk()`](https://amr-for-r.org/reference/amr-tidymodels.md),
[`all_disk_predictors()`](https://amr-for-r.org/reference/amr-tidymodels.md)
- Data set `esbl_isolates` to practise with AMR modelling
- AMR selectors
- EUCAST 2026 and CLSI 2026 breakpoints: over 5,700 new breakpoints
added to the `clinical_breakpoints` data set; EUCAST 2026 is now the
default for all MIC and disk diffusion interpretations
- Wildtype/Non-wildtype (WT/NWT) output when using ECOFF-based
interpretation, by setting `breakpoint_type = "ECOFF"` in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md); WT/NWT
results are fully supported in all resistance/susceptibility functions
and plots ([\#254](https://github.com/msberends/AMR/issues/254))
- Faster parallel computing via the `future` package; **breaking
change**: a non-sequential plan
(e.g. `future::plan(future::multisession)`) must be active before
using `parallel = TRUE`;
[`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md) and
[`wisca()`](https://amr-for-r.org/reference/antibiogram.md) now also
support `parallel = TRUE`
([\#281](https://github.com/msberends/AMR/issues/281))
- *tidymodels* integration for using SIR, MIC and disk data in modelling
pipelines:
[`step_mic_log2()`](https://amr-for-r.org/reference/amr-tidymodels.md),
[`step_sir_numeric()`](https://amr-for-r.org/reference/amr-tidymodels.md),
and new column selectors
[`all_sir()`](https://amr-for-r.org/reference/amr-tidymodels.md),
[`all_mic()`](https://amr-for-r.org/reference/amr-tidymodels.md),
[`all_disk()`](https://amr-for-r.org/reference/amr-tidymodels.md)
- New `esbl_isolates` data set for practising AMR modelling
- New antimicrobial selectors:
[`ionophores()`](https://amr-for-r.org/reference/antimicrobial_selectors.md),
[`peptides()`](https://amr-for-r.org/reference/antimicrobial_selectors.md),
[`phosphonics()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
and
[`phosphonics()`](https://amr-for-r.org/reference/antimicrobial_selectors.md),
[`spiropyrimidinetriones()`](https://amr-for-r.org/reference/antimicrobial_selectors.md)
- Support for Wildtype (WT) / Non-wildtype (NWT) in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md), all plotting
functions, and all susceptibility/resistance functions.
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) gained an
argument `as_wt_nwt`, which defaults to `TRUE` only when
`breakpoint_type = "ECOFF"`
([\#254](https://github.com/msberends/AMR/issues/254))
- This transforms the output from S/R to WT/NWT
- Functions such as
[`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
count WT as S and NWT as R
- Function
- New
[`interpretive_rules()`](https://amr-for-r.org/reference/interpretive_rules.md),
which allows future implementation of CLSI interpretive rules
([\#235](https://github.com/msberends/AMR/issues/235))
- [`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
has become a wrapper around that function
- Gained argument `add_if_missing` (default: `TRUE`). When set to
`FALSE`, rules are only applied to cells that already contain an SIR
value; `NA` cells are left untouched. This is useful with
`overwrite = TRUE` to update reported results without imputing
values for drugs that were not tested
([\#259](https://github.com/msberends/AMR/issues/259))
- Function
[`amr_course()`](https://amr-for-r.org/reference/amr_course.md), which
allows for automated download and unpacking of a GitHub repository for
e.g. webinar use
- Two new `NA` objects, `NA_ab_` and `NA_mo_`, analogous to base Rs
`NA_character_` and `NA_integer_`, for use in pipelines that require
typed missing values
a unified function for EUCAST and CLSI interpretive rules;
[`eucast_rules()`](https://amr-for-r.org/reference/interpretive_rules.md)
is now a wrapper around it
([\#235](https://github.com/msberends/AMR/issues/235),
[\#259](https://github.com/msberends/AMR/issues/259))
- New [`amr_course()`](https://amr-for-r.org/reference/amr_course.md) to
download and unpack course or webinar materials from GitHub in one
call
- Typed missing value constants `NA_ab_` and `NA_mo_`, for use in
pipelines that need missing values of a specific class
#### Fixes
- Fixed a bug in [`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
where values that were purely numeric (e.g., `"1"`) and matched the
broad SIR-matching regex would be incorrectly stripped of all content
by the Unicode letter filter
- Fixed a bug in [`as.mic()`](https://amr-for-r.org/reference/as.mic.md)
where MIC values in scientific notation (e.g., `"1e-3"`) were
incorrectly handled because the letter `e` was removed along with
other Unicode letters; scientific notation `e` is now preserved
- Fixed a bug in [`as.ab()`](https://amr-for-r.org/reference/as.ab.md)
where certain AB codes containing “PH” or “TH” (such as `ETH`, `MTH`,
`PHE`, `PHN`, `STH`, `THA`, `THI1`) would incorrectly return `NA` when
combined in a vector with any untranslatable value
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) on data
frames: already-converted SIR columns no longer dropped on re-run
([\#278](https://github.com/msberends/AMR/issues/278)); metadata
columns (e.g. `patient`, `ward`) no longer misidentified as antibiotic
columns; `info = FALSE` now suppresses all messages, including for
columns without breakpoints
- [`as.mic()`](https://amr-for-r.org/reference/as.mic.md): values in
scientific notation (e.g. `1e-3`) now handled correctly
- [`as.ab()`](https://amr-for-r.org/reference/as.ab.md): codes
containing “PH” or “TH” (e.g. `ETH`, `PHE`) no longer return `NA` when
mixed with unrecognised input
([\#245](https://github.com/msberends/AMR/issues/245))
- Fixed a bug in
[`antibiogram()`](https://amr-for-r.org/reference/antibiogram.md) for
when no antimicrobials are set
- Fixed a bug in [`as.sir()`](https://amr-for-r.org/reference/as.sir.md)
where for numeric input the arguments `S`, `I`, and `R` would not be
considered ([\#244](https://github.com/msberends/AMR/issues/244))
- Fixed a bug in plotting MIC values when `keep_operators = "all"`
- Fixed some foreign translations of antimicrobial drugs
- Fixed a bug for printing column names to the console when using
`mutate_at(vars(...), as.mic)`
([\#249](https://github.com/msberends/AMR/issues/249))
- Fixed a bug to disregard `NI` for susceptibility proportion functions
- Fixed Italian translation of CoNS to Stafilococco coagulasi-negativo
and CoPS to Stafilococco coagulasi-positivo
([\#256](https://github.com/msberends/AMR/issues/256))
- Fixed SIR and MIC coercion of combined values,
e.g. `as.sir("<= 0.002; S")` or `as.mic("S; 0.002")`
- Combined MIC/SIR input values (e.g. `"<= 0.002; S"` or `"S; 0.002"`)
now parsed correctly
([\#252](https://github.com/msberends/AMR/issues/252))
- Fixed translation of foreign languages in
[`sir_df()`](https://amr-for-r.org/reference/proportion.md)
([\#272](https://github.com/msberends/AMR/issues/272))
- Fixed BRMO classification by including bacterial complexes
- BRMO classification now includes bacterial complexes
([\#275](https://github.com/msberends/AMR/issues/275))
- Fixed [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) for data
frames silently deleting columns whose AB class was already `<sir>`
when called a second time (re-running on already-converted data)
([\#278](https://github.com/msberends/AMR/issues/278))
- Fixed [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) for data
frames incorrectly treating metadata columns (e.g. `patient`, `ward`)
as antibiotic columns when their names coincidentally matched an
antibiotic code; column content is now validated against AMR data
patterns before inclusion
- Fixed [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) ignoring
`info = FALSE` for columns with no breakpoints (e.g. cefoxitin against
*E. coli*)
- Translation fixes for Italian CoNS/CoPS names
([\#256](https://github.com/msberends/AMR/issues/256)), Dutch
antimicrobials, and
[`sir_df()`](https://amr-for-r.org/reference/proportion.md)
foreign-language output
([\#272](https://github.com/msberends/AMR/issues/272))
#### Updates
- [`as.sir()`](https://amr-for-r.org/reference/as.sir.md) with
`reference_data`: custom guideline names now correctly classify values
as R using EUCAST convention (`> breakpoint_R` for MIC,
`< breakpoint_R` for disk); custom breakpoints with `host = NA` now
serve as a host-agnostic fallback when no host-specific row matches
([\#239](https://github.com/msberends/AMR/issues/239))
- Extensive `cli` integration for better message handling and clickable
links in messages and warnings
([\#191](https://github.com/msberends/AMR/issues/191),
[\#265](https://github.com/msberends/AMR/issues/265))
- [`mdro()`](https://amr-for-r.org/reference/mdro.md) now infers
resistance for a *missing* base drug column from an *available*
corresponding drug+inhibitor combination showing resistance (e.g.,
piperacillin is absent but required, while piperacillin/tazobactam
available and resistant). Can be set with the new argument
`infer_from_combinations`, which defaults to `TRUE`
([\#209](https://github.com/msberends/AMR/issues/209)). Note that this
can yield a higher MDRO detection (which is a good thing as it has
become more reliable).
- [`susceptibility()`](https://amr-for-r.org/reference/proportion.md)
and [`resistance()`](https://amr-for-r.org/reference/proportion.md)
gained the argument `guideline`, which defaults to EUCAST, for
interpreting the I category correctly.
- Added to the `antimicrobials` data set: cefepime/taniborbactam
(`FTA`), ceftibuten/avibactam (`CTA`), clorobiocin (`CLB`),
kasugamycin (`KAS`), ostreogrycin (`OST`), taniborbactam (`TAN`),
thiostrepton (`THS`), xeruborbactam (`XER`), and zorbamycin (`ZOR`)
- [`as.mic()`](https://amr-for-r.org/reference/as.mic.md) and
[`rescale_mic()`](https://amr-for-r.org/reference/as.mic.md) gained
the argument `round_to_next_log2`, which can be set to `TRUE` to round
all values up to the nearest next log2 level
([\#255](https://github.com/msberends/AMR/issues/255))
- `antimicrobials$group` is now a `list` instead of a `character`, to
contain any group the drug is in
([\#246](https://github.com/msberends/AMR/issues/246))
- [`ab_group()`](https://amr-for-r.org/reference/ab_property.md) gained
an argument `all_groups` to return all groups the antimicrobial drug
is in ([\#246](https://github.com/msberends/AMR/issues/246))
- Added explaining message to
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) when
interpreting numeric values (e.g., 1 for S, 2 for I, 3 for R)
([\#244](https://github.com/msberends/AMR/issues/244))
- Updated handling of capped MIC values (`<`, `<=`, `>`, `>=`) in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) in the
argument `capped_mic_handling`:
- [`custom_eucast_rules()`](https://amr-for-r.org/reference/AMR-deprecated.md)
renamed to
[`custom_interpretive_rules()`](https://amr-for-r.org/reference/custom_interpretive_rules.md);
old name deprecated but still works
([\#268](https://github.com/msberends/AMR/issues/268))
- [`mdro()`](https://amr-for-r.org/reference/mdro.md) can now infer
resistance from a drug+inhibitor combination when the base drug column
is absent (e.g. piperacillin inferred from piperacillin/tazobactam);
controlled via new `infer_from_combinations` argument (default `TRUE`)
([\#209](https://github.com/msberends/AMR/issues/209))
- [`susceptibility()`](https://amr-for-r.org/reference/proportion.md) /
[`resistance()`](https://amr-for-r.org/reference/proportion.md): new
`guideline` argument (default EUCAST) to ensure the I category is
interpreted correctly per guideline
- Capped MIC handling in
[`as.sir()`](https://amr-for-r.org/reference/as.sir.md) reworked into
four clearly defined options: `"none"`, `"conservative"` (new
default), `"standard"`, `"lenient"`
([\#243](https://github.com/msberends/AMR/issues/243))
- Introduced four clearly defined options: `"none"`, `"conservative"`
(default), `"standard"`, and `"lenient"`
- Interpretation of capped MIC values now consistently returns `"NI"`
(non-interpretable) when the true MIC could be at either side of a
breakpoint, depending on the selected handling mode
- This results in more reliable behaviour compared to previous
versions for capped MIC values
- Removed the `"inverse"` option, which has now become redundant
- [`ab_group()`](https://amr-for-r.org/reference/ab_property.md) now
returns values consist with the AMR selectors
- [`as.mic()`](https://amr-for-r.org/reference/as.mic.md) /
[`rescale_mic()`](https://amr-for-r.org/reference/as.mic.md): new
`round_to_next_log2` argument to round values up to the nearest log2
dilution level ([\#255](https://github.com/msberends/AMR/issues/255))
- `antimicrobials$group` now a `list`, so drugs belonging to multiple
groups are fully represented; use `ab_group(all_groups = TRUE)` to
retrieve all groups for a drug
([\#246](https://github.com/msberends/AMR/issues/246))
- New antimicrobials added: cefepime/taniborbactam (`FTA`),
ceftibuten/avibactam (`CTA`), clorobiocin (`CLB`), kasugamycin
(`KAS`), ostreogrycin (`OST`), taniborbactam (`TAN`), thiostrepton
(`THS`), xeruborbactam (`XER`), zorbamycin (`ZOR`)
- Improved console messages with clickable links throughout, powered by
`cli` ([\#191](https://github.com/msberends/AMR/issues/191),
[\#265](https://github.com/msberends/AMR/issues/265))
## AMR 3.0.1
@@ -581,7 +496,7 @@ this change.
- Updated
[`italicise_taxonomy()`](https://amr-for-r.org/reference/italicise_taxonomy.md)
to support HTML output
- [`custom_eucast_rules()`](https://amr-for-r.org/reference/custom_eucast_rules.md)
- [`custom_eucast_rules()`](https://amr-for-r.org/reference/AMR-deprecated.md)
now supports multiple antimicrobials and antimicrobial groups to be
affected by a single rule
- [`mo_info()`](https://amr-for-r.org/reference/mo_property.md) now