1
0
mirror of https://github.com/msberends/AMR.git synced 2025-12-16 06:30:21 +01:00
Files
AMR/reference/add_custom_microorganisms.md
2025-11-24 10:42:21 +00:00

226 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Add Custom Microorganisms
With `add_custom_microorganisms()` you can add your own custom
microorganisms, such the non-taxonomic outcome of laboratory analysis.
## Usage
``` r
add_custom_microorganisms(x)
clear_custom_microorganisms()
```
## Arguments
- x:
A [data.frame](https://rdrr.io/r/base/data.frame.html) resembling the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set, at least containing column "genus" (case-insensitive).
## Details
This function will fill in missing taxonomy for you, if specific
taxonomic columns are missing, see *Examples*.
**Important:** Due to how R works, the `add_custom_microorganisms()`
function has to be run in every R session - added microorganisms are not
stored between sessions and are thus lost when R is exited.
There are two ways to circumvent this and automate the process of adding
microorganisms:
**Method 1:** Using the package option
[`AMR_custom_mo`](https://amr-for-r.org/reference/AMR-options.md), which
is the preferred method. To use this method:
1. Create a data set in the structure of the
[microorganisms](https://amr-for-r.org/reference/microorganisms.md)
data set (containing at the very least column "genus") and save it
with [`saveRDS()`](https://rdrr.io/r/base/readRDS.html) to a
location of choice, e.g. `"~/my_custom_mo.rds"`, or any remote
location.
2. Set the file location to the package option
[`AMR_custom_mo`](https://amr-for-r.org/reference/AMR-options.md):
`options(AMR_custom_mo = "~/my_custom_mo.rds")`. This can even be a
remote file location, such as an https URL. Since options are not
saved between R sessions, it is best to save this option to the
`.Rprofile` file so that it will be loaded on start-up of R. To do
this, open the `.Rprofile` file using e.g.
`utils::file.edit("~/.Rprofile")`, add this text and save the file:
# Add custom microorganism codes:
options(AMR_custom_mo = "~/my_custom_mo.rds")
Upon package load, this file will be loaded and run through the
`add_custom_microorganisms()` function.
**Method 2:** Loading the microorganism directly from your `.Rprofile`
file. Note that the definitions will be stored in a user-specific R
file, which is a suboptimal workflow. To use this method:
1. Edit the `.Rprofile` file using e.g.
`utils::file.edit("~/.Rprofile")`.
2. Add a text like below and save the file:
# Add custom antibiotic drug codes:
AMR::add_custom_microorganisms(
data.frame(genus = "Enterobacter",
species = "asburiae/cloacae")
)
Use `clear_custom_microorganisms()` to clear the previously added
microorganisms.
## See also
[`add_custom_antimicrobials()`](https://amr-for-r.org/reference/add_custom_antimicrobials.md)
to add custom antimicrobials.
## Examples
``` r
# \donttest{
# a combination of species is not formal taxonomy, so
# this will result in "Enterobacter cloacae cloacae",
# since it resembles the input best:
mo_name("Enterobacter asburiae/cloacae")
#> [1] "Enterobacter asburiae"
# now add a custom entry - it will be considered by as.mo() and
# all mo_*() functions
add_custom_microorganisms(
data.frame(
genus = "Enterobacter",
species = "asburiae/cloacae"
)
)
#> Added Enterobacter asburiae/cloacae to the internal `microorganisms` data
#> set.
# E. asburiae/cloacae is now a new microorganism:
mo_name("Enterobacter asburiae/cloacae")
#> [1] "Enterobacter asburiae/cloacae"
# its code:
as.mo("Enterobacter asburiae/cloacae")
#> Class 'mo'
#> [1] CUSTOM1_ENTRB_ASB/
# all internal algorithms will work as well:
mo_name("Ent asburia cloacae")
#> [1] "Enterobacter asburiae/cloacae"
# and even the taxonomy was added based on the genus!
mo_family("E. asburiae/cloacae")
#> [1] "Enterobacteriaceae"
mo_gramstain("Enterobacter asburiae/cloacae")
#> [1] "Gram-negative"
mo_info("Enterobacter asburiae/cloacae")
#> $mo
#> [1] "CUSTOM1_ENTRB_ASB/"
#>
#> $rank
#> [1] "species"
#>
#> $kingdom
#> [1] "Bacteria"
#>
#> $phylum
#> [1] "Pseudomonadota"
#>
#> $class
#> [1] "Gammaproteobacteria"
#>
#> $order
#> [1] "Enterobacterales"
#>
#> $family
#> [1] "Enterobacteriaceae"
#>
#> $genus
#> [1] "Enterobacter"
#>
#> $species
#> [1] "asburiae/cloacae"
#>
#> $subspecies
#> [1] ""
#>
#> $status
#> [1] "accepted"
#>
#> $synonyms
#> NULL
#>
#> $gramstain
#> [1] "Gram-negative"
#>
#> $oxygen_tolerance
#> [1] NA
#>
#> $url
#> [1] ""
#>
#> $ref
#> [1] "Self-added, 2025"
#>
#> $snomed
#> [1] NA
#>
#> $lpsn
#> [1] NA
#>
#> $mycobank
#> [1] NA
#>
#> $gbif
#> [1] NA
#>
#> $group_members
#> character(0)
#>
# the function tries to be forgiving:
add_custom_microorganisms(
data.frame(
GENUS = "BACTEROIDES / PARABACTEROIDES SLASHLINE",
SPECIES = "SPECIES"
)
)
#> Added Bacteroides/Parabacteroides to the internal `microorganisms` data
#> set.
mo_name("BACTEROIDES / PARABACTEROIDES")
#> [1] "Bacteroides/Parabacteroides"
mo_rank("BACTEROIDES / PARABACTEROIDES")
#> [1] "genus"
# taxonomy still works, even though a slashline genus was given as input:
mo_family("Bacteroides/Parabacteroides")
#> [1] "Bacteroidaceae"
# for groups and complexes, set them as species or subspecies:
add_custom_microorganisms(
data.frame(
genus = "Citrobacter",
species = c("freundii", "braakii complex"),
subspecies = c("complex", "")
)
)
#> Added Citrobacter braakii complex and Citrobacter freundii complex to the
#> internal `microorganisms` data set.
mo_name(c("C. freundii complex", "C. braakii complex"))
#> [1] "Citrobacter freundii complex" "Citrobacter braakii complex"
mo_species(c("C. freundii complex", "C. braakii complex"))
#> [1] "freundii complex" "braakii complex"
mo_gramstain(c("C. freundii complex", "C. braakii complex"))
#> [1] "Gram-negative" "Gram-negative"
# }
```