mirror of https://github.com/msberends/AMR.git
Updated `mo_gramstain()` to reflect current taxonomy, fixes #83
This commit is contained in:
parent
6017f81e74
commit
510140fc55
|
@ -1,6 +1,6 @@
|
||||||
Package: AMR
|
Package: AMR
|
||||||
Version: 1.8.2.9054
|
Version: 1.8.2.9056
|
||||||
Date: 2022-11-28
|
Date: 2022-12-09
|
||||||
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
|
||||||
|
|
2
NEWS.md
2
NEWS.md
|
@ -1,4 +1,4 @@
|
||||||
# AMR 1.8.2.9054
|
# AMR 1.8.2.9056
|
||||||
|
|
||||||
This version will eventually become v2.0! We're happy to reach a new major milestone soon!
|
This version will eventually become v2.0! We're happy to reach a new major milestone soon!
|
||||||
|
|
||||||
|
|
|
@ -45,9 +45,9 @@
|
||||||
#'
|
#'
|
||||||
#' Since the top-level of the taxonomy is sometimes referred to as 'kingdom' and sometimes as 'domain', the functions [mo_kingdom()] and [mo_domain()] return the exact same results.
|
#' Since the top-level of the taxonomy is sometimes referred to as 'kingdom' and sometimes as 'domain', the functions [mo_kingdom()] and [mo_domain()] return the exact same results.
|
||||||
#'
|
#'
|
||||||
#' The Gram stain - [mo_gramstain()] - will be determined based on the taxonomic kingdom and phylum. According to Cavalier-Smith (2002, [PMID 11837318](https://pubmed.ncbi.nlm.nih.gov/11837318)), who defined subkingdoms Negibacteria and Posibacteria, only these phyla are Posibacteria: Actinobacteria, Chloroflexi, Firmicutes and Tenericutes. These bacteria are considered Gram-positive, except for members of the class Negativicutes which are Gram-negative. Members of other bacterial phyla are all 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` (except when the input is `NA` or the MO code is `UNKNOWN`), thus always return `FALSE` for species outside the taxonomic kingdom of Bacteria.
|
#' The Gram stain - [mo_gramstain()] - will be determined based on the taxonomic kingdom and phylum. Originally, Cavalier-Smith defined the so-called subkingdoms Negibacteria and Posibacteria (2002, [PMID 11837318](https://pubmed.ncbi.nlm.nih.gov/11837318/)), and only considered these phyla as Posibacteria: Actinobacteria, Chloroflexi, Firmicutes, and Tenericutes. All of these phyla were renamed to Actinomycetota, Chloroflexota, Bacillota, and Mycoplasmatota (2021, [PMID 34694987](https://pubmed.ncbi.nlm.nih.gov/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()] - will be based on the taxonomic kingdom and class. *Budding yeasts* are fungi of the phylum Ascomycetes, class Saccharomycetes (also called Hemiascomycetes). *True yeasts* are aggregated into the underlying order Saccharomycetales. Thus, for all microorganisms that are fungi and member of the taxonomic class Saccharomycetes, the function will return `TRUE`. It returns `FALSE` otherwise (except when the input is `NA` or the MO code is `UNKNOWN`).
|
#' Determination of yeasts - [mo_is_yeast()] - will be based on the taxonomic kingdom and class. *Budding yeasts* are fungi of the phylum Ascomycota, class Saccharomycetes (also called Hemiascomycetes). *True yeasts* are aggregated into the underlying order Saccharomycetales. Thus, for all microorganisms that are member of the taxonomic class Saccharomycetes, the function will return `TRUE`. It returns `FALSE` otherwise (or `NA` when the input is `NA` or the MO code is `UNKNOWN`).
|
||||||
#'
|
#'
|
||||||
#' Intrinsic resistance - [mo_is_intrinsic_resistant()] - will be determined based on the [intrinsic_resistant] data set, which is based on `r format_eucast_version_nr(3.3)`. The [mo_is_intrinsic_resistant()] functions can be vectorised over arguments `x` (input for microorganisms) and over `ab` (input for antibiotics).
|
#' Intrinsic resistance - [mo_is_intrinsic_resistant()] - will be determined based on the [intrinsic_resistant] data set, which is based on `r format_eucast_version_nr(3.3)`. The [mo_is_intrinsic_resistant()] functions can be vectorised over arguments `x` (input for microorganisms) and over `ab` (input for antibiotics).
|
||||||
#'
|
#'
|
||||||
|
@ -400,13 +400,17 @@ mo_gramstain <- function(x, language = get_AMR_locale(), keep_synonyms = getOpti
|
||||||
# overwrite these 4 phyla with Gram-positives
|
# overwrite these 4 phyla with Gram-positives
|
||||||
# Source: https://itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&search_value=956097 (Cavalier-Smith, 2002)
|
# Source: https://itis.gov/servlet/SingleRpt/SingleRpt?search_topic=TSN&search_value=956097 (Cavalier-Smith, 2002)
|
||||||
x[(mo_phylum(x.mo, language = NULL, keep_synonyms = keep_synonyms) %in% c(
|
x[(mo_phylum(x.mo, language = NULL, keep_synonyms = keep_synonyms) %in% c(
|
||||||
|
# no longer in use, does not hurt to keep here:
|
||||||
"Actinobacteria",
|
"Actinobacteria",
|
||||||
"Chloroflexi",
|
"Chloroflexi",
|
||||||
"Firmicutes",
|
"Firmicutes",
|
||||||
"Tenericutes",
|
"Tenericutes",
|
||||||
"Bacillota" # this one is new! It was renamed from Firmicutes by Gibbons et al., 2021
|
"Actinomycetota", # since 2021, old name was Actinobacteria
|
||||||
|
"Chloroflexota", # since 2021, old name was Chloroflexi
|
||||||
|
"Bacillota", # since 2021, old name was Firmicutes
|
||||||
|
"Mycoplasmatota" # since 2021, old name was Tenericutes
|
||||||
) &
|
) &
|
||||||
# but class Negativicutes (of phylum Firmicutes) 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 == "B_GRAMP"] <- "Gram-positive"
|
||||||
|
|
|
@ -44,6 +44,43 @@ expect_equal(mo_shortname("Staphylococcus aureus", Becker = "all", language = "e
|
||||||
expect_equal(mo_shortname("Streptococcus agalactiae"), "S. agalactiae")
|
expect_equal(mo_shortname("Streptococcus agalactiae"), "S. agalactiae")
|
||||||
expect_equal(mo_shortname("Streptococcus agalactiae", Lancefield = TRUE), "GBS")
|
expect_equal(mo_shortname("Streptococcus agalactiae", Lancefield = TRUE), "GBS")
|
||||||
|
|
||||||
|
# check gram stain determination, to prevent we lag after a taxonomic renaming
|
||||||
|
current_grampos_phyla <- c(
|
||||||
|
"Actinomycetota", # since 2021, old name was Actinobacteria
|
||||||
|
"Chloroflexota", # since 2021, old name was Chloroflexi
|
||||||
|
"Bacillota", # since 2021, old name was Firmicutes
|
||||||
|
"Mycoplasmatota" # since 2021, old name was Tenericutes
|
||||||
|
)
|
||||||
|
expect_true(all(current_grampos_phyla %in% microorganisms$phylum, na.rm = TRUE))
|
||||||
|
current_grampos_classes <- c(
|
||||||
|
"",
|
||||||
|
"Acidimicrobiia",
|
||||||
|
"Actinomycetes",
|
||||||
|
"Anaerolineae",
|
||||||
|
"Ardenticatenia",
|
||||||
|
"Bacilli",
|
||||||
|
"Caldilineae",
|
||||||
|
"Chloroflexia",
|
||||||
|
"Clostridia",
|
||||||
|
"Coriobacteriia",
|
||||||
|
"Culicoidibacteria",
|
||||||
|
"Dehalococcoidia",
|
||||||
|
"Erysipelotrichia",
|
||||||
|
"Ktedonobacteria",
|
||||||
|
"Limnochordia",
|
||||||
|
"Mollicutes",
|
||||||
|
"Negativicutes",
|
||||||
|
"Nitriliruptoria",
|
||||||
|
"Rubrobacteria",
|
||||||
|
"Tepidiformia",
|
||||||
|
"Thermoflexia",
|
||||||
|
"Thermoleophilia",
|
||||||
|
"Thermolithobacteria",
|
||||||
|
"Tissierellia"
|
||||||
|
)
|
||||||
|
expect_identical(sort(unique(microorganisms[which(microorganisms$phylum %in% current_grampos_phyla), "class", drop = TRUE])),
|
||||||
|
current_grampos_classes)
|
||||||
|
|
||||||
expect_equal(mo_species("Escherichia coli"), "coli")
|
expect_equal(mo_species("Escherichia coli"), "coli")
|
||||||
expect_equal(mo_subspecies("Escherichia coli"), "")
|
expect_equal(mo_subspecies("Escherichia coli"), "")
|
||||||
expect_equal(mo_type("Escherichia coli", language = "en"), "Bacteria")
|
expect_equal(mo_type("Escherichia coli", language = "en"), "Bacteria")
|
||||||
|
@ -72,8 +109,7 @@ expect_true(mo_url("Candida albicans") %like% "gbif.org")
|
||||||
expect_true(mo_url("Escherichia coli") %like% "lpsn.dsmz.de")
|
expect_true(mo_url("Escherichia coli") %like% "lpsn.dsmz.de")
|
||||||
|
|
||||||
# test integrity
|
# test integrity
|
||||||
MOs <- microorganisms
|
expect_identical(microorganisms$fullname, mo_fullname(microorganisms$fullname, language = "en", keep_synonyms = TRUE))
|
||||||
expect_identical(MOs$fullname, mo_fullname(MOs$fullname, language = "en", keep_synonyms = TRUE))
|
|
||||||
|
|
||||||
# check languages
|
# check languages
|
||||||
expect_equal(mo_type("Escherichia coli", language = "de"), "Bakterien")
|
expect_equal(mo_type("Escherichia coli", language = "de"), "Bakterien")
|
||||||
|
|
|
@ -296,9 +296,9 @@ The short name - \code{\link[=mo_shortname]{mo_shortname()}} - almost always ret
|
||||||
|
|
||||||
Since the top-level of the taxonomy is sometimes referred to as 'kingdom' and sometimes as 'domain', the functions \code{\link[=mo_kingdom]{mo_kingdom()}} and \code{\link[=mo_domain]{mo_domain()}} return the exact same results.
|
Since the top-level of the taxonomy is sometimes referred to as 'kingdom' and sometimes as 'domain', the functions \code{\link[=mo_kingdom]{mo_kingdom()}} and \code{\link[=mo_domain]{mo_domain()}} return the exact same results.
|
||||||
|
|
||||||
The Gram stain - \code{\link[=mo_gramstain]{mo_gramstain()}} - will be determined based on the taxonomic kingdom and phylum. According to Cavalier-Smith (2002, \href{https://pubmed.ncbi.nlm.nih.gov/11837318}{PMID 11837318}), who defined subkingdoms Negibacteria and Posibacteria, only these phyla are Posibacteria: Actinobacteria, Chloroflexi, Firmicutes and Tenericutes. These bacteria are considered Gram-positive, except for members of the class Negativicutes which are Gram-negative. Members of other bacterial phyla are all considered Gram-negative. Species outside the kingdom of Bacteria will return a value \code{NA}. Functions \code{\link[=mo_is_gram_negative]{mo_is_gram_negative()}} and \code{\link[=mo_is_gram_positive]{mo_is_gram_positive()}} always return \code{TRUE} or \code{FALSE} (except when the input is \code{NA} or the MO code is \code{UNKNOWN}), thus always return \code{FALSE} for species outside the taxonomic kingdom of Bacteria.
|
The Gram stain - \code{\link[=mo_gramstain]{mo_gramstain()}} - will be determined based on the taxonomic kingdom and phylum. Originally, Cavalier-Smith defined the so-called subkingdoms Negibacteria and Posibacteria (2002, \href{https://pubmed.ncbi.nlm.nih.gov/11837318/}{PMID 11837318}), and only considered these phyla as Posibacteria: Actinobacteria, Chloroflexi, Firmicutes, and Tenericutes. All of these phyla were renamed to Actinomycetota, Chloroflexota, Bacillota, and Mycoplasmatota (2021, \href{https://pubmed.ncbi.nlm.nih.gov/34694987/}{PMID 34694987}). Bacteria in these phyla are considered Gram-positive in this \code{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 \code{NA}. Functions \code{\link[=mo_is_gram_negative]{mo_is_gram_negative()}} and \code{\link[=mo_is_gram_positive]{mo_is_gram_positive()}} always return \code{TRUE} or \code{FALSE} (or \code{NA} when the input is \code{NA} or the MO code is \code{UNKNOWN}), thus always return \code{FALSE} for species outside the taxonomic kingdom of Bacteria.
|
||||||
|
|
||||||
Determination of yeasts - \code{\link[=mo_is_yeast]{mo_is_yeast()}} - will be based on the taxonomic kingdom and class. \emph{Budding yeasts} are fungi of the phylum Ascomycetes, class Saccharomycetes (also called Hemiascomycetes). \emph{True yeasts} are aggregated into the underlying order Saccharomycetales. Thus, for all microorganisms that are fungi and member of the taxonomic class Saccharomycetes, the function will return \code{TRUE}. It returns \code{FALSE} otherwise (except when the input is \code{NA} or the MO code is \code{UNKNOWN}).
|
Determination of yeasts - \code{\link[=mo_is_yeast]{mo_is_yeast()}} - will be based on the taxonomic kingdom and class. \emph{Budding yeasts} are fungi of the phylum Ascomycota, class Saccharomycetes (also called Hemiascomycetes). \emph{True yeasts} are aggregated into the underlying order Saccharomycetales. Thus, for all microorganisms that are member of the taxonomic class Saccharomycetes, the function will return \code{TRUE}. It returns \code{FALSE} otherwise (or \code{NA} when the input is \code{NA} or the MO code is \code{UNKNOWN}).
|
||||||
|
|
||||||
Intrinsic resistance - \code{\link[=mo_is_intrinsic_resistant]{mo_is_intrinsic_resistant()}} - will be determined based on the \link{intrinsic_resistant} data set, which is based on \href{https://www.eucast.org/expert_rules_and_expected_phenotypes/}{'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3} (2021). The \code{\link[=mo_is_intrinsic_resistant]{mo_is_intrinsic_resistant()}} functions can be vectorised over arguments \code{x} (input for microorganisms) and over \code{ab} (input for antibiotics).
|
Intrinsic resistance - \code{\link[=mo_is_intrinsic_resistant]{mo_is_intrinsic_resistant()}} - will be determined based on the \link{intrinsic_resistant} data set, which is based on \href{https://www.eucast.org/expert_rules_and_expected_phenotypes/}{'EUCAST Expert Rules' and 'EUCAST Intrinsic Resistance and Unusual Phenotypes' v3.3} (2021). The \code{\link[=mo_is_intrinsic_resistant]{mo_is_intrinsic_resistant()}} functions can be vectorised over arguments \code{x} (input for microorganisms) and over \code{ab} (input for antibiotics).
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue