Mercurial > repos > prog > lcmsmatching
diff MsDbInputDataFrameStream.R @ 0:e66bb061af06 draft
planemo upload for repository https://github.com/workflow4metabolomics/lcmsmatching.git commit 3529b25417f8e1a5836474c9adec4b696d35099d-dirty
author | prog |
---|---|
date | Tue, 12 Jul 2016 12:02:37 -0400 |
parents | |
children | 20d69a062da3 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MsDbInputDataFrameStream.R Tue Jul 12 12:02:37 2016 -0400 @@ -0,0 +1,85 @@ +if ( ! exists('MsDbInputDataFrameStream')) { # Do not load again if already loaded + + library(methods) + source('MsDbInputStream.R') + + ##################### + # CLASS DECLARATION # + ##################### + + MsDbInputDataFrameStream <- setRefClass("MsDbInputDataFrameStream", contains = 'MsDbInputStream', fields = list( .df = "ANY", .i = "integer")) + + ############### + # CONSTRUCTOR # + ############### + + MsDbInputDataFrameStream$methods( initialize = function(df = data.frame(), input.fields = msdb.get.dft.input.fields(), ...) { + + .df <<- df + .i <<- 0L + + callSuper(input.fields = input.fields, ...) + }) + + ########## + # GET MZ # + ########## + + MsDbInputDataFrameStream$methods( getMz = function() { + + if (.self$.i > 0 && .self$.i <= nrow(.self$.df) && ! is.null(.self$.input.fields[[MSDB.TAG.MZ]])) + return(.self$.df[.self$.i, .self$.input.fields[[MSDB.TAG.MZ]]]) + + return(NULL) + }) + + ########## + # GET RT # + ########## + + MsDbInputDataFrameStream$methods( getRt = function() { + + if (.self$.i > 0 && .self$.i <= nrow(.self$.df) && ! is.null(.self$.input.fields[[MSDB.TAG.RT]])) + return(.self$.df[.self$.i, .self$.input.fields[[MSDB.TAG.RT]]]) + + return(NULL) + }) + + ########### + # GET ALL # + ########### + + MsDbInputDataFrameStream$methods( getAll = function(but = NULL) { + + if (.self$.i > 0 && .self$.i <= nrow(.self$.df)) { + + vals <- .self$.df[.self$.i, , drop = FALSE] + + if ( ! is.null(but)) + vals <- vals[, ! colnames(vals) %in% .self$.input.fields[but], drop = FALSE] + + return(vals) + } + + return(NULL) + }) + + ############### + # NEXT VALUES # + ############### + + MsDbInputDataFrameStream$methods( nextValues = function() { + + if (.self$.i <= nrow(.self$.df)) + .i <<- .self$.i + 1L + }) + + ################### + # HAS NEXT VALUES # + ################### + + MsDbInputDataFrameStream$methods( hasNextValues = function() { + return(.self$.i < nrow(.self$.df)) + }) + +} # end of load safe guard