Question: Normalize Red Channel Across Arrays Using Limma
0
gravatar for David Quigley
9.7 years ago by
David Quigley11k
San Francisco
David Quigley11k wrote:

I have gene expression measured in two biopsies each from 125 animals. One biopsy was untreated, while the other was pre-treated with a drug. The investigator hybridized untreated biopsies to the green channel of an Agilent microarray and treated biopsies to the corresponding red channels. The animals are genetically distinct, so green does not represent a uniform reference.

To get the red/green ratio, I'm using limma:

raw = read.maimages(source="agilent.median", files=file.list, wt.fun=wtAgilent)
norm = normalizeWithinArrays(raw, method="loess", bc.method="normexp", offset=50)

I would also like to normalize the red and green channels separately with normalizeBetweenArrays(). I can apparently extract the green channel only with the green.only parameter of read.maimages() , but there is no red.only parameter. What is the best (most elegant and correct) way to extract the separate channels and normalize them? I have a feeling the method="Rquantile" parameter of normalizeBetweenArrays() isn't quite what I want, but I'm not sure what is.

agilent array limma microarray • 4.5k views
ADD COMMENTlink written 9.7 years ago by David Quigley11k
2
gravatar for Dejian
9.7 years ago by
Dejian1.3k
United States
Dejian1.3k wrote:

There is no need for you to manually extract the red and green channel intensities for normalization. The limma function normalizeBetweenArrays does this automatically. It will normalize the two channels of arrays separately and automatically.

Normalization between arrays is not always necessary unless you have good reason. Sometimes the difference between arrays reflects biological difference, not noises.

ADD COMMENTlink modified 9.7 years ago by Neilfws49k • written 9.7 years ago by Dejian1.3k
1

I have another method worth trying. You mentioned that green.only can help you only read the green intensities. You can reverse the color settings in the target file, and read the intensities using green.only parameter. Then what will you get? The red intensities!Right? After reading the data, possibly you need to modify some names of the list component to avoid later confusion. I think this should be the most elegant and correct way to deal with this problem.

ADD REPLYlink written 9.7 years ago by Dejian1.3k

Thanks, but you're describing the problem I want to solve, not the solution. normalizeBetweenArrays returns an MAList object, not a normalized version of the red and green channels separately. I want to look at the channels independently of their ratio to each other, effectively making this both a two-color and one-color array. To get normalized red/green ratio values, I'm using normalizeWithinArrays.

ADD REPLYlink written 9.7 years ago by David Quigley11k

The function normalizeBetweenArrays can accept objects of numeric matrix, EListRaw, RGList or MAList. EListRaw is for one-color arrays. You can mimic one-color arrays by manully building objects of EListRaw for red and green channels. EListRaw is a list, so you can build EListRaw objects by providing the essential components of the list. I did not try it, but it should work if the EListRaw objects are correctly built.

ADD REPLYlink written 9.7 years ago by Dejian1.3k
1
gravatar for David Quigley
9.7 years ago by
David Quigley11k
San Francisco
David Quigley11k wrote:

Since normalizeBetweenArrays will eat any matrix you feed it, the simplest method would be to read in the full dataset and normalize R and G independently:

raw = read.maimages(source="agilent.median", files=file.list, wt.fun=wtAgilent)
red = normalizeBetweenArrays(raw$R, method="quantile")
green = normalizeBetweenArrays(raw$G, method="quantile")

Dejian, thanks for your input.

ADD COMMENTlink written 9.7 years ago by David Quigley11k
1

This is really simple. But the background noises are not corrected. Maybe you can add one line after the first line: raw.b = backgroundCorrect(raw,method="normexp") The produced object is still an RGList. You can extract the corrected intensities for later analysis.

ADD REPLYlink written 9.7 years ago by Dejian1.3k

That's a good point, nice catch.

ADD REPLYlink written 9.7 years ago by David Quigley11k

I agree, you can also use offset option in this function to avoid negative values - it yields NAs after log2.

ADD REPLYlink written 9.2 years ago by boczniak767690
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1968 users visited in the last hour
_