[BioC] limma: adding weights to mroast
Gordon K Smyth
smyth at wehi.EDU.AU
Mon Jan 2 02:23:58 CET 2012
Dear Anthoula,
You are getting an error message from mroast() because the vector of gene
weights must be of the same length as the number of the genes in the set,
not of length equal to all the genes in your dataset. This is what the
error message is telling you. Hence you need
gene.weights=fitA.genes$Amean[inds]
rather than
gene.weights=fitA.genes$Amean
There is no need to change the code of the function itself.
Best wishes
Gordon
> Date: Thu, 22 Dec 2011 14:18:11 +0100
> From: Anthoula Gaigneaux <anthoula.gaigneaux at lbmcc.lu>
> To: bioconductor at r-project.org
> Subject: [BioC] limma: adding weights to mroast
>
> Dear List,
>
> First thank you for this very nice package.
>
> I'm currently using mroast in limma for differential geneset testing on
> the basis of a MaList. Adding expression-related weights like explained
> in the paper (Wu 2010) generated errors.
>
> When adding weights as a vector, dimensions did not fit (see below).
> Then I tried to build a weight list similar to iset object, but the same
> error prompted. I've searched in several documentations, including
> mailing list and changelog, but have seen nothing related.
>
> Looking at the code, I've fixed the issue by adding a subscript in the
> mroast function (gene.weights[[i]]). Is this fix is ok, or if there's
> another way to define weights for mroast.
>
> Here is the code:
> ##### test
> identical(ma.genes$genes$SYMBOL, fitA.genes$genes$SYMBOL )
> gmt <- getGmt("c2.cp.v3.0.symbols.gmt" )
> universe = ma.genes$genes$SYMBOL
> gmt.list <- geneIds(gmt)
> inds <- symbols2indices(gmt.list, universe)
> design <- fitA.genes$design
> contrast <- fitA.genes$contrasts
> test <- mroast(iset=inds, y= ma.genes, design, contrast=
> contrast[,4],gene.weights=fitA.genes$Amean, nrot=10000)
> Error in roast(iset = iset[[i]], y = y, design = design, contrast =
> contrast, :
> length of gene.weights disagrees with size of set
>
> weights <- lapply(inds, function(x) w <- fitA.genes$Amean[x] )
> test <- mroast(iset=inds, y= ma.genes, design, contrast= contrast[,4],
> gene.weights= weights, nrot=10000)
> Error in roast(iset = iset[[i]], y = y, design = design, contrast =
> contrast, :
> length of gene.weights disagrees with size of set
>
> ##### adapt function
> mroast2 <- function (iset = NULL, y, design, contrast = ncol(design),
> set.statistic = "mean",
> gene.weights = NULL, array.weights = NULL, block = NULL,
> correlation, var.prior = NULL, df.prior = NULL, trend.var = FALSE,
> nrot = 999, adjust.method = "BH")
> {
> if (is.null(iset))
> iset <- rep(TRUE, nrow(y))
> if (!is.list(iset))
> iset <- list(set = iset)
> nsets <- length(iset)
> if (is.null(names(iset)))
> names(iset) <- paste("set", 1:nsets, sep = "")
> fit <- lmFit(y, design = design, weights = array.weights,
> block = block, correlation = correlation)
> covariate <- NULL
> if (trend.var) {
> covariate <- fit$Amean
> if (is.null(covariate))
> covariate <- rowMeans(as.matrix(y))
> }
> sv <- squeezeVar(fit$sigma^2, df = fit$df.residual, covariate =
> covariate)
> var.prior <- sv$var.prior
> df.prior <- sv$df.prior
> pv <- adjpv <- active <- array(0, c(nsets, 3), dimnames =
> list(names(iset),
> c("Mixed", "Up", "Down")))
> if (nsets < 1)
> return(pv)
> for (i in 1:nsets) {
> out <- roast(iset = iset[[i]], y = y, design = design,
> contrast = contrast, set.statistic = set.statistic,
> gene.weights = gene.weights[[i]], array.weights =
> array.weights,
> block = block, correlation = correlation, var.prior =
> var.prior,
> df.prior = df.prior, nrot = nrot)[[1]]
> pv[i, ] <- out$P.Value
> active[i, ] <- out$Active.Prop
> }
> adjpv[, "Mixed"] <- p.adjust(pv[, "Mixed"], method = adjust.method)
> adjpv[, "Up"] <- p.adjust(pv[, "Up"], method = adjust.method)
> adjpv[, "Down"] <- p.adjust(pv[, "Down"], method = adjust.method)
> list(P.Value = pv, Adj.P.Value = adjpv, Active.Proportion = active)
> }
>
> test <- mroast2(iset=inds, y= ma.genes, design, contrast= contrast[,4],
> gene.weights= weights, nrot=10000) #ok
>
> ##### sessionInfo()
> R version 2.14.0 (2011-10-31)
> Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
>
> locale:
> [1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
>
> attached base packages:
> [1] stats graphics grDevices utils datasets methods base
>
> other attached packages:
> [1] GSEABase_1.16.0 graph_1.32.0 annotate_1.32.0
> [4] AnnotationDbi_1.16.0 Biobase_2.14.0 limma_3.10.0
>
> loaded via a namespace (and not attached):
> [1] DBI_0.2-5 IRanges_1.12.1 RSQLite_0.10.0 tools_2.14.0
> [5] XML_3.4-3 xtable_1.6-0
>
> Thanks for helping and merry Christmas,
>
> Anthoula Gaigneaux, PhD
> Bioinformatician
> Laboratoire de Biologie Moléculaire et Cellulaire du Cancer (LBMCC)
> Hôpital Kirchberg
> 9, rue Steichen
> L-2540 Luxembourg
> anthoula.gaigneaux at lbmcc.lu
______________________________________________________________________
The information in this email is confidential and intend...{{dropped:5}}
More information about the Bioconductor
mailing list