mirror of
https://github.com/msberends/AMR.git
synced 2025-12-16 06:30:21 +01:00
226 lines
5.7 KiB
Markdown
226 lines
5.7 KiB
Markdown
# 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"
|
||
# }
|
||
```
|