These function can be used to determine first isolates (see first_isolate()
). Using key antibiotics to determine first isolates is more reliable than without key antibiotics. These selected isolates will then be called first weighted isolates.
key_antibiotics( x, col_mo = NULL, universal_1 = guess_ab_col(x, "amoxicillin"), universal_2 = guess_ab_col(x, "amoxicillin/clavulanic acid"), universal_3 = guess_ab_col(x, "cefuroxime"), universal_4 = guess_ab_col(x, "piperacillin/tazobactam"), universal_5 = guess_ab_col(x, "ciprofloxacin"), universal_6 = guess_ab_col(x, "trimethoprim/sulfamethoxazole"), GramPos_1 = guess_ab_col(x, "vancomycin"), GramPos_2 = guess_ab_col(x, "teicoplanin"), GramPos_3 = guess_ab_col(x, "tetracycline"), GramPos_4 = guess_ab_col(x, "erythromycin"), GramPos_5 = guess_ab_col(x, "oxacillin"), GramPos_6 = guess_ab_col(x, "rifampin"), GramNeg_1 = guess_ab_col(x, "gentamicin"), GramNeg_2 = guess_ab_col(x, "tobramycin"), GramNeg_3 = guess_ab_col(x, "colistin"), GramNeg_4 = guess_ab_col(x, "cefotaxime"), GramNeg_5 = guess_ab_col(x, "ceftazidime"), GramNeg_6 = guess_ab_col(x, "meropenem"), warnings = TRUE, ... ) key_antibiotics_equal( y, z, type = c("keyantibiotics", "points"), ignore_I = TRUE, points_threshold = 2, info = FALSE )
x | table with antibiotics coloms, like |
---|---|
col_mo | column name of the IDs of the microorganisms (see |
universal_1, universal_2, universal_3, universal_4, universal_5, universal_6 | column names of broad-spectrum antibiotics, case-insensitive. At default, the columns containing these antibiotics will be guessed with |
GramPos_1, GramPos_2, GramPos_3, GramPos_4, GramPos_5, GramPos_6 | column names of antibiotics for Gram-positives, case-insensitive. At default, the columns containing these antibiotics will be guessed with |
GramNeg_1, GramNeg_2, GramNeg_3, GramNeg_4, GramNeg_5, GramNeg_6 | column names of antibiotics for Gram-negatives, case-insensitive. At default, the columns containing these antibiotics will be guessed with |
warnings | give warning about missing antibiotic columns, they will anyway be ignored |
... | other parameters passed on to function |
y, z | characters to compare |
type | type to determine weighed isolates; can be |
ignore_I | logical to determine whether antibiotic interpretations with |
points_threshold | points until the comparison of key antibiotics will lead to inclusion of an isolate when |
info | print progress |
The function key_antibiotics()
returns a character vector with 12 antibiotic results for every isolate. These isolates can then be compared using key_antibiotics_equal()
, to check if two isolates have generally the same antibiogram. Missing and invalid values are replaced with a dot ("."
) by key_antibiotics()
and ignored by key_antibiotics_equal()
.
The first_isolate()
function only uses this function on the same microbial species from the same patient. Using this, e.g. an MRSA will be included after a susceptible S. aureus (MSSA) is found within the same patient episode. Without key antibiotic comparison it would not. See first_isolate()
for more info.
At default, the antibiotics that are used for Gram-positive bacteria are:
Amoxicillin
Amoxicillin/clavulanic acid
Cefuroxime
Piperacillin/tazobactam
Ciprofloxacin
Trimethoprim/sulfamethoxazole
Vancomycin
Teicoplanin
Tetracycline
Erythromycin
Oxacillin
Rifampin
At default the antibiotics that are used for Gram-negative bacteria are:
Amoxicillin
Amoxicillin/clavulanic acid
Cefuroxime
Piperacillin/tazobactam
Ciprofloxacin
Trimethoprim/sulfamethoxazole
Gentamicin
Tobramycin
Colistin
Cefotaxime
Ceftazidime
Meropenem
The function key_antibiotics_equal()
checks the characters returned by key_antibiotics()
for equality, and returns a logical
vector.
The lifecycle of this function is stable. In a stable function, we are largely happy with the unlying code, and major changes are unlikely. This means that the unlying code will generally evolve by adding new arguments; we will avoid removing arguments or changing the meaning of existing arguments.
If the unlying code needs breaking changes, they will occur gradually. To begin with, the function or argument will be deprecated; it will continue to work but will emit an message informing you of the change. Next, typically after at least one newly released version on CRAN, the message will be transformed to an error.
There are two ways to determine whether isolates can be included as first weighted isolates which will give generally the same results:
Using type = "keyantibiotics"
and parameter ignore_I
Any difference from S to R (or vice versa) will (re)select an isolate as a first weighted isolate. With ignore_I = FALSE
, also differences from I to S|R (or vice versa) will lead to this. This is a reliable method and 30-35 times faster than method 2. Read more about this in the key_antibiotics()
function.
Using type = "points"
and parameter points_threshold
A difference from I to S|R (or vice versa) means 0.5 points, a difference from S to R (or vice versa) means 1 point. When the sum of points exceeds points_threshold
, which default to 2
, an isolate will be (re)selected as a first weighted isolate.
On our website https://msberends.gitlab.io/AMR you can find a comprehensive tutorial about how to conduct AMR analysis, the complete documentation of all functions (which reads a lot easier than here in R) and an example analysis using WHONET data.
# `example_isolates` is a dataset available in the AMR package. # See ?example_isolates. if (FALSE) { library(dplyr) # set key antibiotics to a new variable my_patients <- example_isolates %>% mutate(keyab = key_antibiotics(.)) %>% mutate( # now calculate first isolates first_regular = first_isolate(., col_keyantibiotics = FALSE), # and first WEIGHTED isolates first_weighted = first_isolate(., col_keyantibiotics = "keyab") ) # Check the difference, in this data set it results in 7% more isolates: sum(my_patients$first_regular, na.rm = TRUE) sum(my_patients$first_weighted, na.rm = TRUE) } # output of the `key_antibiotics` function could be like this: strainA <- "SSSRR.S.R..S" strainB <- "SSSIRSSSRSSS" key_antibiotics_equal(strainA, strainB) # TRUE, because I is ignored (as well as missing values) key_antibiotics_equal(strainA, strainB, ignore_I = FALSE) # FALSE, because I is not ignored and so the 4th value differs