Author: Michael R. Crusoe <michael.crusoe@gmail.com>
Description: r-cran-locfit is non-free and not yet packaged for Debian
--- a/R/core.R
+++ b/R/core.R
@@ -156,7 +156,7 @@ NULL
 #' Wald significance tests (defined by \code{\link{nbinomWaldTest}}),
 #' or the likelihood ratio test on the difference in deviance between a
 #' full and reduced model formula (defined by \code{\link{nbinomLRT}})
-#' @param fitType either "parametric", "local", or "mean"
+#' @param fitType either "parametric", or "mean"
 #' for the type of fitting of dispersions to the mean intensity.
 #' See \code{\link{estimateDispersions}} for description.
 #' @param betaPrior whether or not to put a zero-mean normal prior on
@@ -206,7 +206,6 @@ NULL
 #' Michael I Love, Wolfgang Huber, Simon Anders: Moderated estimation of fold change and dispersion for RNA-seq data with DESeq2. Genome Biology 2014, 15:550. \url{http://dx.doi.org/10.1186/s13059-014-0550-8}
 #' @import BiocGenerics BiocParallel S4Vectors IRanges GenomicRanges SummarizedExperiment Biobase Rcpp methods
 #'
-#' @importFrom locfit locfit
 #' @importFrom genefilter rowVars filtered_p
 #' @importFrom Hmisc wtd.quantile
 #' 
