[BioC] RMA background adjustment implementation in affy

Mikko Korpela mvkorpel at james.hut.fi
Wed Jan 18 10:31:57 CET 2006


There are some differences in the way the RMA background adjustment
formula is presented in different documents, and the way it's implemented
in the affy package. I wonder what causes the differences, and whether I
should be worried about the RMA values produced by affy.

The relevant part of the code, I think, is this (copy-paste from affy
1.9.6, same as in many previous versions of affy, at least in affy-1.5.8):


void bg_adjust(double *PM,double *MM, double *param, int rows, int cols, 
int co$  int i;
  double a;

  for (i=0; i < rows; i++){
    a = PM[column*rows + i] - param[1] - param[0]*param[2]*param[2];
    PM[column*rows + i] = a + param[2] * phi(a/param[2])/Phi(a/param[2]);



where the array "param" is as described by the following comment (also

 ** note we will assume that param[0] is alpha, param[1] is mu, param[2]
is sigma

The documents that do not agree with the above are builtinMethods.pdf
(documentation of the affy package) and

In particular, some terms are missing from both the numerator and the
denominator of the division operation in the affy implementation. The
documents also do not agree with each other...

Am I missing something simple here? I hope someone knows the right
formula for the background adjustment and the reason why the
implementation is different (it seems) from the documentation.



More information about the Bioconductor mailing list