Change the package path
This commit is contained in:
79
R/import.ngsfilter.R
Normal file
79
R/import.ngsfilter.R
Normal file
@@ -0,0 +1,79 @@
|
||||
#' @include 02_class_metabarcoding.data.R
|
||||
NULL
|
||||
|
||||
#' Read ngsfilter text file
|
||||
#'
|
||||
#' Reads the text file used for assigning reads to samples with the
|
||||
#' \code{ngsfilter} command of the \strong{OBITools} package.
|
||||
#'
|
||||
#' @param file a string containing the file name for the \code{ngsfilter} command.
|
||||
#' @param platewell a string corresponding to the tag used for storing the sample location
|
||||
#' in the PCR plate. Should be of the form "nbPlate_Well" (e.g. "01_A02").
|
||||
#' Default is \code{NULL}
|
||||
#' @return \code{\link{import.ngsfilter.data}} returns a \code{\link{data.frame}} instance
|
||||
#'
|
||||
#' @examples
|
||||
#' \dontshow{# switch the working directory to the data package directory}
|
||||
#' \dontshow{setwd(system.file("extdata", package="ROBITools"))}
|
||||
#'
|
||||
#' data(termes)
|
||||
#'
|
||||
#' # reading the termes_ngsfilt.txt file
|
||||
#' termes.ngs=import.ngsfilter.data('termes_ngsfilt.txt', platewell="position")
|
||||
#'
|
||||
#' # including ngsfilter data into termes data
|
||||
#' attr(termes, "samples") = termes.ngs[rownames(termes),]
|
||||
#'
|
||||
#' colnames(termes$samples)
|
||||
#'
|
||||
#' @seealso \code{\link{import.metabarcoding.data}} and \code{\link{read.obitab}} for other methods of data importation
|
||||
#'
|
||||
#' @author Lucie Zinger
|
||||
#' @keywords DNA metabarcoding
|
||||
#' @export
|
||||
#'
|
||||
import.ngsfilter.data = function(file, platewell=NULL) {
|
||||
raw = read.table(file, sep="\t")
|
||||
|
||||
#get samples names
|
||||
names = raw[,2]
|
||||
|
||||
#form first part of the output table (default ngsfilter text input)
|
||||
out = raw[,-c(2,3,ncol(raw))]
|
||||
colnames(out) = c("Experiment", "primerF", "primerR")
|
||||
|
||||
#add tags
|
||||
out[,c("tagF", "tagR")] = do.call("rbind", strsplit(as.vector(raw[,3]), "\\:"))
|
||||
|
||||
#collect nb and names of additionnal information
|
||||
max.add = max(unlist(lapply(strsplit(gsub("^F @ ","", raw[, ncol(raw)]), "; "), length)))
|
||||
names.add = unique(unlist(lapply(strsplit(unlist(strsplit(gsub("^F @ ","", raw[, ncol(raw)]), "; ")), "="), "[[",1)))
|
||||
|
||||
#form table of additionnal info
|
||||
form = lapply(strsplit(gsub("^F @ ","", raw[, ncol(raw)]), "; "), strsplit, "=")
|
||||
additionnals = as.data.frame(do.call("rbind", lapply(form, function(y) {
|
||||
val = rep(NA, , max.add)
|
||||
names(val) = names.add
|
||||
val[match(unlist(lapply(y, "[[", 1)), names(val))] = gsub(";", "",unlist(lapply(y, "[[", 2)))
|
||||
val
|
||||
})))
|
||||
|
||||
#create PCR plate coordinates
|
||||
if(!is.null(platewell)) {
|
||||
form = strsplit(as.vector(additionnals[, platewell]), "_")
|
||||
nbPlate = as.numeric(gsub("^0", "", unlist(lapply(form, "[[", 1))))
|
||||
wellPlate = unlist(lapply(form, "[[", 2))
|
||||
xPlate = as.numeric(gsub("[A-Z]", "", wellPlate))
|
||||
yPlate = as.numeric(as.factor(gsub("[0-9]*", "", wellPlate))) + 8*nbPlate
|
||||
|
||||
additionnals = additionnals[,-grep(platewell, colnames(additionnals))]
|
||||
out = data.frame(out, additionnals, nbPlate, wellPlate, xPlate, yPlate)
|
||||
}
|
||||
else {
|
||||
additionnals[,ncol(additionnals)] = gsub(";","", additionnals[,ncol(additionnals)])
|
||||
out = data.frame(out, additionnals)
|
||||
}
|
||||
|
||||
rownames(out) = names
|
||||
return(out)
|
||||
}
|
Reference in New Issue
Block a user