[BioC] Loop design - biological, technical replication
Gordon K Smyth
smyth at wehi.EDU.AU
Sun Mar 7 08:03:29 CET 2010
Dear Maciej,
You don't say, but I assume that lines l and h must be biologically
independent. If this is true, then your experiment has 3 levels of
variability: line, isolation and array. limma can only handle 2 levels.
You could analyse data this in limma, treating biol_rep as a blocking
variable, as in Section 8.2 of the User's Guide, but that would ignore the
fact that h and l are biologically separate. Otherwise, try the maanova
package.
Best wishes
Gordon
-----------------------------------------------
Associate Professor Gordon K Smyth,
NHMRC Senior Research Fellow,
Bioinformatics Division,
Walter and Eliza Hall Institute of Medical Research,
1G Royal Parade, Parkville, Vic 3052, Australia.
Fax (03) 9347 0852,
smyth at wehi.edu.au
http://www.wehi.edu.au
http://www.statsci.org/smyth
On Sat, 6 Mar 2010, Maciej Jończyk wrote:
> Dear dr Smith and list Members,
>
> I use single-channel analysis to deal with loop-design as suggested by
> Naomi in some of her posts.
>
> Here is my targets with number of biological replication (replication of
> entire scheme). Technical replication is within each replicated scheme.
> So within scheme all instances of each sample (samples: lc, lk, hc, hk)
> is from the same isolation (i.e. in each loop each RNA is used three
> times in different hybridizations).
>
> So in my case technical replication include RNA samples, not
> hybridizations.
>
> lines: l, h
> temperaures: c(cold), k(control)
> That two are concatenated in target file.
>
> Scheme is as follows:
>
> lc ---- lk
> | |
> hc ---- hk
>
> with two more hybridizations, lc vs hk and lk vs hc.
>
> This is my targets in original two-channel form (biol_rep states for
> biological replication):
>
> SlideNumber FileName Cy3 Cy5 biol_rep
> 93 c_093_DH_K_vs_DH_CHex.gpr hk hc 1
> 104 c_104_DH_CH_vs_DH_Kex.gpr hc hk 2
> 116 c_116_DHK_vs_DHCHex.gpr hk hc 3
> 16 c_016_DH_C_vs_DH_Kex.gpr hc hk 4
> 94 c_094_DH_K_vs_DL_Kex.gpr hk lk 1
> 105 c_105_DL_K_vs_DH_Kex.gpr lk hk 2
> 117 c_117_DHK_vs_DLKex.gpr hk lk 3
> 139 c_139_DL_K_vs_DH_Kex.gpr lk hk 4
> 92 c_092_DL_CH_vs_DL_Kex.gpr lc lk 1
> 106 c_106_DL_K_vs_DL_CHex.gpr lk lc 2
> 118 c_118_DLCH_vs_DLKex.gpr lc lk 3
> 23 c_023_DL_K_vs_DL_Cex.gpr lk lc 4
> 95 c_095_DL_CH_vs_DH_CHex.gpr lc hc 1
> 107 c_107_DH_CH_vs_DL_CHex.gpr hc lc 2
> 119 c_119_DLCH_vs_DHCHex.gpr lc hc 3
> 136 c_136_DH_C_vs_DL_Cex.gpr hc lc 4
> 101 c_101_DL_K_vs_DH_CHex.gpr lk hc 1
> 103 c_103_DH_CH_vs_DL_Kex.gpr hc lk 2
> 121 c_121_DLK_vs_DHCHex.gpr lk hc 3
> 15 c_015_DH_C_vs_DL_Kex.gpr hc lk 4
> 100 c_100_DH_K_vs_DL_CHex.gpr hk lc 1
> 102 c_102_DL_CH_vs_DH_Kex.gpr lc hk 2
> 120 c_120_DHK_vs_DLCHex.gpr hk lc 3
> 140 c_140_DL_C_vs_DH_Kex.gpr lc hk 4
>
> I hope it clarifies my design.
>
> Best regards,
>
>
> Gordon K Smyth <smyth at wehi.edu.au> nadawca :
>
>> Dear Maciej,
>>
>> I haven't been able to figure out from this or your previous post
>> exactly what
>> your experimental design is. I suspect this is why you haven't got
>> replies
>> yet. I can see that you have technical replicates, but I'm not quite
>> clear
>> that there is any biological replication. It's also unclear to me why
>> you need
>> a single channel analysis. Perhaps you could explain your design a
>> bit more
>> explicitly, including a data.frame with separate factors indicating
>> temperature, maize line, biological rep, and any other factors you
>> need to take
>> into account?
>>
>> Best wishes
>> Gordon
>>
>>> Date: Tue, 02 Mar 2010 13:01:23 +0100
>>> From: mjonczyk at biol.uw.edu.pl
>>> To: <bioconductor at stat.math.ethz.ch>
>>> Cc: Maciej Jo?czyk <mjonczyk at biol.uw.edu.pl>
>>> Subject: Re: [BioC] Loop design - biological, technical replication
>>> and contrasts
>>>>
>>> Hi again,
>>>>
>>> I apologise for replying to my own post, but it helps keep track if
>>> someone will be interested.
>>>>
>>> I analysed my data with single channel analysis in limma, according
>>> to
>>> Chapter 9. of limma usersguide.
>>>>
>>> I changed my targets file (to make it more condensed) and removed
>>> suffix
>>> which
>>> identified biological replication. So my targets looks like:
>>>>
>>>> nt_trg
>>>
>>> SlideNumber FileName Cy3 Cy5
>>> 1 93 c_093_DH_K_vs_DH_CHex.gpr hk hc
>>> 2 104 c_104_DH_CH_vs_DH_Kex.gpr hc hk
>>> 3 116 c_116_DHK_vs_DHCHex.gpr hk hc
>>> 4 16 c_016_DH_C_vs_DH_Kex.gpr hc hk
>>> 5 94 c_094_DH_K_vs_DL_Kex.gpr hk lk
>>> 6 105 c_105_DL_K_vs_DH_Kex.gpr lk hk
>>> 7 117 c_117_DHK_vs_DLKex.gpr hk lk
>>> 8 139 c_139_DL_K_vs_DH_Kex.gpr lk hk
>>> 9 92 c_092_DL_CH_vs_DL_Kex.gpr lc lk
>>> 10 106 c_106_DL_K_vs_DL_CHex.gpr lk lc
>>> 11 118 c_118_DLCH_vs_DLKex.gpr lc lk
>>> 12 23 c_023_DL_K_vs_DL_Cex.gpr lk lc
>>> 13 95 c_095_DL_CH_vs_DH_CHex.gpr lc hc
>>> 14 107 c_107_DH_CH_vs_DL_CHex.gpr hc lc
>>> 15 119 c_119_DLCH_vs_DHCHex.gpr lc hc
>>> 16 136 c_136_DH_C_vs_DL_Cex.gpr hc lc
>>> 17 101 c_101_DL_K_vs_DH_CHex.gpr lk hc
>>> 18 103 c_103_DH_CH_vs_DL_Kex.gpr hc lk
>>> 19 121 c_121_DLK_vs_DHCHex.gpr lk hc
>>> 20 15 c_015_DH_C_vs_DL_Kex.gpr hc lk
>>> 21 100 c_100_DH_K_vs_DL_CHex.gpr hk lc
>>> 22 102 c_102_DL_CH_vs_DH_Kex.gpr lc hk
>>> 23 120 c_120_DHK_vs_DLCHex.gpr hk lc
>>> 24 140 c_140_DL_C_vs_DH_Kex.gpr lc hk
>>>>
>>>>
>>> I transform it to apropriate form:
>>>> tgr_sc=targetsA2C(nt_trg)
>>>> tgr_sc
>>>
>>> channel.col SlideNumber FileName Target
>>> 1.1 1 93 c_093_DH_K_vs_DH_CHex.gpr hk
>>> 1.2 2 93 c_093_DH_K_vs_DH_CHex.gpr hc
>>> 2.1 1 104 c_104_DH_CH_vs_DH_Kex.gpr hc
>>> 2.2 2 104 c_104_DH_CH_vs_DH_Kex.gpr hk
>>> 3.1 1 116 c_116_DHK_vs_DHCHex.gpr hk
>>> 3.2 2 116 c_116_DHK_vs_DHCHex.gpr hc
>>> 4.1 1 16 c_016_DH_C_vs_DH_Kex.gpr hc
>>> 4.2 2 16 c_016_DH_C_vs_DH_Kex.gpr hk
>>> 5.1 1 94 c_094_DH_K_vs_DL_Kex.gpr hk
>>> 5.2 2 94 c_094_DH_K_vs_DL_Kex.gpr lk
>>> 6.1 1 105 c_105_DL_K_vs_DH_Kex.gpr lk
>>> 6.2 2 105 c_105_DL_K_vs_DH_Kex.gpr hk
>>> 7.1 1 117 c_117_DHK_vs_DLKex.gpr hk
>>> 7.2 2 117 c_117_DHK_vs_DLKex.gpr lk
>>> 8.1 1 139 c_139_DL_K_vs_DH_Kex.gpr lk
>>> 8.2 2 139 c_139_DL_K_vs_DH_Kex.gpr hk
>>> 9.1 1 92 c_092_DL_CH_vs_DL_Kex.gpr lc
>>> 9.2 2 92 c_092_DL_CH_vs_DL_Kex.gpr lk
>>> 10.1 1 106 c_106_DL_K_vs_DL_CHex.gpr lk
>>> 10.2 2 106 c_106_DL_K_vs_DL_CHex.gpr lc
>>> 11.1 1 118 c_118_DLCH_vs_DLKex.gpr lc
>>> 11.2 2 118 c_118_DLCH_vs_DLKex.gpr lk
>>> 12.1 1 23 c_023_DL_K_vs_DL_Cex.gpr lk
>>> 12.2 2 23 c_023_DL_K_vs_DL_Cex.gpr lc
>>> 13.1 1 95 c_095_DL_CH_vs_DH_CHex.gpr lc
>>> 13.2 2 95 c_095_DL_CH_vs_DH_CHex.gpr hc
>>> 14.1 1 107 c_107_DH_CH_vs_DL_CHex.gpr hc
>>> 14.2 2 107 c_107_DH_CH_vs_DL_CHex.gpr lc
>>> 15.1 1 119 c_119_DLCH_vs_DHCHex.gpr lc
>>> 15.2 2 119 c_119_DLCH_vs_DHCHex.gpr hc
>>> 16.1 1 136 c_136_DH_C_vs_DL_Cex.gpr hc
>>> 16.2 2 136 c_136_DH_C_vs_DL_Cex.gpr lc
>>> 17.1 1 101 c_101_DL_K_vs_DH_CHex.gpr lk
>>> 17.2 2 101 c_101_DL_K_vs_DH_CHex.gpr hc
>>> 18.1 1 103 c_103_DH_CH_vs_DL_Kex.gpr hc
>>> 18.2 2 103 c_103_DH_CH_vs_DL_Kex.gpr lk
>>> 19.1 1 121 c_121_DLK_vs_DHCHex.gpr lk
>>> 19.2 2 121 c_121_DLK_vs_DHCHex.gpr hc
>>> 20.1 1 15 c_015_DH_C_vs_DL_Kex.gpr hc
>>> 20.2 2 15 c_015_DH_C_vs_DL_Kex.gpr lk
>>> 21.1 1 100 c_100_DH_K_vs_DL_CHex.gpr hk
>>> 21.2 2 100 c_100_DH_K_vs_DL_CHex.gpr lc
>>> 22.1 1 102 c_102_DL_CH_vs_DH_Kex.gpr lc
>>> 22.2 2 102 c_102_DL_CH_vs_DH_Kex.gpr hk
>>> 23.1 1 120 c_120_DHK_vs_DLCHex.gpr hk
>>> 23.2 2 120 c_120_DHK_vs_DLCHex.gpr lc
>>> 24.1 1 140 c_140_DL_C_vs_DH_Kex.gpr lc
>>> 24.2 2 140 c_140_DL_C_vs_DH_Kex.gpr hk
>>>>
>>> Next, I made design matrix
>>>>
>>>> u=unique(tgr_sc$Target)
>>>> f=factor(tgr_sc$Target,levels=u)
>>>> design=model.matrix(~0+f)
>>>> colnames(design)=u
>>>> design
>>>
>>> hk hc lk lc
>>> 1 1 0 0 0
>>> 2 0 1 0 0
>>> 3 0 1 0 0
>>> 4 1 0 0 0
>>> 5 1 0 0 0
>>> 6 0 1 0 0
>>> 7 0 1 0 0
>>> 8 1 0 0 0
>>> 9 1 0 0 0
>>> 10 0 0 1 0
>>> 11 0 0 1 0
>>> 12 1 0 0 0
>>> 13 1 0 0 0
>>> 14 0 0 1 0
>>> 15 0 0 1 0
>>> 16 1 0 0 0
>>> 17 0 0 0 1
>>> 18 0 0 1 0
>>> 19 0 0 1 0
>>> 20 0 0 0 1
>>> 21 0 0 0 1
>>> 22 0 0 1 0
>>> 23 0 0 1 0
>>> 24 0 0 0 1
>>> 25 0 0 0 1
>>> 26 0 1 0 0
>>> 27 0 1 0 0
>>> 28 0 0 0 1
>>> 29 0 0 0 1
>>> 30 0 1 0 0
>>> 31 0 1 0 0
>>> 32 0 0 0 1
>>> 33 0 0 1 0
>>> 34 0 1 0 0
>>> 35 0 1 0 0
>>> 36 0 0 1 0
>>> 37 0 0 1 0
>>> 38 0 1 0 0
>>> 39 0 1 0 0
>>> 40 0 0 1 0
>>> 41 1 0 0 0
>>> 42 0 0 0 1
>>> 43 0 0 0 1
>>> 44 1 0 0 0
>>> 45 1 0 0 0
>>> 46 0 0 0 1
>>> 47 0 0 0 1
>>> 48 1 0 0 0
>>> attr(,"assign")
>>> [1] 1 1 1 1
>>> attr(,"contrasts")
>>> attr(,"contrasts")$f
>>> [1] "contr.treatment"
>>>>
>>> *Is it correct form my design? I see, that it simply identifies what
>>> RNA
>>> was hybridized on each array.
>>>>
>>>> corfit=intraspotCorrelation(nt_img_lA,design)
>>>> corfit$consensus
>>> [1] 0.7341876
>>>> fit=lmscFit(nt_img_lAq,design,correlation=corfit$consensus)
>>>>
>>> I want to get contrasts "hc - hk", "lc - lk", "hc - lc", "hk - lk"
>>> and also test effect of line and temperature. To do that I write
>>> this
>>> command:
>>>>
>>>>
>>>
>>>
>> contr.matrix=makeContrasts(hc-hk,lc-lk,hc-lc,hk-lk,linia=(hc+hk-lc-lk)/2,temp=(hc+lc-hk-lk)/2,inter=(hc-lc)-(hk-lk),levels=design)
>>>>
>>> * I'm not 100% sure that it's correct.
>>>>
>>>> contr.fit=contrasts.fit(fit,contr.matrix)
>>>> contr.fit=eBayes(contr.fit)
>>>>
>>>
>>>
>> wynik=decideTests(contr.fit,method="global",adjust.method="BH",p.value=0.05)
>>>> summary(wynik)
>>> hc - hk lc - lk hc - lc hk - lk linia temp inter
>>> -1 5865 5039 3014 2685 3931 7382 1113
>>> 0 30922 33433 37177 38480 35896 28364 40776
>>> 1 6594 4909 3190 2216 3554 7635 1492
>>>>
>>> From that it seem that there is a lot of differentially expressed
>>> genes.
>>> I feel that it isn't optimal design, here technical and biological
>>> replications
>>> are treated in the same manner, aren't they?
>>>>
>>> I've read about "duplicateCorrelation" command, is it possible to
>>> combine it with single channel analysis?
>>> Or I should rewrite target file (add number of replication) and
>>> rewrite
>>> contrasts
>>> (e.g. hc-hk change to "((hc1+hc2+hc3+hc4)-(hk1+hk2+hk3+hk4))/4
>>> )?
>>>>
>>> And if I want to include a dye effect, I should only add column with
>>> 1's
>>> to my design, right?
>>>>
>>> Thank you for reading of my post.
>>> I'd be very grateful for help. I've tried to analyse this data for a
>>> along time
>>> and I think limma is the best choice.
>>>>
>>> Yours sincerely,
>>>>
>>> Maciej Jo?czyk
>>>>
>>> Maciej Jo?czyk
>>> Department of Plant Molecular Ecophysiology
>>> Institute of Plant Experimental Biology
>>> Faculty of Biology, University of Warsaw
>>> 02-096 Warszawa, Miecznikowa 1
>>
>> ______________________________________________________________________
>> The information in this email is confidential and intended solely for
>> the addressee.
>> You must not disclose, forward, print or use it without the permission
>> of the sender.
>> ______________________________________________________________________
>>
>> --
>> This message has been 'sanitized'. This means that potentially
>> dangerous content has been rewritten or removed. The following
>> log describes which actions were taken.
>>
>> [ score: 10 ]
>> 00000 Split unusually long Date: header.
>>
>> Anomy 0.0.0 : sanitizer.pl
>> $Id: Sanitizer.pm,v 1.17 2001/08/07 15:16:46 bre Exp $
>>
>
>
> Maciej Jończyk
> Department of Plant Molecular Ecophysiology
> Institute of Plant Experimental Biology
> Faculty of Biology, University of Warsaw
> 02-096 Warszawa, Miecznikowa 1
>
>
>
> ___________________________________
> NOCC, http://nocc.sourceforge.net
>
>
>
>
______________________________________________________________________
The information in this email is confidential and intend...{{dropped:5}}
More information about the Bioconductor
mailing list