[BioC] limma: out of bounds error
Gordon Smyth
smyth at wehi.edu.au
Wed Jan 21 02:13:35 MET 2004
Dear Juerg,
The problem that you mention arises from the fact that SMD does not store
blank spots, i.e., rows corresponding to blank spots are removed from the
database. Limma doesn't cope with this because it assumes complete arrays.
On the other hand, the marrayNorm package does have a facility to handle
this using the 'subset' slot of the marrayRaw object. Beware though that if
you use marrayNorm, bugs in the treatment of weights (FLAGs) means that you
will have to normalize your arrays one at a time.
Thanks for forwarding the code fix. I'm not sure that the simple fix that
you've implemented will always allocate spots to the correct tip groups
though. I have been discussing with Jean Yang how to bring the the 'subset'
concept into limma, but it is some way off.
Gordon
At 09:06 AM 21/01/2004, Straubhaar, Juerg wrote:
>Dear Dr. Smyth,
>
>I am analysing a series of two-colour microarray data sets with limma. The
>sets were downloaded from SMD (Standford Microarray Database) and I read
>the data with the command:
>
>targets <- readTargets('N20targets.txt')
>RG<-read.maimages(targets$FileName, source="smd", fill=T,
>wt.fun=function(x) {return(x$FLAG)})
>
>After reading the gal file and layout I proceeded with the normalization:
>
>MA<-normalizeWithinArrays(RG)
>
>This function terminated prematurely with an 'out of bounds' error. I
>found the error in the printtiploess code block of the
>normalizeWithinArrays function. The layout with 8 X 4 print grids, each
>containing 650 spots, provides for 20800 spots. The chips I am using have
>20736 spots. I added a small amount of code to your
>normalizeWithinArrays() which eliminated the error. The code I added is
>(after #comment)
>
> printtiploess = {^M
> if(is.null(layout)) stop("Layout argument not specified")^M
> ngr <- layout$ngrid.r^M
> ngc <- layout$ngrid.c^M
> nspots <- layout$nspot.r * layout$nspot.c^M
> for (j in 1:narrays) {^M
> spots <- 1:nspots^M
> for (gridr in 1:ngr)^M
> for (gridc in 1:ngc) {^M
># modified: SMD data files smaller than ngr * ngc * spots!^M
> if(spots[nspots] > nrow(object$M)) {^M
> index <- spots[1]^M
> spots <- index:nrow(object$M)^M
> }^M
> y <- object$M[spots,j]^M
> x <- object$A[spots,j]^M
> w <- weights[spots,j]^M
> object$M[spots,j] <-
> loessFit(y,x,w,span=span,iterations=iterations)$residuals^M
> spots <- spots + nspots^M
> }^M
> }^M
> },^M
>
>I am using limma version limma_1.3.13.
>
>Kind regards,
>Juerg Straubhaar, PhD
>Umass Med
More information about the Bioconductor
mailing list