[BioC] Error : package slot missing from signature for generic

Mark Cowley m.cowley at garvan.org.au
Mon Aug 6 02:01:03 CEST 2012


Hi Martin,
Thanks for looking into this & I can of course provide you my simple package which reproduces the error too.
i've tried contacting the lumi authors in the past and got crickets, but i'll keep trying!

cheers,
Mark

On 06/08/2012, at 9:26 AM, Martin Morgan wrote:

> Hi again Mark --
> 
> On 08/04/2012 01:15 PM, Martin Morgan wrote:
>> Hi Mark --
>> 
>> On 08/03/2012 12:14 AM, Mark Cowley wrote:
>>> any ideas fellow bioconductors?
>>> cheers, Mark
>>> On 01/08/2012, at 9:41 AM, Mark Cowley wrote:
>>> 
>>>> Dear guRu's,
>>>> please help me escape dependency hell...
>>>> in my package foo, i'm trying to replace the 'sampleNames<-' method
>>>> from package lumi. This works well, ie I can install foo, and execute
>>>> the updated code.
>>>> 
>>>> However, if my package foo imports oligoClasses, (or as it turns out,
>>>> a chain of dependencies which lead to oligoClasses), I get this error
>>>> during INSTALL
>>>> * installing to library
>>>> Œ/Library/Frameworks/R.framework/Versions/2.15/Resources/library‚
>>>> * installing *source* package Œfoo‚ ...
>>>> ** R
>>>> ** preparing package for lazy loading
>>>> Warning: replacing previous import Œimage‚ when loading Œgraphics‚
>>>> Warning: replacing previous import Œdensity‚ when loading Œstats‚
>>>> Warning: replacing previous import Œresiduals‚ when loading Œstats‚
>>>> ** help
>>>> *** installing help indices
>>>> ** building package indices
>>>> ** testing if installed package can be loaded
>>>> *** arch - i386
>>>> Warning: replacing previous import Œimage‚ when loading Œgraphics‚
>>>> Warning: replacing previous import Œdensity‚ when loading Œstats‚
>>>> Warning: replacing previous import Œresiduals‚ when loading Œstats‚
>>>> Error : package slot missing from signature for generic ŒsampleNames<-‚
>>>> and classes LumiBatch, ANY
>>>> cannot use with duplicate class names (the package may need to be
>>>> re-installed)
>>>> Error: loading failed
>>>> Execution halted
>>>> *** arch - x86_64
>>>> Warning: replacing previous import Œimage‚ when loading Œgraphics‚
>>>> Warning: replacing previous import Œdensity‚ when loading Œstats‚
>>>> Warning: replacing previous import Œresiduals‚ when loading Œstats‚
>>>> Error : package slot missing from signature for generic ŒsampleNames<-‚
>>>> and classes LumiBatch, ANY
>>>> cannot use with duplicate class names (the package may need to be
>>>> re-installed)
>>>> Error: loading failed
>>>> Execution halted
>>>> ERROR: loading failed for Œi386‚, Œx86_64‚
>>>> * removing
>>>> Œ/Library/Frameworks/R.framework/Versions/2.15/Resources/library/foo‚
>>>> * restoring previous
>>>> Œ/Library/Frameworks/R.framework/Versions/2.15/Resources/library/foo‚
>>>> 
>>>> The message tells me its a problem with my 'sampleNames<-' method,
>>>> however it looks fine to me:
>>>> 1) foo installs just fine when I don't import oligoClasses
>>>> 2) My sampleNames<- code can be pasted into an R session just fine
>> 
>> This strongly suggests that it is an imports issue. I'd guess that you
>> need to importFrom(Biobase, "sampleNames<-") or importMethodFrom(oligo,
>> "sampleNames<-")
>> 
>> I think this is likely an error in the methods package, and will try to
>> generate a reproducible example.
> 
> I looked at this more closely, and do think that this is an error in the methods package. I don't think changing the imports directives will help, and don't have another workaround to offer; I'll report this to the R-devel mailing list.
> 
> If it is any consolation (?), I don't think it's a good idea to redefine and export an existing method. Someone will eventually load your package and wonder why sampleNames<- is behaving differently. If you think the method has an error (which I'm inferring from your documentation string), then much better to contact the packageDescription("lumi")$Maintainer and introduce the fix at the source. Or to define and use a new generic.
> 
> Martin
> 
>> Martin
>> 
>> 
>>>> 3) the error appears as soon as I add a import(oligoClasses) or
>>>> importFrom(oligoClasses,'sampleNames<-') to foo's NAMESPACE
>>>> 
>>>> I've had a look at oligoClasses, and it seems to be playing by the
>>>> rules: it importMethodsFrom(Biobase, "sampleNames<-") and
>>>> exportMethods("sampleNames<-") for a 'RangedDataCNV' class. It
>>>> doesn't import lumi, nor does it know about
>>>> sampleNames<-,LumiBatch,ANY-method
>>>> 
>>>> i've spent a few days trying to work this one out, so can anyone
>>>> point me in the right direction?
>>>> 
>>>> cheers,
>>>> Mark
>>>> 
>>>> foo/R/LumiBatch-methods.R:
>>>> #' @name LumiBatch-methods
>>>> #' @title a collection of LumiBatch manipulators
>>>> #' @description \code{sampleNames<-}: set sampleNames in LumiBatch
>>>> objects,
>>>> #' including the QC, vstParameter, transformFun and controlData slots
>>>> #'
>>>> #' @note code came from lumi_2.8.0 & modified by MJC to set the
>>>> controlData slot
>>>> #'  properly
>>>> #'
>>>> #' @param object an \code{LumiBatch} object
>>>> #' @param value a character vector of column names
>>>> #' @return a \code{LumiBatch} object
>>>> #' @rdname LumiBatch-methods
>>>> #' @aliases sampleNames<-,LumiBatch,ANY-method
>>>> #' @export
>>>> #' @importMethodsFrom Biobase "sampleNames<-"
>>>> #' @importMethodsFrom lumi "sampleNames<-"
>>>> #' @import oligoClasses
>>>> setMethod("sampleNames<-",
>>>>    signature=signature("LumiBatch", "ANY"),
>>>>    function(object, value) {
>>>>        object <- callNextMethod()
>>>>        ddim <- dim(object)
>>>>        if (!is.null(object at QC)) {
>>>>            QC <- object at QC
>>>>            if (!is.null(QC$sampleSummary))
>>>>                if (ncol(QC$sampleSummary) == ddim[2])
>>>>                    colnames(QC$sampleSummary) <- value
>>>>            if (!is.null(QC$BeadStudioSummary))
>>>>                if (nrow(QC$BeadStudioSummary) == ddim[2])
>>>>                    rownames(QC$BeadStudioSummary) <- value
>>>>            object at QC <- QC
>>>>        }
>>>>        if (!is.null(attr(object, "vstParameter"))) {
>>>>            vstParameter <- attr(object, "vstParameter")
>>>>            if (!is.null(nrow(vstParameter))) {
>>>>                if (nrow(vstParameter) == ddim[2]) {
>>>>                    rownames(vstParameter) <- value
>>>>                    transformFun <- attr(object, "transformFun")
>>>>                    names(transformFun) <- value
>>>>                    attr(object, "vstParameter") <- vstParameter
>>>>                    attr(object, "transformFun") <- transformFun
>>>>                }
>>>>            }
>>>>        }
>>>>        if (nrow(object at controlData) > 0) {
>>>>            # modified by MJC
>>>>            colnames(controlData(object)) <- c("controlType",
>>>> "ProbeID", value)
>>>>        }
>>>>        return(object)
>>>>    }
>>>> )
>>>> 
>>>> 
>>>> foo/NAMESPACE:
>>>> exportMethods("sampleNames<-")
>>>> import(oligoClasses)
>>>> importMethodsFrom(Biobase,"sampleNames<-")
>>>> importMethodsFrom(lumi,"sampleNames<-")
>>>> 
>>>> 
>>>> foo/DESCRIPTION:
>>>> Package: foo
>>>> Maintainer: Mark Cowley <m.cowley at garvan.org.au>
>>>> License: GPL-2
>>>> Title: Quicktest package for rapid development with testthat facilities
>>>> Author: Mark Cowley <m.cowley at garvan.org.au>
>>>> Description: A lightweight library for rapid iterative development of
>>>> new
>>>>    code and test suites. Once code is confirmed to work, you should
>>>> move it out
>>>>    to a dedicated package.
>>>> Version: 0.1
>>>> Date: 2012-08-01
>>>> Depends:
>>>>    R (>= 2.0),
>>>>    methods,
>>>>    Biobase,
>>>>    lumi
>>>> Suggests:
>>>>    roxygen2,
>>>>    testthat,
>>>> Imports:
>>>>    Biobase,
>>>>    lumi,
>>>>    oligoClasses
>>>> Collate:
>>>>    'LumiBatch-methods.R'
>>>> 
>>>> 
>>>>> sessionInfo()
>>>> R version 2.15.1 (2012-06-22)
>>>> Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
>>>> 
>>>> locale:
>>>> [1] en_AU.UTF-8/en_AU.UTF-8/en_AU.UTF-8/C/en_AU.UTF-8/en_AU.UTF-8
>>>> 
>>>> attached base packages:
>>>> [1] stats     graphics  grDevices utils     datasets  methods   base
>>>> 
>>>> other attached packages:
>>>> [1] lumi_2.8.0         nleqslv_1.9.3      methylumi_2.2.0
>>>> ggplot2_0.9.1
>>>> [5] reshape2_1.2.1     scales_0.2.1       Biobase_2.16.0
>>>> BiocGenerics_0.2.0
>>>> 
>>>> loaded via a namespace (and not attached):
>>>> [1] affy_1.34.0           affyio_1.24.0         annotate_1.34.1
>>>> [4] AnnotationDbi_1.18.1  bigmemory_4.2.11      BiocInstaller_1.4.7
>>>> [7] Biostrings_2.24.1     bitops_1.0-4.1        BSgenome_1.24.0
>>>> [10] colorspace_1.1-1      DBI_0.2-5             dichromat_1.2-4
>>>> [13] digest_0.5.2          DNAcopy_1.30.0        GenomicRanges_1.8.9
>>>> [16] genoset_1.6.0         grid_2.15.1           hdrcde_2.16
>>>> [19] IRanges_1.14.4        KernSmooth_2.23-8     labeling_0.1
>>>> [22] lattice_0.20-6        MASS_7.3-19           Matrix_1.0-6
>>>> [25] memoise_0.1           mgcv_1.7-19           munsell_0.3
>>>> [28] nlme_3.1-104          plyr_1.7.1            preprocessCore_1.18.0
>>>> [31] proto_0.3-9.2         RColorBrewer_1.0-5    RCurl_1.91-1
>>>> [34] Rsamtools_1.8.5       RSQLite_0.11.1        rtracklayer_1.16.3
>>>> [37] stats4_2.15.1         stringr_0.6.1         tools_2.15.1
>>>> [40] XML_3.9-4             xtable_1.7-0          zlibbioc_1.2.0
>>>> 
>>>> 
>>>> 
>>>>    [[alternative HTML version deleted]]
>>>> 
>>>> _______________________________________________
>>>> Bioconductor mailing list
>>>> Bioconductor at r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>>>> Search the archives:
>>>> http://news.gmane.org/gmane.science.biology.informatics.conductor
>>> 
>>> _______________________________________________
>>> Bioconductor mailing list
>>> Bioconductor at r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/bioconductor
>>> Search the archives:
>>> http://news.gmane.org/gmane.science.biology.informatics.conductor
>>> 
>> 
>> 
> 
> 
> -- 
> Computational Biology / Fred Hutchinson Cancer Research Center
> 1100 Fairview Ave. N.
> PO Box 19024 Seattle, WA 98109
> 
> Location: Arnold Building M1 B861
> Phone: (206) 667-2793



More information about the Bioconductor mailing list