How to generate STF file for custom array in limma?
1
0
Entering edit mode
@darioveneziano-8833
Last seen 9.1 years ago
United States

Dear Experts,

I have single channel array data gpr files form GenePix custom.

I have successfully read the data into the data frame object and I'd like to perform, read the .gal file and would like to do some quality assessment. In order to do that, I've created a SpotTypes.txt file:

SpotType    ID    Name    Color
ncRNA    *    *    black
Blank    *Blank*    *    pink
PosControl    *hsa*    *    blue
NegControl    *Randomer*    *    red

loaded it through readSpotTypes() and attempted to execute:

Red_Ch_Only_Data$genes$Status <- controlStatus(spottypes, Red_Ch_Only_Data)

But I got the following error:

Matching patterns for:  
Error in matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr,  : 
  'data' must be of a vector type, was 'NULL'
> 

And I cannot understand what the issue is all about...Is it something with the SpotTypes file or my data frame?

I'm a total newbie, so forgive me for the banal question should this be one. I appreciate any help you can provide!

Thank you!

~Dario

 

limma custom stf • 2.0k views
ADD COMMENT
2
Entering edit mode
@gordon-smyth
Last seen 1 hour ago
WEHI, Melbourne, Australia

You don't tell us what "Red_Ch_Only_Data" is, but I guess it might be an EListRaw object that you have read using read using read.maimages(). I suspect therefore that you need:

controlStatus(spottypes, Red_Ch_Only_Data$genes)

You mention reading a gal file, but I doubt you need to do this. The probe annotation is probably already contained in the genes component of Red_Ch_Only_Data.

ADD COMMENT
0
Entering edit mode

Yes, you're correct Dr. Smyth: "Red_Ch_Only_Data" is an EListRaw object that I have read using

Red_Ch_Only_Data <- read.maimages(targets, source="genepix.custom", path="/xx/xx/xxx", columns=list(G="F635 Mean", Gb="B635"), green.only = TRUE)

(Following the other post you answered me on for a work-around with red single channel data array).

Red_Ch_Only_Data$genes got the GAL file info and then I just followed, or attempted to follow, the directions as provided in chapter 5 of the user guide (revised the 9th of June 2015) to perform quality assessment, applying the code there to my array even though it's single channel and not two-color like the chapter shows. The code there is:

> spottypes <- readSpotTypes() 
> RG$genes$Status <- controlStatus(spottypes, RG) 
> plotMD(RG)

So I was missing the $genes when I tried to apply that code to my situation by executing:

> spottypes <- readSpotTypes()
> Red_Ch_Only_Data$genes$Status <- controlStatus(spottypes, Red_Ch_Only_Data) 
> plotMD(RG)

Is that not necessary for RGList objects?

 

ADD REPLY
0
Entering edit mode

The short form (without $genes) is implemented for RGList objects but not yet for EList objects.

You can see this by reading the help page for controlStatus(). The User's Guide only gives example pipelines. You need to refer to the help pages for individual functions for complete documentation of all cases.

ADD REPLY
0
Entering edit mode

Will do. Thank you so much!

ADD REPLY
0
Entering edit mode

Additional question on the same array: is background correction via the function normalizeWithinArrays non intended for single channel? I attempted it and this is what I got:

> Red_Ch_Only_Data_BackgroundCorrection <- backgroundCorrect(Red_Ch_Only_Data)

> MA <- normalizeWithinArrays(Red_Ch_Only_Data_BackgroundCorrection)
Error in MA.RG(object, bc.method = bc.method, offset = offset) : 
  Object doesn't contain R and G components

Of course the function normalizeWithinArrays does not accept EListraw objects, but I wonder if background correction is then performed directly during normalization with normalizeBetweenArrays..

Forgive me for the basic questions, I am a newbie and I'm really trying to get this right and, given it's my first time, it's a bit confusing... Thanks for all the help!

ADD REPLY
0
Entering edit mode

Ok, I found this in the help section of the function normalizeBetweenArrays:

For single-channel arrays, within array normalization is not usually relevant and so normalizeBetweenArrays is the sole normalization step.

Does that mean that normalizeBetweenArrays performs background correction?

ADD REPLY
0
Entering edit mode

I don't quite understand why you would try to use normalizeWithinArrays() on your data. Clearly that function is intended for two color data.

To do background correction, simply use backgroundCorrect().

There are plenty of examples of single channel analyses in the limma User's Guide. Chapter 17 gives several of them. The case study in Section 17.4 with Agilent arrays would be particularly relevant to you.

Also, please, if you have more questions it is better to post a new question rather than just adding comments here to this thread.

ADD REPLY
0
Entering edit mode

Thank you again. I apologize for the improper use of the thread.

ADD REPLY

Login before adding your answer.

Traffic: 712 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