mirror of
https://github.com/msberends/AMR.git
synced 2025-07-09 00:02:38 +02:00
(v0.8.0.9002) eucast_rules() fix for S. maltophilia
This commit is contained in:
@ -137,7 +137,7 @@ fullname like ^Burkholderia (cepacia|multivorans|cenocepacia|stabilis|vietnamien
|
||||
genus_species is Elizabethkingia meningoseptica aminopenicillins, AMC, TIC, CZO, CTX, CRO, CAZ, FEP, ATM, ETP, IPM, MEM, polymyxins R Table 02: Intrinsic resistance in non-fermentative Gram-negative bacteria Expert Rules
|
||||
genus_species is Ochrobactrum anthropi aminopenicillins, AMC, TIC, PIP, TZP, CZO, CTX, CRO, CAZ, FEP, ATM, ETP R Table 02: Intrinsic resistance in non-fermentative Gram-negative bacteria Expert Rules
|
||||
genus_species is Pseudomonas aeruginosa aminopenicillins, AMC, CZO, CTX, CRO, ETP, CHL, KAN, NEO, TMP, SXT, tetracyclines, TGC R Table 02: Intrinsic resistance in non-fermentative Gram-negative bacteria Expert Rules
|
||||
genus_species is Stenotrophomonas maltophilia aminopenicillins, AMC, TIC, PIP, TZP, CZO, CTX, CRO, CAZ, ATM, ETP, IPM, MEM, aminoglycosides, TMP, FOS, TCY R Table 02: Intrinsic resistance in non-fermentative Gram-negative bacteria Expert Rules
|
||||
genus_species is Stenotrophomonas maltophilia aminopenicillins, AMC, TIC, PIP, TZP, CZO, CTX, CRO, ATM, ETP, IPM, MEM, aminoglycosides, TMP, FOS, TCY R Table 02: Intrinsic resistance in non-fermentative Gram-negative bacteria Expert Rules
|
||||
genus one_of Haemophilus, Moraxella, Neisseria, Campylobacter glycopeptides, LIN, DAP, LNZ R Table 03: Intrinsic resistance in other Gram-negative bacteria Expert Rules
|
||||
genus_species is Haemophilus influenzae FUS, streptogramins R Table 03: Intrinsic resistance in other Gram-negative bacteria Expert Rules
|
||||
genus_species is Moraxella catarrhalis TMP R Table 03: Intrinsic resistance in other Gram-negative bacteria Expert Rules
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 96.
|
@ -1,13 +1,7 @@
|
||||
# ---------------------------------------------------------------------------------------------------
|
||||
# For editing this EUCAST reference file, these values can all be used for target antibiotics:
|
||||
# all_betalactams, aminoglycosides, carbapenems, cephalosporins, cephalosporins_without_CAZ, fluoroquinolones,
|
||||
# glycopeptides, macrolides, minopenicillins, polymyxins, streptogramins, tetracyclines, ureidopenicillins
|
||||
# and all separate EARS-Net letter codes like AMC. They can be separated by comma: 'AMC, fluoroquinolones'.
|
||||
# The if_mo_property column can be any column name from the AMR::microorganisms data set, or "genus_species" or "gramstain".
|
||||
# The EUCAST guideline contains references to the 'Burkholderia cepacia complex'. All species in this group can be found in:
|
||||
# LiPuma J, Curr Opin Pulm Med. 2005 Nov;11(6):528-33. (PMID 16217180).
|
||||
# >>>>> IF YOU WANT TO IMPORT THIS FILE INTO YOUR OWN SOFTWARE, HAVE THE FIRST 10 LINES SKIPPED <<<<<
|
||||
# ---------------------------------------------------------------------------------------------------
|
||||
# Run this file to update the package -------------------------------------
|
||||
# source("data-raw/internals.R")
|
||||
|
||||
# See 'data-raw/eucast_rules.tsv' for the EUCAST reference file
|
||||
eucast_rules_file <- dplyr::arrange(
|
||||
.data = utils::read.delim(file = "data-raw/eucast_rules.tsv",
|
||||
skip = 10,
|
||||
@ -19,6 +13,7 @@ eucast_rules_file <- dplyr::arrange(
|
||||
reference.rule_group,
|
||||
reference.rule)
|
||||
|
||||
|
||||
# Translations ----
|
||||
translations_file <- utils::read.delim(file = "data-raw/translations.tsv",
|
||||
sep = "\t",
|
||||
|
@ -70,7 +70,13 @@ data_dsmz <- data_dsmz %>%
|
||||
# DSMZ only contains genus/(sub)species, try to find taxonomic properties based on genus and data_col
|
||||
ref_taxonomy <- data_col %>%
|
||||
filter(genus %in% data_dsmz$genus,
|
||||
kingdom %in% c("Bacteria", "Chromista", "Archaea", "Protozoa", "Fungi"),
|
||||
family != "") %>%
|
||||
mutate(kingdom = factor(kingdom,
|
||||
# in the left_join following, try Bacteria first, then Chromista, ...
|
||||
levels = c("Bacteria", "Chromista", "Archaea", "Protozoa", "Fungi"),
|
||||
ordered = TRUE)) %>%
|
||||
arrange(kingdom) %>%
|
||||
distinct(genus, .keep_all = TRUE) %>%
|
||||
select(kingdom, phylum, class, order, family, genus)
|
||||
|
||||
@ -197,6 +203,7 @@ MOs <- MOs %>%
|
||||
MOs$ref[!grepl("^d[A-Z]", MOs$ref)] <- gsub("^([a-z])", "\\U\\1", MOs$ref[!grepl("^d[A-Z]", MOs$ref)], perl = TRUE)
|
||||
# specific one for the French that are named dOrbigny
|
||||
MOs$ref[grepl("^d[A-Z]", MOs$ref)] <- gsub("^d", "d'", MOs$ref[grepl("^d[A-Z]", MOs$ref)])
|
||||
MOs <- MOs %>% mutate(ref = gsub(" +", " ", ref))
|
||||
|
||||
# Remove non-ASCII characters (these are not allowed by CRAN)
|
||||
MOs <- MOs %>%
|
||||
@ -275,9 +282,15 @@ MOs <- MOs %>%
|
||||
by = "kingdom_fullname",
|
||||
suffix = c("_dsmz", "_col")) %>%
|
||||
mutate(col_id = col_id_col,
|
||||
species_id = ifelse(!is.na(species_id_col), gsub(".*/(.*)$", "\\1", species_id_col), species_id_dsmz),
|
||||
source = ifelse(!is.na(species_id_col), source_col, source_dsmz),
|
||||
ref = ifelse(!is.na(species_id_col) & ref_col != "", ref_col, ref_dsmz)) %>%
|
||||
species_id = ifelse(!is.na(species_id_col) & ref_col == ref_dsmz,
|
||||
gsub(".*/(.*)$", "\\1", species_id_col),
|
||||
species_id_dsmz),
|
||||
source = ifelse(!is.na(species_id_col) & ref_col == ref_dsmz,
|
||||
source_col,
|
||||
source_dsmz),
|
||||
ref = ifelse(!is.na(species_id_col) & ref_col == ref_dsmz,
|
||||
ref_col,
|
||||
ref_dsmz)) %>%
|
||||
select(-matches("(_col|_dsmz|kingdom_fullname)"))
|
||||
|
||||
|
||||
@ -296,6 +309,7 @@ sum(MOs.old$fullname %in% MOs$fullname)
|
||||
|
||||
# what characters are in the fullnames?
|
||||
table(sort(unlist(strsplit(x = paste(MOs$fullname, collapse = ""), split = ""))))
|
||||
MOs %>% filter(!fullname %like% "^[a-z ]+$") %>% View()
|
||||
|
||||
table(MOs$kingdom, MOs$rank)
|
||||
table(AMR::microorganisms$kingdom, AMR::microorganisms$rank)
|
||||
@ -676,8 +690,16 @@ old_new <- MOs %>%
|
||||
left_join(AMR::microorganisms %>% mutate(kingdom_fullname = paste(kingdom, fullname)) %>% select(mo, kingdom_fullname), by = "kingdom_fullname", suffix = c("_new", "_old")) %>%
|
||||
filter(mo_new != mo_old) %>%
|
||||
select(mo_old, mo_new, everything())
|
||||
old_new %>%
|
||||
View()
|
||||
|
||||
View(old_new)
|
||||
# to keep all the old IDs:
|
||||
# MOs <- MOs %>% filter(!mo %in% old_new$mo_new) %>%
|
||||
# rbind(microorganisms %>%
|
||||
# filter(mo %in% old_new$mo_old) %>%
|
||||
# select(mo, fullname) %>%
|
||||
# left_join(MOs %>%
|
||||
# select(-mo), by = "fullname"))
|
||||
|
||||
# and these codes are now missing (which will throw a unit test error):
|
||||
AMR::microorganisms.codes %>% filter(!mo %in% MOs$mo)
|
||||
AMR::rsi_translation %>% filter(!mo %in% MOs$mo)
|
||||
|
@ -1,16 +1,16 @@
|
||||
library(dplyr)
|
||||
library(readxl)
|
||||
|
||||
# Installed WHONET 2019 software on Windows (http://www.whonet.org/software.html),
|
||||
# opened C:\WHONET\Codes\WHONETCodes.mdb in MS Access
|
||||
# and exported table 'DRGLST1' to MS Excel
|
||||
DRGLST1 <- read_excel("data-raw/DRGLST1.xlsx")
|
||||
DRGLST1 <- readxl::read_excel("data-raw/DRGLST1.xlsx")
|
||||
rsi_translation <- DRGLST1 %>%
|
||||
# only keep CLSI and EUCAST guidelines:
|
||||
filter(GUIDELINES %like% "^(CLSI|EUCST)") %>%
|
||||
# set a nice layout:
|
||||
transmute(guideline = gsub("([0-9]+)$", " 20\\1", gsub("EUCST", "EUCAST", GUIDELINES)),
|
||||
method = TESTMETHOD,
|
||||
site = SITE_INF,
|
||||
mo = as.mo(ORG_CODE),
|
||||
ab = as.ab(WHON5_CODE),
|
||||
ref_tbl = REF_TABLE,
|
||||
@ -19,7 +19,7 @@ rsi_translation <- DRGLST1 %>%
|
||||
R_disk = as.disk(DISK_R),
|
||||
S_mic = as.mic(MIC_S),
|
||||
R_mic = as.mic(MIC_R)) %>%
|
||||
filter(!is.na(mo) & !is.na(ab)) %>%
|
||||
filter(!is.na(mo) & !is.na(ab) & !mo %in% c("UNKNOWN", "B_GRAMN", "B_GRAMP", "F_FUNGUS", "F_YEAST")) %>%
|
||||
arrange(desc(guideline), mo, ab)
|
||||
|
||||
print(mo_failures())
|
||||
@ -27,27 +27,20 @@ print(mo_failures())
|
||||
# create 2 tables: MIC and disk
|
||||
tbl_mic <- rsi_translation %>%
|
||||
filter(method == "MIC") %>%
|
||||
select(-ends_with("_disk")) %>%
|
||||
mutate(joinstring = paste(guideline, mo, ab))
|
||||
mutate(breakpoint_S = as.double(S_mic), breakpoint_R = as.double(R_mic))
|
||||
tbl_disk <- rsi_translation %>%
|
||||
filter(method == "DISK") %>%
|
||||
select(-S_mic, -R_mic) %>%
|
||||
mutate(joinstring = paste(guideline, mo, ab)) %>%
|
||||
select(joinstring, ends_with("_disk"))
|
||||
mutate(breakpoint_S = as.double(S_disk), breakpoint_R = as.double(R_disk))
|
||||
|
||||
# merge them so every record is a unique combination of method, mo and ab
|
||||
rsi_translation <- tbl_mic %>%
|
||||
left_join(tbl_disk,
|
||||
by = "joinstring") %>%
|
||||
select(-joinstring, -method) %>%
|
||||
rsi_translation <- bind_rows(tbl_mic, tbl_disk) %>%
|
||||
rename(disk_dose = dose_disk) %>%
|
||||
mutate(disk_dose = gsub("µ", "u", disk_dose)) %>%
|
||||
select(-ends_with("_mic"), -ends_with("_disk")) %>%
|
||||
as.data.frame(stringsAsFactors = FALSE) %>%
|
||||
# force classes again
|
||||
mutate(mo = as.mo(mo),
|
||||
ab = as.ab(ab),
|
||||
S_mic = as.mic(S_mic),
|
||||
R_mic = as.mic(R_mic),
|
||||
S_disk = as.disk(S_disk),
|
||||
R_disk = as.disk(R_disk))
|
||||
ab = as.ab(ab))
|
||||
|
||||
# save to package
|
||||
usethis::use_data(rsi_translation, overwrite = TRUE)
|
||||
|
Reference in New Issue
Block a user