Question: bug in beadarray::setWeights
0
gravatar for Mehrdad Shamsi
9.6 years ago by
Mehrdad Shamsi30 wrote:
Hi, As reported in my previous email, there is still one issue remaining to be fixed in beadarray:setWeights function, namely: >In the current implementation, if one passes a vector of weights (not a list that contains one vector) to the function, all >the weights are set to the **first element** of the vector, which is the direct result of using wts[[1]] for the special case >of length(array==1). A possible workaround is suggested below, where the cases where the wts argument is not a list is treated differently than the rest: setWeights <- function (BLData, wts, array, combine = FALSE) { BLData.copy = copyBeadLevelList(BLData) an = arrayNames(BLData) if (mode(wts) != "list") { if (combine) { if (is.null(BLData.copy at beadData[[an[array]]]$wts)) { BLData.copy at beadData[[an[array]]]$wts = wts } else { BLData.copy at beadData[[an[array]]]$wts = pmin(wts, BLData.copy at beadData[[an[array]]]$wts) } } else { BLData.copy at beadData[[an[array]]]$wts = wts[[1]] } } else { if (combine) { for (i in array) { if (is.null(BLData.copy at beadData[[an[i]]]$wts)) { BLData.copy at beadData[[an[i]]]$wts = wts[[i]] } else { BLData.copy at beadData[[an[i]]]$wts = pmin(wts[[i]], BLData.copy at beadData[[an[i]]]$wts) } } } else { for (i in array) { BLData.copy at beadData[[an[i]]]$wts = wts[[i]] } } } BLData.copy } Regards -- M. S ________________________________________ From: Mehrdad Shamsi Sent: Wednesday, November 25, 2009 10:46 AM To: Mark Dunning Cc: bioconductor at stat.math.ethz.ch Subject: RE: [BioC] bug in beadarray::setWeights Mark, Thanks for the help. I upgraded to the new version. The problem is resolved. But it seems that in this version's implementation of beadarray::setWeigths, the check for "length(array)==1" is redundant. In other words, the special case of length(array==1) is treated in the same way as other cases; and therefore one can get rid of check for (array(length==1) entirely. There is still one problem (bug) to be resolved: In the current implementation, if one passes a vector of weights (not a list that contains one vector) to the function, all the weights are set to the **first element** of the vector, which is the direct result of using wts[[1]] for the special case of length(array==1). One more question. I noticed that you copy BLData object to a new object, BLData.copy, and use the copy in the body of the function. Is there any specific reason for that? Regards -- M. S. From: Mark Dunning [mark.dunning@gmail.com] Sent: Monday, November 23, 2009 4:48 AM To: Mehrdad Shamsi Cc: bioconductor at stat.math.ethz.ch Subject: Re: [BioC] bug in beadarray::setWeights Hi, You may need to upgrade your version of beadarray. I recall this bug being present in older versions, but it should now be fixed for Bioconductor 2.5 (beadarray 1.14.0). Regards, Mark On Sun, Nov 22, 2009 at 6:46 PM, Mehrdad Shamsi <mehrdad.shamsi at="" oicr.on.ca=""> wrote: > Hi, > > Passing a list of weights, that has one vector of weights as the only component, > to beadarray::setWeights causes R to aquire the entire available memory. > After grabbing the maximum available memory, the function produces insufficient memory error and quits. > > Example: > library(beadarray) > data(BLData); > output <- BASH(BLData, array = 1); > BLData <- setWeights(BLData, wts = output$wts, array = 1); > > Error: cannot allocate vector of size 389 Kb > In addition: Warning messages: > 1: In class(x) <- NULL : > Reached total allocation of 1535Mb: see help(memory.size) > 2: In class(x) <- NULL : > Reached total allocation of 1535Mb: see help(memory.size) > 3: In x[[name]] <- value : > Reached total allocation of 1535Mb: see help(memory.size) > 4: In x[[name]] <- value : > Reached total allocation of 1535Mb: see help(memory.size) > 5: In x[[name]] <- value : > Reached total allocation of 1535Mb: see help(memory.size) > 6: In x[[name]] <- value : > Reached total allocation of 1535Mb: see help(memory.size) > > Source of the problem: > The way the special case of "length(array) == 1" is dealth with in is the source of the problem. > > > Best regards > -- M. S. > > _______________________________________________ > Bioconductor mailing list > Bioconductor at stat.math.ethz.ch > https://stat.ethz.ch/mailman/listinfo/bioconductor > Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor >
beadarray • 345 views
ADD COMMENTlink written 9.6 years ago by Mehrdad Shamsi30
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 16.09
Traffic: 115 users visited in the last hour