[BioC] Help on invariantset normalization function

Wolfgang Huber whuber at embl.de
Thu Jul 5 09:19:32 CEST 2012


Dear Sophie

you could have a look at Section 7 "Normalisation with ’spike-in’ 
probes" of the vsn package vignette.

	Best wishes	
	Wolfgang

Jul/3/12 11:35 AM, Sophie Lamarre scripsit::
> Hi Jim,
>
> Now I understand the problem!
> But I have to normalize diagnostic microarray so I'm looking for several
> methods of normalization in order to retain the best. I can't use the
> quantile normalization because I don't know if the majority of genes are
> invariants.
> I think the housekeeping genes normalization could be a possible
> normalization. I selected the 20 housekeeping genes which seem to be the
> least invariants.
> I don't think the normalization with the invariantset function is
> appropriated in my case.
>
> But if you have any suggestions, I would be glad!
>
> Thank you very much for your help,
>
> Sophie
>
> Le 02/07/2012 18:31, James W. MacDonald a écrit :
>> Hi Sophie,
>>
>> On 7/2/2012 10:35 AM, Sophie Lamarre wrote:
>>> Hello Jim,
>>>
>>> I have 151 patients in my file and 16 417 genes without the 20
>>> housekeeping genes I need to normalize.
>>> I want to try different normalization methods using housekeeping genes.
>>> The classic method is to calculate the mean of the housekeeping genes
>>> (selected) by patient, and subtract this value to each genes of the
>>> same patient.
>>>
>>> I would try the invariant set method with my data file and my list of
>>> housekeeping genes.
>>> When I read the help, one said I had to have 2 vectors: my data file
>>> to normalize and my file containing the intensities of housekeeping
>>> genes (which help me to normalize):
>>
>> Ah, I see. The problem here is that you misunderstand what
>> normalize.invariantset() is intended to do. It is not intended to do
>> what you want, which is to use a set of housekeeping genes to
>> normalize the data. Instead, this is really an internal function for
>> normalize.AffyBatch.invariantset().
>>
>> The idea here is to take one chip (which is what you did), and then
>> some artificially derived 'reference' chip that contains the same
>> number of genes as your chip (and is derived from the mean, median,
>> etc for each gene), and then determine which genes don't change
>> expression between the two, and then fit a line on those 'invariant'
>> genes, which will then be used to normalize your data. If your two
>> vectors are not the same length, you will get the error you see.
>>
>> This is quite different from what you want to do. I don't think there
>> are any functions to do such a simple normalization, and quite frankly
>> what you propose is neither classic nor recommended (if by classic you
>> mean 'a very common and accepted method' rather than 'what people did
>> way back in the past before they knew better').
>>
>> To do what you propose is just a simple application of colMeans() and
>> sweep().
>>
>> Best,
>>
>> Jim
>>
>>
>>>
>>>        Usage
>>>
>>> normalize.AffyBatch.invariantset(abatch, prd.td = c(0.003, 0.007),
>>>                                    verbose = FALSE,
>>>                                    baseline.type =
>>> c("mean","median","pseudo-mean","pseudo-median"),
>>>                                    type =
>>> c("separate","pmonly","mmonly","together"))
>>>
>>> normalize.invariantset(data, ref, prd.td=c(0.003,0.007))
>>>
>>>
>>>        Arguments
>>>
>>> |abatch|
>>>
>>> an|AffyBatch <AffyBatch%2dclass.html>|object.
>>>
>>> |data|
>>>
>>> a vector of intensities on a chip (to normalize to the reference).
>>>
>>> |ref|
>>>
>>> a vector of reference intensities.
>>>
>>>
>>>
>>> Thank you for your help,
>>>
>>> Kind Regards,
>>> --
>>> Sophie LAMARRE
>>>
>>>
>>> Le 02/07/2012 16:12, James W. MacDonald a écrit :
>>>> Hi Sophie,
>>>>
>>>> On 7/2/2012 8:03 AM, Sophie Lamarre wrote:
>>>>> Hello,
>>>>>
>>>>> I try the invariantset normalization function (affy package) on my
>>>>> data:
>>>>>
>>>>>>    test_pat1 =
>>>>>> normalize.invariantset(data_ready_to_normalize_met1[,1],
>>>>> +                                    bd_20hk_norm[,1],
>>>>> +                                    prd.td=c(0.003,0.007))
>>>>> Error on while ((ns.old - ns)>   50) { :
>>>>>      missing value where TRUE / FALSE is required
>>>>
>>>> When you do
>>>>
>>>> data_ready_to_normalize_met1[,1]
>>>>
>>>>
>>>> you are selecting data from only one array. It isn't possible to
>>>> figure out which probesets are invariant with only one array
>>>> (because the implication is that the probesets don't vary in any
>>>> array).
>>>>
>>>> Is there a particular reason that you are trying to normalize just
>>>> one array?
>>>>
>>>> Best,
>>>>
>>>> Jim
>>>>
>>>>
>>>>
>>>>>
>>>>>
>>>>> # My data to normalize
>>>>>
>>>>>>    data_ready_to_normalize_met1[1:5,1]
>>>>> [1]  5.803779 11.566477  8.583049  8.531674  9.490483
>>>>>
>>>>> # My vector containing my 20 housekeeping genes
>>>>>>    bd_20hk_norm[1:5,1]
>>>>> [1] 14.92680 15.58281 15.15885 15.09599 15.23146
>>>>>
>>>>> My session info:
>>>>>
>>>>>
>>>>>>    sessionInfo()
>>>>> R version 2.14.1 (2011-12-22)
>>>>> Platform: x86_64-redhat-linux-gnu (64-bit)
>>>>>
>>>>> locale:
>>>>>     [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C
>>>>> LC_TIME=fr_FR.UTF-8
>>>>>     [4] LC_COLLATE=fr_FR.UTF-8     LC_MONETARY=fr_FR.UTF-8
>>>>> LC_MESSAGES=fr_FR.UTF-8
>>>>>     [7] LC_PAPER=C                 LC_NAME=C
>>>>> LC_ADDRESS=C
>>>>> [10] LC_TELEPHONE=C             LC_MEASUREMENT=fr_FR.UTF-8
>>>>> LC_IDENTIFICATION=C
>>>>>
>>>>> attached base packages:
>>>>> [1] grid      stats     graphics  grDevices utils     datasets
>>>>> methods   base
>>>>>
>>>>> other attached packages:
>>>>>     [1] affy_1.32.1           preprocessCore_1.16.0
>>>>> gplots_2.10.1         KernSmooth_2.23-7
>>>>>     [5] caTools_1.13          bitops_1.0-4.1
>>>>> gdata_2.8.2           gtools_2.6.2
>>>>>     [9] geneplotter_1.32.1    lattice_0.20-0
>>>>> annotate_1.32.3       AnnotationDbi_1.16.19
>>>>> [13] Biobase_2.14.0        limma_3.10.3
>>>>>
>>>>> loaded via a namespace (and not attached):
>>>>> [1] affyio_1.22.0       BiocInstaller_1.2.1 DBI_0.2-5
>>>>> IRanges_1.12.6
>>>>> [5] RColorBrewer_1.0-5  RSQLite_0.11.1      tools_2.14.1
>>>>> xtable_1.7-0
>>>>> [9] zlibbioc_1.0.1
>>>>>
>>>>>
>>>>> I have no missing value:
>>>>>
>>>>>>    test = is.na(data_ready_to_normalize_met1[,1])
>>>>>>    sum(test)
>>>>> [1] 0
>>>>>
>>>>>
>>>>>
>>>>> Could you help me or give me a example in order I can resolve my
>>>>> problem?
>>>>>
>>>>> Thank your very much,
>>>>>
>>>>> Kind Regards,
>>>>>
>>>>> Sophie LAMARRE
>>>>>
>>>>>      [[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
>>>>
>>>
>>
>
>
> 	[[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
>


-- 
Best wishes
	Wolfgang

Wolfgang Huber
EMBL
http://www.embl.de/research/units/genome_biology/huber



More information about the Bioconductor mailing list