[Bioc-devel] Problem with setClassUnion and DelayedArray

Elizabeth Purdom epurdom @ending from @t@t@berkeley@edu
Fri Oct 12 00:45:13 CEST 2018


Thanks so much Hervé! That appears to have solved the problem. And I will definitely keep in mind for the future Michael’s suggestion of duck typing for matrix-like objects. 

All of the best,
Elizabeth

> On Oct 10, 2018, at 9:33 PM, Hervé Pagès <hpages using fredhutch.org> wrote:
> 
> Hi Elizabeth,
> 
> I agree that the setClassUnion() warning is rather esoteric, especially
> the "consider setClassUnion()" part.
> 
>  library(DelayedArray)
>  setClassUnion("matrixOrHDF5", c("matrix", "DelayedArray"))
>  # Warning message:
>  # subclass "DelayedArray1" of class "DelayedArray" is not local and
>  # cannot be updated for new inheritance information; consider
> 
> Furthermore, showClass("DelayedArray") reports the correct inheritance
> information:
> 
>  showClass("DelayedArray1")
>  # Class "DelayedArray1" [package "DelayedArray"]
>  #
>  # Slots:
>  #
>  # Name:        index delayed_ops        seed
>  # Class:        list        list         ANY
>  #
>  # Extends:
>  # Class "DelayedArray", directly
>  # Class "DelayedUnaryIsoOp", by class "DelayedArray", distance 2
>  # Class "matrixOrHDF5", by class "DelayedArray", distance 2
>  # Class "DelayedUnaryOp", by class "DelayedArray", distance 3
>  # Class "DelayedOp", by class "DelayedArray", distance 4
>  # Class "Array", by class "DelayedArray", distance 5
> 
> As well as extends():
> 
>  extends("DelayedArray1")
>  # [1] "DelayedArray1"     "DelayedArray"      "DelayedUnaryIsoOp"
>  # [4] "matrixOrHDF5"      "DelayedUnaryOp"    "DelayedOp"
>  # [7] "Array"
> 
>  extends("DelayedArray", "matrixOrHDF5")
>  # [1] TRUE
> 
>  extends("DelayedArray1", "DelayedArray")
>  # [1] TRUE
> 
>  extends("DelayedArray1", "matrixOrHDF5")
>  # [1] TRUE
> 
> So it might just be a spurious warning :-/
> 
> Anyway, I've exported the DelayedArray1 class in DelayedArray 0.7.48:
> 
> https://github.com/Bioconductor/DelayedArray/commit/26061a9b28b87b8a3ee26b8b81ff3334b55115c1
> 
> No more warning with this version:
> 
>  library(DelayedArray)
>  setClassUnion("matrixOrHDF5", c("matrix", "DelayedArray"))
> 
> Cheers,
> H.
> 
> 
> On 10/10/2018 11:51 AM, Elizabeth Purdom wrote:
>> Hello,
>> I am using `setClassUnion` in my package `clusterExperiment` in the following code to allow for either matrix or DelayedArray:
>> setClassUnion("matrixOrHDF5",members=c("matrix", "DelayedArray"))
>> This causes the following warning in checking my package:
>> Warning: subclass "DelayedArray1" of class "DelayedArray" is not local and cannot be updated for new inheritance information; consider setClassUnion()
>> I’ve gotten this warning in other settings, and I believe it is due to the fact that setClassUnion works on the subclasses of the members, so if you give the argument `members=c(“X”,”Y”)` and you haven’t imported into your package all of the subclasses of “X” and “Y” it is warning you those non-imported classes haven’t been dealt with (though if so, I’d say the warning is awfully cryptic, especially since it says to use `setClassUnion` as a solution). In my other cases, I have just gone ahead and imported all of the subclasses from the package that defines the member classes and have gotten rid of the message (in the past it hasn’t been so many). But “DelayedArray1” is not an exported class of the DelayedArray package so that is not an option here.
>> I have been just ignoring this warning, since I understand (I think) the warning, I can’t do anything about it, and am not concerned about it since this new class is only used internally by my function for the slot definition. And I don’t think the user sees this generally. But given that we’re coming up on a release I thought I would ask if there’s anything I can do to get rid of this warning! Or can I go with my first instinct and safely ignore it?
>> Thanks,
>> Elizabeth Purdom
>> _______________________________________________
>> Bioc-devel using r-project.org mailing list
>> https://urldefense.proofpoint.com/v2/url?u=https-3A__stat.ethz.ch_mailman_listinfo_bioc-2Ddevel&d=DwIFaQ&c=eRAMFD45gAfqt84VtBcfhQ&r=BK7q3XeAvimeWdGbWY_wJYbW0WYiZvSXAJJKaaPhzWA&m=4le20lkIbxVE8gFC4uH_tCGjq9qX1garrTomLOEFN6A&s=VePKILIDYgQk9KdF7u7hJQJLglF5ga8I6M5u99inEyo&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 using fredhutch.org
> Phone:  (206) 667-5791
> Fax:    (206) 667-1319



More information about the Bioc-devel mailing list