[BioC] arrayQualityMetrics error with MAList

Wolfgang Huber whuber at embl.de
Thu Mar 15 23:17:38 CET 2012

Dear Daniel

thank you for pointing out this problem. In version 3.11.4, the values 
for the red and green channels were computed by exponentiating (base 2) 
the values R = A+M/2 and G = A-M/2. From version, 3.11.5 (in subversion, 
should be on the web in a few days), no exponentiating is done. I hope 
you will find that behaviour more pleasing.

If questions persist, please send me your example dataset and script. 
More below.

Mar/9/12 12:33 PM, Daniel Aaen Hansen scripsit::
> Dear Wolfgang,
> I just tested arrayQualityMetrics 3.11.4 on 'MAList' objects and it
> is working for me (it generates a report). However, I am not sure I
> understand what is going on. From the box plot and density plot it
> looks like it is using data that are not log transformed as some
> expression values are very large. Surprisingly, it makes no
> difference whether I set 'do.logtransform=FALSE' or
> 'do.logtransform=TRUE'. The plots are identical and looks as if they
> are made on non-log-transformed data.
> I also tried to convert the data manually, as you suggested: eset<-
> as(MA, 'ExpressionSet'). However, this yielded expression values from
> -9 to 13 and did not work:

Yes, this creates an ExpressionSet from the M values only. The value 
range you quote seems consistent with that. However, doing that 
conversion is much inferior to the current functionality for MAList in 
arrayQualityMetrics, so please ignore that previous suggestion.

>> min(exprs(eset))
> [1] -9.230704
>> max(exprs(eset))
> [1] 13.12851
> Another question: is there a way to make arrayQualityMetrics create
> MA-plots and spatial plots for all arrays and not just a subset? I
> think that would be a nice feature, but I could not find it. For
> example, it would make it easier to compare MA-plots before and after
> normalization. As it is now, it may plot MA-plots for different
> arrays before and after normalization.

Currently, it is not that easy, but of course, this being R and open 
source, it is possible. You need to create your own version of the 
function 'aqm.maplot', and e.g. replace the line
    if (x$numArrays <= 8) {
    if (TRUE) {

Then you also need to make sure that the function 'arrayQualityMetrics' 
finds your version of 'aqm.maplot'. This is done either by putting the 
latter back into the namespace of the package 'arrayQualityMetrics', or 
by also creating your own version of the function 'arrayQualityMetrics' 
(which is quite short and simple, it just successively calls the 
functions creating the various report parts.)

See also the vignette "Advanced topics: Customizing arrayQualityMetrics 
reports and programmatic processing of the output".

If someone comes up with a user-interface that allows exposing this (and 
similar) options to the user at the level of the 'arrayQualityMetrics' 
function without creating a plethora of parameter options, I will 
implement it in the package.

(The 'philosophy' of the package is to produce a reasonable report for 
almost everyone with default settings; whereas customisations can be 
obtained through using the flexibility of the R language, and a modular 
design of the package functionality - rather than banging in lots and 
lots of parameters and options into a monolithic function.)

Best wishes

Wolfgang Huber

More information about the Bioconductor mailing list