[BioC] limma - rror in switch(method, loess = { : printer layout information does not match M row dimension

Gordon Smyth smyth at wehi.edu.au
Tue Jan 24 06:23:00 CET 2006

Dear Sri,

The function normalizeWithinArrays() does not make any use of the gal 
file information, so changing the gal file cannot help you.

The problem most likely is that your data set is too short. Try


and you will probably find that the result is somewhat shorter than 
the length implied by the layout parameters, which is

    nspots <- prod(unlist(layout))

It is only a guess, but the likely cause is that the probes marked 
EMPTY in the gal file have been removed from the raw data files. 
limma assumes full arrays with no deletions.

As a work-around, you could instead use global loess normalization, 
i.e., method="loess", which doesn't need the print-tip group information.

Alternatively you could try making your data of the right length. Try

   gal <- readGAL( name of your gal file )

Does this agree with nspots? If so, then try

   isempty <- gal$ID=="EMPTY"

Does sum(isempty)+nrow(mdata) agree with nspots? If so, try 
augmenting your mdata object to the right length:

   i <- rep.int(0, nspots)
   i[isempty] <- NA
   i[!isempyt] <- 1:nrow(mdata)
   mdata2 <- mdata[i, ]
   ma <- normalizeWithinArrays(mdata2, layout, bc.method="none")

Best wishes

>[BioC] limma - rror in switch(method, loess = { : printer layout 
>information does not match M row dimension
>Srinivas Iyyer srini_iyyer_bio at yahoo.com
>Tue Jan 24 01:08:32 CET 2006
>Dear Group,
>  I have been experiencing problems when I try to
>process SMD derived .xls files (Raw data).  These are
>not exactly .XLS files but simply tab delim files.
>I am using Limma to normalize the bunch of files.
>here are the steps:
> >mfiles = list.files(pattern='.xls')
> >mdata = read.maimages(mfiles,source='smd')
> >mgal = 'my_gal_file'
> >layout = getLayout2(mgal)
> > layout
>[1] 12
>[1] 4
>[1] 30
>[1] 30
>[1] "PrintLayout"
> > ma
>Error in switch(method, loess = { : printer layout
>information does not match M row dimension
>Here, I am normalizing without background correction
>and thus I am taking mdata object directly to
>'normalizeWithinArrays' function.
>I looked into the GAL file obtained from SMD.
>There are some rows, that are completly empty:
>5       27      30      EMPTY   EMPTY
>5       28      30      EMPTY   EMPTY
>5       29      30      EMPTY   EMPTY
>5       30      30      EMPTY   EMPTY
>Because of these errors, normalizeWithinArrays is
>unable to match the spot dimensions and layout file.
>I tried to remove these EMPTY EMPTY spots from GAL
>file.  However, the header information does not match
>with adjusted rows after removing EMPTY files:
>ATF     1.0
>53      5
>"Type=GenePix ArrayList V1.0"
>"Block1= 400, 400, 100, 30, 146, 30, 146"
>"Block2= 4896, 400, 100, 30, 146, 30, 146"
>"Block3= 9392, 400, 100, 30, 146, 30, 146"
>"Block4= 13888, 400, 100, 30, 146, 30, 146"
>"Block5= 400, 4896, 100, 30, 146, 30, 146"
>Thus, although the number of spot information in GAL
>file is correct it does not match the header and thus
>leads to this error: This is what my guess is.
>Also this is what 'Gordon Smith'(See Ref) wrote to
>another user some time back for same error.
>My question to Limma developers or to any other users
>who could overcome this problem is:
>1. How can I correct the header BLOCK information of
>GAL file for adjusted rows where I find there is no
>spot information. simply, how can I make some
>adjustments to GAL file and then try to rectify the
>situation. Is this possible at all. If not what are
>the alternatives.
>2. In a nut-shell, how to escape this ':printer layout
>information does not match M row...'.
>Thank you very much in advance.

More information about the Bioconductor mailing list