[BioC] HT qPCR - error in scale rank invariant

Heidi Dvinge heidi at ebi.ac.uk
Tue Jan 25 00:11:43 CET 2011


Hello Andreia,

I can reproduce the error you get if I say:

> data(qPCRraw)
> temp <- normalizeCtData(qPCRraw, norm="scale.rankinvariant")
Scaling Ct values
	Using rank invariant genes: Gene1 Gene29
	Scaling factors: 1.00 1.06 1.00 1.03 1.00 1.00
# Select just the first genes so that Gene29 is excluded
> normalizeCtData(qPCRraw[1:10,], norm="scale.rankinvariant")
Error in smooth.spline(ref[i.set], data[i.set]) :
  need at least four unique 'x' values

After looking into the code, the problem occur when there's only a single
(or no) rank invariant genes between any individual sample and the
reference sample (the mean or median across all samples). At least two
rank-invariant genes are required between the reference and each sample.
I'll make a note of this in the help file.

This means that a rank-invariant method is not going to be robust enough
for your normalisation. Instead, you'll have to go with ddCt or quantile.
In the future there might be other options available in HTqPCR (e.g. scale
by arithmetic or geometric mean) depending on demand.

The likely cause of this is that your samples are quite different. Have
you tried investigating them with e.g. plotCtCor or clusterCt to see if
they group as expected, or if there's any marked difference in the
distribution of Ct values (plotCtDensity)? Even a relatively harsh method
such as quantile normalisation might be suitable for you data.

Cheers
\Heidi


> Dear Heidi,
>
> thanks for the quick reply,
>
> after traceback() I get
>
> traceback()
> 5: stop("need at least four unique 'x' values")
> 4: smooth.spline(ref[i.set], data[i.set])
> 3: FUN(newX[, i], ...)
> 2: apply(data, 2, normalize.invariantset, ref = ref.data)
> 1: normalizeCtData(raw.cat, norm = "scale.rank")
>
> information about the session
> sessionInfo()
> R version 2.11.1 (2010-05-31)
> i386-apple-darwin9.8.0
>
> locale:
> [1] C
>
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
>
> other attached packages:
> [1] statmod_1.4.8      HTqPCR_1.2.0       limma_3.4.4
> RColorBrewer_1.0-2 Biobase_2.8.0
>
> loaded via a namespace (and not attached):
> [1] affy_1.26.1           affyio_1.16.0         gdata_2.7.2
> gplots_2.8.0          gtools_2.6.2          preprocessCore_1.10.0
>
> On Fri, Jan 21, 2011 at 5:41 PM, Heidi Dvinge <heidi at ebi.ac.uk> wrote:
>
>> Dear Andreia,
>>
>> > Dear all,
>> >
>> > I am analysing qPCR data from the Exiqon where I have one card per
>> sample,
>> > in each card I have one observation for each miRNA. I have in total 8
>> > cards,
>> > 2 for treatment 1, 3 for treatment 2 and 3 for treatment 3. Each card
>> has
>> > one endogenous gene, which I wouldn't like to use to normalize Ct
>> values
>> > because is being affected by the type of treatment. So I would like to
>> use
>> > scale.rank.
>> > I am getting the following error:
>> >
>> > sr.norm <- normalizeCtData(raw.cat, norm = "scale.rank")
>> > Error in smooth.spline(ref[i.set], data[i.set]) :
>> >   need at least four unique 'x' values
>> >
>> It sounds like there aren't enough rank-invariant genes across your 8
>> cards. If that's the case, then this is admittedly not the most useful
>> error message, and it should be changed. What does it say when you run
>> traceback() following the error?
>>
>> The parameter "scale.rank.samples" in normalizeCtData() will let you set
>> how many of the samples each gene has to be rank-invariant across in
>> order
>> to be excluded. Per default this is the number of samples-1. You can try
>> lowering that number, although keeping in mind that the lower it is, the
>> less robust your resulting rank-invariant genes are. If your samples are
>> all highly variable across all genes, it might not be possible for you
>> to
>> use this normalisation method.
>>
>> If this does not seem to be the problem, something else might be going
>> on
>> with the function. In that case, please report back here and I can
>> perhaps
>> have a look at your data.
>>
>> I have been considering adding an additional parameter to
>> normalizeCtData,
>> so that genes just have to be rank-invariant within a certain interval,
>> e.g. be located within -/+5 of each other on the ranked list. For rather
>> low-throughput qPCR cards that could mess things up though.
>>
>> HTH
>> \Heidi
>>
>> > Does this mean I don't have enough replicates?
>> >
>> > thanks for the help
>> >
>> > 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
>> >
>> >       [[alternative HTML version deleted]]
>> >
>> > _______________________________________________
>> > Bioconductor mailing list
>> > Bioconductor at r-project.org
>> > https://stat.ethz.ch/mailman/listinfo/bioconductor
>> > Search the archives:
>> > http://news.gmane.org/gmane.science.biology.informatics.conductor
>>
>>
>>
>
>
> --
> --------------------------------------------
> 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