How to quantile normalize arraystar lncRNA microarray data?
1
0
Entering edit mode
a.deb • 0
@5229541b
Last seen 3.6 years ago
United Kingdom

Hello, I'm working with Arraystar lncRNA microarray for the first time. I tried to normalize the raw files (.txt) using the following script, which I used to normalize different other Agilent chip versions previously. Can anyone please tell me is this ok for the Arraystar chip also? Unfortunately, I'm not able to get the normalized values similar to those provided by the company. The company performed quantile normalization of the raw data using GeneSpring GX. Here is my script for quantile normalization:


library(limma)
targets <- readTargets("./targets.txt")
x <- read.maimages(targets, path="./Raw Data Files/", source="agilent",green.only=TRUE)
y <- backgroundCorrect(x, method="normexp", offset=16)
y <- normalizeBetweenArrays(y, method="quantile")
View(y$E)
y$E<-log2(y$E)
E = new("MAList", list(targets=y$targets, genes=y$genes, source=y$source, M=y$E, A=y$E))
E.avg <- avereps(E, ID=E$genes$ProbeName)
limma Microarray • 1.6k views
ADD COMMENT
1
Entering edit mode
@james-w-macdonald-5106
Last seen 13 hours ago
United States

Where did you get the idea that you needed to do this?

y$E<-log2(y$E)
E = new("MAList", list(targets=y$targets, genes=y$genes, source=y$source, M=y$E, A=y$E))

You are taking logs of data that has already been log transformed, which is, I imagine, not what you meant to do. But there is nothing in any of the documentation for limma that would indicate that this is what you should be doing, so I wonder where you got the idea that this is how you should be doing things? Anyway, here is the relevant portion from ?normalizeBetweenArrays

Details:

     'normalizeBetweenArrays' normalizes expression values to achieve
     consistency between arrays. For two-color arrays, normalization
     between arrays is usually a follow-up step after normalization
     within arrays using 'normalizeWithinArrays'. For single-channel
     arrays, within array normalization is not usually relevant and so
     'normalizeBetweenArrays' is the sole normalization step.

     For single-channel data, the scale, quantile or cyclic loess
     normalization methods can be applied to the columns of data.
     Trying to apply other normalization methods when 'object' is a
     'matrix' or 'EListRaw' object will produce an error. If 'object'
     is an 'EListRaw' object, then normalization will be applied to the
     matrix 'object$E' of expression values, which will then be
     log2-transformed.

The last sentence there being the take-home message. Put a different way, if your data need to be log transformed, then limma will do so for you. Anyway, what you did up to the normalizeBetweenArrays part is OK. Just go on to the modeling step after that.

ADD COMMENT
0
Entering edit mode

Hello, Sorry for a bit delayed reply. I got the idea to log2 transform the expression values from the following script: https://gist.github.com/brentp/1152860. In this script if you look at the line number 28, there is a log2 transformation step. But I also tried what you suggested i.e. analyzing the data skiping log2 transformation step. Then I saw that my boxplot is similar to the boxplot of the company normalized data, but the values are still not same. Hence I am getting different fold changes. Here the top image is the boxplot provided by the company, and the bottom image is the boxplot generated by me after skipping log2 transformation step. Boxplot company normalized Boxplot quantile normalized in R

Could you please explain this phenomenon? Thanks.

ADD REPLY

Login before adding your answer.

Traffic: 965 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6