[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
stands.
> library(limma)
> y <- rnorm(1000)+rexp(1000)
> summary(backgroundCorrect(y,method="none"))
V1
Min. :-2.31793
1st Qu.: 0.06568
Median : 0.80836
Mean : 0.94394
3rd Qu.: 1.68893
Max. : 6.70242
>
summary(backgroundCorrect(y,method="normexp",normexp.method="mle"))
Corrected array 1
V1
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
V1
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
V1
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
Gordon
> any clues someone? any correct code around somewhere?
>
> best
> T.
More information about the Bioconductor
mailing list