[BioC] limma normexp background correction bug?

Gordon K Smyth smyth at wehi.EDU.AU
Wed Oct 28 01:34:06 CET 2009

Dear Tobias,

When you claim that software has a bug, you need to give a code example 
which others can run, so that we can see what you mean.  Here's an example 
of such code.  This example which shows that all the different normexp 
variants in backgroundCorrect() give similar but slightly different 
results, just as they are supposed to.  Note that mle gives the best 
result in terms of preserving dynamic range, then saddle, then rma.  On 
all the evidence that I see, the backgroundCorrect code is correct as it 

> library(limma)
> y <- rnorm(1000)+rexp(1000)
> summary(backgroundCorrect(y,method="none"))
  Min.   :-2.31793
  1st Qu.: 0.06568
  Median : 0.80836
  Mean   : 0.94394
  3rd Qu.: 1.68893
  Max.   : 6.70242
Corrected array 1
  Min.   :0.2355
  1st Qu.:0.5135
  Median :0.7216
  Mean   :0.9713
  3rd Qu.:1.1371
  Max.   :5.8536
> summary(backgroundCorrect(y,method="normexp",normexp.method="saddle"))
Corrected array 1
  Min.   :0.2465
  1st Qu.:0.4941
  Median :0.6659
  Mean   :0.8795
  3rd Qu.:1.0002
  Max.   :5.5100
> summary(backgroundCorrect(y,method="normexp",normexp.method="rma"))
Loading required package: affy
Loading required package: Biobase

Welcome to Bioconductor

   Vignettes contain introductory material. To view, type
   'openVignette()'. To cite Bioconductor, see
   'citation("Biobase")' and for packages 'citation(pkgname)'.

Corrected array 1
  Min.   :0.2574
  1st Qu.:0.3737
  Median :0.4315
  Mean   :0.4848
  3rd Qu.:0.5236
  Max.   :2.6150

> Date: Mon, 26 Oct 2009 18:40:42 +0100
> From: Tobias Straub <tstraub at med.uni-muenchen.de>
> Subject: [BioC] limma normexp background correction bug?
> To: bioc list <bioconductor at stat.math.ethz.ch>
> hi
> i was playing around with various background correction methods using
> limma and discovered that whatever normexp.method i call for the
> "normexp" method, the result is exactly the same. in fact the more i
> digged into it the more i believe that normexp is not executed at all.
> looking at the code for backgroundCorrect it more looks like some junk
> of code has been lost. i also checked the latest dev version of limma
> (3.0.3), looks the same. instead of doing normexp the execution jumps
> into some "rma" kind of thing that just leaves me confused.

I suspect you're getting confused by the calling sequence of the switch() 
function and perhaps also the use of the Recall() function.

Best wishes

> any clues someone? any correct code around somewhere?
> best
> T.

More information about the Bioconductor mailing list