Files
ROBITools/R/taxonomy_classic_table.R
2018-02-20 06:40:29 +11:00

53 lines
1.8 KiB
R

#' @import ROBITaxonomy
#' @include 02_class_metabarcoding.data.R
NULL
#' Get classical taxonomy format
#'
#' Creates a table with the classical taxonomic description (from phylum to species)
#'
#' @param x a \code{\link{metabarcoding.data}} object
#' @param taxonomy a instance of \code{\linkS4class{taxonomy.obitools}}
#' @param coltaxid a the name of the column containing taxids to be used for creating classical taxonomic description
#'
#' @return returns a data.frame with the classical taxonomic description ("kingdom", "phylum", "class", "order", "family", "genus", "species"), as well as
#' sequence taxonomic assignment rank and scientific name for each sequences stored in the \code{\link{metabarcoding.data}} object
#'
#' @examples
#'
#' data(termes)
#'
#' taxo=default.taxonomy()
#'
#' termes.taxo.table = get.classic.taxonomy(termes, taxo, "taxid")
#' head(termes.taxo.table)
#'
#' attr(termes, "motus") = data.frame(termes$motus, termes.taxo.table)
#'
#'
#' @seealso \code{\linkS4class{taxonomy.obitools}}, and methods \code{\link{species}},\code{\link{genus}}, \code{\link{family}},\code{\link{kingdom}},
#' \code{\link{superkingdom}},\code{\link{taxonatrank}}, \code{\link{taxonmicank}}
#'
#' @author Lucie Zinger
#' @keywords taxonomy
#' @export
#'
get.classic.taxonomy = function(x, taxonomy, coltaxid) {
classic.taxo = c("kingdom", "phylum", "class", "order", "family", "genus", "species")
taxids = x$motus[,coltaxid]
out = as.data.frame(do.call("cbind", lapply(classic.taxo, function(y) {
scientificname(taxonomy, taxonatrank(taxonomy,taxids,y))
})))
colnames(out) = paste(classic.taxo, "_name_ok", sep="")
rownames(out) = colnames(x)
out$scientific_name_ok = scientificname(taxonomy, taxids)
out$taxonomic_rank_ok = taxonomicrank(taxonomy, taxids)
return(out)
}