[Bioc-devel] Found more than one class "Annotated" in cache
Thanks, will fix.
On Fri, Apr 29, 2016 at 10:26 AM, davide risso <risso.davide at gmail.com> wrote:
Hi all, when running R CMD check on our package, we get the following warning: checking whether the namespace can be unloaded cleanly ... WARNING ---- unloading Error in .getClassFromCache(what, resolve.confl = "all") : argument "where" is missing, with no default Calls: unloadNamespace ... <Anonymous> -> .removeSuperclassBackRefs -> .getClassFromCache Execution halted Is this warning related to the message mentioned earlier in this thread? If so, should I expect this warning to go away once the bug in the class import is fixed? Here for the full Travis CI report: https://travis-ci.org/epurdom/clusterExperiment/builds/126175973 Thanks, Davide On Mon, Apr 25, 2016 at 2:00 PM davide risso <risso.davide at gmail.com> wrote:
Thank you Michael and Martin for looking into this! Best, davide On Mon, Apr 25, 2016 at 1:49 PM Michael Lawrence <lawrence.michael at gene.com> wrote:
Yes, that's a better fix for this in principle, since it uses the
information encoded in the extends object, although I think
getClassFromCache() also needs to be fixed, so that getClassDef() sees
only the imported classes when only given "where". That's a more
general fix that works in both load orders.
Maybe the superClass slot of the extends object should store its
package? Would be convenient, if somewhat redundant. Conceptually, it
seems the package really belongs on superClass, not on the extends
object itself (how does a ClassExtends pertain to a package?).
Index: ClassExtensions.R
===================================================================
--- ClassExtensions.R (revision 70547)
+++ ClassExtensions.R (working copy)
@@ -316,6 +316,7 @@
stop(gettextf("the 'replace' argument to setIs() should be a
function of 2 or 3 arguments, got an object of class %s",
dQuote(class(replace))), domain = NA)
+ packageSlot(to) <- package
new(extClass, subClass = Class, superClass = to, package = package,
coerce = coerce, test = test, replace = replace, simple = simple,
by = by, dataPart = dataPart, distance = distance)
On Mon, Apr 25, 2016 at 1:24 PM, Martin Morgan
<martin.morgan at roswellpark.org> wrote:
On 04/25/2016 03:53 PM, Michael Lawrence wrote:
Yea, this is a bug in R, in my opinion. The class cache circumvents the namespace imports. In my working copy I've fixed it by falling back to the namespace search when there are multiple hits. That at least fixes this case.
This also fixes it
Index: src/library/methods/R/SClasses.R
===================================================================
--- src/library/methods/R/SClasses.R (revision 70547)
+++ src/library/methods/R/SClasses.R (working copy)
@@ -524,7 +524,7 @@
superClass <- exti at superClass
if(!exti at simple && !is(object, superClass))
next ## skip conditional relations that don't hold for this
object
- superDef <- getClassDef(superClass, where = where)
+ superDef <- getClassDef(superClass, package =
packageSlot(exti))
if(is.null(superDef)) {
errors <- c(errors,
paste0("superclass \"", superClass,
There's another problem seen by loading the packages in reverse order
suppressPackageStartupMessages({ library(RNeXML);
library(GenomicRanges)
})
Found more than one class "Annotated" in cache; using the first, from
namespace 'RNeXML'
Also defined by 'S4Vectors'
...
which is from
[[17]]
S4Vectors:::setDefaultSlotValue("XRaw", "shared", new("SharedRaw"),
where = asNamespace(pkgname))
[[18]]
resetClass(classname, classdef, where = where)
[[19]]
completeClassDefinition(Class, classDef, where)
[[20]]
.completeClassSlots(ClassDef, where)
[[21]]
isClass(eClass, where = where)
[[22]]
getClassDef(Class, where)
[[23]]
.getClassFromCache(Class, where, package = package, resolve.msg =
resolve.msg)
but I haven't quite got to the bottom of that. Also, I think these are
both
different from but related to
suppressPackageStartupMessages(library(Statomica))
Error in .mergeMethodsTable(generic, mtable, tt, attach) :
trying to get slot "defined" from an object of a basic class ("list")
with
no slots
Error: package or namespace load failed for 'Statomica'
You can disable the message in the short term by setting the "getClass.msg" option to FALSE. Michael On Sun, Apr 24, 2016 at 12:50 PM, davide risso <risso.davide at gmail.com> wrote:
Dear list, we are developing a new package that defines a class that builds on SummarizedExperiment and also imports the CRAN package phylobase. The class "Annotated" is defined both in the S4Vectors package (a dependency of SummarizedExperiment) and in the RNeXML package (a dependency of phylobase). Note that we want the former. This causes the following message to be thrown every time we create a new object. Found more than one class "Annotated" in cache; using the first, from namespace 'S4Vectors' A minimal example is the following.
library(SummarizedExperiment)> SummarizedExperiment()class: SummarizedExperiment
dim: 0 0 metadata(0): assays(0): rownames: NULL rowData names(0): colnames: NULL colData names(0):> library(phylobase)> SummarizedExperiment()Found more than one class "Annotated" in cache; using the first, from namespace 'S4Vectors'class: SummarizedExperiment dim: 0 0 metadata(0): assays(0): rownames: NULL rowData names(0): colnames: NULL colData names(0):
sessionInfo()R Under development (unstable) (2016-03-07 r70284)
Platform: x86_64-pc-linux-gnu (64-bit) Running under: Debian GNU/Linux stretch/sid locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 [4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats4 parallel stats graphics grDevices utils datasets methods [9] base other attached packages: [1] phylobase_0.8.2 SummarizedExperiment_1.1.21 [3] Biobase_2.31.3 GenomicRanges_1.23.23 [5] GenomeInfoDb_1.7.6 IRanges_2.5.39 [7] S4Vectors_0.9.41 BiocGenerics_0.17.3 loaded via a namespace (and not attached): [1] Rcpp_0.12.3 plyr_1.8.3 XVector_0.11.7 iterators_1.0.8 [5] tools_3.3.0 zlibbioc_1.17.0 uuid_0.1-2 jsonlite_0.9.19 [9] nlme_3.1-125 lattice_0.20-33 foreach_1.4.3 DBI_0.3.1 [13] httr_1.1.0 stringr_1.0.0 dplyr_0.4.3 xml2_0.1.2 [17] ade4_1.7-4 grid_3.3.0 rredlist_0.1.0 reshape_0.8.5 [21] data.table_1.9.6 R6_2.1.2 XML_3.98-1.4 RNeXML_2.0.6 [25] reshape2_1.4.1 tidyr_0.4.1 magrittr_1.5 codetools_0.2-14 [29] assertthat_0.1 bold_0.3.5 taxize_0.7.5 ape_3.4 [33] stringi_1.0-1 rncl_0.6.0 lazyeval_0.1.10 rotl_0.5.0 [37] chron_2.3-47 Since we need to import both packages, is there a way to explicitly use the correct definition of "Annotated" or to not import the class "Annotated" from RNeXML? Or is this something that could be addressed in the SummarizedExperiment package? These are our DESCRIPTION and NAMESPACE file (note that we are importing only what we need from phylobase): https://github.com/epurdom/clusterExperiment/blob/develop/DESCRIPTION https://github.com/epurdom/clusterExperiment/blob/develop/NAMESPACE See also Henrik's comment at: https://github.com/epurdom/clusterExperiment/issues/66 Thank you in advance for any help! Best, davide [[alternative HTML version deleted]]
_______________________________________________ Bioc-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/bioc-devel
_______________________________________________ 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 confidential information. If you are not the intended recipient(s), or the employee or agent responsible for the delivery of this message to the intended recipient(s), you are hereby notified that any disclosure, copying, distribution, or use of this email message is prohibited. If you have received this message in error, please notify the sender immediately by e-mail and delete this email message from your computer. Thank you.