want to get this straight as my first time using limma-voom and duplicateCorrelation.
My metadata has multiple Tissue (either tumour or normal) across two Diets. Each Individual had multiple biopsies, from either normal, tumour or multiple of each.
conds Individual Tissue Diet S1 1 Normal NC S2 1 Tumour NC S3 1 Tumour NC S4 1 Tumour NC S5 2 Normal NC S6 3 Normal NC S7 4 Tumour NC S8 4 Tumour NC S9 5 Tumour NC S10 5 Tumour NC S11 5 Tumour NC S12 5 Normal NC S13 6 Tumour NC S14 6 Tumour NC S15 6 Tumour NC S16 6 Tumour NC S17 7 Tumour NC S18 7 Tumour NC S19 7 Tumour NC S20 7 Normal NC S21 8 Normal HFD S22 10 Normal HFD S23 11 Tumour HFD S24 11 Tumour HFD S25 11 Tumour HFD S26 12 Tumour HFD S27 12 Tumour HFD S28 12 Tumour HFD S29 12 Tumour HFD S30 13 Normal HFD S31 21 Tumour HFD S32 22 Tumour HFD S33 22 Tumour HFD S34 22 Tumour HFD S35 22 Normal HFD
I believe I can use duplicateCorrelation setting block=Individual to account for correlated gene expression from individuals. I make a combined DietTissue as we believe gene expression in Tissue will be affected by Diet.
DietTissue <- factor(paste(conds$Diet, conds$Tissue, sep=".")) DTdesign <- model.matrix(~0+DietTissue, conds) colnames(DTdesign)[seq_len(nlevels(DietTissue))] <- levels(DietTissue) DTkeep <- filterByExpr(dge, design) DTdge <- dge[keep, keep.lib.sizes=FALSE] DTdge <- calcNormFactors(DTdge) ##voom DTdcv <- voom(DTdge, design, plot=FALSE) ##DC: https://support.bioconductor.org/p/94280/#94290; https://support.bioconductor.org/p/59700/ DTcor <- duplicateCorrelation(DTdcv, block=conds$Individual) DTdcdcv <- voom(DTdge, DTdesign, correlation=DTcor$consensus.correlation, block=conds$Individual) DTdcfit <- lmFit(DTdcdcv, DTdesign, cor=DTcor$consensus.correlation, block=conds$Individual) DTdcmc <- makeContrasts(HFD.Tumour_Normal = HFD.Tumour - HFD.Normal, NC.Tumour_Normal = NC.Tumour - NC.Normal, levels=design) DTdcfitmc <- contrasts.fit(DTdcfit, DTdcmc) DTdcfitmc <- eBayes(DTdcfitmc)
Any comments with respect to this analysis would be greatly appreciated.