@@ -242,14 +241,14 @@ NULL
 #'
 #' @export
 DESeq <- function(object, test=c("Wald","LRT"),
-                  fitType=c("parametric","local","mean"), betaPrior,
+                  fitType=c("parametric","mean"), betaPrior,
                   full=design(object), reduced, quiet=FALSE,
                   minReplicatesForReplace=7, modelMatrixType,
                   parallel=FALSE, BPPARAM=bpparam()) {
   # check arguments
   stopifnot(is(object, "DESeqDataSet"))
   test <- match.arg(test, choices=c("Wald","LRT"))
-  fitType <- match.arg(fitType, choices=c("parametric","local","mean"))
+  fitType <- match.arg(fitType, choices=c("parametric","mean"))
   stopifnot(is.logical(quiet))
   stopifnot(is.numeric(minReplicatesForReplace))
   stopifnot(is.logical(parallel))
@@ -507,7 +506,7 @@ estimateSizeFactorsForMatrix <- function
 #' examples below.
 #'
 #' @param object a DESeqDataSet
-#' @param fitType either "parametric", "local", or "mean"
+#' @param fitType either "parametric", or "mean"
 #' for the type of fitting of dispersions to the mean intensity.
 #' See \code{\link{estimateDispersions}} for description.
 #' @param outlierSD the number of standard deviations of log
@@ -721,7 +720,7 @@ estimateDispersionsGeneEst <- function(o
 
 #' @rdname estimateDispersionsGeneEst
 #' @export
-estimateDispersionsFit <- function(object,fitType=c("parametric","local","mean"),
+estimateDispersionsFit <- function(object,fitType=c("parametric","mean"),
                                    minDisp=1e-8, quiet=FALSE) {
 
   if (is.null(mcols(object)$allZero)) {
@@ -738,7 +737,7 @@ estimateDispersionsFit <- function(objec
   ...then continue with testing using nbinomWaldTest or nbinomLRT")
   }
   
-  fitType <- match.arg(fitType, choices=c("parametric","local","mean"))
+  fitType <- match.arg(fitType, choices=c("parametric","mean"))
   stopifnot(length(fitType)==1)
   stopifnot(length(minDisp)==1)
   if (fitType == "parametric") {
@@ -752,18 +751,18 @@ estimateDispersionsFit <- function(objec
       fitType <- "local"
     }
   }
-  if (fitType == "local") {
-    dispFunction <- localDispersionFit(means = mcols(objectNZ)$baseMean[useForFit],
-                                       disps = mcols(objectNZ)$dispGeneEst[useForFit],
-                                       minDisp = minDisp)
-  }
+  #if (fitType == "local") {
+  #  dispFunction <- localDispersionFit(means = mcols(objectNZ)$baseMean[useForFit],
+  #                                     disps = mcols(objectNZ)$dispGeneEst[useForFit],
+  #                                     minDisp = minDisp)
+  #}
   if (fitType == "mean") {
     useForMean <- mcols(objectNZ)$dispGeneEst > 10*minDisp
     meanDisp <- mean(mcols(objectNZ)$dispGeneEst[useForMean],na.rm=TRUE,trim=0.001)
     dispFunction <- function(means) meanDisp
     attr( dispFunction, "mean" ) <- meanDisp
   }
-  if (!(fitType %in% c("parametric","local","mean"))) {
+  if (!(fitType %in% c("parametric","mean"))) {
     stop("unknown fitType")
   }
  
@@ -1838,16 +1837,17 @@ parametricDispersionFit <- function( mea
 
 # Local fit of dispersion to the mean intensity
 # fitting is done on log dispersion, log mean scale
-localDispersionFit <- function( means, disps, minDisp ) {
-  if (all(disps < minDisp*10)) {
-    return(rep(minDisp,length(disps)))
-  }
-  d <- data.frame(logDisps = log(disps), logMeans = log(means))
-  fit <- locfit(logDisps ~ logMeans, data=d[disps >= minDisp*10,,drop=FALSE],
-                weights = means[disps >= minDisp*10])
-  dispFunction <- function(means) exp(predict(fit, data.frame(logMeans=log(means))))
-  return(dispFunction)
-}
+# locfit is non-free and not packaged at this time for Debian
+#localDispersionFit <- function( means, disps, minDisp ) {
+#  if (all(disps < minDisp*10)) {
+#    return(rep(minDisp,length(disps)))
+#  }
+#  d <- data.frame(logDisps = log(disps), logMeans = log(means))
+#  fit <- locfit(logDisps ~ logMeans, data=d[disps >= minDisp*10,,drop=FALSE],
+#                weights = means[disps >= minDisp*10])
+#  dispFunction <- function(means) exp(predict(fit, data.frame(logMeans=log(means))))
+#  return(dispFunction)
+#}
 
 
 # convenience function for testing the log likelihood
--- a/R/methods.R
+++ b/R/methods.R
@@ -506,7 +506,7 @@ estimateSizeFactors.DESeqDataSet <- func
 setMethod("estimateSizeFactors", signature(object="DESeqDataSet"),
           estimateSizeFactors.DESeqDataSet)
 
-estimateDispersions.DESeqDataSet <- function(object, fitType=c("parametric","local","mean"),
+estimateDispersions.DESeqDataSet <- function(object, fitType=c("parametric","mean"),
                                              maxit=100, quiet=FALSE, modelMatrix=NULL) {
   # Temporary hack for backward compatibility with "old" DESeqDataSet
   # objects. Remove once all serialized DESeqDataSet objects around have
@@ -535,7 +535,7 @@ this column could have come in during co
     mcols(object) <- mcols(object)[,!(mcols(mcols(object))$type %in% c("intermediate","results")),drop=FALSE]
   }
   stopifnot(length(maxit)==1)
-  fitType <- match.arg(fitType, choices=c("parametric","local","mean"))
+  fitType <- match.arg(fitType, choices=c("parametric","mean"))
   
   noReps <- checkForExperimentalReplicates(object, modelMatrix)
   if (noReps) {
@@ -628,7 +628,7 @@ checkForExperimentalReplicates <- functi
 #' @rdname estimateDispersions
 #' @aliases estimateDispersions estimateDispersions,DESeqDataSet-method
 #' @param object a DESeqDataSet
-#' @param fitType either "parametric", "local", or "mean"
+#' @param fitType either "parametric", or "mean"
 #' for the type of fitting of dispersions to the mean intensity.
 #' \itemize{
 #'   \item parametric - fit a dispersion-mean relation of the form:
@@ -636,10 +636,6 @@ checkForExperimentalReplicates <- functi
 #'     via a robust gamma-family GLM. The coefficients \code{asymptDisp} and \code{extraPois}
 #'     are given in the attribute \code{coefficients} of the \code{\link{dispersionFunction}}
 #'     of the object.
-#'   \item local - use the locfit package to fit a local regression
-#'     of log dispersions over log base mean (normal scale means and dispersions
-#'     are input and output for \code{\link{dispersionFunction}}). The points
-#'     are weighted by normalized mean count in the local regression.
 #'   \item mean - use the mean of gene-wise dispersion estimates.
 #' }
 #' @param maxit control parameter: maximum number of iterations to allow for convergence
--- a/R/vst.R
+++ b/R/vst.R
@@ -53,12 +53,6 @@
 #' count data. The expression can be found in the file \file{vst.pdf}
 #' which is distributed with the vignette.
 #'
-#' \code{fitType="local"},
-#' the reciprocal of the square root of the variance of the normalized counts, as derived
-#' from the dispersion fit, is then numerically
-#' integrated, and the integral (approximated by a spline function) is evaluated for each
-#' count value in the column, yielding a transformed value. 
-#'
 #' \code{fitType="mean"}, a VST is applied for Negative Binomial distributed counts, 'k',
 #' with a fixed dispersion, 'a': ( 2 asinh(sqrt(a k)) - log(a) - log(4) )/log(2).
 #' 
@@ -202,7 +196,7 @@ getVarianceStabilizedData <- function(ob
     vst <- function(q) ( 2 * asinh(sqrt(alpha * q)) - log(alpha) - log(4) ) / log(2)
     return(vst(ncounts))
   } else {
-    stop( "fitType is not parametric, local or mean" )
+    stop( "fitType is not parametric, or mean" )
   }
 }
 
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -12,7 +12,7 @@ Description: Estimate variance-mean depe
 License: LGPL (>= 3)
 VignetteBuilder: knitr
 Imports: BiocGenerics (>= 0.7.5), Biobase, BiocParallel, genefilter,
-        methods, locfit, geneplotter, ggplot2, Hmisc, Rcpp (>= 0.11.0)
+        methods, geneplotter, ggplot2, Hmisc, Rcpp (>= 0.11.0)
 Depends: S4Vectors (>= 0.9.25), IRanges, GenomicRanges,
         SummarizedExperiment (>= 1.1.6)
 Suggests: testthat, knitr, BiocStyle, vsn, pheatmap, RColorBrewer, IHW,
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -88,7 +88,6 @@ importFrom(graphics,axis)
 importFrom(graphics,hist)
 importFrom(graphics,plot)
 importFrom(graphics,points)
-importFrom(locfit,locfit)
 importFrom(stats,Gamma)
 importFrom(stats,as.formula)
 importFrom(stats,coef)
--- a/tests/testthat/test_disp_fit.R
+++ b/tests/testthat/test_disp_fit.R
@@ -78,7 +78,7 @@ test_that("the fitting of dispersion giv
   # test fit alternative
   dds <- makeExampleDESeqDataSet()
   dds <- estimateSizeFactors(dds)
-  ddsLocal <- estimateDispersions(dds, fitType="local")
+#  ddsLocal <- estimateDispersions(dds, fitType="local")
   ddsMean <- estimateDispersions(dds, fitType="mean")
   ddsMed <- estimateDispersionsGeneEst(dds)
   useForMedian <- mcols(ddsMed)$dispGeneEst > 1e-7
--- a/tests/testthat/test_vst.R
+++ b/tests/testthat/test_vst.R
@@ -6,7 +6,7 @@ test_that("vst works", {
   dds <- estimateDispersionsGeneEst(dds)
   dds <- estimateDispersionsFit(dds, fitType="parametric")
   vsd <- varianceStabilizingTransformation(dds, blind=FALSE)
-  dds <- estimateDispersionsFit(dds, fitType="local")
+#  dds <- estimateDispersionsFit(dds, fitType="local")
   vsd <- varianceStabilizingTransformation(dds, blind=FALSE)
   dds <- estimateDispersionsFit(dds, fitType="mean")
   vsd <- varianceStabilizingTransformation(dds, blind=FALSE)  
@@ -30,5 +30,5 @@ test_that("vst works", {
   dds <- makeExampleDESeqDataSet(n=100, m=10, betaSD=1.5)
   nf <- matrix(exp(rnorm(1000,0,.2)),ncol=10)
   normalizationFactors(dds) <- nf
-  vsd <- varianceStabilizingTransformation(dds, fitType="local")
+#  vsd <- varianceStabilizingTransformation(dds, fitType="local")
 })
