[Bioc-devel] Bug in frmaTools
Matthew McCall
mccallm at gmail.com
Wed Jul 8 17:16:15 CEST 2015
Ryan,
I've made these changes to the frmaTools package (should show up in version
1.21.1):
Old:
if(!identical(as.character(pmi),rownames(pms))) stop("Mismatch between
pmindex and rownames of pms")
Nes:
if(!identical(sprintf("%i",pmi),rownames(pms))) stop("Mismatch between
pmindex and rownames of pms")
Old:
vers <- ifelse(!is.null(cdfname), as.character(packageVersion(cdfname)), "")
New:
if(!is.null(cdfname)){
vers <- as.character(packageVersion(cdfname))
} else vers <- ""
Thanks for pointing out these issues. Please let me know if you run into
any more problems.
Best,
Matt
On Tue, Jul 7, 2015 at 1:08 PM, Ryan Thompson <rct at thompsonclan.org> wrote:
> Actually, the code looks like it should be adding these names, so I need
> to go back through my code and get back to you on that issue.
> On Jul 7, 2015 9:58 AM, "Ryan C. Thompson" <rct at thompsonclan.org> wrote:
>
>> I've also encoundered another problem, this time I believe related to a
>> change the the frma package which requires a corresponding change in the
>> frmaTools package. Apparently frma has added a check for equality of probe
>> names in various places, and frmaTools does not store these names, which
>> means that the current version of frma will reject any vectors generated by
>> the current version of frmaTools with the following error:
>>
>> > eset <- frma(affy[,1:3] , input.vecs=myFrmaToolsVecs)
>> Error in frmaAffyBatch(object, background, normalize, summarize,
>> input.vecs, :
>> Mismatch between pmindex(object) and names of input.vecs and unable to
>> create unique mapping.
>> > traceback()
>> 3: stop("Mismatch between pmindex(object) and names of input.vecs and
>> unable to create unique mapping.")
>> 2: frmaAffyBatch(object, background, normalize, summarize, input.vecs,
>> output.param, verbose)
>> 1: frma(affy[, 1:3], input.vecs = myFrmaToolsVecs)
>>
>> > sessionInfo()
>> R version 3.2.0 (2015-04-16)
>> Platform: x86_64-unknown-linux-gnu (64-bit)
>> Running under: Ubuntu 15.04
>>
>> locale:
>> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
>> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
>> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
>> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
>> [9] LC_ADDRESS=C LC_TELEPHONE=C
>> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
>>
>> attached base packages:
>> [1] grDevices datasets parallel graphics stats4 stats utils
>> [8] methods base
>>
>> other attached packages:
>> [1] frmaTools_1.20.0
>> [2] hgu133afrmavecs_1.5.0
>> [3] hthgu133pluspmcdf_2.16.0
>> [4] DSalomon.PAX.hthgu133pluspmfrmavecs_0.1
>> [5] frma_1.20.0
>> [6] affy_1.46.1
>> [7] Biobase_2.28.0
>> [8] openxlsx_2.5.10
>> [9] foreach_1.4.2
>> [10] plyr_1.8.3
>> [11] stringr_1.0.0
>> [12] IRanges_2.2.4
>> [13] ggplot2_1.0.1
>> [14] S4Vectors_0.6.0
>> [15] BiocGenerics_0.14.0
>> [16] BiocInstaller_1.18.3
>>
>> loaded via a namespace (and not attached):
>> [1] Rcpp_0.11.6 compiler_3.2.0 GenomeInfoDb_1.4.1
>> [4] XVector_0.8.0 iterators_1.0.7 tools_3.2.0
>> [7] zlibbioc_1.14.0 digest_0.6.8 bit_1.1-12
>> [10] RSQLite_1.0.0 preprocessCore_1.30.0 gtable_0.1.2
>> [13] ff_2.2-13 DBI_0.3.1 proto_0.3-10
>> [16] affxparser_1.40.0 Biostrings_2.36.1 grid_3.2.0
>> [19] AnnotationDbi_1.30.1 oligo_1.32.0 reshape2_1.4.1
>> [22] magrittr_1.5 splines_3.2.0 scales_0.2.5
>> [25] codetools_0.2-11 oligoClasses_1.30.0 MASS_7.3-41
>> [28] GenomicRanges_1.20.5 colorspace_1.2-6 stringi_0.5-2
>> [31] munsell_0.4.2 affyio_1.36.0
>>
>> On 07/07/2015 06:52 AM, Matthew McCall wrote:
>>
>>> Ryan,
>>>
>>> Thanks for pointing these out. I'll look into them soon, but I imagine
>>> your assessment is correct.
>>>
>>> Best,
>>> Matt
>>>
>>>
>>>
>>> On Mon, Jul 6, 2015 at 5:42 PM, Ryan C. Thompson <rct at thompsonclan.org
>>> <mailto:rct at thompsonclan.org>> wrote:
>>>
>>> I also discovered another apparent bug later in the same function.
>>> The second to last line of makeVectorsAffyBatch is
>>>
>>> vers <- ifelse(!is.null(cdfname),
>>> as.character(packageVersion(cdfname)), "")
>>>
>>> If cdfname is NULL, this line will throw an error because the
>>> second argument to ifelse will have length zero and "ifelse" does
>>> NOT do lazy evaluation.
>>>
>>>
>>> On 07/06/2015 12:21 PM, Ryan C. Thompson wrote:
>>>
>>> Hello,
>>>
>>> I just encountered a bug in frmaTools that makes it impossible
>>> to use on certain array platforms. The following lines in
>>> makeVectorsAffyBatch fail on an AffyBatch object on the
>>> hthgu133pluspm platform:
>>>
>>> pms <- pm(object)
>>> pns <- probeNames(object)
>>> pmi <- unlist(pmindex(object))
>>> if (!identical(as.character(pmi), rownames(pms)))
>>> stop("Mismatch between pmindex and rownames of pms")
>>>
>>> I isolated the problem to five probes:
>>>
>>> > i <- which(as.character(pmi) != rownames(pms))
>>> > pmi[i]
>>> 1564498_PM_at9 205398_PM_s_at8 217695_PM_x_at7
>>> 223446_PM_s_at7 237802_PM_at3
>>> 3e+05 5e+05 2e+05 1e+05 4e+05
>>> > rownames(pms)[i]
>>> [1] "300000" "500000" "200000" "100000" "400000"
>>> > as.character(pmi)[i]
>>> [1] "3e+05" "5e+05" "2e+05" "1e+05" "4e+05"
>>>
>>> As you can see, the problem is that as.character will happily
>>> use scientific notation when it feels like it, which then
>>> fails a test for string equality. I believe the solution is to
>>> replace that test with:
>>>
>>> all(sprintf("%i", pmi) == rownames(pms))
>>>
>>> -Ryan
>>>
>>>
>>> _______________________________________________
>>> Bioc-devel at r-project.org <mailto:Bioc-devel at r-project.org> mailing
>>> list
>>> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>>>
>>>
>>>
>>>
>>> --
>>> Matthew N McCall, PhD
>>> 6 Bridgewood Dr.
>>> Fairport, NY 14450
>>> Cell: 202-222-5880
>>>
>>>
>>
--
Matthew N McCall, PhD
6 Bridgewood Dr.
Fairport, NY 14450
Cell: 202-222-5880
[[alternative HTML version deleted]]
More information about the Bioc-devel
mailing list