Search
Question: htqPCR question
0
8.5 years ago by
Heidi Dvinge2.0k
Heidi Dvinge2.0k wrote:
modified 8.5 years ago by Andreia Fonseca810 • written 8.5 years ago by Heidi Dvinge2.0k
0
8.5 years ago by
Andreia Fonseca810 wrote:
On 26 Apr 2010, at 09:41, Andreia Fonseca wrote: > Dear heidi, > thank you for your reply. The datasets come from a 96 well qPCR > plate, but only 80 reactions have good quality. Each line > corresponds to a separate plate, with the same probes. I would like > to compare A and B. Thanks for your help. > Kind regards, > Andreia > Hello Andreia, so, what you probably want is to include the "Platform" as a andom effect using the duplicateCorrelation() function from limma with block argument. If you type > limmaUsersGuide() you'll get the full limma users guide, which includes examples of how to include different kinds of technical and biological variation. This is basically what the limmaCtData() funciton is based on. So generally you'd want to first do something like this (with "norm" being your normalised qPCRset data): > targets <- data.frame(Cell=rep(c("A", "B"), times=3:4), Platform=rep(c("type1", "type2"), times=c(2,5))) > design <- model.matrix(~0+targets$Cell) > colnames(design) <- c("CellTypeA", "CellTypeB") > dupcor <- duplicateCorrelation(exprs(norm), design=design, block=targets$Platform) and then include the dupcor$correlation and block in the limmaCtData.There's a small bug in limmaCtData for including dupcor though - I'll get that fixed. However, int his case that doesn't really matter, since I don't think you can analyse you data this way, if you experiment design really is as outlined in "targets" here. All platforms of type1 are used for cell type A, there are none present for B. You might have to just ignore that the samples are measured on 2 different platforms, and simply do a standard test between cell type A and B, even though this is not optimal. How different are these platforms - would you expect it to be significant for your analysis? Have you tried testing for significance between Ct values measured on type1 and type2? Or what's the dupcor$correlation between them? These are some of the things you can look at before deciding how to continue. Best wishes \Heidi > On Sat, Apr 24, 2010 at 12:45 PM, Heidi Dvinge <heidi@ebi.ac.uk> > wrote: > Hello Andreia, > > hm, slightly tricky. Are these data sets from some sort of commercial > platform, like the ABI TLDA cards, or from normal qPCR reactions on > a 384 > well plate or similar? Just to make sure I understand you experiment > right, do you have something like this? > > Sample Cell_type Platform RT_reaction > ------------------------------------ > 1 A type1 RT1 > 1 A type1 RT1 > 1 A type2 RT2 > 2 A type2 RT1 > 2 B type2 RT1 > 3 B type2 RT1 > 4 B type2 RT1 > > Is each line a separate plate? Or would the "Platform" column > correspond > to 2 individual plates, where multiple samples can be loaded onto each > plate? > What exactly is your primary interest here? Difference between cell > types > A and B? I think we need some specification here, for us to help you > properly. > > If you have different kinds of plates, then you could potentially > include > pate as a batch effect when doing your analysis. This will require > you to > use limmaCtData() for your test. This is based on the function > lmFit from > the limma package, which has some nice examples of how to take this > sort > of information into account. Although it looks like you have too many > variables here to consider all of them. > > By the way, you don't necessarily need one file per sample. As long > as you > have the sample number of genes per sample, e.g. 384, then with HTqPCR > version 1.2.0 you can use the n.data parameter in readCtData() to > indicate > how many sets of data are in each file. > > HTH > \Heidi > > > Dear Heidi, > > > > I have received a data set from a qPCR miRNA set where I have > > > > sample1 - 2 replicates from the same RT reaction > > 1 replicate from an independen RT reaction > cell_type:A > > sample 2 - cell type : A > > sample2 cell_type:B > > sample3 cell_type:B > > sample 4 cell_type:B > > > > I saw that I should prepare one file per sample, but the > replicates of > > sample1 have been produced in different plates and one is even from > > another > > RT reaction. How can I account for this using your package? > > Thanks in advacne for your reply. > > With kind regards, > > Andreia > > > > > > -- > > -------------------------------------------- > > Andreia J. Amaral > > Unidade de Imunologia Clínica > > Instituto de Medicina Molecular > > Universidade de Lisboa > > email: andreiaamaral@fm.ul.pt > > andreia.fonseca@gmail.com > > > > > > > > -- > -------------------------------------------- > Andreia J. Amaral > Unidade de Imunologia Clínica > Instituto de Medicina Molecular > Universidade de Lisboa > email: andreiaamaral@fm.ul.pt > andreia.fonseca@gmail.com [[alternative HTML version deleted]]
Greetings I have R 2.11, BioC 2.6 and HTqPCR 1.2 (see session info at the end). I created a qPCRset object by using rbind() to concatenate four pairs of dissimilar cards for each experimental condition and then cbind() to concatenate the four objects into one: WT_time1.a | WT_time1.b |---> WT_time1 MT_time1.a | MT_time1.b |---> MT_time1 WT_time2.a | ---> s2010004660 WT_time2.b |---> WT_time2 MT_time2.a | MT_time2.b |---> MT_time2 I set g <- c("MammU6") which is a endogenous control gene. I then tried to plotCtOverview(s2010004660, genes=g, groups=sampleNames(qPCRset), conf.int=TRUE) and got > plotCtOverview(s2010004660, genes=g, conf.int=TRUE) Error in if (del == 0 && to == 0) return(to) : missing value where TRUE/FALSE needed Here's the object info: > s2010004660 An object of class "qPCRset" Size: 768 features, 4 samples Feature types: Endogenous Control, Target Feature names: mmu-let-7b-4373168 mmu-let-7c-4373167 mmu- let-7d-4395394 ... Feature classes: Feature categories: OK, Undetermined Sample names: WT_4wks MT_4wks WT_17wks ... Could it be that the Feature classes slot is empty? Here's session info: > sessionInfo() R version 2.11.0 (2010-04-22) i386-apple-darwin9.8.0 locale: [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] HTqPCR_1.2.0 limma_3.4.0 RColorBrewer_1.0-2 Biobase_2.8.0 MASS_7.3-5 loaded via a namespace (and not attached): [1] affy_1.26.0 affyio_1.16.0 gdata_2.7.1 gplots_2.7.4 gtools_2.6.1 preprocessCore_1.10.0 [7] tools_2.11.0 Thanks Mike Michael Muratet, Ph.D. Senior Scientist HudsonAlpha Institute for Biotechnology mmuratet at hudsonalpha.org (256) 327-0473 (p) (256) 327-0966 (f) Room 4005 601 Genome Way Huntsville, Alabama 35806
Hello Mike, > Greetings > > I have R 2.11, BioC 2.6 and HTqPCR 1.2 (see session info at the end). > > I created a qPCRset object by using rbind() to concatenate four pairs > of dissimilar cards for each experimental condition and then cbind() > to concatenate the four objects into one: > > WT_time1.a | > WT_time1.b |---> WT_time1 > MT_time1.a | > MT_time1.b |---> MT_time1 > WT_time2.a | ---> s2010004660 > WT_time2.b |---> WT_time2 > MT_time2.a | > MT_time2.b |---> MT_time2 > > I set g <- c("MammU6") which is a endogenous control gene. > > I then tried to plotCtOverview(s2010004660, genes=g, > groups=sampleNames(qPCRset), conf.int=TRUE) and got > > > plotCtOverview(s2010004660, genes=g, conf.int=TRUE) > Error in if (del == 0 && to == 0) return(to) : > missing value where TRUE/FALSE needed > > Here's the object info: > > > s2010004660 > An object of class "qPCRset" > Size: 768 features, 4 samples > Feature types: Endogenous Control, Target > Feature names: mmu-let-7b-4373168 mmu-let-7c-4373167 mmu- > let-7d-4395394 ... > Feature classes: > Feature categories: OK, Undetermined > Sample names: WT_4wks MT_4wks WT_17wks ... > > Could it be that the Feature classes slot is empty? > Feature classes shouldn't matter at all here. I can reproduce this using the data sets included in HTqPCR (qPCRraw and qPCRpros) though. What does traceback() say? And does the same happen when you use conf.int=FALSE? \Heidi > Here's session info: > > > sessionInfo() > R version 2.11.0 (2010-04-22) > i386-apple-darwin9.8.0 > > locale: > [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > other attached packages: > [1] HTqPCR_1.2.0 limma_3.4.0 RColorBrewer_1.0-2 > Biobase_2.8.0 MASS_7.3-5 > > loaded via a namespace (and not attached): > [1] affy_1.26.0 affyio_1.16.0 gdata_2.7.1 > gplots_2.7.4 gtools_2.6.1 preprocessCore_1.10.0 > [7] tools_2.11.0 > > Thanks > > Mike > > Michael Muratet, Ph.D. > Senior Scientist > HudsonAlpha Institute for Biotechnology > mmuratet at hudsonalpha.org > (256) 327-0473 (p) > (256) 327-0966 (f) > > Room 4005 > 601 Genome Way > Huntsville, Alabama 35806 > > > > >
On Apr 30, 2010, at 2:42 PM, Heidi Dvinge wrote: > Hello Mike, > >> Greetings >> >> I have R 2.11, BioC 2.6 and HTqPCR 1.2 (see session info at the end). >> >> I created a qPCRset object by using rbind() to concatenate four pairs >> of dissimilar cards for each experimental condition and then cbind() >> to concatenate the four objects into one: >> >> WT_time1.a | >> WT_time1.b |---> WT_time1 >> MT_time1.a | >> MT_time1.b |---> MT_time1 >> WT_time2.a | ---> s2010004660 >> WT_time2.b |---> WT_time2 >> MT_time2.a | >> MT_time2.b |---> MT_time2 >> >> I set g <- c("MammU6") which is a endogenous control gene. >> >> I then tried to plotCtOverview(s2010004660, genes=g, >> groups=sampleNames(qPCRset), conf.int=TRUE) and got >> >>> plotCtOverview(s2010004660, genes=g, conf.int=TRUE) >> Error in if (del == 0 && to == 0) return(to) : >> missing value where TRUE/FALSE needed >> >> Here's the object info: >> >>> s2010004660 >> An object of class "qPCRset" >> Size: 768 features, 4 samples >> Feature types: Endogenous Control, Target >> Feature names: mmu-let-7b-4373168 mmu-let-7c-4373167 mmu- >> let-7d-4395394 ... >> Feature classes: >> Feature categories: OK, Undetermined >> Sample names: WT_4wks MT_4wks WT_17wks ... >> >> Could it be that the Feature classes slot is empty? >> > Feature classes shouldn't matter at all here. I can reproduce this > using > the data sets included in HTqPCR (qPCRraw and qPCRpros) though. What > does > traceback() say? And does the same happen when you use conf.int=FALSE? Thanks Heidi Here's the traceback(): > plotCtOverview(s2010004660, genes=g, conf.int=TRUE) Error in if (del == 0 && to == 0) return(to) : missing value where TRUE/FALSE needed > traceback() 3: seq.default(1.5, ncol(SD) * (nrow(SD) + 1), nrow(SD) + 1) 2: seq(1.5, ncol(SD) * (nrow(SD) + 1), nrow(SD) + 1) 1: plotCtOverview(s2010004660, genes = g, conf.int = TRUE) conf.int = FALSE it makes the plot without complaining. Actually, it makes the plot in the first case, too, it just doesn't draw error bars. Thanks again for the package and the help Mike > > \Heidi > >> Here's session info: >> >>> sessionInfo() >> R version 2.11.0 (2010-04-22) >> i386-apple-darwin9.8.0 >> >> locale: >> [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8 >> >> attached base packages: >> [1] stats graphics grDevices utils datasets methods base >> >> other attached packages: >> [1] HTqPCR_1.2.0 limma_3.4.0 RColorBrewer_1.0-2 >> Biobase_2.8.0 MASS_7.3-5 >> >> loaded via a namespace (and not attached): >> [1] affy_1.26.0 affyio_1.16.0 gdata_2.7.1 >> gplots_2.7.4 gtools_2.6.1 preprocessCore_1.10.0 >> [7] tools_2.11.0 >> >> Thanks >> >> Mike >> >> Michael Muratet, Ph.D. >> Senior Scientist >> HudsonAlpha Institute for Biotechnology >> mmuratet at hudsonalpha.org >> (256) 327-0473 (p) >> (256) 327-0966 (f) >> >> Room 4005 >> 601 Genome Way >> Huntsville, Alabama 35806 >> >> >> >> >> > > Michael Muratet, Ph.D. Senior Scientist HudsonAlpha Institute for Biotechnology mmuratet at hudsonalpha.org (256) 327-0473 (p) (256) 327-0966 (f) Room 4005 601 Genome Way Huntsville, Alabama 35806
> > On Apr 30, 2010, at 2:42 PM, Heidi Dvinge wrote: > >> Hello Mike, >> >>> Greetings >>> >>> I have R 2.11, BioC 2.6 and HTqPCR 1.2 (see session info at the end). >>> >>> I created a qPCRset object by using rbind() to concatenate four pairs >>> of dissimilar cards for each experimental condition and then cbind() >>> to concatenate the four objects into one: >>> >>> WT_time1.a | >>> WT_time1.b |---> WT_time1 >>> MT_time1.a | >>> MT_time1.b |---> MT_time1 >>> WT_time2.a | ---> s2010004660 >>> WT_time2.b |---> WT_time2 >>> MT_time2.a | >>> MT_time2.b |---> MT_time2 >>> >>> I set g <- c("MammU6") which is a endogenous control gene. >>> >>> I then tried to plotCtOverview(s2010004660, genes=g, >>> groups=sampleNames(qPCRset), conf.int=TRUE) and got >>> >>>> plotCtOverview(s2010004660, genes=g, conf.int=TRUE) >>> Error in if (del == 0 && to == 0) return(to) : >>> missing value where TRUE/FALSE needed >>> >>> Here's the object info: >>> >>>> s2010004660 >>> An object of class "qPCRset" >>> Size: 768 features, 4 samples >>> Feature types: Endogenous Control, Target >>> Feature names: mmu-let-7b-4373168 mmu-let-7c-4373167 mmu- >>> let-7d-4395394 ... >>> Feature classes: >>> Feature categories: OK, Undetermined >>> Sample names: WT_4wks MT_4wks WT_17wks ... >>> >>> Could it be that the Feature classes slot is empty? >>> >> Feature classes shouldn't matter at all here. I can reproduce this >> using >> the data sets included in HTqPCR (qPCRraw and qPCRpros) though. What >> does >> traceback() say? And does the same happen when you use conf.int=FALSE? > > Thanks Heidi > > Here's the traceback(): > > > plotCtOverview(s2010004660, genes=g, conf.int=TRUE) > Error in if (del == 0 && to == 0) return(to) : > missing value where TRUE/FALSE needed > > traceback() > 3: seq.default(1.5, ncol(SD) * (nrow(SD) + 1), nrow(SD) + 1) > 2: seq(1.5, ncol(SD) * (nrow(SD) + 1), nrow(SD) + 1) > 1: plotCtOverview(s2010004660, genes = g, conf.int = TRUE) > > conf.int = FALSE it makes the plot without complaining. Actually, it > makes the plot in the first case, too, it just doesn't draw error bars. > Hm, so for some reason it can't calculate a standard deviation for your qPCRset. However it should work even if SD returns NA. Do your have replicate genes in your set? And what happens if you say e.g. groups=c("A", "A", "B", "B")? \Heidi > Thanks again for the package and the help > > Mike >> >> \Heidi >> >>> Here's session info: >>> >>>> sessionInfo() >>> R version 2.11.0 (2010-04-22) >>> i386-apple-darwin9.8.0 >>> >>> locale: >>> [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8 >>> >>> attached base packages: >>> [1] stats graphics grDevices utils datasets methods base >>> >>> other attached packages: >>> [1] HTqPCR_1.2.0 limma_3.4.0 RColorBrewer_1.0-2 >>> Biobase_2.8.0 MASS_7.3-5 >>> >>> loaded via a namespace (and not attached): >>> [1] affy_1.26.0 affyio_1.16.0 gdata_2.7.1 >>> gplots_2.7.4 gtools_2.6.1 preprocessCore_1.10.0 >>> [7] tools_2.11.0 >>> >>> Thanks >>> >>> Mike >>> >>> Michael Muratet, Ph.D. >>> Senior Scientist >>> HudsonAlpha Institute for Biotechnology >>> mmuratet at hudsonalpha.org >>> (256) 327-0473 (p) >>> (256) 327-0966 (f) >>> >>> Room 4005 >>> 601 Genome Way >>> Huntsville, Alabama 35806 >>> >>> >>> >>> >>> >> >> > > Michael Muratet, Ph.D. > Senior Scientist > HudsonAlpha Institute for Biotechnology > mmuratet at hudsonalpha.org > (256) 327-0473 (p) > (256) 327-0966 (f) > > Room 4005 > 601 Genome Way > Huntsville, Alabama 35806 > > > > >
On Apr 30, 2010, at 3:08 PM, Heidi Dvinge wrote: >> >> On Apr 30, 2010, at 2:42 PM, Heidi Dvinge wrote: >> >>> Hello Mike, >>> >>>> Greetings >>>> >>>> I have R 2.11, BioC 2.6 and HTqPCR 1.2 (see session info at the >>>> end). >>>> >>>> I created a qPCRset object by using rbind() to concatenate four >>>> pairs >>>> of dissimilar cards for each experimental condition and then >>>> cbind() >>>> to concatenate the four objects into one: >>>> >>>> WT_time1.a | >>>> WT_time1.b |---> WT_time1 >>>> MT_time1.a | >>>> MT_time1.b |---> MT_time1 >>>> WT_time2.a | ---> s2010004660 >>>> WT_time2.b |---> WT_time2 >>>> MT_time2.a | >>>> MT_time2.b |---> MT_time2 >>>> >>>> I set g <- c("MammU6") which is a endogenous control gene. >>>> >>>> I then tried to plotCtOverview(s2010004660, genes=g, >>>> groups=sampleNames(qPCRset), conf.int=TRUE) and got >>>> >>>>> plotCtOverview(s2010004660, genes=g, conf.int=TRUE) >>>> Error in if (del == 0 && to == 0) return(to) : >>>> missing value where TRUE/FALSE needed >>>> >>>> Here's the object info: >>>> >>>>> s2010004660 >>>> An object of class "qPCRset" >>>> Size: 768 features, 4 samples >>>> Feature types: Endogenous Control, Target >>>> Feature names: mmu-let-7b-4373168 mmu-let-7c-4373167 mmu- >>>> let-7d-4395394 ... >>>> Feature classes: >>>> Feature categories: OK, Undetermined >>>> Sample names: WT_4wks MT_4wks WT_17wks ... >>>> >>>> Could it be that the Feature classes slot is empty? >>>> >>> Feature classes shouldn't matter at all here. I can reproduce this >>> using >>> the data sets included in HTqPCR (qPCRraw and qPCRpros) though. What >>> does >>> traceback() say? And does the same happen when you use >>> conf.int=FALSE? >> >> Thanks Heidi >> >> Here's the traceback(): >> >>> plotCtOverview(s2010004660, genes=g, conf.int=TRUE) >> Error in if (del == 0 && to == 0) return(to) : >> missing value where TRUE/FALSE needed >>> traceback() >> 3: seq.default(1.5, ncol(SD) * (nrow(SD) + 1), nrow(SD) + 1) >> 2: seq(1.5, ncol(SD) * (nrow(SD) + 1), nrow(SD) + 1) >> 1: plotCtOverview(s2010004660, genes = g, conf.int = TRUE) >> >> conf.int = FALSE it makes the plot without complaining. Actually, it >> makes the plot in the first case, too, it just doesn't draw error >> bars. >> > Hm, so for some reason it can't calculate a standard deviation for > your > qPCRset. However it should work even if SD returns NA. > > Do your have replicate genes in your set? And what happens if you > say e.g. > groups=c("A", "A", "B", "B")? Heidi I see the same problem. > plotCtOverview(s2010004660, genes=g, groups=c("WT_4wks"),conf.int=TRUE,replicates=TRUE) Error in if (del == 0 && to == 0) return(to) : missing value where TRUE/FALSE needed > plotCtOverview(s2010004660, genes=g, groups=c("WT_4wks","MT_4wks"),conf.int=TRUE,replicates=TRUE) Error in if (del == 0 && to == 0) return(to) : missing value where TRUE/FALSE needed It makes a plot but without error bars. Yes, there are replicates: Each card (stock ABI item) has 4 duplicates of the control. > exprs(s2010004660)[grep("U6",featureNames(s2010004660)),] WT_4wks MT_4wks WT_17wks MT_17wks MammU6-4395470 17.06939 17.18261 17.31673 17.11643 MammU6-4395470 17.15968 17.25446 17.31998 17.10729 MammU6-4395470 17.06865 17.07786 17.22182 17.02346 MammU6-4395470 17.20133 17.17483 17.11134 16.96466 MammU6-4395470 17.99183 17.92814 18.57421 18.11891 MammU6-4395470 17.72530 17.83194 18.60460 17.95789 MammU6-4395470 17.98547 17.90774 18.75409 18.00277 MammU6-4395470 17.88600 17.96328 18.40904 18.12783 With stats: > colMeans(exprs(s2010004660)[grep("U6",featureNames(s2010004660)),]) WT_4wks MT_4wks WT_17wks MT_17wks 17.51096 17.54011 17.91398 17.55241 > sd(exprs(s2010004660)[grep("U6",featureNames(s2010004660)),]) WT_4wks MT_4wks WT_17wks MT_17wks 0.4230635 0.3975762 0.7266933 0.5388762 Mike > > \Heidi > >> Thanks again for the package and the help >> >> Mike >>> >>> \Heidi >>> >>>> Here's session info: >>>> >>>>> sessionInfo() >>>> R version 2.11.0 (2010-04-22) >>>> i386-apple-darwin9.8.0 >>>> >>>> locale: >>>> [1] en_US.UTF-8/en_US.UTF-8/C/C/en_US.UTF-8/en_US.UTF-8 >>>> >>>> attached base packages: >>>> [1] stats graphics grDevices utils datasets methods >>>> base >>>> >>>> other attached packages: >>>> [1] HTqPCR_1.2.0 limma_3.4.0 RColorBrewer_1.0-2 >>>> Biobase_2.8.0 MASS_7.3-5 >>>> >>>> loaded via a namespace (and not attached): >>>> [1] affy_1.26.0 affyio_1.16.0 gdata_2.7.1 >>>> gplots_2.7.4 gtools_2.6.1 preprocessCore_1.10.0 >>>> [7] tools_2.11.0 >>>> >>>> Thanks >>>> >>>> Mike >>>> >>>> Michael Muratet, Ph.D. >>>> Senior Scientist >>>> HudsonAlpha Institute for Biotechnology >>>> mmuratet at hudsonalpha.org >>>> (256) 327-0473 (p) >>>> (256) 327-0966 (f) >>>> >>>> Room 4005 >>>> 601 Genome Way >>>> Huntsville, Alabama 35806 >>>> >>>> >>>> >>>> >>>> >>> >>> >> >> Michael Muratet, Ph.D. >> Senior Scientist >> HudsonAlpha Institute for Biotechnology >> mmuratet at hudsonalpha.org >> (256) 327-0473 (p) >> (256) 327-0966 (f) >> >> Room 4005 >> 601 Genome Way >> Huntsville, Alabama 35806 >> >> >> >> >> > > Michael Muratet, Ph.D. Senior Scientist HudsonAlpha Institute for Biotechnology mmuratet at hudsonalpha.org (256) 327-0473 (p) (256) 327-0966 (f) Room 4005 601 Genome Way Huntsville, Alabama 35806
Dear Heidi, Sorry it seems that I have not understood your table well. All the samples were analyzed using the same platform, but each sample is on a different plate. This way the commands are different right? So going back to your table: Sample Cell_type Platform RT_reaction ------------------------------ ------ 1 A type1 RT1 1 A type1 RT1 1 A type1 RT2 2 A type1 RT1 2 B type1 RT1 3 B type1 RT1 4 B type1 RT1 Thanks Andreia On Tue, Apr 27, 2010 at 11:11 AM, Heidi Dvinge <heidi@ebi.ac.uk> wrote: > > On 26 Apr 2010, at 09:41, Andreia Fonseca wrote: > > Dear heidi, > thank you for your reply. The datasets come from a 96 well qPCR plate, but > only 80 reactions have good quality. Each line corresponds to a separate > plate, with the same probes. I would like to compare A and B. Thanks for > your help. > Kind regards, > Andreia > > Hello Andreia, > > so, what you probably want is to include the "Platform" as a andom effect > using the duplicateCorrelation() function from limma with block argument. If > you type > > > limmaUsersGuide() > > you'll get the full limma users guide, which includes examples of how to > include different kinds of technical and biological variation. This is > basically what the limmaCtData() funciton is based on. So generally you'd > want to first do something like this (with "norm" being your normalised > qPCRset data): > > > targets <- data.frame(Cell=rep(c("A", "B"), times=3:4), > Platform=rep(c("type1", "type2"), times=c(2,5))) > > design <- model.matrix(~0+targets$Cell) > > colnames(design) <- c("CellTypeA", "CellTypeB") > > dupcor <- duplicateCorrelation(exprs(norm), design=design, > block=targets$Platform) > > and then include the dupcor$correlation and block in the > limmaCtData.There's a small bug in limmaCtData for including dupcor though - > I'll get that fixed. > > However, int his case that doesn't really matter, since I don't think you > can analyse you data this way, if you experiment design really is as > outlined in "targets" here. All platforms of type1 are used for cell type A, > there are none present for B. > > You might have to just ignore that the samples are measured on 2 different > platforms, and simply do a standard test between cell type A and B, even > though this is not optimal. How different are these platforms - would you > expect it to be significant for your analysis? Have you tried testing for > significance between Ct values measured on type1 and type2? Or what's the > dupcor$correlation between them? These are some of the things you can look > at before deciding how to continue. > > Best wishes > \Heidi > > On Sat, Apr 24, 2010 at 12:45 PM, Heidi Dvinge <heidi@ebi.ac.uk> wrote: > >> Hello Andreia, >> >> hm, slightly tricky. Are these data sets from some sort of commercial >> platform, like the ABI TLDA cards, or from normal qPCR reactions on a 384 >> well plate or similar? Just to make sure I understand you experiment >> right, do you have something like this? >> >> Sample Cell_type Platform RT_reaction >> ------------------------------------ >> 1 A type1 RT1 >> 1 A type1 RT1 >> 1 A type2 RT2 >> 2 A type2 RT1 >> 2 B type2 RT1 >> 3 B type2 RT1 >> 4 B type2 RT1 >> >> Is each line a separate plate? Or would the "Platform" column correspond >> to 2 individual plates, where multiple samples can be loaded onto each >> plate? >> What exactly is your primary interest here? Difference between cell types >> A and B? I think we need some specification here, for us to help you >> properly. >> >> If you have different kinds of plates, then you could potentially include >> pate as a batch effect when doing your analysis. This will require you to >> use limmaCtData() for your test. This is based on the function lmFit from >> the limma package, which has some nice examples of how to take this sort >> of information into account. Although it looks like you have too many >> variables here to consider all of them. >> >> By the way, you don't necessarily need one file per sample. As long as you >> have the sample number of genes per sample, e.g. 384, then with HTqPCR >> version 1.2.0 you can use the n.data parameter in readCtData() to indicate >> how many sets of data are in each file. >> >> HTH >> \Heidi >> >> > Dear Heidi, >> > >> > I have received a data set from a qPCR miRNA set where I have >> > >> > sample1 - 2 replicates from the same RT reaction >> > 1 replicate from an independen RT reaction >> cell_type:A >> > sample 2 - cell type : A >> > sample2 cell_type:B >> > sample3 cell_type:B >> > sample 4 cell_type:B >> > >> > I saw that I should prepare one file per sample, but the replicates of >> > sample1 have been produced in different plates and one is even from >> > another >> > RT reaction. How can I account for this using your package? >> > Thanks in advacne for your reply. >> > With kind regards, >> > Andreia >> > >> > >> > -- >> > -------------------------------------------- >> > Andreia J. Amaral >> > Unidade de Imunologia Clínica >> > Instituto de Medicina Molecular >> > Universidade de Lisboa >> > email: andreiaamaral@fm.ul.pt >> > andreia.fonseca@gmail.com >> > >> >> >> > > > -- > -------------------------------------------- > Andreia J. Amaral > Unidade de Imunologia Clínica > Instituto de Medicina Molecular > Universidade de Lisboa > email: andreiaamaral@fm.ul.pt > andreia.fonseca@gmail.com > > > -- -------------------------------------------- Andreia J. Amaral Unidade de Imunologia Clínica Instituto de Medicina Molecular Universidade de Lisboa email: andreiaamaral@fm.ul.pt andreia.fonseca@gmail.com [[alternative HTML version deleted]]
Hi Andreia > Dear Heidi, > > Sorry it seems that I have not understood your table well. All the samples > were analyzed using the same platform, but each sample is on a different > plate. This way the commands are different right? > So going back to your table: > > Sample Cell_type Platform RT_reaction > ------------------------------ > ------ > 1 A type1 RT1 > 1 A type1 RT1 > 1 A type1 RT2 > 2 A type1 RT1 > 2 B type1 RT1 > 3 B type1 RT1 > 4 B type1 RT1 > So, you actually just have cell type A and B you want to compare? That makes it all easier. In that case you can use either of the three functions limmaCtData, ttestCtData and mannwhitneyCtData depending on what you prefer. Both the vignette and the help pages has examples about how to compare two groups. ttestCtData and mannwhitneyCtData are probably easier if you just have two conditions, with mannwhitney perhaps being most suitable if you only have a small number of genes on each qPCR card. There's no way to account for the single different RT reaction though. You can check if this is an outlier in any of the QC plots, like plotCtDensity or plotCtBoxes, or perhaps try running the A versus B comparison both with/without this card, and see if it skews the result in any unexpected ways. Hopefully different RT reactions should be quite similar though. HTH \Heidi > Thanks > Andreia > > > On Tue, Apr 27, 2010 at 11:11 AM, Heidi Dvinge <heidi at="" ebi.ac.uk=""> wrote: > >> >> On 26 Apr 2010, at 09:41, Andreia Fonseca wrote: >> >> Dear heidi, >> thank you for your reply. The datasets come from a 96 well qPCR plate, >> but >> only 80 reactions have good quality. Each line corresponds to a separate >> plate, with the same probes. I would like to compare A and B. Thanks for >> your help. >> Kind regards, >> Andreia >> >> Hello Andreia, >> >> so, what you probably want is to include the "Platform" as a andom >> effect >> using the duplicateCorrelation() function from limma with block >> argument. If >> you type >> >> > limmaUsersGuide() >> >> you'll get the full limma users guide, which includes examples of how to >> include different kinds of technical and biological variation. This is >> basically what the limmaCtData() funciton is based on. So generally >> you'd >> want to first do something like this (with "norm" being your normalised >> qPCRset data): >> >> > targets <- data.frame(Cell=rep(c("A", "B"), times=3:4), >> Platform=rep(c("type1", "type2"), times=c(2,5))) >> > design <- model.matrix(~0+targets$Cell) >> > colnames(design) <- c("CellTypeA", "CellTypeB") >> > dupcor <- duplicateCorrelation(exprs(norm), design=design, >> block=targets$Platform) >> >> and then include the dupcor$correlation and block in the >> limmaCtData.There's a small bug in limmaCtData for including dupcor >> though - >> I'll get that fixed. >> >> However, int his case that doesn't really matter, since I don't think >> you >> can analyse you data this way, if you experiment design really is as >> outlined in "targets" here. All platforms of type1 are used for cell >> type A, >> there are none present for B. >> >> You might have to just ignore that the samples are measured on 2 >> different >> platforms, and simply do a standard test between cell type A and B, even >> though this is not optimal. How different are these platforms - would >> you >> expect it to be significant for your analysis? Have you tried testing >> for >> significance between Ct values measured on type1 and type2? Or what's >> the >> dupcor$correlation between them? These are some of the things you can >> look >> at before deciding how to continue. >> >> Best wishes >> \Heidi >> >> On Sat, Apr 24, 2010 at 12:45 PM, Heidi Dvinge <heidi at="" ebi.ac.uk=""> wrote: >> >>> Hello Andreia, >>> >>> hm, slightly tricky. Are these data sets from some sort of commercial >>> platform, like the ABI TLDA cards, or from normal qPCR reactions on a >>> 384 >>> well plate or similar? Just to make sure I understand you experiment >>> right, do you have something like this? >>> >>> Sample Cell_type Platform RT_reaction >>> ------------------------------------ >>> 1 A type1 RT1 >>> 1 A type1 RT1 >>> 1 A type2 RT2 >>> 2 A type2 RT1 >>> 2 B type2 RT1 >>> 3 B type2 RT1 >>> 4 B type2 RT1 >>> >>> Is each line a separate plate? Or would the "Platform" column >>> correspond >>> to 2 individual plates, where multiple samples can be loaded onto each >>> plate? >>> What exactly is your primary interest here? Difference between cell >>> types >>> A and B? I think we need some specification here, for us to help you >>> properly. >>> >>> If you have different kinds of plates, then you could potentially >>> include >>> pate as a batch effect when doing your analysis. This will require you >>> to >>> use limmaCtData() for your test. This is based on the function lmFit >>> from >>> the limma package, which has some nice examples of how to take this >>> sort >>> of information into account. Although it looks like you have too many >>> variables here to consider all of them. >>> >>> By the way, you don't necessarily need one file per sample. As long as >>> you >>> have the sample number of genes per sample, e.g. 384, then with HTqPCR >>> version 1.2.0 you can use the n.data parameter in readCtData() to >>> indicate >>> how many sets of data are in each file. >>> >>> HTH >>> \Heidi >>> >>> > Dear Heidi, >>> > >>> > I have received a data set from a qPCR miRNA set where I have >>> > >>> > sample1 - 2 replicates from the same RT reaction >>> > 1 replicate from an independen RT reaction >>> cell_type:A >>> > sample 2 - cell type : A >>> > sample2 cell_type:B >>> > sample3 cell_type:B >>> > sample 4 cell_type:B >>> > >>> > I saw that I should prepare one file per sample, but the replicates >>> of >>> > sample1 have been produced in different plates and one is even from >>> > another >>> > RT reaction. How can I account for this using your package? >>> > Thanks in advacne for your reply. >>> > With kind regards, >>> > Andreia >>> > >>> > >>> > -- >>> > -------------------------------------------- >>> > Andreia J. Amaral >>> > Unidade de Imunologia Cl?nica >>> > Instituto de Medicina Molecular >>> > Universidade de Lisboa >>> > email: andreiaamaral at fm.ul.pt >>> > andreia.fonseca at gmail.com >>> > >>> >>> >>> >> >> >> -- >> -------------------------------------------- >> Andreia J. Amaral >> Unidade de Imunologia Cl?nica >> Instituto de Medicina Molecular >> Universidade de Lisboa >> email: andreiaamaral at fm.ul.pt >> andreia.fonseca at gmail.com >> >> >> > > > -- > -------------------------------------------- > Andreia J. Amaral > Unidade de Imunologia Cl?nica > Instituto de Medicina Molecular > Universidade de Lisboa > email: andreiaamaral at fm.ul.pt > andreia.fonseca at gmail.com >