# Key antibiotics for first <em>weighted</em> isolates — key_antibiotics • AMR (for R)
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 for first weighted isolates

`key_antibiotics.Rd`

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)

## Arguments

x | table with antibiotics coloms, like `AMX` or `amox`
col_mo | column name of the unique IDs of the microorganisms (see `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. At default, the columns containing these antibiotics will be 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. At default, the columns containing these antibiotics will be 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. At default, the columns containing these antibiotics will be guessed with `guess_ab_col`.
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 `"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 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 (`"."`). The `first_isolate` function only uses this function on the same microbial species from the same patient. Using this, an MRSA will be included after a susceptible S. aureus (MSSA) found within the same episode (see `episode` parameter of `first_isolate`). Without key antibiotic comparison it would not.

At default, the antibiotics that are used for Gram-positive bacteria are:
amoxicillin, amoxicillin/clavulanic acid, cefuroxime, piperacillin/tazobactam, ciprofloxacin, trimethoprim/sulfamethoxazole (until here is universal), 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 (until here is universal), 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.

## 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 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.

2. 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.

## Read more on our website!

On our website https://msberends.gitlab.io/AMR you can find a 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.

## See also

`first_isolate`

## Examples

    # NOT RUN {
    # septic_patients is a dataset available in the AMR package
    ?septic_patients

    library(dplyr)
    # set key antibiotics to a new variable
    my_patients <- septic_patients %>%
      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
    # }