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 can 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
)

Arguments

x

a data.frame with antibiotics columns, like AMX or amox. Can be omitted when used inside dplyr verbs, such as filter(), mutate() and summarise().

col_mo

column name of the IDs of the microorganisms (see as.mo()), defaults to the first column of class mo. Values will be coerced using as.mo().

universal_1, universal_2, universal_3, universal_4, universal_5, universal_6

column names of broad-spectrum antibiotics, case-insensitive. See details for which antibiotics will be used at default (which are guessed with guess_ab_col()).

GramPos_1, GramPos_2, GramPos_3, GramPos_4, GramPos_5, GramPos_6

column names of antibiotics for Gram-positives, case-insensitive. See details for which antibiotics will be used at default (which are guessed with guess_ab_col()).

GramNeg_1, GramNeg_2, GramNeg_3, GramNeg_4, GramNeg_5, GramNeg_6

column names of antibiotics for Gram-negatives, case-insensitive. See details for which antibiotics will be used at default (which are guessed with guess_ab_col()).

warnings

give a warning about missing antibiotic columns (they will be ignored)

...

other arguments passed on to functions

y, z

character vectors to compare

type

type to determine weighed isolates; can be "keyantibiotics" or "points", see Details

ignore_I

logical to determine whether antibiotic interpretations with "I" will be ignored when type = "keyantibiotics", see Details

points_threshold

points until the comparison of key antibiotics will lead to inclusion of an isolate when type = "points", see Details

info

print progress

Details

The key_antibiotics() function is context-aware when used inside dplyr verbs, such as filter(), mutate() and summarise(). This means that then the x argument can be omitted, please see Examples.

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.

Stable lifecycle


The lifecycle of this function is stable. In a stable function, major changes are unlikely. This means that the unlying code will generally evolve by adding new arguments; removing arguments or changing the meaning of existing arguments will be avoided.

If the unlying code needs breaking changes, they will occur gradually. For example, a argument will be deprecated and first 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.

Key antibiotics

There are two ways to determine whether isolates can be included as first weighted isolates which will give generally the same results:

  1. Using type = "keyantibiotics" and argument 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.

  2. Using type = "points" and argument 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.

Read more on our website!

On our website https://msberends.github.io/AMR/ you can find a comprehensive tutorial about how to conduct AMR analysis, the complete documentation of all functions and an example analysis using WHONET data. As we would like to better understand the backgrounds and needs of our users, please participate in our survey!

See also

Examples

# `example_isolates` is a dataset available in the AMR package.
# See ?example_isolates.

# output of the `key_antibiotics()` function could be like this:
strainA <- "SSSRR.S.R..S"
strainB <- "SSSIRSSSRSSS"

# those strings can be compared with:
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 character differs

# \donttest{
if (require("dplyr")) {
  # set key antibiotics to a new variable
  my_patients <- example_isolates %>%
    mutate(keyab = key_antibiotics()) %>% # no need to define `x`
    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 a lot more isolates:
  sum(my_patients$first_regular, na.rm = TRUE)
  sum(my_patients$first_weighted, na.rm = TRUE)
}
# }