[Bioc-devel] problem with class definitions between S4Vectors and RNeXML in using Summarized Experiment
Martin Morgan
martin.morgan at roswellpark.org
Sat Apr 14 17:59:02 CEST 2018
On 04/14/2018 07:21 AM, Vincent Carey wrote:
> But Annotated is defined in S4Vectors and RNeXML; the latter is not a
> Bioconductor package.
>
> The likelihood of collisions among class names defined in different
> packages seems pretty high
> as S4 adoption grows. So requiring a systematic approach to disambiguating
> class references seems inevitable.
I agree that renaming is not a robust solution, and would encourage
Michael to commit the change using the class definition in `is()` with
more elaborate solutions (really this is a problem with is(), where it
should be fixed, rather than introducing complicated syntax?) left for a
later day.
Martin
>
>
> On Sat, Apr 14, 2018 at 4:05 AM, Hervé Pagès <hpages at fredhutch.org> wrote:
>
>> How about renaming Annotated? Isn't having 2 classes around with the
>> same name fundamentally a bad situation? No amount of workarounds will
>> change that.
>>
>> H.
>>
>>
>> On 04/12/2018 04:06 PM, Michael Lawrence wrote:
>>
>>> Yea, good idea, I was thinking of supporting :: in class names and
>>> parsing them out. In code is better. Maybe %::%? It wouldn't have to
>>> get a class object (for one thing, a class might not exist), because
>>> the methods package supports a 'package' attribute on the character
>>> vector, abstracted by packageSlot().
>>>
>>>
>>>
>>> On Thu, Apr 12, 2018 at 3:26 PM, Vincent Carey
>>> <stvjc at channing.harvard.edu> wrote:
>>>
>>>> If we need to disambiguate class references, perhaps an operator
>>>>
>>>> could help? Along the lines of base::"::" ...
>>>>
>>>>
>>>> "%c%" <- function(package,class) {
>>>>
>>>> pk = as.character(substitute(package))
>>>>
>>>> cl = as.character(substitute(class))
>>>>
>>>> getClass(cl, where=getNamespace(pk))
>>>>
>>>> }
>>>>
>>>>
>>>> Biobase %c% ExpressionSet # a classRepresentation instance
>>>>
>>>>
>>>> is(1:5, Biobase %c% ExpressionSet) # FALSE
>>>>
>>>>
>>>> is(Biobase::ExpressionSet(), "ExpressionSet") # TRUE
>>>>
>>>>
>>>> is(Biobase::ExpressionSet(), Biobase %c% ExpressionSet) # TRUE
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Thu, Apr 12, 2018 at 3:57 PM, Michael Lawrence
>>>> <lawrence.michael at gene.com> wrote:
>>>>
>>>>>
>>>>> Hi Davide,
>>>>>
>>>>> We can get this fixed soon, but I was hoping to hear e.g. Herve's
>>>>> opinion first if he has one.
>>>>>
>>>>> Michael
>>>>>
>>>>> On Thu, Apr 12, 2018 at 12:53 PM, Davide Risso <dar2062 at med.cornell.edu
>>>>>>
>>>>> wrote:
>>>>>
>>>>>> Hi Michael,
>>>>>>
>>>>>> Thanks for looking into this.
>>>>>>
>>>>>> Can you or someone with push permission to S4Vectors implement the
>>>>>> workaround that you mentioned?
>>>>>>
>>>>>> Happy to create a pull request on Github if that helps.
>>>>>>
>>>>>> We’re trying to solve this to fix the clusterExperiment package build
>>>>>> on
>>>>>> Bioc-devel.
>>>>>>
>>>>>> Thanks,
>>>>>> Davide
>>>>>>
>>>>>>
>>>>>> On Apr 12, 2018, at 1:27 PM, Michael Lawrence
>>>>>> <lawrence.michael at gene.com>
>>>>>> wrote:
>>>>>>
>>>>>> Yea it's basically
>>>>>>
>>>>>> library(S4Vectors)
>>>>>> library(RNeXML)
>>>>>> is(1:5, "Annotated")
>>>>>> # Found more than one class "Annotated" in cache; using the first,
>>>>>> from namespace 'S4Vectors'
>>>>>> # Also defined by ‘RNeXML’
>>>>>> # [1] FALSE
>>>>>>
>>>>>> But can be worked around:
>>>>>>
>>>>>> is(1:5, getClass("Annotated", where=getNamespace("S4Vectors"))
>>>>>>
>>>>>> # [1] FALSE
>>>>>>
>>>>>> Of course, using class objects instead of class names in every call to
>>>>>> is() is not very palatable, but that's how it's done in all other
>>>>>> languages, as far as I know.
>>>>>>
>>>>>> There is an inconsistency between new() and is() when resolving the
>>>>>> class name. new() looks into the calling package's namespace, while
>>>>>> is() looks at the package for the class of the 'object'. The new()
>>>>>> approach seems sensible for that function, since packages should be
>>>>>> abstracting the construction of their objects with constructors. The
>>>>>> is() approach is broken though, because it's easy to imagine cases
>>>>>> like where some foreign object is passed to a function, and the
>>>>>> function checks the type with is().
>>>>>>
>>>>>> I can change is() to use the calling package as the fallback, so
>>>>>> DataFrame(1:5) no longer produces a message. But calling it from
>>>>>> another package, or global env, will still break, just like new(). How
>>>>>> does that sound?
>>>>>>
>>>>>> On the other hand, maybe we should be more careful with calls to is()
>>>>>> and use class objects. That's a good workaround in this case, anyway,
>>>>>> since I probably can't get the change into R before release.
>>>>>>
>>>>>> Michael
>>>>>>
>>>>>>
>>>>>> On Thu, Apr 12, 2018 at 9:03 AM, Aaron Lun <alun at wehi.edu.au> wrote:
>>>>>>
>>>>>> Well, it's not really SingleCellExperiment's problem, either.
>>>>>>
>>>>>> library(S4Vectors)
>>>>>> DataFrame(1:5) # Silent, okay.
>>>>>> library(RNeXML)
>>>>>> DataFrame(1:5) # Prints out the message
>>>>>> ## Found more than one class "Annotated" in cache; using the first,
>>>>>> from namespace 'S4Vectors'
>>>>>> ## Also defined by ‘RNeXML’
>>>>>>
>>>>>> Session information attached below.
>>>>>>
>>>>>> -Aaron
>>>>>>
>>>>>> sessionInfo()
>>>>>>
>>>>>> R Under development (unstable) (2018-03-26 r74466)
>>>>>> Platform: x86_64-pc-linux-gnu (64-bit)
>>>>>> Running under: Ubuntu 16.04.4 LTS
>>>>>>
>>>>>> Matrix products: default
>>>>>> BLAS: /home/cri.camres.org/lun01/Software/R/trunk/lib/libRblas.so
>>>>>> LAPACK: /home/cri.camres.org/lun01/Software/R/trunk/lib/libRlapack.so
>>>>>>
>>>>>> locale:
>>>>>> [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
>>>>>> [3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
>>>>>> [5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
>>>>>> [7] LC_PAPER=en_GB.UTF-8 LC_NAME=C
>>>>>> [9] LC_ADDRESS=C LC_TELEPHONE=C
>>>>>> [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
>>>>>>
>>>>>> attached base packages:
>>>>>> [1] parallel stats4 stats graphics grDevices
>>>>>> utils datasets
>>>>>> [8] methods base
>>>>>>
>>>>>> other attached packages:
>>>>>> [1] RNeXML_2.0.8 ape_5.1 S4Vectors_0.17.41
>>>>>> [4] BiocGenerics_0.25.3
>>>>>>
>>>>>> loaded via a namespace (and not attached):
>>>>>> [1] Rcpp_0.12.16 compiler_3.6.0 pillar_1.2.1
>>>>>> [4] plyr_1.8.4 bindr_0.1.1 iterators_1.0.9
>>>>>> [7] tools_3.6.0 uuid_0.1-2 jsonlite_1.5
>>>>>> [10] tibble_1.4.2 nlme_3.1-137 lattice_0.20-35
>>>>>> [13] pkgconfig_2.0.1 rlang_0.2.0 foreach_1.4.4
>>>>>> [16] crul_0.5.2 curl_3.2 bindrcpp_0.2.2
>>>>>> [19] httr_1.3.1 stringr_1.3.0 dplyr_0.7.4
>>>>>> [22] xml2_1.2.0 grid_3.6.0 reshape_0.8.7
>>>>>> [25] glue_1.2.0 data.table_1.10.4-3 R6_2.2.2
>>>>>> [28] XML_3.98-1.10 purrr_0.2.4 reshape2_1.4.3
>>>>>> [31] tidyr_0.8.0 magrittr_1.5 codetools_0.2-15
>>>>>> [34] assertthat_0.2.0 bold_0.5.0 taxize_0.9.3
>>>>>> [37] stringi_1.1.7 lazyeval_0.2.1 zoo_1.8-1
>>>>>>
>>>>>>
>>>>>> On Thu, 2018-04-12 at 17:40 +0200, Elizabeth Purdom wrote:
>>>>>>
>>>>>> Just to follow up on my previous post. I am able to replicate the
>>>>>> problem in the problem like in the github post from 2 years ago (http
>>>>>> s://github.com/epurdom/clusterExperiment/issues/66
>>>>>>
>>>>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__
>>>>>> github.com_epurdom_clusterExperiment_issues_66&d=DwIFaQ&c=lb
>>>>>> 62iw4YL4RFalcE2hQUQealT9-RXrryqt9KZX2qu2s&r=27RAi9XMaRMwPy47
>>>>>> RdOGbLATWZ3jxxsvAC3lBQmEVTo&m=FD3EbY8tWuTuwKQOAOgm-DLN6S1TI6
>>>>>> KmPXPitPvrUgI&s=PsCvulwKcgNnhI8OtnUfHYf8C9LuPyz9sGQmzKhL_rc&e=>)
>>>>>> only now it
>>>>>>
>>>>>> is not the SummarizedExperiment class but the SingleCellExperiment
>>>>>> class that has the problem. [And I was incorrect, the problem does
>>>>>> occur in development version 2018-03-22 r74446].
>>>>>>
>>>>>> So this is actually a problem with the SingleCellExperiment package —
>>>>>> sorry for the incorrect subject line.
>>>>>>
>>>>>> All of the best,
>>>>>> Elizabeth
>>>>>>
>>>>>>
>>>>>>
>>>>>> library(SingleCellExperiment)
>>>>>> SingleCellExperiment()
>>>>>>
>>>>>> class: SingleCellExperiment
>>>>>> dim: 0 0
>>>>>> metadata(0):
>>>>>> assays(0):
>>>>>> rownames: NULL
>>>>>> rowData names(0):
>>>>>> colnames: NULL
>>>>>> colData names(0):
>>>>>> reducedDimNames(0):
>>>>>> spikeNames(0):
>>>>>>
>>>>>>
>>>>>> library(RNeXML)
>>>>>>
>>>>>> Loading required package: ape
>>>>>>
>>>>>>
>>>>>>
>>>>>> SingleCellExperiment()
>>>>>>
>>>>>> Found more than one class "Annotated" in cache; using the first,
>>>>>> from namespace 'S4Vectors'
>>>>>> Also defined by ‘RNeXML’
>>>>>> Found more than one class "Annotated" in cache; using the first,
>>>>>> from namespace 'S4Vectors'
>>>>>> Also defined by ‘RNeXML’
>>>>>> class: SingleCellExperiment
>>>>>> dim: 0 0
>>>>>> metadata(0):
>>>>>> assays(0):
>>>>>> rownames: NULL
>>>>>> rowData names(0):
>>>>>> colnames: NULL
>>>>>> colData names(0):
>>>>>> reducedDimNames(0):
>>>>>> spikeNames(0):
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> sessionInfo()
>>>>>>
>>>>>> R Under development (unstable) (2018-03-22 r74446)
>>>>>> Platform: x86_64-apple-darwin15.6.0 (64-bit)
>>>>>> Running under: OS X El Capitan 10.11.6
>>>>>>
>>>>>> Matrix products: default
>>>>>> BLAS:
>>>>>> /System/Library/Frameworks/Accelerate.framework/Versions/A/Framewor
>>>>>> ks/vecLib.framework/Versions/A/libBLAS.dylib
>>>>>> LAPACK:
>>>>>> /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapa
>>>>>> ck.dylib
>>>>>>
>>>>>> locale:
>>>>>> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
>>>>>>
>>>>>> attached base packages:
>>>>>> [1] parallel stats4 stats graphics grDevices
>>>>>> utils datasets methods base
>>>>>>
>>>>>> other attached packages:
>>>>>> [1]
>>>>>> RNeXML_2.0.8 ape_5.1 SingleCellE
>>>>>> xperiment_1.1.2
>>>>>> [4] SummarizedExperiment_1.9.16
>>>>>> DelayedArray_0.5.30 BiocParallel_1.13.3
>>>>>> [7]
>>>>>> matrixStats_0.53.1 Biobase_2.39.2 GenomicRang
>>>>>> es_1.31.23
>>>>>> [10]
>>>>>> GenomeInfoDb_1.15.5 IRanges_2.13.28 S4Vectors_0
>>>>>> .17.41
>>>>>> [13] BiocGenerics_0.25.3
>>>>>>
>>>>>> loaded via a namespace (and not attached):
>>>>>> [1]
>>>>>> Rcpp_0.12.16 pillar_1.2.1 bindr_0.1.1
>>>>>> compiler_3.5.0
>>>>>> [5]
>>>>>> plyr_1.8.4 XVector_0.19.9 iterators_1.0.9
>>>>>> bitops_1.0-6
>>>>>> [9] tools_3.5.0 zlibbioc_1.25.0 uuid_0.1-
>>>>>> 2 tibble_1.4.2
>>>>>> [13] jsonlite_1.5 nlme_3.1-137 lattice_0.20-
>>>>>> 35 pkgconfig_2.0.1
>>>>>> [17] rlang_0.2.0 Matrix_1.2-
>>>>>> 14 foreach_1.4.4 crul_0.5.2
>>>>>> [21]
>>>>>> curl_3.2 bindrcpp_0.2.2 GenomeInfoDbData_1.1.
>>>>>> 0 dplyr_0.7.4
>>>>>> [25]
>>>>>> httr_1.3.1 stringr_1.3.0 xml2_1.2.0
>>>>>> grid_3.5.0
>>>>>> [29]
>>>>>> glue_1.2.0 reshape_0.8.7 data.table_1.10.4-
>>>>>> 3 R6_2.2.2
>>>>>> [33] XML_3.98-
>>>>>> 1.10 purrr_0.2.4 tidyr_0.8.0 reshape
>>>>>> 2_1.4.3
>>>>>> [37] magrittr_1.5 codetools_0.2-
>>>>>> 15 assertthat_0.2.0 bold_0.5.0
>>>>>> [41]
>>>>>> taxize_0.9.3 stringi_1.1.7 lazyeval_0.2.1
>>>>>> RCurl_1.95-4.10
>>>>>> [45] zoo_1.8-1
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Apr 11, 2018, at 10:25 AM, Elizabeth Purdom <epurdom at stat.Berkel
>>>>>> ey.EDU> wrote:
>>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> Our package clusterExperiment has suddenly started producing errors
>>>>>> in the bioconductor devel branch because our unit tests are
>>>>>> failing, even though we haven’t pushed any changes and they passed
>>>>>> previously. We first noticed this on April 5th.
>>>>>>
>>>>>> I believe the source of these errors likely do to calls to
>>>>>> SummarizedExperiment() creating the following messages due to
>>>>>> conflicts in ‘RNeXML’ and ’S4Vectors’ both defining class
>>>>>> ‘Annotated':
>>>>>>
>>>>>>
>>>>>> Found more than one class "Annotated" in cache; using the first,
>>>>>> from namespace 'S4Vectors'
>>>>>> Also defined by ‘RNeXML’
>>>>>>
>>>>>> This is killing a vast number of our tests where we repeatedly use
>>>>>> ‘expect_silent’ calls in our unit tests and SummarizedExperiment
>>>>>> calls underlie everything.
>>>>>>
>>>>>> We had this message issue two years ago
>>>>>>
>>>>>> (https://urldefense.proofpoint.com/v2/url?u=https-3A__
>>>>>> github.com_epurdom&d=DwIFaQ&c=lb62iw4YL4RFalcE2hQUQealT9-RXr
>>>>>> ryqt9KZX2qu2s&r=27RAi9XMaRMwPy47RdOGbLATWZ3jxxsvAC3lBQmEVTo&
>>>>>> m=FD3EbY8tWuTuwKQOAOgm-DLN6S1TI6KmPXPitPvrUgI&s=QasLVQB428Ql
>>>>>> 4woG4ckrA0ljZSLRUgylm3PdN1fOn00&e=
>>>>>> /clusterExperiment/issues/66
>>>>>>
>>>>>> <https://urldefense.proofpoint.com/v2/url?u=https-3A__
>>>>>> github.com_epurdom_clusterExperiment_issues_66&d=DwIFaQ&c=lb
>>>>>> 62iw4YL4RFalcE2hQUQealT9-RXrryqt9KZX2qu2s&r=27RAi9XMaRMwPy47
>>>>>> RdOGbLATWZ3jxxsvAC3lBQmEVTo&m=FD3EbY8tWuTuwKQOAOgm-DLN6S1TI6
>>>>>> KmPXPitPvrUgI&s=PsCvulwKcgNnhI8OtnUfHYf8C9LuPyz9sGQmzKhL_rc&e=>),
>>>>>> when it
>>>>>> appeared to be a problem with two definitions of the ‘Annotated’
>>>>>> class in two packages that are both dependencies of packages we
>>>>>> call. At that time, Michael Lawrence posted that he would fix the
>>>>>> problem, and it was then fixed in later versions of bioconductor/R.
>>>>>> But it appears to be back. I am unfortunately unable to get the
>>>>>> RNeXML package to compile from source on my computer with the
>>>>>> current Mac OS X development binary which I just downloaded (2018-
>>>>>> 04-05 r74542), so I haven’t been able to completely redo the code
>>>>>> that we presented in that earlier github issue to confirm it is the
>>>>>> exact same problem. I am having to rely on the error reports/logs
>>>>>> from both Bioconductor and TravisCI (e.g. 2018-04-07 r74551), where
>>>>>> this message shows up everywhere and didn’t before. Thus I’m
>>>>>> guessing that since they are the same messages from before that the
>>>>>> source is again the call to SummarizedExperiment.
>>>>>>
>>>>>> I would note that in development version 2018-03-22 r74446, where I
>>>>>> was able to install all of the packages, I was not getting these
>>>>>> messages.
>>>>>>
>>>>>> Thanks,
>>>>>> Elizabeth Purdom
>>>>>>
>>>>>>
>>>>>> [[alternative HTML version deleted]]
>>>>>>
>>>>>> _______________________________________________
>>>>>> Bioc-devel at r-project.org mailing list
>>>>>>
>>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.et
>>>>>> hz.ch_mailman_listinfo_bioc-2Ddevel&d=DwIFaQ&c=lb62iw4YL4RFa
>>>>>> lcE2hQUQealT9-RXrryqt9KZX2qu2s&r=27RAi9XMaRMwPy47RdOGbLATWZ3
>>>>>> jxxsvAC3lBQmEVTo&m=FD3EbY8tWuTuwKQOAOgm-DLN6S1TI6KmPXPitPvrU
>>>>>> gI&s=sgZkMo8EM5lXrra1obmPLWz4H4hrqm1Y2HhQRwa8IaA&e=
>>>>>>
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> Bioc-devel at r-project.org mailing list
>>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.et
>>>>> hz.ch_mailman_listinfo_bioc-2Ddevel&d=DwIFaQ&c=eRAMFD45gAfqt
>>>>> 84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=fo
>>>>> l6oIBKr5fVzLGchc4RvlrsYKehauLVF5_G-LWRaXM&s=UovEzK2nsWLv9tn6
>>>>> _XmxsASzSfuAFOLSHTrOousDJOY&e=
>>>>>
>>>>
>>>>
>>>>
>>> _______________________________________________
>>> Bioc-devel at r-project.org mailing list
>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.et
>>> hz.ch_mailman_listinfo_bioc-2Ddevel&d=DwIFaQ&c=eRAMFD45gAfqt
>>> 84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=fo
>>> l6oIBKr5fVzLGchc4RvlrsYKehauLVF5_G-LWRaXM&s=UovEzK2nsWLv9tn6
>>> _XmxsASzSfuAFOLSHTrOousDJOY&e=
>>>
>>>
>> --
>> Hervé Pagès
>>
>> Program in Computational Biology
>> Division of Public Health Sciences
>> Fred Hutchinson Cancer Research Center
>> 1100 Fairview Ave. N, M1-B514
>> P.O. Box 19024
>> Seattle, WA 98109-1024
>>
>> E-mail: hpages at fredhutch.org
>> Phone: (206) 667-5791
>> Fax: (206) 667-1319
>>
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> Bioc-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/bioc-devel
>
This email message may contain legally privileged and/or...{{dropped:2}}
More information about the Bioc-devel
mailing list