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 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 = FALSE
return_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 (March 2025) and later.