(v3.1.0.9013) Add species groups and complexes to the intrinsic_resistant data set for every antimicrobial to which all their species are intrinsically resistant (fixes #338)

This commit is contained in:
dr. M.S. (Matthijs) Berends committed 2026-10-30 13:37:25 +01:00
1 parent aab0fcc479
commit 7f3c75ece7
14 files changed
+104 -4

No files matched your search

+1 -1
View File
@@ -1,5 +1,5 @@
Package: AMR
Version: 3.1.0.9012
Version: 3.1.0.9013
Date: 2026-10-30
Title: Antimicrobial Resistance Data Analysis
Description: Functions to simplify and standardise antimicrobial resistance (AMR)
+3 -1
View File
@@ -1,4 +1,4 @@
# AMR 3.1.0.9012
# AMR 3.1.0.9013
This version fixes a critical bug in WISCA that biased all coverage estimates of `wisca()` and `antibiogram(..., wisca = TRUE)` downwards since AMR 3.0.0. Users are strongly advised to re-run their WISCA analyses.
@@ -9,6 +9,8 @@ This version fixes a critical bug in WISCA that biased all coverage estimates of
* A new warning is given when the prior weight of 1 per pathogen (Bielicki *et al.*, 2016) accounts for more than 5% of the pathogen incidence, i.e., with rare pathogens or small groups, as this can strongly lower the estimated coverage; consider `top_n_microorganisms()` or fewer and larger groups in that case
* Microorganism coercion (`as.mo()`)
* Fixed the misaligned arrows in the message on taxonomically renamed microorganisms in colour-supporting consoles, for old names whose author reference lacks "*et al.*" (#336)
* `intrinsic_resistant` data set
* Species groups and complexes are now listed for every antimicrobial to which all their species are intrinsically resistant. This adds 62 bug-drug combinations for the *Burkholderia cepacia* complex, coryneform bacteria, the *Enterobacter cloacae* complex (e.g., amoxicillin and amoxicillin/clavulanic acid), the *Klebsiella pneumoniae* complex, and coagulase-negative staphylococci, which affects `mo_is_intrinsic_resistant()`, `not_intrinsic_resistant()`, and the priors of `wisca()` (#338)
### Other
* The manual index on the website was rewritten to improve findability, with sections ordered by task and a filter field
@@ -58,6 +58,23 @@ int_resis3 <- int_resis2[which(!int_resis2$ab %in% untreatable), ]
int_resis3$ab <- as.ab(int_resis3$ab)
int_resis3
# add species groups (e.g., complexes) for every antimicrobial to which all their species are intrinsically resistant (#338)
groups <- microorganisms.groups[which(microorganisms$rank[match(microorganisms.groups$mo, microorganisms$mo)] == "species"), , drop = FALSE]
int_resis_keys <- paste(int_resis3$mo, int_resis3$ab)
groups_species <- split(as.character(groups$mo), as.character(groups$mo_group))
int_resis_groups <- do.call(rbind, Map(function(group, species) {
abx <- unique(as.character(int_resis3$ab[int_resis3$mo %in% species]))
abx <- abx[vapply(abx, function(ab) all(paste(species, ab) %in% int_resis_keys), logical(1))]
data.frame(mo = rep(group, length(abx)), ab = abx, stringsAsFactors = FALSE)
}, names(groups_species), groups_species))
int_resis_groups <- int_resis_groups[which(!paste(int_resis_groups$mo, int_resis_groups$ab) %in% int_resis_keys), , drop = FALSE]
int_resis_groups$mo <- as.mo(int_resis_groups$mo, keep_synonyms = TRUE)
int_resis_groups$ab <- as.ab(int_resis_groups$ab)
int_resis3 <- bind_rows(int_resis3, int_resis_groups)
# keep the order of the microorganisms and antimicrobials data sets
int_resis3 <- int_resis3[order(match(int_resis3$mo, microorganisms$mo), match(int_resis3$ab, antimicrobials$ab)), , drop = FALSE]
rownames(int_resis3) <- NULL
all(int_resis3$mo %in% microorganisms$mo)
all(int_resis3$ab %in% antimicrobials$ab)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+62
View File
@@ -31323,8 +31323,19 @@
"Burkholderia cepacia" "Zorbamycin"
"Burkholderia cepacia complex" "Acetylmidecamycin"
"Burkholderia cepacia complex" "Acetylspiramycin"
"Burkholderia cepacia complex" "Amikacin"
"Burkholderia cepacia complex" "Amikacin/fosfomycin"
"Burkholderia cepacia complex" "Amoxicillin"
"Burkholderia cepacia complex" "Amoxicillin/clavulanic acid"
"Burkholderia cepacia complex" "Ampicillin"
"Burkholderia cepacia complex" "Ampicillin/sulbactam"
"Burkholderia cepacia complex" "Apramycin"
"Burkholderia cepacia complex" "Arbekacin"
"Burkholderia cepacia complex" "Astromicin"
"Burkholderia cepacia complex" "Avoparcin"
"Burkholderia cepacia complex" "Azithromycin"
"Burkholderia cepacia complex" "Aztreonam"
"Burkholderia cepacia complex" "Bekanamycin"
"Burkholderia cepacia complex" "Benzylpenicillin"
"Burkholderia cepacia complex" "Bleomycin"
"Burkholderia cepacia complex" "Cadazolid"
@@ -31342,54 +31353,87 @@
"Burkholderia cepacia complex" "Cefmetazole"
"Burkholderia cepacia complex" "Cefonicid"
"Burkholderia cepacia complex" "Ceforanide"
"Burkholderia cepacia complex" "Cefotaxime"
"Burkholderia cepacia complex" "Cefotetan"
"Burkholderia cepacia complex" "Cefotiam"
"Burkholderia cepacia complex" "Cefoxitin"
"Burkholderia cepacia complex" "Cefprozil"
"Burkholderia cepacia complex" "Cefroxadine"
"Burkholderia cepacia complex" "Ceftezole"
"Burkholderia cepacia complex" "Ceftriaxone"
"Burkholderia cepacia complex" "Cefuroxime"
"Burkholderia cepacia complex" "Cefuroxime axetil"
"Burkholderia cepacia complex" "Cephradine"
"Burkholderia cepacia complex" "Chloramphenicol"
"Burkholderia cepacia complex" "Ciprofloxacin"
"Burkholderia cepacia complex" "Clarithromycin"
"Burkholderia cepacia complex" "Clindamycin"
"Burkholderia cepacia complex" "Colistin"
"Burkholderia cepacia complex" "Cycloserine"
"Burkholderia cepacia complex" "Dalbavancin"
"Burkholderia cepacia complex" "Dibekacin"
"Burkholderia cepacia complex" "Dirithromycin"
"Burkholderia cepacia complex" "Ertapenem"
"Burkholderia cepacia complex" "Erythromycin"
"Burkholderia cepacia complex" "Flurithromycin"
"Burkholderia cepacia complex" "Fosfomycin"
"Burkholderia cepacia complex" "Framycetin"
"Burkholderia cepacia complex" "Fusidic acid"
"Burkholderia cepacia complex" "Gamithromycin"
"Burkholderia cepacia complex" "Gentamicin"
"Burkholderia cepacia complex" "Habekacin"
"Burkholderia cepacia complex" "Hygromycin"
"Burkholderia cepacia complex" "Isepamicin"
"Burkholderia cepacia complex" "Josamycin"
"Burkholderia cepacia complex" "Kanamycin"
"Burkholderia cepacia complex" "Kanamycin/cephalexin"
"Burkholderia cepacia complex" "Kasugamycin"
"Burkholderia cepacia complex" "Kitasamycin"
"Burkholderia cepacia complex" "Lincomycin"
"Burkholderia cepacia complex" "Linezolid"
"Burkholderia cepacia complex" "Loracarbef"
"Burkholderia cepacia complex" "Meleumycin"
"Burkholderia cepacia complex" "Micronomicin"
"Burkholderia cepacia complex" "Midecamycin"
"Burkholderia cepacia complex" "Miocamycin"
"Burkholderia cepacia complex" "Nafithromycin"
"Burkholderia cepacia complex" "Neomycin"
"Burkholderia cepacia complex" "Netilmicin"
"Burkholderia cepacia complex" "Norvancomycin"
"Burkholderia cepacia complex" "Oleandomycin"
"Burkholderia cepacia complex" "Oritavancin"
"Burkholderia cepacia complex" "Ostreogrycin"
"Burkholderia cepacia complex" "Pentisomicin"
"Burkholderia cepacia complex" "Piperacillin"
"Burkholderia cepacia complex" "Piperacillin/tazobactam"
"Burkholderia cepacia complex" "Pirlimycin"
"Burkholderia cepacia complex" "Plazomicin"
"Burkholderia cepacia complex" "Polymyxin B"
"Burkholderia cepacia complex" "Primycin"
"Burkholderia cepacia complex" "Pristinamycin"
"Burkholderia cepacia complex" "Propikacin"
"Burkholderia cepacia complex" "Quinupristin/dalfopristin"
"Burkholderia cepacia complex" "Ramoplanin"
"Burkholderia cepacia complex" "Ribostamycin"
"Burkholderia cepacia complex" "Rifampicin"
"Burkholderia cepacia complex" "Rokitamycin"
"Burkholderia cepacia complex" "Roxithromycin"
"Burkholderia cepacia complex" "Sisomicin"
"Burkholderia cepacia complex" "Solithromycin"
"Burkholderia cepacia complex" "Spiramycin"
"Burkholderia cepacia complex" "Streptoduocin"
"Burkholderia cepacia complex" "Streptomycin"
"Burkholderia cepacia complex" "Tedizolid"
"Burkholderia cepacia complex" "Teicoplanin"
"Burkholderia cepacia complex" "Telavancin"
"Burkholderia cepacia complex" "Telithromycin"
"Burkholderia cepacia complex" "Thiacetazone"
"Burkholderia cepacia complex" "Ticarcillin"
"Burkholderia cepacia complex" "Ticarcillin/clavulanic acid"
"Burkholderia cepacia complex" "Tildipirosin"
"Burkholderia cepacia complex" "Tilmicosin"
"Burkholderia cepacia complex" "Tobramycin"
"Burkholderia cepacia complex" "Trimethoprim"
"Burkholderia cepacia complex" "Troleandomycin"
"Burkholderia cepacia complex" "Tulathromycin"
"Burkholderia cepacia complex" "Tylosin"
@@ -65522,6 +65566,7 @@
"Cnuibacter physcomitrellae" "Polymyxin B"
"Cnuibacter physcomitrellae" "Temocillin"
"Coagulase-negative Staphylococcus (CoNS)" "Aztreonam"
"Coagulase-negative Staphylococcus (CoNS)" "Ceftazidime"
"Coagulase-negative Staphylococcus (CoNS)" "Colistin"
"Coagulase-negative Staphylococcus (CoNS)" "Nalidixic acid"
"Coagulase-negative Staphylococcus (CoNS)" "Polymyxin B"
@@ -67762,6 +67807,11 @@
"Corynebacterium zhongnanshanii" "Nalidixic acid"
"Corynebacterium zhongnanshanii" "Polymyxin B"
"Corynebacterium zhongnanshanii" "Temocillin"
"Coryneform bacterium" "Aztreonam"
"Coryneform bacterium" "Colistin"
"Coryneform bacterium" "Nalidixic acid"
"Coryneform bacterium" "Polymyxin B"
"Coryneform bacterium" "Temocillin"
"Cosenzaea" "Acetylmidecamycin"
"Cosenzaea" "Acetylspiramycin"
"Cosenzaea" "Avoparcin"
@@ -76494,11 +76544,20 @@
"Enterobacter cloacae cloacae" "Zorbamycin"
"Enterobacter cloacae complex" "Acetylmidecamycin"
"Enterobacter cloacae complex" "Acetylspiramycin"
"Enterobacter cloacae complex" "Amoxicillin"
"Enterobacter cloacae complex" "Amoxicillin/clavulanic acid"
"Enterobacter cloacae complex" "Ampicillin"
"Enterobacter cloacae complex" "Ampicillin/sulbactam"
"Enterobacter cloacae complex" "Avoparcin"
"Enterobacter cloacae complex" "Azithromycin"
"Enterobacter cloacae complex" "Benzylpenicillin"
"Enterobacter cloacae complex" "Bleomycin"
"Enterobacter cloacae complex" "Cadazolid"
"Enterobacter cloacae complex" "Cefadroxil"
"Enterobacter cloacae complex" "Cefalexin"
"Enterobacter cloacae complex" "Cefalotin"
"Enterobacter cloacae complex" "Cefazolin"
"Enterobacter cloacae complex" "Cefoxitin"
"Enterobacter cloacae complex" "Clarithromycin"
"Enterobacter cloacae complex" "Clindamycin"
"Enterobacter cloacae complex" "Cycloserine"
@@ -102515,6 +102574,8 @@
"Klebsiella pneumoniae" "Zorbamycin"
"Klebsiella pneumoniae complex" "Acetylmidecamycin"
"Klebsiella pneumoniae complex" "Acetylspiramycin"
"Klebsiella pneumoniae complex" "Amoxicillin"
"Klebsiella pneumoniae complex" "Ampicillin"
"Klebsiella pneumoniae complex" "Avoparcin"
"Klebsiella pneumoniae complex" "Azithromycin"
"Klebsiella pneumoniae complex" "Benzylpenicillin"
@@ -102556,6 +102617,7 @@
"Klebsiella pneumoniae complex" "Telavancin"
"Klebsiella pneumoniae complex" "Telithromycin"
"Klebsiella pneumoniae complex" "Thiacetazone"
"Klebsiella pneumoniae complex" "Ticarcillin"
"Klebsiella pneumoniae complex" "Tildipirosin"
"Klebsiella pneumoniae complex" "Tilmicosin"
"Klebsiella pneumoniae complex" "Troleandomycin"
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
b32da210529081a8e0ab8874956739d1
e17c4cf3ac9495a9ed832b64da96770a
Binary file not shown.
+1 -1
View File
@@ -5,7 +5,7 @@
\alias{intrinsic_resistant}
\title{Data Set Denoting Bacterial Intrinsic Resistance}
\format{
A \link[tibble:tibble]{tibble} with 307 684 observations and 3 variables:
A \link[tibble:tibble]{tibble} with 307 746 observations and 3 variables:
\itemize{
\item \code{mo}\cr Microorganism ID which occurs in \code{\link[=microorganisms]{microorganisms$mo}}. Names can be retrieved using \code{\link[=mo_name]{mo_name()}}.
\item \code{ab}\cr Antimicrobial ID which occurs in \code{\link[=antimicrobials]{antimicrobials$ab}}. Names can be retrieved using \code{\link[=ab_name]{ab_name()}}.
+19
View File
@@ -547,6 +547,25 @@ test_that("intrinsic_resistant: synonyms have exactly the resistances of their c
expect_true(length(absent) == 0, info = paste("Current names missing while their synonym is listed:", describe_mo(absent)))
})
test_that("intrinsic_resistant: species groups have the resistances shared by all their species", {
skip_on_cran()
ir_keys <- paste(intrinsic_resistant$mo, intrinsic_resistant$ab)
groups <- microorganisms.groups[which(microorganisms$rank[match(microorganisms.groups$mo, microorganisms$mo)] == "species"), , drop = FALSE]
groups_species <- split(as.character(groups$mo), as.character(groups$mo_group))
missing <- unlist(Map(function(group, species) {
abx <- unique(as.character(intrinsic_resistant$ab[intrinsic_resistant$mo %in% species]))
abx <- abx[vapply(abx, function(ab) all(paste(species, ab) %in% ir_keys), logical(1))]
if (length(abx) == 0) {
return(NULL)
}
abx <- abx[!paste(group, abx) %in% ir_keys]
if (length(abx) > 0) paste0(group, " (", paste(abx, collapse = ", "), ")")
}, names(groups_species), groups_species), use.names = FALSE)
expect_true(length(missing) == 0, info = paste("Species groups missing resistances shared by all their species:", paste(missing, collapse = "; ")))
# Enterobacter cloacae complex (#338)
expect_true(all(mo_is_intrinsic_resistant(rep("B_ENTRBC_CLOC-C", 2), ab = c("AMX", "AMC"))))
})
test_that("interpretive rules name organisms that exist", {
skip_on_cran()
r <- AMR:::INTERPRETIVE_RULES_DF