limma: out of bounds error
1
0
Entering edit mode
@straubhaar-juerg-391
Last seen 10.2 years ago
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
Microarray limma Microarray limma • 984 views
ADD COMMENT
0
Entering edit mode
@gordon-smyth
Last seen 9 minutes ago
WEHI, Melbourne, Australia
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
ADD COMMENT

Login before adding your answer.

Traffic: 837 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6