# R/binningCosts-functions.R In sgibb/MALDIquantTools: Additional tools for MALDIquant

#### Documented in binningCosts

```### Copyright 2012 Sebastian Gibb
## <[email protected]>
##
## This is free software: you can redistribute it and/or modify
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
##
## It is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.
##

#' This function calculates binning costs (differences between masses pre and
#' post binning).
#'
#' @param pre list of \code{\linkS4class{MassPeaks}} (pre binning)
#' @param post list of \code{\linkS4class{MassPeaks}} (post binning)
#' @param relative logical, should costs represent by a costs vs mass position
#'  ratio?
#' @return a list of binning costs (percental differences)
#' @examples
#' pre <- list(createMassPeaks(mass=1:5, intensity=1:5),
#'             createMassPeaks(mass=1:5+0.1, intensity=1:5),
#'             createMassPeaks(mass=1:5+0.2, intensity=1:5))
#' post <- binPeaks(pre, tolerance=0.2)
#'
#' str(binningCosts(pre, post))
#' # List of 3
#' # \$ : num [1:5] 0.0909 0.0476 0.0323 0.0244 0.0196
#' # \$ : num [1:5] 0 0 0 0 0
#' # \$ : num [1:5] 0.0909 0.0476 0.0323 0.0244 0.0196
#' @export
binningCosts <- function(pre, post, relative=TRUE) {
MALDIquant:::.stopIfNotIsMassPeaksList(pre)
MALDIquant:::.stopIfNotIsMassPeaksList(post)
stopifnot(length(pre) == length(post))

costsList <- mapply(FUN=function(pre, post, relative) {
costs <- abs(pre@mass-post@mass)

if (relative) {
costs <- costs/post@mass
}

return(costs)
}, pre=pre, post=post, relative=relative, SIMPLIFY=FALSE)

names(costsList) <- names(post)

return(costsList)
}
```
sgibb/MALDIquantTools documentation built on May 26, 2017, 6:55 a.m.