Files
ROBIBarcodes/R/primer_table.R
2016-01-13 10:23:54 +01:00

58 lines
1.5 KiB
R

#Commentaires lus par roxygen
#'@include ROBIBarcodes.R
#'@import XML
#'
NULL
#NULL termine le commentaire pour roxygen
extractPrimers <-function(primer){
id=xmlAttrs(primer)["ID"]
name=xmlValue(xmlChildren(xmlChildren(primer)$name)$text)
sequence=xmlValue(xmlChildren(xmlChildren(primer)$sequence)$text)
coding=as.logical(xmlValue(xmlChildren(xmlChildren(primer)$coding)$text))
p=list(id=id, name=name, sequence=sequence, coding=coding)
return(p)
}
#Export pour rendre publique la fonction
#' Builds primer data frame from metabarcodedb
#'
#' The \code{primers.data.frame} function extracts all the primer information
#' from the \code{metabarcodedb} database.
#'
#' @param barcodedb a xml document containing a metabarcodedb.
#'
#' @return a \code{data.frame} describing primers.
#'
#' @examples
#' # load the XML library
#' library(XML)
#'
#' # load the example metabarcodedb database
#' db = xmlParseDoc(system.file("extdata/barcodedb.xml", package="ROBIBarcodes"))
#'
#' # extracts the primer table
#' primers.data.frame(db)
#'
#' @author Aurelie Bonin
#' @keywords metabarcodes
#'
#' @export
primers.data.frame <-function(barcodedb){
p=getNodeSet(db,
path="/obi:obimetabarcodedb/obi:primers/obi:primer" ,
namespaces=c(obi="http://metabarcoding.org/OBIMetabarcodes"))
primerTable=as.data.frame(do.call(rbind,lapply(p,extractPrimers)))
rownames(primerTable)=primerTable$id
primerTable=primerTable[,-1]
return(primerTable)
}