Question: Problems normalizing scanarray express data with limma
0
7.7 years ago by
Matthew Ouellette10 wrote:
Hello, I'm having trouble analyzing my custom arrays with limma. I've searched the archives and I seem to be running into a similar problem that was previously dealt with here ( https://stat.ethz.ch/pipermail/bioconductor/2005-October/010482.html). I'm also using outputs from a scanarray express, although I've modified my .csv's accordingly and removed the final line of useless data as indicated in the archives. Also, being an R newbie I wasn't sure how to tell R that my data started after some 74 lines of headers (output info from the scanner), so I deleted those headers out as well (and input $printer info manually), leaving only a header for the columns of intensity data. For simplicities sake I've pasted below a shortened session of what I'm trying to do (my apologies for the lengthy e-mail). I appreciate the help and comments. R version 2.14.0 (2011-10-31) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: i386-apple-darwin9.8.0/i386 (32-bit) [R.app GUI 1.42 (5933) i386-apple-darwin9.8.0] > setwd("***") > library(limma) > targets<-readTargets() > RG <-read.maimages(targets, source="scanarrayexpress",annotation=c("Array Row", "Array Column", "Spot Row", "Spot Column", "Name", "ID"), other.columns=c("Ch1 SignalNoiseRatio", "Ch2 SignalNoiseRatio"), sep=",") Read 01-13_B.csv Read 01-13_M.csv Read 01-13_T.csv > RG$printer <-getLayout2("ChinookBOT.gal") > spottypes<-readSpotTypes() > RG$genes$Status<- controlStatus(spottypes, RG) Matching patterns for: Name Found 1116 oligo Found 21 blank Found 15 serial Setting attributes: values Color > show(RG) An object of class "RGList" $G 01-13_B 01-13_M 01-13_T [1,] 102 119 239 [2,] 100 122 339 [3,] 102 135 251 [4,] 90 112 242 [5,] 110 141 239 1147 more rows ...$Gb 01-13_B 01-13_M 01-13_T [1,] 89 94 147 [2,] 88 84 181 [3,] 88 91 161 [4,] 92 90 175 [5,] 86 87 154 1147 more rows ... $R 01-13_B 01-13_M 01-13_T [1,] 120 678 202 [2,] 154 610 312 [3,] 146 614 306 [4,] 108 654 310 [5,] 122 710 291 1147 more rows ...$Rb 01-13_B 01-13_M 01-13_T [1,] 108 119 135 [2,] 109 137 159 [3,] 113 124 169 [4,] 115 124 180 [5,] 119 104 159 1147 more rows ... $targets FileName Cy3 Cy5 1 01-13_B.csv B1 B2 2 01-13_M.csv M1 M2 3 01-13_T.csv T1 T2$genes Array Row Array Column Spot Row Spot Column Name ID Status 1 1 1 1 1 HEATH049 Gene A4 oligo 2 1 1 1 2 HEATH049 Gene A4 oligo 3 1 1 1 3 HEATH049 Gene A4 oligo 4 1 1 1 4 HEATH113 Gene A8 oligo 5 1 1 1 5 HEATH113 Gene A8 oligo 1147 more rows ... $source [1] "scanarrayexpress"$other $Ch1 SignalNoiseRatio 01-13_B 01-13_M 01-13_T [1,] 3.06 2.55 3.02 [2,] 2.72 3.06 2.35 [3,] 2.68 3.60 3.34 [4,] 2.51 3.12 0.95 [5,] 3.33 3.82 2.66 1147 more rows ...$Ch2 SignalNoiseRatio 01-13_B 01-13_M 01-13_T [1,] 2.31 12.41 2.85 [2,] 2.42 11.82 3.57 [3,] 2.66 11.71 4.14 [4,] 1.75 14.41 0.65 [5,] 2.09 15.90 4.62 1147 more rows ... $printer$ngrid.r [1] 4 $ngrid.c [1] 4$nspot.r [1] 6 $nspot.c [1] 14 > MA<- normalizeWithinArrays(RG) Error in normalizeWithinArrays(RG) : printer layout information does not match M row dimension -- Matthew Ouellette, M.Sc. Candidate Great Lakes Institute for Environmental Research University of Windsor [[alternative HTML version deleted]] gui limma a4 • 635 views ADD COMMENTlink modified 7.7 years ago by Gordon Smyth38k • written 7.7 years ago by Matthew Ouellette10 Answer: Problems normalizing scanarray express data with limma 0 7.7 years ago by Gordon Smyth38k Walter and Eliza Hall Institute of Medical Research, Melbourne, Australia Gordon Smyth38k wrote: Dear Matthew, This question hasn't been asked for many years! It used to be quite a common question, see for example: https://stat.ethz.ch/pipermail/bioconductor/2005-July/009886.html The problem is not that you have an extra row, but rather than you have too few rows. Your arrays have 16 blocks (4 x 4) with 6 rows and 14 columns of spots in each block. So limma assumes your arrays to have 4x4x6x14 = 1344 spots, but your files actually contain only 1152 rows of data. The reason is almost certainly that a number of empty spots have been removed from the files. One easy workaround is simply to do global loess instead of print-tip-loess normalization: MA <- normalizeWithinArrays(RG, method="loess") Another workaround is to make up a block count variable: block <- 4*(RG$genes[,"Array Row"]-1) + RG$genes[,"Array Column"] and then to use the solution that I suggested back in July 2005. With respect to the deleting of 74 lines of headers and so forth, have you tried simply using RG <-read.maimages(targets, source="scanarrayexpress", sep=",") using your original unedited files? The whole reason for having a "scanarrayexpress" method for read.maimages() is that it takes care of all the editing and reading for you. Best wishes Gordon > Date: Tue, 10 Jan 2012 14:34:53 -0500 > From: Matthew Ouellette <ouellet5 at="" uwindsor.ca=""> > To: bioconductor at r-project.org > Subject: [BioC] Problems normalizing scanarray express data with limma > > Hello, > > I'm having trouble analyzing my custom arrays with limma. I've searched > the archives and I seem to be running into a similar problem that was > previously dealt with here ( > https://stat.ethz.ch/pipermail/bioconductor/2005-October/010482.html). > > I'm also using outputs from a scanarray express, although I've modified my > .csv's accordingly and removed the final line of useless data as indicated > in the archives. Also, being an R newbie I wasn't sure how to tell R that > my data started after some 74 lines of headers (output info from the > scanner), so I deleted those headers out as well (and input$printer info > manually), leaving only a header for the columns of intensity data. For > simplicities sake I've pasted below a shortened session of what I'm trying > to do (my apologies for the lengthy e-mail). I appreciate the help and > comments. > > > > R version 2.14.0 (2011-10-31) > Copyright (C) 2011 The R Foundation for Statistical Computing > ISBN 3-900051-07-0 > Platform: i386-apple-darwin9.8.0/i386 (32-bit) > [R.app GUI 1.42 (5933) i386-apple-darwin9.8.0] > >> setwd("***") >> library(limma) >> targets<-readTargets() >> RG <-read.maimages(targets, source="scanarrayexpress",annotation=c("Array > Row", "Array Column", "Spot Row", "Spot Column", "Name", "ID"), > other.columns=c("Ch1 SignalNoiseRatio", "Ch2 SignalNoiseRatio"), sep=",") > Read 01-13_B.csv > Read 01-13_M.csv > Read 01-13_T.csv >> RG$printer <-getLayout2("ChinookBOT.gal") >> spottypes<-readSpotTypes() >> RG$genes$Status<- controlStatus(spottypes, RG) > Matching patterns for: Name > Found 1116 oligo > Found 21 blank > Found 15 serial > Setting attributes: values Color >> show(RG) > An object of class "RGList" >$G > 01-13_B 01-13_M 01-13_T > [1,] 102 119 239 > [2,] 100 122 339 > [3,] 102 135 251 > [4,] 90 112 242 > [5,] 110 141 239 > 1147 more rows ... > > $Gb > 01-13_B 01-13_M 01-13_T > [1,] 89 94 147 > [2,] 88 84 181 > [3,] 88 91 161 > [4,] 92 90 175 > [5,] 86 87 154 > 1147 more rows ... > >$R > 01-13_B 01-13_M 01-13_T > [1,] 120 678 202 > [2,] 154 610 312 > [3,] 146 614 306 > [4,] 108 654 310 > [5,] 122 710 291 > 1147 more rows ... > > $Rb > 01-13_B 01-13_M 01-13_T > [1,] 108 119 135 > [2,] 109 137 159 > [3,] 113 124 169 > [4,] 115 124 180 > [5,] 119 104 159 > 1147 more rows ... > >$targets > FileName Cy3 Cy5 > 1 01-13_B.csv B1 B2 > 2 01-13_M.csv M1 M2 > 3 01-13_T.csv T1 T2 > > $genes > Array Row Array Column Spot Row Spot Column Name ID Status > 1 1 1 1 1 HEATH049 Gene A4 oligo > 2 1 1 1 2 HEATH049 Gene A4 oligo > 3 1 1 1 3 HEATH049 Gene A4 oligo > 4 1 1 1 4 HEATH113 Gene A8 oligo > 5 1 1 1 5 HEATH113 Gene A8 oligo > 1147 more rows ... > >$source > [1] "scanarrayexpress" > > $other >$Ch1 SignalNoiseRatio > 01-13_B 01-13_M 01-13_T > [1,] 3.06 2.55 3.02 > [2,] 2.72 3.06 2.35 > [3,] 2.68 3.60 3.34 > [4,] 2.51 3.12 0.95 > [5,] 3.33 3.82 2.66 > 1147 more rows ... > > $Ch2 SignalNoiseRatio > 01-13_B 01-13_M 01-13_T > [1,] 2.31 12.41 2.85 > [2,] 2.42 11.82 3.57 > [3,] 2.66 11.71 4.14 > [4,] 1.75 14.41 0.65 > [5,] 2.09 15.90 4.62 > 1147 more rows ... > > >$printer > $ngrid.r > [1] 4 > >$ngrid.c > [1] 4 > > $nspot.r > [1] 6 > >$nspot.c > [1] 14 > > >> MA<- normalizeWithinArrays(RG) > Error in normalizeWithinArrays(RG) : > printer layout information does not match M row dimension > > > > -- > Matthew Ouellette, M.Sc. Candidate > Great Lakes Institute for Environmental Research > University of Windsor ______________________________________________________________________ The information in this email is confidential and intend...{{dropped:4}}
Answer: Problems normalizing scanarray express data with limma
0
7.7 years ago by
Gordon Smyth38k
Walter and Eliza Hall Institute of Medical Research, Melbourne, Australia
Gordon Smyth38k wrote:
Dear Matthew, On Thu, 12 Jan 2012, Matthew Ouellette wrote: > Dear Gordon, > > I feel I should have come to that conclusion myself - you're correct > that there are missing spots. ?However, this is not the result of > software removing blank spots; it is in fact the way we printed the > array. ?Each block consists of 6 rows x 14 columns, but the 6th row > only has spots in columns 1 and 2 (i.e. there are only 2 spots on row > 6 in each block). ?This layout is the result of spotting 384 probes in > the smallest area possible in order to cut down the amount of RT > reagents needed to produce significant results. > > As I mentioned earlier, I am very new to R. ?I am in the process of > attempting to use the block count variable you suggested, however I'm > having difficulties adjusting it to the code you suggested in 2005. > How would I modify the following to fit my particular array? > > for (b in 1:48) { > i <- RG$genes$Block==b > MA2 <- normalizeWithinArrays(RG[i,],method="loess") > if(b==1) > MA <- MA2 > else > MA <- rbind(MA,MA2) > } Replace "48" with "16" and "RG$genes$Block" with "block". > As for the the input files, I have attempted to use: > > RG <-read.maimages(targets, source="scanarrayexpress", sep=",") > > on unedited files, but the following warnings come up (when analyzing > 15 unedited array files this time): > >> RG<-read.maimages(targets, source="scanarrayexpress", sep=",") > Read 01-13_B.csv > Read 01-13_M.csv > Read 01-13_T.csv > Read 01-14_B.csv > Read 01-14_M.csv > Read 01-14_T.csv > Read 01-15_B.csv > Read 01-15_M.csv > Read 01-15_T.csv > Read 01-16_B.csv > Read 01-16_M.csv > Read 01-16_T.csv > Read 01-17_B.csv > Read 01-17_M.csv > Read 01-17_T.csv > There were 45 warnings (use warnings() to see them) >> warnings() > Warning messages: > 1: In grep(a, txt) : input string 1 is invalid in this locale > 2: In grep(a, txt) : input string 1 is invalid in this locale > 3: In grep(a, txt) : input string 1 is invalid in this locale > 4: In grep(a, txt) : input string 1 is invalid in this locale > 5: In grep(a, txt) : input string 1 is invalid in this locale > 6: In grep(a, txt) : input string 1 is invalid in this locale > 7: In grep(a, txt) : input string 1 is invalid in this locale > 8: In grep(a, txt) : input string 1 is invalid in this locale > 9: In grep(a, txt) : input string 1 is invalid in this locale > 10: In grep(a, txt) : input string 1 is invalid in this locale > [... to 45] This is most likely caused by the fact that your copy of R is compiled for a different language than that used by the software used to write your data. Eg., it could be that your R is American English and but the files were written using an extended French alphabet, so your files contain non-english letters. Typing sessionInfo() will reveal the language (locale) your version of R is compiled for. > I have contacted a co-worker about this problem and he claims that he > doesn't get this error when using R in Windows XP (I am currently > using Mac OS X). At first, I thought these errors would skew my > results so I opted to edit the files myself just to get the hang of > limma. Nothing to do with Windows or Mac. Probably doesn't affect your limma results. Best wishes Gordon > I appreciate your help, > > Matthew > > On Wed, Jan 11, 2012 at 11:52 PM, Gordon K Smyth <smyth at="" wehi.edu.au=""> wrote: >> >> Dear Matthew, >> >> This question hasn't been asked for many years! ?It used to be quite a common question, see for example: >> >> https://stat.ethz.ch/pipermail/bioconductor/2005-July/009886.html >> >> The problem is not that you have an extra row, but rather than you have too few rows. ?Your arrays have 16 blocks (4 x 4) with 6 rows and 14 columns of spots in each block. ?So limma assumes your arrays to have 4x4x6x14 = 1344 spots, but your files actually contain only 1152 rows of data. ?The reason is almost certainly that a number of empty spots have been removed from the files. >> >> One easy workaround is simply to do global loess instead of print- tip-loess normalization: >> >> ?MA <- normalizeWithinArrays(RG, method="loess") >> >> Another workaround is to make up a block count variable: >> >> ?block <- 4*(RG$genes[,"Array Row"]-1) + RG$genes[,"Array Column"] >> >> and then to use the solution that I suggested back in July 2005. >> >> >> With respect to the deleting of 74 lines of headers and so forth, have you tried simply using >> >> ?RG <-read.maimages(targets, source="scanarrayexpress", sep=",") >> >> using your original unedited files? ?The whole reason for having a "scanarrayexpress" method for read.maimages() is that it takes care of all the editing and reading for you. >> >> Best wishes >> Gordon >> >> >>> Date: Tue, 10 Jan 2012 14:34:53 -0500 >>> From: Matthew Ouellette <ouellet5 at="" uwindsor.ca=""> >>> To: bioconductor at r-project.org >>> Subject: [BioC] Problems normalizing scanarray express data with limma >>> >>> Hello, >>> >>> I'm having trouble analyzing my custom arrays with limma. ?I've searched >>> the archives and I seem to be running into a similar problem that was >>> previously dealt with here ( >>> https://stat.ethz.ch/pipermail/bioconductor/2005-October/010482.html). >>> >>> I'm also using outputs from a scanarray express, although I've modified my >>> .csv's accordingly and removed the final line of useless data as indicated >>> in the archives. ?Also, being an R newbie I wasn't sure how to tell R that >>> my data started after some 74 lines of headers (output info from the >>> scanner), so I deleted those headers out as well (and input $printer info >>> manually), leaving only a header for the columns of intensity data. ? For >>> simplicities sake I've pasted below a shortened session of what I'm trying >>> to do (my apologies for the lengthy e-mail). ?I appreciate the help and >>> comments. >>> >>> >>> >>> R version 2.14.0 (2011-10-31) >>> Copyright (C) 2011 The R Foundation for Statistical Computing >>> ISBN 3-900051-07-0 >>> Platform: i386-apple-darwin9.8.0/i386 (32-bit) >>> [R.app GUI 1.42 (5933) i386-apple-darwin9.8.0] >>> >>>> setwd("***") >>>> library(limma) >>>> targets<-readTargets() >>>> RG <-read.maimages(targets, source="scanarrayexpress",annotation=c("Array >>> >>> Row", "Array Column", "Spot Row", "Spot Column", "Name", "ID"), >>> other.columns=c("Ch1 SignalNoiseRatio", "Ch2 SignalNoiseRatio"), sep=",") >>> Read 01-13_B.csv >>> Read 01-13_M.csv >>> Read 01-13_T.csv >>>> >>>> RG$printer <-getLayout2("ChinookBOT.gal") >>>> spottypes<-readSpotTypes() >>>> RG$genes$Status<- controlStatus(spottypes, RG) >>> >>> Matching patterns for: Name >>> Found 1116 oligo >>> Found 21 blank >>> Found 15 serial >>> Setting attributes: values Color >>>> >>>> show(RG) >>> >>> An object of class "RGList" >>> $G >>> ? ?01-13_B 01-13_M 01-13_T >>> [1,] ? ? 102 ? ? 119 ? ? 239 >>> [2,] ? ? 100 ? ? 122 ? ? 339 >>> [3,] ? ? 102 ? ? 135 ? ? 251 >>> [4,] ? ? ?90 ? ? 112 ? ? 242 >>> [5,] ? ? 110 ? ? 141 ? ? 239 >>> 1147 more rows ... >>> >>>$Gb >>> ? ?01-13_B 01-13_M 01-13_T >>> [1,] ? ? ?89 ? ? ?94 ? ? 147 >>> [2,] ? ? ?88 ? ? ?84 ? ? 181 >>> [3,] ? ? ?88 ? ? ?91 ? ? 161 >>> [4,] ? ? ?92 ? ? ?90 ? ? 175 >>> [5,] ? ? ?86 ? ? ?87 ? ? 154 >>> 1147 more rows ... >>> >>> $R >>> ? ?01-13_B 01-13_M 01-13_T >>> [1,] ? ? 120 ? ? 678 ? ? 202 >>> [2,] ? ? 154 ? ? 610 ? ? 312 >>> [3,] ? ? 146 ? ? 614 ? ? 306 >>> [4,] ? ? 108 ? ? 654 ? ? 310 >>> [5,] ? ? 122 ? ? 710 ? ? 291 >>> 1147 more rows ... >>> >>>$Rb >>> ? ?01-13_B 01-13_M 01-13_T >>> [1,] ? ? 108 ? ? 119 ? ? 135 >>> [2,] ? ? 109 ? ? 137 ? ? 159 >>> [3,] ? ? 113 ? ? 124 ? ? 169 >>> [4,] ? ? 115 ? ? 124 ? ? 180 >>> [5,] ? ? 119 ? ? 104 ? ? 159 >>> 1147 more rows ... >>> >>> $targets >>> ? ?FileName Cy3 Cy5 >>> 1 01-13_B.csv ?B1 ?B2 >>> 2 01-13_M.csv ?M1 ?M2 >>> 3 01-13_T.csv ?T1 ?T2 >>> >>>$genes >>> ?Array Row Array Column Spot Row Spot Column ? ? Name ? ? ?ID Status >>> 1 ? ? ? ? 1 ? ? ? ? ? ?1 ? ? ? ?1 ? ? ? ? ? 1 HEATH049 Gene A4 ?oligo >>> 2 ? ? ? ? 1 ? ? ? ? ? ?1 ? ? ? ?1 ? ? ? ? ? 2 HEATH049 Gene A4 ?oligo >>> 3 ? ? ? ? 1 ? ? ? ? ? ?1 ? ? ? ?1 ? ? ? ? ? 3 HEATH049 Gene A4 ?oligo >>> 4 ? ? ? ? 1 ? ? ? ? ? ?1 ? ? ? ?1 ? ? ? ? ? 4 HEATH113 Gene A8 ?oligo >>> 5 ? ? ? ? 1 ? ? ? ? ? ?1 ? ? ? ?1 ? ? ? ? ? 5 HEATH113 Gene A8 ?oligo >>> 1147 more rows ... >>> >>> $source >>> [1] "scanarrayexpress" >>> >>>$other >>> $Ch1 SignalNoiseRatio >>> ? ?01-13_B 01-13_M 01-13_T >>> [1,] ? ?3.06 ? ?2.55 ? ?3.02 >>> [2,] ? ?2.72 ? ?3.06 ? ?2.35 >>> [3,] ? ?2.68 ? ?3.60 ? ?3.34 >>> [4,] ? ?2.51 ? ?3.12 ? ?0.95 >>> [5,] ? ?3.33 ? ?3.82 ? ?2.66 >>> 1147 more rows ... >>> >>>$Ch2 SignalNoiseRatio >>> ? ?01-13_B 01-13_M 01-13_T >>> [1,] ? ?2.31 ? 12.41 ? ?2.85 >>> [2,] ? ?2.42 ? 11.82 ? ?3.57 >>> [3,] ? ?2.66 ? 11.71 ? ?4.14 >>> [4,] ? ?1.75 ? 14.41 ? ?0.65 >>> [5,] ? ?2.09 ? 15.90 ? ?4.62 >>> 1147 more rows ... >>> >>> >>> $printer >>>$ngrid.r >>> [1] 4 >>> >>> $ngrid.c >>> [1] 4 >>> >>>$nspot.r >>> [1] 6 >>> >>> \$nspot.c >>> [1] 14 >>> >>> >>>> MA<- normalizeWithinArrays(RG) >>> >>> Error in normalizeWithinArrays(RG) : >>> ?printer layout information does not match M row dimension >>> >>> > > > -- > Matthew Ouellette, M.Sc. Candidate > Great Lakes Institute for Environmental Research > University of Windsor > 401 Sunset Ave., Windsor, ON, N9B 3P4 > Phone:?(519) 253-3000, Ext 4248 > Fax:?(519) 971-3616 > Email:?ouellet5 at uwindsor.ca > ______________________________________________________________________ The information in this email is confidential and intend...{{dropped:5}}