Why does backgroundCorrect with method="none" produce different plots with plotMA()?
2
0
Entering edit mode
CantExitVIM ▴ 10
@cantexitvim-15274
Last seen 2.9 years ago

Code Snippet:

x <- read.maimages(targets,source="agilent", green.only=TRUE)
plotMA(x)
ybc <-backgroundCorrect(x, method="none")
plotMA(ybc)

If I use plotMA3by2(), I get the same results. This is expected since no background correction was done (method = "none"). But for some reason, plotMA(x) and plotMA(ybc) look significantly different. They both seem to be using the same reference array. Although, when I use plotMA(X), I do get a warning saying "In plotMA.EListRaw(x) : NaNs produced." plotMA(ybc) does not give me that warning.

What accounts for this behavior?

Thank you

1
Entering edit mode
@james-w-macdonald-5106
Last seen 9 hours ago
United States

The backgroundCorrect function corrects for the background values contained in the Eb list item of your EListRaw object, and then sets Eb to be NULL. Then when you use plotMA, it checks to see if Eb is NULL, and if not, it subtracts it from the E list item (which contains the foreground estimates). So X has a non-NULL Eb list item, and ybc does not.

0
Entering edit mode
@gordon-smyth
Last seen 3 hours ago
WEHI, Melbourne, Australia

I'll add a little more detail to James' answer. When you made an MA plot (using plotMA or plotMD), the EListRaw object has to be converted first into an EList object on the log-scale in order to make the plot. So some form of background correction and normalization has to be applied. If you haven't done any background correction or normalization yourself, then plotMA() will apply the simplest background correction and normalization methods, which are "subtract" and "none" respectively. In effect, it will do this:

ybc <- backgroundCorrect(x, method="subtract")
ybc <- normalizeBetweenArrays(ybc, method="none")
plotMA(ybc, ...)

Be aware that method="subtract" is pretty simple and not recommended because it has a tendency to return negative expression values and, hence, NAs when you convert to the log-scale.

If you have already background corrected, or have already normalized, then plotMA() will use whatever you have done. In your case, you ran backgroundCorrection with method="none", so plotMA(ybc) respects your wishes and uses the uncorrected foreground intensities.

In summary, I recommend that you apply background correction and normalization explicitly according to your preferences. If you don't, then you just get the simplest default choices.