[BioC] htqPCR question

Heidi Dvinge heidi at ebi.ac.uk
Sun May 2 10:34:33 CEST 2010


Hi Andreia,

> Dear Heidi,
>
> So I have each of my biological replicate in a plate, I have used the
> following command to read the data:
>
>> raw <- readCtData(files=files$File, path=path, n.features = 96, flag =
>> 4,
> feature = 1, type = 2, position = 3, Ct = 5, header = FALSE, SDS = FALSE)
>  my files:
>
>  File Treatment
> 1   Emb1.txt    Embrio
> 2   Emb2.txt    Embrio
> 3   Emb3.txt    Embrio
> 4  lin1a.txt        BM
> 5   lin2.txt        BM
> 6 lin_1a.txt        BM
> 7  lin1b.txt        BM
> 8   Sca3.txt     Heart
>
> I did the filtering
>  raw.cat<-setCategory(raw, groups=files$Treatment, quantile=0.8)
>
> and now I want to normalize:
>
>  d.norm<-normalizeCtData(raw.cat,norm="deltaCt", deltaCt.genes=c("U6"))
>  and then I get the message:
>
> Calculating deltaCt values
>         Using control gene(s): U6
>         Card 1: Mean=33.62      Stdev=NA
>         Card 2: Mean=32.65      Stdev=NA
>         Card 3: Mean=32.47      Stdev=NA
>         Card 4: Mean=35.46      Stdev=NA
>         Card 5: Mean=34.09      Stdev=NA
>         Card 6: Mean=34.39      Stdev=NA
>         Card 7: Mean=35.79      Stdev=NA
>         Card 8: Mean=33.72      Stdev=NA
>
> so, for the normalization, the package is not taking into account the
> variation of the endogenous gene U6 across technical and biological
> replicates.How can I make the normalization taking into account the mean
> and
> standard deviation of the endogenous genes at least across the biolgical
> replicates of the same treatment?

With deltaCt normalisation I'm afraid you cannot use information across
biological replicates in HTqPCR, since these are placed on individual
plates. In general, deltaCt is trying to normalise for the total amount of
RNA in a single sample, using some sort of reference RNA such as
GAPDH/actin or whatever is suitable in a given experiment, but that
considers each sample individually. Technical replicates within plates
should automatically be taken into account though - how many copies of U6
are on each plate?

If you want to normalise between samples, you'll have to use either
quantile normalisation, or some of the rank invariant methods. However,
these take all genes on a card as input, not a manually selected set I'm
afraid.

HTH
\Heidi

> Thanks
> Kind regards,
> Andreia
>
>
>
>
> On Fri, Apr 30, 2010 at 8:53 PM, Heidi Dvinge <heidi at ebi.ac.uk> wrote:
>
>> 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
>> >
>>
>>
>>
>
>
> --
> --------------------------------------------
> 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
>



More information about the Bioconductor mailing list