Skip to contents

# Get Properties of a Microorganism

Source: `R/mo_property.R`
`mo_property.Rd`

Use these functions to return a specific property of a microorganism based on the latest accepted taxonomy. All input values will be evaluated internally with `as.mo()`, which makes it possible to use microbial abbreviations, codes and names as input. See Examples.

## Usage

    mo_name(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_fullname(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_shortname(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_subspecies(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_species(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_genus(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_family(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_order(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_class(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_phylum(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_kingdom(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_domain(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_type(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_status(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_pathogenicity(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_gramstain(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      add_morphology = FALSE,
      ...
    )

    mo_is_gram_negative(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_is_gram_positive(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_is_yeast(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_is_intrinsic_resistant(
      x,
      ab,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_oxygen_tolerance(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_is_anaerobic(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_morphology(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_snomed(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_ref(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_authors(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_year(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_lpsn(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_mycobank(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_gbif(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_rank(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_taxonomy(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_synonyms(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_current(x, language = get_AMR_locale(), ...)

    mo_group_members(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_info(
      x,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_url(
      x,
      open = FALSE,
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

    mo_property(
      x,
      property = "fullname",
      language = get_AMR_locale(),
      keep_synonyms = getOption("AMR_keep_synonyms", FALSE),
      ...
    )

## Arguments

x

  Any character (vector) that can be coerced to a valid microorganism code with `as.mo()`. Can be left blank for auto-guessing the column containing microorganism codes if used in a data set, see Examples.

language

  Language to translate text like "no growth", which defaults to the system language (see `get_AMR_locale()`).

keep_synonyms

  A logical to indicate if outdated, previously valid taxonomic names must be preserved and not be corrected to currently accepted names. Do note that the term "synonym" is in this case jargon from the field of microbial taxonomy - it is not in place to denote that e.g. "Streptococcus Group A" is a synonym of S. pyogenes. Though this is practically the case, taxonomically it is not as "Streptococcus Group A" is not even a valid taxonomic name.

  The default is `FALSE`, which will return a note if outdated taxonomic names were processed. The default can be set with the package option `AMR_keep_synonyms`, i.e. `options(AMR_keep_synonyms = TRUE)` or `options(AMR_keep_synonyms = FALSE)`.

...

  Other arguments passed on to `as.mo()`, such as 'minimum_matching_score', 'ignore_pattern', and 'remove_from_input'.

add_morphology

  a logical to indicate whether the morphology (from `mo_morphology()`) should be added to the Gram stain result, e.g. `"Gram-negative rods"` instead of `"Gram-negative"`. The default is `FALSE`.

ab

  Any (vector of) text that can be coerced to a valid antibiotic drug code with `as.ab()`.

open

  Browse the URL using `browseURL()`.

property

  One of the column names of the microorganisms data set: `"mo"`, `"fullname"`, `"status"`, `"domain"`, `"kingdom"`, `"phylum"`, `"class"`, `"order"`, `"family"`, `"genus"`, `"species"`, `"subspecies"`, `"rank"`, `"ref"`, `"oxygen_tolerance"`, `"morphology"`, `"source"`, `"lpsn"`, `"lpsn_parent"`, `"lpsn_renamed_to"`, `"mycobank"`, `"mycobank_parent"`, `"mycobank_renamed_to"`, `"gbif"`, `"gbif_parent"`, `"gbif_renamed_to"`, `"prevalence"`, or `"snomed"`, or must be `"shortname"`.

## Value

- An integer in case of `mo_year()`

- An ordered factor in case of `mo_pathogenicity()`

- A list in case of `mo_taxonomy()`, `mo_synonyms()`, `mo_snomed()`, and `mo_info()`

- A logical in case of `mo_is_anaerobic()`, `mo_is_gram_negative()`, `mo_is_gram_positive()`, `mo_is_intrinsic_resistant()`, and `mo_is_yeast()`

- A named character in case of `mo_synonyms()` and `mo_url()`

- A character in all other cases

## Details

All functions will, at default, not keep old taxonomic properties, as synonyms are automatically replaced with the current taxonomy. Take for example Enterobacter aerogenes, which was initially named in 1960 but renamed to Klebsiella aerogenes in 2017:

- `mo_genus("Enterobacter aerogenes")` will return `"Klebsiella"` (with a note about the renaming)

- `mo_genus("Enterobacter aerogenes", keep_synonyms = TRUE)` will return `"Enterobacter"` (with a once-per-session warning that the name is outdated)

- `mo_ref("Enterobacter aerogenes")` will return `"Tindall et al., 2017"` (with a note about the renaming)

- `mo_ref("Enterobacter aerogenes", keep_synonyms = TRUE)` will return `"Hormaeche et al., 1960"` (with a once-per-session warning that the name is outdated)

`mo_ref()` returns the abbreviated authority of the nomenclatural act that created the queried name combination. When `keep_synonyms = FALSE` (default), this is the authority of the currently accepted name. When `keep_synonyms = TRUE`, this is the authority under which the queried (possibly outdated) name was published. Emendations (changes to the species description without a name change) are not reflected; only the combination or original description authority is returned.

The short name (`mo_shortname()`) returns the first character of the genus and the full species, such as `"E. coli"`, for species and subspecies. Exceptions are abbreviations of staphylococci (such as "CoNS", Coagulase-Negative Staphylococci) and beta-haemolytic streptococci (such as "GBS", Group B Streptococci). Please bear in mind that e.g. E. coli could mean Escherichia coli (kingdom of Bacteria) as well as Entamoeba coli (kingdom of Protozoa). Returning to the full name will be done using `as.mo()` internally, giving priority to bacteria and human pathogens, i.e. `"E. coli"` will always be considered Escherichia coli. As a result, `mo_fullname(mo_shortname("Entamoeba coli"))` returns `"Escherichia coli"`.

Following the formal introduction of the new kingdom rank into prokaryotic nomenclature in 2024 (doi:10.1099/ijsem.0.006242 ), `mo_kingdom()` and `mo_domain()` return different results for bacteria and archaea: `mo_kingdom()` returns the new formal kingdom (e.g. "Pseudomonadati", "Bacillati"), while `mo_domain()` returns the new domain (e.g. "Bacteria", "Archaea"). For non-prokaryotic organisms, both functions return identical results.

Determination of human pathogenicity (`mo_pathogenicity()`) is strongly based on Bartlett et al. (2022, doi:10.1099/mic.0.001269 ). This function returns a factor with the levels Pathogenic, Potentially pathogenic, Non-pathogenic, and Unknown.

Determination of the Gram stain (`mo_gramstain()` is based on the taxonomic kingdom and phylum. Originally, Cavalier-Smith defined the so-called subkingdoms Negibacteria and Posibacteria (2002, PMID 11837318), and only considered these phyla as Posibacteria: Actinobacteria, Chloroflexi, Firmicutes, and Tenericutes. These phyla were later renamed to Actinomycetota, Chloroflexota, Bacillota, and Mycoplasmatota (2021, PMID 34694987). Bacteria in these phyla are considered Gram-positive in this `AMR` package, except for members of the class Negativicutes (within phylum Bacillota) which are Gram-negative. All other bacteria are considered Gram-negative. Species outside the kingdom of Bacteria will return a value `NA`. Functions `mo_is_gram_negative()` and `mo_is_gram_positive()` always return `TRUE` or `FALSE` (or `NA` when the input is `NA` or the MO code is `UNKNOWN`), thus always return `FALSE` for species outside the taxonomic kingdom of Bacteria.

Determination of yeasts (`mo_is_yeast()`) is based on the taxonomic kingdom and class. Budding yeasts are yeasts that reproduce asexually through a process called budding, where a new cell develops from a small protrusion on the parent cell. Taxonomically, these are members of the phylum Ascomycota, class Saccharomycetes (also called Hemiascomycetes) or Pichiomycetes. True yeasts quite specifically refers to yeasts in the underlying order Saccharomycetales (such as Saccharomyces cerevisiae). Thus, for all microorganisms that are member of the taxonomic class Saccharomycetes or Pichiomycetes, the function will return `TRUE`. It returns `FALSE` otherwise (or `NA` when the input is `NA` or the MO code is `UNKNOWN`).

Determination of intrinsic resistance (`mo_is_intrinsic_resistant()`) is based on the intrinsic_resistant data set, which is based on 'EUCAST Expected Resistant Phenotypes' v1.2 (2023). The `mo_is_intrinsic_resistant()` function can be vectorised over both argument `x` (input for microorganisms) and `ab` (input for antimicrobials).

Determination of both bacterial oxygen tolerance (`mo_oxygen_tolerance()`) and morphology (`mo_morphology()`) are based on BacDive, see Source. The function `mo_is_anaerobic()` only returns `TRUE` if the oxygen tolerance is `"anaerobe"`, indicating 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. This MycoBank URL is used for fungi wherever available , this LPSN URL for bacteria wherever available, and this GBIF link otherwise.

SNOMED codes (`mo_snomed()`) was last updated on 16th of July, 2024. See Source and the microorganisms data set for more info.

Old taxonomic names (so-called 'synonyms') can be retrieved with `mo_synonyms()` (which will have the scientific reference as name), the current taxonomic name can be retrieved with `mo_current()`. Both functions return full names.

All output will be translated where possible.

## Matching Score for Microorganisms

This function uses `as.mo()` internally, which uses an advanced algorithm to translate arbitrary user input to valid taxonomy using a so-called matching score. You can read about this public algorithm on the MO matching score page.

## Source

- 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

- Freese, HM et al. (2026). TYGS and LPSN in 2025: a Global Core Biodata Resource for genome-based classification and nomenclature of prokaryotes within DSMZ Digital Diversity. Nucleic Acids Research, 54, D884–D891; doi:10.1093/nar/gkaf1110 . Accessed from https://lpsn.dsmz.de on 7th of May, 2026.

- Vincent, R et al (2013). MycoBank gearing up for new horizons. IMA Fungus, 4(2), 371-9; doi:10.5598/imafungus.2013.04.02.16 . Accessed from https://www.mycobank.org on 7th of May, 2026.

- Banki, O. et al. (2026). Catalogue of Life (2026-04-18 XR). Catalogue of Life Foundation, Amsterdam, Netherlands. doi:10.48580/dgxjw . Accessed from https://www.gbif.org on 7th of May, 2026.

- 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 . Accessed from https://bacdive.dsmz.de on 7th of May, 2026.

- Public Health Information Network Vocabulary Access and Distribution System (PHIN VADS). US Edition of SNOMED CT from 1 September 2020. Value Set Name 'Microorganism', OID 2.16.840.1.114222.4.11.1009 (v12). URL: https://www.cdc.gov/phin/php/phinvads/

- Bartlett A et al. (2022). A comprehensive list of bacterial pathogens infecting humans Microbiology 168:001269; doi:10.1099/mic.0.001269

## Download Our Reference Data

All reference data sets in the AMR package - including information on microorganisms, antimicrobials, and clinical breakpoints - are freely available for download in multiple formats: R, MS Excel, Apache Feather, Apache Parquet, SPSS, and Stata.

For maximum compatibility, we also provide machine-readable, tab-separated plain text files suitable for use in any software, including laboratory information systems.

Visit our website for direct download links, or explore the actual files in our GitHub repository.

## See also

Data set microorganisms

## Examples

    # taxonomic tree -----------------------------------------------------------

    mo_domain("Klebsiella pneumoniae")
    #> [1] "Bacteria"
    mo_kingdom("Klebsiella pneumoniae")
    #> [1] "Pseudomonadati"
    mo_phylum("Klebsiella pneumoniae")
    #> [1] "Pseudomonadota"
    mo_class("Klebsiella pneumoniae")
    #> [1] "Gammaproteobacteria"
    mo_order("Klebsiella pneumoniae")
    #> [1] "Enterobacterales"
    mo_family("Klebsiella pneumoniae")
    #> [1] "Enterobacteriaceae"
    mo_genus("Klebsiella pneumoniae")
    #> [1] "Klebsiella"
    mo_species("Klebsiella pneumoniae")
    #> [1] "pneumoniae"
    mo_subspecies("Klebsiella pneumoniae")
    #> [1] ""

    # all in one go
    mo_taxonomy("Klebsiella pneumoniae")
    #> $domain
    #> [1] "Bacteria"
    #>
    #> $kingdom
    #> [1] "Pseudomonadati"
    #>
    #> $phylum
    #> [1] "Pseudomonadota"
    #>
    #> $class
    #> [1] "Gammaproteobacteria"
    #>
    #> $order
    #> [1] "Enterobacterales"
    #>
    #> $family
    #> [1] "Enterobacteriaceae"
    #>
    #> $genus
    #> [1] "Klebsiella"
    #>
    #> $species
    #> [1] "pneumoniae"
    #>
    #> $subspecies
    #> [1] ""
    #>

    # full names and short names -----------------------------------------------

    mo_name("Klebsiella pneumoniae")
    #> [1] "Klebsiella pneumoniae"
    mo_fullname("Klebsiella pneumoniae")
    #> [1] "Klebsiella pneumoniae"
    mo_shortname("Klebsiella pneumoniae")
    #> [1] "K. pneumoniae"

    # other properties ---------------------------------------------------------

    mo_morphology("Klebsiella pneumoniae")
    #> [1] "Rods"
    mo_gramstain("Klebsiella pneumoniae")
    #> [1] "Gram-negative"
    mo_gramstain("Klebsiella pneumoniae", add_morphology = TRUE)
    #> [1] "Gram-negative rods"
    mo_pathogenicity("Klebsiella pneumoniae")
    #> [1] Pathogenic
    #> Levels: Pathogenic < Potentially pathogenic < Non-pathogenic < Unknown
    mo_snomed("Klebsiella pneumoniae")
    #> [[1]]
    #> [1] "1098101000112102" "446870005"        "1098201000112108" "409801009"
    #> [5] "56415008"         "714315002"        "713926009"
    #>
    mo_type("Klebsiella pneumoniae")
    #> [1] "Bacteria"
    mo_rank("Klebsiella pneumoniae")
    #> [1] "species"
    mo_url("Klebsiella pneumoniae")
    #>                                Klebsiella pneumoniae
    #> "https://lpsn.dsmz.de/species/klebsiella-pneumoniae"
    mo_is_yeast(c("Candida", "Trichophyton", "Klebsiella"))
    #> [1]  TRUE FALSE FALSE

    mo_group_members("Streptococcus group A")
    #> [1] "Streptococcus pyogenes"
    mo_group_members(c(
      "Streptococcus group A",
      "Streptococcus group C",
      "Streptococcus group G",
      "Streptococcus group L"
    ))
    #> $`Streptococcus Group A`
    #> [1] "Streptococcus pyogenes"
    #>
    #> $`Streptococcus Group C`
    #> [1] "Streptococcus dysgalactiae"
    #> [2] "Streptococcus dysgalactiae dysgalactiae"
    #> [3] "Streptococcus dysgalactiae equisimilis"
    #> [4] "Streptococcus equi"
    #> [5] "Streptococcus equi equi"
    #> [6] "Streptococcus equi ruminatorum"
    #> [7] "Streptococcus equi zooepidemicus"
    #>
    #> $`Streptococcus Group G`
    #> [1] "Streptococcus canis"
    #> [2] "Streptococcus dysgalactiae"
    #> [3] "Streptococcus dysgalactiae dysgalactiae"
    #> [4] "Streptococcus dysgalactiae equisimilis"
    #>
    #> $`Streptococcus Group L`
    #> [1] "Streptococcus dysgalactiae"
    #> [2] "Streptococcus dysgalactiae dysgalactiae"
    #> [3] "Streptococcus dysgalactiae equisimilis"
    #>

    # scientific reference -----------------------------------------------------

    mo_ref("Klebsiella aerogenes")
    #> [1] "Tindall et al., 2017"
    mo_authors("Klebsiella aerogenes")
    #> [1] "Tindall et al."
    mo_year("Klebsiella aerogenes")
    #> [1] 2017
    mo_synonyms("Klebsiella aerogenes")
    #>   Hormaeche et al., 1960     Bascomb et al., 1971
    #> "Enterobacter aerogenes"     "Klebsiella mobilis"
    mo_lpsn("Klebsiella aerogenes")
    #> [1] "777146"
    mo_gbif("Klebsiella aerogenes")
    #> [1] "CSHB4"
    mo_mycobank("Candida albicans")
    #> [1] "256187"
    mo_mycobank("Candida krusei")
    #> [1] "337013"
    mo_mycobank("Candida krusei", keep_synonyms = TRUE)
    #> Warning: `as.mo()` returned one outdated taxonomic name. Use `keep_synonyms = FALSE` to
    #> clean the input to currently accepted taxonomic names, or set the R option
    #> `AMR_keep_synonyms` to `FALSE`. This warning will be shown once per session.
    #> [1] "268707"

    # abbreviations known in the field -----------------------------------------

    mo_genus("MRSA")
    #> [1] "Staphylococcus"
    mo_species("MRSA")
    #> [1] "aureus"
    mo_shortname("VISA")
    #> [1] "S. aureus"
    mo_gramstain("VISA")
    #> [1] "Gram-positive"

    mo_genus("EHEC")
    #> [1] "Escherichia"
    mo_species("EIEC")
    #> [1] "coli"
    mo_name("UPEC")
    #> [1] "Escherichia coli"

    # known subspecies ---------------------------------------------------------

    mo_fullname("K. pneu rh")
    #> [1] "Klebsiella pneumoniae rhinoscleromatis"
    mo_shortname("K. pneu rh")
    #> [1] "K. pneumoniae"

    # \donttest{
    # Becker classification, see ?as.mo ----------------------------------------

    mo_fullname("Staph epidermidis")
    #> [1] "Staphylococcus epidermidis"
    mo_fullname("Staph epidermidis", Becker = TRUE)
    #> [1] "Coagulase-negative Staphylococcus (CoNS)"

    mo_shortname("Staph epidermidis")
    #> [1] "S. epidermidis"
    mo_shortname("Staph epidermidis", Becker = TRUE)
    #> [1] "CoNS"

    # Lancefield classification, see ?as.mo ------------------------------------

    mo_fullname("Strep agalactiae")
    #> [1] "Streptococcus agalactiae"
    mo_fullname("Strep agalactiae", Lancefield = TRUE)
    #> [1] "Streptococcus Group B"

    mo_shortname("Strep agalactiae")
    #> [1] "S. agalactiae"
    mo_shortname("Strep agalactiae", Lancefield = TRUE)
    #> [1] "GBS"

    # language support  --------------------------------------------------------

    mo_gramstain("Klebsiella pneumoniae", language = "de") # German
    #> [1] "Gramnegativ"
    mo_gramstain("Klebsiella pneumoniae", language = "nl") # Dutch
    #> [1] "Gram-negatief"
    mo_gramstain("Klebsiella pneumoniae", language = "es") # Spanish
    #> [1] "Gram negativo"
    mo_gramstain("Klebsiella pneumoniae", language = "el") # Greek
    #> [1] "Αρνητικό κατά Gram"
    mo_gramstain("Klebsiella pneumoniae", language = "uk") # Ukrainian
    #> [1] "Грамнегативні"

    # mo_type is equal to mo_domain, but mo_domain will remain untranslated
    mo_domain("Klebsiella pneumoniae")
    #> [1] "Bacteria"
    mo_type("Klebsiella pneumoniae")
    #> [1] "Bacteria"
    mo_domain("Klebsiella pneumoniae", language = "zh") # Chinese, no effect
    #> [1] "Bacteria"
    mo_type("Klebsiella pneumoniae", language = "zh") # Chinese, translated
    #> [1] "细菌"

    mo_fullname("S. pyogenes", Lancefield = TRUE, language = "de")
    #> [1] "Streptococcus Gruppe A"
    mo_fullname("S. pyogenes", Lancefield = TRUE, language = "uk")
    #> [1] "Streptococcus Група A"

    # other --------------------------------------------------------------------

    # gram stains and intrinsic resistance can be used as a filter in dplyr verbs
    if (require("dplyr")) {
      example_isolates %>%
        filter(mo_is_gram_positive()) %>%
        count(mo_genus(), sort = TRUE)
    }
    #> ℹ Using column mo as input for `mo_is_gram_positive()`
    #> ℹ Using column mo as input for `mo_genus()`
    #> # A tibble: 18 × 2
    #>    `mo_genus()`        n
    #>    <chr>           <int>
    #>  1 Staphylococcus    840
    #>  2 Streptococcus     275
    #>  3 Enterococcus       83
    #>  4 Corynebacterium    17
    #>  5 Micrococcus         6
    #>  6 Gemella             3
    #>  7 Aerococcus          2
    #>  8 Cutibacterium       1
    #>  9 Dermabacter         1
    #> 10 Fusibacter          1
    #> 11 Globicatella        1
    #> 12 Granulicatella      1
    #> 13 Lactobacillus       1
    #> 14 Leuconostoc         1
    #> 15 Listeria            1
    #> 16 Paenibacillus       1
    #> 17 Rothia              1
    #> 18 Schaalia            1
    if (require("dplyr")) {
      example_isolates %>%
        filter(mo_is_intrinsic_resistant(ab = "vanco")) %>%
        count(mo_genus(), sort = TRUE)
    }
    #> ℹ Using column mo as input for `mo_is_intrinsic_resistant()`
    #> ℹ Using column mo as input for `mo_genus()`
    #> # A tibble: 19 × 2
    #>    `mo_genus()`         n
    #>    <chr>            <int>
    #>  1 Escherichia        467
    #>  2 Klebsiella          77
    #>  3 Proteus             39
    #>  4 Pseudomonas         30
    #>  5 Serratia            25
    #>  6 Enterobacter        23
    #>  7 Citrobacter         11
    #>  8 Haemophilus          9
    #>  9 Acinetobacter        6
    #> 10 Morganella           6
    #> 11 Pantoea              4
    #> 12 Salmonella           3
    #> 13 Neisseria            2
    #> 14 Stenotrophomonas     2
    #> 15 Campylobacter        1
    #> 16 Enterococcus         1
    #> 17 Hafnia               1
    #> 18 Leuconostoc          1
    #> 19 Pseudescherichia     1

    # get a list with the complete taxonomy (from kingdom to subspecies)
    mo_taxonomy("Klebsiella pneumoniae")
    #> $domain
    #> [1] "Bacteria"
    #>
    #> $kingdom
    #> [1] "Pseudomonadati"
    #>
    #> $phylum
    #> [1] "Pseudomonadota"
    #>
    #> $class
    #> [1] "Gammaproteobacteria"
    #>
    #> $order
    #> [1] "Enterobacterales"
    #>
    #> $family
    #> [1] "Enterobacteriaceae"
    #>
    #> $genus
    #> [1] "Klebsiella"
    #>
    #> $species
    #> [1] "pneumoniae"
    #>
    #> $subspecies
    #> [1] ""
    #>

    # get a list with the taxonomy, the authors, Gram-stain,
    # SNOMED codes, and URL to the online database
    mo_info("Klebsiella pneumoniae")
    #> $mo
    #> [1] "B_KLBSL_PNMN"
    #>
    #> $rank
    #> [1] "species"
    #>
    #> $domain
    #> [1] "Bacteria"
    #>
    #> $kingdom
    #> [1] "Pseudomonadati"
    #>
    #> $phylum
    #> [1] "Pseudomonadota"
    #>
    #> $class
    #> [1] "Gammaproteobacteria"
    #>
    #> $order
    #> [1] "Enterobacterales"
    #>
    #> $family
    #> [1] "Enterobacteriaceae"
    #>
    #> $genus
    #> [1] "Klebsiella"
    #>
    #> $species
    #> [1] "pneumoniae"
    #>
    #> $subspecies
    #> [1] ""
    #>
    #> $status
    #> [1] "accepted"
    #>
    #> $synonyms
    #> NULL
    #>
    #> $gramstain
    #> [1] "Gram-negative"
    #>
    #> $morphology
    #> [1] "Rods"
    #>
    #> $oxygen_tolerance
    #> [1] "facultative anaerobe"
    #>
    #> $url
    #> [1] "https://lpsn.dsmz.de/species/klebsiella-pneumoniae"
    #>
    #> $ref
    #> [1] "Trevisan, 1887"
    #>
    #> $snomed
    #> [1] "1098101000112102" "446870005"        "1098201000112108" "409801009"
    #> [5] "56415008"         "714315002"        "713926009"
    #>
    #> $lpsn
    #> [1] "777151"
    #>
    #> $mycobank
    #> [1] NA
    #>
    #> $gbif
    #> [1] "CSHCH"
    #>
    #> $group_members
    #> character(0)
    #>
    # }