This is a bugfix release following the release of v3.0.0 in June 2025.
ggplot2 v4.0.0 (#236)
scale_y_mic()) will now be
applied automatically when plotting values of class
micscale_x_sir()) will now be
applied automatically when plotting values of class
sirantibiogram() for when no antimicrobials
are setantibiogram() to allow column names
containing the + character (#222)as.ab() for antimicrobial codes with a
number in it if they are preceded by a spaceeucast_rules() for using specific custom
rulesas.sir() to allow any tidyselect
language (#220)as.sir() to pick right breakpoint when
uti = FALSE (#216)ggplot_sir() when using
combine_SI = FALSE (#213)mdro() to make sure all genes specified
in arguments are acknowledgedantimicrobials data set to remove
statins (#229)microorganisms data set for MycoBank
IDs and synonyms (#233)skimr package) of class
ab, sir, and disk (#234)as.ab() if input resembles antiviral
codes or names (#232)mdro()
(#227)names to age_groups() so that custom
names can be given (#215)as.sir() to make it explicit when
higher-level taxonomic breakpoints are used (#218)antimicrobials data set (#225)random_mic() and random_disk() to
set skewedness of the distribution and allow multiple
microorganismsThis package now supports not only tools for AMR data analysis in clinical settings, but also for veterinary and environmental microbiology. This was made possible through a collaboration with the University of Prince Edward Island’s Atlantic Veterinary College, Canada. To celebrate this great improvement of the package, we also updated the package logo to reflect this change.
antibiotics has been renamed to
antimicrobials as the data set contains more than just
antibiotics. Using antibiotics will still work, but now
returns a warning.rsi class, which were all replaced with their
sir equivalents over two years ago.resistance_predict() and
sir_predict() are now deprecated and will be removed in a
future version. Use the tidymodels framework instead, for
which we wrote a
basic introduction.as.sir() now has extensive support for
veterinary breakpoints from CLSI. Use
breakpoint_type = "animal" and set the host
argument to a variable that contains animal species names.clinical_breakpoints data set contains all these
breakpoints, and can be downloaded on our download
page.antimicrobials data set contains all
veterinary antimicrobials, such as pradofloxacin and enrofloxacin. All
WHOCC codes for veterinary use have been added as well.ab_atc() now supports ATC codes of veterinary
antimicrobials (that all start with “Q”)ab_url() now supports retrieving the WHOCC url of their
ATCvet pagesantibiogram() function now supports creating true
Weighted-Incidence Syndromic Combination Antibiograms (WISCA), a
powerful Bayesian method for estimating regimen coverage probabilities
using pathogen incidence and antimicrobial susceptibility data. WISCA
offers improved precision for syndrome-specific treatment, even in
datasets with sparse data. A dedicated wisca() function is
also available for easy usage.AMR
package is now available in 28 languages.microorganisms data set has been enriched with
new columns (mycobank, mycobank_parent, and
mycobank_renamed_to) that provide detailed information for
fungal species.mo_mycobank() to retrieve the MycoBank
record number, analogous to existing functions such as
mo_lpsn() and mo_gbif().as.mo() function and all mo_*()
functions now include an only_fungi argument, allowing
users to restrict results solely to fungal species. This ensures fungi
are prioritised over bacteria during microorganism identification. This
can also be set globally with the new AMR_only_fungi
option.clinical_breakpoints data set for usage in
as.sir(). EUCAST 2025 is now the new default guideline for
all MIC and disk diffusion interpretations.rules for eucast_rules() are now:
c("breakpoints", "expected_phenotypes").intrinsic_resistant data set, which is now
based on EUCAST Expected Resistant Phenotypes v1.2as.sir() now brings additional factor levels: “NI” for
non-interpretable and “SDD” for susceptible dose-dependent. Currently,
the clinical_breakpoints data set contains 24 breakpoints
that can return the value “SDD” instead of “I”.eucast_rules()) are
now available for EUCAST 12 (2022), 13 (2023), 14 (2024), and 15
(2025).dosage data set) are now
available for EUCAST 13 (2023), 14 (2024), and 15 (2025).scale_*_mic(), namely:
scale_x_mic(), scale_y_mic(),
scale_colour_mic() and scale_fill_mic(). They
allow easy plotting of MIC values. They allow for manual range
definition and plotting missing intermediate log2 levels.scale_*_sir(), namely:
scale_x_sir(), scale_colour_sir() and
scale_fill_sir(). They allow to plot the sir
class, and translates into the system language at default. They also set
colourblind-safe colours to the plots.rescale_mic(), which allows users to
rescale MIC values to a manually set range. This is the powerhouse
behind the scale_*_mic() functions, but it can be used
independently to, for instance, compare equality in MIC distributions by
rescaling them to the same range first.tidymodels
aminoglycosides()
and betalactams()) are now supported in
tidymodels packages such as recipe and
parsnip. See for more info our
tutorial on using these AMR functions for predictive modelling.top_n_microorganisms() to filter a data
set to the top n of any taxonomic property, e.g., filter to the
top 3 species, filter to any species in the top 5 genera, or filter to
the top 3 species in each of the top 5 generamo_group_members() to retrieve the member
microorganisms of a microorganism group. For example,
mo_group_members("Strep group C") returns a vector of all
microorganisms that belong to that group.mic_p50() and mic_p90() to
retrieve the 50th and 90th percentile of MIC values.parallel package (part of base R). Use
as.sir(your_data, parallel = TRUE) to run SIR
interpretation using multiple cores.guideline, ab, mo, and
uti:
as.sir(..., ab = "column1", mo = "column2", uti = "column3").
This greatly improves the flexibility for users.as.double() on a
sir object will return 1 for S, 2 for SDD/I, and 3 for R
(NI will become NA). Other functions using sir
classes (e.g., summary()) are updated to reflect the change
to contain NI and SDD.conserve_capped_values in
as.sir() has been replaced with
capped_mic_handling, which allows greater flexibility in
handling capped MIC values (<, <=,
>, >=). The four available options
("standard", "strict", "relaxed",
"inverse") provide full control over whether these values
should be interpreted conservatively or ignored. Using
conserve_capped_values is now deprecated and returns a
warning.info to silence all console
messagesantibiogram() function
antibiotics has been renamed to
antimicrobials. Using antibiotics will still
work, but now returns a warning.formatting_type to set any of the 22
options for the formatting of all ‘cells’. This defaults to
18 for non-WISCA and 14 for WISCA, changing
the output of antibiograms to cells with more info.add_total_n is now deprecated and
FALSE at default since the denominators are added to the
cells dependent on the formatting_type settingab_transform argument now defaults to
"name", displaying antibiotic column names instead of
codesab_class() and
ab_selector() have been replaced with
amr_class() and amr_selector(). The old
functions are now deprecated and will be removed in a future
version.isoxazolylpenicillins(),
monobactams(), nitrofurans(),
phenicols(), rifamycins(), and
sulfonamides()aminoglycosides()), the
function now always returns a warning that these can be included using
only_treatable = FALSEreturn_all to all selectors, which
defaults to TRUE to include any match. With
FALSE, the old behaviour, only the first hit for each
unique antimicrobial is returned.lincosamides() and
macrolides() do not overlap anymore - each antibiotic is
now classified as either of these and not bothfluoroquinolones(), which now really
only selects second-generation quinolones and up (first-generation
quinolones do not contain a fluorine group)antimicrobials data set
-S: benzylpenicillin screening test (PEN-S),
beta-lactamase screening test (BLA-S), cefotaxime screening
test (CTX-S), clindamycin inducible screening test
(CLI-S), nalidixic acid screening test
(NAL-S), norfloxacin screening test (NOR-S),
oxacillin screening test (OXA-S), pefloxacin screening test
(PEF-S), and tetracycline screening test
(TCY-S). The ID of cefoxitin screening was renamed from
FOX1 to FOX-S, while the old code remains to
work.cephalosporins(), cephalosporins_3rd(),
lincosamides(), isoxazolylpenicillins(),
quinolones(), fluoroquinolones(), and
tetracyclines() now contain the argument
only_treatable = TRUE (similar to other antimicrobial
selectors that contain non-treatable drugs)AMO, D01AE16), an antimycotic, which
is now also part of the antifungals() selectorFPE), a 4th gen
cephalosporinTNM), a monobactamBLM), a glycopeptideEFF), to allow mapping to
AMRFinderPlusas.mic() that failed translation of
scientifically formatted numberskeep_operators to
as.mic(). This can be "all" (default),
"none", or "edges". This argument is also
available in the new rescale_mic() and
scale_*_mic() functions.>32 is higher than (and never equal to) 32.
Thus, as.mic(">32") == as.mic(32) now returns
FALSE, and as.mic(">32") > as.mic(32)
now returns TRUE.sort()) was fixed in the
same manner; <0.001 now gets sorted before
0.001, and >0.001 gets sorted after
0.001.is.mic() now returns a vector of
TRUE/FALSE if the input is a
data.frame, just like as.sir()eucast_rules() now has an argument
overwrite (default: FALSE) to indicate whether
non-NA values should be overwrittenas.disk()) is now between 0 and 50 mmitalicise_taxonomy() to support HTML
outputcustom_eucast_rules() now supports multiple
antimicrobials and antimicrobial groups to be affected by a single
rulemo_info() now contains an extra element
rank and group_members (with the contents of
the new mo_group_members() function)mo_transform in
antibiogram()antibiogram() returns an empty
data setonly_sir_columns now defaults to
TRUE if any column of a data set contains a class ‘sir’
(functions eucast_rules(),
key_antimicrobials(), mdro(), etc.)as.ab()
(amphotericin B-high, gentamicin-high, kanamycin-high,
streptomycin-high, tobramycin-high)as.ab() for better
performance and accuracy, including the new function
as_reset_session() to remove earlier coercions.as.mo() for better
performance and accuracy, specifically:
sir_confidence_interval() when there
are no isolates availablefirst_isolate() when using the
phenotype-based method, to prioritise records with the highest
availability of SIR valuesscale_y_percent() can now cope with ranges outside the
0-100% rangemdro())
verbose = TRUE) now includes the
guideline nameesbl, carbapenemase,
mecA, mecC, vanA,
vanB to denote column names or logical values indicating
presence of these genes (or production of their proteins)custom_mdro_guideline())sir class for
Positronvctrs integration, a Tidyverse package
working in the background for many Tidyverse functions. For users, this
means that functions such as dplyr’s
bind_rows(), rowwise() and
c_across() are now supported for e.g. columns of class
mic. Despite this, this AMR package is still
zero-dependent on any other package, including dplyr and
vctrs..xpt) files, since their file
structure and extremely inefficient and requires more disk space than
GitHub allows in a single commit.This changelog only contains changes from AMR v3.0 (June 2025) and later.