[Bioc-devel] Bug in frmaTools

Ryan Thompson rct at thompsonclan.org
Tue Jul 7 19:08:31 CEST 2015


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
>>
>>
>

	[[alternative HTML version deleted]]



More information about the Bioc-devel mailing list