Change the package path
This commit is contained in:
56
R/read.ngsfilter.R
Normal file
56
R/read.ngsfilter.R
Normal file
@@ -0,0 +1,56 @@
|
||||
#' @include 02_class_metabarcoding.data.R
|
||||
NULL
|
||||
|
||||
#' Read an OBITools ngsfilter file
|
||||
#'
|
||||
#' Reads a ngsfilter file as formatted for the OBITools. For now, needs to be tab delimited till the "F" column.
|
||||
#' Any additionnal information needs to be space delimited.
|
||||
#'
|
||||
#' @seealso \code{\link{import.metabarcoding.data}}
|
||||
#' @author Lucie Zinger
|
||||
#' @keywords data import
|
||||
#' @export
|
||||
#'
|
||||
|
||||
read.ngsfilter <- function(filename, decimal='.', as.is=!stringsAsFactors, stringsAsFactors = default.stringsAsFactors()) {
|
||||
|
||||
t<-read.table(file=filename, header=F, sep="\t", as.is=T)
|
||||
beg <- t[,1:5]
|
||||
|
||||
colnames(beg) <- c('experiment','sample','tags','forward_primer','reverse_primer')
|
||||
if (length(unique(beg$sample))==nrow(beg))
|
||||
rownames(beg) <- beg$sample
|
||||
end <- t[,c(2,6)]
|
||||
|
||||
#F <- unlist(lapply(end$V6, function(x) strsplit(x,"@")[[1]][1]))
|
||||
rawextras <- unlist(lapply(end$V6, function(x) strsplit(x,"@")[[1]][2]))
|
||||
|
||||
rawextras <- lapply(rawextras, function(s) strsplit(s, '; ')[[1]])
|
||||
rawextras <- lapply(rawextras, function(l) unlist(lapply(l, function(s) sub("^ +","",s))))
|
||||
rawextras <- lapply(rawextras, function(l) unlist(lapply(l, function(s) sub(" +$","",s))))
|
||||
|
||||
|
||||
rawextras <- lapply(rawextras, function(l) unlist(lapply(l, function(s) strsplit(s,"="))))
|
||||
|
||||
|
||||
columnnames <- unique(unlist(lapply(rawextras, function(l) l[seq(1,length(l),2)])))
|
||||
|
||||
m <- matrix(nrow=nrow(end), ncol=length(columnnames))
|
||||
colnames(m) <- columnnames
|
||||
m <- as.data.frame(m)
|
||||
|
||||
|
||||
#print(head(rawextras))
|
||||
|
||||
|
||||
tt <- lapply(rawextras, function(l) list(l[seq(1,length(l),2)],l[seq(2,length(l),2)]))
|
||||
invisible(lapply(1:length(tt), function(i){m[i,tt[[i]][[1]]] <<- tt[[i]][[2]]}))
|
||||
|
||||
invisible(lapply(colnames(m), function(n) m[,n] <<- type.convert(m[,n], dec=decimal, as.is=as.is)))
|
||||
|
||||
ngs = cbind(beg, m)
|
||||
rownames(ngs) = ngs$sample
|
||||
class(ngs)<-c('ngsfilter.data',class(ngs))
|
||||
|
||||
return(ngs)
|
||||
}
|
Reference in New Issue
Block a user