1
0
mirror of https://github.com/msberends/AMR.git synced 2025-09-16 23:09:41 +02:00

28 Commits

Author SHA1 Message Date
3829311dd3 random() fix 2023-07-08 21:00:49 +02:00
acb534102b new species groups, updated clinical breakpoints 2023-07-08 17:30:05 +02:00
2d97cca6d9 fix reference_df endless loop 2023-06-26 13:52:02 +02:00
1d9ee39cc7 fix for mo codes 2023-06-22 15:24:18 +02:00
Dr. Matthijs Berends
f065945d7b Update clinical breakpoints and fix some as.mo() bugs (#117)
* Updates clinical breakpoints EUCAST/CLSI 2023, fixes #102, fixes #112, fixes #113, fixes #114, fixes #115
* docs
* implement ecoffs
* unit tests
2023-06-22 15:10:59 +02:00
9591688811 documentation update 2023-05-27 10:39:22 +02:00
e1966503ee unit testing R4.3 2023-05-26 20:37:00 +02:00
766db4e21f as.mo fix 2023-05-26 19:20:21 +02:00
c6135d2082 updated microorganism codes 2023-05-26 16:10:01 +02:00
0bcf55d3b6 improve as.mo() 2023-05-24 15:55:53 +02:00
3018fb87a9 icu_exclude in first_isolate(), fixes #110 2023-05-17 22:12:10 +02:00
Dr. Matthijs Berends
5f9769a4f7 Add oxygen tolerance 2023-05-12 10:37:07 +02:00
8179092c57 add XPT files for SAS software 2023-05-12 10:07:55 +02:00
91fa73dedf add oxygen tolerance 2023-05-11 21:56:27 +02:00
bf08d136a0 fix coercing NA to custom codes, fixes #107 2023-05-08 13:04:18 +02:00
9de19fdc49 documentation 2023-04-21 10:07:25 +02:00
9148a2dcf4 fix mo_rank() for 'unknown' MOs 2023-04-20 15:20:41 +02:00
2758615cd0 version fix 2023-04-19 00:34:41 +02:00
02322ac2ee Fix PK/PD breakpoints 2023-04-19 00:31:31 +02:00
cabffb22fd anaerobic codes 2023-04-17 11:26:19 +02:00
ad3061c754 unit test 2023-04-15 10:32:37 +02:00
1a02d302d4 Fix translatable strings 2023-04-15 09:32:13 +02:00
ed70f95380 Fix clinical breakpoints 2023-04-14 23:14:34 +02:00
147f9112e9 Fix some WHONET codes 2023-04-14 11:12:26 +02:00
549790c2a6 website 2023-03-20 21:59:50 +01:00
c28cfa3a77 fix documentation 2023-03-16 08:55:37 +01:00
dd7cc86485 help page %like% 2023-03-14 19:49:50 +01:00
68aa98f294 website 2023-03-12 15:59:25 +01:00
224 changed files with 107843 additions and 71624 deletions

View File

@@ -30,6 +30,7 @@
^vignettes/datasets\.Rmd$ ^vignettes/datasets\.Rmd$
^vignettes/EUCAST\.Rmd$ ^vignettes/EUCAST\.Rmd$
^vignettes/MDR\.Rmd$ ^vignettes/MDR\.Rmd$
^vignettes/other_pkg.*\.Rmd$
^vignettes/PCA\.Rmd$ ^vignettes/PCA\.Rmd$
^vignettes/resistance_predict\.Rmd$ ^vignettes/resistance_predict\.Rmd$
^vignettes/SPSS\.Rmd$ ^vignettes/SPSS\.Rmd$

View File

@@ -1,17 +1,17 @@
#!/bin/sh #!/bin/sh
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -48,7 +48,8 @@ jobs:
config: config:
# Test all old versions of R >= 3.0, we support them all! # Test all old versions of R >= 3.0, we support them all!
# For these old versions, dependencies and vignettes will not be checked. # For these old versions, dependencies and vignettes will not be checked.
# For recent R versions, see check-recent.yaml (r-lib and tidyverse support the latest 5 major R versions). # For recent R versions, see check-recent.yaml (r-lib and tidyverse support the latest 5 major R releases).
- {os: windows-latest, r: '3.5', allowfail: true}
- {os: ubuntu-latest, r: '3.4', allowfail: false} - {os: ubuntu-latest, r: '3.4', allowfail: false}
- {os: ubuntu-latest, r: '3.3', allowfail: false} - {os: ubuntu-latest, r: '3.3', allowfail: false}
- {os: ubuntu-latest, r: '3.2', allowfail: false} - {os: ubuntu-latest, r: '3.2', allowfail: false}

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -52,21 +52,21 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
config: config:
# current development version: # current development version, check all major OSes:
- {os: macOS-latest, r: 'devel', allowfail: false} - {os: macOS-latest, r: 'devel', allowfail: false}
- {os: windows-latest, r: 'devel', allowfail: false} - {os: windows-latest, r: 'devel', allowfail: false}
- {os: ubuntu-latest, r: 'devel', allowfail: false} - {os: ubuntu-latest, r: 'devel', allowfail: false}
# current 'release' version: # current 'release' version, check all major OSes:
- {os: macOS-latest, r: '4.2', allowfail: false} - {os: macOS-latest, r: '4.3', allowfail: false}
- {os: windows-latest, r: '4.2', allowfail: false} - {os: windows-latest, r: '4.3', allowfail: false}
- {os: ubuntu-latest, r: '4.2', allowfail: false} - {os: ubuntu-latest, r: '4.3', allowfail: false}
# older versions (see also check-old.yaml for even older versions): # older versions (see also check-old.yaml for even older versions):
- {os: ubuntu-latest, r: '4.2', allowfail: false}
- {os: ubuntu-latest, r: '4.1', allowfail: false} - {os: ubuntu-latest, r: '4.1', allowfail: false}
- {os: ubuntu-latest, r: '4.0', allowfail: false} - {os: ubuntu-latest, r: '4.0', allowfail: false}
- {os: ubuntu-latest, r: '3.6', allowfail: false} - {os: ubuntu-latest, r: '3.6', allowfail: false} # when a new R releases, this one has to move to check-old.yaml
- {os: ubuntu-latest, r: '3.5', allowfail: false} # when a new R releases, this one has to move to check-old.yaml
env: env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -65,7 +65,11 @@ jobs:
- name: Set up R dependencies - name: Set up R dependencies
uses: r-lib/actions/setup-r-dependencies@v2 uses: r-lib/actions/setup-r-dependencies@v2
with: with:
extra-packages: any::pkgdown # add extra packages for website articles:
extra-packages: |
any::pkgdown
any::tidymodels
any::data.table
# Send updates to repo using GH Actions bot # Send updates to repo using GH Actions bot
- name: Create website in separate branch - name: Create website in separate branch

View File

@@ -1,12 +1,12 @@
Package: AMR Package: AMR
Version: 2.0.0 Version: 2.0.0.9028
Date: 2023-03-12 Date: 2023-07-08
Title: Antimicrobial Resistance Data Analysis Title: Antimicrobial Resistance Data Analysis
Description: Functions to simplify and standardise antimicrobial resistance (AMR) Description: Functions to simplify and standardise antimicrobial resistance (AMR)
data analysis and to work with microbial and antimicrobial properties by data analysis and to work with microbial and antimicrobial properties by
using evidence-based methods, as described in <doi:10.18637/jss.v104.i03>. using evidence-based methods, as described in <doi:10.18637/jss.v104.i03>.
Authors@R: c( Authors@R: c(
person(family = "Berends", c("Matthijs", "S."), role = c("aut", "cre"), comment = c(ORCID = "0000-0001-7620-1800"), email = "m.berends@certe.nl"), person(family = "Berends", c("Matthijs", "S."), role = c("aut", "cre"), comment = c(ORCID = "0000-0001-7620-1800"), email = "m.s.berends@umcg.nl"),
person(family = "Luz", c("Christian", "F."), role = c("aut", "ctb"), comment = c(ORCID = "0000-0001-5809-5995")), person(family = "Luz", c("Christian", "F."), role = c("aut", "ctb"), comment = c(ORCID = "0000-0001-5809-5995")),
person(family = "Souverein", c("Dennis"), role = c("aut", "ctb"), comment = c(ORCID = "0000-0003-0455-0336")), person(family = "Souverein", c("Dennis"), role = c("aut", "ctb"), comment = c(ORCID = "0000-0003-0455-0336")),
person(family = "Hassing", c("Erwin", "E.", "A."), role = c("aut", "ctb")), person(family = "Hassing", c("Erwin", "E.", "A."), role = c("aut", "ctb")),
@@ -38,6 +38,7 @@ Enhances:
tidyselect, tidyselect,
tsibble tsibble
Suggests: Suggests:
cli,
curl, curl,
data.table, data.table,
dplyr, dplyr,

View File

@@ -330,6 +330,7 @@ export(mo_gbif)
export(mo_genus) export(mo_genus)
export(mo_gramstain) export(mo_gramstain)
export(mo_info) export(mo_info)
export(mo_is_anaerobic)
export(mo_is_gram_negative) export(mo_is_gram_negative)
export(mo_is_gram_positive) export(mo_is_gram_positive)
export(mo_is_intrinsic_resistant) export(mo_is_intrinsic_resistant)
@@ -339,6 +340,7 @@ export(mo_lpsn)
export(mo_matching_score) export(mo_matching_score)
export(mo_name) export(mo_name)
export(mo_order) export(mo_order)
export(mo_oxygen_tolerance)
export(mo_pathogenicity) export(mo_pathogenicity)
export(mo_phylum) export(mo_phylum)
export(mo_property) export(mo_property)

30
NEWS.md
View File

@@ -1,3 +1,33 @@
# AMR 2.0.0.9028
## New
* Clinical breakpoints and intrinsic resistance of EUCAST 2023 and CLSI 2023 have been added for `as.sir()`. EUCAST 2023 (v13.0) is now the new default guideline for all MIC and disks diffusion interpretations
* The EUCAST dosage guideline of v13.0 has been added to the `dosage` data set
* ECOFF: the `clinical_breakpoints` data set now contains epidemiological cut-off (ECOFF) values. These ECOFFs can be used for MIC/disk interpretation using `as.sir(..., breakpoint_type = "ECOFF")`, which is an important new addition for veterinary microbiology.
* Added support for 29 species groups / complexes. They are gathered in a new data set `microorganisms.groups` and are used in clinical breakpoint interpretation. For example, CLSI 2023 contains breakpoints for the RGM group (Rapidly Growing Mycobacterium, containing over 80 species) which is now supported by our package.
* Added oxygen tolerance from BacDive to over 25,000 bacteria in the `microorganisms` data set
* Added `mo_oxygen_tolerance()` to retrieve the values
* Added `mo_is_anaerobic()` to determine which genera/species are obligate anaerobic bacteria
* Added LPSN and GBIF identifiers, and oxygen tolerance to `mo_info()`
* Added SAS Transport files (file extension `.xpt`) to [our download page](https://msberends.github.io/AMR/articles/datasets.html) to use in SAS software
* Added microbial codes for Gram-negative/positive anaerobic bacteria
## Changed
* Updated algorithm of `as.mo()` by giving more weight to fungi
* `mo_rank()` now returns `NA` for 'unknown' microorganisms (`B_ANAER`, `B_ANAER-NEG`, `B_ANAER-POS`, `B_GRAMN`, `B_GRAMP`, `F_FUNGUS`, `F_YEAST`, and `UNKNOWN`)
* Fixed formatting for `sir_interpretation_history()`
* Fixed some WHONET codes for microorganisms and consequently a couple of entries in `clinical_breakpoints`
* Fixed a bug for `as.mo()` that led to coercion of `NA` values when using custom microorganism codes
* Fixed usage of `icu_exclude` in `first_isolates()`
* Improved `as.mo()` algorithm:
* Now allows searching on only species names
* Fix for using the `keep_synonyms` argument when using MO codes as input
* Fix for using the `minimum_matching_score` argument
* Updated the code table in `microorganisms.codes`
* Fixed an endless loop if using `reference_df` in `as.mo()`
* Fixed bug for indicating UTIs in `as.sir()`
# AMR 2.0.0 # AMR 2.0.0
This is a new major release of the AMR package, with great new additions but also some breaking changes for current users. These are all listed below. This is a new major release of the AMR package, with great new additions but also some breaking changes for current users. These are all listed below.

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -36,7 +36,7 @@
#' #'
#' This work was published in the Journal of Statistical Software (Volume 104(3); \doi{jss.v104.i03}) and formed the basis of two PhD theses (\doi{10.33612/diss.177417131} and \doi{10.33612/diss.192486375}). #' This work was published in the Journal of Statistical Software (Volume 104(3); \doi{jss.v104.i03}) and formed the basis of two PhD theses (\doi{10.33612/diss.177417131} and \doi{10.33612/diss.192486375}).
#' #'
#' After installing this package, R knows [**`r format_included_data_number(AMR::microorganisms)` microorganisms**](https://msberends.github.io/AMR/reference/microorganisms.html) (updated `r format(TAXONOMY_VERSION$GBIF$accessed_date, "%B %Y")`) and all [**`r format_included_data_number(nrow(AMR::antibiotics) + nrow(AMR::antivirals))` antibiotic, antimycotic and antiviral drugs**](https://msberends.github.io/AMR/reference/antibiotics.html) by name and code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC and SNOMED CT), and knows all about valid SIR and MIC values. The integral breakpoint guidelines from CLSI and EUCAST are included from the last 10 years. It supports and can read any data format, including WHONET data. This package works on Windows, macOS and Linux with all versions of R since R-3.0 (April 2013). **It was designed to work in any setting, including those with very limited resources**. It was created for both routine data analysis and academic research at the Faculty of Medical Sciences of the [University of Groningen](https://www.rug.nl), in collaboration with non-profit organisations [Certe Medical Diagnostics and Advice Foundation](https://www.certe.nl) and [University Medical Center Groningen](https://www.umcg.nl). #' After installing this package, R knows [**`r format_included_data_number(AMR::microorganisms)` microorganisms**](https://msberends.github.io/AMR/reference/microorganisms.html) (updated `r format(TAXONOMY_VERSION$GBIF$accessed_date, "%B %Y")`) and all [**`r format_included_data_number(nrow(AMR::antibiotics) + nrow(AMR::antivirals))` antibiotic, antimycotic and antiviral drugs**](https://msberends.github.io/AMR/reference/antibiotics.html) by name and code (including ATC, EARS-Net, ASIARS-Net, PubChem, LOINC and SNOMED CT), and knows all about valid SIR and MIC values. The integral clinical breakpoint guidelines from CLSI and EUCAST are included, even with epidemiological cut-off (ECOFF) values. It supports and can read any data format, including WHONET data. This package works on Windows, macOS and Linux with all versions of R since R-3.0 (April 2013). **It was designed to work in any setting, including those with very limited resources**. It was created for both routine data analysis and academic research at the Faculty of Medical Sciences of the [University of Groningen](https://www.rug.nl), in collaboration with non-profit organisations [Certe Medical Diagnostics and Advice Foundation](https://www.certe.nl) and [University Medical Center Groningen](https://www.umcg.nl).
#' #'
#' The `AMR` package is available in `r vector_and(vapply(FUN.VALUE = character(1), LANGUAGES_SUPPORTED_NAMES, function(x) x$exonym), quotes = FALSE, sort = FALSE)`. Antimicrobial drug (group) names and colloquial microorganism names are provided in these languages. #' The `AMR` package is available in `r vector_and(vapply(FUN.VALUE = character(1), LANGUAGES_SUPPORTED_NAMES, function(x) x$exonym), quotes = FALSE, sort = FALSE)`. Antimicrobial drug (group) names and colloquial microorganism names are provided in these languages.
#' @section Reference Data Publicly Available: #' @section Reference Data Publicly Available:

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -30,6 +30,12 @@
# add new version numbers here, and add the rules themselves to "data-raw/eucast_rules.tsv" and clinical_breakpoints # add new version numbers here, and add the rules themselves to "data-raw/eucast_rules.tsv" and clinical_breakpoints
# (sourcing "data-raw/_pre_commit_hook.R" will process the TSV file) # (sourcing "data-raw/_pre_commit_hook.R" will process the TSV file)
EUCAST_VERSION_BREAKPOINTS <- list( EUCAST_VERSION_BREAKPOINTS <- list(
# "13.0" = list(
# version_txt = "v13.0",
# year = 2023,
# title = "'EUCAST Clinical Breakpoint Tables'",
# url = "https://www.eucast.org/clinical_breakpoints/"
# ),
"12.0" = list( "12.0" = list(
version_txt = "v12.0", version_txt = "v12.0",
year = 2022, year = 2022,
@@ -50,10 +56,10 @@ EUCAST_VERSION_BREAKPOINTS <- list(
) )
) )
EUCAST_VERSION_EXPERT_RULES <- list( EUCAST_VERSION_EXPERT_RULES <- list(
"3.1" = list( "3.3" = list(
version_txt = "v3.1", version_txt = "v3.3",
year = 2016, year = 2021,
title = "'EUCAST Expert Rules, Intrinsic Resistance and Exceptional Phenotypes'", title = "'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes'",
url = "https://www.eucast.org/expert_rules_and_expected_phenotypes/" url = "https://www.eucast.org/expert_rules_and_expected_phenotypes/"
), ),
"3.2" = list( "3.2" = list(
@@ -62,13 +68,21 @@ EUCAST_VERSION_EXPERT_RULES <- list(
title = "'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes'", title = "'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes'",
url = "https://www.eucast.org/expert_rules_and_expected_phenotypes/" url = "https://www.eucast.org/expert_rules_and_expected_phenotypes/"
), ),
"3.3" = list( "3.1" = list(
version_txt = "v3.3", version_txt = "v3.1",
year = 2021, year = 2016,
title = "'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes'", title = "'EUCAST Expert Rules, Intrinsic Resistance and Exceptional Phenotypes'",
url = "https://www.eucast.org/expert_rules_and_expected_phenotypes/" url = "https://www.eucast.org/expert_rules_and_expected_phenotypes/"
) )
) )
# EUCAST_VERSION_RESISTANTPHENOTYPES <- list(
# "1.2" = list(
# version_txt = "v1.2",
# year = 2023,
# title = "'Expected Resistant Phenotypes'",
# url = "https://www.eucast.org/expert_rules_and_expected_phenotypes/"
# )
# )
TAXONOMY_VERSION <- list( TAXONOMY_VERSION <- list(
GBIF = list( GBIF = list(
@@ -81,6 +95,11 @@ TAXONOMY_VERSION <- list(
citation = "Parte, AC *et al.* (2020). **List of Prokaryotic names with Standing in Nomenclature (LPSN) moves to the DSMZ.** International Journal of Systematic and Evolutionary Microbiology, 70, 5607-5612; \\doi{10.1099/ijsem.0.004332}.", citation = "Parte, AC *et al.* (2020). **List of Prokaryotic names with Standing in Nomenclature (LPSN) moves to the DSMZ.** International Journal of Systematic and Evolutionary Microbiology, 70, 5607-5612; \\doi{10.1099/ijsem.0.004332}.",
url = "https://lpsn.dsmz.de" url = "https://lpsn.dsmz.de"
), ),
BacDive = list(
accessed_date = as.Date("2023-05-12"),
citation = "Reimer, LC *et al.* (2022). ***BacDive* in 2022: the knowledge base for standardized bacterial and archaeal data.** Nucleic Acids Res., 50(D1):D741-D74; \\doi{10.1093/nar/gkab961}.",
url = "https://bacdive.dsmz.de"
),
SNOMED = list( SNOMED = list(
accessed_date = as.Date("2021-07-01"), accessed_date = as.Date("2021-07-01"),
citation = "Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microoganism', OID 2.16.840.1.114222.4.11.1009 (v12).", citation = "Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microoganism', OID 2.16.840.1.114222.4.11.1009 (v12).",

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -505,7 +505,7 @@ word_wrap <- function(...,
# clean introduced whitespace between fullstops # clean introduced whitespace between fullstops
msg <- gsub("[.] +[.]", "..", msg) msg <- gsub("[.] +[.]", "..", msg)
# remove extra space that was introduced (e.g. "Smith et al., 2022") # remove extra space that was introduced (e.g. "Smith et al. , 2022")
msg <- gsub(". ,", ".,", msg, fixed = TRUE) msg <- gsub(". ,", ".,", msg, fixed = TRUE)
msg <- gsub("[ ,", "[,", msg, fixed = TRUE) msg <- gsub("[ ,", "[,", msg, fixed = TRUE)
msg <- gsub("/ /", "//", msg, fixed = TRUE) msg <- gsub("/ /", "//", msg, fixed = TRUE)
@@ -629,7 +629,12 @@ dataset_UTF8_to_ASCII <- function(df) {
} }
documentation_date <- function(d) { documentation_date <- function(d) {
paste0(trimws(format(d, "%e")), " ", month.name[as.integer(format(d, "%m"))], ", ", format(d, "%Y")) day <- as.integer(format(d, "%e"))
suffix <- rep("th", length(day))
suffix[day %in% c(1, 21, 31)] <- "st"
suffix[day %in% c(2, 22)] <- "nd"
suffix[day %in% c(3, 23)] <- "rd"
paste0(month.name[as.integer(format(d, "%m"))], " ", day, suffix, ", ", format(d, "%Y"))
} }
format_included_data_number <- function(data) { format_included_data_number <- function(data) {
@@ -644,10 +649,13 @@ format_included_data_number <- function(data) {
rounder <- -3 # round on thousands rounder <- -3 # round on thousands
} else if (n > 1000) { } else if (n > 1000) {
rounder <- -2 # round on hundreds rounder <- -2 # round on hundreds
} else if (n < 50) {
# do not round
rounder <- 0
} else { } else {
rounder <- -1 # round on tens rounder <- -1 # round on tens
} }
paste0("~", format(round(n, rounder), decimal.mark = ".", big.mark = " ")) paste0(ifelse(rounder == 0, "", "~"), format(round(n, rounder), decimal.mark = ".", big.mark = " "))
} }
# for eucast_rules() and mdro(), creates markdown output with URLs and names # for eucast_rules() and mdro(), creates markdown output with URLs and names
@@ -670,10 +678,15 @@ create_eucast_ab_documentation <- function() {
atcs <- ab_atc(ab, only_first = TRUE) atcs <- ab_atc(ab, only_first = TRUE)
# only keep ABx with an ATC code: # only keep ABx with an ATC code:
ab <- ab[!is.na(atcs)] ab <- ab[!is.na(atcs)]
atcs <- atcs[!is.na(atcs)]
# sort all vectors on name:
ab_names <- ab_name(ab, language = NULL, tolower = TRUE) ab_names <- ab_name(ab, language = NULL, tolower = TRUE)
ab <- ab[order(ab_names)] ab <- ab[order(ab_names)]
atcs <- atcs[order(ab_names)]
ab_names <- ab_names[order(ab_names)] ab_names <- ab_names[order(ab_names)]
atc_txt <- paste0("[", atcs[!is.na(atcs)], "](", ab_url(ab), ")") # create the text:
atc_txt <- paste0("[", atcs, "](", ab_url(ab), ")")
out <- paste0(ab_names, " (`", ab, "`, ", atc_txt, ")", collapse = ", ") out <- paste0(ab_names, " (`", ab, "`, ", atc_txt, ")", collapse = ", ")
substr(out, 1, 1) <- toupper(substr(out, 1, 1)) substr(out, 1, 1) <- toupper(substr(out, 1, 1))
out out
@@ -996,7 +1009,7 @@ get_current_column <- function() {
# cur_column() doesn't always work (only allowed for certain conditions set by dplyr), but it's probably still possible: # cur_column() doesn't always work (only allowed for certain conditions set by dplyr), but it's probably still possible:
frms <- lapply(sys.frames(), function(env) { frms <- lapply(sys.frames(), function(env) {
if (!is.null(env$i)) { if (tryCatch(!is.null(env$i), error = function(e) FALSE)) {
if (!is.null(env$tibble_vars)) { if (!is.null(env$tibble_vars)) {
# for mutate_if() # for mutate_if()
env$tibble_vars[env$i] env$tibble_vars[env$i]
@@ -1169,20 +1182,20 @@ is_dark <- function() {
} }
isTRUE(AMR_env$is_dark_theme) isTRUE(AMR_env$is_dark_theme)
} }
font_black <- function(..., collapse = " ") { font_black <- function(..., collapse = " ", adapt = TRUE) {
before <- "\033[38;5;232m" before <- "\033[38;5;232m"
after <- "\033[39m" after <- "\033[39m"
if (is_dark()) { if (isTRUE(adapt) && is_dark()) {
# white # white
before <- "\033[37m" before <- "\033[37m"
after <- "\033[39m" after <- "\033[39m"
} }
try_colour(..., before = before, after = after, collapse = collapse) try_colour(..., before = before, after = after, collapse = collapse)
} }
font_white <- function(..., collapse = " ") { font_white <- function(..., collapse = " ", adapt = TRUE) {
before <- "\033[37m" before <- "\033[37m"
after <- "\033[39m" after <- "\033[39m"
if (is_dark()) { if (isTRUE(adapt) && is_dark()) {
# black # black
before <- "\033[38;5;232m" before <- "\033[38;5;232m"
after <- "\033[39m" after <- "\033[39m"
@@ -1270,7 +1283,7 @@ font_stripstyle <- function(x) {
x x
} }
progress_ticker <- function(n = 1, n_min = 0, print = TRUE, ...) { progress_ticker <- function(n = 1, n_min = 0, print = TRUE, clear = TRUE, title = "", only_bar_percent = FALSE, ...) {
if (print == FALSE || n < n_min) { if (print == FALSE || n < n_min) {
# create fake/empty object # create fake/empty object
pb <- list() pb <- list()
@@ -1286,9 +1299,11 @@ progress_ticker <- function(n = 1, n_min = 0, print = TRUE, ...) {
progress_bar <- import_fn("progress_bar", "progress", error_on_fail = FALSE) progress_bar <- import_fn("progress_bar", "progress", error_on_fail = FALSE)
if (!is.null(progress_bar)) { if (!is.null(progress_bar)) {
# so we use progress::progress_bar # so we use progress::progress_bar
# a close() method was also added, see below this function # a close()-method was also added, see below for that
pb <- progress_bar$new( pb <- progress_bar$new(
format = "[:bar] :percent (:current/:total,:eta)", format = paste0(title,
ifelse(only_bar_percent == TRUE, "[:bar] :percent", "[:bar] :percent (:current/:total,:eta)")),
clear = clear,
total = n total = n
) )
} else { } else {
@@ -1474,11 +1489,11 @@ add_MO_lookup_to_AMR_env <- function() {
MO_lookup$kingdom_index <- NA_real_ MO_lookup$kingdom_index <- NA_real_
MO_lookup[which(MO_lookup$kingdom == "Bacteria" | MO_lookup$mo == "UNKNOWN"), "kingdom_index"] <- 1 MO_lookup[which(MO_lookup$kingdom == "Bacteria" | MO_lookup$mo == "UNKNOWN"), "kingdom_index"] <- 1
MO_lookup[which(MO_lookup$kingdom == "Fungi"), "kingdom_index"] <- 2 MO_lookup[which(MO_lookup$kingdom == "Fungi"), "kingdom_index"] <- 1.25
MO_lookup[which(MO_lookup$kingdom == "Protozoa"), "kingdom_index"] <- 3 MO_lookup[which(MO_lookup$kingdom == "Protozoa"), "kingdom_index"] <- 1.5
MO_lookup[which(MO_lookup$kingdom == "Archaea"), "kingdom_index"] <- 4 MO_lookup[which(MO_lookup$kingdom == "Archaea"), "kingdom_index"] <- 2
# all the rest # all the rest
MO_lookup[which(is.na(MO_lookup$kingdom_index)), "kingdom_index"] <- 5 MO_lookup[which(is.na(MO_lookup$kingdom_index)), "kingdom_index"] <- 3
# the fullname lowercase, important for the internal algorithms in as.mo() # the fullname lowercase, important for the internal algorithms in as.mo()
MO_lookup$fullname_lower <- tolower(trimws(paste( MO_lookup$fullname_lower <- tolower(trimws(paste(
@@ -1504,6 +1519,10 @@ trimws2 <- function(..., whitespace = "[\u0009\u000A\u000B\u000C\u000D\u0020\u00
trimws(..., whitespace = whitespace) trimws(..., whitespace = whitespace)
} }
totitle <- function(x) {
gsub("^(.)", "\\U\\1", x, perl = TRUE)
}
readRDS_AMR <- function(file, refhook = NULL) { readRDS_AMR <- function(file, refhook = NULL) {
# this is readRDS with remote file support # this is readRDS with remote file support
con <- file(file) con <- file(file)

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -37,6 +37,7 @@
#' * `AMR_guideline` \cr Used for setting the default guideline for interpreting MIC values and disk diffusion diameters with [as.sir()]. Can be only the guideline name (e.g., `"CLSI"`) or the name with a year (e.g. `"CLSI 2019"`). The default to the latest implemented EUCAST guideline, currently \code{"`r clinical_breakpoints$guideline[1]`"}. Supported guideline are currently EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`) and CLSI (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`). #' * `AMR_guideline` \cr Used for setting the default guideline for interpreting MIC values and disk diffusion diameters with [as.sir()]. Can be only the guideline name (e.g., `"CLSI"`) or the name with a year (e.g. `"CLSI 2019"`). The default to the latest implemented EUCAST guideline, currently \code{"`r clinical_breakpoints$guideline[1]`"}. Supported guideline are currently EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`) and CLSI (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`).
#' * `AMR_ignore_pattern` \cr A [regular expression][base::regex] to ignore (i.e., make `NA`) any match given in [as.mo()] and all [`mo_*`][mo_property()] functions. #' * `AMR_ignore_pattern` \cr A [regular expression][base::regex] to ignore (i.e., make `NA`) any match given in [as.mo()] and all [`mo_*`][mo_property()] functions.
#' * `AMR_include_PKPD` \cr A [logical] to use in [as.sir()], to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is `TRUE`. #' * `AMR_include_PKPD` \cr A [logical] to use in [as.sir()], to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is `TRUE`.
#' * `AMR_ecoff` \cr A [logical] use in [as.sir()], to indicate that ECOFF (Epidemiological Cut-Off) values must be used - the default is `FALSE`.
#' * `AMR_include_screening` \cr A [logical] to use in [as.sir()], to indicate that clinical breakpoints for screening are allowed - the default is `FALSE`. #' * `AMR_include_screening` \cr A [logical] to use in [as.sir()], to indicate that clinical breakpoints for screening are allowed - the default is `FALSE`.
#' * `AMR_keep_synonyms` \cr A [logical] to use in [as.mo()] and all [`mo_*`][mo_property()] functions, to indicate if old, previously valid taxonomic names must be preserved and not be corrected to currently accepted names. The default is `FALSE`. #' * `AMR_keep_synonyms` \cr A [logical] to use in [as.mo()] and all [`mo_*`][mo_property()] functions, to indicate if old, previously valid taxonomic names must be preserved and not be corrected to currently accepted names. The default is `FALSE`.
#' * `AMR_cleaning_regex` \cr A [regular expression][base::regex] (case-insensitive) to use in [as.mo()] and all [`mo_*`][mo_property()] functions, to clean the user input. The default is the outcome of [mo_cleaning_regex()], which removes texts between brackets and texts such as "species" and "serovar". #' * `AMR_cleaning_regex` \cr A [regular expression][base::regex] (case-insensitive) to use in [as.mo()] and all [`mo_*`][mo_property()] functions, to clean the user input. The default is the outcome of [mo_cleaning_regex()], which removes texts between brackets and texts such as "species" and "serovar".

8
R/ab.R
View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -69,7 +69,7 @@
#' ab_atc_group2("AMX") #' ab_atc_group2("AMX")
#' ab_url("AMX") #' ab_url("AMX")
#' #'
#' # smart lowercase tranformation #' # smart lowercase transformation
#' ab_name(x = c("AMC", "PLB")) #' ab_name(x = c("AMC", "PLB"))
#' ab_name(x = c("AMC", "PLB"), tolower = TRUE) #' ab_name(x = c("AMC", "PLB"), tolower = TRUE)
#' #'

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -620,7 +620,7 @@ administrable_iv <- function(only_sir_columns = FALSE, ...) {
#' @rdname antibiotic_class_selectors #' @rdname antibiotic_class_selectors
#' @inheritParams eucast_rules #' @inheritParams eucast_rules
#' @details The [not_intrinsic_resistant()] function can be used to only select antibiotic columns that pose no intrinsic resistance for the microorganisms in the data set. For example, if a data set contains only microorganism codes or names of *E. coli* and *K. pneumoniae* and contains a column "vancomycin", this column will be removed (or rather, unselected) using this function. It currently applies `r format_eucast_version_nr(names(EUCAST_VERSION_EXPERT_RULES[length(EUCAST_VERSION_EXPERT_RULES)]))` to determine intrinsic resistance, using the [eucast_rules()] function internally. Because of this determination, this function is quite slow in terms of performance. #' @details The [not_intrinsic_resistant()] function can be used to only select antibiotic columns that pose no intrinsic resistance for the microorganisms in the data set. For example, if a data set contains only microorganism codes or names of *E. coli* and *K. pneumoniae* and contains a column "vancomycin", this column will be removed (or rather, unselected) using this function. It currently applies `r format_eucast_version_nr(names(EUCAST_VERSION_EXPERT_RULES[1]))` to determine intrinsic resistance, using the [eucast_rules()] function internally. Because of this determination, this function is quite slow in terms of performance.
#' @export #' @export
not_intrinsic_resistant <- function(only_sir_columns = FALSE, col_mo = NULL, version_expertrules = 3.3, ...) { not_intrinsic_resistant <- function(only_sir_columns = FALSE, col_mo = NULL, version_expertrules = 3.3, ...) {
meet_criteria(only_sir_columns, allow_class = "logical", has_length = 1) meet_criteria(only_sir_columns, allow_class = "logical", has_length = 1)

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -224,7 +224,7 @@
#' # in an Rmd file, you would just need to return `ureido` in a chunk, #' # in an Rmd file, you would just need to return `ureido` in a chunk,
#' # but to be explicit here: #' # but to be explicit here:
#' if (requireNamespace("knitr")) { #' if (requireNamespace("knitr")) {
#' knitr::knit_print(ureido) #' cat(knitr::knit_print(ureido))
#' } #' }
#' #'
#' #'

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

8
R/av.R
View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -61,7 +61,7 @@
#' av_group("ACI") #' av_group("ACI")
#' av_url("ACI") #' av_url("ACI")
#' #'
#' # smart lowercase tranformation #' # lowercase transformation
#' av_name(x = c("ACI", "VALA")) #' av_name(x = c("ACI", "VALA"))
#' av_name(x = c("ACI", "VALA"), tolower = TRUE) #' av_name(x = c("ACI", "VALA"), tolower = TRUE)
#' #'

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -71,7 +71,8 @@
#' @examples #' @examples
#' \donttest{ #' \donttest{
#' # a combination of species is not formal taxonomy, so #' # a combination of species is not formal taxonomy, so
#' # this will result in only "Enterobacter asburiae": #' # this will result in "Enterobacter cloacae cloacae",
#' # since it resembles the input best:
#' mo_name("Enterobacter asburiae/cloacae") #' mo_name("Enterobacter asburiae/cloacae")
#' #'
#' # now add a custom entry - it will be considered by as.mo() and #' # now add a custom entry - it will be considered by as.mo() and
@@ -109,7 +110,7 @@
#' mo_name("BACTEROIDES / PARABACTEROIDES") #' mo_name("BACTEROIDES / PARABACTEROIDES")
#' mo_rank("BACTEROIDES / PARABACTEROIDES") #' mo_rank("BACTEROIDES / PARABACTEROIDES")
#' #'
#' # taxonomy still works, although a slashline genus was given as input: #' # taxonomy still works, even though a slashline genus was given as input:
#' mo_family("Bacteroides/Parabacteroides") #' mo_family("Bacteroides/Parabacteroides")
#' #'
#' #'
@@ -247,17 +248,12 @@ add_custom_microorganisms <- function(x) {
"CUSTOM", "CUSTOM",
seq.int(from = current + 1, to = current + nrow(x), by = 1), seq.int(from = current + 1, to = current + nrow(x), by = 1),
"_", "_",
toupper(unname(abbreviate( trimws(
gsub( paste(abbreviate_mo(x$genus, 5),
" +", " _ ", abbreviate_mo(x$species, 4, hyphen_as_space = TRUE),
gsub( abbreviate_mo(x$subspecies, 4, hyphen_as_space = TRUE),
"[^A-Za-z0-9-]", " ", sep = "_"),
trimws2(paste(x$genus, x$species, x$subspecies)) whitespace = "_"))
)
),
minlength = 10
)))
)
stop_if(anyDuplicated(c(as.character(AMR_env$MO_lookup$mo), x$mo)), "MO codes must be unique and not match existing MO codes of the AMR package") stop_if(anyDuplicated(c(as.character(AMR_env$MO_lookup$mo), x$mo)), "MO codes must be unique and not match existing MO codes of the AMR package")
# add to package ---- # add to package ----
@@ -306,3 +302,26 @@ clear_custom_microorganisms <- function() {
AMR_env$mo_uncertainties <- AMR_env$mo_uncertainties[0, , drop = FALSE] AMR_env$mo_uncertainties <- AMR_env$mo_uncertainties[0, , drop = FALSE]
message_("Cleared ", nr2char(n - n2), " custom record", ifelse(n - n2 > 1, "s", ""), " from the internal `microorganisms` data set.") message_("Cleared ", nr2char(n - n2), " custom record", ifelse(n - n2 > 1, "s", ""), " from the internal `microorganisms` data set.")
} }
abbreviate_mo <- function(x, minlength = 5, prefix = "", hyphen_as_space = FALSE, ...) {
if (hyphen_as_space == TRUE) {
x <- gsub("-", " ", x, fixed = TRUE)
}
# keep a starting Latin ae
suppressWarnings(
gsub("(\u00C6|\u00E6)+",
"AE",
toupper(
paste0(prefix,
abbreviate(
gsub("^ae",
"\u00E6\u00E6",
x,
ignore.case = TRUE),
minlength = minlength,
use.classes = TRUE,
method = "both.sides",
...
))))
)
}

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -93,6 +93,7 @@
#' - `rank`\cr Text of the taxonomic rank of the microorganism, such as `"species"` or `"genus"` #' - `rank`\cr Text of the taxonomic rank of the microorganism, such as `"species"` or `"genus"`
#' - `ref`\cr Author(s) and year of related scientific publication. This contains only the *first surname* and year of the *latest* authors, e.g. "Wallis *et al.* 2006 *emend.* Smith and Jones 2018" becomes "Smith *et al.*, 2018". This field is directly retrieved from the source specified in the column `source`. Moreover, accents were removed to comply with CRAN that only allows ASCII characters, e.g. "V`r "\u00e1\u0148ov\u00e1"`" becomes "Vanova". #' - `ref`\cr Author(s) and year of related scientific publication. This contains only the *first surname* and year of the *latest* authors, e.g. "Wallis *et al.* 2006 *emend.* Smith and Jones 2018" becomes "Smith *et al.*, 2018". This field is directly retrieved from the source specified in the column `source`. Moreover, accents were removed to comply with CRAN that only allows ASCII characters, e.g. "V`r "\u00e1\u0148ov\u00e1"`" becomes "Vanova".
#' - `lpsn`\cr Identifier ('Record number') of the List of Prokaryotic names with Standing in Nomenclature (LPSN). This will be the first/highest LPSN identifier to keep one identifier per row. For example, *Acetobacter ascendens* has LPSN Record number 7864 and 11011. Only the first is available in the `microorganisms` data set. #' - `lpsn`\cr Identifier ('Record number') of the List of Prokaryotic names with Standing in Nomenclature (LPSN). This will be the first/highest LPSN identifier to keep one identifier per row. For example, *Acetobacter ascendens* has LPSN Record number 7864 and 11011. Only the first is available in the `microorganisms` data set.
#' - `oxygen_tolerance` \cr Oxygen tolerance, either `r vector_or(microorganisms$oxygen_tolerance)`. These data were retrieved from BacDive (see *Source*). Items that contain "likely" are missing from BacDive and were extrapolated from other species within the same genus to guess the oxygen tolerance. Currently `r round(length(microorganisms$oxygen_tolerance[which(!is.na(microorganisms$oxygen_tolerance))]) / nrow(microorganisms[which(microorganisms$kingdom == "Bacteria"), ]) * 100, 1)`% of all `r format_included_data_number(nrow(microorganisms[which(microorganisms$kingdom == "Bacteria"), ]))` bacteria in the data set contain an oxygen tolerance.
#' - `lpsn_parent`\cr LPSN identifier of the parent taxon #' - `lpsn_parent`\cr LPSN identifier of the parent taxon
#' - `lpsn_renamed_to`\cr LPSN identifier of the currently valid taxon #' - `lpsn_renamed_to`\cr LPSN identifier of the currently valid taxon
#' - `gbif`\cr Identifier ('taxonID') of the Global Biodiversity Information Facility (GBIF) #' - `gbif`\cr Identifier ('taxonID') of the Global Biodiversity Information Facility (GBIF)
@@ -120,12 +121,11 @@
#' ### Manual additions #' ### Manual additions
#' For convenience, some entries were added manually: #' For convenience, some entries were added manually:
#' #'
#' - `r format_included_data_number(which(microorganisms$genus == "Salmonella" & microorganisms$species == "enterica" & microorganisms$source == "manually added"))` entries for the city-like serovars of *Salmonellae* #' - `r format_included_data_number(microorganisms[which(microorganisms$source == "manually added" & microorganisms$genus == "Salmonella"), , drop = FALSE])` entries of *Salmonella*, such as the city-like serovars and groups A to H
#' - 11 entries of *Streptococcus* (beta-haemolytic: groups A, B, C, D, F, G, H, K and unspecified; other: viridans, milleri) #' - `r format_included_data_number(length(which(microorganisms$rank == "species group")))` species groups (such as the beta-haemolytic *Streptococcus* groups A to K, coagulase-negative *Staphylococcus* (CoNS), *Mycobacterium tuberculosis* complex, etc.), of which the group compositions are stored in the [microorganisms.groups] data set
#' - 2 entries of *Staphylococcus* (coagulase-negative (CoNS) and coagulase-positive (CoPS))
#' - 1 entry of *Blastocystis* (*B. hominis*), although it officially does not exist (Noel *et al.* 2005, PMID 15634993) #' - 1 entry of *Blastocystis* (*B. hominis*), although it officially does not exist (Noel *et al.* 2005, PMID 15634993)
#' - 1 entry of *Moraxella* (*M. catarrhalis*), which was formally named *Branhamella catarrhalis* (Catlin, 1970) though this change was never accepted within the field of clinical microbiology #' - 1 entry of *Moraxella* (*M. catarrhalis*), which was formally named *Branhamella catarrhalis* (Catlin, 1970) though this change was never accepted within the field of clinical microbiology
#' - 6 other 'undefined' entries (unknown, unknown Gram negatives, unknown Gram positives, unknown yeast, unknown fungus, and unknown anaerobic bacteria) #' - 8 other 'undefined' entries (unknown, unknown Gram-negatives, unknown Gram-positives, unknown yeast, unknown fungus, and unknown anaerobic Gram-pos/Gram-neg bacteria)
#' #'
#' The syntax used to transform the original data to a cleansed \R format, can be found here: <https://github.com/msberends/AMR/blob/main/data-raw/reproduction_of_microorganisms.R>. #' The syntax used to transform the original data to a cleansed \R format, can be found here: <https://github.com/msberends/AMR/blob/main/data-raw/reproduction_of_microorganisms.R>.
#' #'
@@ -140,19 +140,21 @@
#' #'
#' * `r TAXONOMY_VERSION$GBIF$citation` Accessed from <`r TAXONOMY_VERSION$GBIF$url`> on `r documentation_date(TAXONOMY_VERSION$GBIF$accessed_date)`. #' * `r TAXONOMY_VERSION$GBIF$citation` Accessed from <`r TAXONOMY_VERSION$GBIF$url`> on `r documentation_date(TAXONOMY_VERSION$GBIF$accessed_date)`.
#' #'
#' * `r TAXONOMY_VERSION$BacDive$citation` Accessed from <`r TAXONOMY_VERSION$BacDive$url`> on `r documentation_date(TAXONOMY_VERSION$BacDive$accessed_date)`.
#'
#' * `r TAXONOMY_VERSION$SNOMED$citation` URL: <`r TAXONOMY_VERSION$SNOMED$url`> #' * `r TAXONOMY_VERSION$SNOMED$citation` URL: <`r TAXONOMY_VERSION$SNOMED$url`>
#' #'
#' * Grimont *et al.* (2007). Antigenic Formulae of the Salmonella Serovars, 9th Edition. WHO Collaborating Centre for Reference and Research on *Salmonella* (WHOCC-SALM). #' * Grimont *et al.* (2007). Antigenic Formulae of the Salmonella Serovars, 9th Edition. WHO Collaborating Centre for Reference and Research on *Salmonella* (WHOCC-SALM).
#' #'
#' * Bartlett *et al.* (2022). **A comprehensive list of bacterial pathogens infecting humans** *Microbiology* 168:001269; \doi{10.1099/mic.0.001269} #' * Bartlett *et al.* (2022). **A comprehensive list of bacterial pathogens infecting humans** *Microbiology* 168:001269; \doi{10.1099/mic.0.001269}
#' @seealso [as.mo()], [mo_property()], [microorganisms.codes], [intrinsic_resistant] #' @seealso [as.mo()], [mo_property()], [microorganisms.groups], [microorganisms.codes], [intrinsic_resistant]
#' @examples #' @examples
#' microorganisms #' microorganisms
"microorganisms" "microorganisms"
#' Data Set with `r format(nrow(microorganisms.codes), big.mark = " ")` Common Microorganism Codes #' Data Set with `r format(nrow(microorganisms.codes), big.mark = " ")` Common Microorganism Codes
#' #'
#' A data set containing commonly used codes for microorganisms, from laboratory systems and WHONET. Define your own with [set_mo_source()]. They will all be searched when using [as.mo()] and consequently all the [`mo_*`][mo_property()] functions. #' A data set containing commonly used codes for microorganisms, from laboratory systems and [WHONET](https://whonet.org). Define your own with [set_mo_source()]. They will all be searched when using [as.mo()] and consequently all the [`mo_*`][mo_property()] functions.
#' @format A [tibble][tibble::tibble] with `r format(nrow(microorganisms.codes), big.mark = " ")` observations and `r ncol(microorganisms.codes)` variables: #' @format A [tibble][tibble::tibble] with `r format(nrow(microorganisms.codes), big.mark = " ")` observations and `r ncol(microorganisms.codes)` variables:
#' - `code`\cr Commonly used code of a microorganism #' - `code`\cr Commonly used code of a microorganism
#' - `mo`\cr ID of the microorganism in the [microorganisms] data set #' - `mo`\cr ID of the microorganism in the [microorganisms] data set
@@ -161,8 +163,35 @@
#' @seealso [as.mo()] [microorganisms] #' @seealso [as.mo()] [microorganisms]
#' @examples #' @examples
#' microorganisms.codes #' microorganisms.codes
#'
#' # 'ECO' or 'eco' is the WHONET code for E. coli:
#' microorganisms.codes[microorganisms.codes$code == "ECO", ]
#'
#' # and therefore, 'eco' will be understood as E. coli in this package:
#' mo_info("eco")
#'
#' # works for all AMR functions:
#' mo_is_intrinsic_resistant("eco", ab = "vancomycin")
"microorganisms.codes" "microorganisms.codes"
#' Data Set with `r format(nrow(microorganisms.groups), big.mark = " ")` Microorganisms In Species Groups
#'
#' A data set containing species groups and microbiological complexes, which are used in [the clinical breakpoints table][clinial_breakpoints].
#' @format A [tibble][tibble::tibble] with `r format(nrow(microorganisms.groups), big.mark = " ")` observations and `r ncol(microorganisms.groups)` variables:
#' - `mo_group`\cr ID of the species group / microbiological complex
#' - `mo`\cr ID of the microorganism belonging in the species group / microbiological complex
#' - `mo_group_name`\cr Name of the species group / microbiological complex, as retrieved with [mo_name()]
#' - `mo_name`\cr Name of the microorganism belonging in the species group / microbiological complex, as retrieved with [mo_name()]
#' @details
#' Like all data sets in this package, this data set is publicly available for download in the following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, SAS, and Stata. Please visit [our website for the download links](https://msberends.github.io/AMR/articles/datasets.html). The actual files are of course available on [our GitHub repository](https://github.com/msberends/AMR/tree/main/data-raw).
#' @seealso [as.mo()] [microorganisms]
#' @examples
#' microorganisms.groups
#'
#' # these are all species in the Bacteroides fragilis group, as per WHONET:
#' microorganisms.groups[microorganisms.groups$mo_group == "B_BCTRD_FRGL-C", ]
"microorganisms.groups"
#' Data Set with `r format(nrow(example_isolates), big.mark = " ")` Example Isolates #' Data Set with `r format(nrow(example_isolates), big.mark = " ")` Example Isolates
#' #'
#' A data set containing `r format(nrow(example_isolates), big.mark = " ")` microbial isolates with their full antibiograms. This data set contains randomised fictitious data, but reflects reality and can be used to practise AMR data analysis. For examples, please read [the tutorial on our website](https://msberends.github.io/AMR/articles/AMR.html). #' A data set containing `r format(nrow(example_isolates), big.mark = " ")` microbial isolates with their full antibiograms. This data set contains randomised fictitious data, but reflects reality and can be used to practise AMR data analysis. For examples, please read [the tutorial on our website](https://msberends.github.io/AMR/articles/AMR.html).
@@ -236,20 +265,33 @@
#' Data set containing clinical breakpoints to interpret MIC and disk diffusion to SIR values, according to international guidelines. Currently implemented guidelines are EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`) and CLSI (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`). Use [as.sir()] to transform MICs or disks measurements to SIR values. #' Data set containing clinical breakpoints to interpret MIC and disk diffusion to SIR values, according to international guidelines. Currently implemented guidelines are EUCAST (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`) and CLSI (`r min(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(clinical_breakpoints, guideline %like% "CLSI")$guideline)))`). Use [as.sir()] to transform MICs or disks measurements to SIR values.
#' @format A [tibble][tibble::tibble] with `r format(nrow(clinical_breakpoints), big.mark = " ")` observations and `r ncol(clinical_breakpoints)` variables: #' @format A [tibble][tibble::tibble] with `r format(nrow(clinical_breakpoints), big.mark = " ")` observations and `r ncol(clinical_breakpoints)` variables:
#' - `guideline`\cr Name of the guideline #' - `guideline`\cr Name of the guideline
#' - `method`\cr Either `r vector_or(clinical_breakpoints$method)` #' - `type`\cr Breakpoint type, either `r vector_or(clinical_breakpoints$type)`
#' - `site`\cr Body site, e.g. "Oral" or "Respiratory" #' - `method`\cr Testing method, either `r vector_or(clinical_breakpoints$method)`
#' - `site`\cr Body site for which the breakpoint must be applied, e.g. "Oral" or "Respiratory"
#' - `mo`\cr Microbial ID, see [as.mo()] #' - `mo`\cr Microbial ID, see [as.mo()]
#' - `rank_index`\cr Taxonomic rank index of `mo` from 1 (subspecies/infraspecies) to 5 (unknown microorganism) #' - `rank_index`\cr Taxonomic rank index of `mo` from 1 (subspecies/infraspecies) to 5 (unknown microorganism)
#' - `ab`\cr Antibiotic ID, see [as.ab()] #' - `ab`\cr Antibiotic code as used by this package, EARS-Net and WHONET, see [as.ab()]
#' - `ref_tbl`\cr Info about where the guideline rule can be found #' - `ref_tbl`\cr Info about where the guideline rule can be found
#' - `disk_dose`\cr Dose of the used disk diffusion method #' - `disk_dose`\cr Dose of the used disk diffusion method
#' - `breakpoint_S`\cr Lowest MIC value or highest number of millimetres that leads to "S" #' - `breakpoint_S`\cr Lowest MIC value or highest number of millimetres that leads to "S"
#' - `breakpoint_R`\cr Highest MIC value or lowest number of millimetres that leads to "R" #' - `breakpoint_R`\cr Highest MIC value or lowest number of millimetres that leads to "R"
#' - `uti`\cr A [logical] value (`TRUE`/`FALSE`) to indicate whether the rule applies to a urinary tract infection (UTI) #' - `uti`\cr A [logical] value (`TRUE`/`FALSE`) to indicate whether the rule applies to a urinary tract infection (UTI)
#' @details #' @details
#' Like all data sets in this package, this data set is publicly available for download in the following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, SAS, and Stata. Please visit [our website for the download links](https://msberends.github.io/AMR/articles/datasets.html). The actual files are of course available on [our GitHub repository](https://github.com/msberends/AMR/tree/main/data-raw). #' ### Different types of breakpoints
#' Supported types of breakpoints are `r vector_and(clinical_breakpoints$type, quote = FALSE)`. ECOFF (Epidemiological cut-off) values are used in antimicrobial susceptibility testing to differentiate between wild-type and non-wild-type strains of bacteria or fungi.
#' #'
#' They **allow for machine reading EUCAST and CLSI guidelines**, which is almost impossible with the MS Excel and PDF files distributed by EUCAST and CLSI. #' The default is `"human"`, which can also be set with the [package option][AMR-options] [`AMR_breakpoint_type`][AMR-options]. Use [`as.sir(..., breakpoint_type = ...)`][as.sir()] to interpret raw data using a specific breakpoint type, e.g. `as.sir(..., breakpoint_type = "ECOFF")` to use ECOFFs.
#'
#' ### Imported from WHONET
#' Clinical breakpoints in this package were validated through and imported from [WHONET](https://whonet.org), a free desktop Windows application developed and supported by the WHO Collaborating Centre for Surveillance of Antimicrobial Resistance. More can be read on [their website](https://whonet.org). The developers of WHONET and this `AMR` package have been in contact about sharing their work. We highly appreciate their development on the WHONET software.
#'
#' ### Response from CLSI and EUCAST
#' The CEO of CLSI and the chairman of EUCAST have endorsed the work and public use of this `AMR` package in June 2023, when future development of distributing clinical breakpoints was discussed in a meeting between CLSI, EUCAST, the WHO, and developers of WHONET and the `AMR` package.
#'
#' ### Download
#' Like all data sets in this package, this data set is publicly available for download in the following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, SAS, and Stata. Please visit [our website for the download links](https://msberends.github.io/AMR/articles/datasets.html). The actual files are of course available on [our GitHub repository](https://github.com/msberends/AMR/tree/main/data-raw). They allow for machine reading EUCAST and CLSI guidelines, which is almost impossible with the MS Excel and PDF files distributed by EUCAST and CLSI, though initiatives have started to overcome these burdens.
#'
#' **NOTE:** this `AMR` package (and the WHONET software as well) contains internal methods to apply the guidelines, which is rather complex. For example, some breakpoints must be applied on certain species groups (which are in case of this package available through the [microorganisms.groups] data set). It is important that this is considered when using the breakpoints for own use.
#' @seealso [intrinsic_resistant] #' @seealso [intrinsic_resistant]
#' @examples #' @examples
#' clinical_breakpoints #' clinical_breakpoints
@@ -284,11 +326,8 @@
#' - `administration`\cr Route of administration, either `r vector_or(dosage$administration)` #' - `administration`\cr Route of administration, either `r vector_or(dosage$administration)`
#' - `notes`\cr Additional dosage notes #' - `notes`\cr Additional dosage notes
#' - `original_txt`\cr Original text in the PDF file of EUCAST #' - `original_txt`\cr Original text in the PDF file of EUCAST
#' - `eucast_version`\cr Version number of the EUCAST Clinical Breakpoints guideline to which these dosages apply #' - `eucast_version`\cr Version number of the EUCAST Clinical Breakpoints guideline to which these dosages apply, either `r vector_or(dosage$eucast_version, quotes = FALSE, sort = TRUE, reverse = TRUE)`
#' @details #' @details
#' This data set is based on `r format_eucast_version_nr(12.0)` and `r format_eucast_version_nr(11.0)`.
#'
#' ### Direct download
#' Like all data sets in this package, this data set is publicly available for download in the following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, SAS, and Stata. Please visit [our website for the download links](https://msberends.github.io/AMR/articles/datasets.html). The actual files are of course available on [our GitHub repository](https://github.com/msberends/AMR/tree/main/data-raw). #' Like all data sets in this package, this data set is publicly available for download in the following formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, SAS, and Stata. Please visit [our website for the download links](https://msberends.github.io/AMR/articles/datasets.html). The actual files are of course available on [our GitHub repository](https://github.com/msberends/AMR/tree/main/data-raw).
#' @examples #' @examples
#' dosage #' dosage

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -63,8 +63,9 @@ format_eucast_version_nr <- function(version, markdown = TRUE) {
#' @param info a [logical] to indicate whether progress should be printed to the console - the default is only print while in interactive sessions #' @param info a [logical] to indicate whether progress should be printed to the console - the default is only print while in interactive sessions
#' @param rules a [character] vector that specifies which rules should be applied. Must be one or more of `"breakpoints"`, `"expert"`, `"other"`, `"custom"`, `"all"`, and defaults to `c("breakpoints", "expert")`. The default value can be set to another value using the [package option][AMR-options] [`AMR_eucastrules`][AMR-options]: `options(AMR_eucastrules = "all")`. If using `"custom"`, be sure to fill in argument `custom_rules` too. Custom rules can be created with [custom_eucast_rules()]. #' @param rules a [character] vector that specifies which rules should be applied. Must be one or more of `"breakpoints"`, `"expert"`, `"other"`, `"custom"`, `"all"`, and defaults to `c("breakpoints", "expert")`. The default value can be set to another value using the [package option][AMR-options] [`AMR_eucastrules`][AMR-options]: `options(AMR_eucastrules = "all")`. If using `"custom"`, be sure to fill in argument `custom_rules` too. Custom rules can be created with [custom_eucast_rules()].
#' @param verbose a [logical] to turn Verbose mode on and off (default is off). In Verbose mode, the function does not apply rules to the data, but instead returns a data set in logbook form with extensive info about which rows and columns would be effected and in which way. Using Verbose mode takes a lot more time. #' @param verbose a [logical] to turn Verbose mode on and off (default is off). In Verbose mode, the function does not apply rules to the data, but instead returns a data set in logbook form with extensive info about which rows and columns would be effected and in which way. Using Verbose mode takes a lot more time.
#' @param version_breakpoints the version number to use for the EUCAST Clinical Breakpoints guideline. Can be either `r vector_or(names(EUCAST_VERSION_BREAKPOINTS), reverse = TRUE)`. #' @param version_breakpoints the version number to use for the EUCAST Clinical Breakpoints guideline. Can be `r vector_or(names(EUCAST_VERSION_BREAKPOINTS), reverse = TRUE)`.
#' @param version_expertrules the version number to use for the EUCAST Expert Rules and Intrinsic Resistance guideline. Can be either `r vector_or(names(EUCAST_VERSION_EXPERT_RULES), reverse = TRUE)`. #' @param version_expertrules the version number to use for the EUCAST Expert Rules and Intrinsic Resistance guideline. Can be `r vector_or(names(EUCAST_VERSION_EXPERT_RULES), reverse = TRUE)`.
# @param version_resistant_phenotypes the version number to use for the EUCAST Expected Resistant Phenotypes. Can be `r vector_or(names(EUCAST_VERSION_RESISTANTPHENOTYPES), reverse = TRUE)`.
#' @param ampc_cephalosporin_resistance a [character] value that should be applied to cefotaxime, ceftriaxone and ceftazidime for AmpC de-repressed cephalosporin-resistant mutants - the default is `NA`. Currently only works when `version_expertrules` is `3.2` and higher; these version of '*EUCAST Expert Rules on Enterobacterales*' state that results of cefotaxime, ceftriaxone and ceftazidime should be reported with a note, or results should be suppressed (emptied) for these three drugs. A value of `NA` (the default) for this argument will remove results for these three drugs, while e.g. a value of `"R"` will make the results for these drugs resistant. Use `NULL` or `FALSE` to not alter results for these three drugs of AmpC de-repressed cephalosporin-resistant mutants. Using `TRUE` is equal to using `"R"`. \cr For *EUCAST Expert Rules* v3.2, this rule applies to: `r vector_and(gsub("[^a-zA-Z ]+", "", unlist(strsplit(EUCAST_RULES_DF[which(EUCAST_RULES_DF$reference.version %in% c(3.2, 3.3) & EUCAST_RULES_DF$reference.rule %like% "ampc"), "this_value"][1], "|", fixed = TRUE))), quotes = "*")`. #' @param ampc_cephalosporin_resistance a [character] value that should be applied to cefotaxime, ceftriaxone and ceftazidime for AmpC de-repressed cephalosporin-resistant mutants - the default is `NA`. Currently only works when `version_expertrules` is `3.2` and higher; these version of '*EUCAST Expert Rules on Enterobacterales*' state that results of cefotaxime, ceftriaxone and ceftazidime should be reported with a note, or results should be suppressed (emptied) for these three drugs. A value of `NA` (the default) for this argument will remove results for these three drugs, while e.g. a value of `"R"` will make the results for these drugs resistant. Use `NULL` or `FALSE` to not alter results for these three drugs of AmpC de-repressed cephalosporin-resistant mutants. Using `TRUE` is equal to using `"R"`. \cr For *EUCAST Expert Rules* v3.2, this rule applies to: `r vector_and(gsub("[^a-zA-Z ]+", "", unlist(strsplit(EUCAST_RULES_DF[which(EUCAST_RULES_DF$reference.version %in% c(3.2, 3.3) & EUCAST_RULES_DF$reference.rule %like% "ampc"), "this_value"][1], "|", fixed = TRUE))), quotes = "*")`.
#' @param ... column name of an antibiotic, see section *Antibiotics* below #' @param ... column name of an antibiotic, see section *Antibiotics* below
#' @param ab any (vector of) text that can be coerced to a valid antibiotic drug code with [as.ab()] #' @param ab any (vector of) text that can be coerced to a valid antibiotic drug code with [as.ab()]
@@ -167,6 +168,7 @@ eucast_rules <- function(x,
verbose = FALSE, verbose = FALSE,
version_breakpoints = 12.0, version_breakpoints = 12.0,
version_expertrules = 3.3, version_expertrules = 3.3,
# TODO version_resistant_phenotypes = 1.2,
ampc_cephalosporin_resistance = NA, ampc_cephalosporin_resistance = NA,
only_sir_columns = FALSE, only_sir_columns = FALSE,
custom_rules = NULL, custom_rules = NULL,
@@ -178,6 +180,7 @@ eucast_rules <- function(x,
meet_criteria(verbose, allow_class = "logical", has_length = 1) meet_criteria(verbose, allow_class = "logical", has_length = 1)
meet_criteria(version_breakpoints, allow_class = c("numeric", "integer"), has_length = 1, is_in = as.double(names(EUCAST_VERSION_BREAKPOINTS))) meet_criteria(version_breakpoints, allow_class = c("numeric", "integer"), has_length = 1, is_in = as.double(names(EUCAST_VERSION_BREAKPOINTS)))
meet_criteria(version_expertrules, allow_class = c("numeric", "integer"), has_length = 1, is_in = as.double(names(EUCAST_VERSION_EXPERT_RULES))) meet_criteria(version_expertrules, allow_class = c("numeric", "integer"), has_length = 1, is_in = as.double(names(EUCAST_VERSION_EXPERT_RULES)))
# meet_criteria(version_resistant_phenotypes, allow_class = c("numeric", "integer"), has_length = 1, is_in = as.double(names(EUCAST_VERSION_RESISTANTPHENOTYPES)))
meet_criteria(ampc_cephalosporin_resistance, allow_class = c("logical", "character", "sir"), has_length = 1, allow_NA = TRUE, allow_NULL = TRUE) meet_criteria(ampc_cephalosporin_resistance, allow_class = c("logical", "character", "sir"), has_length = 1, allow_NA = TRUE, allow_NULL = TRUE)
meet_criteria(only_sir_columns, allow_class = "logical", has_length = 1) meet_criteria(only_sir_columns, allow_class = "logical", has_length = 1)
meet_criteria(custom_rules, allow_class = "custom_eucast_rules", allow_NULL = TRUE) meet_criteria(custom_rules, allow_class = "custom_eucast_rules", allow_NULL = TRUE)
@@ -205,6 +208,7 @@ eucast_rules <- function(x,
breakpoints_info <- EUCAST_VERSION_BREAKPOINTS[[which(as.double(names(EUCAST_VERSION_BREAKPOINTS)) == version_breakpoints)]] breakpoints_info <- EUCAST_VERSION_BREAKPOINTS[[which(as.double(names(EUCAST_VERSION_BREAKPOINTS)) == version_breakpoints)]]
expertrules_info <- EUCAST_VERSION_EXPERT_RULES[[which(as.double(names(EUCAST_VERSION_EXPERT_RULES)) == version_expertrules)]] expertrules_info <- EUCAST_VERSION_EXPERT_RULES[[which(as.double(names(EUCAST_VERSION_EXPERT_RULES)) == version_expertrules)]]
# resistantphenotypes_info <- EUCAST_VERSION_RESISTANTPHENOTYPES[[which(as.double(names(EUCAST_VERSION_RESISTANTPHENOTYPES)) == version_resistant_phenotypes)]]
# support old setting (until AMR v1.3.0) # support old setting (until AMR v1.3.0)
if (missing(rules) && !is.null(getOption("AMR.eucast_rules"))) { if (missing(rules) && !is.null(getOption("AMR.eucast_rules"))) {

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -191,13 +191,14 @@ first_isolate <- function(x = NULL,
} }
meet_criteria(col_specimen, allow_class = "character", has_length = 1, allow_NULL = TRUE, is_in = colnames(x)) meet_criteria(col_specimen, allow_class = "character", has_length = 1, allow_NULL = TRUE, is_in = colnames(x))
if (is.logical(col_icu)) { if (is.logical(col_icu)) {
meet_criteria(col_icu, allow_class = "logical", has_length = c(1, nrow(x)), allow_NULL = TRUE) meet_criteria(col_icu, allow_class = "logical", has_length = c(1, nrow(x)), allow_NA = TRUE, allow_NULL = TRUE)
if (length(col_icu) == 1) { x$newvar_is_icu <- col_icu
col_icu <- rep(col_icu, nrow(x)) } else if (!is.null(col_icu)) {
} # add "logical" to the allowed classes here, since it may give an error in certain user input, and should then also say that logicals can be used too
} else {
meet_criteria(col_icu, allow_class = c("character", "logical"), has_length = 1, allow_NULL = TRUE, is_in = colnames(x)) meet_criteria(col_icu, allow_class = c("character", "logical"), has_length = 1, allow_NULL = TRUE, is_in = colnames(x))
col_icu <- x[, col_icu, drop = TRUE] x$newvar_is_icu <- x[, col_icu, drop = TRUE]
} else {
x$newvar_is_icu <- NA
} }
# method # method
method <- coerce_method(method) method <- coerce_method(method)
@@ -251,14 +252,13 @@ first_isolate <- function(x = NULL,
"Determining first isolates ", "Determining first isolates ",
ifelse(method %in% c("episode-based", "phenotype-based"), ifelse(method %in% c("episode-based", "phenotype-based"),
ifelse(is.infinite(episode_days), ifelse(is.infinite(episode_days),
"without a specified episode length", paste(font_bold("without"), " a specified episode length"),
paste("using an episode length of", episode_days, "days") paste("using an episode length of", font_bold(paste(episode_days, "days")))
), ),
"" ""
) )
), ),
as_note = FALSE, add_fn = font_red
add_fn = font_black
) )
} }
@@ -358,8 +358,7 @@ first_isolate <- function(x = NULL,
# remove testcodes # remove testcodes
if (!is.null(testcodes_exclude) && isTRUE(info) && message_not_thrown_before("first_isolate", "excludingtestcodes")) { if (!is.null(testcodes_exclude) && isTRUE(info) && message_not_thrown_before("first_isolate", "excludingtestcodes")) {
message_("Excluding test codes: ", vector_and(testcodes_exclude, quotes = TRUE), message_("Excluding test codes: ", vector_and(testcodes_exclude, quotes = TRUE),
add_fn = font_black, add_fn = font_red
as_note = FALSE
) )
} }
@@ -372,8 +371,7 @@ first_isolate <- function(x = NULL,
check_columns_existance(col_specimen, x) check_columns_existance(col_specimen, x)
if (isTRUE(info) && message_not_thrown_before("first_isolate", "excludingspecimen")) { if (isTRUE(info) && message_not_thrown_before("first_isolate", "excludingspecimen")) {
message_("Excluding other than specimen group '", specimen_group, "'", message_("Excluding other than specimen group '", specimen_group, "'",
add_fn = font_black, add_fn = font_red
as_note = FALSE
) )
} }
} }
@@ -455,15 +453,13 @@ first_isolate <- function(x = NULL,
message_("Basing inclusion on key antimicrobials, ", message_("Basing inclusion on key antimicrobials, ",
ifelse(ignore_I == FALSE, "not ", ""), ifelse(ignore_I == FALSE, "not ", ""),
"ignoring I", "ignoring I",
add_fn = font_black, add_fn = font_red
as_note = FALSE
) )
} }
if (type == "points") { if (type == "points") {
message_("Basing inclusion on all antimicrobial results, using a points threshold of ", message_("Basing inclusion on all antimicrobial results, using a points threshold of ",
points_threshold, points_threshold,
add_fn = font_black, add_fn = font_red
as_note = FALSE
) )
} }
} }
@@ -506,33 +502,27 @@ first_isolate <- function(x = NULL,
(x$other_pat_or_mo | x$more_than_episode_ago) (x$other_pat_or_mo | x$more_than_episode_ago)
} }
decimal.mark <- getOption("OutDec")
big.mark <- ifelse(decimal.mark != ",", ",", " ")
# first one as TRUE # first one as TRUE
x[row.start, "newvar_first_isolate"] <- TRUE x[row.start, "newvar_first_isolate"] <- TRUE
# no tests that should be included, or ICU # no tests that should be included, or ICU
if (!is.null(col_testcode)) { if (!is.null(col_testcode)) {
x[which(x[, col_testcode] %in% tolower(testcodes_exclude)), "newvar_first_isolate"] <- FALSE x[which(x[, col_testcode] %in% tolower(testcodes_exclude)), "newvar_first_isolate"] <- FALSE
} }
if (any(!is.na(x$newvar_is_icu)) && any(x$newvar_is_icu == TRUE, na.rm = TRUE)) {
if (!is.null(col_icu)) {
if (icu_exclude == TRUE) { if (icu_exclude == TRUE) {
if (isTRUE(info)) { if (isTRUE(info)) {
message_("Excluding ", format(sum(col_icu, na.rm = TRUE), big.mark = " "), " isolates from ICU.", message_("Excluding ", format(sum(x$newvar_is_icu, na.rm = TRUE), decimal.mark = decimal.mark, big.mark = big.mark), " isolates from ICU.",
add_fn = font_black, add_fn = font_red)
as_note = FALSE
)
} }
x[which(col_icu), "newvar_first_isolate"] <- FALSE x[which(x$newvar_is_icu), "newvar_first_isolate"] <- FALSE
} else if (isTRUE(info)) { } else if (isTRUE(info)) {
message_("Including isolates from ICU.", message_("Including isolates from ICU.")
add_fn = font_black,
as_note = FALSE
)
} }
} }
decimal.mark <- getOption("OutDec")
big.mark <- ifelse(decimal.mark != ",", ",", " ")
if (isTRUE(info)) { if (isTRUE(info)) {
# print group name if used in dplyr::group_by() # print group name if used in dplyr::group_by()
cur_group <- import_fn("cur_group", "dplyr", error_on_fail = FALSE) cur_group <- import_fn("cur_group", "dplyr", error_on_fail = FALSE)
@@ -560,11 +550,12 @@ first_isolate <- function(x = NULL,
# handle empty microorganisms # handle empty microorganisms
if (any(x$newvar_mo == "UNKNOWN", na.rm = TRUE) && isTRUE(info)) { if (any(x$newvar_mo == "UNKNOWN", na.rm = TRUE) && isTRUE(info)) {
message_( message_(
ifelse(include_unknown == TRUE, "Included ", "Excluded "), ifelse(include_unknown == TRUE, "Including ", "Excluding "),
format(sum(x$newvar_mo == "UNKNOWN", na.rm = TRUE), format(sum(x$newvar_mo == "UNKNOWN", na.rm = TRUE),
decimal.mark = decimal.mark, big.mark = big.mark decimal.mark = decimal.mark, big.mark = big.mark
), ),
" isolates with a microbial ID 'UNKNOWN' (in column '", font_bold(col_mo), "')" " isolates with a microbial ID 'UNKNOWN' (in column '", font_bold(col_mo), "')",
add_fn = font_red
) )
} }
x[which(x$newvar_mo == "UNKNOWN"), "newvar_first_isolate"] <- include_unknown x[which(x$newvar_mo == "UNKNOWN"), "newvar_first_isolate"] <- include_unknown
@@ -572,10 +563,11 @@ first_isolate <- function(x = NULL,
# exclude all NAs # exclude all NAs
if (anyNA(x$newvar_mo) && isTRUE(info)) { if (anyNA(x$newvar_mo) && isTRUE(info)) {
message_( message_(
"Excluded ", format(sum(is.na(x$newvar_mo), na.rm = TRUE), "Excluding ", format(sum(is.na(x$newvar_mo), na.rm = TRUE),
decimal.mark = decimal.mark, big.mark = big.mark decimal.mark = decimal.mark, big.mark = big.mark
), ),
" isolates with a microbial ID 'NA' (in column '", font_bold(col_mo), "')" " isolates with a microbial ID `NA` (in column '", font_bold(col_mo), "')",
add_fn = font_red
) )
} }
x[which(is.na(x$newvar_mo)), "newvar_first_isolate"] <- FALSE x[which(is.na(x$newvar_mo)), "newvar_first_isolate"] <- FALSE

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -57,7 +57,7 @@ italicise_taxonomy <- function(string, type = c("markdown", "ansi")) {
before <- "*" before <- "*"
after <- "*" after <- "*"
} else if (type == "ansi") { } else if (type == "ansi") {
if (!has_colour()) { if (!has_colour() && !identical(Sys.getenv("IN_PKGDOWN"), "true")) {
return(string) return(string)
} }
before <- "\033[3m" before <- "\033[3m"

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -49,6 +49,9 @@
#' @seealso [grepl()] #' @seealso [grepl()]
#' @examples #' @examples
#' # data.table has a more limited version of %like%, so unload it:
#' try(detach("package:data.table", unload = TRUE), silent = TRUE)
#'
#' a <- "This is a test" #' a <- "This is a test"
#' b <- "TEST" #' b <- "TEST"
#' a %like% b #' a %like% b

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

10
R/mic.R
View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -165,7 +165,7 @@ valid_mic_levels <- c(
#' autoplot(mic_data, mo = "E. coli", ab = "cipro", language = "uk") # Ukrainian #' autoplot(mic_data, mo = "E. coli", ab = "cipro", language = "uk") # Ukrainian
#' } #' }
as.mic <- function(x, na.rm = FALSE) { as.mic <- function(x, na.rm = FALSE) {
meet_criteria(x, allow_class = c("mic", "character", "numeric", "integer", "factor"), allow_NA = TRUE) meet_criteria(x, allow_NA = TRUE)
meet_criteria(na.rm, allow_class = "logical", has_length = 1) meet_criteria(na.rm, allow_class = "logical", has_length = 1)
if (is.mic(x)) { if (is.mic(x)) {

276
R/mo.R
View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -95,13 +95,14 @@
#' 1. Berends MS *et al.* (2022). **AMR: An R Package for Working with Antimicrobial Resistance Data**. *Journal of Statistical Software*, 104(3), 1-31; \doi{10.18637/jss.v104.i03} #' 1. Berends MS *et al.* (2022). **AMR: An R Package for Working with Antimicrobial Resistance Data**. *Journal of Statistical Software*, 104(3), 1-31; \doi{10.18637/jss.v104.i03}
#' 2. Becker K *et al.* (2014). **Coagulase-Negative Staphylococci.** *Clin Microbiol Rev.* 27(4): 870-926; \doi{10.1128/CMR.00109-13} #' 2. Becker K *et al.* (2014). **Coagulase-Negative Staphylococci.** *Clin Microbiol Rev.* 27(4): 870-926; \doi{10.1128/CMR.00109-13}
#' 3. Becker K *et al.* (2019). **Implications of identifying the recently defined members of the *S. aureus* complex, *S. argenteus* and *S. schweitzeri*: A position paper of members of the ESCMID Study Group for staphylococci and Staphylococcal Diseases (ESGS).** *Clin Microbiol Infect*; \doi{10.1016/j.cmi.2019.02.028} #' 3. Becker K *et al.* (2019). **Implications of identifying the recently defined members of the *S. aureus* complex, *S. argenteus* and *S. schweitzeri*: A position paper of members of the ESCMID Study Group for staphylococci and Staphylococcal Diseases (ESGS).** *Clin Microbiol Infect*; \doi{10.1016/j.cmi.2019.02.028}
#' 4. Becker K *et al.* (2020). **Emergence of coagulase-negative staphylococci** *Expert Rev Anti Infect Ther.* 18(4):349-366; \doi{10.1080/14787210.2020.1730813} #' 4. Becker K *et al.* (2020). **Emergence of coagulase-negative staphylococci.** *Expert Rev Anti Infect Ther.* 18(4):349-366; \doi{10.1080/14787210.2020.1730813}
#' 5. Lancefield RC (1933). **A serological differentiation of human and other groups of hemolytic streptococci**. *J Exp Med.* 57(4): 571-95; \doi{10.1084/jem.57.4.571} #' 5. Lancefield RC (1933). **A serological differentiation of human and other groups of hemolytic streptococci.** *J Exp Med.* 57(4): 571-95; \doi{10.1084/jem.57.4.571}
#' 6. Berends MS *et al.* (2022). **Trends in Occurrence and Phenotypic Resistance of Coagulase-Negative Staphylococci (CoNS) Found in Human Blood in the Northern Netherlands between 2013 and 2019** *Microorganisms* 10(9), 1801; \doi{10.3390/microorganisms10091801} #' 6. Berends MS *et al.* (2022). **Trends in Occurrence and Phenotypic Resistance of Coagulase-Negative Staphylococci (CoNS) Found in Human Blood in the Northern Netherlands between 2013 and 2019/** *Micro.rganisms* 10(9), 1801; \doi{10.3390/microorganisms10091801}
#' 7. `r TAXONOMY_VERSION$LPSN$citation` Accessed from <`r TAXONOMY_VERSION$LPSN$url`> on `r documentation_date(TAXONOMY_VERSION$LPSN$accessed_date)`. #' 7. `r TAXONOMY_VERSION$LPSN$citation` Accessed from <`r TAXONOMY_VERSION$LPSN$url`> on `r documentation_date(TAXONOMY_VERSION$LPSN$accessed_date)`.
#' 8. `r TAXONOMY_VERSION$GBIF$citation` Accessed from <`r TAXONOMY_VERSION$GBIF$url`> on `r documentation_date(TAXONOMY_VERSION$GBIF$accessed_date)`. #' 8. `r TAXONOMY_VERSION$GBIF$citation` Accessed from <`r TAXONOMY_VERSION$GBIF$url`> on `r documentation_date(TAXONOMY_VERSION$GBIF$accessed_date)`.
#' 9. `r TAXONOMY_VERSION$SNOMED$citation` URL: <`r TAXONOMY_VERSION$SNOMED$url`> #' 9. `r TAXONOMY_VERSION$BacDive$citation` Accessed from <`r TAXONOMY_VERSION$BacDive$url`> on `r documentation_date(TAXONOMY_VERSION$BacDive$accessed_date)`.
#' 10. Bartlett A *et al.* (2022). **A comprehensive list of bacterial pathogens infecting humans** *Microbiology* 168:001269; \doi{10.1099/mic.0.001269} #' 10. `r TAXONOMY_VERSION$SNOMED$citation` URL: <`r TAXONOMY_VERSION$SNOMED$url`>
#' 11. Bartlett A *et al.* (2022). **A comprehensive list of bacterial pathogens infecting humans** *Microbiology* 168:001269; \doi{10.1099/mic.0.001269}
#' @export #' @export
#' @return A [character] [vector] with additional class [`mo`] #' @return A [character] [vector] with additional class [`mo`]
#' @seealso [microorganisms] for the [data.frame] that is being used to determine ID's. #' @seealso [microorganisms] for the [data.frame] that is being used to determine ID's.
@@ -171,9 +172,10 @@ as.mo <- function(x,
add_MO_lookup_to_AMR_env() add_MO_lookup_to_AMR_env()
if (tryCatch(all(x %in% c(AMR_env$MO_lookup$mo, NA)) && if (tryCatch(all(x %in% c(AMR_env$MO_lookup$mo, NA)), error = function(e) FALSE) &&
isFALSE(Becker) && isFALSE(Becker) &&
isFALSE(Lancefield), error = function(e) FALSE)) { isFALSE(Lancefield) &&
isTRUE(keep_synonyms)) {
# don't look into valid MO codes, just return them # don't look into valid MO codes, just return them
# is.mo() won't work - MO codes might change between package versions # is.mo() won't work - MO codes might change between package versions
return(set_clean_class(x, new_class = c("mo", "character"))) return(set_clean_class(x, new_class = c("mo", "character")))
@@ -188,11 +190,6 @@ as.mo <- function(x,
x_lower <- tolower(x) x_lower <- tolower(x)
complexes <- x[trimws2(x_lower) %like_case% " (complex|group)$"]
if (length(complexes) > 0 && identical(cleaning_regex, mo_cleaning_regex()) && !any(AMR_env$MO_lookup$fullname[which(AMR_env$MO_lookup$source == "Added by user")] %like% "(group|complex)", na.rm = TRUE)) {
warning_("in `as.mo()`: 'complex' and 'group' were ignored from the input in ", length(complexes), " case", ifelse(length(complexes) > 1, "s", ""), ", as they are currently not supported.\nYou can add your own microorganism with `add_custom_microorganisms()`.", call = FALSE)
}
# WHONET: xxx = no growth # WHONET: xxx = no growth
x[x_lower %in% c("", "xxx", "na", "nan")] <- NA_character_ x[x_lower %in% c("", "xxx", "na", "nan")] <- NA_character_
@@ -214,10 +211,10 @@ as.mo <- function(x,
# From known codes ---- # From known codes ----
out[is.na(out) & toupper(x) %in% AMR::microorganisms.codes$code] <- AMR::microorganisms.codes$mo[match(toupper(x)[is.na(out) & toupper(x) %in% AMR::microorganisms.codes$code], AMR::microorganisms.codes$code)] out[is.na(out) & toupper(x) %in% AMR::microorganisms.codes$code] <- AMR::microorganisms.codes$mo[match(toupper(x)[is.na(out) & toupper(x) %in% AMR::microorganisms.codes$code], AMR::microorganisms.codes$code)]
# From SNOMED ---- # From SNOMED ----
if (any(is.na(out) & !is.na(x)) && any(is.na(out) & x %in% unlist(AMR_env$MO_lookup$snomed), na.rm = TRUE)) { # based on this extremely fast gem: https://stackoverflow.com/a/11002456/4575331
# found this extremely fast gem here: https://stackoverflow.com/a/11002456/4575331 snomeds <- unlist(AMR_env$MO_lookup$snomed)
out[is.na(out) & x %in% unlist(AMR_env$MO_lookup$snomed)] <- AMR_env$MO_lookup$mo[rep(seq_along(AMR_env$MO_lookup$snomed), vapply(FUN.VALUE = double(1), AMR_env$MO_lookup$snomed, length))[match(x[is.na(out) & x %in% unlist(AMR_env$MO_lookup$snomed)], unlist(AMR_env$MO_lookup$snomed))]] snomeds <- snomeds[!is.na(snomeds)]
} out[is.na(out) & x %in% snomeds] <- AMR_env$MO_lookup$mo[rep(seq_along(AMR_env$MO_lookup$snomed), vapply(FUN.VALUE = double(1), AMR_env$MO_lookup$snomed, length))[match(x[is.na(out) & x %in% snomeds], snomeds)]]
# From other familiar output ---- # From other familiar output ----
# such as Salmonella groups, colloquial names, etc. # such as Salmonella groups, colloquial names, etc.
out[is.na(out)] <- convert_colloquial_input(x[is.na(out)]) out[is.na(out)] <- convert_colloquial_input(x[is.na(out)])
@@ -265,6 +262,8 @@ as.mo <- function(x,
x_out <- trimws2(gsub(" +", " ", x_out, perl = TRUE)) x_out <- trimws2(gsub(" +", " ", x_out, perl = TRUE))
x_search_cleaned <- x_out x_search_cleaned <- x_out
x_out <- tolower(x_out) x_out <- tolower(x_out)
# when x_search_cleaned are only capitals (such as in codes), make them lowercase to increase matching score
x_search_cleaned[x_search_cleaned == toupper(x_search_cleaned)] <- x_out[x_search_cleaned == toupper(x_search_cleaned)]
# first check if cleaning led to an exact result, case-insensitive # first check if cleaning led to an exact result, case-insensitive
if (x_out %in% AMR_env$MO_lookup$fullname_lower) { if (x_out %in% AMR_env$MO_lookup$fullname_lower) {
@@ -282,22 +281,39 @@ as.mo <- function(x,
# do a pre-match on first character (and if it contains a space, first chars of first two terms) # do a pre-match on first character (and if it contains a space, first chars of first two terms)
if (length(x_parts) %in% c(2, 3)) { if (length(x_parts) %in% c(2, 3)) {
# for genus + species + subspecies # for genus + species + subspecies
filtr <- which(AMR_env$MO_lookup$full_first == substr(x_parts[1], 1, 1) & (AMR_env$MO_lookup$species_first == substr(x_parts[2], 1, 1) | AMR_env$MO_lookup$subspecies_first == substr(x_parts[2], 1, 1))) if (nchar(gsub("[^a-z]", "", x_parts[1], perl = TRUE)) <= 3) {
filtr <- which(AMR_env$MO_lookup$full_first == substr(x_parts[1], 1, 1) &
(AMR_env$MO_lookup$species_first == substr(x_parts[2], 1, 1) |
AMR_env$MO_lookup$subspecies_first == substr(x_parts[2], 1, 1) |
AMR_env$MO_lookup$subspecies_first == substr(x_parts[3], 1, 1)))
} else {
filtr <- which(AMR_env$MO_lookup$full_first == substr(x_parts[1], 1, 1) |
AMR_env$MO_lookup$species_first == substr(x_parts[2], 1, 1) |
AMR_env$MO_lookup$subspecies_first == substr(x_parts[2], 1, 1) |
AMR_env$MO_lookup$subspecies_first == substr(x_parts[3], 1, 1))
}
} else if (length(x_parts) > 3) { } else if (length(x_parts) > 3) {
first_chars <- paste0("(^| )", "[", paste(substr(x_parts, 1, 1), collapse = ""), "]") first_chars <- paste0("(^| )[", paste(substr(x_parts, 1, 1), collapse = ""), "]")
filtr <- which(AMR_env$MO_lookup$full_first %like_case% first_chars) filtr <- which(AMR_env$MO_lookup$full_first %like_case% first_chars)
} else if (nchar(x_out) == 3) {
# no space and 3 characters - probably a code such as SAU or ECO
msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", totitle(substr(x_out, 1, 1)), AMR_env$dots, " ", substr(x_out, 2, 3), AMR_env$dots, "\""))
filtr <- which(AMR_env$MO_lookup$fullname_lower %like_case% paste0("(^| )", substr(x_out, 1, 1), ".* ", substr(x_out, 2, 3)))
} else if (nchar(x_out) == 4) { } else if (nchar(x_out) == 4) {
# no space and 4 characters - probably a code such as STAU or ESCO # no space and 4 characters - probably a code such as STAU or ESCO
msg <- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on ", vector_and(c(substr(x_out, 1, 2), substr(x_out, 3, 4)), sort = FALSE))) msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", totitle(substr(x_out, 1, 2)), AMR_env$dots, " ", substr(x_out, 3, 4), AMR_env$dots, "\""))
filtr <- which(AMR_env$MO_lookup$fullname_lower %like_case% paste0("(^| )", substr(x_out, 1, 2), ".* ", substr(x_out, 3, 4))) filtr <- which(AMR_env$MO_lookup$fullname_lower %like_case% paste0("(^| )", substr(x_out, 1, 2), ".* ", substr(x_out, 3, 4)))
} else if (nchar(x_out) <= 6) { } else if (nchar(x_out) <= 6) {
# no space and 5-6 characters - probably a code such as STAAUR or ESCCOL # no space and 5-6 characters - probably a code such as STAAUR or ESCCOL
first_part <- paste0(substr(x_out, 1, 2), "[a-z]*", substr(x_out, 3, 3)) first_part <- paste0(substr(x_out, 1, 2), "[a-z]*", substr(x_out, 3, 3))
second_part <- substr(x_out, 4, nchar(x_out)) second_part <- substr(x_out, 4, nchar(x_out))
msg <- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on ", vector_and(c(gsub("[a-z]*", "(...)", first_part, fixed = TRUE), second_part), sort = FALSE))) msg <<- c(msg, paste0("Input \"", x_search, "\" was assumed to be a microorganism code - tried to match on \"", gsub("[a-z]*", AMR_env$dots, totitle(first_part), fixed = TRUE), " ", second_part, AMR_env$dots, "\""))
filtr <- which(AMR_env$MO_lookup$fullname_lower %like_case% paste0("(^| )", first_part, ".* ", second_part)) filtr <- which(AMR_env$MO_lookup$fullname_lower %like_case% paste0("(^| )", first_part, ".* ", second_part))
} else { } else {
filtr <- which(AMR_env$MO_lookup$full_first == substr(x_out, 1, 1)) # for genus or species or subspecies
filtr <- which(AMR_env$MO_lookup$full_first == substr(x_parts, 1, 1) |
AMR_env$MO_lookup$species_first == substr(x_parts, 1, 1) |
AMR_env$MO_lookup$subspecies_first == substr(x_parts, 1, 1))
} }
if (length(filtr) == 0) { if (length(filtr) == 0) {
mo_to_search <- AMR_env$MO_lookup$fullname mo_to_search <- AMR_env$MO_lookup$fullname
@@ -314,15 +330,19 @@ as.mo <- function(x,
minimum_matching_score_current <- minimum_matching_score_current / AMR_env$MO_lookup$prevalence[match(mo_to_search, AMR_env$MO_lookup$fullname)] minimum_matching_score_current <- minimum_matching_score_current / AMR_env$MO_lookup$prevalence[match(mo_to_search, AMR_env$MO_lookup$fullname)]
# correct back for kingdom # correct back for kingdom
minimum_matching_score_current <- minimum_matching_score_current / AMR_env$MO_lookup$kingdom_index[match(mo_to_search, AMR_env$MO_lookup$fullname)] minimum_matching_score_current <- minimum_matching_score_current / AMR_env$MO_lookup$kingdom_index[match(mo_to_search, AMR_env$MO_lookup$fullname)]
minimum_matching_score_current <- pmax(minimum_matching_score_current, m)
if (length(x_parts) > 1 && all(m <= 0.55, na.rm = TRUE)) {
# if the highest score is 0.5, we have nothing serious - 0.5 is the lowest for pathogenic group 1
# make everything NA so the results will get removed below
# (we added length(x_parts) > 1 to exclude microbial codes from this rule, such as "STAU")
m[seq_len(length(m))] <- NA_real_
}
} else { } else {
# minimum_matching_score was set, so remove everything below it
m[m < minimum_matching_score] <- NA_real_
minimum_matching_score_current <- minimum_matching_score minimum_matching_score_current <- minimum_matching_score
} }
if (sum(m >= minimum_matching_score_current) > 10) {
# at least 10 are left over, make the ones under `m` NA
m[m < minimum_matching_score_current] <- NA_real_
}
top_hits <- mo_to_search[order(m, decreasing = TRUE, na.last = NA)] # na.last = NA will remove the NAs top_hits <- mo_to_search[order(m, decreasing = TRUE, na.last = NA)] # na.last = NA will remove the NAs
if (length(top_hits) == 0) { if (length(top_hits) == 0) {
warning_("No hits found for \"", x_search, "\" with minimum_matching_score = ", ifelse(is.null(minimum_matching_score), paste0("NULL (=", round(min(minimum_matching_score_current, na.rm = TRUE), 3), ")"), minimum_matching_score), ". Try setting this value lower or even to 0.", call = FALSE) warning_("No hits found for \"", x_search, "\" with minimum_matching_score = ", ifelse(is.null(minimum_matching_score), paste0("NULL (=", round(min(minimum_matching_score_current, na.rm = TRUE), 3), ")"), minimum_matching_score), ". Try setting this value lower or even to 0.", call = FALSE)
@@ -429,9 +449,9 @@ as.mo <- function(x,
if (any(out %in% AMR_env$MO_lookup$mo[match(post_Becker, AMR_env$MO_lookup$fullname)])) { if (any(out %in% AMR_env$MO_lookup$mo[match(post_Becker, AMR_env$MO_lookup$fullname)])) {
if (message_not_thrown_before("as.mo", "becker")) { if (message_not_thrown_before("as.mo", "becker")) {
warning_("in `as.mo()`: Becker ", font_italic("et al."), " (2014, 2019, 2020) does not contain these species named after their publication: ", warning_("in `as.mo()`: Becker ", font_italic("et al."), " (2014, 2019, 2020) does not contain these species named after their publication: ",
vector_and(font_italic(gsub("Staphylococcus", "S.", post_Becker, fixed = TRUE), collapse = NULL), quotes = FALSE), vector_and(font_italic(gsub("Staphylococcus", "S.", post_Becker, fixed = TRUE), collapse = NULL), quotes = FALSE),
". Categorisation to CoNS/CoPS was taken from the original scientific publication(s).", ". Categorisation to CoNS/CoPS was taken from the original scientific publication(s).",
immediate = TRUE, call = FALSE immediate = TRUE, call = FALSE
) )
} }
} }
@@ -471,14 +491,14 @@ as.mo <- function(x,
# All unknowns ---- # All unknowns ----
out[is.na(out) & !is.na(x)] <- "UNKNOWN" out[is.na(out) & !is.na(x)] <- "UNKNOWN"
AMR_env$mo_failures <- unique(x[out == "UNKNOWN" & !x %in% c("UNKNOWN", "con") & !x %like_case% "^[(]unknown [a-z]+[)]$" & !is.na(x)]) AMR_env$mo_failures <- unique(x[out == "UNKNOWN" & !toupper(x) %in% c("UNKNOWN", "CON", "UNK") & !x %like_case% "^[(]unknown [a-z]+[)]$" & !is.na(x)])
if (length(AMR_env$mo_failures) > 0) { if (length(AMR_env$mo_failures) > 0) {
warning_("The following input could not be coerced and was returned as \"UNKNOWN\": ", vector_and(AMR_env$mo_failures, quotes = TRUE), ".\nYou can retrieve this list with `mo_failures()`.", call = FALSE) warning_("The following input could not be coerced and was returned as \"UNKNOWN\": ", vector_and(AMR_env$mo_failures, quotes = TRUE), ".\nYou can retrieve this list with `mo_failures()`.", call = FALSE)
} }
# Return class ---- # Return class ----
set_clean_class(out, set_clean_class(out,
new_class = c("mo", "character") new_class = c("mo", "character")
) )
} }
@@ -547,7 +567,7 @@ mo_cleaning_regex <- function() {
"|", "|",
"([({]|\\[).+([})]|\\])", "([({]|\\[).+([})]|\\])",
"|", "|",
"(^| )(e?spp|e?ssp|e?ss|e?sp|e?subsp|sube?species|biovar|biotype|serovar|serogr.?up|e?species)[.]*( |$|(complex|group)$))" "(^| )(e?spp|e?ssp|e?ss|e?sp|e?subsp|sube?species|biovar|biotype|serovar|var|serogr.?up|e?species|titer|dummy)[.]*|( Ig[ADEGM])( |$))"
) )
} }
@@ -570,7 +590,7 @@ pillar_shaft.mo <- function(x, ...) {
out[x %in% AMR_env$MO_lookup$mo & !x %in% AMR::microorganisms$mo] <- font_blue(out[x %in% AMR_env$MO_lookup$mo & !x %in% AMR::microorganisms$mo], collapse = NULL) out[x %in% AMR_env$MO_lookup$mo & !x %in% AMR::microorganisms$mo] <- font_blue(out[x %in% AMR_env$MO_lookup$mo & !x %in% AMR::microorganisms$mo], collapse = NULL)
df <- tryCatch(get_current_data(arg_name = "x", call = 0), df <- tryCatch(get_current_data(arg_name = "x", call = 0),
error = function(e) NULL error = function(e) NULL
) )
if (!is.null(df)) { if (!is.null(df)) {
mo_cols <- vapply(FUN.VALUE = logical(1), df, is.mo) mo_cols <- vapply(FUN.VALUE = logical(1), df, is.mo)
@@ -580,11 +600,11 @@ pillar_shaft.mo <- function(x, ...) {
all_mos <- c(AMR_env$MO_lookup$mo, NA) all_mos <- c(AMR_env$MO_lookup$mo, NA)
if (!all(x %in% all_mos) || if (!all(x %in% all_mos) ||
(!is.null(df) && !all(unlist(df[, which(mo_cols), drop = FALSE]) %in% all_mos))) { (!is.null(df) && !all(unlist(df[, which(mo_cols), drop = FALSE]) %in% all_mos))) {
# markup old mo codes # markup old mo codes
out[!x %in% all_mos] <- font_italic( out[!x %in% all_mos] <- font_italic(
font_na(x[!x %in% all_mos], font_na(x[!x %in% all_mos],
collapse = NULL collapse = NULL
), ),
collapse = NULL collapse = NULL
) )
@@ -607,8 +627,8 @@ pillar_shaft.mo <- function(x, ...) {
max_char <- 12 max_char <- 12
} }
create_pillar_column(out, create_pillar_column(out,
align = "left", align = "left",
width = max_char + ifelse(any(x %in% c(NA, "UNKNOWN")), 2, 0) width = max_char + ifelse(any(x %in% c(NA, "UNKNOWN")), 2, 0)
) )
} }
@@ -631,21 +651,21 @@ freq.mo <- function(x, ...) {
.add_header = list( .add_header = list(
`Gram-negative` = paste0( `Gram-negative` = paste0(
format(sum(grams == "Gram-negative", na.rm = TRUE), format(sum(grams == "Gram-negative", na.rm = TRUE),
big.mark = " ", big.mark = " ",
decimal.mark = "." decimal.mark = "."
), ),
" (", percentage(sum(grams == "Gram-negative", na.rm = TRUE) / length(grams), " (", percentage(sum(grams == "Gram-negative", na.rm = TRUE) / length(grams),
digits = digits digits = digits
), ),
")" ")"
), ),
`Gram-positive` = paste0( `Gram-positive` = paste0(
format(sum(grams == "Gram-positive", na.rm = TRUE), format(sum(grams == "Gram-positive", na.rm = TRUE),
big.mark = " ", big.mark = " ",
decimal.mark = "." decimal.mark = "."
), ),
" (", percentage(sum(grams == "Gram-positive", na.rm = TRUE) / length(grams), " (", percentage(sum(grams == "Gram-positive", na.rm = TRUE) / length(grams),
digits = digits digits = digits
), ),
")" ")"
), ),
@@ -799,36 +819,40 @@ rep.mo <- function(x, ...) {
#' @export #' @export
#' @noRd #' @noRd
print.mo_uncertainties <- function(x, n = 10, ...) { print.mo_uncertainties <- function(x, n = 10, ...) {
more_than_50 <- FALSE
if (NROW(x) == 0) { if (NROW(x) == 0) {
cat(word_wrap("No uncertainties to show. Only uncertainties of the last call of `as.mo()` or any `mo_*()` function are stored.\n\n", add_fn = font_blue)) cat(word_wrap("No uncertainties to show. Only uncertainties of the last call to `as.mo()` or any `mo_*()` function are stored.\n\n", add_fn = font_blue))
return(invisible(NULL)) return(invisible(NULL))
} else if (NROW(x) > 50) {
more_than_50 <- TRUE
x <- x[1:50, , drop = FALSE]
} }
cat(word_wrap("Matching scores are based on the resemblance between the input and the full taxonomic name, and the pathogenicity in humans. See `?mo_matching_score`.\n\n", add_fn = font_blue)) cat(word_wrap("Matching scores are based on the resemblance between the input and the full taxonomic name, and the pathogenicity in humans. See `?mo_matching_score`.\n\n", add_fn = font_blue))
add_MO_lookup_to_AMR_env() add_MO_lookup_to_AMR_env()
col_red <- function(x) font_rose_bg(font_black(x, collapse = NULL), collapse = NULL) col_red <- function(x) font_rose_bg(font_black(x, collapse = NULL, adapt = FALSE), collapse = NULL)
col_orange <- function(x) font_orange_bg(font_black(x, collapse = NULL), collapse = NULL) col_orange <- function(x) font_orange_bg(font_black(x, collapse = NULL, adapt = FALSE), collapse = NULL)
col_yellow <- function(x) font_yellow_bg(font_black(x, collapse = NULL), collapse = NULL) col_yellow <- function(x) font_yellow_bg(font_black(x, collapse = NULL, adapt = FALSE), collapse = NULL)
col_green <- function(x) font_green_bg(font_black(x, collapse = NULL), collapse = NULL) col_green <- function(x) font_green_bg(font_black(x, collapse = NULL, adapt = FALSE), collapse = NULL)
if (has_colour()) { if (has_colour()) {
cat(word_wrap("Colour keys: ", cat(word_wrap("Colour keys: ",
col_red(" 0.000-0.499 "), col_red(" 0.000-0.549 "),
col_orange(" 0.500-0.599 "), col_orange(" 0.550-0.649 "),
col_yellow(" 0.600-0.699 "), col_yellow(" 0.650-0.749 "),
col_green(" 0.700-1.000"), col_green(" 0.750-1.000"),
add_fn = font_blue add_fn = font_blue
), font_green_bg(" "), "\n", sep = "") ), font_green_bg(" "), "\n", sep = "")
} }
score_set_colour <- function(text, scores) { score_set_colour <- function(text, scores) {
# set colours to scores # set colours to scores
text[scores >= 0.7] <- col_green(text[scores >= 0.7]) text[scores >= 0.75] <- col_green(text[scores >= 0.75])
text[scores >= 0.6 & scores < 0.7] <- col_yellow(text[scores >= 0.6 & scores < 0.7]) text[scores >= 0.65 & scores < 0.75] <- col_yellow(text[scores >= 0.65 & scores < 0.75])
text[scores >= 0.5 & scores < 0.6] <- col_orange(text[scores >= 0.5 & scores < 0.6]) text[scores >= 0.55 & scores < 0.65] <- col_orange(text[scores >= 0.55 & scores < 0.65])
text[scores < 0.5] <- col_red(text[scores < 0.5]) text[scores < 0.55] <- col_red(text[scores < 0.55])
text text
} }
@@ -876,30 +900,28 @@ print.mo_uncertainties <- function(x, n = 10, ...) {
) )
score_formatted <- trimws(formatC(round(score, 3), format = "f", digits = 3)) score_formatted <- trimws(formatC(round(score, 3), format = "f", digits = 3))
txt <- paste(txt, txt <- paste(txt,
paste0( paste0(
paste0( paste0(
"", strrep(font_grey("-"), times = getOption("width", 100)), "\n", "", strrep(font_grey("-"), times = getOption("width", 100)), "\n",
'"', x[i, ]$original_input, '"', '"', x[i, ]$original_input, '"',
" -> ", " -> ",
paste0( paste0(
font_bold(italicise(x[i, ]$fullname)), font_bold(italicise(x[i, ]$fullname)),
" (", x[i, ]$mo, ", ", score_set_colour(score_formatted, score), ")" " (", x[i, ]$mo, ", ", score_set_colour(score_formatted, score), ")"
) )
), ),
collapse = "\n" collapse = "\n"
), ),
# Add "Based on {input}" text if it differs from the original input # Add note if result was coerced to accepted taxonomic name
ifelse(x[i, ]$original_input != x[i, ]$input, paste0(strrep(" ", nchar(x[i, ]$original_input) + 6), "Based on input \"", x[i, ]$input, "\""), ""), ifelse(x[i, ]$keep_synonyms == FALSE & x[i, ]$mo %in% AMR_env$MO_lookup$mo[which(AMR_env$MO_lookup$status == "synonym")],
# Add note if result was coerced to accepted taxonomic name paste0(
ifelse(x[i, ]$keep_synonyms == FALSE & x[i, ]$mo %in% AMR_env$MO_lookup$mo[which(AMR_env$MO_lookup$status == "synonym")], strrep(" ", nchar(x[i, ]$original_input) + 6),
paste0( font_red(paste0("This old taxonomic name was converted to ", font_italic(AMR_env$MO_lookup$fullname[match(synonym_mo_to_accepted_mo(x[i, ]$mo), AMR_env$MO_lookup$mo)], collapse = NULL), " (", synonym_mo_to_accepted_mo(x[i, ]$mo), ")."), collapse = NULL)
strrep(" ", nchar(x[i, ]$original_input) + 6), ),
font_red(paste0("This old taxonomic name was converted to ", font_italic(AMR_env$MO_lookup$fullname[match(synonym_mo_to_accepted_mo(x[i, ]$mo), AMR_env$MO_lookup$mo)], collapse = NULL), " (", synonym_mo_to_accepted_mo(x[i, ]$mo), ")."), collapse = NULL) ""
), ),
"" candidates,
), sep = "\n"
candidates,
sep = "\n"
) )
txt <- gsub("[\n]+", "\n", txt) txt <- gsub("[\n]+", "\n", txt)
# remove first and last break # remove first and last break
@@ -911,6 +933,9 @@ print.mo_uncertainties <- function(x, n = 10, ...) {
if (isTRUE(any_maxed_out)) { if (isTRUE(any_maxed_out)) {
cat(font_blue(word_wrap("\nOnly the first ", n, " other matches of each record are shown. Run `print(mo_uncertainties(), n = ...)` to view more entries, or save `mo_uncertainties()` to an object."))) cat(font_blue(word_wrap("\nOnly the first ", n, " other matches of each record are shown. Run `print(mo_uncertainties(), n = ...)` to view more entries, or save `mo_uncertainties()` to an object.")))
} }
if (isTRUE(more_than_50)) {
cat(font_blue(word_wrap("\nOnly the first 50 uncertainties are shown. Run `View(mo_uncertainties())` to view all entries, or save `mo_uncertainties()` to an object.")))
}
} }
#' @method print mo_renamed #' @method print mo_renamed
@@ -932,8 +957,8 @@ print.mo_renamed <- function(x, extra_txt = "", n = 25, ...) {
message_( message_(
"The following microorganism", ifelse(NROW(x) > 1, "s were", " was"), " taxonomically renamed", extra_txt, ":\n", "The following microorganism", ifelse(NROW(x) > 1, "s were", " was"), " taxonomically renamed", extra_txt, ":\n",
paste0(" ", AMR_env$bullet_icon, " ", font_italic(x$old[rows], collapse = NULL), x$ref_old[rows], paste0(" ", AMR_env$bullet_icon, " ", font_italic(x$old[rows], collapse = NULL), x$ref_old[rows],
" -> ", font_italic(x$new[rows], collapse = NULL), x$ref_new[rows], " -> ", font_italic(x$new[rows], collapse = NULL), x$ref_new[rows],
collapse = "\n" collapse = "\n"
), ),
ifelse(NROW(x) > n, paste0("\n\nOnly the first ", n, " (out of ", NROW(x), ") are shown. Run `print(mo_renamed(), n = ...)` to view more entries (might be slow), or save `mo_renamed()` to an object."), "") ifelse(NROW(x) > n, paste0("\n\nOnly the first ", n, " (out of ", NROW(x), ") are shown. Run `print(mo_renamed(), n = ...)` to view more entries (might be slow), or save `mo_renamed()` to an object."), "")
) )
@@ -947,26 +972,26 @@ convert_colloquial_input <- function(x) {
out <- rep(NA_character_, length(x)) out <- rep(NA_character_, length(x))
# Streptococci, like GBS = Group B Streptococci (B_STRPT_GRPB) # Streptococci, like GBS = Group B Streptococci (B_STRPT_GRPB)
out[x %like_case% "^g[abcdfghkl]s$"] <- gsub("g([abcdfghkl])s", out[x %like_case% "^g[abcdefghijkl]s$"] <- gsub("g([abcdefghijkl])s",
"B_STRPT_GRP\\U\\1", "B_STRPT_GRP\\U\\1",
x[x %like_case% "^g[abcdfghkl]s$"], x[x %like_case% "^g[abcdefghijkl]s$"],
perl = TRUE perl = TRUE
) )
# Streptococci in different languages, like "estreptococos grupo B" # Streptococci in different languages, like "estreptococos grupo B"
out[x %like_case% "strepto[ck]o[ck].* [abcdfghkl]$"] <- gsub(".*e?strepto[ck]o[ck].* ([abcdfghkl])$", out[x %like_case% "strepto[ck]o[ck][a-zA-Z]* [abcdefghijkl]$"] <- gsub(".*e?strepto[ck]o[ck].* ([abcdefghijkl])$",
"B_STRPT_GRP\\U\\1", "B_STRPT_GRP\\U\\1",
x[x %like_case% "strepto[ck]o[ck].* [abcdfghkl]$"], x[x %like_case% "strepto[ck]o[ck][a-zA-Z]* [abcdefghijkl]$"],
perl = TRUE perl = TRUE
) )
out[x %like_case% "strep[a-z]* group [abcdfghkl]$"] <- gsub(".* ([abcdfghkl])$", out[x %like_case% "strep[a-z]* group [abcdefghijkl]$"] <- gsub(".* ([abcdefghijkl])$",
"B_STRPT_GRP\\U\\1", "B_STRPT_GRP\\U\\1",
x[x %like_case% "strep[a-z]* group [abcdfghkl]$"], x[x %like_case% "strep[a-z]* group [abcdefghijkl]$"],
perl = TRUE perl = TRUE
) )
out[x %like_case% "group [abcdfghkl] strepto[ck]o[ck]"] <- gsub(".*group ([abcdfghkl]) strepto[ck]o[ck].*", out[x %like_case% "group [abcdefghijkl] strepto[ck]o[ck]"] <- gsub(".*group ([abcdefghijkl]) strepto[ck]o[ck].*",
"B_STRPT_GRP\\U\\1", "B_STRPT_GRP\\U\\1",
x[x %like_case% "group [abcdfghkl] strepto[ck]o[ck]"], x[x %like_case% "group [abcdefghijkl] strepto[ck]o[ck]"],
perl = TRUE perl = TRUE
) )
out[x %like_case% "ha?emoly.*strep"] <- "B_STRPT_HAEM" out[x %like_case% "ha?emoly.*strep"] <- "B_STRPT_HAEM"
out[x %like_case% "(strepto.* mil+er+i|^mgs[^a-z]*$)"] <- "B_STRPT_MILL" out[x %like_case% "(strepto.* mil+er+i|^mgs[^a-z]*$)"] <- "B_STRPT_MILL"
@@ -975,15 +1000,15 @@ convert_colloquial_input <- function(x) {
out[x %like_case% "(viridans.* (strepto|^s).*|^vgs[^a-z]*$)"] <- "B_STRPT_VIRI" out[x %like_case% "(viridans.* (strepto|^s).*|^vgs[^a-z]*$)"] <- "B_STRPT_VIRI"
# Salmonella in different languages, like "Salmonella grupo B" # Salmonella in different languages, like "Salmonella grupo B"
out[x %like_case% "salmonella.* [abcd]$"] <- gsub(".*salmonella.* ([abcd])$", out[x %like_case% "salmonella.* [abcdefgh]$"] <- gsub(".*salmonella.* ([abcdefgh])$",
"B_SLMNL_GRP\\U\\1", "B_SLMNL_GRP\\U\\1",
x[x %like_case% "salmonella.* [abcd]$"], x[x %like_case% "salmonella.* [abcdefgh]$"],
perl = TRUE perl = TRUE
) )
out[x %like_case% "group [abcd] salmonella"] <- gsub(".*group ([abcd]) salmonella*", out[x %like_case% "group [abcdefgh] salmonella"] <- gsub(".*group ([abcdefgh]) salmonella*",
"B_SLMNL_GRP\\U\\1", "B_SLMNL_GRP\\U\\1",
x[x %like_case% "group [abcd] salmonella"], x[x %like_case% "group [abcdefgh] salmonella"],
perl = TRUE perl = TRUE
) )
# CoNS/CoPS in different languages (support for German, Dutch, Spanish, Portuguese) # CoNS/CoPS in different languages (support for German, Dutch, Spanish, Portuguese)
@@ -995,6 +1020,8 @@ convert_colloquial_input <- function(x) {
out[x %like_case% "( |^)gram[-]( |$)"] <- "B_GRAMN" out[x %like_case% "( |^)gram[-]( |$)"] <- "B_GRAMN"
out[x %like_case% "gram[ -]?pos.*"] <- "B_GRAMP" out[x %like_case% "gram[ -]?pos.*"] <- "B_GRAMP"
out[x %like_case% "( |^)gram[+]( |$)"] <- "B_GRAMP" out[x %like_case% "( |^)gram[+]( |$)"] <- "B_GRAMP"
out[x %like_case% "anaerob[a-z]+ .*gram[ -]?neg.*"] <- "B_ANAER-NEG"
out[x %like_case% "anaerob[a-z]+ .*gram[ -]?pos.*"] <- "B_ANAER-POS"
out[is.na(out) & x %like_case% "anaerob[a-z]+ (micro)?.*organism"] <- "B_ANAER" out[is.na(out) & x %like_case% "anaerob[a-z]+ (micro)?.*organism"] <- "B_ANAER"
# yeasts and fungi # yeasts and fungi
@@ -1006,7 +1033,7 @@ convert_colloquial_input <- function(x) {
out[x %like_case% "gono[ck]o[ck]"] <- "B_NESSR_GNRR" out[x %like_case% "gono[ck]o[ck]"] <- "B_NESSR_GNRR"
out[x %like_case% "pneumo[ck]o[ck]"] <- "B_STRPT_PNMN" out[x %like_case% "pneumo[ck]o[ck]"] <- "B_STRPT_PNMN"
# unexisting names (xxx and con are WHONET codes) # unexisting names (con is the WHONET code for contamination)
out[x %in% c("con", "other", "none", "unknown") | x %like_case% "virus"] <- "UNKNOWN" out[x %in% c("con", "other", "none", "unknown") | x %like_case% "virus"] <- "UNKNOWN"
# WHONET has a lot of E. coli and Vibrio cholerae names # WHONET has a lot of E. coli and Vibrio cholerae names
@@ -1017,18 +1044,23 @@ convert_colloquial_input <- function(x) {
} }
italicise <- function(x) { italicise <- function(x) {
if (!has_colour()) {
return(x)
}
out <- font_italic(x, collapse = NULL) out <- font_italic(x, collapse = NULL)
# city-like serovars of Salmonella (start with a capital)
out[x %like_case% "Salmonella [A-Z]"] <- paste( out[x %like_case% "Salmonella [A-Z]"] <- paste(
font_italic("Salmonella"), font_italic("Salmonella"),
gsub("Salmonella ", "", x[x %like_case% "Salmonella [A-Z]"]) gsub("Salmonella ", "", x[x %like_case% "Salmonella [A-Z]"])
) )
# streptococcal groups
out[x %like_case% "Streptococcus [A-Z]"] <- paste( out[x %like_case% "Streptococcus [A-Z]"] <- paste(
font_italic("Streptococcus"), font_italic("Streptococcus"),
gsub("Streptococcus ", "", x[x %like_case% "Streptococcus [A-Z]"]) gsub("Streptococcus ", "", x[x %like_case% "Streptococcus [A-Z]"])
) )
if (has_colour()) { # be sure not to make these italic
out <- gsub("(Group|group|Complex|complex)(\033\\[23m)?", "\033[23m\\1", out, perl = TRUE) out <- gsub("([ -]*)(Group|group|Complex|complex)(\033\\[23m)?", "\033[23m\\1\\2", out, perl = TRUE)
} out <- gsub("(\033\\[3m)?(Beta[-]haemolytic|Coagulase[-](postive|negative)) ", "\\2 \033[3m", out, perl = TRUE)
out out
} }
@@ -1099,7 +1131,7 @@ replace_old_mo_codes <- function(x, property) {
name <- gsub(" .*", " ", name, fixed = TRUE) name <- gsub(" .*", " ", name, fixed = TRUE)
name <- paste0("^", name) name <- paste0("^", name)
results <- AMR_env$MO_lookup$mo[AMR_env$MO_lookup$kingdom %like_case% kingdom & results <- AMR_env$MO_lookup$mo[AMR_env$MO_lookup$kingdom %like_case% kingdom &
AMR_env$MO_lookup$fullname_lower %like_case% name] AMR_env$MO_lookup$fullname_lower %like_case% name]
if (length(results) > 1) { if (length(results) > 1) {
all_direct_matches <<- FALSE all_direct_matches <<- FALSE
} }
@@ -1136,8 +1168,8 @@ replace_old_mo_codes <- function(x, property) {
"to ", ifelse(n_solved == 1, "a ", ""), "to ", ifelse(n_solved == 1, "a ", ""),
"currently used MO code", ifelse(n_solved == 1, "", "s"), "currently used MO code", ifelse(n_solved == 1, "", "s"),
ifelse(n_unsolved > 0, ifelse(n_unsolved > 0,
paste0(" and ", n_unsolved, " old MO code", ifelse(n_unsolved == 1, "", "s"), " could not be updated."), paste0(" and ", n_unsolved, " old MO code", ifelse(n_unsolved == 1, "", "s"), " could not be updated."),
"." "."
) )
) )
} }
@@ -1180,7 +1212,7 @@ repair_reference_df <- function(reference_df) {
reference_df[, "mo"] <- as.character(reference_df[, "mo", drop = TRUE]) reference_df[, "mo"] <- as.character(reference_df[, "mo", drop = TRUE])
# some MO codes might be old # some MO codes might be old
reference_df[, "mo"] <- as.mo(reference_df[, "mo", drop = TRUE]) reference_df[, "mo"] <- as.mo(reference_df[, "mo", drop = TRUE], reference_df = NULL)
reference_df reference_df
} }
@@ -1202,8 +1234,8 @@ synonym_mo_to_accepted_mo <- function(x, fill_in_accepted = FALSE) {
x_lpsn[!x_lpsn %in% AMR_env$MO_lookup$lpsn] <- NA x_lpsn[!x_lpsn %in% AMR_env$MO_lookup$lpsn] <- NA
out <- ifelse(is.na(x_lpsn), out <- ifelse(is.na(x_lpsn),
AMR_env$MO_lookup$mo[match(x_gbif, AMR_env$MO_lookup$gbif)], AMR_env$MO_lookup$mo[match(x_gbif, AMR_env$MO_lookup$gbif)],
AMR_env$MO_lookup$mo[match(x_lpsn, AMR_env$MO_lookup$lpsn)] AMR_env$MO_lookup$mo[match(x_lpsn, AMR_env$MO_lookup$lpsn)]
) )
if (isTRUE(fill_in_accepted)) { if (isTRUE(fill_in_accepted)) {
x_accepted <- which(AMR_env$MO_lookup$status[match(x, AMR_env$MO_lookup$mo)] == "accepted") x_accepted <- which(AMR_env$MO_lookup$status[match(x, AMR_env$MO_lookup$mo)] == "accepted")

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -50,7 +50,7 @@
#' * \eqn{l_n} is the length of \eqn{n}; #' * \eqn{l_n} is the length of \eqn{n};
#' * \eqn{lev} is the [Levenshtein distance function](https://en.wikipedia.org/wiki/Levenshtein_distance) (counting any insertion as 1, and any deletion or substitution as 2) that is needed to change \eqn{x} into \eqn{n}; #' * \eqn{lev} is the [Levenshtein distance function](https://en.wikipedia.org/wiki/Levenshtein_distance) (counting any insertion as 1, and any deletion or substitution as 2) that is needed to change \eqn{x} into \eqn{n};
#' * \eqn{p_n} is the human pathogenic prevalence group of \eqn{n}, as described below; #' * \eqn{p_n} is the human pathogenic prevalence group of \eqn{n}, as described below;
#' * \eqn{k_n} is the taxonomic kingdom of \eqn{n}, set as Bacteria = 1, Fungi = 2, Protozoa = 3, Archaea = 4, others = 5. #' * \eqn{k_n} is the taxonomic kingdom of \eqn{n}, set as Bacteria = 1, Fungi = 1.25, Protozoa = 1.5, Archaea = 2, others = 3.
#' #'
#' The grouping into human pathogenic prevalence \eqn{p} is based on recent work from Bartlett *et al.* (2022, \doi{10.1099/mic.0.001269}) who extensively studied medical-scientific literature to categorise all bacterial species into these groups: #' The grouping into human pathogenic prevalence \eqn{p} is based on recent work from Bartlett *et al.* (2022, \doi{10.1099/mic.0.001269}) who extensively studied medical-scientific literature to categorise all bacterial species into these groups:
#' #'
@@ -62,7 +62,7 @@
#' - Any genus present in the **established** list also has `prevalence = 1.0` in the [microorganisms] data set; #' - Any genus present in the **established** list also has `prevalence = 1.0` in the [microorganisms] data set;
#' - Any other genus present in the **putative** list has `prevalence = 1.25` in the [microorganisms] data set; #' - Any other genus present in the **putative** list has `prevalence = 1.25` in the [microorganisms] data set;
#' - Any other species or subspecies of which the genus is present in the two aforementioned groups, has `prevalence = 1.5` in the [microorganisms] data set; #' - Any other species or subspecies of which the genus is present in the two aforementioned groups, has `prevalence = 1.5` in the [microorganisms] data set;
#' - Any *non-bacterial* genus, species or subspecies of which the genus is present in the following list, has `prevalence = 1.5` in the [microorganisms] data set: `r vector_or(MO_PREVALENT_GENERA, quotes = "*")`; #' - Any *non-bacterial* genus, species or subspecies of which the genus is present in the following list, has `prevalence = 1.25` in the [microorganisms] data set: `r vector_or(MO_PREVALENT_GENERA, quotes = "*")`;
#' - All other records have `prevalence = 2.0` in the [microorganisms] data set. #' - All other records have `prevalence = 2.0` in the [microorganisms] data set.
#' #'
#' When calculating the matching score, all characters in \eqn{x} and \eqn{n} are ignored that are other than A-Z, a-z, 0-9, spaces and parentheses. #' When calculating the matching score, all characters in \eqn{x} and \eqn{n} are ignored that are other than A-Z, a-z, 0-9, spaces and parentheses.

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -54,6 +54,8 @@
#' #'
#' Determination of intrinsic resistance ([mo_is_intrinsic_resistant()]) will be based on the [intrinsic_resistant] data set, which is based on `r format_eucast_version_nr(3.3)`. The [mo_is_intrinsic_resistant()] function can be vectorised over both argument `x` (input for microorganisms) and `ab` (input for antibiotics). #' Determination of intrinsic resistance ([mo_is_intrinsic_resistant()]) will be based on the [intrinsic_resistant] data set, which is based on `r format_eucast_version_nr(3.3)`. The [mo_is_intrinsic_resistant()] function can be vectorised over both argument `x` (input for microorganisms) and `ab` (input for antibiotics).
#' #'
#' Determination of bacterial oxygen tolerance ([mo_oxygen_tolerance()]) will be based on BacDive, see *Source*. The function [mo_is_anaerobic()] only returns `TRUE` if the oxygen tolerance is `"anaerobe"`, indicting an obligate anaerobic species or genus. It always returns `FALSE` for species outside the taxonomic kingdom of Bacteria.
#'
#' The function [mo_url()] will return the direct URL to the online database entry, which also shows the scientific reference of the concerned species. #' The function [mo_url()] will return the direct URL to the online database entry, which also shows the scientific reference of the concerned species.
#' #'
#' SNOMED codes ([mo_snomed()]) are from the version of `r documentation_date(TAXONOMY_VERSION$SNOMED$accessed_date)`. See *Source* and the [microorganisms] data set for more info. #' SNOMED codes ([mo_snomed()]) are from the version of `r documentation_date(TAXONOMY_VERSION$SNOMED$accessed_date)`. See *Source* and the [microorganisms] data set for more info.
@@ -480,7 +482,7 @@ mo_gramstain <- function(x, language = get_AMR_locale(), keep_synonyms = getOpti
# but class Negativicutes (of phylum Bacillota) are Gram-negative! # but class Negativicutes (of phylum Bacillota) are Gram-negative!
mo_class(x.mo, language = NULL, keep_synonyms = keep_synonyms) != "Negativicutes") mo_class(x.mo, language = NULL, keep_synonyms = keep_synonyms) != "Negativicutes")
# and of course our own ID for Gram-positives # and of course our own ID for Gram-positives
| x.mo == "B_GRAMP"] <- "Gram-positive" | x.mo %in% c("B_GRAMP", "B_ANAER-POS")] <- "Gram-positive"
load_mo_uncertainties(metadata) load_mo_uncertainties(metadata)
translate_into_language(x, language = language, only_unknown = FALSE) translate_into_language(x, language = language, only_unknown = FALSE)
@@ -589,6 +591,40 @@ mo_is_intrinsic_resistant <- function(x, ab, language = get_AMR_locale(), keep_s
paste(x, ab) %in% AMR_env$intrinsic_resistant paste(x, ab) %in% AMR_env$intrinsic_resistant
} }
#' @rdname mo_property
#' @export
mo_oxygen_tolerance <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) {
# this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_oxygen_tolerance")
}
meet_criteria(x, allow_NA = TRUE)
language <- validate_language(language)
meet_criteria(keep_synonyms, allow_class = "logical", has_length = 1)
mo_validate(x = x, property = "oxygen_tolerance", language = language, keep_synonyms = keep_synonyms, ...)
}
#' @rdname mo_property
#' @export
mo_is_anaerobic <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
if (missing(x)) {
# this tries to find the data and an 'mo' column
x <- find_mo_col(fn = "mo_is_anaerobic")
}
meet_criteria(x, allow_NA = TRUE)
language <- validate_language(language)
meet_criteria(keep_synonyms, allow_class = "logical", has_length = 1)
x.mo <- as.mo(x, language = language, keep_synonyms = keep_synonyms, ...)
metadata <- get_mo_uncertainties()
oxygen <- mo_oxygen_tolerance(x.mo, language = NULL, keep_synonyms = keep_synonyms)
load_mo_uncertainties(metadata)
out <- oxygen == "anaerobe" & !is.na(oxygen)
out[x.mo %in% c(NA_character_, "UNKNOWN")] <- NA
out
}
#' @rdname mo_property #' @rdname mo_property
#' @export #' @export
mo_snomed <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) { mo_snomed <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("AMR_keep_synonyms", FALSE), ...) {
@@ -791,9 +827,12 @@ mo_info <- function(x, language = get_AMR_locale(), keep_synonyms = getOption("A
status = mo_status(y, language = language, keep_synonyms = keep_synonyms), status = mo_status(y, language = language, keep_synonyms = keep_synonyms),
synonyms = mo_synonyms(y, keep_synonyms = keep_synonyms), synonyms = mo_synonyms(y, keep_synonyms = keep_synonyms),
gramstain = mo_gramstain(y, language = language, keep_synonyms = keep_synonyms), gramstain = mo_gramstain(y, language = language, keep_synonyms = keep_synonyms),
oxygen_tolerance = mo_oxygen_tolerance(y, language = language, keep_synonyms = keep_synonyms),
url = unname(mo_url(y, open = FALSE, keep_synonyms = keep_synonyms)), url = unname(mo_url(y, open = FALSE, keep_synonyms = keep_synonyms)),
ref = mo_ref(y, keep_synonyms = keep_synonyms), ref = mo_ref(y, keep_synonyms = keep_synonyms),
snomed = unlist(mo_snomed(y, keep_synonyms = keep_synonyms)) snomed = unlist(mo_snomed(y, keep_synonyms = keep_synonyms)),
lpsn = mo_lpsn(y, language = language, keep_synonyms = keep_synonyms),
gbif = mo_gbif(y, language = language, keep_synonyms = keep_synonyms)
) )
) )
}) })

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -94,12 +94,13 @@ random_sir <- function(size = NULL, prob_SIR = c(0.33, 0.33, 0.33), ...) {
sample(as.sir(c("S", "I", "R")), size = size, replace = TRUE, prob = prob_SIR) sample(as.sir(c("S", "I", "R")), size = size, replace = TRUE, prob = prob_SIR)
} }
random_exec <- function(type, size, mo = NULL, ab = NULL) { random_exec <- function(method_type, size, mo = NULL, ab = NULL) {
df <- AMR::clinical_breakpoints %pm>% df <- AMR::clinical_breakpoints %pm>%
pm_filter(guideline %like% "EUCAST") %pm>% pm_filter(guideline %like% "EUCAST") %pm>%
pm_arrange(pm_desc(guideline)) %pm>% pm_arrange(pm_desc(guideline)) %pm>%
subset(guideline == max(guideline) & subset(guideline == max(guideline) &
method == type) method == method_type &
type == "human")
if (!is.null(mo)) { if (!is.null(mo)) {
mo_coerced <- as.mo(mo) mo_coerced <- as.mo(mo)
@@ -114,7 +115,7 @@ random_exec <- function(type, size, mo = NULL, ab = NULL) {
if (nrow(df_new) > 0) { if (nrow(df_new) > 0) {
df <- df_new df <- df_new
} else { } else {
warning_("in `random_", tolower(type), "()`: no rows found that match mo '", mo, "', ignoring argument `mo`") warning_("in `random_", tolower(method_type), "()`: no rows found that match mo '", mo, "', ignoring argument `mo`")
} }
} }
@@ -125,22 +126,22 @@ random_exec <- function(type, size, mo = NULL, ab = NULL) {
if (nrow(df_new) > 0) { if (nrow(df_new) > 0) {
df <- df_new df <- df_new
} else { } else {
warning_("in `random_", tolower(type), "()`: no rows found that match ab '", ab, "', ignoring argument `ab`") warning_("in `random_", tolower(method_type), "()`: no rows found that match ab '", ab, "' (", ab_name(ab_coerced, tolower = TRUE, language = NULL), "), ignoring argument `ab`")
} }
} }
if (type == "MIC") { if (method_type == "MIC") {
# set range # set range
mic_range <- c(0.001, 0.002, 0.005, 0.010, 0.025, 0.0625, 0.125, 0.250, 0.5, 1, 2, 4, 8, 16, 32, 64, 128, 256) mic_range <- c(0.001, 0.002, 0.005, 0.010, 0.025, 0.0625, 0.125, 0.250, 0.5, 1, 2, 4, 8, 16, 32, 64, 128, 256)
# get highest/lowest +/- random 1 to 3 higher factors of two # get highest/lowest +/- random 1 to 3 higher factors of two
max_range <- mic_range[min( max_range <- mic_range[min(
length(mic_range), length(mic_range),
which(mic_range == max(df$breakpoint_R)) + sample(c(1:3), 1) which(mic_range == max(df$breakpoint_R, na.rm = TRUE)) + sample(c(1:3), 1)
)] )]
min_range <- mic_range[max( min_range <- mic_range[max(
1, 1,
which(mic_range == min(df$breakpoint_S)) - sample(c(1:3), 1) which(mic_range == min(df$breakpoint_S, na.rm = TRUE)) - sample(c(1:3), 1)
)] )]
mic_range_new <- mic_range[mic_range <= max_range & mic_range >= min_range] mic_range_new <- mic_range[mic_range <= max_range & mic_range >= min_range]
@@ -156,10 +157,10 @@ random_exec <- function(type, size, mo = NULL, ab = NULL) {
out[out == max(out)] <- paste0(">=", out[out == max(out)]) out[out == max(out)] <- paste0(">=", out[out == max(out)])
} }
return(out) return(out)
} else if (type == "DISK") { } else if (method_type == "DISK") {
set_range <- seq( set_range <- seq(
from = as.integer(min(df$breakpoint_R) / 1.25), from = as.integer(min(df$breakpoint_R, na.rm = TRUE) / 1.25),
to = as.integer(max(df$breakpoint_S) * 1.25), to = as.integer(max(df$breakpoint_S, na.rm = TRUE) * 1.25),
by = 1 by = 1
) )
out <- sample(set_range, size = size, replace = TRUE) out <- sample(set_range, size = size, replace = TRUE)

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

117
R/sir.R
View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -31,6 +31,8 @@
#' #'
#' @description Interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI, or clean up existing SIR values. This transforms the input to a new class [`sir`], which is an ordered [factor] with levels `S < I < R`. #' @description Interpret minimum inhibitory concentration (MIC) values and disk diffusion diameters according to EUCAST or CLSI, or clean up existing SIR values. This transforms the input to a new class [`sir`], which is an ordered [factor] with levels `S < I < R`.
#' #'
#' Currently available **breakpoint guidelines** are EUCAST `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "EUCAST")$guideline)))` and CLSI `r min(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI")$guideline)))`-`r max(as.integer(gsub("[^0-9]", "", subset(AMR::clinical_breakpoints, guideline %like% "CLSI")$guideline)))`, and available **breakpoint types** are `r vector_and(clinical_breakpoints$type)`.
#'
#' All breakpoints used for interpretation are publicly available in the [clinical_breakpoints] data set. #' All breakpoints used for interpretation are publicly available in the [clinical_breakpoints] data set.
#' @rdname as.sir #' @rdname as.sir
#' @param x vector of values (for class [`mic`]: MIC values in mg/L, for class [`disk`]: a disk diffusion radius in millimetres) #' @param x vector of values (for class [`mic`]: MIC values in mg/L, for class [`disk`]: a disk diffusion radius in millimetres)
@@ -43,10 +45,13 @@
#' @param add_intrinsic_resistance *(only useful when using a EUCAST guideline)* a [logical] to indicate whether intrinsic antibiotic resistance must also be considered for applicable bug-drug combinations, meaning that e.g. ampicillin will always return "R" in *Klebsiella* species. Determination is based on the [intrinsic_resistant] data set, that itself is based on `r format_eucast_version_nr(3.3)`. #' @param add_intrinsic_resistance *(only useful when using a EUCAST guideline)* a [logical] to indicate whether intrinsic antibiotic resistance must also be considered for applicable bug-drug combinations, meaning that e.g. ampicillin will always return "R" in *Klebsiella* species. Determination is based on the [intrinsic_resistant] data set, that itself is based on `r format_eucast_version_nr(3.3)`.
#' @param include_screening a [logical] to indicate that clinical breakpoints for screening are allowed - the default is `FALSE`. Can also be set with the [package option][AMR-options] [`AMR_include_screening`][AMR-options]. #' @param include_screening a [logical] to indicate that clinical breakpoints for screening are allowed - the default is `FALSE`. Can also be set with the [package option][AMR-options] [`AMR_include_screening`][AMR-options].
#' @param include_PKPD a [logical] to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is `TRUE`. Can also be set with the [package option][AMR-options] [`AMR_include_PKPD`][AMR-options]. #' @param include_PKPD a [logical] to indicate that PK/PD clinical breakpoints must be applied as a last resort - the default is `TRUE`. Can also be set with the [package option][AMR-options] [`AMR_include_PKPD`][AMR-options].
#' @param breakpoint_type the type of breakpoints to use, either `r vector_or(clinical_breakpoints$type)`. ECOFF stands for Epidemiological Cut-Off values. The default is `"human"`, which can also be set with the [package option][AMR-options] [`AMR_breakpoint_type`][AMR-options].
#' @param reference_data a [data.frame] to be used for interpretation, which defaults to the [clinical_breakpoints] data set. Changing this argument allows for using own interpretation guidelines. This argument must contain a data set that is equal in structure to the [clinical_breakpoints] data set (same column names and column types). Please note that the `guideline` argument will be ignored when `reference_data` is manually set. #' @param reference_data a [data.frame] to be used for interpretation, which defaults to the [clinical_breakpoints] data set. Changing this argument allows for using own interpretation guidelines. This argument must contain a data set that is equal in structure to the [clinical_breakpoints] data set (same column names and column types). Please note that the `guideline` argument will be ignored when `reference_data` is manually set.
#' @param threshold maximum fraction of invalid antimicrobial interpretations of `x`, see *Examples* #' @param threshold maximum fraction of invalid antimicrobial interpretations of `x`, see *Examples*
#' @param ... for using on a [data.frame]: names of columns to apply [as.sir()] on (supports tidy selection such as `column1:column4`). Otherwise: arguments passed on to methods. #' @param ... for using on a [data.frame]: names of columns to apply [as.sir()] on (supports tidy selection such as `column1:column4`). Otherwise: arguments passed on to methods.
#' @details #' @details
#' *Note: The clinical breakpoints in this package were validated through and imported from [WHONET](https://whonet.org) and the public use of this `AMR` package has been endorsed by CLSI and EUCAST, please see [clinical_breakpoints] for more information.*
#'
#' ### How it Works #' ### How it Works
#' #'
#' The [as.sir()] function works in four ways: #' The [as.sir()] function works in four ways:
@@ -428,6 +433,7 @@ as.sir.mic <- function(x,
reference_data = AMR::clinical_breakpoints, reference_data = AMR::clinical_breakpoints,
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE), include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"),
...) { ...) {
as_sir_method( as_sir_method(
method_short = "mic", method_short = "mic",
@@ -442,6 +448,7 @@ as.sir.mic <- function(x,
reference_data = reference_data, reference_data = reference_data,
include_screening = include_screening, include_screening = include_screening,
include_PKPD = include_PKPD, include_PKPD = include_PKPD,
breakpoint_type = breakpoint_type,
... ...
) )
} }
@@ -457,6 +464,7 @@ as.sir.disk <- function(x,
reference_data = AMR::clinical_breakpoints, reference_data = AMR::clinical_breakpoints,
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE), include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human"),
...) { ...) {
as_sir_method( as_sir_method(
method_short = "disk", method_short = "disk",
@@ -471,6 +479,7 @@ as.sir.disk <- function(x,
reference_data = reference_data, reference_data = reference_data,
include_screening = include_screening, include_screening = include_screening,
include_PKPD = include_PKPD, include_PKPD = include_PKPD,
breakpoint_type = breakpoint_type,
... ...
) )
} }
@@ -486,7 +495,8 @@ as.sir.data.frame <- function(x,
add_intrinsic_resistance = FALSE, add_intrinsic_resistance = FALSE,
reference_data = AMR::clinical_breakpoints, reference_data = AMR::clinical_breakpoints,
include_screening = getOption("AMR_include_screening", FALSE), include_screening = getOption("AMR_include_screening", FALSE),
include_PKPD = getOption("AMR_include_PKPD", TRUE)) { include_PKPD = getOption("AMR_include_PKPD", TRUE),
breakpoint_type = getOption("AMR_breakpoint_type", "human")) {
meet_criteria(x, allow_class = "data.frame") # will also check for dimensions > 0 meet_criteria(x, allow_class = "data.frame") # will also check for dimensions > 0
meet_criteria(col_mo, allow_class = "character", is_in = colnames(x), allow_NULL = TRUE) meet_criteria(col_mo, allow_class = "character", is_in = colnames(x), allow_NULL = TRUE)
meet_criteria(guideline, allow_class = "character", has_length = 1) meet_criteria(guideline, allow_class = "character", has_length = 1)
@@ -494,6 +504,9 @@ as.sir.data.frame <- function(x,
meet_criteria(conserve_capped_values, allow_class = "logical", has_length = 1) meet_criteria(conserve_capped_values, allow_class = "logical", has_length = 1)
meet_criteria(add_intrinsic_resistance, allow_class = "logical", has_length = 1) meet_criteria(add_intrinsic_resistance, allow_class = "logical", has_length = 1)
meet_criteria(reference_data, allow_class = "data.frame") meet_criteria(reference_data, allow_class = "data.frame")
meet_criteria(include_screening, allow_class = "logical", has_length = 1)
meet_criteria(include_PKPD, allow_class = "logical", has_length = 1)
meet_criteria(breakpoint_type, allow_class = "character", is_in = reference_data$type, has_length = 1)
x.bak <- x x.bak <- x
for (i in seq_len(ncol(x))) { for (i in seq_len(ncol(x))) {
@@ -625,6 +638,7 @@ as.sir.data.frame <- function(x,
reference_data = reference_data, reference_data = reference_data,
include_screening = include_screening, include_screening = include_screening,
include_PKPD = include_PKPD, include_PKPD = include_PKPD,
breakpoint_type = breakpoint_type,
is_data.frame = TRUE is_data.frame = TRUE
) )
} else if (types[i] == "disk") { } else if (types[i] == "disk") {
@@ -642,6 +656,7 @@ as.sir.data.frame <- function(x,
reference_data = reference_data, reference_data = reference_data,
include_screening = include_screening, include_screening = include_screening,
include_PKPD = include_PKPD, include_PKPD = include_PKPD,
breakpoint_type = breakpoint_type,
is_data.frame = TRUE is_data.frame = TRUE
) )
} else if (types[i] == "sir") { } else if (types[i] == "sir") {
@@ -711,6 +726,7 @@ as_sir_method <- function(method_short,
reference_data, reference_data,
include_screening, include_screening,
include_PKPD, include_PKPD,
breakpoint_type,
...) { ...) {
meet_criteria(x, allow_NA = TRUE, .call_depth = -2) meet_criteria(x, allow_NA = TRUE, .call_depth = -2)
meet_criteria(mo, allow_class = c("mo", "character"), allow_NULL = TRUE, .call_depth = -2) meet_criteria(mo, allow_class = c("mo", "character"), allow_NULL = TRUE, .call_depth = -2)
@@ -723,6 +739,7 @@ as_sir_method <- function(method_short,
meet_criteria(include_screening, allow_class = "logical", has_length = 1, .call_depth = -2) meet_criteria(include_screening, allow_class = "logical", has_length = 1, .call_depth = -2)
meet_criteria(include_PKPD, allow_class = "logical", has_length = 1, .call_depth = -2) meet_criteria(include_PKPD, allow_class = "logical", has_length = 1, .call_depth = -2)
check_reference_data(reference_data, .call_depth = -2) check_reference_data(reference_data, .call_depth = -2)
meet_criteria(breakpoint_type, allow_class = "character", is_in = reference_data$type, has_length = 1, .call_depth = -2)
# for dplyr's across() # for dplyr's across()
cur_column_dplyr <- import_fn("cur_column", "dplyr", error_on_fail = FALSE) cur_column_dplyr <- import_fn("cur_column", "dplyr", error_on_fail = FALSE)
@@ -759,7 +776,7 @@ as_sir_method <- function(method_short,
if (is.null(mo)) { if (is.null(mo)) {
stop_("No information was supplied about the microorganisms (missing argument `mo` and no column of class 'mo' found). See ?as.sir.\n\n", stop_("No information was supplied about the microorganisms (missing argument `mo` and no column of class 'mo' found). See ?as.sir.\n\n",
"To transform certain columns with e.g. mutate(), use `data %>% mutate(across(..., as.sir, mo = x))`, where x is your column with microorganisms.\n", "To transform certain columns with e.g. mutate(), use `data %>% mutate(across(..., as.sir, mo = x))`, where x is your column with microorganisms.\n",
"To tranform all ", method_long, " in a data set, use `data %>% as.sir()` or `data %>% mutate_if(is.", method_short, ", as.sir)`.", "To transform all ", method_long, " in a data set, use `data %>% as.sir()` or `data %>% mutate_if(is.", method_short, ", as.sir)`.",
call = FALSE call = FALSE
) )
} }
@@ -779,8 +796,8 @@ as_sir_method <- function(method_short,
mo <- suppressWarnings(suppressMessages(as.mo(mo, keep_synonyms = FALSE, inf0 = FALSE))) mo <- suppressWarnings(suppressMessages(as.mo(mo, keep_synonyms = FALSE, inf0 = FALSE)))
guideline_coerced <- get_guideline(guideline, reference_data) guideline_coerced <- get_guideline(guideline, reference_data)
if (is.na(ab)) { if (is.na(ab)) {
message_("Returning NAs for unknown drug: '", font_bold(ab.bak), message_("Returning NAs for unknown antibiotic: '", font_bold(ab.bak),
"'. Rename this column to a drug name or code, and check the output with `as.ab()`.", "'. Rename this column to a valid name or code, and check the output with `as.ab()`.",
add_fn = font_red, add_fn = font_red,
as_note = FALSE as_note = FALSE
) )
@@ -817,24 +834,23 @@ as_sir_method <- function(method_short,
), agent_name, ")" ), agent_name, ")"
) )
} }
message_("=> Interpreting ", method_long, " of ", ifelse(isTRUE(list(...)$is_data.frame), "column ", ""),
agent_formatted, # this intro text will also be printed in the progress bar in the `progress` package is installed
mo_var_found, intro_txt <- paste0("Interpreting ", method_long, ": ", ifelse(isTRUE(list(...)$is_data.frame), "column ", ""),
" according to ", ifelse(identical(reference_data, AMR::clinical_breakpoints), agent_formatted,
font_bold(guideline_coerced), mo_var_found,
"manually defined 'reference_data'" ifelse(identical(reference_data, AMR::clinical_breakpoints),
), paste0(", ", font_bold(guideline_coerced)),
"... ", ""),
appendLF = FALSE, "... ")
as_note = FALSE message_(intro_txt, appendLF = FALSE, as_note = FALSE)
)
msg_note <- function(messages) { msg_note <- function(messages) {
for (i in seq_len(length(messages))) { for (i in seq_len(length(messages))) {
messages[i] <- word_wrap(extra_indent = 5, messages[i]) messages[i] <- word_wrap(extra_indent = 5, messages[i])
} }
message( message(
font_green(font_bold(" Note:\n")), font_yellow(font_bold(paste0(" Note", ifelse(length(messages) > 1, "s", ""), ":\n"))),
paste0(" ", font_black(AMR_env$bullet_icon), " ", font_black(messages, collapse = NULL), collapse = "\n") paste0(" ", font_black(AMR_env$bullet_icon), " ", font_black(messages, collapse = NULL), collapse = "\n")
) )
} }
@@ -877,6 +893,9 @@ as_sir_method <- function(method_short,
subset(method == method_coerced & ab == ab_coerced) subset(method == method_coerced & ab == ab_coerced)
} }
breakpoints <- breakpoints %pm>%
subset(type == breakpoint_type)
if (isFALSE(include_screening)) { if (isFALSE(include_screening)) {
# remove screening rules from the breakpoints table # remove screening rules from the breakpoints table
breakpoints <- breakpoints %pm>% breakpoints <- breakpoints %pm>%
@@ -887,6 +906,15 @@ as_sir_method <- function(method_short,
breakpoints <- breakpoints %pm>% breakpoints <- breakpoints %pm>%
subset(mo != "UNKNOWN" & ref_tbl %unlike% "PK.*PD") subset(mo != "UNKNOWN" & ref_tbl %unlike% "PK.*PD")
} }
if (all(uti == FALSE, na.rm = TRUE)) {
# remove UTI breakpoints
breakpoints <- breakpoints %pm>%
subset(is.na(uti) | uti == FALSE)
} else if (all(uti == TRUE, na.rm = TRUE)) {
# remove UTI breakpoints
breakpoints <- breakpoints %pm>%
subset(uti == TRUE)
}
msgs <- character(0) msgs <- character(0)
if (nrow(breakpoints) == 0) { if (nrow(breakpoints) == 0) {
@@ -905,32 +933,32 @@ as_sir_method <- function(method_short,
add_intrinsic_resistance_to_AMR_env() add_intrinsic_resistance_to_AMR_env()
} }
p <- progress_ticker(n = length(unique(df$mo)), n_min = 10, title = font_blue(intro_txt), only_bar_percent = TRUE)
on.exit(close(p))
# run the rules # run the rules
for (mo_unique in unique(df$mo)) { for (mo_currrent in unique(df$mo)) {
rows <- which(df$mo == mo_unique) p$tick()
rows <- which(df$mo == mo_currrent)
values <- df[rows, "values", drop = TRUE] values <- df[rows, "values", drop = TRUE]
uti <- df[rows, "uti", drop = TRUE] uti <- df[rows, "uti", drop = TRUE]
new_sir <- rep(NA_sir_, length(rows)) new_sir <- rep(NA_sir_, length(rows))
# find different mo properties # find different mo properties
mo_current_genus <- as.mo(mo_genus(mo_unique, language = NULL)) mo_current_genus <- as.mo(mo_genus(mo_currrent, language = NULL))
mo_current_family <- as.mo(mo_family(mo_unique, language = NULL)) mo_current_family <- as.mo(mo_family(mo_currrent, language = NULL))
mo_current_order <- as.mo(mo_order(mo_unique, language = NULL)) mo_current_order <- as.mo(mo_order(mo_currrent, language = NULL))
mo_current_class <- as.mo(mo_class(mo_unique, language = NULL)) mo_current_class <- as.mo(mo_class(mo_currrent, language = NULL))
if (mo_genus(mo_unique, language = NULL) == "Staphylococcus") { if (mo_currrent %in% AMR::microorganisms.groups$mo) {
mo_current_becker <- as.mo(mo_unique, Becker = TRUE) # get the species group
mo_current_species_group <- AMR::microorganisms.groups$mo_group[match(mo_currrent, AMR::microorganisms.groups$mo)]
} else { } else {
mo_current_becker <- mo_unique mo_current_species_group <- mo_currrent
}
if (mo_genus(mo_unique, language = NULL) == "Streptococcus") {
mo_current_lancefield <- as.mo(mo_unique, Lancefield = TRUE)
} else {
mo_current_lancefield <- mo_unique
} }
mo_current_other <- as.mo("UNKNOWN") mo_current_other <- as.mo("UNKNOWN")
# formatted for notes # formatted for notes
mo_formatted <- suppressMessages(suppressWarnings(mo_fullname(mo_unique, language = NULL, keep_synonyms = FALSE))) mo_formatted <- suppressMessages(suppressWarnings(mo_fullname(mo_currrent, language = NULL, keep_synonyms = FALSE)))
if (!mo_rank(mo_unique) %in% c("kingdom", "phylum", "class", "order")) { if (!mo_rank(mo_currrent) %in% c("kingdom", "phylum", "class", "order")) {
mo_formatted <- font_italic(mo_formatted) mo_formatted <- font_italic(mo_formatted)
} }
ab_formatted <- paste0( ab_formatted <- paste0(
@@ -944,7 +972,7 @@ as_sir_method <- function(method_short,
subset(mo %in% c( subset(mo %in% c(
mo_current_genus, mo_current_family, mo_current_genus, mo_current_family,
mo_current_order, mo_current_class, mo_current_order, mo_current_class,
mo_current_becker, mo_current_lancefield, mo_current_species_group,
mo_current_other mo_current_other
)) ))
@@ -964,12 +992,12 @@ as_sir_method <- function(method_short,
# only UTI breakpoints available # only UTI breakpoints available
warning_("in `as.sir()`: interpretation of ", font_bold(ab_formatted), " is only available for (uncomplicated) urinary tract infections (UTI) for some microorganisms, thus assuming `uti = TRUE`. See `?as.sir`.") warning_("in `as.sir()`: interpretation of ", font_bold(ab_formatted), " is only available for (uncomplicated) urinary tract infections (UTI) for some microorganisms, thus assuming `uti = TRUE`. See `?as.sir`.")
rise_warning <- TRUE rise_warning <- TRUE
} else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && any(is.na(uti)) && all(c(TRUE, FALSE) %in% breakpoints_current$uti, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteUTI", mo_unique, ab_coerced)) { } else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && any(is.na(uti)) && all(c(TRUE, FALSE) %in% breakpoints_current$uti, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteUTI", mo_currrent, ab_coerced)) {
# both UTI and Non-UTI breakpoints available # both UTI and Non-UTI breakpoints available
msgs <- c(msgs, paste0("Breakpoints for UTI ", font_underline("and"), " non-UTI available for ", ab_formatted, " in ", mo_formatted, " - assuming non-UTI. Use argument `uti` to set which isolates are from urine. See `?as.sir`.")) msgs <- c(msgs, paste0("Breakpoints for UTI ", font_underline("and"), " non-UTI available for ", ab_formatted, " in ", mo_formatted, " - assuming non-UTI. Use argument `uti` to set which isolates are from urine. See `?as.sir`."))
breakpoints_current <- breakpoints_current %pm>% breakpoints_current <- breakpoints_current %pm>%
pm_filter(uti == FALSE) pm_filter(uti == FALSE)
} else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && all(breakpoints_current$uti == FALSE, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteOther", mo_unique, ab_coerced)) { } else if (nrow(breakpoints_current) > 1 && length(unique(breakpoints_current$site)) > 1 && all(breakpoints_current$uti == FALSE, na.rm = TRUE) && message_not_thrown_before("as.sir", "siteOther", mo_currrent, ab_coerced)) {
# breakpoints for multiple body sites available # breakpoints for multiple body sites available
site <- breakpoints_current[1L, "site", drop = FALSE] # this is the one we'll take site <- breakpoints_current[1L, "site", drop = FALSE] # this is the one we'll take
if (is.na(site)) { if (is.na(site)) {
@@ -981,7 +1009,7 @@ as_sir_method <- function(method_short,
} }
# first check if mo is intrinsic resistant # first check if mo is intrinsic resistant
if (isTRUE(add_intrinsic_resistance) && guideline_coerced %like% "EUCAST" && paste(mo_unique, ab_coerced) %in% AMR_env$intrinsic_resistant) { if (isTRUE(add_intrinsic_resistance) && guideline_coerced %like% "EUCAST" && paste(mo_currrent, ab_coerced) %in% AMR_env$intrinsic_resistant) {
msgs <- c(msgs, paste0("Intrinsic resistance applied for ", ab_formatted, " in ", mo_formatted, "")) msgs <- c(msgs, paste0("Intrinsic resistance applied for ", ab_formatted, " in ", mo_formatted, ""))
new_sir <- rep(as.sir("R"), length(rows)) new_sir <- rep(as.sir("R"), length(rows))
} else if (nrow(breakpoints_current) == 0) { } else if (nrow(breakpoints_current) == 0) {
@@ -1031,7 +1059,7 @@ as_sir_method <- function(method_short,
index = rows, index = rows,
ab_input = rep(ab.bak, length(rows)), ab_input = rep(ab.bak, length(rows)),
ab_guideline = rep(ab_coerced, length(rows)), ab_guideline = rep(ab_coerced, length(rows)),
mo_input = rep(mo.bak[match(mo_unique, df$mo)][1], length(rows)), mo_input = rep(mo.bak[match(mo_currrent, df$mo)][1], length(rows)),
mo_guideline = rep(breakpoints_current[, "mo", drop = TRUE], length(rows)), mo_guideline = rep(breakpoints_current[, "mo", drop = TRUE], length(rows)),
guideline = rep(guideline_coerced, length(rows)), guideline = rep(guideline_coerced, length(rows)),
ref_table = rep(breakpoints_current[, "ref_tbl", drop = TRUE], length(rows)), ref_table = rep(breakpoints_current[, "ref_tbl", drop = TRUE], length(rows)),
@@ -1047,6 +1075,13 @@ as_sir_method <- function(method_short,
df[rows, "result"] <- new_sir df[rows, "result"] <- new_sir
} }
close(p)
# printing messages
if (!is.null(import_fn("progress_bar", "progress", error_on_fail = FALSE))) {
# the progress bar has overwritten the intro text, so:
message_(intro_txt, appendLF = FALSE, as_note = FALSE)
}
if (isTRUE(rise_warning)) { if (isTRUE(rise_warning)) {
message(font_yellow(font_bold(" * WARNING *"))) message(font_yellow(font_bold(" * WARNING *")))
} else if (length(msgs) == 0) { } else if (length(msgs) == 0) {

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

Binary file not shown.

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

31
R/zzz.R
View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -59,16 +59,15 @@ AMR_env$sir_interpretation_history <- data.frame(
datetime = Sys.time()[0], datetime = Sys.time()[0],
index = integer(0), index = integer(0),
ab_input = character(0), ab_input = character(0),
ab_considered = character(0), ab_guideline = set_clean_class(character(0), c("ab", "character")),
mo_input = character(0), mo_input = character(0),
mo_considered = character(0), mo_guideline = set_clean_class(character(0), c("mo", "character")),
guideline = character(0), guideline = character(0),
ref_table = character(0), ref_table = character(0),
method = character(0), method = character(0),
breakpoint_S = double(0),
breakpoint_R = double(0),
input = double(0), input = double(0),
interpretation = character(0), outcome = NA_sir_[0],
breakpoint_S_R = character(0),
stringsAsFactors = FALSE stringsAsFactors = FALSE
) )
AMR_env$custom_ab_codes <- character(0) AMR_env$custom_ab_codes <- character(0)
@@ -76,17 +75,15 @@ AMR_env$custom_mo_codes <- character(0)
AMR_env$is_dark_theme <- NULL AMR_env$is_dark_theme <- NULL
# determine info icon for messages # determine info icon for messages
utf8_supported <- isTRUE(base::l10n_info()$`UTF-8`) if (pkg_is_available("cli")) {
is_latex <- tryCatch(import_fn("is_latex_output", "knitr", error_on_fail = FALSE)(), # let cli do the determination of supported symbols
error = function(e) FALSE AMR_env$info_icon <- import_fn("symbol", "cli")$info
) AMR_env$bullet_icon <- import_fn("symbol", "cli")$bullet
if (utf8_supported && !is_latex) { AMR_env$dots <- import_fn("symbol", "cli")$ellipsis
# \u2139 is a symbol officially named 'information source'
AMR_env$info_icon <- "\u2139"
AMR_env$bullet_icon <- "\u2022"
} else { } else {
AMR_env$info_icon <- "i" AMR_env$info_icon <- "i"
AMR_env$bullet_icon <- "*" AMR_env$bullet_icon <- "*"
AMR_env$dots <- "..."
} }
.onLoad <- function(lib, pkg) { .onLoad <- function(lib, pkg) {

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -70,9 +70,9 @@ home:
navbar: navbar:
title: "AMR (for R)" title: "AMR (for R)"
left: left:
- text: "Home" # - text: "Home"
icon: "fa-home" # icon: "fa-home"
href: "index.html" # href: "index.html"
- text: "How to" - text: "How to"
icon: "fa-question-circle" icon: "fa-question-circle"
menu: menu:
@@ -100,9 +100,9 @@ navbar:
- text: "Work with WHONET Data" - text: "Work with WHONET Data"
icon: "fa-globe-americas" icon: "fa-globe-americas"
href: "articles/WHONET.html" href: "articles/WHONET.html"
- text: "Import Data From SPSS/SAS/Stata" # - text: "Import Data From SPSS/SAS/Stata"
icon: "fa-file-upload" # icon: "fa-file-upload"
href: "articles/SPSS.html" # href: "articles/SPSS.html"
- text: "Apply Eucast Rules" - text: "Apply Eucast Rules"
icon: "fa-exchange-alt" icon: "fa-exchange-alt"
href: "articles/EUCAST.html" href: "articles/EUCAST.html"
@@ -115,16 +115,31 @@ navbar:
- text: "Get Properties of an Antiviral Drug" - text: "Get Properties of an Antiviral Drug"
icon: "fa-capsules" icon: "fa-capsules"
href: "reference/av_property.html" # reference instead of an article href: "reference/av_property.html" # reference instead of an article
- text: "With other pkgs"
icon: "fa-layer-group"
menu:
- text: "AMR & dplyr/tidyverse"
icon: "fa-layer-group"
href: "articles/other_pkg.html"
- text: "AMR & data.table"
icon: "fa-layer-group"
href: "articles/other_pkg.html"
- text: "AMR & tidymodels"
icon: "fa-layer-group"
href: "articles/other_pkg.html"
- text: "AMR & base R"
icon: "fa-layer-group"
href: "articles/other_pkg.html"
- text: "Manual" - text: "Manual"
icon: "fa-book-open" icon: "fa-book-open"
href: "reference/index.html" href: "reference/index.html"
- text: "Authors" - text: "Authors"
icon: "fa-users" icon: "fa-users"
href: "authors.html" href: "authors.html"
right:
- text: "Changelog" - text: "Changelog"
icon: "far fa-newspaper" icon: "far fa-newspaper"
href: "news/index.html" href: "news/index.html"
right:
- text: "Source Code" - text: "Source Code"
icon: "fab fa-github" icon: "fab fa-github"
href: "https://github.com/msberends/AMR" href: "https://github.com/msberends/AMR"
@@ -218,6 +233,7 @@ reference:
- "`example_isolates`" - "`example_isolates`"
- "`microorganisms`" - "`microorganisms`"
- "`microorganisms.codes`" - "`microorganisms.codes`"
- "`microorganisms.groups`"
- "`antibiotics`" - "`antibiotics`"
- "`intrinsic_resistant`" - "`intrinsic_resistant`"
- "`dosage`" - "`dosage`"

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,3 +1,5 @@
The email address of the maintainer has changed - not the person.
As with all previous >20 releases, some CHECKs might return a NOTE for *just* hitting the installation size limit, though its size has been brought down to a minimum in collaboration with CRAN maintainers previously. As with all previous >20 releases, some CHECKs might return a NOTE for *just* hitting the installation size limit, though its size has been brought down to a minimum in collaboration with CRAN maintainers previously.
We consider this a high-impact package: it was published in the Journal of Statistical Software (2022), is including in a CRAN Task View (Epidemiology), and is according to download stats used in almost all countries in the world. If there is anything to note, please let us know up-front without directly archiving the current version. That said, we continually unit test our package extensively and have no reason to assume that anything is wrong. We consider this a high-impact package: it was published in the Journal of Statistical Software (2022), is including in a CRAN Task View (Epidemiology), and is according to download stats used in almost all countries in the world. If there is anything to note, please let us know up-front without directly archiving the current version. That said, we continually unit test our package extensively and have no reason to assume that anything is wrong.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #
@@ -31,6 +31,7 @@
# source("data-raw/_pre_commit_hook.R") # source("data-raw/_pre_commit_hook.R")
library(dplyr, warn.conflicts = FALSE) library(dplyr, warn.conflicts = FALSE)
try(detach("package:data.table", unload = TRUE), silent = TRUE) # to prevent like() to precede over AMR::like
devtools::load_all(quiet = TRUE) devtools::load_all(quiet = TRUE)
suppressMessages(set_AMR_locale("English")) suppressMessages(set_AMR_locale("English"))
@@ -164,12 +165,12 @@ MO_PREVALENT_GENERA <- c(
"Halococcus", "Hendersonula", "Heterophyes", "Histomonas", "Histoplasma", "Hymenolepis", "Hypomyces", "Halococcus", "Hendersonula", "Heterophyes", "Histomonas", "Histoplasma", "Hymenolepis", "Hypomyces",
"Hysterothylacium", "Leishmania", "Malassezia", "Malbranchea", "Metagonimus", "Meyerozyma", "Microsporidium", "Hysterothylacium", "Leishmania", "Malassezia", "Malbranchea", "Metagonimus", "Meyerozyma", "Microsporidium",
"Microsporum", "Mortierella", "Mucor", "Mycocentrospora", "Necator", "Nectria", "Ochroconis", "Oesophagostomum", "Microsporum", "Mortierella", "Mucor", "Mycocentrospora", "Necator", "Nectria", "Ochroconis", "Oesophagostomum",
"Oidiodendron", "Opisthorchis", "Pediculus", "Phlebotomus", "Phoma", "Pichia", "Piedraia", "Pithomyces", "Oidiodendron", "Opisthorchis", "Pediculus", "Penicillium", "Phlebotomus", "Phoma", "Pichia", "Piedraia", "Pithomyces",
"Pityrosporum", "Pneumocystis", "Pseudallescheria", "Pseudoterranova", "Pulex", "Rhizomucor", "Rhizopus", "Pityrosporum", "Pneumocystis", "Pseudallescheria", "Pseudoterranova", "Pulex", "Rhizomucor", "Rhizopus",
"Rhodotorula", "Saccharomyces", "Sarcoptes", "Scolecobasidium", "Scopulariopsis", "Scytalidium", "Spirometra", "Rhodotorula", "Saccharomyces", "Sarcoptes", "Scolecobasidium", "Scopulariopsis", "Scytalidium", "Spirometra",
"Sporobolomyces", "Stachybotrys", "Strongyloides", "Syngamus", "Taenia", "Toxocara", "Trichinella", "Trichobilharzia", "Sporobolomyces", "Stachybotrys", "Strongyloides", "Syngamus", "Taenia", "Talaromyces", "Toxocara", "Trichinella",
"Trichoderma", "Trichomonas", "Trichophyton", "Trichosporon", "Trichostrongylus", "Trichuris", "Tritirachium", "Trichobilharzia", "Trichoderma", "Trichomonas", "Trichophyton", "Trichosporon", "Trichostrongylus", "Trichuris",
"Trombicula", "Trypanosoma", "Tunga", "Wuchereria" "Tritirachium", "Trombicula", "Trypanosoma", "Tunga", "Wuchereria"
) )
# antibiotic groups # antibiotic groups
@@ -365,7 +366,7 @@ if (changed_md5(clin_break)) {
write_md5(clin_break) write_md5(clin_break)
try(saveRDS(clin_break, "data-raw/clinical_breakpoints.rds", version = 2, compress = "xz"), silent = TRUE) try(saveRDS(clin_break, "data-raw/clinical_breakpoints.rds", version = 2, compress = "xz"), silent = TRUE)
try(write.table(clin_break, "data-raw/clinical_breakpoints.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE) try(write.table(clin_break, "data-raw/clinical_breakpoints.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
try(haven::write_sas(clin_break, "data-raw/clinical_breakpoints.sas"), silent = TRUE) try(haven::write_xpt(clin_break, "data-raw/clinical_breakpoints.xpt"), silent = TRUE)
try(haven::write_sav(clin_break, "data-raw/clinical_breakpoints.sav"), silent = TRUE) try(haven::write_sav(clin_break, "data-raw/clinical_breakpoints.sav"), silent = TRUE)
try(haven::write_dta(clin_break, "data-raw/clinical_breakpoints.dta"), silent = TRUE) try(haven::write_dta(clin_break, "data-raw/clinical_breakpoints.dta"), silent = TRUE)
try(openxlsx::write.xlsx(clin_break, "data-raw/clinical_breakpoints.xlsx"), silent = TRUE) try(openxlsx::write.xlsx(clin_break, "data-raw/clinical_breakpoints.xlsx"), silent = TRUE)
@@ -381,7 +382,7 @@ if (changed_md5(microorganisms)) {
mo <- microorganisms mo <- microorganisms
mo$snomed <- max_50_snomed mo$snomed <- max_50_snomed
mo <- dplyr::mutate_if(mo, ~ !is.numeric(.), as.character) mo <- dplyr::mutate_if(mo, ~ !is.numeric(.), as.character)
try(haven::write_sas(mo, "data-raw/microorganisms.sas"), silent = TRUE) try(haven::write_xpt(mo, "data-raw/microorganisms.xpt"), silent = TRUE)
try(haven::write_sav(mo, "data-raw/microorganisms.sav"), silent = TRUE) try(haven::write_sav(mo, "data-raw/microorganisms.sav"), silent = TRUE)
try(haven::write_dta(mo, "data-raw/microorganisms.dta"), silent = TRUE) try(haven::write_dta(mo, "data-raw/microorganisms.dta"), silent = TRUE)
mo_all_snomed <- microorganisms %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ",")) mo_all_snomed <- microorganisms %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ","))
@@ -391,12 +392,38 @@ if (changed_md5(microorganisms)) {
try(arrow::write_parquet(microorganisms, "data-raw/microorganisms.parquet"), silent = TRUE) try(arrow::write_parquet(microorganisms, "data-raw/microorganisms.parquet"), silent = TRUE)
} }
if (changed_md5(microorganisms.codes)) {
usethis::ui_info(paste0("Saving {usethis::ui_value('microorganisms.codes')} to {usethis::ui_value('data-raw/')}"))
write_md5(microorganisms.codes)
try(saveRDS(microorganisms.codes, "data-raw/microorganisms.codes.rds", version = 2, compress = "xz"), silent = TRUE)
try(write.table(microorganisms.codes, "data-raw/microorganisms.codes.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
try(haven::write_xpt(microorganisms.codes, "data-raw/microorganisms.codes.xpt"), silent = TRUE)
try(haven::write_sav(microorganisms.codes, "data-raw/microorganisms.codes.sav"), silent = TRUE)
try(haven::write_dta(microorganisms.codes, "data-raw/microorganisms.codes.dta"), silent = TRUE)
try(openxlsx::write.xlsx(microorganisms.codes, "data-raw/microorganisms.codes.xlsx"), silent = TRUE)
try(arrow::write_feather(microorganisms.codes, "data-raw/microorganisms.codes.feather"), silent = TRUE)
try(arrow::write_parquet(microorganisms.codes, "data-raw/microorganisms.codes.parquet"), silent = TRUE)
}
if (changed_md5(microorganisms.groups)) {
usethis::ui_info(paste0("Saving {usethis::ui_value('microorganisms.groups')} to {usethis::ui_value('data-raw/')}"))
write_md5(microorganisms.groups)
try(saveRDS(microorganisms.groups, "data-raw/microorganisms.groups.rds", version = 2, compress = "xz"), silent = TRUE)
try(write.table(microorganisms.groups, "data-raw/microorganisms.groups.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
try(haven::write_xpt(microorganisms.groups, "data-raw/microorganisms.groups.xpt"), silent = TRUE)
try(haven::write_sav(microorganisms.groups, "data-raw/microorganisms.groups.sav"), silent = TRUE)
try(haven::write_dta(microorganisms.groups, "data-raw/microorganisms.groups.dta"), silent = TRUE)
try(openxlsx::write.xlsx(microorganisms.groups, "data-raw/microorganisms.groups.xlsx"), silent = TRUE)
try(arrow::write_feather(microorganisms.groups, "data-raw/microorganisms.groups.feather"), silent = TRUE)
try(arrow::write_parquet(microorganisms.groups, "data-raw/microorganisms.groups.parquet"), silent = TRUE)
}
ab <- dplyr::mutate_if(antibiotics, ~ !is.numeric(.), as.character) ab <- dplyr::mutate_if(antibiotics, ~ !is.numeric(.), as.character)
if (changed_md5(ab)) { if (changed_md5(ab)) {
usethis::ui_info(paste0("Saving {usethis::ui_value('antibiotics')} to {usethis::ui_value('data-raw/')}")) usethis::ui_info(paste0("Saving {usethis::ui_value('antibiotics')} to {usethis::ui_value('data-raw/')}"))
write_md5(ab) write_md5(ab)
try(saveRDS(antibiotics, "data-raw/antibiotics.rds", version = 2, compress = "xz"), silent = TRUE) try(saveRDS(antibiotics, "data-raw/antibiotics.rds", version = 2, compress = "xz"), silent = TRUE)
try(haven::write_sas(ab, "data-raw/antibiotics.sas"), silent = TRUE) try(haven::write_xpt(ab, "data-raw/antibiotics.xpt"), silent = TRUE)
try(haven::write_sav(ab, "data-raw/antibiotics.sav"), silent = TRUE) try(haven::write_sav(ab, "data-raw/antibiotics.sav"), silent = TRUE)
try(haven::write_dta(ab, "data-raw/antibiotics.dta"), silent = TRUE) try(haven::write_dta(ab, "data-raw/antibiotics.dta"), silent = TRUE)
ab_lists <- antibiotics %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ",")) ab_lists <- antibiotics %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ","))
@@ -411,7 +438,7 @@ if (changed_md5(av)) {
usethis::ui_info(paste0("Saving {usethis::ui_value('antivirals')} to {usethis::ui_value('data-raw/')}")) usethis::ui_info(paste0("Saving {usethis::ui_value('antivirals')} to {usethis::ui_value('data-raw/')}"))
write_md5(av) write_md5(av)
try(saveRDS(antivirals, "data-raw/antivirals.rds", version = 2, compress = "xz"), silent = TRUE) try(saveRDS(antivirals, "data-raw/antivirals.rds", version = 2, compress = "xz"), silent = TRUE)
try(haven::write_sas(av, "data-raw/antivirals.sas"), silent = TRUE) try(haven::write_xpt(av, "data-raw/antivirals.xpt"), silent = TRUE)
try(haven::write_sav(av, "data-raw/antivirals.sav"), silent = TRUE) try(haven::write_sav(av, "data-raw/antivirals.sav"), silent = TRUE)
try(haven::write_dta(av, "data-raw/antivirals.dta"), silent = TRUE) try(haven::write_dta(av, "data-raw/antivirals.dta"), silent = TRUE)
av_lists <- antivirals %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ",")) av_lists <- antivirals %>% mutate_if(is.list, function(x) sapply(x, paste, collapse = ","))
@@ -432,7 +459,7 @@ if (changed_md5(intrinsicR)) {
write_md5(intrinsicR) write_md5(intrinsicR)
try(saveRDS(intrinsicR, "data-raw/intrinsic_resistant.rds", version = 2, compress = "xz"), silent = TRUE) try(saveRDS(intrinsicR, "data-raw/intrinsic_resistant.rds", version = 2, compress = "xz"), silent = TRUE)
try(write.table(intrinsicR, "data-raw/intrinsic_resistant.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE) try(write.table(intrinsicR, "data-raw/intrinsic_resistant.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
try(haven::write_sas(intrinsicR, "data-raw/intrinsic_resistant.sas"), silent = TRUE) try(haven::write_xpt(intrinsicR, "data-raw/intrinsic_resistant.xpt"), silent = TRUE)
try(haven::write_sav(intrinsicR, "data-raw/intrinsic_resistant.sav"), silent = TRUE) try(haven::write_sav(intrinsicR, "data-raw/intrinsic_resistant.sav"), silent = TRUE)
try(haven::write_dta(intrinsicR, "data-raw/intrinsic_resistant.dta"), silent = TRUE) try(haven::write_dta(intrinsicR, "data-raw/intrinsic_resistant.dta"), silent = TRUE)
try(openxlsx::write.xlsx(intrinsicR, "data-raw/intrinsic_resistant.xlsx"), silent = TRUE) try(openxlsx::write.xlsx(intrinsicR, "data-raw/intrinsic_resistant.xlsx"), silent = TRUE)
@@ -445,7 +472,7 @@ if (changed_md5(dosage)) {
write_md5(dosage) write_md5(dosage)
try(saveRDS(dosage, "data-raw/dosage.rds", version = 2, compress = "xz"), silent = TRUE) try(saveRDS(dosage, "data-raw/dosage.rds", version = 2, compress = "xz"), silent = TRUE)
try(write.table(dosage, "data-raw/dosage.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE) try(write.table(dosage, "data-raw/dosage.txt", sep = "\t", na = "", row.names = FALSE), silent = TRUE)
try(haven::write_sas(dosage, "data-raw/dosage.sas"), silent = TRUE) try(haven::write_xpt(dosage, "data-raw/dosage.xpt"), silent = TRUE)
try(haven::write_sav(dosage, "data-raw/dosage.sav"), silent = TRUE) try(haven::write_sav(dosage, "data-raw/dosage.sav"), silent = TRUE)
try(haven::write_dta(dosage, "data-raw/dosage.dta"), silent = TRUE) try(haven::write_dta(dosage, "data-raw/dosage.dta"), silent = TRUE)
try(openxlsx::write.xlsx(dosage, "data-raw/dosage.xlsx"), silent = TRUE) try(openxlsx::write.xlsx(dosage, "data-raw/dosage.xlsx"), silent = TRUE)

BIN
data-raw/antibiotics.xpt Normal file

Binary file not shown.

BIN
data-raw/antivirals.xpt Normal file

Binary file not shown.

19616
data-raw/bacdive.csv Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +1 @@
68467f5179638ac5622281df53a5ea75 87c6c20d117acd06c37bab6d93966a0b

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1 +1 @@
9a9fad0100acf4738f3f66b25ed3d8ef cf0833ed69cfd2b6afb5b6d18cf2df26

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,171 @@
"ab" "name" "type" "dose" "dose_times" "administration" "notes" "original_txt" "eucast_version" "ab" "name" "type" "dose" "dose_times" "administration" "notes" "original_txt" "eucast_version"
"AMK" "Amikacin" "standard_dosage" "25-30 mg/kg" 1 "iv" "" "25-30 mg/kg x 1 iv" 13
"AMX" "Amoxicillin" "high_dosage" "2 g" 6 "iv" "" "2 g x 6 iv" 13
"AMX" "Amoxicillin" "standard_dosage" "1 g" 3 "iv" "" "1 g x 3-4 iv" 13
"AMX" "Amoxicillin" "high_dosage" "0.75-1 g" 3 "oral" "" "0.75-1 g x 3 oral" 13
"AMX" "Amoxicillin" "standard_dosage" "0.5 g" 3 "oral" "" "0.5 g x 3 oral" 13
"AMX" "Amoxicillin" "uncomplicated_uti" "0.5 g" 3 "oral" "" "0.5 g x 3 oral" 13
"AMC" "Amoxicillin/clavulanic acid" "high_dosage" "2 g + 0.2 g" 3 "iv" "" "(2 g amoxicillin + 0.2 g clavulanic acid) x 3 iv" 13
"AMC" "Amoxicillin/clavulanic acid" "standard_dosage" "1 g + 0.2 g" 3 "iv" "" "(1 g amoxicillin + 0.2 g clavulanic acid) x 3-4 iv" 13
"AMC" "Amoxicillin/clavulanic acid" "high_dosage" "0.875 g + 0.125 g" 3 "oral" "" "(0.875 g amoxicillin + 0.125 g clavulanic acid) x 3 oral" 13
"AMC" "Amoxicillin/clavulanic acid" "standard_dosage" "0.5 g + 0.125 g" 3 "oral" "" "(0.5 g amoxicillin + 0.125 g clavulanic acid) x 3 oral" 13
"AMC" "Amoxicillin/clavulanic acid" "uncomplicated_uti" "0.5 g + 0.125 g" 3 "oral" "" "(0.5 g amoxicillin + 0.125 g clavulanic acid) x 3 oral" 13
"AMP" "Ampicillin" "high_dosage" "2 g" 4 "iv" "" "2 g x 4 iv" 13
"AMP" "Ampicillin" "standard_dosage" "2 g" 3 "iv" "" "2 g x 3 iv" 13
"SAM" "Ampicillin/sulbactam" "high_dosage" "2 g + 1 g" 4 "iv" "" "(2 g ampicillin + 1 g sulbactam) x 4 iv" 13
"SAM" "Ampicillin/sulbactam" "standard_dosage" "2 g + 1 g" 3 "iv" "" "(2 g ampicillin + 1 g sulbactam) x 3 iv" 13
"AZM" "Azithromycin" "standard_dosage" "0.5 g" 1 "iv" "" "0.5 g x 1 iv" 13
"AZM" "Azithromycin" "standard_dosage" "0.5 g" 1 "oral" "" "0.5 g x 1 oral" 13
"ATM" "Aztreonam" "high_dosage" "2 g" 4 "iv" "" "2 g x 4 iv" 13
"ATM" "Aztreonam" "standard_dosage" "1 g" 3 "iv" "" "1 g x 3 iv" 13
"PEN" "Benzylpenicillin" "high_dosage" "1.2 g" 4 "iv" "" "1.2 g (2 MU) x 4-6 iv" 13
"PEN" "Benzylpenicillin" "standard_dosage" "0.6 g" 4 "iv" "" "0.6 g (1 MU) x 4 iv" 13
"CEC" "Cefaclor" "high_dosage" "1 g" 3 "oral" "" "1 g x 3 oral" 13
"CEC" "Cefaclor" "standard_dosage" "0.25-0.5 g" 3 "oral" "" "0.25-0.5 g x 3 oral" 13
"CFR" "Cefadroxil" "standard_dosage" "0.5-1 g" 2 "oral" "" "0.5-1 g x 2 oral" 13
"CFR" "Cefadroxil" "uncomplicated_uti" "0.5-1 g" 2 "oral" "" "0.5-1 g x 2 oral" 13
"LEX" "Cefalexin" "standard_dosage" "0.25-1 g" 2 "oral" "" "0.25-1 g x 2-3 oral" 13
"LEX" "Cefalexin" "uncomplicated_uti" "0.25-1 g" 2 "oral" "" "0.25-1 g x 2-3 oral" 13
"CZO" "Cefazolin" "high_dosage" "2 g" 3 "iv" "" "2 g x 3 iv" 13
"CZO" "Cefazolin" "standard_dosage" "1 g" 3 "iv" "" "1 g x 3 iv" 13
"FEP" "Cefepime" "high_dosage" "2 g" 3 "iv" "" "2 g x 3 iv" 13
"FEP" "Cefepime" "standard_dosage" "2 g" 2 "iv" "" "2 g x 2 iv" 13
"FDC" "Cefiderocol" "standard_dosage" "2 g" 3 "iv" "over 3 hours" "2 g x 3 iv over 3 hours" 13
"CFM" "Cefixime" "standard_dosage" "0.2-0.4 g" 2 "oral" "" "0.2-0.4 g x 2 oral" 13
"CFM" "Cefixime" "uncomplicated_uti" "0.2-0.4 g" 2 "oral" "" "0.2-0.4 g x 2 oral" 13
"CTX" "Cefotaxime" "high_dosage" "2 g" 3 "iv" "" "2 g x 3 iv" 13
"CTX" "Cefotaxime" "standard_dosage" "1 g" 3 "iv" "" "1 g x 3 iv" 13
"CPD" "Cefpodoxime" "standard_dosage" "0.1-0.2 g" 2 "oral" "" "0.1-0.2 g x 2 oral" 13
"CPD" "Cefpodoxime" "uncomplicated_uti" "0.1-0.2 g" 2 "oral" "" "0.1-0.2 g x 2 oral" 13
"CPT" "Ceftaroline" "high_dosage" "0.6 g" 3 "iv" "over 2 hours" "0.6 g x 3 iv over 2 hours" 13
"CPT" "Ceftaroline" "standard_dosage" "0.6 g" 2 "iv" "over 1 hour" "0.6 g x 2 iv over 1 hour" 13
"CAZ" "Ceftazidime" "high_dosage" "1 g" 6 "iv" "" "1 g x 6 iv" 13
"CAZ" "Ceftazidime" "standard_dosage" "1 g" 3 "iv" "" "1 g x 3 iv" 13
"CZA" "Ceftazidime/avibactam" "standard_dosage" "2 g + 0.5 g" 3 "iv" "over 2 hours" "(2 g ceftazidime + 0.5 g avibactam) x 3 iv over 2 hours" 13
"CTB" "Ceftibuten" "standard_dosage" "0.4 g" 1 "oral" "" "0.4 g x 1 oral" 13
"BPR" "Ceftobiprole" "standard_dosage" "0.5 g" 3 "iv" "over 2 hours" "0.5 g x 3 iv over 2 hours" 13
"CZT" "Ceftolozane/tazobactam" "standard_dosage" "1 g + 0.5 g" 3 "iv" "over 1 hour" "(1 g ceftolozane + 0.5 g tazobactam) x 3 iv over 1 hour" 13
"CZT" "Ceftolozane/tazobactam" "standard_dosage" "2 g + 1 g" 3 "iv" "over 1 hour" "(2 g ceftolozane + 1 g tazobactam) x 3 iv over 1 hour" 13
"CRO" "Ceftriaxone" "high_dosage" "4 g" 1 "iv" "" "4 g x 1 iv" 13
"CRO" "Ceftriaxone" "standard_dosage" "2 g" 1 "iv" "" "2 g x 1 iv" 13
"CXM" "Cefuroxime" "high_dosage" "1.5 g" 3 "iv" "" "1.5 g x 3 iv" 13
"CXM" "Cefuroxime" "standard_dosage" "0.75 g" 3 "iv" "" "0.75 g x 3 iv" 13
"CXM" "Cefuroxime" "high_dosage" "0.5 g" 2 "oral" "" "0.5 g x 2 oral" 13
"CXM" "Cefuroxime" "standard_dosage" "0.25 g" 2 "oral" "" "0.25 g x 2 oral" 13
"CXM" "Cefuroxime" "uncomplicated_uti" "0.25 g" 2 "oral" "" "0.25 g x 2 oral" 13
"CHL" "Chloramphenicol" "high_dosage" "2 g" 4 "iv" "" "2 g x 4 iv" 13
"CHL" "Chloramphenicol" "standard_dosage" "1 g" 4 "iv" "" "1 g x 4 iv" 13
"CHL" "Chloramphenicol" "high_dosage" "2 g" 4 "oral" "" "2 g x 4 oral" 13
"CHL" "Chloramphenicol" "standard_dosage" "1 g" 4 "oral" "" "1 g x 4 oral" 13
"CIP" "Ciprofloxacin" "high_dosage" "0.4 g" 3 "iv" "" "0.4 g x 3 iv" 13
"CIP" "Ciprofloxacin" "standard_dosage" "0.4 g" 2 "iv" "" "0.4 g x 2 iv" 13
"CIP" "Ciprofloxacin" "high_dosage" "0.75 g" 2 "oral" "" "0.75 g x 2 oral" 13
"CIP" "Ciprofloxacin" "standard_dosage" "0.5 g" 2 "oral" "" "0.5 g x 2 oral" 13
"CLR" "Clarithromycin" "high_dosage" "0.5 g" 2 "oral" "" "0.5 g x 2 oral" 13
"CLR" "Clarithromycin" "standard_dosage" "0.25 g" 2 "oral" "" "0.25 g x 2 oral" 13
"CLI" "Clindamycin" "high_dosage" "0.9 g" 3 "iv" "" "0.9 g x 3 iv" 13
"CLI" "Clindamycin" "standard_dosage" "0.6 g" 3 "iv" "" "0.6 g x 3 iv" 13
"CLI" "Clindamycin" "high_dosage" "0.3 g" 4 "oral" "" "0.3 g x 4 oral" 13
"CLI" "Clindamycin" "standard_dosage" "0.3 g" 2 "oral" "" "0.3 g x 2 oral" 13
"CLO" "Cloxacillin" "high_dosage" "2 g" 6 "iv" "" "2 g x 6 iv" 13
"CLO" "Cloxacillin" "standard_dosage" "1 g" 4 "iv" "" "1 g x 4 iv" 13
"CLO" "Cloxacillin" "high_dosage" "1 g" 4 "oral" "" "1 g x 4 oral" 13
"CLO" "Cloxacillin" "standard_dosage" "0.5 g" 4 "oral" "" "0.5 g x 4 oral" 13
"COL" "Colistin" "standard_dosage" "4.5 MU" 2 "iv" "loading dose of 9 MU" "4.5 MU x 2 iv with a loading dose of 9 MU" 13
"DAL" "Dalbavancin" "standard_dosage" "1 g" 1 "iv" "over 30 minutes on day 8" "1 g x 1 iv over 30 minutes on day 1 If needed, 0.5 g x 1 iv over 30 minutes on day 8" 13
"DAP" "Daptomycin" "standard_dosage" "4 mg/kg" 1 "iv" "" "4 mg/kg x 1 iv" 13
"DAP" "Daptomycin" "standard_dosage" "6 mg/kg" 1 "iv" "" "6 mg/kg x 1 iv" 13
"DFX" "Delafloxacin" "standard_dosage" "0.3 g" 2 "iv" "" "0.3 g x 2 iv" 13
"DFX" "Delafloxacin" "standard_dosage" "0.45 g" 2 "oral" "" "0.45 g x 2 oral" 13
"DIC" "Dicloxacillin" "high_dosage" "2 g" 6 "iv" "" "2 g x 6 iv" 13
"DIC" "Dicloxacillin" "standard_dosage" "1 g" 4 "iv" "" "1 g x 4 iv" 13
"DIC" "Dicloxacillin" "high_dosage" "2 g" 4 "oral" "" "2 g x 4 oral" 13
"DIC" "Dicloxacillin" "standard_dosage" "0.5-1 g" 4 "oral" "" "0.5-1 g x 4 oral" 13
"DOR" "Doripenem" "high_dosage" "1 g" 3 "iv" "over 1 hour" "1 g x 3 iv over 1 hour" 13
"DOR" "Doripenem" "standard_dosage" "0.5 g" 3 "iv" "over 1 hour" "0.5 g x 3 iv over 1 hour" 13
"DOX" "Doxycycline" "high_dosage" "0.2 g" 1 "oral" "" "0.2 g x 1 oral" 13
"DOX" "Doxycycline" "standard_dosage" "0.1 g" 1 "oral" "" "0.1 g x 1 oral" 13
"ERV" "Eravacycline" "standard_dosage" "1 mg/kg" 2 "iv" "" "1 mg/kg x 2 iv" 13
"ETP" "Ertapenem" "standard_dosage" "1 g" 1 "iv" "over 30 minutes" "1 g x 1 iv over 30 minutes" 13
"ERY" "Erythromycin" "high_dosage" "1 g" 4 "iv" "" "1 g x 4 iv" 13
"ERY" "Erythromycin" "standard_dosage" "0.5 g" 2 "iv" "" "0.5 g x 2-4 iv" 13
"ERY" "Erythromycin" "high_dosage" "1 g" 4 "oral" "" "1 g x 4 oral" 13
"ERY" "Erythromycin" "standard_dosage" "0.5 g" 2 "oral" "" "0.5 g x 2-4 oral" 13
"FDX" "Fidaxomicin" "standard_dosage" "0.2 g" 2 "oral" "" "0.2 g x 2 oral" 13
"FLC" "Flucloxacillin" "high_dosage" "2 g" 6 "iv" "" "2 g x 6 iv" 13
"FLC" "Flucloxacillin" "standard_dosage" "2 g" 4 "iv" "" "2 g x 4 iv (or 1 g x 6 iv)" 13
"FLC" "Flucloxacillin" "high_dosage" "1 g" 4 "oral" "" "1 g x 4 oral" 13
"FLC" "Flucloxacillin" "standard_dosage" "1 g" 3 "oral" "" "1 g x 3 oral" 13
"FOS" "Fosfomycin" "high_dosage" "8 g" 3 "iv" "" "8 g x 3 iv" 13
"FOS" "Fosfomycin" "standard_dosage" "4 g" 3 "iv" "" "4 g x 3 iv" 13
"FUS" "Fusidic acid" "high_dosage" "0.5 g" 3 "iv" "" "0.5 g x 3 iv" 13
"FUS" "Fusidic acid" "standard_dosage" "0.5 g" 2 "iv" "" "0.5 g x 2 iv" 13
"FUS" "Fusidic acid" "high_dosage" "0.5 g" 3 "oral" "" "0.5 g x 3 oral" 13
"FUS" "Fusidic acid" "standard_dosage" "0.5 g" 2 "oral" "" "0.5 g x 2 oral" 13
"GEN" "Gentamicin" "standard_dosage" "6-7 mg/kg" 1 "iv" "" "6-7 mg/kg x 1 iv" 13
"IPM" "Imipenem" "high_dosage" "1 g" 4 "iv" "over 30 minutes" "1 g x 4 iv over 30 minutes" 13
"IPM" "Imipenem" "standard_dosage" "0.5 g" 4 "iv" "over 30 minutes" "0.5 g x 4 iv over 30 minutes" 13
"IMR" "Imipenem/relebactam" "standard_dosage" "0.5 g + 0.25 g" 4 "iv" "over 30 minutes" "(0.5 g imipenem + 0.25 g relebactam) x 4 iv over 30 minutes" 13
"IMR" "Imipenem/relebactam" "standard_dosage" "0.5 g + 0.25 g" 4 "iv" "over 30 minutes" "(0.5 g imipenem + 0.25 g relebactam) x 4 iv over 30 minutes" 13
"LMU" "Lefamulin" "standard_dosage" "0.15 g" 2 "iv" "or 0.6 g x 2 oral" "0.15 g x 2 iv or 0.6 g x 2 oral" 13
"LMU" "Lefamulin" "standard_dosage" "0.6 g" 2 "oral" "" "0.6 g x 2 oral" 13
"LVX" "Levofloxacin" "high_dosage" "0.5 g" 2 "iv" "" "0.5 g x 2 iv" 13
"LVX" "Levofloxacin" "standard_dosage" "0.5 g" 1 "iv" "" "0.5 g x 1 iv" 13
"LVX" "Levofloxacin" "high_dosage" "0.5 g" 2 "oral" "" "0.5 g x 2 oral" 13
"LVX" "Levofloxacin" "standard_dosage" "0.5 g" 1 "oral" "" "0.5 g x 1 oral" 13
"LNZ" "Linezolid" "standard_dosage" "0.6 g" 2 "iv" "" "0.6 g x 2 iv" 13
"LNZ" "Linezolid" "standard_dosage" "0.6 g" 2 "oral" "" "0.6 g x 2 oral" 13
"MEM" "Meropenem" "high_dosage" "2 g" 3 "iv" "over 3 hours" "2 g x 3 iv over 3 hours" 13
"MEM" "Meropenem" "standard_dosage" "1 g" 3 "iv" "over 30 minutes" "1 g x 3 iv over 30 minutes" 13
"MEV" "Meropenem/vaborbactam" "standard_dosage" "2 g + 2 g" 3 "iv" "over 3 hours" "(2 g meropenem + 2 g vaborbactam) x 3 iv over 3 hours" 13
"MTR" "Metronidazole" "high_dosage" "0.5 g" 3 "iv" "" "0.5 g x 3 iv" 13
"MTR" "Metronidazole" "standard_dosage" "0.4 g" 3 "iv" "" "0.4 g x 3 iv" 13
"MTR" "Metronidazole" "high_dosage" "0.5 g" 3 "oral" "" "0.5 g x 3 oral" 13
"MTR" "Metronidazole" "standard_dosage" "0.4 g" 3 "oral" "" "0.4 g x 3 oral" 13
"MNO" "Minocycline" "standard_dosage" "0.1 g" 2 "oral" "" "0.1 g x 2 oral" 13
"MFX" "Moxifloxacin" "standard_dosage" "0.4 g" 1 "iv" "" "0.4 g x 1 iv" 13
"MFX" "Moxifloxacin" "standard_dosage" "0.4 g" 1 "oral" "" "0.4 g x 1 oral" 13
"OFX" "Ofloxacin" "high_dosage" "0.4 g" 2 "iv" "" "0.4 g x 2 iv" 13
"OFX" "Ofloxacin" "standard_dosage" "0.2 g" 2 "iv" "" "0.2 g x 2 iv" 13
"OFX" "Ofloxacin" "high_dosage" "0.4 g" 2 "oral" "" "0.4 g x 2 oral" 13
"OFX" "Ofloxacin" "standard_dosage" "0.2 g" 2 "oral" "" "0.2 g x 2 oral" 13
"ORI" "Oritavancin" "standard_dosage" "1.2 g" 1 "iv" "" "1.2 g x 1 (single dose) iv over 3 hours" 13
"OXA" "Oxacillin" "high_dosage" "1 g" 6 "iv" "" "1 g x 6 iv" 13
"OXA" "Oxacillin" "standard_dosage" "1 g" 4 "iv" "" "1 g x 4 iv" 13
"PHN" "Phenoxymethylpenicillin" "standard_dosage" "0.5-2 g" 3 "oral" "" "0.5-2 g x 3-4 oral" 13
"PIP" "Piperacillin" "high_dosage" "4 g" 4 "iv" "" "4 g x 4 iv by extended 3-hour infusion" 13
"PIP" "Piperacillin" "standard_dosage" "4 g" 4 "iv" "" "4 g x 4 iv" 13
"TZP" "Piperacillin/tazobactam" "high_dosage" "4 g + 0.5 g" 4 "iv" "" "(4 g piperacillin + 0.5 g tazobactam) x 4 iv by extended 3-hour infusion" 13
"TZP" "Piperacillin/tazobactam" "standard_dosage" "4 g + 0.5 g" 4 "iv" "" "(4 g piperacillin + 0.5 g tazobactam) x 4 iv 30-minute infusion or x 3 iv by extended 4-hour infusion" 13
"QDA" "Quinupristin/dalfopristin" "high_dosage" "7.5 mg/kg" 3 "iv" "" "7.5 mg/kg x 3 iv" 13
"QDA" "Quinupristin/dalfopristin" "standard_dosage" "7.5 mg/kg" 2 "iv" "" "7.5 mg/kg x 2 iv" 13
"RIF" "Rifampicin" "standard_dosage" "0.6 g" 1 "iv" "" "0.6 g x 1 iv" 13
"RIF" "Rifampicin" "standard_dosage" "0.6 g" 1 "oral" "" "0.6 g x 1 oral" 13
"RXT" "Roxithromycin" "standard_dosage" "0.15 g" 2 "oral" "" "0.15 g x 2 oral" 13
"SPT" "Spectinomycin" "standard_dosage" "2 g" 1 "im" "" "2 g x 1 im" 13
"TZD" "Tedizolid" "standard_dosage" "0.2 g" 1 "iv" "" "0.2 g x 1 iv" 13
"TZD" "Tedizolid" "standard_dosage" "0.2 g" 1 "oral" "" "0.2 g x 1 oral" 13
"TEC" "Teicoplanin" "high_dosage" "0.8 g" 1 "iv" "" "0.8 g x 1 iv" 13
"TEC" "Teicoplanin" "standard_dosage" "0.4 g" 1 "iv" "" "0.4 g x 1 iv" 13
"TLV" "Telavancin" "standard_dosage" "10 mg/kg" 1 "iv" "over 1 hour" "10 mg/kg x 1 iv over 1 hour" 13
"TLT" "Telithromycin" "standard_dosage" "0.8 g" 1 "oral" "" "0.8 g x 1 oral" 13
"TEM" "Temocillin" "high_dosage" "2 g" 3 "iv" "" "2 g x 3 iv" 13
"TEM" "Temocillin" "standard_dosage" "2 g" 2 "iv" "" "2 g x 2 iv" 13
"TCY" "Tetracycline" "high_dosage" "0.5 g" 4 "oral" "" "0.5 g x 4 oral" 13
"TCY" "Tetracycline" "standard_dosage" "0.25 g" 4 "oral" "" "0.25 g x 4 oral" 13
"TIC" "Ticarcillin" "high_dosage" "3 g" 6 "iv" "" "3 g x 6 iv" 13
"TIC" "Ticarcillin" "standard_dosage" "3 g" 4 "iv" "" "3 g x 4 iv" 13
"TCC" "Ticarcillin/clavulanic acid" "high_dosage" "3 g + 0.1 g" 6 "iv" "" "(3 g ticarcillin + 0.1 g clavulanic acid) x 6 iv" 13
"TCC" "Ticarcillin/clavulanic acid" "standard_dosage" "3 g + 0.1-0.2 g" 4 "iv" "" "(3 g ticarcillin + 0.1-0.2 g clavulanic acid) x 4 iv" 13
"TGC" "Tigecycline" "standard_dosage" "0.1 g" "loading dose followed by 50 mg x 2 iv" "0.1 g loading dose followed by 50 mg x 2 iv" 13
"TOB" "Tobramycin" "standard_dosage" "6-7 mg/kg" 1 "iv" "" "6-7 mg/kg x 1 iv" 13
"SXT" "Trimethoprim/sulfamethoxazole" "high_dosage" "0.24 g + 1.2 g" 2 "oral" "" "(0.24 g trimethoprim + 1.2 g sulfamethoxazole) x 2 oral" 13
"SXT" "Trimethoprim/sulfamethoxazole" "high_dosage" "0.24 g + 1.2 g" 2 "oral" "" "(0.24 g trimethoprim + 1.2 g sulfamethoxazole) x 2 oral or (0.24 g trimethoprim + 1.2 g sulfamethoxazole) x 2 iv" 13
"SXT" "Trimethoprim/sulfamethoxazole" "standard_dosage" "0.16 g + 0.8 g" 2 "oral" "" "(0.16 g trimethoprim + 0.8 g sulfamethoxazole) x 2 oral" 13
"SXT" "Trimethoprim/sulfamethoxazole" "standard_dosage" "0.16 g + 0.8 g" 2 "oral" "" "(0.16 g trimethoprim + 0.8 g sulfamethoxazole) x 2 oral or (0.16 g trimethoprim + 0.8 g sulfamethoxazole) x 2 iv" 13
"SXT" "Trimethoprim/sulfamethoxazole" "uncomplicated_uti" "0.16 g + 0.8 g" 2 "oral" "" "(0.16 g trimethoprim + 0.8 g sulfamethoxazole) x 2 oral" 13
"SXT" "Trimethoprim/sulfamethoxazole" "uncomplicated_uti" "0.16 g + 0.8 g" 2 "oral" "" "(0.16 g trimethoprim + 0.8 g sulfamethoxazole) x 2 oral" 13
"VAN" "Vancomycin" "standard_dosage" "1 g" 2 "iv" "" "1 g x 2 iv or 2 g x 1 by continuous infusion" 13
"AMK" "Amikacin" "standard_dosage" "25-30 mg/kg" 1 "iv" "" "25-30 mg/kg x 1 iv" 12 "AMK" "Amikacin" "standard_dosage" "25-30 mg/kg" 1 "iv" "" "25-30 mg/kg x 1 iv" 12
"AMX" "Amoxicillin" "high_dosage" "2 g" 6 "iv" "" "2 g x 6 iv" 12 "AMX" "Amoxicillin" "high_dosage" "2 g" 6 "iv" "" "2 g x 6 iv" 12
"AMX" "Amoxicillin" "standard_dosage" "1 g" 3 "iv" "" "1 g x 3-4 iv" 12 "AMX" "Amoxicillin" "standard_dosage" "1 g" 3 "iv" "" "1 g x 3-4 iv" 12

Binary file not shown.

BIN
data-raw/dosage.xpt Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -1,15 +1,15 @@
# ==================================================================== # # ==================================================================== #
# TITLE # # TITLE: #
# AMR: An R Package for Working with Antimicrobial Resistance Data # # AMR: An R Package for Working with Antimicrobial Resistance Data #
# # # #
# SOURCE # # SOURCE CODE: #
# https://github.com/msberends/AMR # # https://github.com/msberends/AMR #
# # # #
# CITE AS # # PLEASE CITE THIS SOFTWARE AS: #
# Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C # # Berends MS, Luz CF, Friedrich AW, Sinha BNM, Albers CJ, Glasner C #
# (2022). AMR: An R Package for Working with Antimicrobial Resistance # # (2022). AMR: An R Package for Working with Antimicrobial Resistance #
# Data. Journal of Statistical Software, 104(3), 1-31. # # Data. Journal of Statistical Software, 104(3), 1-31. #
# doi:10.18637/jss.v104.i03 # # https://doi.org/10.18637/jss.v104.i03 #
# # # #
# Developed at the University of Groningen and the University Medical # # Developed at the University of Groningen and the University Medical #
# Center Groningen in The Netherlands, in collaboration with many # # Center Groningen in The Netherlands, in collaboration with many #

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More