[BioC] MA plots for single channel agilent array data, plotMA3by2 and atomic vectors issue

Gordon K Smyth smyth at wehi.EDU.AU
Sun Jun 26 03:34:40 CEST 2011

Hi Richard,

I'll reply to this email and your second question on June 19 about making 
MA plots together.

First, how to make a simple MA-plot.  limma makes MA-plots for single 
channel data automatically.  limma didn't use to have internal support for 
generic single channel data, but it has had for past couple of years.  So 
you no longer need the work around for reading the data that you've used 
below.  Instead you can simply use:

x <- read.maimages(files=dir(),source="agilent",green.only=TRUE)

Then limma will read your data into an EListRaw data object, which 
represents single channel data.  You'll be able to type

y <- backgroundCorrect(x,method="normexp",offset=16)
y <- normalizeBetweenArrays(y,method="quantile")

etc etc.

In general, limma knows what to do with an EList object.  The function 
plotMA3by2() is an exception, because it is written strictly for two-color 
data (as the help page explains).  You cannot give it an simple matrix, 
because a matrix does not comprise two color information.  There is no 
reason that a single channel version couldn't exist, but you're the first 
to ask for it.

You can still use plotMA3by2() for your single channel data by making a 
pseudo two-color data object by:

   E <- y$E
   A <- matrix(rowMeans(E),nrow(E),ncol(E))
   MA <- new("MAList",list(M=E,A=A))

Best wishes

--------------- original message ---------------
[BioC] MA plots for single channel agilent array data, plotMA3by2 and 
atomic vectors issue
Richard Green greener at uw.edu
Sat Jun 18 08:28:18 CEST 2011

Howdy folks. I am trying to run some QC on a set of single channel agilent
microarray files and would like to generate MA plots for them, but since
they are single channel, plotMA3by2 doesn't appear to work(see error 
Could I be missing something? or is there an simple alternate method that
could generate MA plots? Any suggestions folks have is muchly appreciated.

I managed to load my array data successfully:

RG <-

And successfully performed back ground correction and normalization on the

RG2 <- backgroundCorrect(RG, method="normexp", offset=50)

RG2 <- normalizeBetweenArrays(RG2$G, method="quantile")

RG2 <- log(RG2)

plotMA3by2(RG2, device="pdf")
This produces the following error:

> plotMA3by2(RG2, device="pdf")
Error in MA$weights : $ operator is invalid for atomic vectors
Calls: plotMA3by2
Execution halted

I have managed to successfully generate a box plot and a HCA on the
normalized data.

Thanks again!

The information in this email is confidential and intend...{{dropped:4}}

More information about the Bioconductor mailing list